HKS mit HA - Die Anleitung zum Nachbauen - #02.03 Grundlagen Teil 2 - HA Core

  • Zurück zur Startseite und zum Inhaltsverzeichnis

    Voriges Kapitel: #02.02 Basisinstallation von HA

    Nächstes Kapitel: #02.04 Grundkonfiguration von HA

    Version: 2024-03-11

    Wenn wir uns auf die Funktionen von HA beschränken, welche wir für unsere Heimkinosteuerung benötigen, würde ich das System grob vereinfacht wie folgt darstellen:



    Integrationen

    Auf der einen Seite (hier links) bindet sich HA mittels Integrationen an Devices an.

    • Integrationen sind gerätespezifische Schnittstellen und Adpater (Software)
    • Integrationen konvertieren die gerätespezifische Protokolle auf das einheitliche interne HA Interface (Entities und Services)
    • HA stellt bereits eine Vielzahl von Integrationen bereit
    • HA bietet eine Einwicklungsumgebung an. Damit kann man "recht einfach" Integrationen für beliebige Geräte programmieren. Somit wächst der Pool an verfügbaren Integrationen täglich an (https://www.home-assistant.io/integrations)
    • Das Einbinden und Konfigurieren der Integrationen in HA wird imho leider nicht sehr einheitlich umgesetzt.


    Dashboards (Lovelace)

    Auf der anderen Seite (hier rechts) werden Dashboards erstellt, welche von Anwender über HA-Clients zur Anzeige von Geräte-Informationen und zur Aktivierung von Geräte-Steuerbefehlen genutzt werden.

    • Für das Erstellen der Dashboards stellt HA ein recht einfaches aber mächtiges GUI zur Verfügung.
    • Mit dieser GUI wird der eigentliche Konfigurationssyntax (YAML) bearbeitet.
    • Wir werden hier YAML vielfach benötigen und einsetzen!


    Entities

    Sämtliche Informationen welche über Integrationen von Devices einlagen werden in der Entities-Tabelle gespeichert.

    Die Entity-Tabelle hat drei Spalten:

    1. Die Bezeichnung der Entity
    2. Status der Entity
    3. Attibute der Entity

    Was konkret in einer Entity gespeichert wird, ist sehr von der jeweiligen Integration abhängig.

    Einerseits kann eine Entity einem ganzen Gerät entsprechen.

    • ZB. dem AVR, mit dem Bestriebszustand als Status und die Konfigruationsparameter werden in der Attribut-Spalte gespeichert.

    Andererseits kann mit einer Entity auch nur einen Wert gespeichert sein.

    • ZB. einem Temperatur-Sensor, mit der Temperatur als Status und Detail-Infos (Letztes Update, etx.) in der Attribut-Spalte.


    Services

    Um Geräte steuern zu können registiert eine Integration <Services> in HA, welche man nutzen kann um Befehl an das dahinterliegende Gerät zu senden.

    Die Implementierung der Services ist wieder je Integration sehr unterschiedlich!

    Beispiele für Services sind zB.

    • Gerät einschalten
    • Quelle auf HDMI1 ändern
    • Eine Einstellung auf einen Wert ändern
    • Einen Wert abfragen
    • u.v.m


    Automations

    HA bietet mit Automations die Möglichkeit auf Basis Ereignissen (=Trigger) Aktionen auszulösen.

    • Trigger sind zB. Status-Änderungen (AVR wurde eingeschalten)
    • Aktionen sind YAML-Scripts die Services aufrufen können

    Diese Automations können übergreifend über sämtliche installierte Integrationen genutzt werden.


    Push/Pull

    Daten von Geräten können über zwei Methoden an HA übertragen werden:

    • Push
      Ein Gerät überträgt automatisch jede Statusänderung an HA ohne das HA aktiv danach fragt.
      ZB. Ändert man die Lautstärke am AVR, sendet der AVR selbständig eine Meldung an HA mit der neuen Lautstärke-Information und HA kann diese Info sofort anzeigen oder weiterverarbeiten.
    • Pull
      Ein Gerät überträgt nur Daten an HA wenn HA aktiv danach fragt.
      Hierfür gibt es einen Sheduler-Prozess in HA, der alle 30s alle im Sheduler registrierte Integeration triggert (update), um ausgewählte Daten-Abfragen durchzuführen,
      oder man nutzt ein Service der Integration um Daten manuell abzufragen.

    In der Regel werden in Integrationen beide Methoden genutzt.

  • Um die Theorie besser zu verstehen, werden wird uns das jetzt konkret in unserer HA-Installation ansehen.


    Bitte jetzt nicht abschrecken lassen, ich versuche es wirklich einfach zu halten und auf das Notwendigste zu beschränken!


    Wichtig! Ich empfehle jetzt noch nicht bei interessant klingenden Begriffen abzubiegen oder frei herumzuklicken, dass führt nur zu Verwirrung !!!


    Integrationen

    Suchen wir nun die Integrationen in HA. Die "regulär installierten" Integrationen finden wir hier:

    => Settings => Devices&Services => Integrations



    Wie wir sehen, hat HA schon einige Geräte in unserem Netzwerk automagisch gefunden und bietet deren Installation an, und hat auch bereits einige Integrationen vorinstalliert.

    (Wir werden hier später noch ausmisten.)



    Jetzt bitte nur beachten, dass es eine Integration <Shopping List> gibt.
    Mit dieser Integration werden wir uns im folgenden das Thema "Services und Entities" kurz ansehen.


    Entities

    Die zuvor beschriebene Entity-Liste (die mit den drei Spalten) finden wir unter

    => Development-Tools => States

    Diese Tabelle enthält die Liste aller aktuell verfügbaren HA-Entities mit deren Status und Attributen.



    Die Entity unserer <Shopping List> finden wir in der Liste entweder durch scrollen nach unten, oder einfacher wenn wir in der Kopfzeile "to..." als Filter eintragen.



    Wir können hier sogar ganz einfach den Status und die Attribute der Entity <todo.shopping_list> nach belieben ändern.

    Dazu auf die blaue Bezeichnung der Entity klicken und es erscheint ein Eingabeformular oberhalb der Tabelle.



    Hier habe ich den Status auf 15 gesetzt und ein Attribut <Heimkino> mit dem Wert "is great" gesetzt.


    Ergänzend noch:

    Die Attribute einer Entity werden als "Dictionary" gespeichert. Dh. als Liste von Parameteren, wobei jeder Parameter aus einem "Key" und einem "Value" besteht.

    Später können wir dann über die Entity-Bezeichnung und dem Key des Attributes auf jeden Wert zugreifen.

  • Services

    Unsere <Shopping List> hat auch netterweise >Services< in HA integriert.

    Diese Services finden wir am einfachsten unter

    => Development tools => Services


    Geben wir im Service-Eingabefeld "shop..." ein, werden alle von der Integration <Shopping List> registierten Services angezeigt.



    Wir wählen jetzt "Shopping List: Add item" aus, dann erscheint unten ein weiters Eingabefeld für den Parameter "Name", den dieses Service verarbeiten kann.


    Klinken wir auf <CALL SERVICE> wird der Text "Ein Kapitel schreiben" unserer <Shopping List> hinzugefügt.


    Sehen wir in der <Entity-Liste> nach, sehen wir, dass nach jedem Aufruf des Service <Add Item> der Status der Entity <shopping-list> um Eins erhöht wird.



    Klicken wir im Service-Formular auf "GO TO YAML MODE" wird der YAML-Code dieses Service-Aufrufs angezeigt.

    Unterhalb des YAML-Codes wird dann meist noch eine Beschreibung zu den verfügbaren Parametern angezeigt - wie hier unten für denParameter "name" des Service <shopping_list.add_item> dargestellt.



    Diesen Yaml-Code können wir dann später per Copy-Paste für das Erstellen von Buttons in den Dashboards oder für Aktionen in Automationen verwenden um Services aufzurufen!

Jetzt mitmachen!

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