Victron Venus GX über MQTT auslesen

Begonnen von andremar6918, 14 Oktober 2022, 16:29:11

Vorheriges Thema - Nächstes Thema

goalv

[..]

Jetzt suche ich im Moment nur noch den passenden Eintrag um den Inverter abzuschalten. -> siehe Screenshot (ESS-Settings)

Die Leistung auf Null setzen geht ja mit
set Victron_Client publish W/--- hier Deine VRM-ID ---/settings/0/Settings/CGwacs/MaxDischargePower {\"value\":0}

hab allerdings bis jetzt nur in der Victron-Doku gesucht und gesehen, dass es per Modbus auf jeden Fall geht. Vielleicht liest ja hier Jemand mit, der es per MQTT schon umgesetzt hat ...

Liebe Grüße,
Oli
[/quote]

Wahrscheinlich hast Du schon eine Lösung gefunden. Falls nicht, versuch doch mal eine setList mit folgenden Einträgen, die den "Mode" des Multiplus setzen:

off W/<vrm_ID>/vebus/288/Mode {"value":4}
on W/<vrm_ID>/vebus/288/Mode {"value":3}
inv W/<vrm_ID>/vebus/288/Mode {"value":2}
chg W/<vrm_ID>/vebus/288/Mode {"value":1}
Mode W/<vrm_ID>/vebus/288/Mode {"value":$EVTPART1}
GridCurrentLimit W/<vrm_ID>/vebus/288/Ac/In/1/CurrentLimit {"value":$EVTPART1}
MinSOC W/<vrm_ID>/settings/0/Settings/CGwacs/BatteryLife/MinimumSocLimit {"value":$EVTPART1}
Relay0 W/<vrm_ID>/system/0/Relay/0/State:.* {"value":$EVTPART1}
Relay1 W/<vrm_ID>/system/0/Relay/1/State:.* {"value":$EVTPART1}

viel Erfolg!

kask

Hallo,
ich versuche meinen Victron auch über MQTT auszulesen. Aber ich bekomme keine values rein.

lediglich:
define MQTT2_venus MQTT2_DEVICE venus
attr MQTT2_venus readingList venus:N/xxxxxxxxxxxx/keepalive:.* { json2nameValue($EVENT, 'keepalive_', $JSONMAP) }\
venus:N/xxxxxxxxxxxx/system/0/Serial:.* { json2nameValue($EVENT, 'Serial_', $JSONMAP) }
attr MQTT2_venus room MQTT2_DEVICE,Solar,Strom
#   CFGFN     
#   CID        venus
#   DEF        venus
#   FUUID      64207dce-f33f-3c15-9af4-274984bcb22a2b57
#   IODev      venus
#   NAME       MQTT2_venus
#   NR         1681
#   STATE      ???
#   TYPE       MQTT2_DEVICE
#   eventCount 2
#   Helper:
#     DBLOG:
#       Serial_value:
#         logdb:
#           TIME       1679850958.23266
#           VALUE      xxxxxxxxxxxx
#       keepalive_value:
#         logdb:
#           TIME       1679850958.20996
#           VALUE      1
#   READINGS:
#     2023-03-26 19:15:58   IODev           venus
#     2023-03-26 19:15:58   Serial_value    xxxxxxxxxxxx
#     2023-03-26 19:15:58   keepalive_value 1
#
setstate MQTT2_venus 2023-03-26 19:15:58 IODev venus
setstate MQTT2_venus 2023-03-26 19:15:58 Serial_value xxxxxxxxxxxx
setstate MQTT2_venus 2023-03-26 19:15:58 keepalive_value 1


xxxxxxxxxxxx ist gleich der ID. Keine Ahnung ob man diese publishe sollte/kann.

Habe mich an https://wiki.fhem.de/wiki/Victron gehalten und auch das hier gepostet umzusetzen/testen.
Aber irgend etwas schein ich nicht gemacht zu haben.

Kann einer mal "eben" alle seine benötigten raw definitions posten das ich vergleichen kann.

Schlafsack

Hallo kask,

bei mir schicke ich den Keepalive jede Minute mit der SerialNumber
Wenn du auf Nummer sicher gehen willst, schicke ihn aller 50s

Keepalive
defmod keepalive DOIF {\
  [+:01];;\
    {fhem("set CerboClient publish R/xxxxxxxxxxxx/system/0/Serial xxxxxxxxxxxx")}\
}


CerboClient
defmod CerboClient MQTT2_CLIENT 192.168.1.52:1883

Victron Gerät
defmod Victron MQTT2_DEVICE CerboClient
attr Victron readingList CerboClient:N/xxxxxxxxxxxx/system/0/Dc/Battery/Power:.* { {"Batterie_Leistung"=>($EVENT =~ /..value...([-]?[\d]+)./g)} }\
CerboClient:N/xxxxxxxxxxxx/system/0/Dc/Battery/Soc:.* { {"Batterie_Ladezustand"=>($EVENT =~ /..value...([\d]+)./g)} }\
CerboClient:N/xxxxxxxxxxxx/grid/30/Ac/Power:.* { {"Zaehler_Netzleistung"=>sprintf("%.0f",$EVENT =~ /..value...([-]?[\d]+\.[\d]+)./g)} }

Gruß Schlafsack

kask

Danke, das war es.
Das keepalive muss geschickt werden, und das tat es nicht.
Jetzt geht es!

sukram

#19
Zitat von: Beta-User am 06 Januar 2023, 10:31:15Zu den regexen bzw. den Log-Eintägen:

Hallo,

Ich habe gar nicht mitbekommen, dass es Antworten gab  ::)

Danke für deinen Input, das werde ich die Tage mal ausprobieren!

Zitat von: Beta-User am 06 Januar 2023, 10:31:15Nachtrag noch: Das at könnte man noch ersetzen durch einen periodicCmd im MQTT2_DEVICE, es müßte dann halt ein entsprechender setter oder getter angelegt werden.
Kann man leider nicht. Also prinzipiell ja, aber praktisch nein. Der Timeout bei Venus GX ist fest auf 60 Sekunden, der periodicCMD kann aber nur minimal im Minutentakt. d.h. ich laufe jedesmal bei etwas mehr Last auf dem System Gefahr, dass die Gegenseite "den Hahn zudreht" und keine Daten mehr liefert.

MfG