Verbindung HA zu AHOY-DTU über MQTT (senden) funktioniert nicht

Hallo,

ich habe eine AHOY-DTU eingerichtet und empfange auch die Daten vom Wechselrichter in HA.

Jetzt wollte ich eine Nulleinspeisung mit Node-Red wie in diesem Beitrag ausprobieren:

Ich habe den Flow auf meine Daten angepaßt, aber in der DTU kommt nichts an.

Im MQTT-Explorer sehe ich aber die Werte, die übertragen werden sollen, also der Flow funktioniert anscheinend soweit.

Ich habe in der MQTT-Out-Node bei den Eigenschaften unter
Server die IP-Adresse des HA-Servers eingetragen, bei Port 1883.

Bei Topic habe ich ahoy/“Seriennummer”/cmd/limit_nonpersistent_absolute eingetragen.
Bei QoS und Retain ist nichts eingetragen.
Der Name ist ja egal, das ist ja nur die Bezeichnung des Nodes, oder?

Wenn ich bei Server auf das Stift-Symbol klicke, steht bei Verbindung unter Server wieder die HA-IP-Adresse und dann

grafik

Bei Sicherheit stehen Name und Paßwort aus Mosquitto.

Unter dem Reiter Nachrichten ist nichts eingetragen.

Wo kann denn hier der Fehler liegen? Die Werte sind im MQTT-Broker zu sehen und die Verbindung zur DTU ist auch vorhanden, aber es funktioniert anscheinend nur die Empfangsrichtung.

Danke und LG

Pit

ja ist nur der Name der Node.

Den Rest habe ich genau so in NodeRED eingestellt für MQTT.
Hab den Thread grad mal schnell überflogen und mir fällt kein Fehler auf.

LG
Tobi

Danke, kann man den Befehl zum Testen noch irgendwie anders an die DTU schicken, z.B. aus dem MQTT Explorer oder Mosquitto? Was müßte ich denn da ggfs. wo eingeben?

Ich habe mal ein paar Zeilen aus dem Log der DTU kopiert, während der Flow lief, vielleicht kann man da auch was draus erkennen:

14:44:41 I: (#0) nothing received
14:44:43 I: MQTT disconnected, reason: TCP disconnect
14:44:44 I: MQTT connected
14:44:46 I: resetPayload: id: 0
14:44:46 I: (#0) enqueCommand: 0x0b
14:44:46 I: (#0) prepareDevInformCmd 0x0b
14:44:46 I: TX 27B Ch61 | 15 83 72 70 40 83 55 76 42 80 0b 00 64 6c b5 3e 00 00 00 25 00 00 00 00 75 53 3d
14:44:46 I: (#0) nothing received
14:44:51 I: resetPayload: id: 0
14:44:51 I: (#0) enqueCommand: 0x0b
14:44:51 I: (#0) prepareDevInformCmd 0x0b
14:44:51 I: TX 27B Ch75 | 15 83 72 70 40 83 55 76 42 80 0b 00 64 6c b5 43 00 00 00 25 00 00 00 00 27 6e 2f
14:44:51 I: (#0) nothing received
14:44:56 I: resetPayload: id: 0
14:44:56 I: (#0) enqueCommand: 0x0b
14:44:56 I: (#0) prepareDevInformCmd 0x0b
14:44:56 I: TX 27B Ch3 | 15 83 72 70 40 83 55 76 42 80 0b 00 64 6c b5 48 00 00 00 25 00 00 00 00 17 1d 67
14:44:56 I: procPyld: cmd: 0x0b
14:44:56 I: procPyld: txid: 0x95
14:45:01 I: resetPayload: id: 0
14:45:01 I: (#0) enqueCommand: 0x0b
14:45:01 I: (#0) prepareDevInformCmd 0x0b
14:45:01 I: TX 27B Ch23 | 15 83 72 70 40 83 55 76 42 80 0b 00 64 6c b5 4d 00 00 00 25 00 00 00 00 47 22 0d
14:45:01 W: (#0) Frame 1 missing: Request Retransmit
14:45:01 I: TX 11B Ch40 | 15 83 72 70 40 83 55 76 42 81 b7
14:45:01 W: (#0) Frame 1 missing: Request Retransmit
14:45:01 I: TX 11B Ch61 | 15 83 72 70 40 83 55 76 42 81 b7
14:45:02 I: procPyld: cmd: 0x0b
14:45:02 I: procPyld: txid: 0x95
14:45:06 I: resetPayload: id: 0
14:45:06 I: (#0) enqueCommand: 0x0b
14:45:06 I: (#0) prepareDevInformCmd 0x0b
14:45:06 I: TX 27B Ch75 | 15 83 72 70 40 83 55 76 42 80 0b 00 64 6c b5 52 00 00 00 25 00 00 00 00 77 ae ae
14:45:06 I: procPyld: cmd: 0x0b
14:45:06 I: procPyld: txid: 0x95

Danke und LG
Pit

Moin Pit,
so ganz schlau werde ich aus deinem Beitrag hier und auch im Thread “Nulleinspeisung PV mit Node-Red” nicht. Stell doch bitte deinen Flow mal ein, dann können wir uns evtl. eher ein Bild machen was da möglicherweise im Argen liegt.
LL

Hallo LL,

das ist der Flow:

[{"id":"2d618e1e82622bf8","type":"tab","label":"Hoymiles Nulleinspeisung","disabled":true,"info":"","env":[]},{"id":"869abbea7ca1f164","type":"inject","z":"2d618e1e82622bf8","name":"alle 10 sekunden","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":false,"onceDelay":"1","topic":"","payload":"","payloadType":"date","x":130,"y":160,"wires":[["290373d06b2aea63"]]},{"id":"2e742099e719a18c","type":"function","z":"2d618e1e82622bf8","name":"Berechnung für WR Limit","func":"// MAX generation of the inverter Watts\nvar minPower = 10; // >0 bewirkt ein nicht komplett herunterfahren des WR, d.H. er startet schneller\nvar maxPower = 275;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower = msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power < 0) power = 1;\n\n// store current powerlimit and update message\ncontext.set('power', power);\npower = power + \"W\";\nmsg.payload = power;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":240,"wires":[["7485749618e3ff1d","688985e461715ba2"]]},{"id":"290373d06b2aea63","type":"api-current-state","z":"2d618e1e82622bf8","name":"Leistung alle Phasen","server":"864f5cad6b0c1ce0","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.total_power","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":400,"y":160,"wires":[["2e742099e719a18c"]]},{"id":"7485749618e3ff1d","type":"debug","z":"2d618e1e82622bf8","name":"Berechnung","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":930,"y":280,"wires":[]},{"id":"0a415c7da63b5e87","type":"inject","z":"2d618e1e82622bf8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"100","payloadType":"num","x":590,"y":360,"wires":[["2e742099e719a18c"]]},{"id":"c4aa1ee0f517e1b1","type":"inject","z":"2d618e1e82622bf8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"-1","payloadType":"num","x":590,"y":420,"wires":[["2e742099e719a18c"]]},{"id":"688985e461715ba2","type":"mqtt out","z":"2d618e1e82622bf8","name":"WR MQTT","topic":"ahoy/114112345040/cmd/limit_nonpersistent_absolute","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"6c7f0a063f599f41","x":830,"y":140,"wires":[]},{"id":"864f5cad6b0c1ce0","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"5","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m","enableGlobalContextStore":false},{"id":"6c7f0a063f599f41","type":"mqtt-broker","name":"","broker":"192.168.1.151","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"true","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

Es ist im Grunde der gleiche Flow wie in dem Thread “Nulleinspeisung PV mit Node-Red”, nur individualisiert.

Ich glaube aber nicht, daß der Flow das Problem ist, die Werte aus dem Flow kommen ja im MQTT-Explorer an (ich habe über Inject-Nodes im Flow einfach ein paar Werte eingegeben).:

Und im MQTT-Explorer sehe ich auch die ganzen Daten, die über die DTU vom Wechselrichter kommen

Irgendwas stimmt aber aus meiner Sicht mit dem Senden der Daten von HA an die DTU nicht. Ich kenne mich damit aber nicht aus, ich komme nicht dahinter, wo der Fehler liegen könnte.

Manchmal sehe ich auch in Beiträgen, daß in der Befehlszeile z. B.

".... AHOY-DTU/ctrl/limit_nonpersistent_relative..."

steht und manchmal 

".... AHOY-DTU/cmd/limit_nonpersistent_relative..."

Ist es egal, ob man cmd oder ctrl nimmt?

Ich benutze übrigens die Version 0.6.0 der Ahoy DTU, mit der neuesten Version 0.6.9 habe ich nur Probleme.

LG Pit

Die Version 0.6.9 macht bei mir auch Probleme daher nutze ich ebenfalls die 0.6.0.
Die Befehlszeile zum Senden des Power Limits über MQTT bei der Ahoy DTU lautet:
inverter/ctrl/limit/0
wobei “inverter” deinem im Setup festgelegtem Topic entsprechen muss.

LL

Super, vielen Dank, jetzt funktioniert es, wenn ich diese Zeile in die MQTT-Out-Node eintrage.

Aber wo kann ich denn jetzt festlegen, daß das Limit “nonpersistent” sein soll, ein “persistent”-Limit soll man ja nicht ständig ändern?

Wenn ich die Zeile in “ahoy/ctrl/limit_nonpersistent_absolute/0” ändere, kommen wieder keine Daten an.

Ich habe jetzt unter

https://github.com/lumapu/ahoy/blob/main/User_Manual.md

gesehen, daß man den persistent-Befehl wohl standardmäßig entfernt hat:

" Power Limit persistent

This feature was removed. The persisten limit should not be modified cyclic by a script because of potential wearout of the flash inside the inverter."

Der Befehl inverter/ctrl/limit/0 setzt also immer nur ein non-persistent-Limit, ist das korrekt?

Wenn ja, war das auch bei der Version 0.6.0 schon so, die wir nutzen?

Wenn ich den Inverter gerade für eine Nachteinspeisung nutzen will, darf ich in den DTU-Settings bei Sunrise & Sunset den Haken bei “Pause polling inverters during night” nicht setzen, sonst bekommt er ja gerade zur Nachtzeit keine Daten, oder?

LG Pit

Genau so ist es.
Ich weiß nicht ab welcher Version dieser unsinnige “Power Limit persistent” Befehl raus genommen wurde aber wenn er in der 0.6.0 noch implementiert wäre würde deine Befehlszeile:
“ahoy/ctrl/limit_nonpersistent_absolute/0”
noch funktionieren :grinning:
LL

Ok, das macht Sinn.

Dann nochmal vielen Dank.

Ich verstehe nur nicht, warum es bei dem Flow aus dem anderen Beitrag mit dieser anderen Befehlszeile

ahoy/114112345040/cmd/limit_nonpersistent_absolute

anscheinend funktioniert hat.

Wenn ich jetzt einen weiteren Inverter in die Ahoy-DTU eintrage, den ich regeln will, muß ich für diesen

inverter/ctrl/limit/1

eintragen, oder?

LG Pit

Anscheinend hast du Größeres vor :wink:
Wenn du einen weiteren Inverter hinzufügen willst musst du ihm in jedem Fall einen neuen Namen (Topic) geben. Des weiteren musst du wahrscheinlich (ich habe das noch nicht ausprobiert) für beide anstatt der 0 die InverterID einsetzen denn die Befehlszeile lautet ja nach Vorgabe:
<TOPIC>/ctrl/limit/<INVERTER_ID>
LL

Naja, wie man es nimmt, ich brauche ja für eine Nachteinspeisung nur einen HM-300.

Wenn man in der DTU unter Settings - Inverters auf Add Inverter klickt, kann man aber kein anderes Topic vergeben, nur den Namen und die Seriennummer.

Der erste Inverter hat ja die übergeordnet die Nummer 0, der zweite die 1 usw.

Oder muß mann sich dann eine zweite DTU bauen, denn in der DTU kann man ja immer nur ein Topic vergeben?

Wenn ich in der Zeile <TOPIC>/ctrl/limit/<INVERTER_ID> jetzt die Seriennummer des einen Inverters eingebe, kommt wieder nichts in der DTU an, es funktioniert nur mit der 0.

LG Pit

Also willst du dir noch einen Speicher beschaffen und diesen über den HM-300 ans Netz bringen?
Ich habe nochmal nachgeschaut, die InverterID ist nicht die Seriennummer des Wechselrichters sondern wohl eine Art laufende Nummer. Somit wäre deine Annahme dass der nächste Eintrag die 1 bekommt und entsprechend angesteuert werden muss richtig. Daher brauchst du auch keine neue DTU sondern kannst, wenn ich das richtig gesehen habe, bis zu 10 Inverter mit einer DTU ansteuern. Ob das sinnvoll ist sei mal dahingestellt.
Kannst ja mal berichten wenn das Ganze läuft.
LL

Ok, danke, ich melde mich.

LG Pit

Hallo zusammen,
Der Beitrag ist zwar schon etwas älter, aber da ich genau auf das gleiche Problem gestoßen bin, krame ich ihn noch mal hervor. Ich habe folgende Konfiguration.

  1. Zwei HM600
  2. Ahoy DTU (FW 0.8.155) und MQTT Topic ist “Balkonsolar”
  3. Node Red mit folgenden MQTT Einstellungen zu Mosquitto:

    Hier ist alles verbunden und funktioniert in anderen Flows für andere Anwendungen auch alles reibungslos.

Ich versuche jetzt schon seit längerer Zeit, eine Null Einspeisung zu realisieren. Die Berechnung in Node Red für die Leistungsbegrenzung funktioniert auch soweit und im MQTT Explorer werden für beide Inverter die Werte entsprechend angezeigt.

Die MQTT topics sehen wie folgt aus:
Inverter Terrasse: Balkonsolar/Terrasse/ctrl/limit/0
Inverter Garten: Balkonsolar/Garten/ctrl/limit/1

Leider scheinen die Werte in der DTU selber nicht anzukommen, der Wert für RX unter System = 0

Hattest du am Ende eine funktionierende Lösung gefunden @Pit ?

Danke und LG
f