Categories
Computers deutsch Smart Home

vzlogger an mehrere HA-Instanzen anbinden

Ich habe mir vor einer Weile eine zweite Home Assistant (HA)-Instanz als “Testsystem” angelegt, um neue Integrationen, Updates, etc. zunächst gefahrlos testen zu können, ohne mein Produktivsystem zu gefährden. Dabei hatte ich ein Problem: Mein Stromzähler ist über einen Infrarot-Lesekopf und das Tool “vzlogger” an HA angebunden. vzlogger sendet die Messwerte dabei über das MQTT-Protokoll an den Broker in HA, Mosquitto. Leider kann vzlogger nur eine MQTT-Senke bedienen. Was also tun?

Ganz einfach: Es gibt bei MQTT-Brokern das Konzept der “Bridge“. Ein MQTT-Broker tritt dabei seinerseits als MQTT-Client auf, der sich gegen einen anderen MQTT-Broker verbindet. Er kann dann dorthin Nachrichten senden oder von dort empfangen. Und genau diese Konstruktion habe ich nun genutzt, um die Werte meines Stromzählers durch die Testinstanz aus der Produktivinstanz auszulesen und im Testsystem verfügbar zu machen.

(Man kann argumentieren, dass eine solche Architektur von der originalen Integration ins Produktivsystem abweicht und daher nicht ideal ist — man möchte ja die Architektur beider Systeme und aller Integrationen möglichst identisch haben, damit Testergebnisse auch stets vom Testsystem auf das Produktivsystem übertragbar sind. Ja, diese Aussage ist absolut valide. Besser wäre tatsächlich eine andere Architektur, bei der vzlogger die Messwerte an einen MQTT-Broker schickt, der nicht auf einer der beiden HA-Instanzen läuft. Dieser Broker würde dann als “Bridge” agieren müssen und die Messwerte jeweils in das Test- und Produktivsystem senden. Ich habe aber auf eine solche “saubere” Architektur verzichtet, weil mir der Aufwand einfach zu groß war. Ich hoffe einfach, dass ich nie Tests durchführen muss, bei denen dieser Architekturaspekt wesentlich ist… 🙂)

Der Broker der Testinstanz verbindet sich also mit dem Produktivsystem, um von dort die vzlogger-Messwerte zu empfangen. Ich habe dafür im Mosquitto des Produktivsystems ein dediziertes Login für das Testsystem eingerichtet:

Dann habe ich im Mosquitto des Testsystems diese Option aktiviert

und folgendes Snippet in die Datei /mnt/data/supervisor/share/mosquitto/bridge.conf eingetragen:

connection bridge-to-remote
address ha.gv.internal.bergs.biz:1883
remote_username ha-test
remote_password thePassword
topic vzlogger/# in

Die letzte Zeile bedeutet, dass der Broker als Bridge die Topics vzlogger/# vom anderen Broker empfängt.

Zusätzlich müssen die beiden MQTT-Topics für den Momentanverbrauch und den Zählerstand natürlich auch auf dem Testsystem eingerichtet werden. Dies geht exakt so, wie es auch auf dem Produktivsystem eingerichtet wurde. Die Datei configuration.yaml ist wie folgt zu ergänzen:

# Add MQTT entities
mqtt:
sensor:
- name: "Strom Zählerstand"
state_topic: "vzlogger/data/chn0/raw"
unit_of_measurement: Wh
unique_id: vz_strom_kumuliert
device_class: energy
state_class: total_increasing
- name: "Strom Momentanleistung"
state_topic: "vzlogger/data/chn1/raw"
unit_of_measurement: W
unique_id: vz_strom_momentan
device_class: power
state_class: measurement

Das war’s. Nun sind die Messwerte quasi ohne Verzögerung auch im Testsystem verfügbar:

Bei Fragen bitte gerne fragen. Viel Spaß beim Nachbauen… 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *