SMA Energy Meter als Verbraucher

okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von okaegi »

Salü markus,
Mir ist noch nicht klar ob es läuft oder nicht .
Was für parameter braucht der sma energy meter genqu ?
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
ALDI-Tuete
Beiträge: 233
Registriert: Di Apr 16, 2019 5:57 pm
Wohnort: Rockenberg

Re: SMA Energy Meter als Verbraucher

Beitrag von ALDI-Tuete »

Der SMA EnergyMeter braucht nur die Seriennummer des jeweiligen SMA EM.
In meinem Fall senden 2 SMA EnergyMeter und 1 SMA HomeManager (verhält sich auch wie ein EM) ihre Daten an die gleiche Multicast-Gruppe. Im Datenpaket ist jeweils die Seriennummer des Absenders enthalten, damit können die drei EM unterschieden werden. Diese Seriennummer wird verglichen und dann die entsprechenden Daten aus einem Dictionary ausgelesen.
Die Seriennummer habe ich aktuell hart im Script stehen.
Die ramdisk/smarthome_device_ret1 wird schon regelmäßig geschrieben, aber offensichtlich nur wenn es Änderungen gibt. Meine Wärmepumpe ist morgens von 6:00 - 9:30 Uhr ausgeschaltet, dementsprechend ist die Datei um 6:00:55 das letzte Mal geändert worden.

So, jetzt ist die Wärmepumpe wieder eingeschaltet und der EM sendet wieder.
Die smarthome_device_ret1 wird jetzt wieder periodisch/sekündlich aktualisiert:
{"power":1331,"powerc":6699.811}
Zuletzt geändert von ALDI-Tuete am Do Mai 13, 2021 7:33 am, insgesamt 1-mal geändert.
2 x openWB Standard+ + SMA HM 2.0 + PV 8,8 kWp Aurora WR + PV 5,3 kWp SMA WR + BYD HV 10.2 mit SMA SBS 3.7
1 x Tesla Model 3 LR, 1 x Tesla Model Y LR
okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von okaegi »

Hm er müsste die ret Datei laufend schreiben. Kann es sein das sma vieleicht eine float zurückgibt und du int erwartest ? Bau doch noch zum testen ein log auf der ramdisk ein, wie z.b im shelly. Welche struktur hat die Serienummer und brauchst du dann die ipadresse überhaupt ?
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
ALDI-Tuete
Beiträge: 233
Registriert: Di Apr 16, 2019 5:57 pm
Wohnort: Rockenberg

Re: SMA Energy Meter als Verbraucher

Beitrag von ALDI-Tuete »

Überschneidung... :-)

Die ret wird laufend geschrieben wenn der "richtige" EM sendet.
Ich caste beide Werte gemäß deiner Angabe:

devicenumber = str(sys.argv[1]) # SmartHomeDevice-Nummer
[...]
watt=str(int(emparts.get("pconsume")))
wattc=str("{:.3f}".format(emparts.get('pconsumecounter')))
answer = '{"power":' + watt + ',"powerc":' + wattc + '} '
f = open('/var/www/html/openWB/ramdisk/smarthome_device_ret' + str(devicenumber), 'w')
f.write(answer)
f.close

Die Seriennummer ist ein string, die IP-Adresse benötige ich nicht.
2 x openWB Standard+ + SMA HM 2.0 + PV 8,8 kWp Aurora WR + PV 5,3 kWp SMA WR + BYD HV 10.2 mit SMA SBS 3.7
1 x Tesla Model 3 LR, 1 x Tesla Model Y LR
okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von okaegi »

Wenn er nichts sendet müsste er 0 in power schreiben im powerc soltte dann der zähler stehen. Kannst du das im watt.py irgendwie feststellen ? Aus sicht openwb würde sonst die letzte gemeldete Leistungsaufnahme weiter als aktuelle Leistungsaufnahme gelten, was falsch währe.
Gruss Olivet
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
ALDI-Tuete
Beiträge: 233
Registriert: Di Apr 16, 2019 5:57 pm
Wohnort: Rockenberg

Re: SMA Energy Meter als Verbraucher

Beitrag von ALDI-Tuete »

Ja, das kriege ich für den aktuellen Stromverbrauch hin.
Habe ich eine Möglichkeit den Zählerstand irgendwo zu persistieren? Wenn der erste Start der openWB zu einem Zeitpunkt ohne Aussendung passiert, wird ja keine ret-Datei erzeugt aus der ich dann den Zählerstand auslesen kann.

Ich kann stattdessen auch keine ret-Datei erzeugen aber ich denke das passt nicht zur Logik. Dann wird ja trotzdem nicht "0" in der GUI angezeigt.
Und in das Modulverzeichnis schreiben bedeutet viel I/O / Stress für die SD-Karte - das ist ja gerade der Vorteil der ramdisk.
Entweder kann ich den Wert irgendwie aus der openWB auslesen oder openWB soll lieber aufsummieren.
Oder ist es ok für die openWB Philosophie wenn nach einem Neustart keine ret-Datei vorhanden ist solange bis der EnergyMeter das erste Datenpaket geschickt hat?

Ich habe das jetzt mal wie folgt umgesetzt:
1. EnergyMeter sendet Daten: ret-Datei wird mit den aktuellen Werten erzeugt
2. EnergyMeter sendet keine Daten aber es existiert eine ret-Datei: Neue ret-Datei mit power=0 wird erzeugt und powerc wird aus der existierenden ret-Datei übernommen.
3. EnergyMeter sendet keine Daten und es existiert keine ret-Datei: Nichts tun, sys.exit mit Meldung - dieser Eintrag wird auch zusammen mit einer generischen Fehlermeldung ins smarthome.log geschrieben.

2021-05-14 08:05:15: (1) Leistungsmessung durch we514
Module SMAEM: No data received and no historical data since boottime
2021-05-14 08:05:15: Leistungsmessung we514 1 TestSMAEM Fehlermeldung: [Errno 2] No such file or directory: '/var/www/html/openWB/ramdisk/smarthome_device_ret1'
2021-05-14 08:05:15: Device none1TestSMAEM Fehlermeldung: error in sepwatt


Passt das?

Aber es bleibt die Frage, warum mit aktueller ret-Datei nichts in der GUI angezeigt wird?
2 x openWB Standard+ + SMA HM 2.0 + PV 8,8 kWp Aurora WR + PV 5,3 kWp SMA WR + BYD HV 10.2 mit SMA SBS 3.7
1 x Tesla Model 3 LR, 1 x Tesla Model Y LR
Poellph
Beiträge: 33
Registriert: Do Dez 10, 2020 1:35 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von Poellph »

Moin zusammen,

irgendwie geht´s hier voll voran, aber ihr habt mich dabei etwas verloren (oder viel mehr ich euch).

Nur damit ich das verstehe:

Wird der SMA-Energiemeter als Verbraucher in eine Standard FW einfließen? ich habe gerade die 1.9.234 drauf.

LG Philipp
openWB series2 + 2 SMA EM + PV 27,5 kWp SMA Tripower6.0 + Tripower6.0 + Tripower10.0 + SMA SB1.5 + Varta Element 9 + Viessmann Vitocal 200-s + VW E-Golf + Skoda Enyaq iv 80
ALDI-Tuete
Beiträge: 233
Registriert: Di Apr 16, 2019 5:57 pm
Wohnort: Rockenberg

Re: SMA Energy Meter als Verbraucher

Beitrag von ALDI-Tuete »

Das ist natürlich mein Ziel, ich habe keine Lust auf eine Individualinstallation :-)
Die Messung funktioniert soweit inkl. Behandlung von verschiedenen Konstellationen aber ich warte noch auf infos von @openWB zur weiteren Vorgehensweise.
2 x openWB Standard+ + SMA HM 2.0 + PV 8,8 kWp Aurora WR + PV 5,3 kWp SMA WR + BYD HV 10.2 mit SMA SBS 3.7
1 x Tesla Model 3 LR, 1 x Tesla Model Y LR
Poellph
Beiträge: 33
Registriert: Do Dez 10, 2020 1:35 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von Poellph »

sauber, dann danke ich dir jetzt schonmal für deinen Einsatz.
hatte nicht damit gerechnet, dass es so schnell geht.

lg Philipp
openWB series2 + 2 SMA EM + PV 27,5 kWp SMA Tripower6.0 + Tripower6.0 + Tripower10.0 + SMA SB1.5 + Varta Element 9 + Viessmann Vitocal 200-s + VW E-Golf + Skoda Enyaq iv 80
okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: SMA Energy Meter als Verbraucher

Beitrag von okaegi »

ALDI-Tuete hat geschrieben: Do Mai 13, 2021 8:54 am Ja, das kriege ich für den aktuellen Stromverbrauch hin.
Habe ich eine Möglichkeit den Zählerstand irgendwo zu persistieren? Wenn der erste Start der openWB zu einem Zeitpunkt ohne Aussendung passiert, wird ja keine ret-Datei erzeugt aus der ich dann den Zählerstand auslesen kann.

Ich kann stattdessen auch keine ret-Datei erzeugen aber ich denke das passt nicht zur Logik. Dann wird ja trotzdem nicht "0" in der GUI angezeigt.
Und in das Modulverzeichnis schreiben bedeutet viel I/O / Stress für die SD-Karte - das ist ja gerade der Vorteil der ramdisk.
Entweder kann ich den Wert irgendwie aus der openWB auslesen oder openWB soll lieber aufsummieren.
Oder ist es ok für die openWB Philosophie wenn nach einem Neustart keine ret-Datei vorhanden ist solange bis der EnergyMeter das erste Datenpaket geschickt hat?

Ich habe das jetzt mal wie folgt umgesetzt:
1. EnergyMeter sendet Daten: ret-Datei wird mit den aktuellen Werten erzeugt
2. EnergyMeter sendet keine Daten aber es existiert eine ret-Datei: Neue ret-Datei mit power=0 wird erzeugt und powerc wird aus der existierenden ret-Datei übernommen.
3. EnergyMeter sendet keine Daten und es existiert keine ret-Datei: Nichts tun, sys.exit mit Meldung - dieser Eintrag wird auch zusammen mit einer generischen Fehlermeldung ins smarthome.log geschrieben.

2021-05-14 08:05:15: (1) Leistungsmessung durch we514
Module SMAEM: No data received and no historical data since boottime
2021-05-14 08:05:15: Leistungsmessung we514 1 TestSMAEM Fehlermeldung: [Errno 2] No such file or directory: '/var/www/html/openWB/ramdisk/smarthome_device_ret1'
2021-05-14 08:05:15: Device none1TestSMAEM Fehlermeldung: error in sepwatt


Passt das?

Aber es bleibt die Frage, warum mit aktueller ret-Datei nichts in der GUI angezeigt wird?
Ich hab mal dein modul angeschaut.

Wenn es das ist hast du folgendes Problem:
# processing received messages
while True:
emparts = {}
emparts=decode_speedwire(sock.recv(608))
if smaserial is None or smaserial == 'none' or str(emparts['serial']) == smaserial:
watt=str(int(emparts.get("pconsume")))
wattc=str("{:.3f}".format(emparts.get('pconsumecounter')))
answer = '{"power":' + watt + ',"powerc":' + wattc + '} '
f = open('/var/www/html/openWB/ramdisk/smarthome_device_ret' + str(devicenumber), 'w')
f.write(answer)
f.close

Das Watt.py modul sollte nur einmal messen und dann die Verarbeitung beenden.
Z.b. so
# processing one recieved message
emparts = {}
emparts=decode_speedwire(sock.recv(608))
if smaserial is None or smaserial == 'none' or str(emparts['serial']) == smaserial:
watt=str(int(emparts.get("pconsume")))
wattc=str("{:.3f}".format(emparts.get('pconsumecounter')))
answer = '{"power":' + watt + ',"powerc":' + wattc + '} '
f = open('/var/www/html/openWB/ramdisk/smarthome_device_ret' + str(devicenumber), 'w')
f.write(answer)
f.close

Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
Antworten