A YAML script that supplements the HACS SolarEdge Modbus feature and data feed to allow the Energy Dashboard to monitor the SolarEdge Solar and 2 Batteries. If you only have 1 or have 3, I suggest modifying the code to support your setup.

26/06/2026 Update:

  • I have updated the solaredge yaml so it contains much more support and connectivity with the Home Assistant Energy Dashboard.
  • I have also updated the Battery Charging sensor template capabilities, so it can calculate Grid Charging if it's enabled.


Configuration YAML

solaredge.yaml
template:
  - sensor:
      - name: solaredge_battery_charge_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% set bch = 0 %}
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if (states('sensor.solaredge_battery1_status') == 'Charging' or states('sensor.solaredge_battery2_status') == 'Charging') and (states('sensor.solaredge_status') | int(0) == 4) %}
              {% set bch = ((states('sensor.solaredge_battery1_power') | float(0) + states('sensor.solaredge_battery2_power') | float(0)) / 1000) %}
              {% if bch > 0 %}
                {% set bch = bch | round(2) %}
              {% else %}
                {% set bch = 0 %}
              {% endif %}
            {% else %}
              {% set bch = 0 %}
            {% endif %}
          {% else %}
            {% set bch = 0 %}
          {% endif %}
          {% set g = states('sensor.solaredge_grid_consumption_power') | float(0) %}
          {% set p = states('sensor.solaredge_solar_production_power') | float(0) %}
          {% set bdis = states('sensor.solaredge_battery_discharge_power') | float(0) %}
          {% set load = states('sensor.solaredge_consumption_power') | float(0) %}
          {% set charge = g + p + bdis - load %}
          {% if charge > 0.05 %}
            {{ charge | round(2) }}
          {% else %}
            {{ bch }}
          {% endif %}
        icon: mdi:power-plug-battery
      - name: solaredge_battery_discharge_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if (states('sensor.solaredge_battery1_status') == 'Discharging' or states('sensor.solaredge_battery2_status') == 'Discharging') and (states('sensor.solaredge_status') | int(0) == 4) %}
              {% set discharge = ((states("sensor.solaredge_battery1_power") | float(0) + states("sensor.solaredge_battery2_power") | float(0)) * -1 / 1000) %}
              {% if discharge > 0 %}
                {{ discharge | round(2) }}
              {% else %}
                0
              {% endif %}
            {% else %}
              0
            {% endif %}
          {% else %}
            0
          {% endif %}
        icon: mdi:power-plug
      - name: solaredge_solar_production_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if states('sun.sun') == 'above_horizon' and states('sensor.solaredge_status') | int(0) == 4 %}
              {% set pv = (states("sensor.solaredge_dc_power") | float(0) / 1000) %}
              {% set depletion = states("sensor.solaredge_battery_discharge_power") | float(0) %}

              {% set charge = 0 %}
              {% if states('sensor.solaredge_status') | int(0) > 0 %}
                {% if (states('sensor.solaredge_battery1_status') == 'Charging' or states('sensor.solaredge_battery2_status') == 'Charging') and (states('sensor.solaredge_status') | int(0) == 4) %}
                  {% set charge = ((states('sensor.solaredge_battery1_power') | float(0) + states('sensor.solaredge_battery2_power') | float(0)) / 1000) %}
                  {% if charge > 0 %}
                    {% set charge = charge | round(2) %}
                  {% else %}
                    {% set charge = 0 %}
                  {% endif %}
                {% else %}
                  {% set charge = 0 %}
                {% endif %}
              {% else %}
                {% set charge = 0 %}
              {% endif %}
              
              {% set net = pv - depletion + charge %}
              {% if net > 0.003 %}
                {{ net | round(2) }}
              {% else %}
                0
              {% endif %}
            {% else %}
              0
            {% endif %}
          {% else %}
            0
          {% endif %}
        icon: mdi:solar-power
      - name: solaredge_consumption_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% set consumption = ( states('sensor.solaredge_ac_power') | float(0) / 1000 ) + ( states("sensor.solaredge_m1_ac_power") | float(0) * -1 / 1000 ) %}
            {% if consumption > 0.003 %}
              {{ consumption | round(2) }}
            {% else %}
              {{ states('sensor.solaredge_consumption_power') }}
            {% endif %}
          {% else %}
            {{ states('sensor.solaredge_consumption_power') }}
          {% endif %}
        icon: mdi:flash
      - name: solaredge_export_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% set export = ( states('sensor.solaredge_m1_ac_power') | float(0) / 1000 ) %}
            {% if export > 0.003 %}
              {{ export | round(2) }}
            {% else %}
              0
            {% endif %}
          {% else %}
            0
          {% endif %}
        icon: mdi:transmission-tower-import
      - name: solaredge_grid_consumption_power
        unit_of_measurement: kW
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% set grid = (states('sensor.solaredge_m1_ac_power') | float(0) * -1 / 1000 ) %}
            {% if grid > 0.003 %}
              {{ grid | round(2) }}
            {% else %}
              0
            {% endif %}
          {% else %}
            {{ states('sensor.solaredge_grid_consumption_power') }}
          {% endif %}
        icon: mdi:transmission-tower-export
      - name: solaredge_battery_charge
        unit_of_measurement: "%"
        device_class: battery
        state_class: measurement
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if states('sensor.solaredge_battery1_state_of_charge') | is_number %}
              {{ ( (states("sensor.solaredge_battery1_state_of_charge") | float(0) + states("sensor.solaredge_battery2_state_of_charge") | float(0) ) / 2) | round(1) }}
            {% else %}
              {{ states('sensor.solaredge_battery_charge') }}
            {% endif %}
          {% else %}
            {{ states('sensor.solaredge_battery_charge') }}
          {% endif %}
      - name: solaredge_inverter_status
        state: >
          {% if states('sensor.solaredge_status') | int(0) == 1 %}
            Off
          {% elif states('sensor.solaredge_status') | int(0) == 2 %}
            Night Mode
          {% elif states('sensor.solaredge_status') | int(0) == 3 %}
            Starting
          {% elif states('sensor.solaredge_status') | int(0) == 4 %}
            Normal
          {% elif states('sensor.solaredge_status') | int(0) == 5 %}
            Throttled
          {% elif states('sensor.solaredge_status') | int(0) == 6 %}
            Shutting Down
          {% elif states('sensor.solaredge_status') | int(0) == 7 %}
            Fault
          {% elif states('sensor.solaredge_status') | int(0) == 8 %}
            Maintenance
          {% else %}
            Unknown
          {% endif %}
        icon: mdi:generator-stationary
      - name: solaredge_power_difference
        unit_of_measurement: kW
        device_class: power
        state: "{{ (states('sensor.solaredge_solar_production_power') | float(0) - states('sensor.solaredge_consumption_power') | float(0)) | round(2) }}"
        icon: mdi:chart-down-up

sensor:
  - platform: integration
    source: sensor.solaredge_battery_charge_power
    name: solaredge_battery_charge_kwh
    unit_time: h
    method: left
    round: 2
  - platform: integration
    source: sensor.solaredge_battery_discharge_power
    name: solaredge_battery_discarge_kwh
    unit_time: h
    method: left
    round: 2
  - platform: integration
    source: sensor.solaredge_solar_production_power
    name: solaredge_solar_production_kwh
    unit_time: h
    method: left
    round: 2
  - platform: integration
    source: sensor.solaredge_consumption_power
    name: solaredge_consumption_kwh
    unit_time: h
    method: left
    round: 2

utility_meter:
  solaredge_battery_charge_kwh_daily:
    source: sensor.solaredge_battery_charge_kwh
    cycle: daily
  solaredge_battery_discarge_kwh_daily:
    source: sensor.solaredge_battery_discarge_kwh
    cycle: daily
  solaredge_solar_production_kwh_daily:
    source: sensor.solaredge_solar_production_kwh
    cycle: daily
  solaredge_consumption_kwh_daily:
    source: sensor.solaredge_consumption_kwh
    cycle: daily
  solaredge_import_kwh_daily:
    source: sensor.solaredge_m1_imported_a_kwh
    cycle: daily
  solaredge_export_kwh_daily:
    source: sensor.solaredge_m1_exported_kwh
    cycle: daily

homeassistant:
  customize:
    sensor.solaredge_battery_charge_power:
      friendly_name: "SolarEdge Battery Charge Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_battery_discharge_power:
      friendly_name: "SolarEdge Battery Discharge Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_solar_production_power:
      friendly_name: "SolarEdge Solar Production Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_consumption_power:
      friendly_name: "Household Consumption Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_grid_consumption_power:
      friendly_name: "SolarEdge Grid Consumption Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_export_power:
      friendly_name: "SolarEdge Grid Export Power"
      unit_of_measurement: kW
      device_class: power
    sensor.solaredge_battery_charge:
      friendly_name: "SolarEdge Battery Charge"
      unit_of_measurement: "%"
      device_class: battery
    sensor.solaredge_inverter_status:
      friendly_name: "SolarEdge Inverter Status"
    sensor.solaredge_battery_charge_kwh:
      friendly_name: "SolarEdge Battery Charge Energy"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_battery_discarge_kwh:
      friendly_name: "SolarEdge Battery Discharge Energy"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_solar_production_kwh:
      friendly_name: "SolarEdge Solar Production Energy"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_consumption_kwh:
      friendly_name: "Household Consumption Energy"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_battery_charge_kwh_daily:
      friendly_name: "SolarEdge Battery Charge Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_battery_discarge_kwh_daily:
      friendly_name: "SolarEdge Battery Discharge Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_solar_production_kwh_daily:
      friendly_name: "SolarEdge Solar Production Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_consumption_kwh_daily:
      friendly_name: "Household Consumption Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_import_kwh_daily:
      friendly_name: "SolarEdge Electricity Import Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_export_kwh_daily:
      friendly_name: "SolarEdge Electricity Export Energy (Daily)"
      unit_of_measurement: kWh
      device_class: energy
    sensor.solaredge_power_difference:
      friendly_name: "SolarEdge Production - Consumption Power Difference"
      unit_of_measurement: kW
      device_class: power

group:
  solaredge:
    name: SolarEdge
    entities:
      - sensor.solaredge_battery_charge_power
      - sensor.solaredge_battery_discharge_power
      - sensor.solaredge_solar_production_power
      - sensor.solaredge_consumption_power
      - sensor.solaredge_grid_consumption_power
      - sensor.solaredge_battery_charge
      - sensor.solaredge_inverter_status
      - sensor.solaredge_battery_charge_kwh
      - sensor.solaredge_battery_discarge_kwh
      - sensor.solaredge_solar_production_kwh
      - sensor.solaredge_consumption_kwh
      - sensor.solaredge_battery_charge_kwh_daily
      - sensor.solaredge_battery_discarge_kwh_daily
      - sensor.solaredge_solar_production_kwh_daily
      - sensor.solaredge_consumption_kwh_daily
      - sensor.solaredge_import_kwh_daily
      - sensor.solaredge_export_kwh_daily
      - sensor.solaredge_power_difference


Dashboard Code

Dashboard Code
type: vertical-stack
cards:
  - type: markdown
    content: >-
      <h1 style="vertical-align: middle;"><img
      src="/local/custom_logos/solaredge.png" title="SolarEdge"></h1>
  - show_name: true
    show_icon: true
    show_state: true
    type: glance
    entities:
      - entity: sensor.solaredge_solar_production_power
        name: Panels
        icon: mdi:solar-power
      - entity: sensor.solaredge_grid_consumption_power
        name: Grid Import
        icon: mdi:transmission-tower-export
      - entity: sensor.solaredge_consumption_power
        name: Consumption
      - entity: sensor.solaredge_export_power
        name: Grid Export
        icon: mdi:transmission-tower-import
    state_color: false
  - type: glance
    entities:
      - entity: sensor.solaredge_inverter_status
        name: Status
      - entity: sensor.solaredge_battery_charge_power
        name: Charge
        icon: mdi:power-plug-battery
      - entity: sensor.solaredge_battery_charge
        name: Level
      - entity: sensor.solaredge_battery_discharge_power
        name: Discharge
        icon: mdi:power-plug

Energy Dashboard

You can now proceed to add a refined collection of sensors to the Energy Dashboard to track your energy usage over time.

Energy Dashboard ConfigSensor Name
Grid ConsumptionSolarEdge Electricity Import Energy (Daily)
Return to gridSolarEdge Electricity Export Energy (Daily)
Solar productionSolarEdge Solar Production Energy (Daily)
Battery systems

SolarEdge Battery Charge Energy (Daily)

SolarEdge Battery Discharge Energy (Daily)

  • No labels