Obwohl ich bewußt paar Tage später bezahlt habe, ist gestern über DPD und heute mit GLS der " schwere" Rest gekommen.
Vielen Dank an alle die hier mitgewirkt haben im besonderen an Marcus!
Gruß Manfred
1 kWp Ost / 3,7 kWp West / 34 kWh LiFePO4 Inselanlage
Moin zusammen . Mein einzeln bestellter MP2 ist auch heute angekommen. Die anderen beiden MP2 , em24 und cerbo lassen noch auf sich warten. Glaube aber das bei dem em24 6-8 Wochen dran steht
Vielen Dank für Eure Antworten! Ich habs mit den Teilen auch nicht eilig, alles bestens, wenn sie in zwei Monaten kommen. Ich muß auch erst noch die größere PV organisiert und aufs Dach bekommen 😉 Ich war nur irritiert, daß so viele Beiträge von Leuten kamen, die so extrem schnell ihre Teile bekommen haben.
@mastermind1 Habe das Skript aus dem dritten Link im Einsatz. Ich bin kein Python Programmierer, aber im Skript ist mir aufgefallen das kein Timeout für den Request verwendet wird und auch sonst kein Exceptionhandling außer HTTP Statuscodes stattfindet. Könnte man jetzt probieren einzubauen, aber ich denke nicht das ich die Zeit habe das so ausführlich zu testen wie das hoffentlich Victron mit der EM24 Lösung gemacht hat und der Teil muss meines Erachtens nach einfach zu 100% funktionieren.
Ich bin zwar kein Python Programmierer aber generell einer.
Ich habe auch vor genau aus meinem Fronius Wechselrichter die Daten zu ziehen.
Ich werde mich demnächst irgendwann definitiv damit befassen und das Skript anpassen. Mir gefällt da auch nicht, dass es im Fehlerfall einfach "nichts" mehr macht. Es sollte da wenigstens Standard Werte setzen, die bewirken, dass der MP2 nichts mehr einspeist oder explizit signalisieren, dass die Verbindung abgebrochen ist.
Meine Bestellung ist heute komplett eingetroffen, inkl EM24. Ich bin mir noch unschlüssig ob der Cerbo GX einer mit defekten Kondensator ist oder nicht, es lag zumindest keiner dabei.
Ich bin mir noch unschlüssig ob der Cerbo GX einer mit defekten Kondensator ist oder nicht
Das lässt sich ja nun sehr einfach an der Seriennummer erkennen.
Oliver
Ich bin mir noch unschlüssig ob der Cerbo GX einer mit defekten Kondensator ist oder nicht
Das lässt sich ja nun sehr einfach an der Seriennummer erkennen.
Oliver
Ist es aber nicht so, dass sich aktuell die Geister daran scheiden ob die Aussage von Victron mit der Serie von bis überhaupt noch aktuell ist, da die Aussage zu ner Zeit gemacht wurde, wo es noch keine neuere Serie gab....
Für mich bleibt ein fader Beigeschmack dass nur vergessen wurde das Statement zu aktualisieren und auch die neueren Serien zu nennen.
Aktuell läuft mein cerbo gx an einem hutschienen Netzteil von meanwell, für die trocken Übung..... (Fronius smartmeter Integration)
15KWp PV auf dem Dach mit 2x Fronius Symo WR
geplant ne zusätzliche Victron + Pylontech Lösung
Ist es aber nicht so, dass sich aktuell die Geister daran scheiden ob die Aussage von Victron mit der Serie von bis überhaupt noch aktuell ist, da die Aussage zu ner Zeit gemacht wurde, wo es noch keine neuere Serie gab....
Hm. Ich habe jetzt dreimal versucht, das angebliche Problem von Victron zu verstehen, aber irgendwie gelingt es mir nicht.
Ich sah mal so: Eine neue Version fällt ja nicht plötzlich vom Himmel in die Fertigung, und von dort in den Handel. Die kommt mit längerer Vorlaufzeit. Und da traue ich Victron doch schon zu, daß die auch schon zur Laufzeit der fehlerhaften Version sagen können, welchen Seriennummernkreis die darauf folgende bekommen wird, die den Serienfehler dann nicht mehr haben wird. Da geht es ja nicht um eine fortlaufende Nummer. Die Seriennummer von denen ist ja erkennbar mehrteilig aufgebaut, und nur der letzte Teil ist (vermutlich) fortlaufend.
Oliver
Sorry für offtopic, kann das Fronius Smart Meter am CerboGX betrieben werden? Ich hab nur Beiträge gefunden für den Betrieb an einem Raspberry und Venus OS. Hast du da einen Link zu weiteren Infos?
Sorry für offtopic, kann das Fronius Smart Meter am CerboGX betrieben werden? Ich hab nur Beiträge gefunden für den Betrieb an einem Raspberry und Venus OS. Hast du da einen Link zu weiteren Infos?
Hab ich hier schon mal beschrieben...
Das Skript läuft nach anfänglichen Schwierigkeiten auf meinem Cerbo GX seit +- 1,5 Wochen ohne Absturz.
15KWp PV auf dem Dach mit 2x Fronius Symo WR
geplant ne zusätzliche Victron + Pylontech Lösung
@mastermind1 Habe das Skript aus dem dritten Link im Einsatz. Ich bin kein Python Programmierer, aber im Skript ist mir aufgefallen das kein Timeout für den Request verwendet wird und auch sonst kein Exceptionhandling außer HTTP Statuscodes stattfindet. Könnte man jetzt probieren einzubauen, aber ich denke nicht das ich die Zeit habe das so ausführlich zu testen wie das hoffentlich Victron mit der EM24 Lösung gemacht hat und der Teil muss meines Erachtens nach einfach zu 100% funktionieren.
Ich bin zwar kein Python Programmierer aber generell einer.
Ich habe auch vor genau aus meinem Fronius Wechselrichter die Daten zu ziehen.
Ich werde mich demnächst irgendwann definitiv damit befassen und das Skript anpassen. Mir gefällt da auch nicht, dass es im Fehlerfall einfach "nichts" mehr macht. Es sollte da wenigstens Standard Werte setzen, die bewirken, dass der MP2 nichts mehr einspeist oder explizit signalisieren, dass die Verbindung abgebrochen ist.
Ging dann doch schneller als ich dachte, dass mein Cerbo GX bei mir ist. Man kann damit sehr schön ohne Multi rumspielen.
Man sollte die IP nicht direkt in das Skript schreiben, dafür ist der Parameter "--ip" im service "python3 dbus-fronius-smartmeter.py --ip 192.168.1.1".
Hier mal mein erster Entwurf, kann gerne mal gegen getestet werden, da bei mir der Victron noch nicht installiert ist, habe ich es rein im Cerbo getestet und es tat was es sollte. Sprich, wenn die Netzwerkverbindung nicht da ist wird 0 Watt ausgegeben. Die anderen Werte (Spannung / Frequenz...) werden aktuell nicht verändert.
Bitte nicht irgendwohin streuen, ich mache dafür noch nen github fork o.Ä. -> https://github.com/Steinies/venus.dbus-fronius-smartmeter
def _safe_update(self):
try:
self._update()
self._retries = 0
except Exception as e:
log.error('Error running update %s' % e)
self._retries += 1
self._failures += 1
self._invalidate()
if self._retries > 10:
log.error('Number of retries exceeded.')
sys.exit(1)
return True
def _get_meter_data(self):
now = time.time()
if self._testdata:
meter_r = json.loads(open('testdata Link entfernt ').read())
else:
meter_r = requests.get(url = self._url, timeout=2).json()
latency = time.time() - now
if self._latency:
self._latency = (9*self._latency + latency)/10
else:
self._latency = latency
return meter_r['Body']['Data']
def _update(self):
meter_data = self._get_meter_data()
MeterConsumption = meter_data['PowerReal_P_Sum']
self._dbusservice['/Ac/Power'] = MeterConsumption # positive: consumption, negative: feed into grid
self._dbusservice['/Ac/Frequency'] = meter_data['Frequency_Phase_Average']
self._dbusservice['/Ac/L1/Voltage'] = meter_data['Voltage_AC_Phase_1']
self._dbusservice['/Ac/L2/Voltage'] = meter_data['Voltage_AC_Phase_2']
self._dbusservice['/Ac/L3/Voltage'] = meter_data['Voltage_AC_Phase_3']
self._dbusservice['/Ac/L1/Current'] = meter_data['Current_AC_Phase_1']
self._dbusservice['/Ac/L2/Current'] = meter_data['Current_AC_Phase_2']
self._dbusservice['/Ac/L3/Current'] = meter_data['Current_AC_Phase_3']
self._dbusservice['/Ac/L1/Power'] = meter_data['PowerReal_P_Phase_1']
self._dbusservice['/Ac/L2/Power'] = meter_data['PowerReal_P_Phase_2']
self._dbusservice['/Ac/L3/Power'] = meter_data['PowerReal_P_Phase_3']
self._dbusservice['/Ac/Energy/Forward'] = float(meter_data['EnergyReal_WAC_Sum_Consumed']) / 1000.
self._dbusservice['/Ac/Energy/Reverse'] = float(meter_data['EnergyReal_WAC_Sum_Produced']) / 1000.
self._dbusservice['/Latency'] = self._latency
log.info("Meter Power: %s, Latency: %.1fms" % (MeterConsumption, self._latency*1000))
return meter_data
def _invalidate(self):
# in case we failed to get a response zero out to not get any depending devices to do stuff they shouldn't
# set to the wanted level of retries (0 on first failure, 1 ...)
if self._retries > 0:
self._dbusservice['/Ac/Power'] = 0.0
self._dbusservice['/Ac/L1/Current'] = 0.0
self._dbusservice['/Ac/L2/Current'] = 0.0
self._dbusservice['/Ac/L3/Current'] = 0.0
self._dbusservice['/Ac/L1/Power'] = 0.0
self._dbusservice['/Ac/L2/Power'] = 0.0
self._dbusservice['/Ac/L3/Power'] = 0.0
self._dbusservice['/Latency'] = 0
log.info("Set Meter Power: 0 because of failure!")
return None
Einfach ab _safe_update() bis main() überschreiben und nach Bedarf anpassen.
Bedanke mich auch hier: Heute alles zusammen gekommen.
Vielen dank, MP2 schon zum Testen Programmiert - funktioniert !!
TOP
an allen ein DANKE
@mastermind1 Habe das Skript aus dem dritten Link im Einsatz. Ich bin kein Python Programmierer, aber im Skript ist mir aufgefallen das kein Timeout für den Request verwendet wird und auch sonst kein Exceptionhandling außer HTTP Statuscodes stattfindet. Könnte man jetzt probieren einzubauen, aber ich denke nicht das ich die Zeit habe das so ausführlich zu testen wie das hoffentlich Victron mit der EM24 Lösung gemacht hat und der Teil muss meines Erachtens nach einfach zu 100% funktionieren.
Ich bin zwar kein Python Programmierer aber generell einer.
Ich habe auch vor genau aus meinem Fronius Wechselrichter die Daten zu ziehen.
Ich werde mich demnächst irgendwann definitiv damit befassen und das Skript anpassen. Mir gefällt da auch nicht, dass es im Fehlerfall einfach "nichts" mehr macht. Es sollte da wenigstens Standard Werte setzen, die bewirken, dass der MP2 nichts mehr einspeist oder explizit signalisieren, dass die Verbindung abgebrochen ist.
Ging dann doch schneller als ich dachte, dass mein Cerbo GX bei mir ist. Man kann damit sehr schön ohne Multi rumspielen.
Man sollte die IP nicht direkt in das Skript schreiben, dafür ist der Parameter "--ip" im service "python3 dbus-fronius-smartmeter.py --ip 192.168.1.1".
Hier mal mein erster Entwurf, kann gerne mal gegen getestet werden, da bei mir der Victron noch nicht installiert ist, habe ich es rein im Cerbo getestet und es tat was es sollte. Sprich, wenn die Netzwerkverbindung nicht da ist wird 0 Watt ausgegeben. Die anderen Werte (Spannung / Frequenz...) werden aktuell nicht verändert.
Bitte nicht irgendwohin streuen, ich mache dafür noch nen github fork o.Ä.
def _safe_update(self): try: self._update() self._retries = 0 except Exception as e: log.error('Error running update %s' % e) self._retries += 1 self._failures += 1 self._invalidate() if self._retries > 10: log.error('Number of retries exceeded.') sys.exit(1) return True def _get_meter_data(self): now = time.time() if self._testdata: meter_r = json.loads(open('testdata Link entfernt ').read()) else: meter_r = requests.get(url = self._url, timeout=2).json() latency = time.time() - now if self._latency: self._latency = (9*self._latency + latency)/10 else: self._latency = latency return meter_r['Body']['Data'] def _update(self): meter_data = self._get_meter_data() MeterConsumption = meter_data['PowerReal_P_Sum'] self._dbusservice['/Ac/Power'] = MeterConsumption # positive: consumption, negative: feed into grid self._dbusservice['/Ac/Frequency'] = meter_data['Frequency_Phase_Average'] self._dbusservice['/Ac/L1/Voltage'] = meter_data['Voltage_AC_Phase_1'] self._dbusservice['/Ac/L2/Voltage'] = meter_data['Voltage_AC_Phase_2'] self._dbusservice['/Ac/L3/Voltage'] = meter_data['Voltage_AC_Phase_3'] self._dbusservice['/Ac/L1/Current'] = meter_data['Current_AC_Phase_1'] self._dbusservice['/Ac/L2/Current'] = meter_data['Current_AC_Phase_2'] self._dbusservice['/Ac/L3/Current'] = meter_data['Current_AC_Phase_3'] self._dbusservice['/Ac/L1/Power'] = meter_data['PowerReal_P_Phase_1'] self._dbusservice['/Ac/L2/Power'] = meter_data['PowerReal_P_Phase_2'] self._dbusservice['/Ac/L3/Power'] = meter_data['PowerReal_P_Phase_3'] self._dbusservice['/Ac/Energy/Forward'] = float(meter_data['EnergyReal_WAC_Sum_Consumed']) / 1000. self._dbusservice['/Ac/Energy/Reverse'] = float(meter_data['EnergyReal_WAC_Sum_Produced']) / 1000. self._dbusservice['/Latency'] = self._latency log.info("Meter Power: %s, Latency: %.1fms" % (MeterConsumption, self._latency*1000)) return meter_data def _invalidate(self): # in case we failed to get a response zero out to not get any depending devices to do stuff they shouldn't # set to the wanted level of retries (0 on first failure, 1 ...) if self._retries > 0: self._dbusservice['/Ac/Power'] = 0.0 self._dbusservice['/Ac/L1/Current'] = 0.0 self._dbusservice['/Ac/L2/Current'] = 0.0 self._dbusservice['/Ac/L3/Current'] = 0.0 self._dbusservice['/Ac/L1/Power'] = 0.0 self._dbusservice['/Ac/L2/Power'] = 0.0 self._dbusservice['/Ac/L3/Power'] = 0.0 self._dbusservice['/Latency'] = 0 log.info("Set Meter Power: 0 because of failure!") return None
Einfach ab _safe_update() bis main() überschreiben und nach Bedarf anpassen.
Danke !
Läuft und auch der erste Test mit gezogenem Netzwerkstecker meines Fronius WR, war erfolgreich.
Nach dem hinterlegten Timeout + Anzahl ist das Fronius Smartmeter aus dem Energiefluss entfernt worden...
Nachdem ich den WR wieder eingesteckt habe, ist das Fronius Smartmeter nach ner gewissen Bedenkzeit wieder automatisch reingerutscht.
Jetzt lass ich das Skript mal als Trockenübung wieder neu Zeit laufen um zu sehen ob es durchläuft.
Top, so solls sein.
Eins sollte man noch anmerken, man sollte den Skriptordner sichern. Ich weiss nicht wie sich ein versehentliches Firmwareupdate verhält.
Ob das mit der Verlinkung in RC.LOCAL dauerhaft funktioniert, oder man da bei Bedarf nochmals Hand anlegen muss...
Aber das nur als Randnotiz
15KWp PV auf dem Dach mit 2x Fronius Symo WR
geplant ne zusätzliche Victron + Pylontech Lösung
Moin zusammen. Meine Bestellung ist auch heute angekommen.
laut Internet habe ich mit meinem cerbo Glück gehabt und bin nicht betroffen mit dem Kondensator .
vielen Dank fürs organisieren und an Panda Solar 👍
Danke !
Läuft und auch der erste Test mit gezogenem Netzwerkstecker meines Fronius WR, war erfolgreich.
Nach dem hinterlegten Timeout + Anzahl ist das Fronius Smartmeter aus dem Energiefluss entfernt worden...
Nachdem ich den WR wieder eingesteckt habe, ist das Fronius Smartmeter nach ner gewissen Bedenkzeit wieder automatisch reingerutscht.
Jetzt lass ich das Skript mal als Trockenübung wieder neu Zeit laufen um zu sehen ob es durchläuft.
Top, so solls sein.
Eins sollte man noch anmerken, man sollte den Skriptordner sichern. Ich weiss nicht wie sich ein versehentliches Firmwareupdate verhält.
Ob das mit der Verlinkung in RC.LOCAL dauerhaft funktioniert, oder man da bei Bedarf nochmals Hand anlegen muss...
Aber das nur als Randnotiz
Super, danke für den Gegentest.
Das beschriebene Verhalten sollte schon vorher da gewesen sein. Durch meine Ergänzung geht er nach dem ersten Timeout direkt auf 0 und entfernt dann nach 10*Timeout das Smartmeter.
Theoretisch sollte es möglich sein den Timeout noch weiter zu senken... Man hat da meist höchstens 50ms vom ganzen Ablauf. Aber 2 Sek ist schon ok.
Zwecks Firmewareupdate. Alles in /data sollte erhalten bleiben. Daher funktioniert das mit dem rc.local genau dadurch. Aber natürlich, immer backups vorhalten!