🍬 Bonbon Strategy - eine vollautomatische Dashboard Strategie

Hallo Zusammen! Darf ich vorstellen?

:candy: Bonbon Strategy

Das hier hab ich in den letzten Wochen entwickelt und würde mich über Feedback freuen!

Die Dashboard Strategie ist entstanden, weil das Standard Dashboard von Home Assistant bis vor Kurzem kaum derartiges anbot. Auch das jüngste Update, was zwar einige Funktionen in diese Richtung mitbringt, sieht insgesamt trocken aus.

Das ständige manuelle Zusammenklicken von Karten und Entitäten oder das rumkopieren von Karten-YAML sobald etwas neues dazu kommt oder den Raum wechselt, wurde langsam nervig.

Ich stellte mir die Frage warum es denn die Norm ist sich selbst für die absoluten Grundfunktionen manuelle Dashboards bauen zu müssen, obwohl man schon so viele Sachen in HA selbst pflegt, wie zum Beispiel Etagen, Bereiche, dazugehörige Sensoren, Icons, Bezeichnungen etc.

Mit einer Dashboard Strategy macht man das ganze nur einmal. Im Grunde ist eine Dashboard Strategie ein YAML Generator, deren Funktionsweise man komplett in der Hand hat.

Über Feedback würde ich mich sehr freuen! Scheut euch auch nicht ein issue aufzumachen!

Hier ist der GitHub Link: GitHub - trashbytes/bonbon-strategy: A Home Assistant strategy which automatically generates a colorful dashboard.

Ihr könnt die Repository bei HACS hinzufügen und es darüber installieren.

3 „Gefällt mir“

Sieht recht gut aus.

Das Einzige was mich immer etwas stört, sind die “geschlossenen” Fenster und Türen.

Mich interessiert nicht wenn ein Fenster geschlossen ist, sondern nur wenn es NICHT geschlossen ist.

Ich habe dafür die custom card “auto-entities” genommen.

  • “include” alle Türen und Fenster
  • “exclude” geschlossen

Dadurch sehe ich auf einen Blick, welche Fenster und Türen noch offen sind.

Mich würd glaub ich eher stören wenn die Karten kommen und gehen, aber du könntest tatsächlich auch mit dieser Strategie deinen Ansatz gehen.

Du könntest bei bonbon_openings das disabled: true setzen und dann eine eigene Section erzeugen. Kopier einfach die Options von bonbon_openings und füg zusätzlich cards: ein, wo du dann deine auto-entities card einfügst. Stand jetzt müsstest du das allerdings für jeden Bereich duplizieren und dann area_id: area_id setzen und darin deine Filter für jeden Bereich anpassen.

bonbon_openings:
  disabled: true
viel_bessere_openings:
  name: Fenster & Türen
  icon: mdi:window-open-variant
  order: 7
  hide_separator: false
  area_id: <area_id> # hier deine area id
  min_columns: 1
  max_columns: 2
  cards: # hier dein auto-entities, zusätzlich gefiltert für area id

Damit es auch so aussieht wie der Rest, empfiehlt es sich bei card in auto-entities natürlich Bubble Card zu nehmen. Der card_param muss dann “entity” sein. Wenn du hide_separator auf false lässt, solltest du natürlich auch eine else Karte liefern, die besagt, dass keine Fenster offen sind, aber dann wärst du ja wieder beim Ursprungsproblem :smiley:

Sauberer wäre es die Section komplett zu verstecken und einen eigene View zu erzeugen, wie ich ihn habe, nur halt mit auto-entities.

So sind meine Standard Parameter für ein Bubble Card:

type: custom:bubble-card
card_type: button
button_type: state
show_state: true
use_accent_color: true
tap_action:
  action: none
button_action:
  tap_action:
    action: toggle

Hab ich jetzt nicht getestet, aber in der Theorie muss das gehen.

Ich könnte dir natürlich auch einen Replacer zur Verfügung stellen, den du dann nutzen kannst um das nicht zig mal schreiben zu müssen. Ich könnte deine Karten-Parameter durchlaufen und dann zB. einen String wie “<area_id>” mit der tatsächlichen area_id ersetzen, sodass dein Filter dynamisch bleibt. Dann müsstest du nur bei viel_bessere_openings unter area_id alle deine area_ids listen, in der dieser Bereich angezeigt werden soll, und der Rest wird dynamisch gefüllt.

EDIT: Ich hab das jetzt mal ausprobiert:

viel_bessere_openings:
  name: Fenster & Türen
  icon: mdi:window-open-variant
  order: 7
  hide_separator: false
  area_id: buro
  min_columns: 1
  max_columns: 2
  cards:
    - type: custom:auto-entities
      bonbon_area_id: buro
      card:
        type: grid
        columns: 1
        square: false
      card_param: cards
      filter:
        include:
          - entity_id: binary_sensor.*contact
            state: "on"
            area: Büro
            options:
              type: custom:bubble-card
              card_type: button
              button_type: state
              show_state: true
              use_accent_color: true
              tap_action:
                action: none
              button_action:
                tap_action:
                  action: toggle

Funktioniert, aber da greifen die Styles nicht, weil die Karten ja erst in der Runtime existieren und nicht schon in der Strategy. Es sind also zwar Bubble Cards, aber die sehen nicht aus wie die restlichen. Schatten, Farben, Hover-Effekte us.

Besser funktionieren tut das hier:

noch_bessere_openings:
  name: Fenster & Türen
  icon: mdi:window-open-variant
  order: 8
  hide_separator: false
  area_id: buro
  min_columns: 1
  max_columns: 2
  cards:
    - type: custom:bubble-card
      card_type: button
      button_type: state
      show_state: true
      use_accent_color: true
      tap_action:
        action: none
      button_action:
        tap_action:
          action: toggle
      entity: binary_sensor.0xa4c138ae116175b9_contact
      styles: |
        :host {
          display: ${hass.states['binary_sensor.0xa4c138ae116175b9_contact'].state == 'on' ? '' : 'none'} !important;
        }

Hier nutzen wir die nativen Funktionen von Bubble Card, etwas was ich noch intensiver nutzen möchte. Allerdings müsste man es damit auch alles manuell machen.

Ich denke die Idee mit string replacern für <area_id>, <entity_id> etc. ist ganz cool. Dann könnte ich es ermöglichen den automatisch aggregierten Karten eigene Styles zu verpassen, die dann automatisch die richtigen Werte auflösen und funktionieren.

Hey @Gurumir, ich hab nun in v2.1.0 eine Pseudo Funktion namens :hide() für den Selektor implementiert. Damit ist nun das, was du mit auto-entities löst, direkt möglich:

cards: binary_sensor.*[device_class=door|garage_door|window|opening]:hide([state=off])

Das hab ich mir mal auf Home gepackt.

1 „Gefällt mir“