Fronius Wechselrichter per HTTPMOD

Begonnen von simonberry, 16 Juni 2014, 15:30:33

Vorheriges Thema - Nächstes Thema

clemens

Zitat von: simonberry am 16 Juni 2014, 15:30:33

ich habe den Datenlogger von meinem Fronius Wechselrichter ins FHEM integrieren können.   :D
Vielleicht kann dies ja jemand brauchen.[...]

Hallo, simonberry!

Wow, gratuliere! So etwas suche ich schon lange! Bin leider kein Programmierer und konnte mit den Infos von Fronius bezüglich JSON-Abfragen genau nix anfangen :-(
Deine Lösung kommt mir da gerade recht!

Leider bekomm ich es aber nicht hin, Daten zu bekommen. Daher meine Frage:
Holt sich Deine Lösung die Daten von einem "Fronius Datalogger Web"? Ich habe einen solchen und dessen IP ist in der FHEM-Konfig eingetragen. Leider bekomme ich nur 404er als Antwort...

Passwort-Abfrage habe ich deaktiviert; wenn ich den "Datalogger Web" ansurfe, sehe ich die Daten, ohne ein Passwort eingeben zu müssen.

Oder fragst Du gar ein anderes Fronius-Gerät, als den "Datalogger Web" ab?
   
Danke für  Deine Arbeit und vielleicht könntest mir kurz antworten!

mfg. C.

Mein Abfrageergebnis:
HTTP/1.0 404 Not Found Server: thttpd/2.25b 29dec2003 Content-Type: text/html; charset=utf-8 Date: Mon, 29 Sep 2014 14:39:05 GMT Last-Modified: Mon, 29 Sep 2014 14:39:05 GMT Accept-Ranges: bytes Connection: close Cache-Control: no-cache,no-store <HTML> <HEAD><TITLE>404 Not Found</TITLE></HEAD> <BODY BGCOLOR="#cc9999" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc"> <H2>404 Not Found</H2> The requested URL '/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection' was not found on this server. <HR> <ADDRESS><A HREF="http://www.acme.com/software/thttpd/">thttpd/2.25b 29dec2003</A></ADDRESS> </BODY> </HTML>

simonberry

Hi Celmens,

also ich frage die Daten vom Datenlogger ab, der in meinem Wechselrichter integriert ist. (Also nicht von Solar Web oder wie das heißt).
Kannst Du mal deine def posten...

Grüße

Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

clemens

Hallo, simonberry!

Danke für deine schnelle Antwort! Bitte entschuldige meine späte!

Ich habe zwei Wechselrichter: Fronius IG Plus 25 V-1 und IG Plus 55 V-3. Zusätzlich eine Sensorbox und einen Datalogger Web, dessen IP 192.168.1.180 ist. Diesen würde ich gerne per httpmod und deiner Lösung auslesen.

Damit ich den Wechselrichter und den Datalogger Web verbinden kann, habe ich noch eine Comcard im Wechselrichter.

Meine FHEM Def ist:
http://192.168.1.180/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=MinMaxInverterData 300

per json Abfrage auf die IP des Datalogger Web habe ich auch keine Daten erhalten.

lg. Clemens

simonberry

Hallo Clemens

habe mich nochmal auf der Fronius Homepage schlau gemacht:
Ich fürchte wir haben 2 Unterschiedliche Datenlogger:
meiner: Fronius Datenmanager http://www.fronius.com/cps/rde/xchg/SID-04B09495-9DF64CF0/fronius_international/hs.xsl/83_28105_DEU_HTML.htm
Deiner: Fronius Datenlogger WEB http://www.fronius.com/cps/rde/xchg/SID-04B09495-9DF64CF0/fronius_international/hs.xsl/83_16106_DEU_HTML.htm

In der API - Beschreibung steht was von einer Minimum Product Release Version für den Datenlogger WEB:
2.0.4-1
Und die Solar API Version 0

Hier mal ein erster Schuss aus der Hüfte:
Probier mal:
http://192.168.1.180/solar_api/v0/GetInverterRealtimeData.cgi?Scope=Device&DeviceIndex=0&DataCollection=CommonInverterData 300

Die Komplette Beschreibung der Schnittstelle V0 habe ich von hier, bin aber auch bei Fronius registriert:
http://www.fronius.com/cps/rde/xbcr/SID-04B09495-9DF64CF0/fronius_international/42_0410_2011_318484_snapshot.pdf

Kann dir das Dok auch per Mail schicken

Viele Grüße

Simonberry
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

derchrome

#19
Hallo zusammen,
ich wäre auch sehr daran interessiert meinen Fronius Symo in FHEM zu integrieren.

Leider scheint mir die HTTPMOD.pm zu fehlen. Ich hab schon über sudo nano die Datei zu erstellen und mit dem Inhalt vom Git zu füllen, aber irgendwie ohne Erfolg. Mit der HTTPMod ließ sich der FHEM Server dann nicht mehr starten, in der Console wurde ein ungültiger Zugriff in der HttpUser angezeigt.

Vielleicht kann mir ja jemand bei der Installation ein bisschen auf die Sprünge helfen?

simonberry

Hallo derchrome,

Bei mir heißt die Datei
98_HTTPMOD.pm
Ich weiß nicht mehr genau, aber ich habe die glaube ich nicht extra installiert. Probier mal ein update.

Grüße

Saimen
NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

clemens

Zitat von: simonberry am 02 Oktober 2014, 10:15:26
Hallo Clemens

habe mich nochmal auf der Fronius Homepage schlau gemacht:
[...]

Hallo, Simonberry!

Danke!

Zitat von: simonberry
Hier mal ein erster Schuss aus der Hüfte:
Probier mal:
http://192.168.1.180/solar_api/v0/GetInverterRealtimeData.cgi?Scope=Device&DeviceIndex=0&DataCollection=CommonInverterData 300

...das bringt mir einen 404er. Aber, wenn ich '/v0/' weglasse, so bekomme ich eine JSON-Antwort retour. die aber nicht sehr informativ wirkt:

{
"Head" : {
"RequestArguments" : {
"DataCollection" : "CommonInverterData",
"DeviceClass" : "Inverter",
"DeviceIndex" : "0",
"Scope" : "Device"
},
"Status" : {
"Code" : 8,
"Reason" : "Transfer timeout.",
"UserMessage" : ""
},
"Timestamp" : "2014-10-02T16:25:47+02:00"
}
}


Ich habe mich auch bei Fronius registriert. Was in der API Beschreibung nervt: ich kann nix herauskopieren, denn da bekomme ich nur wirre Zeichen. Muß somit zumTesten alles selber eintippen. Schick Dir meine Mailadressse, vielleicht ist deine Version brauchbarer.


Könntest Du mir einen Screenshot von deiner Datamanger Übersicht schicken?

Lg. C

derchrome

Zitat von: simonberry am 02 Oktober 2014, 14:59:15
Hallo derchrome,

Bei mir heißt die Datei
98_HTTPMOD.pm
Ich weiß nicht mehr genau, aber ich habe die glaube ich nicht extra installiert. Probier mal ein update.

Grüße

Saimen
Welche FHEM Version nutzt du denn? Und wie mache ich ein Update?

simonberry

#23
Hi Clemens,

wenn Du dir die API runtergeladen hast kann ich Dir auch nix neueres schicken. Probier einfach mal die Beispiele aus. Aus meinem PDF kann man auch nichts rauskopieren, das nervt wirklich, aber ishaltso.

Was ich nicht genau verstehe ist, welchen Screenshot Du meinst..

@ derchrome,
also ein update macht man in dem man in der Commandozeilte "update" eintippt, dann wartet man bis es fertig ist, und die Meldung erscheint "Shutdown restart erforderlich" Dann tippt man "shutdown restart" in die commandozeile,... schonmal die Suchfunktion verwendet? ;-)

Grüße

Simonberry

NUC5i3RYK#DBLOG; MYSQL; LIRC; MPD; HM-CFG-HM-USB-2: HM-divers; MQTT2; Signalduino; Shelly; Sonoff; dash_dhcp; FS20; IT; FroniusWR; Somfy RTS; NFS-Server
Rpi B#: nfsmount; ser2net CUL868; CUL433; GPIO4:DS18B20; WEMOS-D1-MINI#JVC-via-IR;

Fritz R.

Hi,

die Idee mit HTTPMOD auszulesen hat mich inspiriert mal die Webseite des Datenloggers im Wechselrichters (SYMO) genauer anzuschauen.
Ich hatte das Problem, dass mit der beschriebenen Art jeweils nur 1 Wechselrichter antwortet und ich die Summe irgendwie selber ausrechnen müsste. Auf der Webseite des Datenloggers wird aber die Summe dargestellt und noch dazu mein momentaner Verbrauch, der über den S0 Ausgang des Zählers am Wechselrichter ankommt (70% dynamische Einspeisung). Deshalb habe ich diese mal analysiert.

Ich verwende eine in den API PDF's nicht dokumentierte Seite des Datenloggers. Gibt man folgenden Link ein

http://ip-wechselrichter/components/5/0/?print=names

kommt das:

{
"Head" : {
"RequestArguments" : {
"resource" : "5\/0\/",
"print" : "names"
},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : "",
"ErrorDetail" : {
"Nodes" : []
}
},
"Timestamp" : "2014-11-02T11:43:25+01:00"
},
"Body" : {
"Data" : {
"TimeStamp" : {
"value" : 1414925004,
"unit" : "sec"
},
"Enable" : {
"value" : 1,
"unit" : "1"
},
"Visible" : {
"value" : 1,
"unit" : "1"
},
"Power_P_Generate" : {
"value" : 5297,
"unit" : "W"
},
"Power_P_Load" : {
"value" : -1425.178067,
"unit" : "W"
},
"Power_P_Grid" : {
"value" : -3871.821933,
"unit" : "W"
},
"Power_Akku_Sum" : {
"value" : null,
"unit" : "W"
},
"Power_PV_Sum" : {
"value" : 5297,
"unit" : "W"
},
"Relative_Current_SelfConsumption" : {
"value" : 26.905382,
"unit" : "%"
},
"Relative_Current_Autonomy" : {
"value" : 100,
"unit" : "%"
},
"Power_P_SelfConsumption" : {
"value" : -1425.178067,
"unit" : "W"
}
}
}
}


Loggen tu ich derzeit :

Power_P_Generate = gerade produzierte Leistung
Power_P_Grid          = momentane Einspeisung / Strombezug je nach Vorzeichen
Power_P_Load         = momentaner Verbrauch
Relative_Current_Autonomy = Autonomie in 100%

Bei mehreren Wechselrichtern ist das schon bezogen auf die Summe.

Folgende Einträge hab ich verwendet

define PV_Anlage HTTPMOD http://IP-Wechselrichter/components/5/0/?print=names 30
attr PV_Anlage group Messen
attr PV_Anlage icon measure_photovoltaic_inst
attr PV_Anlage readingsName.1 Power_P_Generate
attr PV_Anlage readingsName.2 Power_P_Load
attr PV_Anlage readingsName.3 Power_P_Grid
attr PV_Anlage readingsRegex.1 "Power_P_Generate"[:{\n\t ]+"value"[ : \t]+([\d\.]+),
attr PV_Anlage readingsRegex.2 "Power_P_Load"[:{\n\t ]+"value"[ : \t]+(-?[\d\.]+),
attr PV_Anlage readingsRegex.3 "Power_P_Grid"[:{\n\t ]+"value"[ : \t]+(-?[\d\.]+),
attr PV_Anlage room Strom
attr PV_Anlage stateFormat {sprintf("PV %d W  Verbrauch %d W  Netz %d W",ReadingsVal($name,"Power_P_Generate",0),ReadingsVal($name,"Power_P_Load",0),ReadingsVal($name,"Power_P_Grid",0))}
attr PV_Anlage verbose 2
define FileLog_PV_Anlage FileLog ./log/PV_Anlage-%Y.log PV_Anlage
define SVG_FileLog_PV_Anlage_1 SVG FileLog_PV_Anlage:SVG_FileLog_PV_Anlage_1:CURRENT
attr SVG_FileLog_PV_Anlage_1 room Plots,Strom


Das "attr PV_Anlage verbose 2" ist meine Lösung um das Log-File nicht mit Fehlermeldungen vollzuschreiben, wenn keine Strom mehr produziert wird, da dann das Reading teilweise nicht mehr richtig funktioniert. Vielleicht hat jemand da eine bessere Idee. Der Wechselrichter mit dem Datenlogger muss übrigens so konfiguriert werden, dass er Nachts an bleibt, da sonst kein Verbrauch geloggt werden kann.

Gruss Fritz

Burny4600

Wurde das auch mit einem Fronius Datalogger Web 2 realisiert?

Benötige Unterstützung wie ich die Daten des Fronius Datalogger Web 2 in das FHEM bekomme.
Konnte mit diesen Informationen leider keine Verbindung herstellen.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

HotteFred

Hallo Chris,

was für einen Fronius hast du denn genau?

Grüße
BananaPi mit FHEM, KM50, Velux Raumluftsensor, jede Menge HM-CC-RT-DN, jede Menge 1Wire Zeugs

kanenas

Probier mal : http://froni_ip/solar_api/GetInverterRealtimeData.cgi?

Der Fronius Datalogger unterstützt die API V0 (nicht die V1)
Jessie@Raspi(v3)+SSD, CUL-MAX, CUL-433, CUL-FS20, JeeLink-PCA301, JeeLink-JLLaCrosse, HM-MOD-UART, HUEBridge(v2), ESPEasy, Tasmota, Plenticore 7 mit BYD 11,5

timberbeam

Zitat von: simonberry am 16 Juni 2014, 15:30:33
ich habe den Datenlogger von meinem Fronius Wechselrichter ins FHEM integrieren können.   :D
Vielleicht kann dies ja jemand brauchen.
Hi Simonberry,

danke, das konnte ich sehr gut brauchen!
Zusammen mit den JSON-Schnittstellenbeschreibungen von Fronius konnte ich alles lesen.
Da ich auch das Smart-Meter von Fronius integriert habe, wollte ich auch diese Daten aus dem Wechselrichter auslesen. Die Werte können bei Lieferung auch negativ werden, daher musste ich die Auswertung auf negative Zahlen erweitern. Die Regular-Expressions in PERL für "floating point, no exponent" hab ich dann schließlich hier gefunden: http://perldoc.perl.org/perlretut.html#Extracting-matches

Der Kode sieht dann so aus:

# MeterAkt enthält die aktuellen Messwerte
define MeterAkt HTTPMOD http://192.168.1.XXX/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=0 300
attr MeterAkt userattr event-on-change-reading icon readingsName.* readingsName.1 readingsName.2 readingsName.3 readingsName.4 readingsName.5 readingsName.6 readingsRegex.1 readingsRegex.2 readingsRegex.3 readingsRegex.4 readingsRegex.5 readingsRegex.6 stateFormat
attr MeterAkt event-on-change-reading PowerReal_P_Sum
attr MeterAkt group Messen
attr MeterAkt icon measure_power_meter
attr MeterAkt readingsName.1 PowerReal_P_Phase_1
attr MeterAkt readingsName.2 PowerReal_P_Phase_2
attr MeterAkt readingsName.3 PowerReal_P_Phase_3
attr MeterAkt readingsName.4 PowerReal_P_Sum
attr MeterAkt readingsName.5 EnergyReal_WAC_Sum_Produced
attr MeterAkt readingsName.6 EnergyReal_WAC_Sum_Consumed
attr MeterAkt readingsRegex.1 "PowerReal_P_Phase_1"[ : \t]+([+-]?(\d+\.\d+|\d+\.|\.\d+)),
attr MeterAkt readingsRegex.2 "PowerReal_P_Phase_2"[ : \t]+([+-]?(\d+\.\d+|\d+\.|\.\d+)),
attr MeterAkt readingsRegex.3 "PowerReal_P_Phase_3"[ : \t]+([+-]?(\d+\.\d+|\d+\.|\.\d+)),
attr MeterAkt readingsRegex.4 "PowerReal_P_Sum"[ : \t]+([+-]?(\d+\.\d+|\d+\.|\.\d+)),
attr MeterAkt readingsRegex.5 "EnergyReal_WAC_Sum_Produced"[ : \t]+([\d\.]+),
attr MeterAkt readingsRegex.6 "EnergyReal_WAC_Sum_Consumed"[ : \t]+([\d\.]+),
attr MeterAkt room Strom
attr MeterAkt stateFormat {sprintf("ElPower: %.2f W, Phase_1: %.2f W, Phase_2: %.2f W, Phase_3: %.2f W;; netPower to grid: %.3f kWh / from grid: %.3f kWh", ReadingsVal($name,"PowerReal_P_Sum",0),ReadingsVal($name,"PowerReal_P_Phase_1",0),ReadingsVal($name,"PowerReal_P_Phase_2",0),ReadingsVal($name,"PowerReal_P_Phase_3",0),ReadingsVal($name,"EnergyReal_WAC_Sum_Produced",0)/1000.0,ReadingsVal($name,"EnergyReal_WAC_Sum_Consumed",0)/1000.0)}


Der Teil "attr MeterAkt event-on-change-reading PowerReal_P_Sum" kann eigentlich weggelassen werden, wenn nur alle 300s abgefragt wird.

Burny4600

@Dionysios

Kannst du mir vielleicht auch behilflich sein.
Ich bekomme einfach keine Readingwerte heraus obwohl unter buf diese eingeslesen werden.
Mit dem HTTPMOD hat sich scheinbar auch ab Anfang März etwas geändert, und bin mir nicht sicher ob meine Config so stimmt wie ich diese definiert habe.
https://forum.fhem.de/index.php/topic,50639.msg423936.html#msg423936
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT