Modul: SolarEdge API Abruf

Begonnen von felixm, 03 August 2018, 18:49:41

Vorheriges Thema - Nächstes Thema

felixm

dann jetzt hier noch mal eine eigenes Thema dazu.
Ich habe mir die Mühe gemacht und ein Modul gebastelt dass die aktuellen Daten sowie die kumulativen Leistungen  einer SolarEdge Anlage ber die offizielle API abruft. Dank @CoolTux konnte ich das auf Basis seines Moduls für die TeslaPowerwall auch in eine vernünftige Form gießen.

1. Was kann das Modul?
Abgerufen werden currentPowerFlow und energyDetails. Es wird also der aktuelle "Energiefluss" (PV, Batterie, Netz, Last=Verbrauch) als Reading dargestellt. Ausserdem werden kumulative Energiemengen über den gesamten Tag sowie des letzten Viertelstundenabschnitt dargestellt ( Produktion, Eigenverbrauch, Netzbezug etc.)

2. Was brauche ich dafür?
Zunächst eine PV-Anlage mit SolarEdge Wechselrichter und Anbindung an das SolarEdge MonitoringPortal. Dort kann man im Admin-Bereich einen API-Key aktivieren. Diesen API-Key und die Site-ID (steht dort direkt darunter und in der URL) braucht man für den Abruf.

3. Wie benutze ich das Modul?
Das Modul muss in den fhem Ordner kopiert werden und dann entweder per "reload 70_SolarEdgeAPI.pm" oder mittels Neustart von fhem geladen werden. Ggf. muss das Perl JSON Modul installiert werden.

Der Befehl um ein SolarEdgeAPI-Device anzulegen lautet:

define <name> SolarEdgeAPI <API-Key> <SiteId> <Interval (optional)>

Was muss ich beachten?
Ich bin kein ausgewiesener Perl-Progammierer, nur weil das Modul bei mir läuft, muss das nicht heißen, dass es nicht Fehler verursachen oder die FHEM-Instanz zum Abstürzen bringen kann.
SolarEdge gibt ein Limit von 300 Abrufen pro Tag, welches Intervall sich da am besten eignet, muss man austesten.

Und wenn mal was nicht funktioniert?
Ich versuche gerne zu helfen. Entweder Ihr meldet Fehler oder Verbesserungsvorschläge hier oder auf github https://github.com/felixmartens/fhem. Je nachdem wie es meine Zeit zulässt werde ich versuchen mich zu kümmern.



v0.0.1 (03.08.2018) : Erstes Release auf neuer CodeBasis

Download im Anhang.

kingmathers

Ich kriege meine SolarEdge Anlage in den nächsten Wochen und werde es dann gerne ausprobieren. Vielen Dank für die Mühe!

Energiefluss Netz kann dann wahrscheinlich positiv oder negativ sein oder? Also ich kann sehen ob (und wie viel) ich gerade einspiese oder ob ich zusätzlichen Strom aus dem Netz beziehe?
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

felixm

Genau, der Energiefluss Netz und Batterie können negativ und positiv sein je nachdem ob Bezug oder Einspeisung erfolgt.

cocojambo

Ich habe bereits meine SolarEdge Anlage mit 5Kw Inverter und der 10KW LG-Batterie auf AC Basis. Ich beschäftige mich zur Zeit damit die einzelnen Werte aus dem Inverter mit dem Modbus auszulesen. Was mich daran noch stört, ist das der Inverter keine Summen der Lade- und Entladeenergie bereitstellt, sondern die müßte man dann selbst aufadieren. Es gibt zwar einen Import und Export Batterie Counter, aber der setzt sich in dem Moment zurück wenn der Status der Batterie sich ändert.
Ist das denn mit der API anders? Gibt es da denn aufadierte Summen? Dann könnte ich die zusätzlich zu den SolarEdge Daten und den SolarLog Daten der Wechselricher zur Auswertung nutzen und zu bestimmten Zeiten abrufen.
Alles andere funktioniert schon einiger Massen.
Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

felixm

Aktuell wird der Status und die aggregierten Summen und abgerufen. Bei den Summen wird aktuell jeweils die Tagessumme und die der letzten 15 min für Netzbezug, Eigenverbrauch etc. angezeigt. Aber auch Monats und Jahresssumme ließen sich realisieren.
Dafür hätte ich im Gegenzug Interesse an der Modbus Konfiguration wegen der höheren zeitlichen Auflösung ;)

kmidt

Mega, danke für Deine Mühe. Werde das mal testen, sobald ich API-Key von meinem Monteur bekommen habe.
Habe leider keinen Adminaccount

kmidt

Hi !!

Es habe es ausprobiert. Lief 2 Tage super.

jetzt bekomme ich folgenden Fehler :

   429

Error malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html>\n<ht...") at ./FHEM/70_SolarEdgeAPI.pm line 409

Bengt79

#7
Moin moin,

da ich neuer Besitzer einer wundervollen Photovoltaik-Anlage mit Wechselrichter der Firma SolarEdge bin, wollte ich natürlich auch die Daten
in mein FHEM ziehen.....
die API ist installiert, API und Location vom Installateur erhalten...
Fehler 403 scheint auf zuviele Anfragen oder falsche Daten hinzuweisen, korrekt ?
Leider kann ich den API-Key nicht prüfen, da ich kein Admin-User besitze....
kann ich etwas anderes als Fehler ausschliessen ?

LG
Björn

Lösung: Neuer API-Key hat geholfen..... da war wohl jemand beim Installateur ein wenig zu schnell... :D

felixm

#8
Erstmal sorry für die späte Antwort, ich würde irgendwie nicht informiert.
Zu den Fehler codes:
ZitatSpecific API Usage Limitations
Specific APIs may enforce different usage limitations based on parameters sent by the client. Refer to the next sections for
details on specific API usage limitations.
If there is a violation of a specific API validation, the HTTP 403 – forbidden status code is returned.
Daily Limitation
Use of the monitoring server API is subject to a query limit of total 300 requests for a specific account token and a specific site ID
from the same source IP.
APIs that do not have a specific ID (e.g. Site List, Account List) will be counted as part of the total query limit.
For example, a user can execute 10 daily site list (account level) API calls, and then 290 API calls for every site in the account (e.g.
290 calls using the account token for "siteId 12345"and 290 calls using the account token for "siteId 12346").
An additional request to site 12345 or 12346 will result in HTTP 429 error – too many requests. .
Concurrency Limitation
The monitoring server API allows up to 3 concurrent API calls from the same source IP. Any additional concurrent calls will return
HTTP 429 error – too many requests.
To execute APIs concurrently without exceeding the above limitation, it is the client responsibility to implement a throttling
mechanism on the client side.
       

403 scheint eine nicht autorisierte Nutzung zu sein. Zu viele requests sollten 429 werfen.

Ich würde ja tippen dass du das poll-delay zu kurz gewählt hast und deshalb zu viele Anfragen raus gehen. Virtuos mal auf auto stellen?
Außerdem Bitte prüfen von wann die Fehlermeldung ist. Es wird im Reading immer die letzte Fehlermeldung angezeigt. Bitte schau doch mal wann das reading zuletzt aktualisiert wurde. Und mal gegeprüfen ob die anderen Readings danach wieder aktualisiert wurden.

Wenn das alles weiterhin auf ein Problem hinweist würde ich  versuchen das Modul neu einzurichten. Ggf den API Abruf per Hand im Browser zu testen und zu sehen ob da auch ein Fehler angezeigt wird.


Ggf merke doch doch mal mit den Ergebnissen der weiteren Untersuchung zurück.

Grüße Felix

marcus5020

Hallo !

Wie macht ihr das mit dem Fehler 429 - "too many requests" - bei mir funktioniert´s, wenn ich die Abfrage auf 120 sec. stelle - aber dann wird halt auch die Anzeige in FTUI nicht wirklich "online" dargestellt und man kann nicht wirklich gut entscheiden, ob momentan "genug Energie runterkommt" ...
Automatisch den API-Key ändern wäre fein, aber das geht wohl nicht ...

Hat sonst jemand Ideen oder Vorschläge ?
Vielen Dank
Marcus

felixm

Hi ich gebe mich momentan mit dem aktualisieren alle 3min zufrieden. Ich weiß gar nicht wie oft die Daten in der API von WR aktualisiert werden. Ich glaube echtes live wird nur pet Modbus gehen. Wenn 120sec geht kann man ggf noch mehr rausholen wenn man nachts nachts seltener abruft. Das macht das Modul ja wenn delay auf auto steht allerdings war ich da noch vorsichtig mit 210sec tagsüber und 900 nachts. Ich werde das mal testen mit kleineren Zahlen.

kmidt

Was ist mit virtuos auf Auto stellen gemeint ?
Wo macht man das und was bewirkt es ?

felixm

Sorry ich habe mich da etwas undeutlich ausgedrückt. Es geht ums das Attribut interval. Damit kann entweder eine feste Sekundenzahl als Intervall eingestellt werden oder auto um tagsüber alle 210 und nachts alle 900sec abzurufen. Einzustellen zB mit attr SolarEdgeWR interval auto.
Die 210 und 900 ergeben sich so dass man in 24h auf 300 Abfragen kommt, das ist laut Dokumentation die Grenze.

satprofi

Hallo.
EIngebunden, aber unter State steht "fetch data - 1 entries in the Queue"
bedeutet jetzt was?

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

pejonp

Zitat von: cocojambo am 16 August 2018, 19:38:26
Ich habe bereits meine SolarEdge Anlage mit 5Kw Inverter und der 10KW LG-Batterie auf AC Basis. ....
Alles andere funktioniert schon einiger Massen.
Gruß aus Köln
Norbert
Hallo,

Passt nicht ganz hier her, da SolarEgde direkt ausgelesen wird.

Ich habe hier mal für SolarEgde auf Basis von Modbus ein Modul gebaut (https://forum.fhem.de/index.php/topic,80767.msg853967.html#msg853967). Es holt die Infos direkt vom WR ohne den Umweg übers Portal. Die Batterie ist eine Sonnenbatterie und wird über httpmod ausgelesen bzw.
gesteuert  (https://forum.fhem.de/index.php/topic,32037.msg690677.html#msg690677).
Vielleicht hilft es ja weiter.

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