Venus OS - MQTT-Broker (lokal und VRM) - Geräte per MQTT emulieren

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

Venus OS - MQTT-Broker (lokal und VRM) - Geräte per MQTT emulieren
Venus OS - MQTT-Broker (lokal und VRM) - Geräte per MQTT emulieren
  • Matthias Kleine
  • 20.12.2023
  • Batteriespeicher

Wie Du eventuell weißt, ist MQTT eins meiner absoluten Lieblings-Protokolle. Fast alle Daten im Haus werden über MQTT ausgetauscht. Sei es zu meinem Energie-Dashboard, InfluxDB oder von Tasmota-Geräten. Umso mehr freut es mich, dass auch Venus OS direkt mit einem MQTT-Broker ausgestattet ist und man diesen nutzen kann. Normalerweise würde es mir reichen, wenn Venus OS nur ein MQTT-Client wäre. Aber am Ende kann man damit trotzdem alles realisieren. Mehr dazu im Video.

Video

Hausbau-Kurs

Wichtige Info

Aktuell gibt es noch das Paket dbus-mqtt. Dieses Paket nutzt Mosquitto als MQTT-Broker, aber soll wohl (bald, angeblich VenusOS 3.20+) durch einen anderen MQTT-Broker abgelöst werden. Geplant ist die Umstellung auf FlashMQ. Das neue Paket heißt dbus-flashmq.

Cloud-Verbindung (VRM)

Auch für die VRM-Kommunikation mit den Victron-Cloud-Servern wird MQTT verwendet (wie bei vielen anderen Cloud-Diensten auch). Die Konfiguration steht (bei dbus-mqtt) in der folgenden Datei: /data/conf/mosquitto.d/vrm_bridge.conf

Mit der Software MQTT-Explorer kannst Du dich gegen den Victron VRM Cloud-Server verbinden

  • Host: mqtt72.victronenergy.com:443 (Server-ID anpassen! Kann man auch errechnen - siehe unten)
  • Port: 8883
  • TLS aktivieren
  • User: Dein VRM Benutzer (E-Mail)
  • Passwort: Dein VRM-Passwort

Die ID des Cloud-Servers errechnet sich, indem man die ASCII-Codes der jeweiligen Zeichen in der VRM ID addiert durch 128 teilt - der Rest ist Eure Server-ID. Am einfachsten geht das per Modulo. Hier ein Beispiel in JavaScript / NodeJS:

function getServerID(val) {
  const id = val.split('').reduce((acc, c) => acc + c.charCodeAt(0), 0) % 128;
  return `mqtt${id}.victronenergy.com`;
}

Lokale Verbindung

Um sich mit dem MQTT-Broker unter Venus OS zu verbinden, muss unter “Services” der Zugriff für MQTT freigeschaltet werden. Dies ändert aber nichts ander Konfiguration des MQTT-Brokers, sondern ändert die Firewall-Regeln! Ausgeschaltet sehen die Regeln so aus:

-A new-conn -p tcp -m tcp --dport 1883 -j REJECT --reject-with icmp-port-unreachable
-A new-conn -p tcp -m tcp --dport 8883 -j REJECT --reject-with icmp-port-unreachable
-A new-conn -p tcp -m tcp --dport 9001 -j REJECT --reject-with icmp-port-unreachable

Und wenn man die Verbindung (auch Plain Text / ohne TLS) aktiviert, dann so:

-A new-conn -p tcp -m tcp --dport 8883 -j ACCEPT
-A new-conn -p tcp -m tcp --dport 1883 -j ACCEPT
-A new-conn -p tcp -m tcp --dport 9001 -j ACCEPT

Zusatzpaket für MQTT-Geräte

Mit dem Paket dbus-mqtt-devices können recht einfach per MQTT neue Geräte erstellt werden. Dies kann z.B. ein einfacher ESP32 mit Temperatur-Sensoren sein, ein ioBroker oder auch Home Assistant. Alles, was MQTT spricht eben. Ich verwende jetzt das Node-RED aus dem Large-Image von Venus OS, um meinen MQTT-Broker mit dem MQTT-Broker von Venus OS zu verknüpfen.

“Dazwischen” kann ich dann die Daten noch umrechnen, weil bei mir z.B. ein negativer Wert vom Netz-Zähler bedeutet, dass ich etwas beziehe (= negativ für mich). Venus OS möchte aber für den Export / die Einspeisung negative Werte sehen. Entsprechend rechne ich meine Werte einfach mit Node-RED um. Alle Details dazu im Video weiter oben.

Venus OS MQTT Devices

»Venus OS MQTT Devices«

Bekannte Probleme

Nach diesem Video habe ich folgende Probleme festgestellt:

  • Das Grid-Meter (Netz) wird als AC Input dargestellt und nicht als Grid/Netz
  • Die Darstellung / das Schema in der Remote Console ist falsch. Normalerweise müssten die AC-Loads direkt mit dem Netz verbunden sein. Dort sollte dann auch der Inverter dran hängen

Falsche Darstellung in der Remote Console

»Falsche Darstellung in der Remote Console«

Falls jemand weiß, woran das liegt: Gerne eine kurze Info dazu!

Alternativen von mr-manuel

Info: Auch mit dieser Erweiterung wird mir Grid/Netz nicht angezeigt, sondern weiterhin AC Input. Das liegt laut Kommentaren wohl daran, dass ich den Multiplus noch nicht in das System integriert habe. Behebt sich also (hoffentlich) in den nächsten Videos selbst.
wget -P /tmp https://github.com/mr-manuel/venus-os_dbus-mqtt-grid/archive/refs/tags/v0.1.4.zip
unzip /tmp/v0.1.4.zip -d /tmp/
rm /tmp/v0.1.4.zip
mv /tmp/venus-os_dbus-mqtt-grid-0.1.4/dbus-mqtt-grid/ /data/etc/

cp /data/etc/dbus-mqtt-grid/config.sample.ini /data/etc/dbus-mqtt-grid/config.ini
nano /data/etc/dbus-mqtt-grid/config.ini

Konfiguration:

broker_address = localhost
topic = mqtt-grid/meter

Installation:

bash /data/etc/dbus-mqtt-grid/install.sh

Test-Payload an mqtt-grid/meter:

{
    "grid": {
        "power": 600,
        "voltage": 230,
        "current": 6,
        "energy_forward": 1000,
        "energy_reverse": 2000,
        "L1": {
            "power": 100,
            "voltage": 231,
            "current": 1,
            "frequency": 50,
            "energy_forward": 200,
            "energy_reverse": 1200
        },
        "L2": {
            "power": 200,
            "voltage": 232,
            "current": 2,
            "frequency": 50,
            "energy_forward": 300,
            "energy_reverse": 500
        },
        "L3": {
            "power": 300,
            "voltage": 233,
            "current": 3,
            "frequency": 50,
            "energy_forward": 400,
            "energy_reverse": 300
        }
    }
}
Du willst mehr?

Smart-Home-Trainings von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte! Über 13.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
Hausbau-Kurs

Hausbau mit KNX

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
Node-RED-Master-Kurs

Node-RED-Master-Kurs

Mehr Infos