UPDATED! SolarEdge Modbus full setup guide with Energy Dashboard integration for Installations with Battery connected

energy.yaml for setups without a battery / batteries.

template:
  - sensor:
      - name: "Solar Selfconsumption Ratio"
        unique_id: solar_selfconsumption_ratio
        icon: mdi:percent-outline
        state: >
          {% if (states('sensor.solar_panel_to_house_daily')| float(0) + states('sensor.solar_exported_power_daily')| float(0)) <= 0 %}
            0
          {% else %}
            {{ (((states('sensor.solar_panel_to_house_daily')| float(0)) / (states('sensor.solar_panel_to_house_daily')| float(0) + states('sensor.solar_exported_power_daily')| float(0))) * 100) | round (0) }}
          {% endif %}
      - name: "Solar Autarkie Ratio"
        unique_id: solar_autarkie_ratio
        icon: mdi:percent-outline
        state: >
          {% if ((states('sensor.solar_house_consumption_daily') | float(0)) <= 0) %}
            0
          {% else %}
            {{((1 - ((states('sensor.solar_imported_power_daily') | float(0)) / (states('sensor.solar_house_consumption_daily') | float(0)))) * 100 ) | round (0)}}   
          {% endif %}

      - name: "Solar Inverter Effectiveness"
        unique_id: solar_inverter_effectiveness
        icon: mdi:percent-outline
        unit_of_measurement: "%"
        state: >
          {% if ((states('sensor.solaredge_dc_power') | float(0)) < 100) or ((states('sensor.solaredge_ac_power') | float(0)) < 100)%}
            {{(states('sensor.solar_inverter_effectiveness'))}}
          {% else %}
            {% if is_state('sensor.solar_inverter_effectiveness', 'unknown') %}
              1
            {% elif ((states('sensor.solaredge_ac_power') | float(0)) <= 0) %}
              {{(states('sensor.solar_inverter_effectiveness'))}}
            {% elif ((states('sensor.solaredge_dc_power') | float(0)) <= 0) %}
              {{(states('sensor.solar_inverter_effectiveness'))}}
            {% else %}
              {{(states('sensor.solaredge_ac_power') | float(0)) / (states('sensor.solaredge_dc_power') | float(0))}}
            {% endif %}
          {% endif %}

      - name: "Solar Panel Production W"
        unique_id: solar_panel_production_w
        unit_of_measurement: "W"
        icon: mdi:solar-power
        state: >
          {% if states('sensor.solaredge_dc_power') | float(0) <= 0 %}
            0
          {% elif is_state('sensor.solaredge_dc_power', 'unknown') %}
            0
          {% else %}
            {{ states('sensor.solaredge_dc_power') | float(0) }}
          {% endif %}

      - name: "Solar Panel To House W"
        unique_id: solar_panel_to_house_w
        unit_of_measurement: "W"
        icon: mdi:solar-power
        state: >
          {% if states('sensor.solaredge_m1_ac_power') | float(0) > 0 %}
            {{(states('sensor.solaredge_ac_power') | float(0) - states('sensor.solaredge_m1_ac_power') | float(0))}}
          {% elif states('sensor.solaredge_m1_ac_power') | float(0) < 0 %}
            {{states('sensor.solaredge_ac_power') | float(0)}}
          {% elif ((states('sensor.solaredge_dc_power') | float(0)) < 0)%}
            0  
          {% else %}
            {{(states('sensor.solaredge_dc_power') | float(0)) * (states('sensor.solar_inverter_effectiveness') | float(0))}}
          {% endif %}

      - name: "Solar Grid To House W"
        unique_id: solar_grid_to_house_w
        unit_of_measurement: "W"
        icon: mdi:transmission-tower-export
        state: >
          {% if ((states('sensor.solaredge_m1_ac_power') | float(0)) <= 0) %}
            {{((states('sensor.solaredge_m1_ac_power') | float(0)) *-1)}}
          {% else %}
            0
          {% endif %}

      - name: "Solar Panel To Grid W"
        unique_id: solar_panel_to_grid_w
        unit_of_measurement: "W"
        icon: mdi:solar-power
        state: >
          {% if ((states('sensor.solaredge_m1_ac_power') | float(0)) > 0) %}
            {{(states('sensor.solaredge_m1_ac_power') | float(0))}}
          {% else %}
            0
          {% endif %}

      - name: "Solar House Consumption W"
        unique_id: solar_house_consumption_w
        unit_of_measurement: "W"
        icon: mdi:home
        state: >
          {{(states('sensor.solar_panel_to_house_w') | float(0)) + (states('sensor.solar_grid_to_house_w') | float(0))}}

      - name: "Solar Imported Power W"
        unique_id: solar_imported_power_w
        unit_of_measurement: "W"
        icon: mdi:transmission-tower-export
        state: >
          {% if ((states('sensor.solaredge_m1_ac_power') | float(0)) <= 0) %}
            {{((states('sensor.solaredge_m1_ac_power') | float(0)) *-1)}}
          {% else %}
            0
          {% endif %}

      - name: "Solar Exported Power W"
        unique_id: solar_exported_power_w
        unit_of_measurement: "W"
        icon: mdi:transmission-tower-import
        state: >
          {% if ((states('sensor.solaredge_m1_ac_power') | float(0)) > 0) %}
            {{(states('sensor.solaredge_m1_ac_power') | float(0))}}
          {% else %}
            0
          {% endif %}

      - name: "Solar Lifetime Production"
        unique_id: solar_lifetime_production
        unit_of_measurement: "MWh"
        icon: mdi:solar-power
        state: >
          {{(((states('sensor.solaredge_ac_energy_kwh') | float(0)) / 1000) | round (2))}}

sensor:
  - platform: integration
    source: sensor.solar_panel_production_w
    method: left
    unit_prefix: k
    name: solar_panel_production_kwh
  - platform: integration
    source: sensor.solar_house_consumption_w
    method: left
    unit_prefix: k
    name: solar_house_consumption_kwh
  - platform: integration
    source: sensor.solar_imported_power_w
    method: left
    unit_prefix: k
    name: solar_imported_power_kwh
  - platform: integration
    source: sensor.solar_exported_power_w
    method: left
    unit_prefix: k
    name: solar_exported_power_kwh
  - platform: integration
    source: sensor.solar_panel_to_house_w
    method: left
    unit_prefix: k
    name: solar_panel_to_house_kwh

  - platform: statistics
    name: "Solar Inverter Effectiveness Average"
    unique_id: solar_inverter_effectiveness_average
    state_characteristic: mean
    sampling_size: 1200
    max_age:
      hours: 24
    entity_id: sensor.solar_inverter_effectiveness

utility_meter:
  solar_panel_production_daily:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Daily
    cycle: daily
  solar_house_consumption_daily:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Daily
    cycle: daily
  solar_imported_power_daily:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Daily
    cycle: daily
  solar_imported_power_daily_solaredge:
    source: sensor.solaredge_m1_imported_kwh
    name: Solar Imported Power Daily Solar Edge
    cycle: daily
  solar_exported_power_daily:
    source: sensor.solar_exported_power_kwh
    name: Solar Exported Power Daily
    cycle: daily
  solar_panel_to_house_daily:
    source: sensor.solar_panel_to_house_kwh
    name: Solar Panel To House Daily
    cycle: daily

  solar_panel_to_house_weekly:
    source: sensor.solar_panel_to_house_kwh
    name: Solar Panel To House Weekly
    cycle: weekly
  solar_imported_power_weekly:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Weekly
    cycle: weekly
  solar_house_consumption_weekly:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Weekly
    cycle: weekly
  solar_panel_production_weekly:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Weekly
    cycle: weekly
  solar_exported_power_weekly:
    source: sensor.solar_exported_power_kwh
    name: Solar Exported Power Weekly
    cycle: weekly

  solar_panel_to_house_monthly:
    source: sensor.solar_panel_to_house_kwh
    name: Solar Panel To House Monthly
    cycle: monthly
  solar_imported_power_monthly:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Monthly
    cycle: monthly
  solar_house_consumption_monthly:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Monthly
    cycle: monthly
  solar_panel_production_monthly:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Monthly
    cycle: monthly
  solar_exported_power_monthly:
    source: sensor.solar_exported_power_kwh
    name: Solar Exported Power Monthly
    cycle: monthly

  solar_panel_to_house_yearly:
    source: sensor.solar_panel_to_house_kwh
    name: Solar Panel To House Yearly
    cycle: yearly
  solar_imported_power_yearly:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Yearly
    cycle: yearly
  solar_house_consumption_yearly:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Yearly
    cycle: yearly
  solar_panel_production_yearly:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Yearly
    cycle: yearly
  solar_exported_power_yearly:
    source: sensor.solar_exported_power_kwh
    name: Solar Exported Power Yearly
    cycle: yearly

@Remko perhaps you might link to this post in the OP to save repeat questions?

*note I made extensive name changes to my own file so i’ve just edited the OP here right now. It is possible I’ve deleted one too many brackets by accident so any troubleshooting should start there (and please let me know so I can fix for the next person.)

Bonus link to my guide for handling complex demand tariffs that we seem to be getting in Australia.

2 Likes