Hallo,
ich würde gerne per Modbus die Daten (liegen auf Iobroker) vom vorhandenen Stromzähler zu Venus Os schicken. so könnte ich mir einen EM24 sparen. Auslesen von Venus funktioniert schon, nur an welche Adresse schreibe ich die Daten vom Stromzähler?
Die Registerliste von Victron kennst Du?
https://www.victronenergy.de/download-document/6195/CCGX-Modbus-TCP-register-list-2.90.xlsx
Könntest Du also direkt von iobroker aus machen. Nur vorher auf Venus OS modbus TCP aktivieren.
Wahlweise benutzt Du die MQTT / DBUS Schnittstelle (siehe github) - hier müsstest Du Dir die richtigen Topics raussuchen.
Die Liste kenne ich, weiß jedoch nicht welche ID und Modbus Adresse ich für den "simulierten" Energiezähler nehmen muss. Bei ID 40/41 und Modbus 2600/2601/2602 taucht kein Energiemessgerät bei Venus auf.
Mein Wechselrichter hat die ID 20 und com.victronenergy.system die 100. Daten bekomme ich auch ausgelesen.
Auf github gibt es ein paar Projekte die den Fronius Smart Meter über dbus angebunden haben.
Schau mal hier:
https://github.com/ayasystems/dbus-fronius-smart-meter/blob/main/dbus-fronius-smart-meter.py
Das ist ein python projekt.
Problem beim Einbinden eines Zähler ist, das du nur die Total (und nicht die Werte pro Phase) für Verbrauch und Lieferung hast. Bin mir nicht sicher ob das langt.
Wenn du 1 phasig bist sollte das mit den Totals eigentlich klappen. Bei 3 Phasen könnte ich mir vorstellen das hier die Werte pro Phase benötigt werden.
Die Projekte habe ich gesehen, komme da aber irgendwie nicht weiter mit(muss man nur mqtt in Venus aktivieren und per Mqtt eine Abfrage stelle?)
Über Modbus funktioniert das lesen ja bereits. Ich habe den Verbrauch bzw. Einspeisung(negative Werte) pro Phase in Iobroker vorliegen.
Es gibt vermutlich keine "hier klicken und so geht es" Lösung.
Eine Möglichkeit ist es, aus den aktuellen Verbrauchsdaten einen neuen Grid Setpoint zu errechnen, diesen per Modbus einzuspeisen (Register 37, 40 und 41, wenn mich mein Gedächtnis da nicht trügt) und das System im ESS Mode 3 zu betreiben. Das setzt allerdings voraus, dass Deine neue Steuerung auch "immer" funktioniert.
Eine andere Möglichkeit ist es, das obige Verfahren via MQTT anzuwenden.
Dritte Möglichkeit: Man nimmt zB den Fronius- oder SMA-Adapter von GITHUB und passt den entsprechend an - in diesem Fall sind Python-Kenntnisse erforderlich, sofern man sich an den Beispielen orientiert. Du musst dann "nur" die Daten aus Deinem iobroker, homeasistant oder was auch immer auslesen und dem system-DBUS zur Verfügung stellen. Der zweite Teil ist ja idR in den Modulen schon implementiert.
Wer sich mit NodeRed beschäftigt, kann sich ja mal das Video von "meintechblog" zu diesem Thema anschauen, dort wird ein Weg via NodeRed und Loxone beschrieben - geht aber sicherlich genauso via iobroker usw.
Dachte eigentlich das mir nur die richtigen Modbus Adressen und ID fehlen. Letztendlich macht der EM24 Zähler doch nichts anderes, als Werte per Modbus an den Venus zu schicken.
Hat vielleicht jemand eine EM24 Modbus und kann mal horchen welche Adressen benutzt werden?
Dachte eigentlich das mir nur die richtigen Modbus Adressen und ID fehlen. Letztendlich macht der EM24 Zähler doch nichts anderes, als Werte per Modbus an den Venus zu schicken.Ich kann mich täuschen, aber wenn ich den Teil der Architektur von Venus OS richtig verstanden habe, kannst Du über das Senden von Werten via MODBUS nicht "einfach so" einen Zähler vortäuschen - Du kannst nur einzelne Werte setze, wie zB den Gridpoint oder Leistung auf einer Phase. Auch für den EM24 gibt es ja unter Venus OS einen Treiber, der die Werte dann über RS485 entgegennimmt und dem DBUS zur Verfügung stellt.
Hat vielleicht jemand eine EM24 Modbus und kann mal horchen welche Adressen benutzt werden?
Sprich: Du willst einen EM24 "simulieren" -> Treiber, DBUS, diese Richtung
Du möchtest den Grid Setpoint manipulieren -> Modbus oder via MQTT einen neu berechneten Setpoint ins System spielen
Ok dann komme ich um wohl um diese Variante nicht herum.
Victron Eastron SDM630 Bridge
Ich habe die Daten ja schon in Iobroker, also muss ich den Part(ModBus Measurement Daemon) anders lösen.
Gibt es dazu eine Anleitung oder wie gehe ich da vor?
Wenn Dir Dein iobroker die Zählerdaten wie gefordert auch via MQTT publishen kann, bist Du doch schon fast da?
Laut kurzem googlen kann man aus iobroker Daten an einen MQTT Broker senden - also müsstest Du nur einen MQTT Broker aufsetzen (sofern nicht vorhanden), dorthin die erforderlichen Daten senden und diese dann mit dem von Dir verlinkten github-Modul wieder auslesen und auf den DBUS schieben.
Beim publishing via MQTT natürlich auf die Pfade achten, wie das Modul die gerne hätte.
Somit ist der "Umweg" über mbmd nicht erforderlich?
Ich versuche es mal anders zu erklären - und ich kenne iobroker nicht.
Also wäre der nächste Schritt, die Daten in der erwarteten Struktur, regelmäßig aus iobroker auf MQTT zu veröffentlichen. Das kannst Du parallel mit MQTT explorer oder ähnlichem sehr gut überprüfen.
Wenn das alles klappt, kannst Du das Script aus Github installieren und einfach mal starten, was da passiert.
Zur Kontrolle, ob es auf dem DBUS auch erfolgreich ankommt, gibt es mW dbus-spy auf Venus OS.
Ab dann sollte es laufen.
In Summe ein durchaus frgiles Konstrukt, an dem viele Sollbruchstellen existieren. Das ist der Grund, warum ich bei von mir betreuten Installationen kategorisch auf einen EM24 setze.
Du hast eine Kette von:
* Zähler, auslesen via USB / IR Lesekopf und übertragung der Daten, vermutlich via WLAN, nach iobroker
* Script in iobroker, welches die Daten regelmäßig auf einem MQTT Broker veröffentlicht
* Script (in go) auf Venus OS, welches die Daten auf den DBUS schiebt
Kann alles wunderbar laufen - man sollte sich nur der Konsequenzen und des Aufwandes im Fehlerfall bewusst sein.
Hallo,Möchtest du das noch umsetzen?
ich würde gerne per Modbus die Daten (liegen auf Iobroker) vom vorhandenen Stromzähler zu Venus Os schicken. so könnte ich mir einen EM24 sparen. Auslesen von Venus funktioniert schon, nur an welche Adresse schreibe ich die Daten vom Stromzähler?
Ich habe das mit folgendem Script https://github.com/timostark/venus.dbus-iobroker-smartmeter zum laufen gebracht.
Mein Zähler liefert aber über SML keine Grid-Daten (Frequenz und Spannung für L1 - L3) daher fehlen mir einige Daten.
Die könnte ich noch im Script berechnen.
Wenn du möchtest beschreibe ich mal was ich gemacht habe. Im Python Script musste ich noch ein paar Sachen ändern damit das geklappt hat.
Ich habe mich jetzt doch entschieden den EM24 zu nutzen und per RS485 eine direkte Verbindung herzustellen.
Mit Iobroker, Wemos mit IR-Lesekopf mit Wlan Anbindung etc. sind mir doch ein paar zu viele mögliche Störquelllen.
Ich habe Interesse an den Änderungen, die du vorgenommen hast. Habe einen Wemos D1 mini mit Tasmota und lese schon sehr lange meinen Stromzähler aus.
Daten werden in iobroker verarbeitet. Wäre schön, wenn du mir da helfen könntest...
Gruß Claus
wie schickt Tasmota die Daten an den IOBroker? Per MQTT?
Dann kannst sie auch parallel direkt in VenusOS auswerten, ohne den Umweg über IOBroker
@profantus Hallo, ich habe versucht das Skript lauffähig zu bekommen. Klappt leider nicht.
Ist die aus dem Skript resultierende Anbindung dann als externes Meter einzustellen, oder läuft das intern über die Einstellung "Inverter Link entfernt
Ich bekommen nämlich keine Werte. API auf dem Broker läuft und funktioniert.
Dann schreibst du noch "All IOBroker Paths are referencing to the full path of the iobroker object" . Das heißt bspw. " Link entfernt "
Sehe ich das richtig, nur damit ich das schon mal richtig habe.
Vielen Dank und schöne Grüße
Peter
Hier mal mein Script mit den Anpassungen.
Ich hab IOBroker nicht mehr am laufen da ich auf Home Assistant und ESPHome gewechselt bin daher kann ich das nicht mehr testen.
dbus-iobroker-smartmeter.zip (3.47 KB)
Tasmota schickt die Daten alle 10s per mqtt an iobroker.
Für die Nachteinspeisung habe ich erfolgreich die Lösung vom BavarianSuperGuy (KlausLi) verwendet.
Da wird alle 2s der Wert aktualisiert.
Bei mir steht dann folgendes drin:
http://192.168.3.134/cm?cmnd=status+10
StatusSNS.SML .Power_curr
Dachte, sowas könnte man vielleicht auch im Venus Os so integrieren.
In Tasmota wird ja nur alle 10s gesendet und beim Soyo-Source Controller alle 2s
wie wird der Wert alle 2 Sekunden aktualisiert wenn nur alle 10 Sekunden was von Tasmota kommt?
Aber ja, es ist problemlos möglich diese Werte direkt per MQTT an Venus zu übergeben
Schau mal hier:
In diesem langen Thread gibt es einige Python-Scripte die auf Venus laufen und direkt die MQTT-Daten auswerten