Selbstbau-PV / Selbstbau-PV-Hoymiles-nulleinspeisung-mit-OpenDTU-und-Shelly3EM

Ein Python-Skript, das den aktuellen Hausverbrauch aus einem Shelly 3EM ausliest, die Nulleinspeisung berechnet und die Ausgangsleistung eines Hoymiles-Wechselrichters mit Hilfe der OpenDTU entsprechend anpasst. Somit wird kein unnötiger Strom ins Betreibernetz abgegeben.
61 stars 24 forks source link

Script läuft nicht mit Shelly Pro 3EM #7

Open MatrixOneXP opened 1 year ago

MatrixOneXP commented 1 year ago

Hallo zusammen, in der irrigen Annahme es würde Laufen habe ich mir wegen der LAN Anbindung einen Shelly PRO 3EM besorgt. Das Script ist auf dem Pi und läuft so lange ich die IP des Shelly nicht angebe. Versucht habe ich bereits: curl http://192.168.1.53/emeter/1 -H "Accept: application/json" und bekomme not fund zurück. Kann es sein das die Abfragen sich geändert haben von emeter nach rpc/EMData grafik

Update: Die Abfrage im Pro funktioniert so nur weiß ich nicht wirklich wie das Script abgeändert werden müsste um die Daten zu verwerten.

wget -q -O - http://192.168.1.53/rpc/EM.GetStatus?id=0 {"id":0,"a_current":0.656,"a_voltage":231.2,"a_act_power":110.6,"a_aprt_power":151.6,"a_pf":-0.79,"b_current":0.438,"b_voltage":231.1,"b_act_power":49.5,"b_aprt_power":101.2,"b_pf":-0.66,"c_current":0.243,"c_voltage":231.2,"c_act_power":28.6,"c_aprt_power":56.2,"c_pf":-0.67,"n_current":null,"total_current":1.338,"total_act_power":188.716,"total_aprt_power":309.031, "user_calibrated_phase":[]}

Wehre sehr froh, wenn mir jemand helfen könnte

St31l commented 1 year ago

Nachdem ich daran gescheitert bin die Nulleinspeisung mit meinem Shelly Pro 3EM und dem Skript zum laufen zu bekommen, bin ich auf diesen Beitrag aufmerksam geworden.

Ich würde mich anschließen und wäre super dankbar wenn es da Hilfe geben könnte

MatrixOneXP commented 1 year ago

Leider habe ich keinen 3EM ohne Pro da sodass ich mir auch nicht wirklich ableiten kann, welche Ausgabe er bringt, da ich 2 Anlagen in einem Haus auf verschiedenen Zählern so betreiben möchte, werde ich mir wahrscheinlich einen normalen 3 EM besorgen müssen und hoffen, dass ich so das Script anpassen kann.

MatrixOneXP commented 1 year ago

Ich habe das Script jetzt mal etwas verändert, ob das so wirklich passt und sinnvoll ist kann ich nicht sagen:

grafik

Das Ergebnis schaut auf dem Raspi jetzt so aus: Nulleinspeisung

Leider ist meine Anlage noch nicht aufgebaut, sodass ich die Funktion nicht testen kann e.v hat ja jemand die Möglichkeit und das Wissen es zu bewerten.

St31l commented 1 year ago

Ich habe das Script jetzt mal etwas verändert, ob das so wirklich passt und sinnvoll ist kann ich nicht sagen:

grafik

Das Ergebnis schaut auf dem Raspi jetzt so aus: Nulleinspeisung

Leider ist meine Anlage noch nicht aufgebaut, sodass ich die Funktion nicht testen kann e.v hat ja jemand die Möglichkeit und das Wissen es zu bewerten.

Meine Anlage läuft, ich passe es mal nach deinem Code an und probiere es aus

St31l commented 1 year ago

Habe den Pytoncode angepasst und die Nulleinspeisung funktioniert 🤩 Klasse Arbeit der Anpassung des Codes! Danke dafür! Es wird in Zukunft sicherlich mehr Leute geben die den Pro 3EM verbauen und damit klappt es schon Mal IMG_2708

meine Anpassung ist noch etwas träge, da mein Speicher nur an einem Eingang des HM-600 angeschlossen ist (beide parallel an einen Speicher nicht möglich). Somit steht nur die Hälfte der maximalen Leistung zur Verfügung und bei Leistungs-Anpassung um 10 W werden real nur 5 W erhöht und der Code muss erneut regeln. Dennoch funktioniert es mehr als zufriedenstellend.

St31l commented 1 year ago

Für die Shelly Pro 3EM Nutzer (solange es noch keine angepasste Version von Selbstbau-PV gibt):

Die Zeilen 26 bis 29 (durch folgenden Code ersetzten: " phaseA = requests.get(f'http://{shellyIP}/rpc/EM.GetStatus?id=0', headers={"Content-Type": "application/json"}).json()['a_act_power'] phaseB = requests.get(f'http://{shellyIP}/rpc/EM.GetStatus?id=0', headers={"Content-Type": "application/json"}).json()['b_act_power'] phaseC = requests.get(f'http://{shellyIP}/rpc/EM.GetStatus?id=0', headers={"Content-Type": "application/json"}).json()['c_act_power'] grid_sum = phaseA + phaseB + phaseC # Aktueller Bezug im Haus - rechnet alle Phasen zusammen "

Dann funktioniert die Nulleinspeisung auch mit dem Shelly Pro 3EM

Viele Grüße Steffen

MatrixOneXP commented 1 year ago

Habe den Pytoncode angepasst und die Nulleinspeisung funktioniert 🤩 Klasse Arbeit der Anpassung des Codes! Danke dafür! Es wird in Zukunft sicherlich mehr Leute geben die den Pro 3EM verbauen und damit klappt es schon Mal IMG_2708

meine Anpassung ist noch etwas träge, da mein Speicher nur an einem Eingang des HM-600 angeschlossen ist (beide parallel an einen Speicher nicht möglich). Somit steht nur die Hälfte der maximalen Leistung zur Verfügung und bei Leistungs-Anpassung um 10 W werden real nur 5 W erhöht und der Code muss erneut regeln. Dennoch funktioniert es mehr als zufriedenstellend.

Super danke fürs Testen und Feedback jetzt kann ich meine Anlage in Ruhe Fertigbauen

Gruß

Andi

St31l commented 1 year ago

Habe die Null Einspeisung noch mal etwas im Auge behalten und verschiedenste Lastsituationen im Haus gehabt.

Mittlerweile habe ich das Phänomen, dass OpenDTU im 15 Sekundentakt auf die minimal eingestellte Leistung des Skripts für den HM-600 einstellt und dann nach ein paar Sekunden wieder in Richtung Nulleinspeisung regelt.

MatrixOneXP commented 1 year ago

Eventuell ist die ganze Rechnerei Phase A + B + C nicht wirklich nötig, denn der pro 3 EM liefert den Wert: total_act_power was dem Ergebnis von A + B +C entsprechen sollte. Ich hab das mal auskommentiert so dass er gleich den Wert nimmt, wenn du möchtest, versuch es mal damit: grafik

St31l commented 1 year ago

Eventuell ist die ganze Rechnerei Phase A + B + C nicht wirklich nötig, denn der pro 3 EM liefert den Wert: total_act_power was dem Ergebnis von A + B +C entsprechen sollte. Ich hab das mal auskommentiert so dass er gleich den Wert nimmt, wenn du möchtest, versuch es mal damit: grafik

Die Anpassung ist auf jeden Fall sinnvoll und funktioniert (genau wie mit der Summierung) PhaseA kann man dann komplett entfernen und „grid_sum“ für die Abfrage nach „total_act_power“ nehmen.

Aus irgendeinem Grund werden die printf Befehle in meiner Konsole(LXTerminal) nicht ausgegeben, weshalb ich nicht nachvollziehen kann warum die Leistungsvorgabe zwischen vorgegebener min Leistung und der Nulleinspeisung pendelt

Rayn0r commented 1 year ago

Aus irgendeinem Grund werden die printf Befehle in meiner Konsole(LXTerminal) nicht ausgegeben,

Versuch mal deine print() Aufrufe wie folgt zu ändern:

print('Fehler beim Abrufen der Daten von Shelly 3EM', flush=True)

Vielleicht klappt's danach mit der Ausgabe.

St31l commented 1 year ago

Aus irgendeinem Grund werden die printf Befehle in meiner Konsole(LXTerminal) nicht ausgegeben,

Versuch mal deine print() Aufrufe wie folgt zu ändern:

print('Fehler beim Abrufen der Daten von Shelly 3EM', flush=True)

Vielleicht klappt's danach mit der Ausgabe.

Vielen Dank für den Tipp, damit klappt die Ausgabe :)

harryinet commented 1 year ago

Heute mit Shelly 3PM und Script von der Selbstbau-PV Homepage auf RPI3+ installiert. Läuft super, Danke

greymda commented 6 months ago

@harryinet can you share the script you’re using for Shelly 3PM, please?

St31l commented 6 months ago

@harryinet can you share the script you’re using for Shelly 3PM, please?

Hi, the Skript is outdated, you should check out openDTU on Battery, which is a Skript like normal openDTU but it can directly talk to your 3PM without having to use the raspberry in between.

link:https://github.com/helgeerbe/OpenDTU-OnBattery

Rayn0r commented 6 months ago

@greymda
Based on this script, I created a fork here, which supports the Shelly Pro 3EM and also fixes the breaking changes in v24.2.12. Unfortunately I do not have the non-Pro version, so I was unable to test it. Any help is greatly appreciated.

The script has changed quite a lot, since I forked it. If @Selbstbau-PV would like to, I can create a PR for it to be merged here.