A YAML script that supplements the HACS SolarEdge Modbus feature and data feed to allow the Energy Dashboard to monitor the SolarEdge Solar and Battery, if you have two of them like I do.

Configuration YAML

solaredge.yaml
template:
  - sensor:
      - name: solaredge_battery_charge_power
        unit_of_measurement: kW
        device_class: power
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if states("sensor.solaredge_battery1_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 %}
                {{ charge | round(2) }}
              {% else %}
                0
              {% endif %}
            {% else %}
              0
            {% endif %}
          {% else %}
            0
          {% endif %}
        icon: mdi:power-plug-battery
      - name: solaredge_battery_discharge_power
        unit_of_measurement: kW
        device_class: power
        state: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% if states("sensor.solaredge_battery1_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: >
          {% 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 = states("sensor.solaredge_battery_charge_power") | float(0) %}
              {% 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: >
          {% if states('sensor.solaredge_status') | int(0) > 0 %}
            {% set consumption = (states('sensor.solaredge_ac_current_a') | float(0) * (states("sensor.solaredge_ac_voltage_ab") | 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_grid_consumption_power
        unit_of_measurement: kW
        device_class: power
        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: >
          {% 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

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_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

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


Dashboard Code

Dashboard Code
type: vertical-stack
cards:
  - type: markdown
    content: <h1>Solar</h1>
  - show_name: true
    show_icon: true
    show_state: true
    type: glance
    entities:
      - entity: sensor.solaredge_inverter_status
        name: Status
        icon: mdi:generator-stationary
      - entity: sensor.solaredge_solar_production_power
        name: Panels
        icon: mdi:solar-power
      - entity: sensor.solaredge_grid_consumption_power
        name: Grid
        icon: mdi:transmission-tower-export
      - entity: sensor.solaredge_consumption_power
        name: Consumption
    state_color: false
  - type: glance
    entities:
      - 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