[98_Fronius.pm] Fronius API Modul

Begonnen von michael.winkler, 26 August 2020, 20:10:45

Vorheriges Thema - Nächstes Thema

fichtennadel

Zitat von: TechnoTron am 11 Januar 2024, 21:07:02Gibt es ein Reading über das man folgende Tageswerte bekommt?: PV-Erzeugung, PV-Eigenverbrauch, PV-Einspeisung, Netzbezug

Ich könnte zwar die readings immer summieren aber da kommt ein zu großer Fehler raus.

Reading keines, ich verwende ein DOIF, das um 23:59 Uhr die aktuellen Werte wegschreibt und für die Tageswerte die Differenz zum Vortag bildet.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

octek0815

#346
Zitat von: fichtennadel am 12 Januar 2024, 07:29:13
Zitat von: TechnoTron am 11 Januar 2024, 21:07:02Gibt es ein Reading über das man folgende Tageswerte bekommt?: PV-Erzeugung, PV-Eigenverbrauch, PV-Einspeisung, Netzbezug

Ich könnte zwar die readings immer summieren aber da kommt ein zu großer Fehler raus.

Reading keines, ich verwende ein DOIF, das um 23:59 Uhr die aktuellen Werte wegschreibt und für die Tageswerte die Differenz zum Vortag bildet.

So mache ich das auch. Aber ich lagere die Werte in ein Dummy Device aus.

Beispiel:

defmod Energie_PV_Erzeugung dummy
attr Energie_PV_Erzeugung devStateIcon {my $tag = sprintf("%.3f",ReadingsVal($name,"Tag",0));; my $monat = sprintf("%.3f",ReadingsVal($name,"Monat",0));; my $jahr = sprintf("%.3f",ReadingsVal($name,"Jahr",0));; my $vortag = sprintf("%.3f",ReadingsVal($name,"Vortag",0));; my $vormonat = sprintf("%.3f",ReadingsVal($name,"Vormonat",0));; my $vorjahr = sprintf("%.3f",ReadingsVal($name,"Vorjahr",0));; "<div>Tag: $tag kWh | Monat: $monat kWh | Jahr: $jahr kWh</div><div>Vortag: $vortag kWh | Vormonat: $vormonat kWh | Vorjahr: $vorjahr kWh</div>"}
attr Energie_PV_Erzeugung room Energie

defmod Energie_PV_Erzeugung_Berechnung DOIF ([([+:01]+55)])({ my $zaehlerstand = sprintf("%.3f",ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0));; my $vortag = ReadingsVal("Energie_PV_Erzeugung", "Zaehlerstand_Vortag", 0);; my $vormonat = ReadingsVal("Energie_PV_Erzeugung", "Zaehlerstand_Vormonat", 0);; my $vorjahr = ReadingsVal("Energie_PV_Erzeugung", "Zaehlerstand_Vorjahr", 0);; my $tag = $zaehlerstand - $vortag;; my $monat = $zaehlerstand - $vormonat;; my $jahr = $zaehlerstand - $vorjahr;; fhem("setreading Energie_PV_Erzeugung Zaehlerstand ".$zaehlerstand);; fhem("setreading Energie_PV_Erzeugung Tag ".sprintf("%.3f",$tag));; fhem("setreading Energie_PV_Erzeugung Monat ".sprintf("%.3f",$monat));; fhem("setreading Energie_PV_Erzeugung Jahr ".sprintf("%.3f",$jahr));; }) \
DOELSEIF ([23:59:58])({ my $tag = ReadingsVal("Energie_PV_Erzeugung", "Tag", 0);; my $zaehlerstand = ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0);; fhem("setreading Energie_PV_Erzeugung Vortag ".$tag);; fhem("setreading Energie_PV_Erzeugung Zaehlerstand_Vortag ".$zaehlerstand);; }) \
DOELSEIF ([23:59:57] and ($month==2) and (strftime ("%d",localtime time+86400) == 1))({ my $monat = ReadingsVal("Energie_PV_Erzeugung", "Monat", 0);; my $zaehlerstand = ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0);; fhem("setreading Energie_PV_Erzeugung Vormonat ".$monat);; fhem("setreading Energie_PV_Erzeugung Zaehlerstand_Vormonat ".$zaehlerstand);; }) \
DOELSEIF ([23:59:57] and (($month==4) or ($month==6) or ($month==9) or ($month==11)) and ($mday==30))({ my $monat = ReadingsVal("Energie_PV_Erzeugung", "Monat", 0);; my $zaehlerstand = ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0);; fhem("setreading Energie_PV_Erzeugung Vormonat ".$monat);; fhem("setreading Energie_PV_Erzeugung Zaehlerstand_Vormonat ".$zaehlerstand);; }) \
DOELSEIF ([23:59:57] and (($month==1) or ($month==3) or ($month==5) or ($month==7) or ($month==8) or ($month==10) or ($month==12)) and ($mday==31))({ my $monat = ReadingsVal("Energie_PV_Erzeugung", "Monat", 0);; my $zaehlerstand = ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0);; fhem("setreading Energie_PV_Erzeugung Vormonat ".$monat);; fhem("setreading Energie_PV_Erzeugung Zaehlerstand_Vormonat ".$zaehlerstand);; }) \
DOELSEIF ([23:59:56] and ($month==12) and ($mday==31))({ my $jahr = ReadingsVal("Energie_PV_Erzeugung", "Jahr", 0);; my $zaehlerstand = ReadingsVal("Energie_PV_WR1", "PowerFlow_Site_E_Total", 0);; fhem("setreading Energie_PV_Erzeugung Vorjahr ".$jahr);; fhem("setreading Energie_PV_Erzeugung Zaehlerstand_Vorjahr ".$zaehlerstand);; })
attr Energie_PV_Erzeugung_Berechnung do always
attr Energie_PV_Erzeugung_Berechnung icon helper_doif
attr Energie_PV_Erzeugung_Berechnung room Energie

Die Werte für Jahr, Monat, Tag, Vorjahr, Vormonat, Vortag, Zaehlerstand, Zaehlerstand_Vorjahr, Zaehlerstand_Vormonat, Zaehlerstand_Vortag sollten im Dummy vorab auf Null gesetzt werden.

Das geht mit Sicherheit besser, aber bei mir funktioniert das so zuverlässig. Hatte vorher mit den Modulen Statistics oder ElectricityCalculator immer wieder Probleme.

LG

hugomckinley

Zählerstände habe ich zwar nicht, aber die Werte der Tage usw.
Ich mach das mit dbRep.

Vielleicht ist was brauchbares dabei.
https://forum.fhem.de/index.php?topic=127120.msg1216565
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

yep_DD

Hallo zusammen,

ich habe nun das Modul 76_SolarForecast mit eingebunden und würde gern eine Möglichkeit haben, die SOC der Batterie über den Fronius zu steuern. Das müsste eigentlich über den StorageController gehen:

                "BatteryMaxDischargePercent" : [40356, "uint16", 1],
                "BatteryMaxChargePercent" : [40357, "uint16", 1],

Wäre das viel Aufwand, dies miteinzubauen?

Viele Grüße

fichtennadel

Zitat von: yep_DD am 26 Januar 2024, 16:37:22ich habe nun das Modul 76_SolarForecast mit eingebunden und würde gern eine Möglichkeit haben, die SOC der Batterie über den Fronius zu steuern. Das müsste eigentlich über den StorageController gehen:

                "BatteryMaxDischargePercent" : [40356, "uint16", 1],
                "BatteryMaxChargePercent" : [40357, "uint16", 1],


Woher stammt dieser Doku-Auszug? In der Fronius Solar API V1 Doku (https://www.fronius.com/~/downloads/Solar%20Energy/Operating%20Instructions/42,0410,2012.pdf) finde ich nichts zu BatteryMax... und ich habe auch keine Batterie, um das selbst zu testen.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

hugomckinley

Kann man den Fronius-Smartmeter in 1-3sec Abständen über das API auslesen und wenn ja sind die Werte tatsächlich aktuell?
Ich möchte darüber die Vorgabe für die Nulleinspeisung machen und brauche mindestens alle 2-3sec den aktuellen Verbrauchswert.
Ich habe noch keinen Fronius Smartmeter und muss es aber vor dem Verteilerumbau wissen, ob ich meinen SDM630 zusätzlich brauche, oder ich ihn durch das API vom Fronius ersetzen kann.
Güße,
Hugo
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

fhainz

Zitat von: hugomckinley am 27 Januar 2024, 11:05:07Kann man den Fronius-Smartmeter in 1-3sec Abständen über das API auslesen und wenn ja sind die Werte tatsächlich aktuell?
Ich möchte darüber die Vorgabe für die Nulleinspeisung machen und brauche mindestens alle 2-3sec den aktuellen Verbrauchswert.
Ich habe noch keinen Fronius Smartmeter und muss es aber vor dem Verteilerumbau wissen, ob ich meinen SDM630 zusätzlich brauche, oder ich ihn durch das API vom Fronius ersetzen kann.
Güße,
Hugo

Mit dem Fronius Smartmeter kannst du die Nulleinspeisung direkt am Wechselrichter einstellen. Ich persönlich würde das direkt über den WR lösen wenn der Netzbetreiber die Nulleinspeisung dir vorschreibt.

yep_DD

Das ist aus der ModBus API Dokumentation. Inzwischen habe ich es manuell eingebunden und es funktioniert auch auch sehr gut. Allerdings musste ich ich bei den Registern immer eins abziehen, also 40356 -> 40355. Ich verwende int+SF.

hugomckinley

ZitatMit dem Fronius Smartmeter kannst du die Nulleinspeisung direkt am Wechselrichter einstellen. Ich persönlich würde das direkt über den WR lösen wenn der Netzbetreiber die Nulleinspeisung dir vorschreibt.
Der Anwendungsfall ist unabhängig vom Fronius WR. (Hier bin ich auf 6kW Einspeisung limitiert, daher der Fronius Smart Meter)
Ich will mit einem AC gekoppelten Akku Null Einspeisung machen wenn ich keine/zu wenig Sonne habe.
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

fichtennadel

Zitat von: yep_DD am 28 Januar 2024, 14:06:34Das ist aus der ModBus API Dokumentation. Inzwischen habe ich es manuell eingebunden und es funktioniert auch auch sehr gut. Allerdings musste ich ich bei den Registern immer eins abziehen, also 40356 -> 40355. Ich verwende int+SF.

Interesssant, anscheinend werden da über ModBus andere Messpunkte angeboten, im http API konnte ich die nicht finden. Das mit eins abziehen habe ich bei einer anderen ModBus Schittstelle (Stiebel WP) auch, die beginnen meist bei 0 zu zählen.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

fichtennadel

Zitat von: hugomckinley am 27 Januar 2024, 11:05:07Kann man den Fronius-Smartmeter in 1-3sec Abständen über das API auslesen ...

Aus der API Doku:
Up to 2 realtime requests are allowed to be performed in parallel with keeping a timeout of 4 seconds between
two consecutive calls.
Archive requests are not allowed to be performed in parallel and need to keep a timeout of 120 seconds between
two consecutive calls.

Im Modul kannst Du bei Realtime kürzere Intervalle angeben, aber was das für die Last am WR bedeutet, weiß ich nicht.

Zitat von: hugomckinley am 27 Januar 2024, 11:05:07... wenn ja sind die Werte tatsächlich aktuell?

Das kann letztlich nur Fronius beantworten, wie aktuell deren Werte aus dem API sind.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

hugomckinley

Zitat von: fichtennadel am 29 Januar 2024, 09:03:16Im Modul kannst Du bei Realtime kürzere Intervalle angeben, aber was das für die Last am WR bedeutet, weiß ich nicht.

Zitat... wenn ja sind die Werte tatsächlich aktuell?

Das kann letztlich nur Fronius beantworten, wie aktuell deren Werte aus dem API sind.

2sec funktionieren anscheinend auch noch problemlos.
Ich nehme an/hoffe, dass die Smartmeterdaten auch in diesen Abständen aktualisiert werden, da der WR ja auch selbst die Einspeisung begrenzen muss.
Ich hätte nur gehofft, dass wer von euch das in solchen Abständen ausliest und nutzt und mir berichten kann. Dann werde ich das Ende März sein ;-)
----------------------------------------------------
FHEM in TrueNAS-Jail
HMLGW + HM-Komponenten, alexa-fhem, Modbus/TCP, Modbus/RS485, LG-WebOS, Firmata, 1wire, ESP-RGBWW, DaikinAC per WLAN, Shellys, Denon AVR, Fronius WR, Helios Wohnraumlüftung, ...

fichtennadel

Zitat von: hugomckinley am 31 Januar 2024, 11:59:412sec funktionieren anscheinend auch noch problemlos.
Ich nehme an/hoffe, dass die Smartmeterdaten auch in diesen Abständen aktualisiert werden, da der WR ja auch selbst die Einspeisung begrenzen muss.
Ich hätte nur gehofft, dass wer von euch das in solchen Abständen ausliest und nutzt und mir berichten kann. Dann werde ich das Ende März sein ;-)

Ja, ich denke auch, die Web-Anzeige des Wechselrichters pollt auch alle 2s.

Ich nutze nur mehr die Archive-Werte, weil die Realtimezahlen mit größeren Intervallen auf Grund der unterschiedlichen Abfragezeitpunkte nicht für konsistente Berechnungen brauchbar waren und ich nur die "historische" und keine Echtzeitbetrachtung benötige.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP)

kask

#358
Ich habe zu dem Symo ein Victron-system und das VenusOS addon polled gefüllte 200ms oder gar noch schneller die Anfragen an das Fronius Smartmeter.
Also das Fronius Smartmeter kann das locker.

Edit:
Es sind 54Sekunden für 256 abfragen. Also um die 210ms im mittel. Die Abfrageintervalle sind auch nicht 100% homogen. Mal etwas schneller mal etwas langsamer. Vermutlich nach Systemrechenlast.

Jackie

Hallo,

in letzter Zeit habe ich immer wieder das Problem, dass das Modul morgens nach dem Aufwachen den Fronius nicht mehr findet, ich muss dann immer einmal auf "DEF" klicken, bestätigen und die fhem.cfg einmal speichern damit das wieder geht. Gibt es hier einen lang wirksamen Mechanism,us um das Verhalten zu verhindern?
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...