question

Joe avatar image
Joe asked

Keepalive via Node-Red an die Venus senden für NSM Einbindung via MQTT

Hi,

ich wurde gebeten, meine Frage im deutschen Bereich nochmals zu stellen, here we go:

Mein Netzbetreiber fordert eine Einbindung meiner Erzeugungsanlage in das Netzssicherheitsmanagement. Mit einem ESP32 lese ich bereits erfolgreich den Relaiszustand "NSM" aus.

Wenn das Relais abfällt, möchte ich per MQTT die Netzeinspeisung auf "NULL" setzen, wenn es wieder anzieht wird wieder eingespeist.

Dazu wäre es sehr hilfreich, den Keepalive aus Node-Red alle 60 Sekunden an die Venus zu senden. Mit dem MQTT-Explorer klappt das, aber aus Node-Red nicht. Vermutlich sendet Node-Red kein JSON und damit kenne ich mich auch nicht aus. (ggfs. will ich es in FHEM umsetzen und das komplette Reading killt mir FHEM, weil zu viele Daten!

Alle Datenformate (String, JSON), mit geschwungener Klammer, mit und ohne Payload, etc. funktionieren nicht.


Screenshot des Versuchs mit Node-Red:1679072902506.png

In MQTT Explorer sende ich:

1679073826028.png


und erhalte das gewünschte Ergebnis:


1679073695623.png



Screenshot MQTT Explorer, um z.B. die Einspeiseleistung auf Null zu setzen:

1679073303928.png


1679073367640.png


...auch das bekomme ich aus Node-Red nicht hin bisher.


Venus OSNode-REDMQTT
1679072902506.png (89.6 KiB)
1679073303928.png (61.2 KiB)
1679073367640.png (81.6 KiB)
1679073695623.png (132.7 KiB)
1679073826028.png (31.7 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

11 Answers
hominidae avatar image
hominidae answered ·

In dem mqtt-Explorer Screenshot sieht man aber alle Topics, nicht nur die unterhalb "settings".

Wenn Du das so für Node-Red willst, lass die payload im Node-Red einfach komplett leer.

2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Joe avatar image Joe commented ·
selbst mit der leeren Payload klappt es nicht. Korrekt, man sieht alle Topics, aber alle Anderen haben "0" Topics. Mir läuft sonst der FHEM Server so voll, dass der Raspi nicht mehr reagiert. Daher der Versuch, den Load zu reduzieren.
0 Likes 0 ·
Show more comments
steffen-graap avatar image
steffen-graap answered ·

Du solltest Versuchen, nicht mittels der injection-Node das Signal zu senden, sondern mittel Injection-Node ein MQQT-Out zu senden und darin dann die Nachricht.
broadcast-active.png

inhalt-mqqt-out.png


2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

hominidae avatar image hominidae commented ·
wenn man das topic im mqtt-out node nicht fest konfiguriert, nimmt der Node das topic aus der Message (msg.topic) und published dern Wert aus mssg.payload unter diesem topic.
0 Likes 0 ·
Joe avatar image Joe commented ·
hmm...damit klappt es leider auch noch nicht, aber ich verstehe den Ansatz
0 Likes 0 ·
hominidae avatar image
hominidae answered ·

...probier es mal damit....setze nicht msg.payload, sondern msg.payload.value (natürlich auch das topic richtig anpassen):

1679135324235.png


1679135324235.png (16.7 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

becker avatar image
becker answered ·

Wenn das Relais abfällt, möchte ich per MQTT die Netzeinspeisung auf "NULL" setzen, wenn es wieder anzieht wird wieder eingespeist.

Woher kommt die Info von dem Relais ?

Warum nutzt du nicht die vorhandenen Victron Nodes?

Hier mein Victron Dashboard:

1679166531929.png

Da könnte ich "max. Entladeleistung" nutzen oder direkt "Ausschalten".

Darf denn geladen werden, falls das Relais auslöst ?

edit: jetzt habe ich es verstanden: du hast im Gegensatz zu mir noch PV am MP hängen.

Dafür gibt es aber auch einen Victron-Node, den du nutzen kannst.


Wenn du {value:0} senden willst, dann musst du das auch senden:

1679166828528.png

1679166933495.png


edit: mit den "settings" habe ich immer noch nicht verstanden



1679166531929.png (85.1 KiB)
1679166828528.png (11.7 KiB)
1679166933495.png (20.1 KiB)
1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

hominidae avatar image hominidae commented ·

...das mit den "setttings" kommt aus der victron dbus doku zu mqtt...man kann damit begrenzen, welche topics regelmässig im Broker des GX/VenusOS gepublished werden .. ein mqtt client sieht dann nur diese, selbst wenn der /# suscribed.

-> https://github.com/victronenergy/dbus-mqtt

0 Likes 0 ·
Joe avatar image
Joe answered ·

Interessanter Ansatz, da muss ich mich mal reinfuchsen in das Dashboard!

Es geht darum: Ich betreibe einen FHEM Server, dort habe ich den Status des Relais über MQTT und dort kann ich mit "DOIF" Aktionen tätigen (in Klarsprache in etwa: DOIF Relais = ON set FeedIn :-1 DOELSEIF Relais = OFF set FeedIn : 0)

Ich hab den Relaisstatus auch bereits in Node-Red:

1679171667281.png


Um in FHEM weiter zu kommen, benötige ich das Reading von Victron. Mit Keapalive bekomme ich Venus gesprächig, aber wenn da jede Minute 1000 Readings gesendet werden, fährt mir aus Performancegründen der FHEM-Server gegen die Wand.


Mit Keepalive --> ["settings/#"] kann man den Datenverkehr auf nur "settings" eingrenzen - das wiederum führt dazu, dass FHEM weiter funktioniert.


Wenn's einen Weg direkt in Node-Red gibt für mein Vorhaben, würd's mich freuen, ich kapier es nur noch nicht. :o


Die Victron-Nodes hab ich gesehen, aber kapiere nicht, wie ich einen Wert "ändere"?

Mit einem Inject hab ich schon probiert, aber ohne Erfolgt.


1679172117452.png

Also nochmall l


1679171667281.png (34.6 KiB)
1679172117452.png (89.9 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

hominidae avatar image
hominidae answered ·

Hast Du nen eigenen mqtt Broker auf dem FEHM? Wieso machst Du keine mqtt Bridge zum GX und stellst diese so ein, dass nur der Teilbaum gebridged wird (im GX dann einfach alles "freischalten").

Ich verstehe noch nicht, warum das keepalive bei Dir nicht funktioniert...am JSON Format im NodeRed liegt es mMn nicht.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Joe avatar image
Joe answered ·

Ja, ich habe Victron auf FHEM nach der Anleitung eingebunden: https://wiki.fhem.de/wiki/Victron


...aber das mit der Brücke hab ich noch nicht ganz verstanden. Readings löschen und auf das reduzieren, was mich interessiert war nicht die Lösung.

4 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

netrange avatar image netrange commented ·
Sitze gerade lachend auf der Couch :) :) :) Ich höre euch zwar reden ... verstehe aber kein Wort :O :O :O
1 Like 1 ·
hominidae avatar image hominidae netrange commented ·
ja, sieht so aus, als ob hier alle aneinander vorbei reden. Das Thema keepalive ist für die Verbindung zu einem Gerät mit venusOS...mit FHEM hat das nix zu tun.

Wenn FHEM eine Integration hat, wozu noch NodeRed?


0 Likes 0 ·
Joe avatar image Joe hominidae commented ·
Moin! Weil ich in FHEM die Daten ohne Keepalive nicht "upgedated" bekomme in FHEM. Die Readings heute früh sind alle von gestern. (ich hab noch andere Anwendungsfälle, bei denen ich mehr oder minder aktuelle Daten benötige)
0 Likes 0 ·
Joe avatar image Joe netrange commented ·
..ich auch nicht.


Spaß beiseite. Ja, es ist etwas kompliziert für einen DAU wie mich ;) ...sonst müsste ich ja auch nicht so deppade Fragen stellen.

Ein "Gespräch" mit einem MQTT-Wissenden würde die Sache vermutlich maximal abkürzen, nur kenne ich keinen.

0 Likes 0 ·
Joe avatar image
Joe answered ·

Im originalen, Englischen Beitrag wurde die Lösung gefunden:

https://community.victronenergy.com/questions/193342/index.html

- Payload als JSON im Inject senden

- Topic im MQTT-Out senden

Ergebnis: Keepalive-Request kann mit Node-Red periodisch gesendet und auf die Readings eingeschränkt werden, die interessant sind.

Jetzt kommen die nächsten Fragen auf. Wie sende ich, abhängig von einem MQTT-Wert einen Publish mit dynamischem Inhalt. Evtl. schaffe ich das in FHEM

DANKE Euch allen für Eure Unterstützung!


3 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

hominidae avatar image hominidae commented ·

indem Du eine Nachricht an den mqqt-out node sendest.

Mit:

  • msg.topic: das mqtt-topic
  • msg.payload: der (dynamische) Wert

...das topic muss nicht fix im mqqt-out node konfiguriert werden...lass es leer und Du kannst es über msg.topic festlegen.

Lies Dir die Hilfe zum Node in Node-Red durch...da steht es genau drin.


0 Likes 0 ·
Joe avatar image Joe hominidae commented ·
genau das hatte leider nicht funktioniert. Ich hab den ausgehenden Verkehr gesehen, aber es kam so nichts zurück von der Venus. Das Aufteilen auf Inject (payload) und MQTT-Out (Topic) war bei mir die Lösung.
0 Likes 0 ·
hominidae avatar image hominidae Joe commented ·
dann liegt der Fehler bei Dir da woanders...das funktioniert...wirklich.
0 Likes 0 ·
Joe avatar image
Joe answered ·

It's progressing!
Jetzt gibt's aber noch ein weiteres Problem, bei dem ich hoffe, von einem Wissenden Unterstützung zu bekommen:


MQTT-Device tasmota : liefert Status ON/OFF

Diesen Status kann ich über einen Switch weiterbearbeiten, so weit so gut.


Problem: Welchen Node nehme ich, um auf ein ANDERES MQTT-Device zu schreiben? Da ich den Wert vorne vom "Tasmota-Device" hole, werden die Topics/Payloads auch an dieses Device zurück geschrieben.

Was fehlt mir, um "If POWER = ON, set Maximum System Grid: {"-1"}", bzw. "If POWER = Off, Disable Feed-In, alternativ set Maximum System Grid: {"0"} zurück an das MQTT-Device "venus", bzw. einen Victron-Node statt an tasmota zu schreiben?

Mit den vorgegebenen Victron-Nodes muss ich wenn ich richtig verstehe einen Status "0" oder "1" senden, also true oder false, aber mir fehlt der Zwischenschritt, wie ich Power ON = 1 und Power OFF = 2 sende.


1679393208237.png




1679393208237.png (89.4 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

hominidae avatar image
hominidae answered ·

...für MQTT nimmst Du einen MQTT-Out Node.

In dessen Konfiguration kannst/musst Du den anderen/passenden MQTT-Broker (IP-Adresse, Port, User Login/pwd, ...) konfigurieren/auswählen und dann natürlich das Ziel-topic.

Bei VenusOS musst Du das Topic zum publishen mit dem "W" topic-Pfad nutzen, aber das weisst Du ja schon.

Wie schonmal gesagt, das topic als msg.topic kann den Mqtt-Out node generischer einsetzbar machen, weil man das nicht im NR-Dialog fest hinterlegen muss...allein der Ziel-Broker bleibt statisch konfiguriert.

Hier ml ein Ausschnitt aus einem meiner Flows, der einzelne Topics von einem Broker abgreift, bearbeitet und diese über einen MQTT-Out Node an einen anderen Broker sendet.

1679396043000.png

Denke damit ist das Prinzip klar.


1679396043000.png (108.9 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Joe avatar image
Joe answered ·

Yippieeh! Deine Ausführungen haben mich auf die richtige Fährte gebracht, danke!!!

Nach Wochen des probierens, ESP32 bestellen, lauffähig machen, Node-Red und MQTT "erste Schritte" funktioniert meine "NSM-Einbindung" nun endlich!

Ich habe das NSM jetzt direkt in Node-Red umgesetzt, nicht in FHEM (weil ich's in Node-Red zuerst hinbekommen habe ;)

Lösung:

Netzbetreiber-Relais ON = keine Einspeisebegrenzung

Netzbetreiber-Relais OFF = Einspeisebegrenzung aktiv


1679403502780.png

1679403610049.png

1679403905407.png


Nächste Herausforderung:

- Einbindung eines weiteren Mikro-WR ins NSM entweder über Shelly oder Ahoy-DTU

- Reboot der Venus bei "Error-Code" 67 (Connection to BMS lost)


1679403502780.png (59.3 KiB)
1679403610049.png (68.4 KiB)
1679403905407.png (88.0 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.