Home Assistant – Verbindung zur RaspberryMatic / Homematic CCU prüfen

Home Assistant baut beim Start zu der oder den Homematic CCUs eine Verbindung auf. Wenn die CCU abstürzt oder neu gestartet wird, bekommt das Home Assistant leider nicht automatisch mit. Als Folge werden Veränderungen nicht mehr angezeigt und Aktionen können nicht mehr ausgeführt werden. Diese Fehlschläge produzieren aber keine Fehler, die man erkennen könnte.
Aus diesem Grund muss man eine Todmann-Schaltung erstellen, durch die Home Assistant erkenn kann, dass die CCU nicht erreichbar ist oder neu gestartet wurde.

Eine solche Schaltung kann man auf mehreren Wegen erreichen, zum Beispiel indem man einen Sensor überwacht, der in definierten Zeitabständen einen Zustand meldet. Wir werden hier aber eine andere universellere Methode umsetzten und ebenfalls in der Dokumentation von Home Assistant zu finden ist.

RaspberryMatic

Als erstes muss man in der CCU eine Systemvariable konfigurieren, die sich kurz nach dem Booten zum Beispiel die aktuelle Zeit zugewiesen bekommt. Wichtig ist aber eigentlich nur, dass es nach einem Bootvorgang immer ein anderer Wert ist. Home Assistant kann diese Variable immer Abrufen, anders als die Steuerverbindung zu den Geräten, welche nach einem Verbindungsverlust nicht selbstständig wieder aufgebaut werden kann.

In der CCU gehe zu Einstellungen -> Systemvariable und erstelle eine neue Variable, welche LastBoot heißt. Definiere den Inhalt als Zeichenkette.

Erstellen der Systemvariablen LastBoot.

Gehe zu Programme und Verknüpfungen -> Programme und erstelle das folgende Programm. Das Feld mit den Bedingungen muss leer sein. Das Script muss im Feld „Aktivität: Dann“ eingetragen werden und muss mit einer Verzögerung von 30 Sekunden starten.

Erstellen des Programms zum setzen der Systemvariablen Last Boot.

Klicke auf die drei Punkte, um das folgende Script einzugeben:

RaspberryMatic Programm zum setzen der LastBoot Variablen
 
var obj = dom.GetObject("LastBoot");
string now = system.Date("%d.%m.%Y %H:%M:%S");
obj.State(now);
Script zum setzen von LastBoot.

Home Assistant

Erstelle einen Template-Sensor im Verzeichnis sensors/system/gfccu_lastboot.yaml, welche den Inhalt der Variable LastBoot enthält.

Sensor für die Variable LastBoot
 
# This sensor contains the LastBoot variable of the ground floor CCU
platform: template
sensors:
        gf_ccu3_lastboot:
                friendly_name: CCU Ground Floor - Last Boot
                value_template: "{{ state_attr('homematic.gf_ccu3', 'LastBoot') or '01.01.1970 00:00:00' }}"
                icon_template: "mdi:clock"
                entity_id: homematic.gf_ccu3

Erstelle eine Automation im Verzeichnis automation/system/ccu_reconnect.yaml.

Überwachung des Status von LastBoot
 
# Reconnect to Ground Floor CCU whenever sensor is changing
- alias: CCU Ground Floor Reconnect
  initial_state: true
  trigger:
          platform: state
          entity_id: sensor.gf_ccu3_lastboot
  action:
          service: homematic.reconnect

Da der Sensor unwichtig für die Oberfläche ist und man die Variable ebenfalls in im Status der CCU in Home Assistant sehen kann, verstecke ich den Sensor in der Datei customize.yaml.

Verstecken des Sensors für LastBoot
 
sensor.gf_ccu3_lastboot:
        hidden: true

Tests

Zum testen, ob alles funktioniert, kann man in der CCU unter Status und Bedienung -> Programme das gerade erstellte Programm starten. Im Log von Home Assistant sollten nun Einträge erscheinen, die die Erneuerung der Verbindung anzeigen.

Press Ctrl+C to copy the following code.
"