Skip to content

Steuerung der openWB (v1.9.x) mit iobroker & vis

m4ding edited this page Nov 6, 2023 · 1 revision

Diese Wiki Seite beschreibt, wie die openWB über mqtt am Beispiel iobroker/ vis gesteuert werden kann. Weiter unten werden ein paar set und get topics gelistet, falls die openWB via mqtt über einen anderen Broker gesteuert werden soll.

Was wird hierfür benötigt?

  • openWB mit mind. Software Stand 1.9.244 (siehe hier)
  • iobroker
    • mqtt client/server Adapter
    • eine Visualisierung basierend auf iobroker, um die Steuerung zu realisieren (hier werden die icontwo Icons benötigt)
    • ein paar Blockly Skripte

Vorgehen

Um die openWB steuern zu können kann das MQTT-Protokoll verwendet werden. Hiermit lässt sich die openWB auch von iobroker steuern.

Nachfolgend eine Übersicht wie die Lösung realisiert wurde: 1

Hinweis

Das openWB Web Interface steuert ebenfalls die oWB im Hintergrund mit mqtt. Über Status --> mqtt Log lässt sich heraus finden, welches mqtt Topic bei welcher Aktion gesteuert wird. Sollten sich die Topics z.B. wegen Update auf oWB 2.0 ändern, lässt sich dies einfach auslesen.

a) Verbindung zwischen openWB & iobroker

Auf der openWB Seite muss keine MQTT Brücke zusätzlich eingerichtet werden, da iobroker nur aus dem Heimnetz auf openWB zugreift.
Auf der iobroker Seite muss nur der Adapter MQTT Broker/Client verwendet werden, deren Instanz dann als Client/Subscriber plus IP-Adresse der openWB und dem Port 1883 als Verbindungsparameter eingerichtet wird.

Folgender Adapter sollte genutzt werden:
MQTT Adapter

Beispiel-Konfiguration:

Unter den MQTT Einstellungen in der Instanz sind die beiden Punkte Nur bei Änderungen publizieren & Eigene States beim Verbinden publizieren aktiv gesetzt.

Achtung!! Wenn die MQTT-Adapter-Instanz nicht die erste ist (0), dann muss unter Einstellungen bei Maske zum Bekanntgeben eigener States die Instanz-Nummer entsprechend angepasst werden. Sonst wird ein Schreiben der Daten zu openWB nicht funktionieren!

Damit besteht die Verbindung und die Daten von openWB werden im iobroker unter Objekte aufgeführt.

Hinweis: es kann vorkommen, dass der mqtt Adapter nicht auf Status grün geht. So lange der Verbindungstest aber erfolgreich ist, ist das nach aktuellem Wissensstand kein Problem

Nun auf "Objekte" wechseln, u.a. sollten folgende Ordner und Datenpunkte erstellt worden sein:

b) Daten lesen (und damit auch der Rückkanal von gesendeten Änderungen)

Alles außer der Pfad /openWB/set bildet den Stand der Einstellungen und der aktuellen Daten aus der openWB ab. D.h. set wird nur zum Schreiben der Werte benutzt, alle anderen zum Abrufen des Status.

Eine Erklärung zu den verschiedenen Werten ist hier gelistet: MQTT Thread

c) Daten schreiben

Je nach was man der Wallbox übergeben möchte, bedarf es eine entsprechende Ansprechadresse (= MQTT-Topic).
Z.B. Für Änderung des Ladestatus
Pfad: openWB/set/lp/1/ChargeMode openWB/global/ChargeMode

Der Wert: Werte die eingestellt werden können (0 = Sofort Laden (Direct), 1 = Min und PV, 2 = Nur PV, 3 = Stop, 4 = Standby) - Achtung: Das Webinterface hat ggf. eine andere Reihenfolge!

Also wenn nun der Charge Mode z.B. auf Nur PV eingestellt werden soll, dann wird "manuell" in den Pfad openWB/set/lp/1/ChargeMode openWB/global/ChargeMode den Wert: 2 geschrieben. Ob das nun übertragen wurde und angekommen ist, ist in diesem Fall bei mir (da ich nur einen Ladepunkt habe) unter: openWB/global/ChargeMode wieder zu finden.

WICHTIG:
Hinweis 1: Der Pfad zum Schreiben muss ggf. manuell einmalig in iobroker als neues Objekt angelegt werden, da openWB die /set/-Topics nicht selbst published sondern nur liest.
Hinweis 2: Nach dem Schreiben des Wertes wird dieser "übertragen" und direkt danach als Wert in dem Pfad gelöscht.

VIS

Beispiele für interessante Daten zum Lesen für vis

Nachdem die Verbindung steht, können verschiedenste Werte aus mqtt.0.[...] ausgelesen werden. Ggf. heißt die Instanz bei euch mqtt.1, falls Ihr mehrere mqtt Instanzen habt. Interessante Werte sind z.B.

  1. mqtt.0.openWB.lp.1.ChargePointEnabled - Ladepunkt de/aktiviert
  2. mqtt.0.openWB.global.ChargeMode - aktueller Lademodus
  3. mqtt.0.openWB.config.get.pv.chargeSubmode - aktueller Sub Lademodus (Aus, kWh, SoC Laden)
  4. mqtt.0.openWB.lp.1.boolPlugStat - Auto eingesteckt/ nicht eingesteckt
  5. mqtt.0.openWB.lp.1.ChargeStatus - lädt/ lädt nicht
  6. mqtt.0.openWB.lp.1.%Soc - SoC des Autos (falls SoC Modul konfiguriert)
  7. mqtt.0.openWB.lp.1.kWhActualCharged- aktuell geladen
  8. mqtt.0.openWB.lp.1.kWhChargedSincePlugged - geladen seit eingesteckt etc.

GGf. sind noch weitere Werte aus get/SmartHome etc. interessant. Eine Liste mit Erklärung gibt es hier im Forumsbeitrag.

set Topics zum Steuern der Lademodi etc. via mqtt

Hinweis: wird im set Topic eine Wallbox als Nummer angesprochen, muss hier natürlich die richtige gewählt werden (sollte man mehrere openWBs sein eigen nennen)

  • openWB aktivieren/ deaktivieren: openWB/set/lp1/ChargePointEnabled
  • Lademodus wählen: openWB/global/ChargeMode (0 = Sofort Laden (Direct), 1 = Min und PV, 2 = Nur PV, 3 = Stop, 4 = Standby) - lt Doku eigentlich /set/ChargeMode, geht aber nicht
  • Sofortladen Submode setzen: openWB/config/set/sofort/lp/1/chargeLimitation (0 = Aus, 1= kWh Laden, 2= SoC Laden)
  • Sofortladen kWh Laden Anzahl kWh setzen: openWB/config/set/sofort/lp/1/energyToCharge
  • Sofortladen SoC Ziel in %: openWB/config/set/sofort/lp/1/socToChargeTo
  • Ampère, mit denen geladen werden soll (6-32 bei 22kw, 6-16 bei 11kw WB): openWB/config/set/sofort/lp/1/current
  • Reset Sofortladen: openWB/config/set/sofort/lp/1/resetEnergyToCharge

Steuern der openWB via mqtt

Die Wallbox kann komplett über MQTT gesteuert werden.

Zum Steuern der openWB für diese Lösung werden in 0_userdata.0 ein paar Datenpunkte benötigt. Die Logik ist so aufgebaut, dass die Vis den eigenen Datenpunkt steuert, ein Blockly diese Datenpunkte auf Änderungen überwacht und entsprechend an mqtt weiter gibt. Dies ist notwendig, da vis soweit bekannt es nicht ermöglicht, eine Funktion im Blockly mit Übergabeparameter aufrufen zu können. Somit wird über vis ein eigener Datenpunkt gesteuert welche vom Blockly überwacht wird (und daraus Aktionen abgeleitet werden).

Ich habe für mich noch ein paar Datenpunkte mit entsprechenden Texten gesetzt: 1

Die Datenpunkte sind in folgender JSON exportiert: openWBDatenpunkte.txt

(die Text Datei in .json umbenennen.

Die Datenpunkte könnt ihr mit Hilfe der Import Funktion von iobroker importieren (unzip, dann JSON Datei importieren): 2

Als Nächstes legt ihr ein neues Blockly Skript an und importiert folgendes (XML importieren): openWBBlockly.txt

Vergesst nicht, das Blockly zu aktivieren!

Das Ganze sollte dann ca. so aussehen:

3

Es gibt zwei Fälle:

  1. Jemand steuert über das openWB Interface, dann muss VIS das mit bekommen
  2. Jemand steuert über VIS

Das Ganze ist entsprechend kommentiert. Falls gewünscht können die Text-Datenpunkte (z.B: 0_userdata.0.EigeneDatenpunkte.openWB.AutoEingestecktStatusText) für ein nächtliches/ morgentliches Telegram/ Pushover Push benutzt werden, um sich selbst über den Status zu informieren. Ich habe mir mit der Zeit einiges zusammen gebaut, so dass ich morgens eine Infos über Haus, Wetter etc. erhalte.

Nun fehlt nur noch der View in Vis, welcher die Werte unter 0_userdata.0.EigeneDatenpunkte.openWB* setzt, so dass das Blockly einen set Befehl an das mqtt topic schicken kann.

Bei mir läuft ein Samsung Galaxy Tab. Der View muss entsprechend eurem Design, Größe etc angepasst werden oder ihr kopiert einfach nur die Widgets.

vis view owb.txt

Der View sieht aktuell wie folgt aus: 1

Beim Klick/ Tippen auf die Wallbox wird diese aktiviert/ deaktiviert. Danach sind die Lademodi vorhanden. Wird der Ladepunkt deaktiviert, wird der Lademodus auf Stop gesetzt und sämtliche Werte genullt.

Die Submodi werden je nach Wahl gezeigt oder verborgen.

Das Design gefällt mir noch nicht 100%, unser E-Auto ist aber noch nicht da und ich hatte noch keine Zeit was schickeres zu finden. Ich hoffe es funktioniert bei euch - viel Spaß damit.

Alternative VIS - basic-iframe und openWB Display Anzeige

Neben der oben beschriebenen, sehr individuellen Nutzung der MQTT Datenpunkte, kann man aber auch im VIS ein "basic-iframe" mit der folgenden URL füttern.

http://<IP_Adresse-der-openWB>/openWB/web/display/display.php

Dieses führt dazu, das dass Anzeigedisplay, welches in openWB unter "Einstellungen->Verschiedenes->Display", ausgewählt wurde, angezeigt wird. Alle Elemente in diesem Display sind voll bedienbar.

Hier die Ansicht "Color", welche ab 1.9.254 BETA oder spätere Nightly Versionen verfügbar ist.

2022-02-24 20_14_34-vis

Clone this wiki locally