FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Solaranlagen => Thema gestartet von: stefan.apetz am 07 August 2018, 16:11:09

Titel: Solar Wechselrichter direkter API Aufruf
Beitrag von: stefan.apetz am 07 August 2018, 16:11:09
Hallo,

nachdem meine Versuche meinen Solar Wechselrichter entweder über meinen Gavazzi Zähler oder das Solar Portax einzubinden in fhem nicht so verliefen wie ich wollte, möchte ich nun über die direkte API des Wechselrichters gehen.

Dazu kann man den Wechselrichter aufrufen mit http://192.168.178.55/api/realTimeData.html

Zurück kommt folgender http-response:

{"method":"uploadsn","version":"Solax_SI_CH_2nd_20160912_DE02","type":"AL_SE","SN":"CD2360D3","Data":[6.9,7.8,163.4,281.6,13.6,239.5,3184,37,14.3,5643.1,2542,1127,2196,57.61,0.13,7,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.00,2325.50,,,,,,,,50.02,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,9],"Status":"2"}

Ich habe in einem Home Assistant Forum auch die Bedeutung der einzelnen Array-Positionen gefunden:

Live datastream
1: PV1 Current
2: PV2 Current
3: PV1 Voltage
4: PV2 Voltage
5: Grid Current
6: Grid Voltage
7: Grid Power
8: Inner Temp
9: Solar Today
10: Solar Total
11: Feed In Power
12: PV1 Power
13: PV2 Power
14: Battery Voltage
15: Battery Current
16: Battery Power
17: Battery Temp
18: ???
19: Battery Capacity
20: Solar Total 2

42: Energy to Grid
43: Energy from Grid

51: Grid Frequency

54: EPS Voltage
55: EPS Current
56: EPS VA
57: EPS Frequency

63: ???
68: ???
69: Status

Diese Werte möchte ich auch in fhem nutzen und alle zehn Sekunden abfragen.

Dazu habe ich ein httpmod Device definiert:

define SolaxData HTTPMOD http://192.168.178.55/api/realTimeData.html 10
attr SolaxData userattr get01JSON get01Name reading01Name reading01Regex requestHeader1 stateFormat userattr
attr SolaxData extractAllJSON 1
attr SolaxData get01JSON MyData
attr SolaxData get01Name MyValue
attr SolaxData reading01Name Data
attr SolaxData reading01Regex "Data":+\[(.*)\]
attr SolaxData requestHeader1 Content-Type: application/json
attr SolaxData room Solax
attr SolaxData showBody 1
attr SolaxData verbose 5


Ich erhalte jetzt in einem Reading (Data) alle Werte zurück:

Data
5.7,8.3,198.9,272.1,14.0,239.8,3308,37,14.3,5643.2,2658,1133,2258,57.61,0.14,7,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.10,2325.50,,,,,,,,49.99,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,9

Frage: wie komme ich am geschicktesten an die im JSON Objekt in der Liste stehenden Werte zurück und Mappe die dann auf obige Gestalt auf die schönen Namen?

Interessant ist: wenn ich auf dem Objekt extractAllJSON anwende erhalte ich im Log einen Fehler:

2018.08.07 16:05:46 4 : SolaxData: GetUpdate called (update)
2018.08.07 16:05:46 4 : SolaxData: update timer modified: will call GetUpdate in 10.0 seconds at 2018-08-07 16:05:56
2018.08.07 16:05:46 4 : SolaxData: AddToQueue adds update, initial queue len: 0
2018.08.07 16:05:46 5 : SolaxData: AddToQueue adds type update to URL http://192.168.178.55/api/realTimeData.html, no data, header Content-Type: application/json, retry 0
2018.08.07 16:05:46 5 : SolaxData: HandleSendQueue called, qlen = 1
2018.08.07 16:05:46 4 : SolaxData: HandleSendQueue sends request type update to URL http://192.168.178.55/api/realTimeData.html, No Data, header: Content-Type: application/json timeout 2
2018.08.07 16:05:46 5 : HttpUtils url=http://192.168.178.55/api/realTimeData.html
2018.08.07 16:05:46 5 : HttpUtils request header: GET /api/realTimeData.html HTTP/1.0 Host: 192.168.178.55 User-Agent: fhem Accept-Encoding: gzip,deflate Content-Type: application/json Content-Length: 0
2018.08.07 16:05:46 4 : http://192.168.178.55/api/realTimeData.html: HTTP response code 200
2018.08.07 16:05:46 5 : HttpUtils http://192.168.178.55/api/realTimeData.html: Got data, length: 307
2018.08.07 16:05:46 5 : HttpUtils response header: HTTP/1.1 200 OK Server: MySocket Server Date: TEST Content-Type: text/html Content-Length: 307 Connection: close Accept-Ranges: bytes
2018.08.07 16:05:46 4 : SolaxData: Read callback: request type was update retry 0, Body: {"method":"uploadsn","version":"Solax_SI_CH_2nd_20160912_DE02","type":"AL_SE","SN":"CD2360D3","Data":[4.0,10.7,228.8,173.3,11.6,236.6,2689,37,15.1,5643.8,2035,915,1854,57.61,0.11,6,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.60,2325.50,,,,,,,,50.01,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,9],"Status":"2"}
2018.08.07 16:05:46 3 : SolaxData: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 198 (before ",,,,,,,,,,,,,,,,,,,,...") at (eval 312) line 1.
2018.08.07 16:05:46 5 : SolaxData: ExtractSid called, context reading, num
2018.08.07 16:05:46 4 : SolaxData: CheckAuth decided no authentication required
2018.08.07 16:05:46 3 : SolaxData: no parsed JSON structure available
emlog'>2018.08.07 16:05:46 5 : SolaxData: Read starts parsing response to update with defined readings: 012018.08.07 16:05:46 5 : SolaxData: ExtractReading Data with regex /"Data":+\[(.*)\]/...2018.08.07 16:05:46 5 : SolaxData: 1 capture group(s), matchlist = 4.0,10.7,228.8,173.3,11.6,236.6,2689,37,15.1,5643.8,2035,915,1854,57.61,0.11,6,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.60,2325.50,,,,,,,,50.01,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,92018.08.07 16:05:46 4 : SolaxData: ExtractReading for reading01-1 sets Data to 4.0,10.7,228.8,173.3,11.6,236.6,2689,37,15.1,5643.8,2035,915,1854,57.61,0.11,6,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.60,2325.50,,,,,,,,50.01,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,92018.08.07 16:05:46 4 : SolaxData: Read response to update matched Reading(s) Data2018-08-07 16:05:46 HTTPMOD SolaxData Data: 4.0,10.7,228.8,173.3,11.6,236.6,2689,37,15.1,5643.8,2035,915,1854,57.61,0.11,6,27,99,0.0,1125.8,,,,,,,,,,,,,,,,,,,,,,2649.60,2325.50,,,,,,,,50.01,,,0.0,0.0,0,0.00,0,0,0,0.00,0,9,0,0,0.00,0,9
2018.08.07 16:05:46 5 : SolaxData: HandleSendQueue called, qlen = 02018-08-07 16:05:52 CUL_HM HM_5A501E ResndFail



Ich bin für jeden Hinweis dankbar.
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: felixm am 03 September 2018, 19:34:42
Hallo Stefan,ich habe zwar einen ganz anderen Wechselrichter. Aber mein Modul für Solaredge macht nichts anderes als regelmäßig einen JSON Datensatz abzurufen und auszulesen. Dank der Hilfe von CoolTux ist das Modul inzwischen relativ stabil und vielleicht eine gute Grundlage für dich?
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: stefan.apetz am 05 September 2018, 11:08:14
Hallo,

danke für die Rückmeldung. Ich habe zwischenzeitlich im GITHub unter https://github.com/GitHobi/solax eine Integration für einen anderen Solar Wechselrichter gefunden und den eingebaut. Der läuft prima.

Ich hatte mich dann mit Hobby noch ein wenig ausgetauscht, so dass das Modul parametrisierbar wird (eigene IP zum Wechselrichter etc.).

Wäre klasse, wenn Hobby das als generelles Modul ins FHEM Git mit aufnehmen würde. Dann könnte das ggf. von einer größeren Gemeinde weiter bearbeitet werden.

Das Modul in Verbindung mit TabletUI ist echt super einsetzbar.

LG
Stefan
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: Tomk am 24 September 2022, 07:18:18
Hallo Stefan,

ich habe mir dein modul 74_SolaxDirect.pm angeschaut und würde es gerne umbauen auf eine Post abfrage für meinen Qcells Inverter (baugleich Solax Hybrid G3).
Wenn ich einen CURL aufgruf absetzte komme ich an die Daten des WR.

curl -X POST http://192.168.xxx.xxx --data "optType=ReadRealTimeData&pwd=GEHEIM"

Hat dies evtl. schon jemand in ein Fhem Modul gepackt? Ich habe keinerlei Erfahrung, aber würde es ansonsten auf Basis deines Moduls mal versuchen anzupassen.

Mein Ziel ist es die Daten in Fhem zu Visualisieren und ggf. Überschussladen/Wärmepumpe zu steuern.

Danke vorab!
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: stefan.apetz am 25 September 2022, 06:29:47
Moin,

ich habe das mit dem http-Aufruf schon seit längerem verworfen.

Ich verwende seit längerem jetzt das Modbus Modul. Siehe https://github.com/GitHobi/solax/wiki/74_SolaxDirect.pm-module-description (https://github.com/GitHobi/solax/wiki/74_SolaxDirect.pm-module-description)

Siehe dazu auch in diesem Thread den Eintrag https://forum.fhem.de/index.php?topic=75456.15 vom 31.10.2019.

Das läuft super und stabil.
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: Tomk am 25 September 2022, 07:06:17
Ok Danke für die Antwort. Aber der link geht auf das Modul für den POST Aufruf, oder?
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: stefan.apetz am 25 September 2022, 07:14:45
Oh, ja sorry, stimmt. Ist zu früh am Morgen ;-)

Für meine Visualisierung verwende ich das https-Modul.

Das Modbus habe ich testweise angebunden, aber noch nicht mit ftui koppeln können.

Das Modul hinter dem Link aus meinem letzten Eintrag ist das http Modul. Das habe ich aber nicht angepasst / erstellt.
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: micomat am 31 Januar 2023, 07:13:20
Zitat von: Tomk am 24 September 2022, 07:18:18
Hallo Stefan,

ich habe mir dein modul 74_SolaxDirect.pm angeschaut und würde es gerne umbauen auf eine Post abfrage für meinen Qcells Inverter (baugleich Solax Hybrid G3).
Wenn ich einen CURL aufgruf absetzte komme ich an die Daten des WR.

curl -X POST http://192.168.xxx.xxx --data "optType=ReadRealTimeData&pwd=GEHEIM"

Hat dies evtl. schon jemand in ein Fhem Modul gepackt? Ich habe keinerlei Erfahrung, aber würde es ansonsten auf Basis deines Moduls mal versuchen anzupassen.

Mein Ziel ist es die Daten in Fhem zu Visualisieren und ggf. Überschussladen/Wärmepumpe zu steuern.

Danke vorab!

Hey
hat das bei dir mit dem QCells Inverter geklappt? Ich stehe vor der gleichen Herausforderung nach Umbau auf QCells.
Wenn ja würde ich mich über das angepasste Modul freuen :)

VG
Markus
Titel: Antw:Solar Wechselrichter direkter API Aufruf
Beitrag von: beaune am 31 Januar 2023, 14:39:31
Ich wüßte gerne ob es hier ein Update gibt. Hat schon mal jemand auf einen QCELLS-Wechselrichter zugegriffen und kann diesbezüglich Erfahrungen teilen?
Titel: Aw: Solar Wechselrichter direkter API Aufruf
Beitrag von: hapege am 29 Oktober 2023, 21:25:52
Hi,
ich habe gerade meinen QCells über ein Modbus-MQTT-GW von Tobias Faust (https://github.com/tobiasfaust/SolaxModbusGateway) in fhem eingebunden.
Gibts auch fix und fertig z.B. bei Kleinanzeigen (https://www.kleinanzeigen.de/s-anzeige/q-cells-hyb-g3-q-home-ess-modbus-mqtt-openwb-iobroker-fhem-ha/2548409577-168-8700)
Praktisch :-)

Titel: Aw: Solar Wechselrichter direkter API Aufruf
Beitrag von: beaune am 30 Oktober 2023, 11:33:19
Interessant, das ist an mir vorbei gegangen... Ich hatte mich in der Zwischenzeit mal mit Modbus RTU->TCP-Umsetzern (waveshare 23273, Versorgung über PoE möglich) beschäftigt und das Ziel verfolgt, diesen dann mit dem Modbus-Modul in FHEM zu integrieren. Müßte eigentlich auch gehen. Das schwierigste ist wahrscheinlich die Konfiguration, da man sich die Modbus-Register des Qcells erstmal zusammensuchen muß. Ist das vielleicht aus dem MQTT-Gateway extrahierbar? Welche Parameter hast Du dort konfiguriert, oder ist das MQTT-Gateway schon für Qcells vorkonfiguriert?

In Summe scheint es aber so zu sein, dass ein spezielles Qcells-Modul für FHEM eher nicht gebraucht wird, sondern entweder mit dem Modbus- oder dem MQTT-Modul gearbeitet werden kann.
Titel: Aw: Solar Wechselrichter direkter API Aufruf
Beitrag von: Schafy am 17 November 2023, 23:04:01
Ich versuche auch gerade, die Modbus Register zusammen zu bekommen, blix aber noch nicht. Die Liste mit den Registern habe ich aber hier gefunden https://github.com/evcc-io/evcc/discussions/4016.

Wenn Input Register 0x001C die Batteriekapazität ist, dann muss ich sie doch als attr <WR> obj-i028-reading <Name> definieren, oder?