Autor Thema: Growatt Wechselrichter Daten über Modbus abfragen  (Gelesen 243 mal)

Offline ttiger47

  • New Member
  • *
  • Beiträge: 6
Growatt Wechselrichter Daten über Modbus abfragen
« am: 23 August 2021, 20:34:53 »
Hallo,

da ich seit 2 Wochen eine Mini PV-Anlage auf dem Dach habe, wollte ich die in die Cloud gesendeten Daten, auch in mein FHEM einbinden. Nach dem Lesen verschiedener Foren und Forenbeiträgen, läuft bei mit seit gestern die Datenabfrage über Modbus. Die Daten der RS485 Schnittstelle meines Growatt MIC 600TL-X habe ich über ein USR-TCP232-304 per LAN in mein Heimnetz eingespeist. Es gibt aber auch RS485 zu Wlan-Adapter. Dafür müssen 2 Pole des Schnitstellenstecker mit dem USR-TCP Adapter verbunden werden. RS485A1 an A, RS485B1 an B.

Eine Übersicht der Verfügbaren Register findet man unter,
http://www.photovoltaicsolar.in/Growatt_Manual/MAX%20Series%20Modbus%20RTU%20Protocol.pdf
ab Seite 25

Sicherlich kann man das etwas schlanker in FHEM codieren und ich bin dankbar für Verbesserungsvorschläge, aber den angefügten Code habe ich mir zusammen gesucht und angepasst, wie es meinen jetziger FHEM Fähigkeiten entspricht.

define pvAnlage ModbusAttr 1 30 192.168.xxx.yyy:23 RTU
attr pvAnlage userattr dev-h-defExpr dev-h-defLen dev-h-defUnpack obj-i00000-expr obj-i00000-format obj-i00000-poll obj-i00000-reading obj-i00000-unpack obj-i000000-expr obj-i00002-expr obj-i00002-format obj-i00002-poll obj-i00002-reading obj-i00002-unpack obj-i00003-expr obj-i00003-format obj-i00003-poll obj-i00003-reading obj-i00003-unpack obj-i00036-expr obj-i00036-format obj-i00036-poll obj-i00036-reading obj-i00036-unpack obj-i00037-expr obj-i00037-format obj-i00037-poll obj-i00037-reading obj-i00037-unpack obj-i00054-expr obj-i00054-format obj-i00054-poll obj-i00054-reading obj-i00054-unpack obj-i00056-expr obj-i00056-format obj-i00056-poll obj-i00056-reading obj-i00056-unpack obj-i00093-expr obj-i00093-format obj-i00093-poll obj-i00093-reading obj-i00093-unpack obj-i00113-expr obj-i00113-format obj-i00113-poll obj-i00113-reading obj-i00113-unpack obj-i00335-expr obj-i00335-format obj-i00335-poll obj-i00335-reading obj-i00335-unpack obj-i00347-expr obj-i00347-format obj-i00347-poll obj-i00347-reading obj-i00347-unpack obj-i00349-expr obj-i00349-format obj-i00349-poll obj-i00349-reading obj-i00349-unpack obj-i00376-expr obj-i00376-format obj-i00376-poll obj-i00376-reading obj-i00376-unpack obj-i00378-expr obj-i00378-format obj-i00378-poll obj-i00378-reading obj-i00378-unpack
attr pvAnlage dev-h-defExpr ModbusLD_ScanFormat($hash, $val)
attr pvAnlage dev-h-defLen 1
attr pvAnlage dev-h-defUnpack a2
attr pvAnlage event-on-change-reading .*
attr pvAnlage group PV-Anlage
attr pvAnlage obj-i00000-expr ("s>",$val/1)
attr pvAnlage obj-i00000-format %.0f
attr pvAnlage obj-i00000-poll 1
attr pvAnlage obj-i00000-reading inverter_state
attr pvAnlage obj-i00000-unpack s>
attr pvAnlage obj-i00002-expr ("s>",$val/10)
attr pvAnlage obj-i00002-format %.1f
attr pvAnlage obj-i00002-poll 1
attr pvAnlage obj-i00002-reading input_power
attr pvAnlage obj-i00002-unpack s>
attr pvAnlage obj-i00003-expr ("s>",$val/10)
attr pvAnlage obj-i00003-format %.1f
attr pvAnlage obj-i00003-poll 1
attr pvAnlage obj-i00003-reading input_voltage
attr pvAnlage obj-i00003-unpack s>
attr pvAnlage obj-i00036-expr ("s>",$val/10)
attr pvAnlage obj-i00036-format %.1f
attr pvAnlage obj-i00036-poll 1
attr pvAnlage obj-i00036-reading output_power
attr pvAnlage obj-i00036-unpack s>
attr pvAnlage obj-i00037-expr ("s>",$val/100)
attr pvAnlage obj-i00037-format %.2f
attr pvAnlage obj-i00037-poll 1
attr pvAnlage obj-i00037-reading grid_frequency
attr pvAnlage obj-i00037-unpack s>
attr pvAnlage obj-i00054-expr ("s>",$val/10)
attr pvAnlage obj-i00054-format %.1f
attr pvAnlage obj-i00054-poll 1
attr pvAnlage obj-i00054-reading today_generated_energy
attr pvAnlage obj-i00054-unpack s>
attr pvAnlage obj-i00056-expr ("s>",$val/10)
attr pvAnlage obj-i00056-format %.1f
attr pvAnlage obj-i00056-poll 1
attr pvAnlage obj-i00056-reading total_generated_energy
attr pvAnlage obj-i00056-unpack s>
attr pvAnlage obj-i00093-expr ("s>",$val/10)
attr pvAnlage obj-i00093-format %.1f
attr pvAnlage obj-i00093-poll 1
attr pvAnlage obj-i00093-reading inverter_temperature
attr pvAnlage obj-i00093-unpack s>
attr pvAnlage obj-i00113-expr ("s>",$val/1)
attr pvAnlage obj-i00113-format %.0f
attr pvAnlage obj-i00113-poll 1
attr pvAnlage obj-i00113-reading power_percentage
attr pvAnlage obj-i00113-unpack s>
attr pvAnlage obj-i00335-expr ("s>",$val/10)
attr pvAnlage obj-i00335-format %.1f
attr pvAnlage obj-i00335-poll 1
attr pvAnlage obj-i00335-reading lastDay_generated_energy
attr pvAnlage obj-i00335-unpack s>
attr pvAnlage obj-i00347-expr ("s>",$val/10)
attr pvAnlage obj-i00347-format %.1f
attr pvAnlage obj-i00347-poll 1
attr pvAnlage obj-i00347-reading actualMonth_generated_energy
attr pvAnlage obj-i00347-unpack s>
attr pvAnlage obj-i00349-expr ("s>",$val/10)
attr pvAnlage obj-i00349-format %.1f
attr pvAnlage obj-i00349-poll 1
attr pvAnlage obj-i00349-reading lastMonth_generated_energy
attr pvAnlage obj-i00349-unpack s>
attr pvAnlage obj-i00376-expr ("s>",$val/10)
attr pvAnlage obj-i00376-format %.1f
attr pvAnlage obj-i00376-poll 1
attr pvAnlage obj-i00376-reading actualYear_generated_energy
attr pvAnlage obj-i00376-unpack s>
attr pvAnlage obj-i00378-expr ("s>",$val/10)
attr pvAnlage obj-i00378-format %.1f
attr pvAnlage obj-i00378-poll 1
attr pvAnlage obj-i00378-reading lastYear_generated_energy
attr pvAnlage obj-i00378-unpack s>
attr pvAnlage openTimeout 2
attr pvAnlage queueDelay 0.05
attr pvAnlage queueMax 128
attr pvAnlage queueTimeout 20
attr pvAnlage retriesAfterTimeout 60
attr pvAnlage room Strom
attr pvAnlage stateFormat {sprintf("%.0f W", (ReadingsVal($name,"output_power",0) / 1) ) . " / ". sprintf("%.0f V", ReadingsVal($name,"input_voltage",0))}

Als Beispiel habe ich noch einen Plot von heute angefügt.

Gruß ttiger47