Solar Wechselrichter direkter API Aufruf

Begonnen von stefan.apetz, 07 August 2018, 16:11:09

Vorheriges Thema - Nächstes Thema

stefan.apetz

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.

felixm

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?

stefan.apetz

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

Tomk

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!

stefan.apetz

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

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.

Tomk

Ok Danke für die Antwort. Aber der link geht auf das Modul für den POST Aufruf, oder?

stefan.apetz

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.

micomat

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
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

beaune

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?

hapege

Hi,
ich habe gerade meinen QCells über ein Modbus-MQTT-GW von Tobias Faust in fhem eingebunden.
Gibts auch fix und fertig z.B. bei Kleinanzeigen
Praktisch :-)

Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

beaune

#10
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.

Schafy

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?
FHEM Docker auf QNAP NAS, DBLog, Max Cube als CUL, Max TH und FK, N4H-AJ3 & N4H-AR6

hapege

Hi,
die aktuell modbus Doku findet sich auch im Projekt in github:
https://github.com/tobiasfaust/SolaxModbusGateway/tree/development/docs
Die aktuelle Spec mit den Registern habe ich auf eine einfache Anfrage beim Solax Support bekommen :-)
Tobias' SW ist auch für den Q.Cells geeignet und bringt jetzt auch die passende json mit.
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

beaune

Ich kann inzwischen Erfolg vermelden, habe meine Solax-Anlage erfolgreich in fhem eingebunden. Schwierig war für mich zu verstehen, welche Zugänge überhaupt zur Verfügung stehen, zumal es da auch Änderungen gab, und es eine Abhängigkeit zur Konfiguration der Anlage gibt. Die Modbus RTU-Schnittstelle, die vielfach verwendet wird, ist nämlich nur dann verfügbar, wenn kein weiteres Gerät, wie z.B.ne Wallbox, mit dem Wechselrichter verbunden wird. Will man nämlich z.B. eine reine Überschußladung erreichen, dann ist zwingend eine Kommunikation zwischen Wechselrichter und Wallbox über Modbus RTU erforderlich (da reichen die Meßergebnisse der Stromwandler nicht aus!). Das alles passiert Solax-intern, wenn man das dementsprechend konfiguriert, bedeutet aber eben auch, dass dann der Wechselrichter zum Modbus-RTU-Master wird - und damit gerade kein Gateway als Master mehr angeschlossen werden darf!

Abhilfe kann hier ein Kommunikationsadapter von Solax schaffen (sog. Pocket Adapter). Bei den "alten" Adaptern war es so, dass der Wifi-Adapter ab irgendeinem Firmwarestand auch Modbus TCP beherrschte, der LAN-Adapter aber nicht. Jetzt gibt es aber relativ neu einen Kombiadapter, der sowohl LAN als auch WLAN unterstützt, und der spricht auch auf beiden Schnittstellen Modbus TCP. Genau den setze ich mit LAN-Verkabelung ein (WLAN ist im Keller schlecht).

In dieser Konstellation kann man also dem Wechselricter mit Modbus TCP abfragen, und kann dazu das Standardmodul in fhem nutzen. Ich füge meine Definition als Beispiel bei.

defmod PV ModbusAttr 1 10 192.168.2.172:502 TCP
attr PV dev-h-combine 20
attr PV dev-i-combine 80
attr PV dev-type-SolaxEnergy_01_UI32-expr $val / 100
attr PV dev-type-SolaxEnergy_01_UI32-len 2
attr PV dev-type-SolaxEnergy_01_UI32-unpack S>
attr PV dev-type-SolaxEnergy_UI32-expr $val / 10
attr PV dev-type-SolaxEnergy_UI32-len 2
attr PV dev-type-SolaxEnergy_UI32-unpack S>
attr PV obj-h0000-format %s
attr PV obj-h0000-len 14
attr PV obj-h0000-name 0x0
attr PV obj-h0000-reading InverterSN
attr PV obj-h0000-showGet 1
attr PV obj-h0000-type string
attr PV obj-h0000-unpack Z14
attr PV obj-h0007-format %s
attr PV obj-h0007-len 14
attr PV obj-h0007-name 0x07
attr PV obj-h0007-reading FactoryName
attr PV obj-h0007-showGet 1
attr PV obj-h0007-type string
attr PV obj-h0007-unpack Z14
attr PV obj-h0014-format %s
attr PV obj-h0014-len 14
attr PV obj-h0014-name 0x0E
attr PV obj-h0014-reading ModuleName
attr PV obj-h0014-showGet 1
attr PV obj-h0014-unpack c[20]
attr PV obj-h0037-expr $val / 10
attr PV obj-h0037-max 30
attr PV obj-h0037-min 0
attr PV obj-h0037-name 0x25
attr PV obj-h0037-poll 0
attr PV obj-h0037-reading BatteryDischargeMaxCurrent
attr PV obj-h0037-set 1
attr PV obj-h0037-setexpr $val * 10
attr PV obj-h0037-showGet 0
attr PV obj-h0037-type unsigned short
attr PV obj-h0145-expr $val / 10
attr PV obj-h0145-name 0x91
attr PV obj-h0145-poll 0
attr PV obj-h0145-reading BatteryDischargeMaxCurrentR
attr PV obj-h0145-showGet 1
attr PV obj-h0145-type unsigned short
attr PV obj-h0233-len 20
attr PV obj-h0233-name 0xE9
attr PV obj-h0233-reading InverterModel
attr PV obj-h0233-showGet 1
attr PV obj-h0233-unpack (c20)
attr PV obj-i0002-group 1-2
attr PV obj-i0002-name 0x02
attr PV obj-i0002-poll 1
attr PV obj-i0002-reading GridPower
attr PV obj-i0002-showGet 1
attr PV obj-i0002-type signed short big
attr PV obj-i0003-expr $val / 10
attr PV obj-i0003-name 0x03
attr PV obj-i0003-poll 0
attr PV obj-i0003-reading PvVoltage1
attr PV obj-i0003-showGet 1
attr PV obj-i0003-type unsigned short big
attr PV obj-i0004-expr $val / 10
attr PV obj-i0004-name 0x04
attr PV obj-i0004-poll 0
attr PV obj-i0004-reading PvVoltage2
attr PV obj-i0004-showGet 1
attr PV obj-i0004-type unsigned short big
attr PV obj-i0005-expr $val / 10
attr PV obj-i0005-name 0x05
attr PV obj-i0005-poll 1
attr PV obj-i0005-reading PvCurrent1
attr PV obj-i0005-showGet 1
attr PV obj-i0005-type unsigned short big
attr PV obj-i0006-expr $val / 10
attr PV obj-i0006-name 0x06
attr PV obj-i0006-poll 1
attr PV obj-i0006-reading PvCurrent2
attr PV obj-i0006-showGet 1
attr PV obj-i0006-type unsigned short big
attr PV obj-i0010-group 2-1
attr PV obj-i0010-name 0x0A
attr PV obj-i0010-poll 1
attr PV obj-i0010-reading PowerDC1
attr PV obj-i0010-showGet 1
attr PV obj-i0010-type unsigned short big
attr PV obj-i0011-group 2-2
attr PV obj-i0011-name 0x0B
attr PV obj-i0011-poll 1
attr PV obj-i0011-reading PowerDC2
attr PV obj-i0011-showGet 1
attr PV obj-i0011-type unsigned short big
attr PV obj-i0022-name 0x16
attr PV obj-i0022-poll 1
attr PV obj-i0022-reading Battpower_Charge1
attr PV obj-i0022-showGet 1
attr PV obj-i0022-type signed short big
attr PV obj-i0028-name 0x1C
attr PV obj-i0028-poll 1
attr PV obj-i0028-polldelay 60
attr PV obj-i0028-reading BatteryCapacity
attr PV obj-i0028-showGet 1
attr PV obj-i0028-type signed short big
attr PV obj-i0029-name 0x1D
attr PV obj-i0029-poll 1
attr PV obj-i0029-reading OutputEnergy_Charge
attr PV obj-i0029-showGet 1
attr PV obj-i0029-type SolaxEnergy_UI32
attr PV obj-i0032-expr $val / 10
attr PV obj-i0032-name 0x20
attr PV obj-i0032-poll 1
attr PV obj-i0032-polldelay 300
attr PV obj-i0032-reading OutputEnergy_Charge_today
attr PV obj-i0032-showGet 1
attr PV obj-i0032-type unsigned short big
attr PV obj-i0033-name 0x21/22
attr PV obj-i0033-poll 0
attr PV obj-i0033-reading InputEnergy_Charge
attr PV obj-i0033-showGet 1
attr PV obj-i0033-type SolaxEnergy_UI32
attr PV obj-i0035-expr $val / 10
attr PV obj-i0035-name 0x23
attr PV obj-i0035-poll 1
attr PV obj-i0035-polldelay 300
attr PV obj-i0035-reading InputEnergy_Charge_today
attr PV obj-i0035-showGet 1
attr PV obj-i0035-type signed short big
attr PV obj-i0038-len 2
attr PV obj-i0038-name 0x26
attr PV obj-i0038-poll 1
attr PV obj-i0038-reading BmsWarningMsb
attr PV obj-i0038-showGet 1
attr PV obj-i0038-type unsigned long big
attr PV obj-i0038-unpack s>s>
attr PV obj-i0070-group 1-1
attr PV obj-i0070-len 2
attr PV obj-i0070-name 0x46
attr PV obj-i0070-poll 1
attr PV obj-i0070-reading FeedinPower
attr PV obj-i0070-showGet 1
attr PV obj-i0070-unpack s>
attr PV obj-i0072-name 0x48
attr PV obj-i0072-poll 1
attr PV obj-i0072-polldelay 60
attr PV obj-i0072-reading FeedIn_total
attr PV obj-i0072-showGet 1
attr PV obj-i0072-type SolaxEnergy_01_UI32
attr PV obj-i0074-name 0x4A
attr PV obj-i0074-poll 0
attr PV obj-i0074-polldelay 600
attr PV obj-i0074-reading Consumption_total
attr PV obj-i0074-showGet 1
attr PV obj-i0074-type SolaxEnergy_01_UI32
attr PV obj-i0082-expr $val/10
attr PV obj-i0082-name 0x52
attr PV obj-i0082-poll 1
attr PV obj-i0082-polldelay 60
attr PV obj-i0082-reading Etotal_togrid
attr PV obj-i0082-showGet 1
attr PV obj-i0082-type SolaxEnergy_01_UI32
attr PV obj-i0108-name 0x6C
attr PV obj-i0108-reading GridPowerR
attr PV obj-i0108-showGet 1
attr PV obj-i0108-type signed short big
attr PV obj-i0112-name 0x70
attr PV obj-i0112-reading GridPowerS
attr PV obj-i0112-showGet 1
attr PV obj-i0112-type signed short big
attr PV obj-i0116-name 0x74
attr PV obj-i0116-reading GridPowerT
attr PV obj-i0116-showGet 1
attr PV obj-i0116-type signed short big
attr PV obj-i0125-name 0x7D
attr PV obj-i0125-reading InverterVersion
attr PV obj-i0125-showGet 1
attr PV obj-i0125-type unsigned short big
attr PV obj-i0130-name 0x82
attr PV obj-i0130-reading ModbusVersion
attr PV obj-i0130-showGet 1
attr PV obj-i0130-type unsigned short big
attr PV obj-i0131-name 0x83
attr PV obj-i0131-reading FirmwareVersion
attr PV obj-i0131-showGet 1
attr PV obj-i0131-type unsigned short big
attr PV obj-i0132-name 0x84
attr PV obj-i0132-reading BootloaderVersion
attr PV obj-i0132-showGet 1
attr PV obj-i0132-type unsigned short big
attr PV obj-i0145-expr $val / 10
attr PV obj-i0145-name 0x91
attr PV obj-i0145-poll 1
attr PV obj-i0145-polldelay 300
attr PV obj-i0145-reading EchargeToday
attr PV obj-i0145-showGet 1
attr PV obj-i0145-type unsigned short big
attr PV obj-i0150-expr $val / 10
attr PV obj-i0150-name 0x96
attr PV obj-i0150-poll 1
attr PV obj-i0150-polldelay 300
attr PV obj-i0150-reading SolarEnergyToday
attr PV obj-i0150-showGet 1
attr PV obj-i0150-type unsigned short big
attr PV obj-i0152-name 0x98
attr PV obj-i0152-poll 1
attr PV obj-i0152-reading feedin_energy_today
attr PV obj-i0152-showGet 1
attr PV obj-i0152-type SolaxEnergy_01_UI32
attr PV obj-i0154-name 0x9A
attr PV obj-i0154-poll 1
attr PV obj-i0154-reading consum_energy_today
attr PV obj-i0154-showGet 1
attr PV obj-i0154-type SolaxEnergy_01_UI32
attr PV obj-i0498-len 2
attr PV obj-i0498-name 0x01F2
attr PV obj-i0498-reading PvPowerA
attr PV obj-i0498-showGet 1
attr PV obj-i0498-type unsigned long big
attr PV obj-i0500-len 2
attr PV obj-i0500-name 0x01F4
attr PV obj-i0500-reading PvPowerB
attr PV obj-i0500-showGet 1
attr PV obj-i0500-type unsigned long big
attr PV obj-i1000-type signed short big