[V3.5.1] Custom-Logic - wie erstelle ich ein Array aus drei Modbus-Input Werten die per MQTT gesendet werden sollen?
Verfasst: Mi Feb 07, 2024 4:50 pm
Hallo,
seit dem Upgrade der openWB auf Version 2, wird die Übergabe einiger MQTT-Zählerwerte als Array erwartet.
Hier ein Beispiel aus der Doku für die Spannungen - für die Netz-Ströme, -Leistungen und -Leistungsfaktoren (für L1, L2 und L3) gilt dasselbe analog:
- openWB/set/counter/1/get/voltages
- Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)
- Beispiel: [222.2,223.3,222.3]
Die Werte werden per Modbus vom Solar-Inverter mit den drei Stromwandlern bereitgestellt und vom TWS per RS485 abgefragt. Vor Version 2 der openWB konnte ich mit dem TWS einfach alle drei Werte für L1, L2 und L3 einzeln per MQTT an die openWB senden. Das klappte hervorragend.
Nun will die openWB aber ein Array mit den drei Werten.
Wie krieg ich das hin? Ich hab's mit 'ner Custom Logik versucht, finde leider die Doku dazu sehr dünn. Ich habe hier gesucht und gelernt: app.php/kb/viewarticle?a=84
Gibt es noch weitere Doku zu Custom Logiken und insbesondere der Syntax um die Modbus-Werte als Inputs zu definieren?
Ein weiteres Problem: wenn ich einmal eine Custom Logik gespeichert habe, wie kann ich dann wieder in den Edit-Modus zurückschalten um den Code zu editieren? Muss ich dazu per SSH mit dem TWS verbinden? Wohl kaum, oder?
Es würde mir ja schon reichen, wenn ich ein bestehendes Logik-Module in der Code-Ansicht öffnen könnte um zu lernen, wie ich die Modbus-Inputs angeben muss.
Leider komme ich hier nicht weiter und ich freue mich über Hilfe.
Bei meinen Recherchen und Versuchen bin ich auf einen Beitrag gestoßen, der sagt, dass das Senden von Array mittels MQTT erst ab Version 4 von TWS möglich sein wird: viewtopic.php?f=81&t=3249&p=50211&hilit=array#p50211
Kann das sein, dass die ersten Versionen (bin mit meinem TWS 3500 auf Version 3.5.1 - Rock the House) ... wenn das stimmt, dann ist mir gar nicht nach rocken zumute.
Zur Not kann ich auch per String-Operationen das Array "händisch" bauen, nur finde ich auch keinerlei Logik-Bausteine um Text zu bearbeiten. Was übersehe ich?
Ich hoffe, dass ich die Lösung nur übersehen habe und Ihr mit den richtige Anstoß geben könnt.
Herzlichen Dank vorab und LG,
Bernhard
seit dem Upgrade der openWB auf Version 2, wird die Übergabe einiger MQTT-Zählerwerte als Array erwartet.
Hier ein Beispiel aus der Doku für die Spannungen - für die Netz-Ströme, -Leistungen und -Leistungsfaktoren (für L1, L2 und L3) gilt dasselbe analog:
- openWB/set/counter/1/get/voltages
- Array mit den Spannungen je Phase in Volt, mit Nachkommastellen (Float)
- Beispiel: [222.2,223.3,222.3]
Die Werte werden per Modbus vom Solar-Inverter mit den drei Stromwandlern bereitgestellt und vom TWS per RS485 abgefragt. Vor Version 2 der openWB konnte ich mit dem TWS einfach alle drei Werte für L1, L2 und L3 einzeln per MQTT an die openWB senden. Das klappte hervorragend.
Nun will die openWB aber ein Array mit den drei Werten.
Wie krieg ich das hin? Ich hab's mit 'ner Custom Logik versucht, finde leider die Doku dazu sehr dünn. Ich habe hier gesucht und gelernt: app.php/kb/viewarticle?a=84
Gibt es noch weitere Doku zu Custom Logiken und insbesondere der Syntax um die Modbus-Werte als Inputs zu definieren?
Ein weiteres Problem: wenn ich einmal eine Custom Logik gespeichert habe, wie kann ich dann wieder in den Edit-Modus zurückschalten um den Code zu editieren? Muss ich dazu per SSH mit dem TWS verbinden? Wohl kaum, oder?
Es würde mir ja schon reichen, wenn ich ein bestehendes Logik-Module in der Code-Ansicht öffnen könnte um zu lernen, wie ich die Modbus-Inputs angeben muss.
Leider komme ich hier nicht weiter und ich freue mich über Hilfe.
Bei meinen Recherchen und Versuchen bin ich auf einen Beitrag gestoßen, der sagt, dass das Senden von Array mittels MQTT erst ab Version 4 von TWS möglich sein wird: viewtopic.php?f=81&t=3249&p=50211&hilit=array#p50211
Kann das sein, dass die ersten Versionen (bin mit meinem TWS 3500 auf Version 3.5.1 - Rock the House) ... wenn das stimmt, dann ist mir gar nicht nach rocken zumute.
Zur Not kann ich auch per String-Operationen das Array "händisch" bauen, nur finde ich auch keinerlei Logik-Bausteine um Text zu bearbeiten. Was übersehe ich?
Ich hoffe, dass ich die Lösung nur übersehen habe und Ihr mit den richtige Anstoß geben könnt.
Herzlichen Dank vorab und LG,
Bernhard