Guten Morgen.
@JCElec ich lese den WR über die Modbus Integration aus. Mittlerweile habe ich die Modbus.yaml etwas optimiert.
- name: EW11
type: tcp
host: 192.168.1.18
port: 8899
sensors:
- name: WR_1
slave: 1
address: 26
input_type: holding
count: 30
data_type: custom
structure: ">26H4h"
- name: WR_2
slave: 1
address: 56
input_type: holding
count: 33
data_type: custom
structure: ">9H24h"
- name: WR_3
slave: 1
address: 2026
input_type: holding
count: 25
data_type: custom
structure: ">13h12H"
- name: WR_4
slave: 1
address: 2055
input_type: holding
count: 3
data_type: custom
structure: ">3H"
- name: WR_5
slave: 1
address: 2065
input_type: holding
count: 18
data_type: custom
structure: ">18H"
Ausgelesen werden die Modbus Entitäten über Templates angelegt als Helfer Template-Sensoren
Als Beispiel das Template des Batterie Spannungssensor
{{ (states('sensor.wr_3').split(',')[0] | float /100)}}
Volständige Liste der Werte und Deren Templates:
sensors:
- wr_inverter_voltage_l1:
unique_id: wr_inverter_voltage_l1
friendly_name: "WR Inverter Spannung L1"
state: "{{ (states('sensor.wr_1').split(',')[0] |float / 10)}}"
unit_of_measurement: V
device_class: voltage
- wr_inverter_voltage_l2:
unique_id: wr_inverter_voltage_l2
friendly_name: "WR Inverter Spannung L2"
value_template: "{{ (states('sensor.wr_1').split(',')[1] |float / 10)}}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_inverter_voltage_l3:
unique_id: wr_inverter_voltage_l3
friendly_name: "WR Inverter Spannung L3"
value_template: "{{ (states('sensor.wr_1').split(',')[2] |float / 10)}}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_inverter_current_l1:
unique_id: wr_inverter_current_l1
friendly_name: "WR Inverter Strom L1"
value_template: "{{ (states('sensor.wr_1').split(',')[3] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_inverter_current_l2:
unique_id: wr_inverter_current_l2
friendly_name: "WR Inverter Strom L2"
value_template: "{{ (states('sensor.wr_1').split(',')[4] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_inverter_current_l3:
unique_id: wr_inverter_current_l3
friendly_name: "WR Inverter Strom L3"
value_template: "{{ (states('sensor.wr_1').split(',')[5] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_grid_voltage_l1:
unique_id: wr_grid_voltage_l1
friendly_name: "WR Netz Spannung L1"
value_template: "{{ (states('sensor.wr_1').split(',')[6] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_grid_voltage_l2:
unique_id: wr_grid_voltage_l2
friendly_name: "WR Netz Spannung L2"
value_template: "{{ (states('sensor.wr_1').split(',')[7] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_grid_voltage_l3:
unique_id: wr_grid_voltage_l3
friendly_name: "WR Netz Spannung L3"
value_template: "{{ (states('sensor.wr_1').split(',')[8] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_grid_current_l1:
unique_id: wr_grid_current_l1
friendly_name: "WR Netz Strom L1"
value_template: "{{ (states('sensor.wr_1').split(',')[9] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_grid_current_l2:
unique_id: wr_grid_current_l2
friendly_name: "WR Netz Strom L2"
value_template: "{{ (states('sensor.wr_1').split(',')[10] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_grid_current_l3:
unique_id: wr_grid_current_l3
friendly_name: "WR Netz Strom L3"
value_template: "{{ (states('sensor.wr_1').split(',')[11] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_load_voltage_l1:
unique_id: wr_load_voltage_l1
friendly_name: "WR Load Spannung L1"
value_template: "{{ (states('sensor.wr_1').split(',')[12] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_load_voltage_l2:
unique_id: wr_load_voltage_l2
friendly_name: "WR Load Spannung L2"
value_template: "{{ (states('sensor.wr_1').split(',')[13] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_load_voltage_l3:
unique_id: wr_load_voltage_l3
friendly_name: "WR Load Spannung L3"
value_template: "{{ (states('sensor.wr_1').split(',')[14] |float / 10) }}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_load_current_l1:
unique_id: wr_load_current_l1
friendly_name: "WR Load Strom L1"
value_template: "{{ (states('sensor.wr_1').split(',')[15] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_load_current_l2:
unique_id: wr_load_current_l2
friendly_name: "WR Load Strom L2"
value_template: "{{ (states('sensor.wr_1').split(',')[16] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_load_current_l3:
unique_id: wr_load_current_l3
friendly_name: "WR Load Strom L3"
value_template: "{{ (states('sensor.wr_1').split(',')[17] |float / 100) }}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_inverter_frequency:
unique_id: wr_inverter_frequency
friendly_name: "WR Inverter Frequenz"
value_template: "{{ (states('sensor.wr_1').split(',')[26] |float / 100) }}"
unit_of_measurement: Hz
device_class: frequency
state_class: measurement
- wr_grid_frequency:
unique_id: wr_grid_frequency
friendly_name: "WR Netz Frequenz"
value_template: "{{ (states('sensor.wr_1').split(',')[27] |float / 100) }}"
unit_of_measurement: Hz
device_class: frequency
state_class: measurement
- wr_max_temp:
unique_id: wr_max_temp
friendly_name: "WR Max Temperatur"
value_template: "{{ (states('sensor.wr_2').split(',')[0] |float / 10) }}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
- wr_workstage:
unique_id: wr_workstage
friendly_name: "WR Workstage"
value_template: "{{ states('sensor.wr_2').split(',')[1]}}"
- wr_ct_power_l1:
unique_id: wr_ct_power_l1
friendly_name: "WR CT Leistung L1"
value_template: "{{ states('sensor.wr_2').split(',')[2]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_ct_power_l2:
unique_id: wr_ct_power_l2
friendly_name: "WR CT Leistung L2"
value_template: "{{ states('sensor.wr_2').split(',')[3]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_ct_power_l3:
unique_id: wr_ct_power_l3
friendly_name: "WR CT Leistung L3"
value_template: "{{ states('sensor.wr_2').split(',')[4]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_inverter_power_l1:
unique_id: wr_inverter_power_l1
friendly_name: "WR Inverter Leistung L1"
value_template: "{{ states('sensor.wr_2').split(',')[9]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_inverter_power_l2:
unique_id: wr_inverter_power l2
friendly_name: "WR Inverter Leistung L2"
value_template: "{{ states('sensor.wr_2').split(',')[10]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_inverter_power_l3:
unique_id: wr_inverter_power_l3
friendly_name: "WR Inverter Leistung L3"
value_template: "{{ states('sensor.wr_2').split(',')[11]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_inverter_power_total:
unique_id: wr_inverter_power_total
friendly_name: "WR Inverter Leistung total"
value_template: "{{(states('sensor.wr_2').split(',')[9] | float)+(states('sensor.wr_2').split(',')[10] | float)+(states('sensor.wr_2').split(',')[11] | float)}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_grid_power_l1:
unique_id: wr_grid_power_l1
friendly_name: "WR Netz Leistung L1"
value_template: "{{ states('sensor.wr_2').split(',')[21]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_grid_power_l2:
unique_id: wr_grid_power l2
friendly_name: "WR Netz Leistung L2"
value_template: "{{ states('sensor.wr_2').split(',')[22]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_grid_power_l3:
unique_id: wr_grid_power_l3
friendly_name: "WR Netz Leistung L3"
value_template: "{{ states('sensor.wr_2').split(',')[23]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_grid_power_total:
unique_id: wr_grid_power_total
friendly_name: "WR Netz Leistung total"
value_template: "{{(states('sensor.wr_2').split(',')[21] | float)+(states('sensor.wr_2').split(',')[22] | float)+(states('sensor.wr_2').split(',')[23] | float)}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_load_power_l1:
unique_id: wr_load_power_l1
friendly_name: "WR Load Leistung L1"
value_template: "{{ states('sensor.wr_2').split(',')[30]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_load_power_l2:
unique_id: wr_load_power_l2
friendly_name: "WR Load Leistung L2"
value_template: "{{ states('sensor.wr_2').split(',')[31]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_load_power_l3:
unique_id: wr_load_power_l3
friendly_name: "WR Load Leistung L3"
value_template: "{{ states('sensor.wr_2').split(',')[32]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_battery_voltage:
unique_id: wr_battery_voltage
friendly_name: "WR BAT Spannung"
value_template: "{{ (states('sensor.wr_3').split(',')[0] | float /100)}}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_battery_current:
unique_id: wr_battery_current
friendly_name: "WR BAT Strom"
value_template: "{{ (states('sensor.wr_3').split(',')[1] | float /10)}}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_pv1_voltage:
unique_id: wr_pv1_voltage
friendly_name: "WR PV1 Spannung"
value_template: "{{ (states('sensor.wr_3').split(',')[2] | float /10)}}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_pv1_current:
unique_id: wr_pv1_current
friendly_name: "WR PV1 Strom"
value_template: "{{ (states('sensor.wr_3').split(',')[3] | float /100)}}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_pv2_voltage:
unique_id: wr_pv2_voltage
friendly_name: "WR PV2 Spannung"
value_template: "{{ (states('sensor.wr_3').split(',')[4] | float /10)}}"
unit_of_measurement: V
device_class: voltage
state_class: measurement
- wr_pv2_current:
unique_id: wr_pv2_current
friendly_name: "WR PV2 Strom"
value_template: "{{ (states('sensor.wr_3').split(',')[5] | float /100)}}"
unit_of_measurement: A
device_class: current
state_class: measurement
- wr_battery_power:
unique_id: wr_battery_power
friendly_name: "WR BAT Leistung"
value_template: "{{ states('sensor.wr_3').split(',')[10]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_pv1_power:
unique_id: wr_pv1_power
friendly_name: "WR PV1 Leistung"
value_template: "{{ states('sensor.wr_3').split(',')[11]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_pv2_power:
unique_id: wr_pv2_power
friendly_name: "WR PV2 Leistung"
value_template: "{{ states('sensor.wr_3').split(',')[12]}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_pv_power_total:
unique_id: wr_pv_power_total
friendly_name: "WR PV Leistung total"
value_template: "{{(states('sensor.wr_3').split(',')[11] | float)+(states('sensor.wr_3').split(',')[12] | float)}}"
unit_of_measurement: W
device_class: power
state_class: measurement
- wr_battery_soc:
unique_id: wr_battery_soc
friendly_name: "WR BAT SOC"
value_template: "{{ states('sensor.wr_3').split(',')[13]}}"
unit_of_measurement: '%'
device_class: battery
state_class: measurement
- wr_temp_s1_4:
unique_id: wr_temp_s1_4
friendly_name: "WR Temp S1-4"
value_template: "{{((states('sensor.wr_3').split(',')[17] | float /10)+(states('sensor.wr_3').split(',')[18] | float /10)+(states('sensor.wr_3').split(',')[19] | float /10)+(states('sensor.wr_3').split(',')[20] | float /10) )| float /4}}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
- wr_temp_r1_4:
unique_id: wr_temp_r1_4
friendly_name: "WR Temp R1-4"
value_template: "{{((states('sensor.wr_3').split(',')[21] | float /10)+(states('sensor.wr_3').split(',')[22] | float /10)+(states('sensor.wr_3').split(',')[24] | float /10) )| float /3}}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
- wr_battery_temp:
unique_id: wr_battery_temp
friendly_name: "WR BAT Temp"
value_template: "{{ (states('sensor.wr_4').split(',')[0] | float /10)}}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
- wr_battery_temp_max:
unique_id: wr_battery_temp_max
friendly_name: "WR BAT MAX Temp"
value_template: "{{ (states('sensor.wr_4').split(',')[1] | float /10)}}"
unit_of_measurement: °C
device_class: temperature
state_class: measurement
- wr_pv_production_day:
unique_id: wr_pv_production_day
friendly_name: "WR PV Produktion day"
value_template: "{{(states('sensor.wr_5').split(',')[0] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_pv_production_total:
unique_id: wr_pv_production_total
friendly_name: "WR PV Produktion total"
value_template: "{{(states('sensor.wr_5').split(',')[1] | float /10 *1000)+(states('sensor.wr_5').split(',')[2] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_battery_charge_day:
unique_id: wr_battery_charge_day
friendly_name: "WR BAT CHG day"
value_template: "{{(states('sensor.wr_5').split(',')[3] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_battery_charge_total:
unique_id: wr_battery_charge_total
friendly_name: "WR BAT CHG total"
value_template: "{{(states('sensor.wr_5').split(',')[4] | float /10 *1000)+(states('sensor.wr_5').split(',')[5] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_battery_discharge_day:
unique_id: wr_battery_discharge_day
friendly_name: "WR BAT DCHG day"
value_template: "{{(states('sensor.wr_5').split(',')[6] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_battery_discharge_total:
unique_id: wr_battery_discharge_total
friendly_name: "WR BAT DCHG total"
value_template: "{{(states('sensor.wr_5').split(',')[7] | float /10 *1000)+(states('sensor.wr_5').split(',')[8] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_grid_buy_day:
unique_id: wr_grid_buy_day
friendly_name: "WR Netzbezug day"
value_template: "{{(states('sensor.wr_5').split(',')[9] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_grid_buy_total:
unique_id: wr_grid_buy_total
friendly_name: "WR Netzbezug total"
value_template: "{{(states('sensor.wr_5').split(',')[10] | float /10 *1000)+(states('sensor.wr_5').split(',')[11] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_grid_sell_day:
unique_id: wr_grid_sell_day
friendly_name: "WR Netzverkauf day"
value_template: "{{(states('sensor.wr_5').split(',')[12] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_grid_sell_total:
unique_id: wr_grid_sell_total
friendly_name: "WR Netzverkauf total"
value_template: "{{(states('sensor.wr_5').split(',')[13] | float /10 *1000)+(states('sensor.wr_5').split(',')[14] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_load_day:
unique_id: wr_load_day
friendly_name: "WR Load day"
value_template: "{{(states('sensor.wr_5').split(',')[15] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
- wr_load_total:
unique_id: wr_load_total
friendly_name: "WR Load total"
value_template: "{{(states('sensor.wr_5').split(',')[16] | float /10 *1000)+(states('sensor.wr_5').split(',')[17] | float /10)}}"
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
Ich hoffe dir Damit weitergeholfen zu haben. Es gibt leider keine fertige Integration dafür , aber es läuft stabil und zuverlässig.