Victron MP II / Venus - Leistung vom Hauszähler per MQTT übergeben

Bei mir ist es ganz klar EV vor Batterie - da mir mein Arbeitgeber jede geladene kWh zum Netzbezugspreis ersetzt

Nur, so ein EV kann gar nicht so fein gesteuert werden beim laden - unter 6A geht z.B. gar nichts
Auch werden EV bei geringeren Ladeleistungen immer uneffektiver - da das ganze "Drumrum" trotzdem mitläuft
(Bei mir ist z.B. das Ladegerät wassergekühlt, alleine die Pumpe braucht 150W)

Ich sehe da aktuell noch eine große Baustelle - glaube dem Victron das zu überlassen ist der falsche Weg?
Klar - den Teil der Kurve, ab dem Du Pberschuss hast, aber noch nicht 6A * 230V zur Verfügung stehen, geht Dir ins Netz. Spielt im Sommer und je nach Anlagengröße eine vielleicht untergeordnete Rolle, ist aber nicht schick.

Könnte man in openbw ggf über die Smarthome 2.0 Steuerung regeln, wenn man dem Victron / ESS über einen MQTT / HTTP-Befehl mitteilt: Jetzt laden. Und auch wieder "jetzt laden aufhören", wenn man die 6A erreicht hat, damit das Auto geladen werden kann.

Ich habe jetzt doch mal versucht meinen SML-Zähler zu integrieren - leider bislang erfolglos

Einen Tasmota will ich jetzt nicht unbedingt installieren, die Werte liegen ja per MQTT bereits vor

Ich habe versucht das Ganze mit der Adaption von Marv2190 zu realisieren

Ich erhalte:

ERROR:root:Programm MQTTtoMeter ist abgestuerzt. (on message Funkion)
Traceback (most recent call last):
File "/data/mqtttogrid/MQTTtoGridMeter.py", line 90, in on_message
powercurr = float(jsonpayload["Zaehler"]["Power_curr"])
TypeError: 'int' object is not subscriptable
'int' object is not subscriptable
Im MQTTtoMeter Programm ist etwas beim auslesen der Nachrichten schief gegangen

im Programm habe ich eingetragen:
# MQTT Setup
broker_address = "192.168.178.47"
MQTTNAME = "MQTTtoMeter"
Zaehlersensorpfad = "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value"


In MQTT Éxplorer sehe ich genau für dieses Topic den richtigen Wert

Ich habe allerdings nur einen einzigen Wert, den aktuellen Bezug / Einspeisung

Kann das so überhaupt funktionieren?

Viele Grüße

Hi,
das oben ist ein Link...
Genau das möchte ich auch machen - also die Laderegler und Soyo schreibe ich schon über mqtt über ioBroker ins Influx...
das würde ich gerne über Venus anzeigen wollen...
So was in der Art?

wie hast den Soyo da jetzt auch noch rein bekommen? :slight_smile:

Wäre schon froh den Hauszähler rein zu bekommen

schade das man da bei Victron solche Klimmzüge machen muss - eigentlich sind ja alle Werte schon da

Ich hatte mir Samstag mal den Quelltext von Victrons Fronius angesehen und dann mal versucht, das mit der Vorlage aus dem dbus-fronius-smartmeter für die Venus nachzubauen.
Einige Werte sind simulierte, der Soyo liefert die aktuelle Leistung ja nur von der DC Seite, das habe ich dann vorher im ESP auf AC umgerechnet.

Da ist noch ein großer Bug drin, die angehängten Einheiten führen zu Problemen beim Export zum VRM. Da muss ich mal sehen, ob ich da aus der Serialbatterie was abgucken kann.
Der vrmlogger Export ist leider so amateurhaft gebaut, dass er die problematische teile nicht skippt. Er schmiert ab, startet neu und läuft in denselben Fehler rein und meldet das noch nicht mal in der Oberfläche.
Außerdem muss ich an die Konfiguration von Skript nach MQTT verschieben, sodass mehrere Soyos mit dem gleichen Skript behandelt werden können.

Ich habe jetzt doch mal versucht meinen SML-Zähler zu integrieren - leider bislang erfolglos

Einen Tasmota will ich jetzt nicht unbedingt installieren, die Werte liegen ja per MQTT bereits vor

Ich habe versucht das Ganze mit der Adaption von Marv2190 zu realisieren

Ich erhalte: ERROR:root:Programm MQTTtoMeter ist abgestuerzt. (on message Funkion) Traceback (most recent call last): File "/data/mqtttogrid/MQTTtoGridMeter.py", line 90, in on_message powercurr = float(jsonpayload["Zaehler"]["Power_curr"]) TypeError: 'int' object is not subscriptable 'int' object is not subscriptable Im MQTTtoMeter Programm ist etwas beim auslesen der Nachrichten schief gegangen im Programm habe ich eingetragen: # MQTT Setup broker_address = "192.168.178.47" MQTTNAME = "MQTTtoMeter" Zaehlersensorpfad = "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value"

In MQTT Éxplorer sehe ich genau für dieses Topic den richtigen Wert

Ich habe allerdings nur einen einzigen Wert, den aktuellen Bezug / Einspeisung

Kann das so überhaupt funktionieren?

Viele Grüße
Unter "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value" bekommst du eine Zahl ohne irgendwelchen Firlefanz z.B: 72.8 ?
ich lade die datei dafür heute abend hier rein.

Aus Interesse habe ich mich mal mit MQTTFX mit der VenusGX verbunden um zu lauschen was man an Daten alles angezeigt bekommt. In der Konsole bekomme ich alle Daten sofort angezeigt und mit denen man auch dann weiter arbeiten kann.

ja, genau, ich erhalte direkt den Wert

Um genau zu sein, ich erhalte 3 Werte, als getrennte Messages
unter iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value kommt die aktuelle Leistung in W (keine Nachkommastelle, Wert kann positiv oder negativ sein)

Unter iot/smartmeter/sensor/1/obis/1-0:1.8.0/255/value kommt der Zählerstand Bezug (eine Nachkommastelle)

Unter iot/smartmeter/sensor/1/obis/1-0:2.8.0/255/value kommt der Zählerstand Einspeisung (eine Nachkommastelle)

Ich denke für den Victron ist nur der erste Wert interessant?

Viele Grüße


Unter "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value" bekommst du eine Zahl ohne irgendwelchen Firlefanz z.B: 72.8 ?
ich lade die datei dafür heute abend hier rein.

ja, genau, ich erhalte direkt nur den Wert

Um genau zu sein, ich erhalte 3 Werte, als getrennte Messages
unter iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value kommt die aktuelle Leistung in W (keine Nachkommastelle, Wert kann positiv oder negativ sein)

Unter iot/smartmeter/sensor/1/obis/1-0:1.8.0/255/value kommt der Zählerstand Bezug (eine Nachkommastelle)

Unter iot/smartmeter/sensor/1/obis/1-0:2.8.0/255/value kommt der Zählerstand Einspeisung (eine Nachkommastelle)

Ich denke für den Victron ist nur der erste Wert interessant?

Viele Grüße

Die Datei im Anhang sollte mit den 3 Werten, die der Zähler erzeugt klarkommen.
deviceinstance ist eine beliebige freie Nummer, ob das mit 0 auch geht weiß ich nicht

Das Problem mit den Einheiten ist auch gelöst, es besteht keine Gefahr den VRM Export zu verlieren.
Das VRM braucht die Einheiten nicht mal, die sind nur für Anzeige in der Venusoberfläche.

##########################################
servicename= "com.victronenergy.grid.obismeter";
customname = "Powermeter via MQTT" ## name in Venus
deviceinstance = 185 ## vrm nummer
looptime = 200 ## im ms
##########################################
path_UpdateIndex = '/UpdateIndex';

MQTT

broker_address = "192.168.178.47" ### "mqtt.local" ## mqtt server
clientid = "Venus.obismeter"
username = "Venus"
password = ""
topic_p1_power = "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value"
topic_p1_import = "iot/smartmeter/sensor/1/obis/1-0:1.8.0/255/value"
topic_p1_export = "iot/smartmeter/sensor/1/obis/1-0:2.8.0/255/value"
topic_p1_voltage = None
topic_p1_current = None
##########################################

37626=6686-gridmeter.zip|attachment (12.6 KB)

Bezüglich Nachkommastellen, habe eine Landis Gyr Zähler. Nachdem ich mir die Pin vom Zähler habe geben lasse und den freigeschaltet habe bekomme ich 3 Nachkommastellen.

Die Anzeigekommastellen sind da in den lamdaausdrücken {:0.1f} anzupassen, wenn man bessere Werte hat.
'/Ac/L1/Energy/Forward': {'initial': 0, 'gettextcallback': lambda p, v: "{:0.1f}W".format(v) },
Intern verwendet er floats, da sollte nichts verloren gehen.

So ganz will es leider noch nicht

Ich bin mir aber zugegeben auch nicht sicher ob bei mir paho-mqtt richtig installiert ist

Ich hatte es gestern irgendwie händisch installiert

Der direkte Aufruf von
/data/gridmeter# python -m ensurepip --upgrade

bringt leider nur

/usr/bin/python: No module named ensurepip

(Es ist das neueste Raspi-Image)

Viele Grüße

Aber, du hattest es doch schon,

powercurr = float(jsonpayload["Zaehler"]["Power_curr"])
TypeError: 'int' object is not subscriptable

Der 'int' war dein Zählerwert, das mqtt abo hat da funktioniert!


....
Ich erhalte:

ERROR:root:Programm MQTTtoMeter ist abgestuerzt. (on message Funkion)
Traceback (most recent call last):
File "/data/mqtttogrid/MQTTtoGridMeter.py", line 90, in on_message
powercurr = float(jsonpayload["Zaehler"]["Power_curr"])
TypeError: 'int' object is not subscriptable
'int' object is not subscriptable
Im MQTTtoMeter Programm ist etwas beim auslesen der Nachrichten schief gegangen

ich habe jetzt zum 5. mal die SD-Karte mit verschiedenen Versionen bespielt - es gelingt mir nicht pip zu installieren

Kann es sein das da Victron irgendwann was im Image geändert hat - ihr alle ein altes Image habt?
Beim Update innerhalb der Venus-Oberfläche wird vermutlich nicht das Linux upgedatet?

pip ist beim update auch verschwunden,
die paho-mqtt hat er beim update aber nicht geklaut

ich werde noch wahnsinnig :slight_smile:

Ich vermute es ist ein Problem der venus.conf - es werden mit opkg quasi keinerlei Pakete gefunden

Was steht bei Euch in der venus.conf?

Bei mir: src/gz all Index of /feeds/venus/release/packages/dunfell/all
src/gz cortexa7hf-neon-vfpv4 Index of /feeds/venus/release/packages/dunfell/cortexa7hf-neon-vfpv4
src/gz raspberrypi2 Index of /feeds/venus/release/packages/dunfell/raspberrypi2

Eigentlich wollte ich einen WR installieren, mich nicht ewig mit Linux rumärgern :slight_smile:
Weiss jemand welches die richtige Version des Images ist, damit das Gaze funktioniert?

Oder mag mir evtl. jemand einfach ein Image seiner SD-Karte machen?

Die Datei im Anhang sollte mit den 3 Werten, die der Zähler erzeugt klarkommen.
deviceinstance ist eine beliebige freie Nummer, ob das mit 0 auch geht weiß ich nicht

Das Problem mit den Einheiten ist auch gelöst, es besteht keine Gefahr den VRM Export zu verlieren.
Das VRM braucht die Einheiten nicht mal, die sind nur für Anzeige in der Venusoberfläche.
########################################## servicename= "com.victronenergy.grid.obismeter"; customname = "Powermeter via MQTT" ## name in Venus deviceinstance = 185 ## vrm nummer looptime = 200 ## im ms ########################################## path_UpdateIndex = '/UpdateIndex'; # MQTT broker_address = "192.168.178.47" ### "mqtt.local" ## mqtt server clientid = "Venus.obismeter" username = "Venus" password = "" topic_p1_power = "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value" topic_p1_import = "iot/smartmeter/sensor/1/obis/1-0:1.8.0/255/value" topic_p1_export = "iot/smartmeter/sensor/1/obis/1-0:2.8.0/255/value" topic_p1_voltage = None topic_p1_current = None ##########################################

Was macht das Script?
Ich verstehe es irgendwie nicht.

Habe meine zweirichtungszähler auch verfügbar, auch direkt als mqtt Nachricht wenn es sein muss.
Würde gerne das mqtt to dbus nutzen um die Werte an den victron zu geben.

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

Das Script machts irgendwie anders oder?

EdIT:
Mal ins Script geguckt und überflogen.
Sieht super aus. Respekt.
Frage 1: seh ich das richtig das es hier nur um p1 geht und nicht p1-p3.
Hätte ja drei Phasen im Angebot.
Vermutlich dann nur die Phase die mein mp2 48/5000 auch nutzt?

Bissl offtopic:
Überlege noch wie ich es anstelle.
Habe einen home Server auf Intel Basis mit proxmox und Homeassistant.
Ich könnte natürlich einfach aus home assistant die Daten per modbus updaten oder auch per mqtt schicken.
Problem: home assistant aus, mp2 auch aus...

Jetzt könnte ich Venus os einen Container oder gar eine vm spenden, dort den mqtt Broker laufen lassen.
Problem: Server kaputt, mp2 aus.

Hätte noch einen Backup Server laufen mit zwei Platten a 18tb. True nas laufend.
Ich fürchte hier müsste ich dann mit docker ran um venus os laufen zu lassen. Er hinderlich wie ich finde.

Also auf einen rpi3 rauf und fertig. Sd Karten sterben, ist das bei venus os der Fall?

Zurück zum Thema, also:
Ausgelesen wird mein zäher (easymeter q3m) mittels esphome und sml. (Gerät: sonoff basic / hitchi Lesekop)
https://esphome.io/components/sml.html

Werde wohl einen rpi3b mit venus os bestücken und den mosquitto Broker installieren.

Dann das Script nehmen um die mqtt Daten vom esp über lqtt empfangen und für den mqtt to dbus umbauen.
https://github.com/victronenergy/dbus-mqtt

Würde das so mit dem Script klappen oder muss ich erst python lernen? ;)
Bissl offtopic:
Überlege noch wie ich es anstelle.
Habe einen home Server auf Intel Basis mit proxmox und Homeassistant.
Ich könnte natürlich einfach aus home assistant die Daten per modbus updaten oder auch per mqtt schicken.
Problem: home assistant aus, mp2 auch aus...

Jetzt könnte ich Venus os einen Container oder gar eine vm spenden, dort den mqtt Broker laufen lassen.
Problem: Server kaputt, mp2 aus.
Ja, das ist der Grund warum ich nicht über HA gehen werde, ist einfach zu unzuverlässig, bei jedem Update gibt es ne Downtime.

Auf Venus OS läuft auch ein MQTT Server.
Manche Menschen richten einen Sync bestimmter Topics ein, war mir aber zu kompliziert. Mein MQTT Server läuft auf einem stabileren Arm, den ich nie booten muss.
Mit dem MQTT der Venus hatte ich aber einige Probleme, ich kann da was eintragen, sehe aber nicht das Abbild, was ich im d-bus sehen kann. Später habe ich den Versuch aufgegeben.
Ich weiß aber leider nicht, wie ich mich mit ESPHome an zwei MQTT Server verbinden kann, daher verwende ich für beide Wege denselben Server, einmal Realtime für Venus, einmal Statistik, etwas langsamer für HA.

Mein Skript mit der einen Phase hatte ich nur zum Test für einen SDM120 gemacht umrauszinden was geht.
In einem Karton habe ich noch eignen SDM72s, davon wird einer der Hauptzähler.
Das Skript ist auch nicht mehr auf dem aktuellen Stand, das Ding mit der Looptime war Blödsinn, das Update in Venus kann man auch bei reinkommenden MQTT Messages machen, muss man nicht warten.

Ja, das ist der Grund warum ich nicht über HA gehen werde, ist einfach zu unzuverlässig, bei jedem Update gibt es ne Downtime.

Auf Venus OS läuft auch ein MQTT Server.
Manche Menschen richten einen Sync bestimmter Topics ein, war mir aber zu kompliziert. Mein MQTT Server läuft auf einem stabileren Arm, den ich nie booten muss.
Mit dem MQTT der Venus hatte ich aber einige Probleme, ich kann da was eintragen, sehe aber nicht das Abbild, was ich im d-bus sehen kann. Später habe ich den Versuch aufgegeben.
Ich weiß aber leider nicht, wie ich mich mit ESPHome an zwei MQTT Server verbinden kann, daher verwende ich für beide Wege denselben Server, einmal Realtime für Venus, einmal Statistik, etwas langsamer für HA.

Mein Skript mit der einen Phase hatte ich nur zum Test für einen SDM120 gemacht umrauszinden was geht.
In einem Karton habe ich noch eignen SDM72s, davon wird einer der Hauptzähler.
Das Skript ist auch nicht mehr auf dem aktuellen Stand, das Ding mit der Looptime war Blödsinn, das Update in Venus kann man auch bei reinkommenden MQTT Messages machen, muss man nicht warten.

Derzeit habe ich keinen MQTT Broker, da ich in HA die API nutze.
Ergo nehme ich einfach den MQTT Server vom Venus oder installiere einen Mosquitto.
Dort müsste man dann schauen wie es geht.
Kein Plan ob der Broker das dann als "neues" Topic publishen kann oder ob ich, wie bisher gedacht, ein scipt haben muss, dass mir das Topic dann umbaut um es dann über den Broker erneut zu publishen.

Wie gesagt, nutze keinen Broker und habe es sogar versucht zu verhindern.
Wenn ich mich recht entsinne spricht ein MQTT client auch einfach ins netz und jeder im Netz kann die Nachricht einfach mitlesen.
Gut, nichts anderes macht HTTP auch ;)

Secure brauch ich nicht, habe VLANs eingerichtet und mein WLAN ist getrennt zwischen:
autox = automation x
Home
Work

Aber darum gehts hier nicht ;)