HKS mit HA - Die Anleitung zum Nachbauen - #02.05 Grundlagen Teil 3 - HA Dashboards

  • Zurück zur Startseite und zum Inhaltsverzeichnis

    Voriges Kapitel: #02.04 Grundkonfiguration von HA

    Nächstes Kapitel: #02.06 Installation am Bediengerät

    Version: 2024-03-12


    Gut, wir sind jetzt schon sehr weit gekommen. Zeit für erste Erfolgserlebnisse!


    Ich hoffe ich kann mit dem folgenden Kapitel eure Kreativität anregen. Mir taugt das Dashboard-Designing jedenfalls.


    Hinweis für Quereinsteiger: Wir benötigen hier jetzt <custom:button_card>. Die installation ist im vorherigen Kapitel beschrieben.




    Beginnen wir mit einem neuen und leeren Dashboard:

    => Dashboards => ADD DASHBOARD => New dashboard from scratch =>

    • Title: HKV-Demo
    • Show in sidebar: aktivieren

    => CREATE


    Es erscheint danach in der Sidebar ein neuer Eintrag „HKV-Demo“

    Klicken wir darauf sehen wir gähnende Leere.

    Nur rechts-oben wird uns neben der Lupe ein Stift angezeigt, darauf klicken wir.


    Es wird der Dashboard-Editor-Modus gestartet.
    Jetzt gibt es schon etwas mehr zu sehen.

    • Wir können den Namen dieses Dashboards ändern (dieser ist nicht zwangsläufig der gleich wie jener in der Sidebar) und
    • es wurde eine leere View namens „HOME“ erstellt.
    • In dieser View können wir nun Karten (CARDs) hinzufügen.


    Zusammengefasst:

    Wir können in HA "beliebig viele" Dashboards erstellen, die ihrerseits "beliebig viele" Views enthalten können und View enthalten Cards.
    In den Cards können wir dann noch weitere Cards, Stacks und Controls verschachteln.

    Am Endgerät kommt dann immer genau eine VIEW zur Ansicht. Zwischen den View kann man dann mit Links navigieren.



    EIne Karte aufbauen

    Zu den Einstellungen der View (Stift nehmen dem Namen der View) kommen wir später.
    Wir fügen zunächst eine neue Karte zur View "Home" hinzu.

    => ADD CARD


    Uns wird eine lange Liste an verfügbaren Kartentypen angezeigt.
    Für dieses HKS-Projekt benötigen wir nur drei Typen von Karten

    • Horizontal stack
    • Vertical stack
    • Custom: Button-Card

    Die „Horizontal stack“-Karte stapelt darin enthaltene Elememte horiziontal.

    Die „Vertical stack“-Karte stapelt darin enthaltene Elememte vertical.

    "Horizontal" und "Vertical stacks"-Karten lassen sich beliebig ineinander verschachteln.


    Zur Veranschaulichung hier eine einfache Karte mit 3 Zeilen und 4 Spalten,

    aufgebaut aus einem "Vertical stack" welcher mit 3 "Horiziontal stacks" enthält und jeder "Horiziontal stack" enthält 4 minialistische "custom:button-cards".



    Mit dem Visual-Editor kann man gut in diesen Ebenen navigieren und die einzelnen Elemente bearbeiten.

    Klickt man unten auf „SHOW CODE EDITOR“ wird er entsprechende YAML-Code der gesamten Karte angezeigt.



    Kurzer Abstecher zum YAML-Syntax für mutige



    Zurück zum YAML-Editor


    Der YAML-Editor im Dashboard zeigt uns an, ob wir den YAML-Syntax richtig geschrieben haben.


    Ist die vertikale Linie, rechts neben den Zeilennummern, blau, ist der Syntax durchgängig korrekt, ist sie rot gibt es einen Syntax-Fehler und der Fehlercode steht unterhalb.



    Was ist hier der Fehler?

    Hier fehlt in Zeile 7 das Minus-Zeichen vor dem Listen-Item.

    Daher würden die Zeilen 5 bis 8 zu einem Dictionary gehören, was aber nicht korrekt sein kann, da in einem Dictionary jeder Key nur einmal vorkommen darf und hier wären dann die Keys <type> und <name> jeweils doppelt vorhanden. Dies sagt uns auch die rote Fehlermeldung "duplicated mapping key (7:9)"


    Auch wenn im YAML-Code Einrückungen nicht korrekt sind, wird ein roter Fehlercode unterhalb angezeigt und zeigt meist den richtigen Ort an wo man den Fehler suchen muss.


    Aber warum interessiert uns das?
    Wie gesagt, bauen wir unsere Dashboards mit der „Custom: Button-Card“ auf. Dafür gibt es keinen GUI-Assistenten.
    Wir müssen die Button-Cards also mit YAML konfigurieren!
    Das ist aber am Ende kein Nachteil!



  • Custom: Button-Card


    Sehen wir uns jetzt die „Custom: Button-Card“ genauer an:

    (Alle Optionen und Funktionen der „Custom: Button-Card“ sind hier sehr gut beschrieben https://github.com/custom-cards/button-card)


    Ich beschränke mich hier wieder nur auf die Optionen und Funktionen die wir hier in den folgenden Kaptieln noch für das HKS-Projekt benötigen!


    In unserem Beispiel von zuvor habe ich jetzt die Darstellung (styles:) des "A1"-Buttons angepasst und eine zweite Textzeile mit „label: HKV“ hinzugefügt.
    Dies sieht im YAML-Code und im Layout dann so aus:



    Jetzt benötigen wir noch drei weitere Dinge:

    1. Die als <Name> und <Label> angezeigten Texte sollen dynamisch und aktuell aus Entity-Attributen erstellt werden.
    2. Die Farbe der Buttons soll dynamisch auf Basis von Bedingungen eingefärbt werden
      zB. „wenn AVR.STATE=ON dann GRÜN sonst GRAU“
    3. Beim Klicken auf einen Button soll eine Aktion ausgelöst werden.

    Beginnen wir beim Punkt 3 - Aktionen bei Klicken


    Der Button bietet Trigger-Tags, um auf Klicken (tap) zu reagieren

    • <tap_action> und
    • <hold_action>

    Die Aktion hinter <tap_action> wird sofort ausgelöst, jene hinter <hold_action> nach ca. 1 Sekunde halten des Buttons.


    Diese Aktionen können ihrerseits Parameter enthalten.


    Wenn wir mit einem Klick auf den "A1"-Button einen Eintrag zu unser „Shopping List“ hinzufügen wollen, erweitern wir unseren "A1"-Button um den Parameter <tap_action> und den erforderlichen Service-Parameter. Den getesteten Service-Aufruf können wir per Copy-Paste (wie zuvor unter Services beschrieben ) als YAML-Code hier hinein kopieren.


    Das sieht dann so aus:



    Wir können den "A1"-Button auch gleich hier in dieser Entwurfsansicht betätigen und testen.
    Mit jedem Klick auf den"A1"-Button sollte sich der Status der Entity „Shopping List“ um Eins erhöhen.


    Punkt 1 - Dynamische Texte


    Wenn wir jetzt noch direkt im Dashboard auf einer Karte die aktuelle Anzahl der "Shopping List"-Items anzeigen wollen, machen wir das so:



    Der Text des Labels des "A2"-Buttons wird hiermit zu Laufzeit vom hinterlegten Template berechnet (Items: 10).

    • Die Templates der Button-Card sind ähnlich wie jene der HA-Templates aber nicht 1:1 übertragbar.
    • Die Templates der Button-Card müssen zwischen „[[[„ xxx „]]]“ stehen
    • Die Sprache der Templates der Button-Card ist JavaScript (jene der HA-Templates ist Jinja2!)
    • Templates können praktisch für alle Parameter der Button-Card genutzt werden - Von der Schriftgröße bis zu den Parametern der aufgerufenen Services.

    Um den JavaScript-Code für die Templates zu entwickeln und zu testen, nutze ich einen Online-Compiler (zB. https://www.programiz.com/javascript/online-compiler/)


    Um das Attribut <friendly_name> der Entity <shopping_list> abzufragen lauted der JavaScrip-Syntax wie folgt:

    Code
    var fn = states['sensor.shopping_list'].attributes.friendly_name



    Punkt 2 - Dynamischer Style


    Wenn wir jetzt noch möchten, dass der Button ab einem Wert von 10 seine Farbe auf Grün ändert, machen wir das in gleicher Weise mit einem JavaScript-Template wie folgt:

  • Jetzt haben wir alle erforderlichen Grundlagen durch !!


    Anmerkung:

    Das zuletzt erstellten DCX-Dashboard habe ich nur mit diesen paar Funktionen der Button-Card und h/v-stacks erstellt!

    (Hier nur vorab eine beispielhafte View meines DCX-Dashboards, um zu zeigen was man damit machen kann und um eure Kreativität anzuregen!)


  • Noch ein kurzer Anhang zum YAML-Editor in Dashboard-Designer


    Dieser Editor hat doch einige recht praktisch Funktionen.
    Zu Beginn habe ich externe DEV-Editoren genutzt und den YAML-Code hin und her kopiert. Das mache ich jetzt nur mehr selten.


    1) Suchen und Ersetzen

    <Strg+F> öffnet die Felder für Suchen und Ersetzen



    2) Rückgängig (Undo/Redo)

    <Strg+z> macht die letzten Änderungen rückgängig

    <Strg+y> macht das letzte Undo rückgängig


    3) IntelliSense Funktion

    für HA-Entities



    4) YAML Syntaxhervorhebung

    auch teilweise innerhalb von Templates. Hierzu darf man aber auf das MINUS nicht vergessen.


    Nur: |


    Und mit: |-


    5) Live Übersetzung

    Änderungen im YAML-Code werden sofort rechts in der Vorschau-Ansicht dargestellt.

    Das gilt auch für Änderungen im Template-Code.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!