NEWS
openDTU per MQTT auslesen und steuern
-
@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_relativeDer Status ist NUR ZUM LESEN - deswegen das R, cmd ist zum schreiben deshalb W
-
@mickym Wow, Es funz. 1000 Dank.
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.
-
@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_relative
Wenn 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_absolute
hö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.
-
@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.
-
@mickym ich versuche es mal dort:
-
@laser Ne mach mal den Ordner mit der Zahl auf, ob da status topic sind.
-
@mickym ja, dort ist "status":
so? Dort wird auch richtig gelesen. -
@laser Nein auf der Ebene vom status - also den cmd Ordner direkt unter der Nummer - das ist die serial Nummer
Siehst Du ja - grün lesen (R), orange (W) schreiben.
Also cmd Ordner direkt unter dem 1121... Ordner.
Wie gesagt die topics auf die ein Gerät hört, sind in der Firmware fest definiert.
Gilt auch für den absoluten Wert:
-
@mickym cmd rutscht immer wieder nach unten. "Ordner" heißt bei mir aber "Kanal"?
Der Text "limit_..." muß natürlich absolut richtig geschrieben sein. -
@laser Ja das passt aber so. Das mit dem Kanal - das hat mit admin5 eingeführt, ist aber für mqtt Schall und Rauch und ohne Bedeutung. Müsste so funktionieren.
Ich weiss zwar nicht, ob der Name angepasst werden muss - aber im Prinzip muss dann das mqtt topic wohl
solar/112183818346/cmd/limit_nonpersistent_absolute
heißen.
Wenn du den mqtt Adapter als Broker verwendest, gibts da auch manchmal Probleme. Ich nutze immer mosquitto und den mqtt Adapter immer als Client.
-
Es tut sich einfach nichts im Umrichter- Limit. Ich benutze den mqtt Adapter.
-
Der 2. Datenpunkt ist definitiv verkehrt nur der Name des 1. Datenpunktes mal anpassen.
Normalerweise steht im Namen - das originäre Mqtt topic
Ich glaube auch in den Objektdaten unter native
{ "_id": "mqtt.1.shellies.licht.wohnzimmer.decke.light.0.command", "common": { "name": "shellies/licht/wohnzimmer/decke/light/0/command", "write": true, "read": true, "role": "variable", "desc": "mqtt client variable", "type": "string" }, "native": { "topic": "shellies/licht/wohnzimmer/decke/light/0/command" }, "type": "state", "from": "system.adapter.mqtt.1", "user": "system.user.admin", "ts": 1670870062801, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Wie gesagt, wenn Du mehr mit mqtt machen willst, empfehle ich Dir wirklich mosquitto als mqtt Broker zu nutzen, da der Adapter in meinen Augen als Broker manche Merkwürdigkeiten aufweist.
-
@mickym eigentlich wollte ich ja den openDTU- Adapter verwenden. Aber dort gibt es auch Probleme. Unter Anderem wird die openDTU vom Router nicht gefunden. Aber dann geht mqtt auch bloß nicht.
Heute packe ich das nicht mehr. Danke für die Hilfe. Evtl. löst sich über Nacht ein Knoten in mir. Ich schalte meine Akku-Entladeregelung erst mal auf den openDTU- Adapter um. -
@laser Wie gesagt, ich benutze mosquitto als Broker für die gesamte mqtt Kommunikation ist easy und den Client/Broker mqtt Adapter als Client. Das funktioniert prima und einfach.
Ich habe kein openDTU, aber Du siehst, bei mir läuft alles mqtt von tasmota, shelly, zigbee2mqtt und owntracks alles über natives mqtt.
-
@mickym "mosquitto" ist wieder ein absolutes Neuland für mich. Da muß ich mich mit beschäftigen.
-
@laser Das ist easy.
Mitsudo apt install mosquitto
installieren (wenn es ein LINUX System) ist. Und dann in der Konfigurationsdatei nur Port und ggf. ein Passwort mit User erstellen.
Ich verlinke Dir gleich noch eine Anleitung. Aber im Prinzip ist das easy und läuft immer unauffällig parallel.
-
@mickym Das läuft bei mir auf einem Raspi4. Ich werde das morgen in Angriff nehmen.
Wenn die Kiste natürlich mal abschmiert (hatte immer mal Defekte in der SSD), habe ich ein Installationsproblem von Null an anzufangen.