[98_Fronius.pm] Fronius API Modul

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

Vorheriges Thema - Nächstes Thema

fadi1

Hallo
der Fehler ist ein Bug bei der Zeitumstellung in den Bereich wo die "$isdst" var verwendet wird.


       elsif ($type eq "GetArchiveData") {
                my $today = time;
                my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 2).":00", localtime($today - 300);
                my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 2).":00", localtime;
                $SendUrl   = "http://" . $hash->{helper}{VARS}{FroniusIP} . $hash->{helper}{VARS}{FroniusBaseURL} . "GetArchiveData.cgi?Scope=System&StartDate=$StartDate&EndDate=$EndDate&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2";
                        }
       

ich habe bei den beiden Stellen die Variabel von ($isdst + 1) auf ($isdst + 2) geändert dann geht es wieder.

ich glaube da muss Michael nochmals dran

kask

#241
Zitat von: kask am 13 November 2022, 21:34:03Es ist das daylight saving time Problem.

hier ein Fix für das 98_Fronius Perlmodul.
Zeile 354/355
(Bin kein perl profi..funktioniert aber scheinbar so! Immer her mit besseren Ideen für das nächste mal ;) )

elsif ($type eq "GetArchiveData") {
my $today = time;
my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 1).":00", localtime($today - 300);
my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 1).":00", localtime;
                #original:
#my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+02:00", localtime($today - 300);
#my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+02:00", localtime;
$SendUrl   = "http://" . $hash->{helper}{VARS}{FroniusIP} . $hash->{helper}{VARS}{FroniusBaseURL} . "GetArchiveData.cgi?Scope=System&StartDate=$StartDate&EndDate=$EndDate&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2";
}



 ;) ..war wohl ich :( Da war mir nicht klar das die variable $isdst nicht im modul verfügbar ist. Und bei den test war es Winterzeit und somit war $isdst eh "0"..hmpf

Wie folgt sollte es gehen. habe das besser getestet.
Zitat von: kask am 01 April 2023, 18:03:35Pünktlich zur Sommerzeit funktioniert das mit dem MPPT_DC Daten wieder nicht.
Ich habe jetzt den halben tag rumprobiert warum das mit der Sommer/Winterzeit nicht funktioniert und habe versucht das zu fixen.
Und irgendwie funktioniert die globale $isdst variable nicht im dem modul.

Ich musste die variable neu nachbilden damit das im modul fuktioniert. Keine Ahnung warum. Weiß einer warum die globale variable nicht funktioniert?

so geht es jetzt mit der Sommerzeit.
#geht wenn $isdst nachgebildet wird
                #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
#my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 1).":00", localtime($today - 60);
#my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 1).":00", localtime;
                #geht auch wenn nur das dst-element der localtime abgefragt wird
my $hour_req = (((localtime(time))[8])+1);
my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".$hour_req.":00", localtime($today - 60);
my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".$hour_req.":00", localtime;



wendeling

Hallo,
bei mir läuft das Modul sehr gut.
Jetzt möchte ich gerne die Leistung der beiden Strings einzeln aufzeichnen.
Wie kann ich das machen , welche readings muss ich nehmen ?

Gruß
wendelin

fadi1

Hallo Wendelin,
die "MPPT1_DC_X" und "MPPT2_DC_X" bringten Dir die beiden Strings einzeln. leider nur aus dem Archiv und damit nur alle 5 Minuten einer Wertänderung. Du kannst aber die Livedaten leicht berechnen, siehe dazu
https://forum.fhem.de/index.php?msg=1264576
und du wirst die oben vorgeschlagene Änderung von "kask" brauchen damit da überhaupt Daten kommen (sind wahrscheinlich derzeit "0" solange Sommerzeit ist) -> das betrifft nur die MPPT Daten da alle anderen Live sind funktionieren alle anderen auch ohne Änderung

lg
Martin


Revolvermann

Guten Tag,

vielleicht kann mir jemand weiterhelfen,
ich würde die Werte abfragen (Lastmanagement)
"LEGACY_MODE_POWERMANAGEMENT_RELAY_1_U16" : 1.0,
"LEGACY_MODE_POWERMANAGEMENT_RELAY_2_U16" : 0.0,
"LEGACY_MODE_POWERMANAGEMENT_RELAY_3_U16" : 0.0,
"LEGACY_MODE_POWERMANAGEMENT_RELAY_4_U16" : 0.0,
von
http://xxx.xxx.xxx.xxx/components/readable
benötigen.
Habe aber keine Ahnung wie ich das als Reading integrieren soll.

Kann mir hier vielleicht jemand weiterhelfen?

Vielen Dank und lg,
Andreas

Jackie

Zitat von: fadi1 am 03 April 2023, 19:19:28Hallo
der Fehler ist ein Bug bei der Zeitumstellung in den Bereich wo die "$isdst" var verwendet wird.


       elsif ($type eq "GetArchiveData") {
                my $today = time;
                my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 2).":00", localtime($today - 300);
                my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + 2).":00", localtime;
                $SendUrl   = "http://" . $hash->{helper}{VARS}{FroniusIP} . $hash->{helper}{VARS}{FroniusBaseURL} . "GetArchiveData.cgi?Scope=System&StartDate=$StartDate&EndDate=$EndDate&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2";
                        }
       

ich habe bei den beiden Stellen die Variabel von ($isdst + 1) auf ($isdst + 2) geändert dann geht es wieder.

ich glaube da muss Michael nochmals dran

Hallo, ich kann bestätigen dass es mit diesem Workaround funktioniert, aber vermutlich nur bis wieder Winterzeit ist oder? Ein genereller Fix des Problems im Modul wäre sehr willkommen :-) Vielen Dank ;-)
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

Trinidad

elsif ($type eq "GetArchiveData") {
my $today = time;
my $offset = strftime("%z", localtime) / 100;
my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + $offset).":00", localtime($today - 300);
my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + $offset).":00", localtime;
$SendUrl   = "http://" . $hash->{helper}{VARS}{FroniusIP} . $hash->{helper}{VARS}{FroniusBaseURL} . "GetArchiveData.cgi?Scope=System&StartDate=$StartDate&EndDate=$EndDate&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2";
}

Sollte so automatisch mit der Sommer/Winterzeitumschaltung gehen.

capo

Hallo zusammen,
super Modul, vielen Dank dafür.
Habe seit kurzem Symo 17.5-3-M mit Smart Meter 63A am Start.
MPPT-Werte bekomme ich auch mit der Korrektur von Trinidad alle 5 Minuten.
Jetzt wollte ich noch die Änderung von fadi1 zur Berechnung der laufenden Werte einbauen, nur bin da als newbee aufgeschmissen.

Wo mach ich da genau was?

#Werte berechnen
    #div durch 0 verhindern
    if($Symo_6_String1 + $Symo_6_String2 > 0.1) {
            #Faktor berechnen "MPPT1_DC_W /(MPPT1_DC_W + MPPT2_DC_W)"
        $Symo_6_PV_Wirk1=($Symo_6_String1/($Symo_6_String1+$Symo_6_String2));
        $Symo_6_PV_Wirk2=($Symo_6_String2/($Symo_6_String1+$Symo_6_String2));
            #den Wert berechnen "PowerFlow_Inverters_x_P x Faktor"
        $Symo_6_MPPT1=sprintf("%.0f",$Symo_6_P*$Symo_6_PV_Wirk1);
        $Symo_6_MPPT2=sprintf("%.0f",$Symo_6_P*$Symo_6_PV_Wirk2);
    }

wendeling

Zitat von: fadi1 am 11 April 2023, 15:26:47Hallo Wendelin,
die "MPPT1_DC_X" und "MPPT2_DC_X" bringten Dir die beiden Strings einzeln. leider nur aus dem Archiv und damit nur alle 5 Minuten einer Wertänderung. Du kannst aber die Livedaten leicht berechnen, siehe dazu
https://forum.fhem.de/index.php?msg=1264576
und du wirst die oben vorgeschlagene Änderung von "kask" brauchen damit da überhaupt Daten kommen (sind wahrscheinlich derzeit "0" solange Sommerzeit ist) -> das betrifft nur die MPPT Daten da alle anderen Live sind funktionieren alle anderen auch ohne Änderung

lg
Martin



Hallo,
bei mir heißen die MPPT1_DC_W sind das die Richtigen ?

kask


kask

Zitat von: Trinidad am 19 Mai 2023, 06:49:51    elsif ($type eq "GetArchiveData") {
        my $today = time;
        my $offset = strftime("%z", localtime) / 100;
        my $StartDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + $offset).":00", localtime($today - 300);
        my $EndDate = strftime "%Y-%m-%dT%H:%M:%S+0".($isdst + $offset).":00", localtime;
        $SendUrl   = "http://" . $hash->{helper}{VARS}{FroniusIP} . $hash->{helper}{VARS}{FroniusBaseURL} . "GetArchiveData.cgi?Scope=System&StartDate=$StartDate&EndDate=$EndDate&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2";
    }

Sollte so automatisch mit der Sommer/Winterzeitumschaltung gehen.

wird nicht gehen weil $isdst nicht in dem modul nicht verfügbar ist. steht aber schon hier

Trinidad

Zitat von: kask am 29 Mai 2023, 21:29:55wird nicht gehen weil $isdst nicht in dem modul nicht verfügbar ist. steht aber schon hier

Komisch, ich hab das so laufen und bekomme keine Fehlermeldungen und es läuft einwandfrei.

thanatos

Hallo Michael,

herzlichen Dank für das schöne Modul zum Fronius Wechselrichter.
Ich selbst habe einen Symo Gen24 und habe bin sehr zufrieden mit dem Modul und habe nur zwei kleinere Punkte zu einer möglichen Verbesserung:

1) Die Ausgabe "/solar_api/v1/GetPowerFlowRealtimeData.fcgi" ist bei "P_Load" vorzeichenbehaftet. Das Vorzeichen ist in der API auch dokumentiert (+: Hausnetz erzeugt, -: Hausnetz verbraucht) Könntest du bitte mal schauen, ob du das Vorzeichen entsprechend mit übernimmst? Mir scheint es, als würde es immer ein positives Vorzeichen haben.

2) Ich hattes es bisher zwei Mal, dass das Modul / FHEM unvermittelt die Konfiguration meiner Anlage vergessen hat. Somit wurden dann z.B. die Datensätze vom Smartmeter o.ä. nicht mehr abgefragt. Hier konnte ich mir nur helfen, den WR in FHEM zu löschen und neu einzurichten. Gibt es hier eine Möglichkeit, dass man die Konfiguration nochmal erneut abrufen kann (z.B. solar_api/v1/GetActiveDeviceInfo.cgi)? Das wäre in solch einem Fall sehr hilfreich.

Ansonsten bin ich mit dem Modul sehr glücklich und danke dir von Herzen für die investierte Zeit!

Grüße,
Marcus

antonwinden

Hallo,
erstmal danke für das Modul. Wo finde ich den Wert für die gesamt erzeugte Energie in kW?
danke Anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

octek0815

Zitat von: antonwinden am 21 Juni 2023, 10:04:21Hallo,
erstmal danke für das Modul. Wo finde ich den Wert für die gesamt erzeugte Energie in kW?
danke Anton

Das sollte "PowerFlow_Site_E_Total" sein.