[98_Fronius.pm] Fronius API Modul

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

Vorheriges Thema - Nächstes Thema

carlos

Hallo Michael,
Zur Info, in der sub fronius_Notify ist auch noch ein falscher log3 Eintrag:

sub fronius_Notify($$) {
my ($hash,$dev) = @_;
my $name = $hash->{NAME};
return if($dev->{NAME} ne "global");
return if(!grep(m/^INITIALIZED|REREADCFG$/, @{$dev->{CHANGED}}));

Log3 "echodevice", 4, "[$name] [echodevice_Notify] echodevice: notify reload";

return undef;
}


Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

geoker

Tolles Modul. Vielen herzlichen Dank dafür!

Verbesserungsidee:
Ich habe in der Verteilung umgebaut. FHEM war vor WR am Netz bzw. mit IP versorgt. Er stand auf Disconnected und die Verbindung wurde erst mit einem "shutdown restart" im FHEM wieder hergestellt.
Es wäre schön einen Verbindungsaufbau / Refresh über ein Kommando direkt triggern zu können. Auch zu Testzwecken.



knopf_piano

#77
Servus,
Top Modul, danke.
die Kiste über json2reading abzubilden, war mein erster Gedanke - doch Such im Forum in halt Gold wert.
Ein paar Auffälligkeiten, die ich mit reingenommen hab - bei mir funzt das jetzt top - auch in Verbindung mit mit der statistic.

  • Korrektur des Comulativ - Cumulative
  • Einbau des erwähnten at-devices, da nicht alle Werte erfasst werden, das modify tut den Zweck, danke!
  • Korrektur der api-calls

Bei call von
erhält man mit Einsetzen der DeviceID bei diesen calls (ip-adresse ersetzt, muss mit DeviceID=1 aufgerufen werden

http://<ip>/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CumulationInverterData
http://<ip>/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
http://<ip>/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=3PInverterData

Wenn man seine DeviceID z.B. 12345678 einsetzt erhält man

Invalid parameter '12345678' for attribute 'DeviceId' (has to be '1')."


Korrektur der Funktion anbei:


#########################
sub fronius_SendCommand($$$) {
    my ( $hash, $type, $SendData ) = @_;
my $name = $hash->{NAME};

Log3 $name, 4, "[$name] [fronius_SendCommand] [$type] START";

# JSON Auswertung
if ($type eq "GetAPIVersionInfo") {
        $SendUrl   = "http://" . $FroniusIP . "/solar_api/GetAPIVersion.cgi";
}
elsif ($type eq "GetPowerFlowRealtimeData") {
        $SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetPowerFlowRealtimeData.fcgi";
}
elsif ($type eq "GetStorageRealtimeData") {
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetStorageRealtimeData.cgi?Scope=System&DeviceId=$SendData";
}
elsif ($type eq "GetMeterRealtimeData") {
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetMeterRealtimeData.cgi?Scope=System&DeviceId=$SendData";
}
elsif ($type eq "GetActiveDeviceInfo") {
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetActiveDeviceInfo.cgi?DeviceClass=System";
}
elsif ($type eq "GetInverterRealtimeData_System") {
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=System";
}
elsif ($type eq "GetInverterRealtimeData_Cumulation") {
#$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=$SendData&DataCollection=CumulationInverterData";
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CumulationInverterData";
}
elsif ($type eq "GetInverterRealtimeData_Common") {
#$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=$SendData&DataCollection=CommonInverterData";
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData";
}
elsif ($type eq "GetInverterRealtimeData_3P") {
#$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=$SendData&DataCollection=3PInverterData";
$SendUrl   = "http://" . $FroniusIP . $FroniusBaseURL . "GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=3PInverterData";
}
else {
Log3 $name, 3, "[$name] [fronius_SendCommand] [$type] ERROR=Type is unkown!!";
return;
}

#2018.01.14 - PushToCmdQueue
if ($FroniusBaseURL eq "nA" && $type ne "GetAPIVersionInfo") {
Log3 $name, 4, "[$name] [fronius_SendCommand] [$type] NOT PushToCmdQueue ERROR=Fronus API Base URL not set!";
}
else {

#2018.01.14 - Übergabe SendCommandQuery
$SendParam = {
url             => $SendUrl,
hash            => $hash,
#data            => $SendData,
#method          => $SendMetode,
CL              => $hash->{CL},
httpversion     => "1.1",
type            => $type
};

Log3 $name, 4, "[$name] [fronius_SendCommand] [$type] PushToCmdQueue SendURL =" . $SendUrl;
push @{$hash->{helper}{CMD_QUEUE}}, $SendParam; 
fronius_HandleCmdQueue($hash);
}

return;
}

zotac nano mit proxmox und ganz viel zeug drauf

carlos

Verstehe ich nicht ganz, muss dass die 1 sein.
Es gibt doch ein Attribute DeviceId das benutzt werden kann.
Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

michael.winkler

#79
Auf Seite 1 gibt es eine neue Version


##############################################
#
# 2021.10.19 v0.0.5
# - BUG:     https://forum.fhem.de/index.php/topic,113850.msg1156141.html#msg1156141 (Danke carlos)
#
# 2021.04.13 v0.0.4
# - CHANGE:  Meldung [name] [fronius_setState] to connected entfernt
#
# 2020.08.28 v0.0.3
# - BUG:     Write Boolean Data from JSON
# - CHANGE:  Logging
#

carlos


Hallo Michael,
der log eintrag im notify ist immer noch falsch:
Log3 "echodevice", 4, "[$name] [echodevice_Notify] echodevice: notify reload";
Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

michael.winkler

Auf Seite 1 gibt es eine neue Version


##############################################
#
# 2021.10.20 v0.0.6
# - BUG:     https://forum.fhem.de/index.php/topic,113850.msg1180843.html#msg1180843 (Danke carlos)
#

carlos

Danke Michael
Zur Info, ich mache das in meinen modulen so:


...
    my $sub_name = (caller(0))[3];
...
   Log3 $name, 4, "[$name] [$sub_name] reload";




Es gibt noch mehr Info dazu, die man verwenden kann:

# Me
$me = ( caller(0) )[3];

# Parent
$parent = ( caller(1) )[3];


Für Interessierte z.B. hier nach zu lesen :
https://kb.wisc.edu/iam/page.php?id=4309

Das macht die log Geschichte etwas einfacher.
Ok, hätte ich vielleicht vorher schreiben sollen.
Aber wem's gefällt der kann es ja so machen.

Aber hat nichts mit dem Topic zu tun, deshalb jetzt Schluß damit

Gruß
Carlo
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Vorhand

Hallo Michael,
hab seit einigen Tagen den Effekt, dass die Aufzeichnung morgens - ab und zu - nicht mehr startet. Der Status steht auf "connected", aber es kommen keine Werte mehr vom Fronius. Das Gleiche hatte ich auch schon mal bei einem Fhem-Neustart, dann allerdings mit "disconnected".
Wenn ich dann auf DEF gehe und die IP des Umrichters erscheint, genügt ein click auf "Modify..." und schon geht alles wieder, als wäre nichts gewesen.
Ich nutze die aktuelle Version.
Danke.
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

sn0000py

Hallo ne Frage

Hat wer einen GEN24 Wechselrichter mit Batterie und geschaft den "Minimales Ladelimit" per code zu setzen?
Also den Wert unter den im Normalfall die Batterie in Prozent nicht geht?

Ich würde diesen gerne immer setzen aufgrund der Vorhersage für den nächsten Tag - sprich wenn am nächsten Tag alles wolkig ist, dann sollte der über die Nacht auf 15% stehen, wenn aber für den nächsten Tag sonnig angesagt ist, dann darf er auf 5% runter gehen,

rohlande

#85
Zitat von: Vorhand am 14 November 2021, 17:04:21
Hallo Michael,
hab seit einigen Tagen den Effekt, dass die Aufzeichnung morgens - ab und zu - nicht mehr startet. Der Status steht auf "connected", aber es kommen keine Werte mehr vom Fronius. Das Gleiche hatte ich auch schon mal bei einem Fhem-Neustart, dann allerdings mit "disconnected".
Wenn ich dann auf DEF gehe und die IP des Umrichters erscheint, genügt ein click auf "Modify..." und schon geht alles wieder, als wäre nichts gewesen.
Ich nutze die aktuelle Version.
Danke.

Hallo Michael

Danke für das Modul.
Kann ich so bestätigen. Nach Fhem Neustart steht die Verbindung auf disconnected. Dabei gilt zu erwähnen, dass ich die Funktion innerhalb des WR so eingestellt habe, dass dieser bei PV = 0W ausgeschalten wird. Also über Nacht. Sobald dieser aber wieder anspringt sollte der connect automatisch wieder kommen. Dem scheint nicht so zu sein. Kann man das Modul mit einem aktiven Request als "set" versehen? Dann könnte man das "modify" nutzen umgehen im DEF.

VG Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

knopf_piano

#86
Zitat von: rohlande am 13 Dezember 2021, 14:04:20
Hallo Michael

Danke für das Modul.
Kann ich so bestätigen. Nach Fhem Neustart steht die Verbindung auf disconnected. Dabei gilt zu erwähnen, dass ich die Funktion innerhalb des WR so eingestellt habe, dass dieser bei PV = 0W ausgeschalten wird. Also über Nacht. Sobald dieser aber wieder anspringt sollte der connect automatisch wieder kommen. Dem scheint nicht so zu sein. Kann man das Modul mit einem aktiven Request als "set" versehen? Dann könnte man das "modify" nutzen umgehen im DEF.

VG Denny

Hi Denny,
wo/wie hast du die Einstellung gesetzt, den WR ab- und wieder zuzuschalten?
meinst du die standby-config?
Grüße Steffen
zotac nano mit proxmox und ganz viel zeug drauf

rohlande

Der WR selbst hat die Option den Logging Mode über Nacht laufen zu lassen. Das verhindert hoffentlich einen disconnect. Das meine ich damit.
Am Modul selbst gibt es keine Möglichkeit für den Erneuten Init außer das du im Device dev kurz auf modify klickst.
Das führt bei mir zum erneuten connect.

VG denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

al15

Gibt es irgendeine Möglichkeit das modify per at einzuplanen bzw etwas im Modul zu ändern damit es zb stündlich ein reconnect versucht?

Danke
LG
AL

fred_feuerstein

Zitat von: eurofinder am 15 Februar 2021, 17:42:19
Ich nutze dazu das Modul ElectricityCalculator.

Gruß
eurofinder

Hi Eurofinder, kannst du mir einen Tipp geben, wie ich den Tagesverbrauch, pv-tagesproduktion, etc. als Summen in kWh ermitteln kann.
Hab zwar mit dem electricitycalculator schonmal was gemacht, scheitere aber hier komplett.
welche readings hast du genutzt?

Vielleicht kannst du mal etwas dazu schreiben.

Habe den symo gen 24 10.0 mit smart Meter.

Habe im Modul unzählige readings, von denen ich aktuell 5 nutze für den momentan Verbrauch, moments Produktion und dann die momentan Werte für Netz und Batterie.

Gruß, Fred

FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art