question

d12turb3d avatar image
d12turb3d asked

Emulation eines Zählers via json

Hallo zusammen,

ich bin ziemlich neu im Thema Victron / Venus OS. Hier mein Aufbau:

Hardware

  • Multiplus II 48/5000/70
  • MK3-USB Interface
  • Raspberry 3B+, hierauf Venus OS (2.85)
  • Loxone Miniserver Gen.2

Problemstellung

Es ist zur Zeit ein Interface vorhanden, welches den Zähler meines Energieversorgers ausliest und in Loxone darstellt (Loxone Zählerinterface Air). D. h. ich bekomme (u. a.) über dieses Interface meine momentanen Einspeise- / Bezugswerte (in Watt). Über die API von Loxone kann ich mir diesen Wert per als .xml oder .json "ziehen":

.xml:

http://[Benutzername]:[Kennwort]@IP_Loxone/dev/sps/io/0CD870EC.90124C.AI2

Ausgabe der Webseite:

<LL control="dev/sps/io/0CD870EC.90124C.AI2" value="1.109" Code="200"/>

Hier bekomme ich also bei value meinen Momentanwert (positiv = Bezug, negativ = Einspeisung)


bei .json sieht das Ganze nun wie folgt aus:

http://[Benutzername]:[Kennwort]@IP_Loxone/jdev/sps/io/0CD870EC.90124C.AI2
Ausgabe der Webseite:

{"LL": { "control": "dev/sps/io/0CD870EC.90124C.AI2", "value": "1.108", "Code": "200"}}

Ich möchte nun über einen eigenen Treiber diesen Wert ("value") nehmen, einen Zähler emulieren und diesen Wert in den dbus schreiben, damit das Ganze im Venus als Zähler auftaucht.


Mein Lösungsansatz:

Ich habe mir den Service von Ralf Zimmermann genommen (der aus einem Fronius WR einen Zähler emuliert) https://github.com/RalfZim/venus.dbus-fronius-smartmeter und versucht, diesen auf meine Bedürfnisse anzupassen (nur von mirgeänderte Textzeilen der "dbus-fronius-smartmeter.py") :

meter_url = "http://172.20.0.225/jdev/sps/io/0CD870EC.90124C.AI2"
meter_r = requests.get(url=meter_url, auth=HTTPBasicAuth('Benutzer', 'Kennwort')) # request data from the Fronius PV inverter
meter_data = meter_r.json() # convert JSON data
meter_consumption = meter_data['LL']['value']


Leider läuft das Script in einen Fehler, den ich nicht eingrenzen kann.

Hat hier jemand eine Idee, wie ich dieses Script "dbus-fronius-smartmeter.py" so anpassen kann, dass ich es mit dem Wert der .xml/.json Ausgabe füllen kann?

Alternativ könnte ich diesen Wert auch als Modbus irgendwo im Venus dbus hin schreiben, aber ich wüsste nicht wo (damit das auch als Zähler visualisiert wird).

Vielen Dank im Voraus!

Sebastian

Venus OS
2 |3000

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

2 Answers
aikawa24 avatar image
aikawa24 answered ·

hi,

bist du da schon weiter gekommen ?


ich habe mir das script vom shelly 3em genommen und bearbeitet damit kann ich die JSON Daten von einem Tasmota Zähler in das cerbogx schreiben

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 ·

Hast du schon https://github.com/freakent/dbus-mqtt-devices probiert?

damit habe ich sowohl SMA SHM, Kostal Piko, KSEM und auch Eastron SDM emuliert.

Das ganze über Node-Red (am besten Venus 3.x verwenden).

a) Nutzdaten abrufen

b) einmalig das Gridmeter registrieren (bei jedem reboot)

c) per MQTT die Werte in den DBus schicken

2 |3000

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

Related Resources