Integration Photovoltaik-Anlage mit SolarEdge

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von ChristianF » 07.09.2015, 17:24

Hallo,

da ich selbst relativ viel gesucht habe und mir hier im Forum und auf zig anderen Webseiten diverse Codeschnipsel zusammengesammelt habe, möchte ich das Ergebnis gern zur Verfügung stellen.

Was macht das hier?
Es importiert die Leistungsdaten einer Photovoltaikanlage mit einem SolarEdge Wechselrichter in die Homematic CCU2. Die Daten werden in Systemvariablen geschrieben und können daher auch als Trigger für Aktionen, Programme etc. herangezogen werden (frei nach dem Motto "Wenn genug Strom vom Dach kommt, schalte Verbraucher XY ein"). Mit ein bisschen Programmieraufwand lässt sich dadurch eine Eigenverbrauchserhöhung realisieren.

Was brauche ich dafür?
- Eine CCU2 incl. CUXD und SSH Zugriff (wie man das bekommt und damit umgeht wird als bekannt vorausgesetzt)
- Eine Photovoltaikanlage mit SolarEdge Wechselrichter incl. API-Zugriff


Vorbemerkung:
Euer Solarteur muss den Wechselrichter für das automatische Übertragen der Messwerte an die SolarEdge Rechner freigeschaltet und Euch den API Key sowie Eure SolarEdge Anlagennummer übergeben haben. Wenn Ihr diese Daten nicht habt, wendet Euch dann bitte an Euren Solarteur oder den SolarEdge Support.
Weiterhin ist der Aktualisierungsintervall bei SolarEdge fix auf etwa 15 Minuten festgelegt, was sich ohne Zusatzhardware auch nicht ändern läßt. Entsprechend lasse ich die Daten auch nur im 15-min-Takt einlesen und in die Variablen schreiben. Damit man weiß, wie aktuell die Daten sind, gibt es die Variable "SolarEdge-LastUpdateTime", die man zB in ccu.io oder ioBroker importieren kann, wenn man die Leistung visualisieren möchte.


Zur Umsetzung:

Als erstes erzeugt Ihr auf der CCU2 folgende Systemvariablen:
variablen.JPG
(Protokollierung etc. kann natürlich jeder machen wie er will, habe es so eingestellt wie es für mich Sinn macht).

Wenn diese Variablen erzeugt sind, geht es mit Putty via SSH auf die CCU2. Legt Euch dort dieses Verzeichnis an:

Code: Alles auswählen

/usr/local/addons/solaredge/
Nun erstellt Ihr in diesem Verzeichnis eine leere Datei namens solaredge.tcl:

Code: Alles auswählen

touch /usr/local/addons/solaredge/solaredge.tcl
In diese Datei schreibt ihr ein paar Zeichen Eurer Wahl hinein, in diesem Fall zB 12345 (die werden später ohnehin wieder gelöscht):

Code: Alles auswählen

echo 12345 > /usr/local/addons/solaredge/solaredge.tcl
Öffnet nun FileZilla und connectet mit SFTP auf die CCU2. Navigiert zum Ordner /usr/local/addons/solaredge/ und kopiert Euch die eben erstellte Datei solaredge.tcl an einen Ort Eurer Wahl auf Eurem Rechner.

Öffnet die Datei mit Notepad++ (NICHT normales Notepad.exe / Editor o.ä. verwenden, der zersägt Euch die Unix-Dateikodierung!) die eben auf Euren Rechner kopierte Datei. Dort findet ihr die Zeichen die ihr eben eingegeben habt. Löscht die und fügt folgendes Script ein:

Code: Alles auswählen

    load tclrega.so

    # Daten von SE holen
    # ==================

    set url "https://monitoringapi.solaredge.com/site/HiergehörtDeineAnlagennummerHinein/overview.xml?api_key=HierGehörtDeinAPI-KeyHinein"
    exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/solaredge/export.xml $url

    set f [open "/usr/local/addons/solaredge/export.xml"]
    set input [read $f]
    close $f


    # Werte aus XML Datei auslesen
    # =============================

    regexp "<power>(.*?)</power>" $input dummy currentv0  ;
    regexp "<lastUpdateTime>(.*?)</lastUpdateTime>" $input dummy currentv1;
    regexp "<lastDayData><energy>(.*?)</energy></lastDayData>" $input dummy currentv2  ;
        regexp "<lastMonthData><energy>(.*?)</energy></lastMonthData>" $input dummy currentv3  ;
        regexp "<lastYearData><energy>(.*?)</energy></lastYearData>" $input dummy currentv4  ;
        regexp "<lifeTimeData><energy>(.*?)</energy></lifeTimeData>" $input dummy currentv5  ;


    # Werte in Variable schreiben
    # =============================

    set rega_cmd ""

    append rega_cmd "var w0 = dom.GetObject('SolarEdge-CurrentPower');"
    append rega_cmd "w0.State('$currentv0');"

    append rega_cmd "var w1 = dom.GetObject('SolarEdge-LastUpdateTime');"
    append rega_cmd "w1.State('$currentv1');"

    append rega_cmd "var w2 = dom.GetObject('SolarEdge-ThisDayData');"
    append rega_cmd "w2.State('$currentv2');"

    append rega_cmd "var w3 = dom.GetObject('SolarEdge-ThisMonthData');"
    append rega_cmd "w3.State('$currentv3');"

    append rega_cmd "var w4 = dom.GetObject('SolarEdge-ThisYearData');"
    append rega_cmd "w4.State('$currentv4');"

    append rega_cmd "var w5 = dom.GetObject('SolarEdge-LifeTimeData');"
    append rega_cmd "w5.State('$currentv5');"



    # Daten an die CCU2 übergeben
    # =============================

    rega_script $rega_cmd

(Natürlich müssen in der set url Zeile die Anlagennummer und der API-Key eingefügt werden, die ihr von Eurem Solarteur bekommen habt)

Speichert die Datei ab und übertragt sie mittels FileZilla wieder zurück auf die CCU2. Passt die Berechtigungen auf 755 / -rwxr-xr-x an, entweder in FileZilla oder in der Shell:

Code: Alles auswählen

chmod 755 solaredge.tcl
Als letztes erzeugen wir in der SSH Shell eine (leere) Datendatei, in die das Script zwischenzeitlich die Daten schreibt. Diesen Schritt kann man sich evtl. sparen, aber da es schonmal Fehler gab, lieber mit machen:

Code: Alles auswählen

touch /usr/local/addons/solaredge/export.xml
Damit sind die Arbeiten auf der Shell und mit FileZilla beendet. Es folgt das "Klickibunti" in der HomeMatic GUI:

Falls nciht schon vorhanden, erstellt Euch ein CUXD Gerät, das ihr für System.Execs benutzen könnt. Eine Fernbedienung zum Beispiel. Sucht Euch dort eine Taste aus, der ihr folgenden Befehl für CMD_SHORT eintragt:

Code: Alles auswählen

tclsh /usr/local/addons/solaredge/solaredge.tcl
taster.JPG
Erstellt Euch nun noch folgendes Programm (natürlich müsst Ihr Euch das entsprechende virtuelle Gerät aussuchen):
programm.JPG
Hier noch das Bild zur entsprechenden Zeitsteuerung (entspricht in etwa der Zeit, die die Sonne bei uns zur Sommersonnenwende auf die Anlage scheint und damit Strom erzeugt wird):
timermodul.JPG
Das Ganze funktioniert seit inzwischen etwa einem Monat bei mir sehr gut. Vielleicht hat ja jemand auch Lust, seine Erfahrungen damit zu schreiben.

Viele Grüße
Christian
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

Pizza
Beiträge: 21
Registriert: 26.08.2014, 14:00

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von Pizza » 08.09.2015, 08:04

Hallo Christian

Ich hole mir die Solaredgedaten via RS485 im Minutentakt direkt vom Wechselrichter, da mir die Portaldaten zu ungenau waren. Vor allem bei der Leistung habe ich große Unterschiede gemerkt. Ist aber nachvollziehbar weil die im Portal der Durchschnitt der letzten 15min sind.


Lg
Christian

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von ChristianF » 08.09.2015, 08:10

Hallo Pizza,

Danke für die Info, das klingt interessant. Kannst du beschreiben wie das Setup aussieht und wie es funktioniert? Ich würde das gern nachbauen..

Viele Grüße
(auch) Christian
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

Pizza
Beiträge: 21
Registriert: 26.08.2014, 14:00

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von Pizza » 08.09.2015, 08:41

schau mal in den Threat "Solaranlage mit Eigenverbrauch (inkl. Batterie) und HM", dort ist auch ein Screenshot von mir drinnen.

Lg
Christian

p.s. nicht nur Christian sondern auch F ist gleich ;-)

csfor0101
Beiträge: 8
Registriert: 02.05.2016, 17:15

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von csfor0101 » 02.05.2016, 17:43

Hallo,

vielleicht könnte mir jemand behilflich sein? Ich versuche nun schon zwei Tage lang dieses gute FAQ umzusetzen.
Mein Problem ist, das die von SolarEdge empfangenen Daten nicht in die angelegten Systemvariablen geschrieben bzw. übertragen werden. Die "export.xml" Datei erhält ja schon regelmäßig die abgefragten Daten von SolarEdge. Aber die Weiterleitung zu den von mir angelegten Systemvariablen scheitert leider. Es wäre nett, wenn mir jemand Tipps geben könnte, wo der Fehler liegt und was ich machen muss.

Hier zum Beweis, die empfangenen Daten von SolarEdge aus der "Export.xml" Datei:

<overview><lastUpdateTime>2016-05-02 17:14:06</lastUpdateTime><lifeTimeData><energy>2987930.0</energy><revenue>418.3102</revenue></lifeTimeData><lastYearData><energy>1214943.0</energy></lastYearData><lastMonthData><energy>53118.434</energy></lastMonthData><lastDayData><energy>25103.273</energy></lastDayData><currentPower><power>2518.0</power></currentPower><measuredBy>INVERTER</measuredBy></overview>

Im Log steht nur folgendes:

17:30:01 02.05.2016 SOLAREDGE2
unbekannte Meldung (WORKING=TRUE), unbekannte Meldung (WORKING=FALSE)

Diese Meldung kommt von der in CUxD angelegten Fernbediehnung. Keine Ahnung, ob das eine Fehlermeldung sein soll oder so sein muss.

Grüße an alle FORUM USER

csfor0101

mike08
Beiträge: 283
Registriert: 13.09.2015, 11:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 3 Mal
Danksagung erhalten: 2 Mal

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von mike08 » 02.05.2016, 19:27

Pizza hat geschrieben:Ich hole mir die Solaredgedaten via RS485 im Minutentakt direkt vom Wechselrichter, da mir die Portaldaten zu ungenau waren. Vor allem bei der Leistung habe ich große Unterschiede gemerkt. Ist aber nachvollziehbar weil die im Portal der Durchschnitt der letzten 15min sind.
Hallo Pizza,

welche Hardware setzt Du ein?
CUxD?
USB auf RS232?
RS232 auf RS485 (Welche Firma?)?

Grüße
Michael
Zuletzt geändert von mike08 am 02.05.2016, 19:42, insgesamt 1-mal geändert.
Fritzbox 7590 mit 7.x (immer aktuell)
Raspberry Pi3b mit RM: Aktuell
CCU2: Abgeschaltet
Zusatzsoftware: CUx-Daemon, E-Mail CCU Addon, hm_pdetect, hm-Print
Skripte: Servicemeldung 1.x http://homematic-forum.de/forum/viewtop ... 18#p211604
ioBroker auf Synology DS916+II imTest;
Wandtermostat, Tür-/Fensterkontakt, Ausenthermostat, 1 Kanal Taster, 2 Kanal Taster, Hutch-4fach Aktor, 1fach UP-Aktor, 2fach UP-Aktor, E-Paper-Display; CUL868(v3), USB2.0-Ser! [FF]

mike08
Beiträge: 283
Registriert: 13.09.2015, 11:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 3 Mal
Danksagung erhalten: 2 Mal

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von mike08 » 02.05.2016, 19:41

ChristianF hat geschrieben: .... entsprechenden Zeitsteuerung (entspricht in etwa der Zeit, die die Sonne bei uns zur Sommersonnenwende auf die Anlage scheint und damit Strom erzeugt wird):

Christian
Hallo Christian,
hierzu vielleicht
1. http://homematic-forum.de/forum/viewtop ... +SA+und+SU
2. http://homematic-forum.de/forum/viewtop ... 31&t=17514
verwenden!?

Grüße
Michael
Fritzbox 7590 mit 7.x (immer aktuell)
Raspberry Pi3b mit RM: Aktuell
CCU2: Abgeschaltet
Zusatzsoftware: CUx-Daemon, E-Mail CCU Addon, hm_pdetect, hm-Print
Skripte: Servicemeldung 1.x http://homematic-forum.de/forum/viewtop ... 18#p211604
ioBroker auf Synology DS916+II imTest;
Wandtermostat, Tür-/Fensterkontakt, Ausenthermostat, 1 Kanal Taster, 2 Kanal Taster, Hutch-4fach Aktor, 1fach UP-Aktor, 2fach UP-Aktor, E-Paper-Display; CUL868(v3), USB2.0-Ser! [FF]

csfor0101
Beiträge: 8
Registriert: 02.05.2016, 17:15

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von csfor0101 » 04.05.2016, 18:17

Hallo,

hat denn keiner eine Idee für mein Problem?
Ich komme einfach nicht weiter, weil ich den von mir oben beschriebenen Fehler nicht finde.

Grüße
csfor0101

Benutzeravatar
Jailbraik
Beiträge: 429
Registriert: 26.07.2013, 06:53
Hat sich bedankt: 11 Mal
Danksagung erhalten: 2 Mal

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von Jailbraik » 07.05.2016, 09:47

csfor0101 hat geschrieben:Hallo,

hat denn keiner eine Idee für mein Problem?
Ich komme einfach nicht weiter, weil ich den von mir oben beschriebenen Fehler nicht finde.

Grüße
csfor0101
Hallo, habe deine Nachricht ( Hilferuf ) erhalten, leider kann ich dir hier nicht helfen, weil ich die Anlage nichtmal habe.

Ich hoffe, das dir hier jemand hilft und dein Problem lösen kann.

Grüsse aus Unna
@
Raspberry 4 / Home Assistant / 80 Aktoren /

csfor0101
Beiträge: 8
Registriert: 02.05.2016, 17:15

Re: Integration Photovoltaik-Anlage mit SolarEdge

Beitrag von csfor0101 » 07.05.2016, 12:39

HI,

Vielen Dank für Deine Rückmeldung.

Das Problem ist ja nicht die Anlage von SolarEdge, die Daten empfange ich korrekt alle 15 Minuten.
Ebenso werden die Daten auch korrekt in der export.xml Datei zwischengespeichert und alle 15 Minuten mit den aktuellen Werten überschrieben.
Das klappt ja soweit zuverlässig.

Was nicht funktioniert ist das auslesen der Export.xml Datei und die Werte anschließend in die von mir zuvor erstellten Systemvariablen schreiben.
Die Systemvariablen werden einfach nicht aktualisiert(gefüllt) (mit den empfangenen und zwischengespeicherten Daten aus der export.xml Datei.

Warum auch immer. Ich finde einfach den Fehler nicht, bzw. weis nicht woran es liegen könnte.
Habe auch schon sämtliche Linux Editoren probiert, damit die Formatierung nicht verloren geht.
Das Script arbeitet bis zum Empfang und Zwischenspeichern der Daten in der XML DATEI.

Ich habe nun schon mehrere Tage gelesen und ausprobiert.
Es wäre sehr nett, wenn mir jemand weiterhelfen könnte.

Grüße
csfor0101

Antworten

Zurück zu „Projektvorstellungen“