Growatt XH Wechselrichter mit Speicher über ModBus lesen/schreiben -> meine Lösung

Begonnen von shorty1111, 13 September 2023, 17:29:08

Vorheriges Thema - Nächstes Thema

shorty1111

Da ich jetzt einen Growatt Hybrid Wechselrichter mit Speicher habe möchte ich euch hier meine Definition zum Auslesen und Beschreiben (Steuern) über ModBus zur Verfügung stellen.
Ein Modul habe ich daraus nicht gemacht, ich hab es einfach nicht geschafft.
Hier der Code:

defmod Growatt_2500 ModbusAttr 1 5 RTU
attr Growatt_2500 IODev HA_Modbus_2
attr Growatt_2500 alias Growatt_3600-XH
attr Growatt_2500 event-min-interval .*:600
attr Growatt_2500 event-on-change-reading input_voltage:5.0,output_power:1.0,inverter_temperature:1.0,input_power:1.0,Charge_power:1.0,Battery_voltage:1.0,Discharge_power:1.0,State_of_charge_Capacity:1.0,Status,total_generated_energy:.*
attr Growatt_2500 icon solar
attr Growatt_2500 obj-h00000-expr ("s>",$val/1)
attr Growatt_2500 obj-h00000-format %.0f
attr Growatt_2500 obj-h00000-poll 1
attr Growatt_2500 obj-h00000-reading Remote_On_Off
attr Growatt_2500 obj-h00000-set 1
attr Growatt_2500 obj-h00000-unpack s>
attr Growatt_2500 obj-h00003-expr ("s>",$val/1)
attr Growatt_2500 obj-h00003-format %.1f
attr Growatt_2500 obj-h00003-poll 1
attr Growatt_2500 obj-h00003-reading Active_Power_Rate
attr Growatt_2500 obj-h00003-set 1
attr Growatt_2500 obj-h00003-unpack s>
attr Growatt_2500 obj-h00543-expr ("s>",$val/1)
attr Growatt_2500 obj-h00543-format %.0f
attr Growatt_2500 obj-h00543-poll 1
attr Growatt_2500 obj-h00543-reading AfciReset
attr Growatt_2500 obj-h00543-set 1
attr Growatt_2500 obj-h00543-unpack s>
attr Growatt_2500 obj-h03036-expr ("s>",$val/1)
attr Growatt_2500 obj-h03036-format %.0f
attr Growatt_2500 obj-h03036-poll 1
attr Growatt_2500 obj-h03036-reading Discharge_Powerrate
attr Growatt_2500 obj-h03036-set 1
attr Growatt_2500 obj-h03036-unpack s>
attr Growatt_2500 obj-h03037-expr ("s>",$val/1)
attr Growatt_2500 obj-h03037-format %.0f
attr Growatt_2500 obj-h03037-poll 1
attr Growatt_2500 obj-h03037-reading Stop_SOC_low
attr Growatt_2500 obj-h03037-set 1
attr Growatt_2500 obj-h03037-unpack s>
attr Growatt_2500 obj-h03038-expr ("s>",$val/1)
attr Growatt_2500 obj-h03038-format %.0f
attr Growatt_2500 obj-h03038-len 2
attr Growatt_2500 obj-h03038-poll 1
attr Growatt_2500 obj-h03038-reading Battfirst/Loadfirst
attr Growatt_2500 obj-h03038-set 1
attr Growatt_2500 obj-h03038-unpack N
attr Growatt_2500 obj-h03047-expr ("s>",$val/1)
attr Growatt_2500 obj-h03047-format %.0f
attr Growatt_2500 obj-h03047-poll 1
attr Growatt_2500 obj-h03047-reading Charge_Powerrate
attr Growatt_2500 obj-h03047-set 1
attr Growatt_2500 obj-h03047-unpack s>
attr Growatt_2500 obj-i00000-expr ("s>",$val/1)
attr Growatt_2500 obj-i00000-format %.0f
attr Growatt_2500 obj-i00000-poll 1
attr Growatt_2500 obj-i00000-reading Status
attr Growatt_2500 obj-i00000-unpack s>
attr Growatt_2500 obj-i00001-expr ("s>",$val/10)
attr Growatt_2500 obj-i00001-format %.0f
attr Growatt_2500 obj-i00001-len 2
attr Growatt_2500 obj-i00001-poll 1
attr Growatt_2500 obj-i00001-reading input_power
attr Growatt_2500 obj-i00001-unpack l>
attr Growatt_2500 obj-i00003-expr ("s>",$val/10)
attr Growatt_2500 obj-i00003-format %.1f
attr Growatt_2500 obj-i00003-poll 1
attr Growatt_2500 obj-i00003-reading input_voltage
attr Growatt_2500 obj-i00003-unpack s>
attr Growatt_2500 obj-i00035-expr ("s>",$val/10)
attr Growatt_2500 obj-i00035-format %.0f
attr Growatt_2500 obj-i00035-len 2
attr Growatt_2500 obj-i00035-poll 1
attr Growatt_2500 obj-i00035-reading output_power
attr Growatt_2500 obj-i00035-unpack l>
attr Growatt_2500 obj-i00037-expr ("s>",$val/100)
attr Growatt_2500 obj-i00037-format %.1f
attr Growatt_2500 obj-i00037-poll 1
attr Growatt_2500 obj-i00037-reading grid_frequency
attr Growatt_2500 obj-i00037-unpack s>
attr Growatt_2500 obj-i00053-expr ("s>",$val/10)
attr Growatt_2500 obj-i00053-format %.1f
attr Growatt_2500 obj-i00053-len 2
attr Growatt_2500 obj-i00053-poll 1
attr Growatt_2500 obj-i00053-reading today_generated_energy
attr Growatt_2500 obj-i00053-unpack l>
attr Growatt_2500 obj-i00055-expr ("s>",$val/10)
attr Growatt_2500 obj-i00055-format %.1f
attr Growatt_2500 obj-i00055-len 2
attr Growatt_2500 obj-i00055-poll 1
attr Growatt_2500 obj-i00055-reading total_generated_energy
attr Growatt_2500 obj-i00055-unpack l>
attr Growatt_2500 obj-i00093-expr ("s>",$val/10)
attr Growatt_2500 obj-i00093-format %.1f
attr Growatt_2500 obj-i00093-poll 1
attr Growatt_2500 obj-i00093-reading inverter_temperature
attr Growatt_2500 obj-i00093-unpack s>
attr Growatt_2500 obj-i00113-expr ("s>",$val/1)
attr Growatt_2500 obj-i00113-format %.0f
attr Growatt_2500 obj-i00113-poll 1
attr Growatt_2500 obj-i00113-reading power_percentage
attr Growatt_2500 obj-i00113-unpack s>
attr Growatt_2500 obj-i03169-expr ("s>",$val/100)
attr Growatt_2500 obj-i03169-format %.2f
attr Growatt_2500 obj-i03169-poll 1
attr Growatt_2500 obj-i03169-reading Battery_voltage
attr Growatt_2500 obj-i03169-unpack s>
attr Growatt_2500 obj-i03171-expr ("s>",$val/1)
attr Growatt_2500 obj-i03171-format %.0f
attr Growatt_2500 obj-i03171-poll 1
attr Growatt_2500 obj-i03171-reading State_of_charge_Capacity
attr Growatt_2500 obj-i03171-showGet 1
attr Growatt_2500 obj-i03171-unpack s>
attr Growatt_2500 obj-i03178-expr ("s>",$val/10)
attr Growatt_2500 obj-i03178-format %.1f
attr Growatt_2500 obj-i03178-len 2
attr Growatt_2500 obj-i03178-poll 1
attr Growatt_2500 obj-i03178-reading Discharge_power
attr Growatt_2500 obj-i03178-unpack l>
attr Growatt_2500 obj-i03180-expr ("s>",$val/10)
attr Growatt_2500 obj-i03180-format %.1f
attr Growatt_2500 obj-i03180-len 2
attr Growatt_2500 obj-i03180-poll 1
attr Growatt_2500 obj-i03180-reading Charge_power
attr Growatt_2500 obj-i03180-unpack l>
attr Growatt_2500 room Modbus
attr Growatt_2500 stateFormat {sprintf("%.0f W", (ReadingsVal($name,"input_power",0)) ) . " / ". \
sprintf("%.0f W", (ReadingsVal($name,"output_power",0) / 1) ) . " / ". \
sprintf("%.1f V", ReadingsVal($name,"input_voltage",0)) . " / ". \
sprintf("%.0f °C", ReadingsVal($name,"inverter_temperature",0)) . " / ".\
sprintf("%.1f kWh", ReadingsVal($name,"today_generated_energy",0)) . "<br/>+".\
sprintf("%.0f W", ReadingsVal($name,"Charge_power",0)) . " / -".\
sprintf("%.0f W", ReadingsVal($name,"Discharge_power",0)) . " / ".\
sprintf("%.2f V", ReadingsVal($name,"Battery_voltage",0)) . " / ".\
sprintf("%.0f %%", ReadingsVal($name,"State_of_charge_Capacity",0))\
}
attr Growatt_2500 userReadings Total:total_generated_energy.* monotonic {ReadingsVal("Growatt_2500","total_generated_energy",0)}
attr Growatt_2500 verbose 0


Ich hoffe es nützt euch ...

... Edit: Mein Wechselrichter ist auf die Masteradresse 1 eingestellt und ich lese den ModBus mit nem RS485 to USB Adapter an nem Raspi aus ...