NEWS
openDTU per MQTT auslesen und steuern
-
Hallo Zusammen,
ich habe mir auf einem ESP32 Board die Software openDTU installiert. Soweit so gut. Ich kann nun alle Daten über den MQTT Broker/Client Adapter lesen aber leider nicht schreiben...weder in dem ich direkt das jew. Objekt überschreibe, noch wenn ich über Blockly einen "SendTo" Block verwende. Ich habe schon div. Foren und Seiten durchsucht (einige haben wohl das Problem) leider gibt es aber keine wirkliche eine Lösung in genau dieser Konstallation.
Auf der GitHub Seite wird erklärt, welche Parameter gesendet werden können. Leider weiß ich nicht, wie ich diese Daten ggf. noch senden kann, als über Blockly.
Genauer gesagt geht es mir um den Parameter "[serial]/cmd/limit_persistent_relative" welchen ich über den IoBroker gerne steuern würde um die Leistung des Hoymiles zu verändern.
Leider ist es nun auch so, dass die Parameter bei mir (augenscheinlich anders heißen), als auf Github angegeben
github: [serial]/cmd/limit_persistent_relative
iobroker: OpenDTU/[serial]/status/limit_relativeHat jemand das gleiche Problem bzw. nutzt ggf. jemand die gleiche Logik/Funktion erfolgreich und kann mir sagen, was ich falsche mache?
Danke vorab für Eure Hilfe
Timo
@dpo99 Hallo Timo,
jetzt steh ich noch wie der Ochs vor Berg, ich habe bisher nur den cmd Ordner angelegt
Kannst du mir weiterhelfen wie ich am besten die Limitbefehle erstelle.
Ich möchte zB. um 19:00 Uhr auf 20% runter und morgens ab 07:00 wieder auf 100% rauf.
Danke fürs helfen.
Reiner -
@dpo99 Hallo Timo,
jetzt steh ich noch wie der Ochs vor Berg, ich habe bisher nur den cmd Ordner angelegt
Kannst du mir weiterhelfen wie ich am besten die Limitbefehle erstelle.
Ich möchte zB. um 19:00 Uhr auf 20% runter und morgens ab 07:00 wieder auf 100% rauf.
Danke fürs helfen.
ReinerDie CMD Befehle müssen auch noch jew. einzeln angelegt werden. Das geht entweder darüber, dass du diese eben händisch anlegst oder du kannst auch z.B. die Software MQTT-Explorer nutzen und dann dort einmal jeden gewünschten Status (gem. OpenDTU MQTT Topics Tabelle) publishen.

Den OpenDTU Adpater kann ich Dir auch empfehlen. Dort ist der Vorteil, dass alle Objekte/Variablen automatisch angelegt werden und man diese dann direkt in ein z.B. Blockly Skript einbinden kann. Schau Dir den auch einfach mal Testweise an: https://github.com/o0shojo0o/ioBroker.opendtu
Wie man einen Adapter aus Github installiert ist hier erklärt.
-
Die CMD Befehle müssen auch noch jew. einzeln angelegt werden. Das geht entweder darüber, dass du diese eben händisch anlegst oder du kannst auch z.B. die Software MQTT-Explorer nutzen und dann dort einmal jeden gewünschten Status (gem. OpenDTU MQTT Topics Tabelle) publishen.

Den OpenDTU Adpater kann ich Dir auch empfehlen. Dort ist der Vorteil, dass alle Objekte/Variablen automatisch angelegt werden und man diese dann direkt in ein z.B. Blockly Skript einbinden kann. Schau Dir den auch einfach mal Testweise an: https://github.com/o0shojo0o/ioBroker.opendtu
Wie man einen Adapter aus Github installiert ist hier erklärt.
@dpo99 danke für die Erklärungen, ich habe jetzt manuell die Punkte hinzugefügt und auch noch den Adapter dazu installiert.
Allerdings brauche ich nochmals Unterstützung, da ich noch keinen
Limitbefehl abgesetzt habe. Wie machst du das, bitte dein Beispiel. DAnke

-
@dpo99 danke für die Erklärungen, ich habe jetzt manuell die Punkte hinzugefügt und auch noch den Adapter dazu installiert.
Allerdings brauche ich nochmals Unterstützung, da ich noch keinen
Limitbefehl abgesetzt habe. Wie machst du das, bitte dein Beispiel. DAnke

@schneire Du kannst jetzt einfach auf die jew. Zahl (0 z.B.) klicken und dann einen Wert eintragen. Dieser sollte dann an OpenDTU übermittelt werden. Vorher natürlich den Wechselrichter noch einschalten =)
Und bitte überprüfe nochmals die Topics. Power Off und Power On gibt es so in MQTT nicht, das macht nur der OpenDTU Adapter so. Restart (und auch alle anderen Topics die schreibbar sind) ist kein boolean (true/false) sondern eine zahl (0/1). Alle MQTT topics findest du hier.

Hier wäre dann z.b. ein ganz ganz einfaches Blockly skript, welches jeden Tag um 18h eine Leistung von 600w an den WR senden.

-
@dpo99 Per blockly bekomme ich zeitgesteuert zwar ROT was reingeschrieben aber es geht nicht an den Status weiter! Mache ich das händisch über WERT wird es ebenfalls nicht übernommen. Wo liegt denn da mein Konstruktions- Fehler? :confused:

-
@dpo99 Per blockly bekomme ich zeitgesteuert zwar ROT was reingeschrieben aber es geht nicht an den Status weiter! Mache ich das händisch über WERT wird es ebenfalls nicht übernommen. Wo liegt denn da mein Konstruktions- Fehler? :confused:

-
@schneire Du kannst jetzt einfach auf die jew. Zahl (0 z.B.) klicken und dann einen Wert eintragen. Dieser sollte dann an OpenDTU übermittelt werden. Vorher natürlich den Wechselrichter noch einschalten =)
Und bitte überprüfe nochmals die Topics. Power Off und Power On gibt es so in MQTT nicht, das macht nur der OpenDTU Adapter so. Restart (und auch alle anderen Topics die schreibbar sind) ist kein boolean (true/false) sondern eine zahl (0/1). Alle MQTT topics findest du hier.

Hier wäre dann z.b. ein ganz ganz einfaches Blockly skript, welches jeden Tag um 18h eine Leistung von 600w an den WR senden.

-
@dpo99 also mit den openDTU-Adapter ist mit das Limitsetzen gelungen.:smiley: Danke für deine Hinweise.
Ich habe den cmd-Zweig nochmal neu aufgebaut aber da läuft wieder nichts ...
Habt ihr dafür einen Erklärung? LG Reiner@schneire Teste bitte über den CMD zweig einmal, ob du das "persistant" limit setzen kannst bzw. auch ob an und ausschalten geht. Vorher müsstest du noch den Power Wert anlegen. Wichtig ist auch, dass die Werte nicht Bestätigt übergeben werden (Haken also NICHT setzen).

Falls das geht, kann ich dir noch ein paar Punkte/Tipps geben, wie das auch mit non_persistant klappen könnte (hier gibt es ein paar Grundlegend Unterschiede in den Befehlen).
Ansonsten könntest du für das steuern natürlich auch den OpenDTU Adpater verwenden.
-
Moin,
ich hab den DP(OpenDTU-Bxxxxx/000000000000/cmd/limit_nonpersistent_relative 50) über MQTTExplorer publisht. 50% wurden in OpenDTU und auf im ioBroker-DB übernommen.
Wenn ich den DP(hat das Attribut "write": true,) im iobroker auf einen neuen Wert setze wir der Wert nicht von openDTU->bzw. Wechselrichter übernommen. Mit und ohne "Bestätigt"-Häkchen probiert.
Woran könnte das liegen?
Klar kann ich den openDTU-Adapter porbieren, würde aber trotzdem gerne wissen woran es liegt.? -
Moin,
ich hab den DP(OpenDTU-Bxxxxx/000000000000/cmd/limit_nonpersistent_relative 50) über MQTTExplorer publisht. 50% wurden in OpenDTU und auf im ioBroker-DB übernommen.
Wenn ich den DP(hat das Attribut "write": true,) im iobroker auf einen neuen Wert setze wir der Wert nicht von openDTU->bzw. Wechselrichter übernommen. Mit und ohne "Bestätigt"-Häkchen probiert.
Woran könnte das liegen?
Klar kann ich den openDTU-Adapter porbieren, würde aber trotzdem gerne wissen woran es liegt.?@schneire "habe den cmd- Zweig noch mal neu aufgebaut". Der sollte sich doch bei Verwendung des Adapters von selbst neu aufbauen? Version 0.1.7 verwende ich. Hat bei mir geklappt. Wenn Benutzer und Passwort stimmt, muß das funktionieren. In "Objekte" trage ich einen Wert ein und drücke auf das blaue Feld setzen. Mehr nicht.
-
@schneire "habe den cmd- Zweig noch mal neu aufgebaut". Der sollte sich doch bei Verwendung des Adapters von selbst neu aufbauen? Version 0.1.7 verwende ich. Hat bei mir geklappt. Wenn Benutzer und Passwort stimmt, muß das funktionieren. In "Objekte" trage ich einen Wert ein und drücke auf das blaue Feld setzen. Mehr nicht.
-
@mickym Tausend Dank für den Ansatz. Genau das hat mir gefehlt. Genau diese Logik hatte sich mir nicht ergeben...bisher konnte ich immer alles über den Weg steuern über den es auch reingekommen ist.
Ich weiß nicht ob es einen Unterschied macht, aber ich habe nebenbei noch eine Anleitung gefunden, wie diese Werte über den MQTT-Explorer veröffentlicht werden. Untern Strich ist es sicher genau das selbe wie händisch anlegen (zumindest im Ergebnis sieht es so aus). Aber auch hier hatte mich (bis zu Deiner Nachricht) eben diese Abweichung verunsichert.
Nun kann ich die Leistung des Hoymiles steuern, wenn ich einen unbestätigten Wert eingebe. Den Unterschied zwischen steuern und aktualisieren habe ich schon lernen müssen :D....
Danke nochmals!
VG
Timo@dpo99 Hi, ich bin Anfänger im Bereich MQTT und OpenDTU. Ich versuche mit NODE RED jeden Tag um 00.00 -01.15 eine Einspeisung mit Akku via HM600 zu machen. Ich möchte testen, wie ich den Wert /cmd/limit_nonpersistent_relative überschreiben kann. Für jede Hilfe bin ich dir sehr dankbar. Nochmal, ich bin kein Programmierer aber bemühe ich mich das ganze zu verstehen.
Gruss
Ed -
@dpo99 Hi, ich bin Anfänger im Bereich MQTT und OpenDTU. Ich versuche mit NODE RED jeden Tag um 00.00 -01.15 eine Einspeisung mit Akku via HM600 zu machen. Ich möchte testen, wie ich den Wert /cmd/limit_nonpersistent_relative überschreiben kann. Für jede Hilfe bin ich dir sehr dankbar. Nochmal, ich bin kein Programmierer aber bemühe ich mich das ganze zu verstehen.
Gruss
Ed@ed-fischer was nutzt Du denn als mqtt Broker? Wenn du den Adapter als Broker nutzt, hast du Einträge im log? Welche nodes nutzt Du denn?
-
@ed-fischer was nutzt Du denn als mqtt Broker? Wenn du den Adapter als Broker nutzt, hast du Einträge im log? Welche nodes nutzt Du denn?
@mickym Servus, ich benutze Home Assistant. Als Add-Ons habe ich Mosquitto und Node-Red.
Entschuldigung wegen meines fehlenden Knowhows.Export von Node-Red:
[{"id":"f270af8063daa8ba","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"fd0281821d60a8bf","type":"debug","z":"f270af8063daa8ba","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":380,"y":220,"wires":[]},{"id":"b5af40868ab82ebc","type":"mqtt in","z":"f270af8063daa8ba","name":"Subscribe OpenDTU","topic":"cmd/limit_nonpersistent_relative","qos":"0","datatype":"auto-detect","broker":"3c02452ae7d56b46","nl":false,"rap":true,"rh":0,"inputs":0,"x":190,"y":220,"wires":[["fd0281821d60a8bf"]]},{"id":"81cd3aca1855bd7d","type":"inject","z":"f270af8063daa8ba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"11 09 * * *","once":false,"onceDelay":0.1,"topic":"cmd/limit_nonpersistent_relative","payload":"10","payloadType":"num","x":170,"y":120,"wires":[["5f706a5e20b2d481"]]},{"id":"5f706a5e20b2d481","type":"mqtt out","z":"f270af8063daa8ba","name":"Publish OpenDTU","topic":"cmd/limit_nonpersistent_relative","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3c02452ae7d56b46","x":390,"y":120,"wires":[]},{"id":"3c02452ae7d56b46","type":"mqtt-broker","name":"Mqtt OpenDTU","broker":"192.168.178.66","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]Ich verusuche zu verstehen, wie kann ich den Wert 10 (von solar/116183066760/cmd/status/limit_relative) bei DTU schreiben kann.
1000 Dank vorab.
Gruss
Ed -
@mickym Servus, ich benutze Home Assistant. Als Add-Ons habe ich Mosquitto und Node-Red.
Entschuldigung wegen meines fehlenden Knowhows.Export von Node-Red:
[{"id":"f270af8063daa8ba","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"fd0281821d60a8bf","type":"debug","z":"f270af8063daa8ba","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":380,"y":220,"wires":[]},{"id":"b5af40868ab82ebc","type":"mqtt in","z":"f270af8063daa8ba","name":"Subscribe OpenDTU","topic":"cmd/limit_nonpersistent_relative","qos":"0","datatype":"auto-detect","broker":"3c02452ae7d56b46","nl":false,"rap":true,"rh":0,"inputs":0,"x":190,"y":220,"wires":[["fd0281821d60a8bf"]]},{"id":"81cd3aca1855bd7d","type":"inject","z":"f270af8063daa8ba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"11 09 * * *","once":false,"onceDelay":0.1,"topic":"cmd/limit_nonpersistent_relative","payload":"10","payloadType":"num","x":170,"y":120,"wires":[["5f706a5e20b2d481"]]},{"id":"5f706a5e20b2d481","type":"mqtt out","z":"f270af8063daa8ba","name":"Publish OpenDTU","topic":"cmd/limit_nonpersistent_relative","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"3c02452ae7d56b46","x":390,"y":120,"wires":[]},{"id":"3c02452ae7d56b46","type":"mqtt-broker","name":"Mqtt OpenDTU","broker":"192.168.178.66","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]Ich verusuche zu verstehen, wie kann ich den Wert 10 (von solar/116183066760/cmd/status/limit_relative) bei DTU schreiben kann.
1000 Dank vorab.
Gruss
Ed@ed-fischer Mal abgesehen - dass man einen Export in CodeTags packt, wenn man den hier postet - da man den sonst oft nicht importieren kann

passt doch alles - im Prinzip.

Du musst halt nur - falls Du Dein Basetopic solar genannt hast nicht nach
cmd/status/limit_relative
publishen, sondern halt den den ganzen Pfad in das topic schreiben, also solar/116183066760/cmd/status/limit_relative
So wie ich die Github Seite aber verstehe,
musst Du nicht solar/116183066760/cmd/
/status/limit_relative als topic beschreiben, sondern ohne status also: solar/116183066760/cmd/limit_persistent_relative
Der Status ist NUR ZUM LESEN - deswegen das R, cmd ist zum schreiben deshalb W
-
@ed-fischer Mal abgesehen - dass man einen Export in CodeTags packt, wenn man den hier postet - da man den sonst oft nicht importieren kann

passt doch alles - im Prinzip.

Du musst halt nur - falls Du Dein Basetopic solar genannt hast nicht nach
cmd/status/limit_relative
publishen, sondern halt den den ganzen Pfad in das topic schreiben, also solar/116183066760/cmd/status/limit_relative
So wie ich die Github Seite aber verstehe,
musst Du nicht solar/116183066760/cmd/
/status/limit_relative als topic beschreiben, sondern ohne status also: solar/116183066760/cmd/limit_persistent_relative
Der Status ist NUR ZUM LESEN - deswegen das R, cmd ist zum schreiben deshalb W
@mickym Wow, Es funz. 1000 Dank. :pray: :pray: :pray:
Ich spiele jetzt noch damit weiter.
DANKE!!!!Gruss
Ed -
@mickym Wow, Es funz. 1000 Dank. :pray: :pray: :pray:
Ich spiele jetzt noch damit weiter.
DANKE!!!!Gruss
Ed@mickym ich habe diesen Datenpunkt angelegt (mehr brauche ich erst mal nicht):

Darin steht das:
{ "common": { "name": "limit_nonpersistent_absolute\"", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "_id": "mqtt.3.cmd.limit_nonpersistent_absolute", "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.1", "user": "system.user.admin", "ts": 1724690709025 }Ich kann den Wert beschreiben, ohne "bestätigt" den Wert setzen. Die Zahl wird grün, dann wieder rot. Es tut sich aber nichts im Umrichter.
Ich kann allerdings erst morgen weiter daran arbeiten.
-
@mickym ich habe diesen Datenpunkt angelegt (mehr brauche ich erst mal nicht):

Darin steht das:
{ "common": { "name": "limit_nonpersistent_absolute\"", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "_id": "mqtt.3.cmd.limit_nonpersistent_absolute", "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.1", "user": "system.user.admin", "ts": 1724690709025 }Ich kann den Wert beschreiben, ohne "bestätigt" den Wert setzen. Die Zahl wird grün, dann wieder rot. Es tut sich aber nichts im Umrichter.
Ich kann allerdings erst morgen weiter daran arbeiten.
@laser Also ich bin mit diesem openDTU ja nicht wirklich vertraut, sondern hab das ja nur aus der Github Beschreibung damals irgendwo rausgezogen.
solar/116183066760/cmd/status/limit_relativeWenn sich nichts tut, dann hört Dein Gerät nicht auf dieses topic (datenpunkt). Den Datenpunkt den Du angelegt hast, würde bedeuten, dass Dein Gerät auf das topic
cmd/limit_nonpersistent_absolutehören würde - und ich glaube das ist viel zu unspezifisch. Da fehlt noch irgendwas vorne dran.
Wenn sich Dein Gerät meldet oder wie unten in dem Thread

ist dieser ganze cmd Ast ja viel tiefer angelegt.
-
@laser Also ich bin mit diesem openDTU ja nicht wirklich vertraut, sondern hab das ja nur aus der Github Beschreibung damals irgendwo rausgezogen.
solar/116183066760/cmd/status/limit_relativeWenn sich nichts tut, dann hört Dein Gerät nicht auf dieses topic (datenpunkt). Den Datenpunkt den Du angelegt hast, würde bedeuten, dass Dein Gerät auf das topic
cmd/limit_nonpersistent_absolutehören würde - und ich glaube das ist viel zu unspezifisch. Da fehlt noch irgendwas vorne dran.
Wenn sich Dein Gerät meldet oder wie unten in dem Thread

ist dieser ganze cmd Ast ja viel tiefer angelegt.
@mickym Danke, da ich den Inverter über Nacht brauche, werde ich erst mal mit dem openDTU-Adapter weitersteuern. Der funktioniert aber nicht zuverlässig. Deshalb will ich versuchen, den Sollwert über mqtt zu senden.
Der cmd Ast ist an der falschen Position? Muß ich korrigieren.
-
@mickym Danke, da ich den Inverter über Nacht brauche, werde ich erst mal mit dem openDTU-Adapter weitersteuern. Der funktioniert aber nicht zuverlässig. Deshalb will ich versuchen, den Sollwert über mqtt zu senden.
Der cmd Ast ist an der falschen Position? Muß ich korrigieren.
@laser sagte in openDTU per MQTT auslesen und steuern:
Der cmd Ast ist an der falschen Position? Muß ich korrigieren.
Ja

schau mal Du musst irgendwo den ganzen cmd Ast da anlegen, wo parallel auch status etc. steht. Also wahrscheinlich unter
solar/..../Die gesamte Dokumentation ist ja inzwischen wohl hier hin gewandert: https://www.opendtu.solar/firmware/mqtt_topics/#dc-input-channel-topics

Wie Du daraus ersehen kannst, muss das cmd topic auf der gleichen Ebene wie das status topic liegen.