solaredge-modbus-hass icon indicating copy to clipboard operation
solaredge-modbus-hass copied to clipboard

feat: add battery sensors

Open Duell10111 opened this issue 2 years ago • 5 comments

Based on the PR #30 , but only with code to add the battery sensors to split this feature up. Additionally I rebased it on the current master ;)

Already tested on new local SolarEdge installation 😊:

image

Duell10111 avatar Jun 01 '22 19:06 Duell10111

Hi, thanks for sharing the code. I've just installed it and on SolarEdge SE4000H with an LG RESU10H Prime. I got the following result: image

Need to figure out the battery state code. 0 – Off; 1 – Standby; 2 – Init; 3 – Charge; 4 – Discharge; 5 – Fault; 7 - Idle Don't know what state 6 means. Not active?

blowk avatar Jun 02 '22 13:06 blowk

Hi, first of thanks for trying it out on your side. 😊 I must say, that I did not really debug the Battery state, since my battery showed yesterday only the statuscode 3 or 10. Now it is also showing the state 6. 😅

Duell10111 avatar Jun 02 '22 13:06 Duell10111

Don't know what statuscode 10 means. If that happens, can you check what you get in MySolaredge app?

I've create some custom sensor.

  solaredge_battery_energy_flow:
    friendly_name: "Battery Energy Flow"
    value_template: "{{ state_attr('sensor.solaredge_modbus_battery', 'battery_power') }}"
    unit_of_measurement: 'W'
  solaredge_battery_percentage:
    friendly_name: "Battery Percentage"
    value_template: "{{ state_attr('sensor.solaredge_modbus_battery', 'battery_state_of_charge') | round(2) }}"
    unit_of_measurement: '%'
    icon_template: mdi:battery
  solaredge_battery_status:
    friendly_name: "Battery Status"
    value_template: >-
      {% if state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 0 %}
        Off
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 1 %}
        Standby
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 2 %}
        Init
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 3 %}
        Charge
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 4 %}
        Discharge
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 5 %}
        Fault
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 6 %}
        Not active
      {% elif state_attr('sensor.solaredge_modbus_battery', 'battery_state') == 7 %}
        Idle
      {% else %}
        Unknown
      {% endif %}`

Only need to find out custom sensors to use in Energy Dashboard. One for discharge and charge values. Maybe battery_energy_discharged_sum and battery_energy_charged_sum but I think those values are daily values.

blowk avatar Jun 03 '22 08:06 blowk

Sadly the code did not happen again as long as I looked it my values. But if it happen again I will look into it 😊

Duell10111 avatar Jun 28 '22 10:06 Duell10111

I added two other sensor templates with it. This can be used in the Energy dashboard to see what has been charged and discharged from battery. In may case when first installed, those values where daily values and now has changed to total values after an update from SolarEdge.

      solaredge_battery_energy_discharged_sum:
        friendly_name: "Battery Energy Discharged"
        value_template: "{{ (state_attr('sensor.solaredge_modbus_battery', 'battery_energy_discharged_sum') / 1000.0) | round(2) }}"
        unit_of_measurement: 'kWh'
      solaredge_battery_energy_charged_sum:
        friendly_name: "Battery Energy Charged"
        value_template: "{{ (state_attr('sensor.solaredge_modbus_battery', 'battery_energy_charged_sum') / 1000.0) | round(2) }}"
        unit_of_measurement: 'kWh'

blowk avatar Jul 25 '22 12:07 blowk