Solaredge API Modul für FHEM

Begonnen von flipkill, 14 Juni 2016, 14:36:38

Vorheriges Thema - Nächstes Thema

flipkill

Hallo,

gibt es hier in dem Forum noch andere leute die einen Solaredge Wechselrichter besitzen und die ganzen Daten gerne nicht nur in ihrem SOlaredge Portal hätten sondern das ganze auch in FHEM.
Es sollte doch hier möglich sein ein Modul zu schreiben. Das man dann bequem nur noch den API Key benötigt und die Daten dann Bequem in FHEM verwalten kann.
Gibt es so was schon?
Gibt es Leute die sowas machen können / Lust haben?

Gruß Jan

pejonp

Hallo Jan,

ich habe eine SolarEdge SE5K Wechselrichter. Dieser ist über eine RS485 Schnittstelle in FHEM eingebunden. Entweder über USB Digitus DA-70157 Seriell Adapter USB 2.0 (https://www.amazon.de/gp/product/B007VZY4CW/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1)  oder per IP USR-TCP232-24 Converter Module Server RS232 RS485 serial to Ethernet (http://www.ebay.de/itm/271840382550?_trksid=p2060353.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT).

Zum Auslesen der RS485 Schnittstelle gibt es auch Software (http://qmodbus.sourceforge.net/ ). Hier sind noch einige Beiträge für die RS485 Anbindung (https://forum.fhem.de/index.php/topic,25315.msg337940.html#msg337940).

Die Definition des SolarEdge WR angebunden über IP:

# RS485 SolarEdge Wechselrichter
define PWP ModbusAttr 3 60 IP:20108 RTU
attr PWP userattr dev-h-combine dev-h-defPoll obj-h100-reading obj-h101-reading obj-h103-expr obj-h103-format obj-h103-reading obj-h107-map obj-h107-reading obj-h68-expr obj-h68-reading obj-h69-expr obj-h69-reading obj-h70-expr obj-h70-reading obj-h71-reading obj-h72-reading obj-h73-reading obj-h74-reading obj-h75-reading obj-h83-reading obj-h84-expr obj-h84-reading obj-h85-expr obj-h85-reading obj-h86-expr obj-h86-reading obj-h87-expr obj-h87-reading obj-h88-expr obj-h88-reading obj-h89-expr obj-h89-reading obj-h90-expr obj-h90-reading obj-h91-expr obj-h91-reading obj-h92-expr obj-h92-reading obj-h93-expr obj-h93-format obj-h93-len obj-h93-reading obj-h93-unpack obj-h95-expr obj-h95-reading obj-h96-expr obj-h96-reading obj-h97-expr obj-h97-reading obj-h98-expr obj-h98-reading obj-h99-expr obj-h99-reading verbose
attr PWP dev-h-combine 50
attr PWP dev-h-defPoll 1
attr PWP obj-h100-reading I_DC_Leistung_W
attr PWP obj-h101-reading I_DC_Leistung_SF
attr PWP obj-h103-expr $val / 100
attr PWP obj-h103-format %.f
attr PWP obj-h103-reading Temp_Kuehler_C
attr PWP obj-h107-map 1:Aus, 2:Nachtmodus, 4:WR_An
attr PWP obj-h107-reading C_Status
attr PWP obj-h68-expr $val
attr PWP obj-h68-reading C_Geraeteadresse
attr PWP obj-h69-expr $val
attr PWP obj-h69-reading C_SunSpec_DID
attr PWP obj-h70-expr $val
attr PWP obj-h70-reading C_SunSpec_Laenge
attr PWP obj-h71-reading I_AC_Strom_A
attr PWP obj-h72-reading I_AC_StromL1_A
attr PWP obj-h73-reading I_AC_StromL2_A
attr PWP obj-h74-reading I_AC_StromL3_A
attr PWP obj-h75-reading I_AC_Strom_SF
attr PWP obj-h83-reading I_AC_Leistung_W
attr PWP obj-h84-expr $val
attr PWP obj-h84-reading I_AC_Leistung_SF
attr PWP obj-h85-expr $val
attr PWP obj-h85-reading I_AC_Frequenz_Hz
attr PWP obj-h86-expr $val
attr PWP obj-h86-reading I_AC_Frequenz_SF
attr PWP obj-h87-expr $val
attr PWP obj-h87-reading I_AC_VA
attr PWP obj-h88-expr $val
attr PWP obj-h88-reading I_AC_VA_SF
attr PWP obj-h89-expr $val
attr PWP obj-h89-reading I_AC_VAR
attr PWP obj-h90-expr $val
attr PWP obj-h90-reading I_AC_VAR_SF
attr PWP obj-h91-expr $val
attr PWP obj-h91-reading I_AC_PF_Prozent
attr PWP obj-h92-expr $val
attr PWP obj-h92-reading I_AC_PF_SF
attr PWP obj-h93-expr $val / 1000
attr PWP obj-h93-format %.2f
attr PWP obj-h93-len 2
attr PWP obj-h93-reading I_AC_Energie_WH_kWh
attr PWP obj-h93-unpack l>
attr PWP obj-h95-expr $val
attr PWP obj-h95-reading I_AC_Energie_WH_SF
attr PWP obj-h96-expr $val
attr PWP obj-h96-reading I_DC_Strom_A
attr PWP obj-h97-expr $val
attr PWP obj-h97-reading I_DC_Strom_SF
attr PWP obj-h98-expr $val
attr PWP obj-h98-reading I_DC_Spannung_V
attr PWP obj-h99-expr $val
attr PWP obj-h99-reading I_DC_Spannung_SF
attr PWP room Solar
attr PWP verbose 1


define FileLog_SolarWR FileLog ./log/SolarWR-%Y-%m.log I_AC_Frequenz_Hz.*|I_DC_Leistung_W.*|I_AC_Leistung_W.*|PWP.*
attr FileLog_SolarWR logtype text
attr FileLog_SolarWR room Solar

define AC_FrequenzWR notify PWP:I_AC_Frequenz_Hz.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_AC_Frequenz_Hz",0) ;;;; \
    my $b = ReadingsVal("PWP","I_AC_Frequenz_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_AC_Frequenz_Hz $text") ;;;; \
    }
attr AC_FrequenzWR room Solar
define I_AC_Frequenz_Hz dummy
attr I_AC_Frequenz_Hz room Solar

define DC_LeistungWR notify PWP:I_DC_Leistung_W.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_DC_Leistung_W",0) ;;;; \
    my $b = ReadingsVal("PWP","I_DC_Leistung_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_DC_Leistung_W $text") ;;;; \
    }
attr DC_LeistungWR room Solar
define I_DC_Leistung_W dummy
attr I_DC_Leistung_W room Solar,Sonnenbatterie

define DC_StromWR notify PWP:I_DC_Strom_A.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_DC_Strom_A",0) ;;;; \
    my $b = ReadingsVal("PWP","I_DC_Strom_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_DC_Strom_A $text") ;;;; \
    }
attr DC_StromWR room Solar
define I_DC_Strom_A dummy
attr I_DC_Strom_A room Solar,Sonnenbatterie

define AC_LeistungWR notify PWP:I_AC_Leistung_W.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_AC_Leistung_W",0) ;;;; \
    my $b = ReadingsVal("PWP","I_AC_Leistung_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_AC_Leistung_W $text") ;;;; \
    }
attr AC_LeistungWR room Solar
define I_AC_Leistung_W dummy
attr I_AC_Leistung_W room Solar,Sonnenbatterie

define AC_StromWR notify PWP:I_AC_Strom_A.* {\
use Math::Round qw/nearest/;;;;\
    my $a = ReadingsVal("PWP","I_AC_Strom_A",0) ;;;; \
    my $a1 = ReadingsVal("PWP","I_AC_StromL1_A",0) ;;;; \
    my $a2 = ReadingsVal("PWP","I_AC_StromL2_A",0) ;;;; \
    my $a3 = ReadingsVal("PWP","I_AC_StromL3_A",0) ;;;; \
    my $b = ReadingsVal("PWP","I_AC_Strom_SF",0) ;;;; \
    my $beginn = 65536;;;; \
    my $vv = $beginn - $b;;;;  \
    if ($vv==6){$vv=1000000;;} elsif($vv == 5){$vv=100000;;}elsif($vv == 4){$vv=10000;;}elsif($vv == 3){$vv=1000;;} elsif($vv == 2){$vv=100;;}elsif($vv == 1 ){$vv=10;;}else{$vv=1;;};;;; \
    my $sum1 = nearest(0.001, $a/$vv);;;; \
    my $text = "$sum1" ;;;; \
    fhem ("set I_AC_Strom_A $text") ;;;; \
    $sum1 = nearest(0.001, $a1/$vv);;;; \
    $text = "$sum1" ;;;; \
    fhem ("set I_AC_StromL1_A $text") ;;;; \
    $sum1 = nearest(0.001, $a2/$vv);;;; \
    $text = "$sum1" ;;;; \
    fhem ("set I_AC_StromL2_A $text") ;;;; \
    $sum1 = nearest(0.001, $a3/$vv);;;; \
    $text = "$sum1" ;;;; \
    fhem ("set I_AC_StromL3_A $text") ;;;; \
    }
attr AC_StromWR room Solar
define I_AC_StromL1_A dummy
attr I_AC_StromL1_A room Solar,Sonnenbatterie
define I_AC_StromL2_A dummy
attr I_AC_StromL2_A room Solar,Sonnenbatterie
define I_AC_StromL3_A dummy
attr I_AC_StromL3_A room Solar,Sonnenbatterie
define I_AC_Strom_A dummy
attr I_AC_Strom_A room Solar,Sonnenbatterie



Es gibt auch eine Anbindung über IP die den Datenstrom zwischen dem WR und dem SolarEdge-Portal mitliest und auswertet.
Das habe ich bei mir aber noch nicht hinbekommen. (https://github.com/jbuehl/solaredge)

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

flipkill

Hallo pejonp,

Das klingt ja ganz cool. Was bekommst du da alles an Werten raus?
Also auch was du selbst verbraucht hast, und was du eingespeist hast und was eingekauft oder wie sehen da so die ganzen Werte aus die du da raus bekommst??

Vielen Dank schonmal
Gruß Jan

pejonp

Hallo,
Der Solaredge WR zeigt mir über die rs485 Schnittstelle nur die Werte der  PV Anlage. Die anderen Werte werden aus den Stromzählern und der Sonnebatterie ausgelesen.

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Tom_S

Das ist hier zwar schon etwas her, aber ich habe nichts weiter gefunden, und das war schon mal eine gute Starthilfe.
Ich habe jetzt auch einen SE7K. Ab einer Firmware > 3.xx (meiner hat 3.2018) kann der Modbus über TCP. Das kann man im Menue einstellen unter Kommunikation. Dann braucht man keine zusätzliche Hardware mehr. Ich kann mit ModbusAttr und dem Beispiel von hier die Register auslesen. Danke dafür. Mittlerweile ist mir auch die Zuordnung klar. Es gibt ja ein Datenblatt von Solaredge. Was ich aber noch nicht gefunden habe ist, wie man an die Daten der "Optimierer" DC-DC Wandler der Module kommt. Sind die auch irgendwo in den Registern? Hat sich damit schon mal einer beschäftigt?

LG
Tom_S
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

pejonp

Hallo Tom_S,

die einzelnen Optimiere auszulesen ist nicht so einfach. Da die Daten per UDP oder so gesendet werden und direkt an den Server bei Solaredge gehen. Schau mal hier (https://github.com/jbuehl/solaredge/issues/8#issuecomment-241285392). Ich hatte dazu einen RaspberryPi mit einem USB-Ethernetadapter genommen und diesen zwischen SolatEdge-WR und Switch gehangen. Auf dem Raspi liefen die Programme von jbuehl und haben die Daten mitgeloggtn  bzw. schon angefangen diese in eine SQL-DB zu schreiben. Habe dann aber leider nicht weiter gemacht.

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

BenMarloe

Habe einen Wikieintrag gemacht, wie man Daten aus via ModbusAttr aus dem Solaredge SE10k ziehen kann.
Wenn jemand fragen hat würde ich die auch beantworten.
Alles ist kompliziert - bis man es verstanden hat
Fhem auf Raspberry 2 B
EnOcean / Homematic / Eigenbau / ABB 23 / SolarEdge SE10k

satprofi

Zitat von: BenMarloe am 30 Dezember 2017, 12:53:30
Habe einen Wikieintrag gemacht, wie man Daten aus via ModbusAttr aus dem Solaredge SE10k ziehen kann.
Wenn jemand fragen hat würde ich die auch beantworten.
hallo. wo findet man den wiki?

Gesendet mit Tapatalk

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

CoolTux

Hier ist sicherlich das FHEM Wiki gemeint. Google hilft Dir da weiter.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

flipkill

Hallo,
ich habe das nun über HTTPMOD mit der Solaredge API realisiert. Da alle Daten ja auch über die API zu bekommen sind. Wenn ich könnte würde ich das ganze als Modul umbauen und einchecken nur kann ich das leider nicht.
Gibt es jemand der sich dafür bereit erklären würde?
zum Testen unterstützen bin ich jederzeit bereit.
Sollte auch nicht so schwer sein ein erstes kleines Modul zu schreiben oder?
Die Werte bekommt man bei Solaredge per API Calls als XML oder Json.

Gruß Jan

CoolTux

Hast Du mal eine Webseite? API Beschreibung oder sowas?



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pejonp

Hallo,

hier hängt eine Modbusbeschreibung von SolarEdge dran. Mit diesen Daten wird mein WR ausgelesen.

https://forum.fhem.de/index.php/topic,25315.msg488853.html#msg488853

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

danillo

#12
@BenMarloe
Ich hab den Wechselrichter angeschlossen. Die Verbindung zu Solaredge steht auch. TCP-Port ist 502 und freigegeben. Aber ich kann mich über FHEM leider nicht verbinden. Bleibt immer auf disconnect.
Hat sich geklärt: Man hat nur ein kurzes Zeitfenster nach dem Aktivieren, um sich anzumelden. Dann geht's!

BenMarloe

Alles ist kompliziert - bis man es verstanden hat
Fhem auf Raspberry 2 B
EnOcean / Homematic / Eigenbau / ABB 23 / SolarEdge SE10k

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net