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

seems to be the “Problem” which i also have. In my Case it has to be (i assume) something to do with sensor.solar_battery_effectiveness.

look at

and

Hey Remko,

pls look at my previus Post. I’ve observed the problem - at the moment i can say:

  • the problem only occurs if i discharge the battery
  • the wrong values comes from the battery effectivnes values - or how it is calculated. I’ve manually adapted your config and removed the multiple with the effective and the values are “OK”.

Do you by any chance also have an electric car which you charge? I am starting to suspect that is where the difference comes from. The effectivnes value may be calculated wrong in that scenario. If removing that from the configuration solves the issue, I would suggest to do just that…

Of course this can be the workaround. on the other hand, you have to consider how and what meaningfulness the value then has. I can imagine that there are other scenarios where this is wrong… the app does not (also) use the value

I’m in a similar boat with a new setup with a single SE10000H and LG RESU 10 Prime.

I do not have a second inverter or an EV charger yet. Perhaps it’s the RESU Prime? I am guessing there are not a lot of these in the field yet.

I did notice that most of the battery info is available if I configure solaredge_modbus with 3 meters and 0 batteries (if I configure a battery I also get unknown for everything). M3 has battery info, but this doesn’t work for the integration as it’s not considered a battery, and I can’t dynamically change the charging profile, since it’s not seen as a battery.

Have you tried adding a 3rd meter to your inverter with the battery connection? - EDIT upon further exam, the M3 values look like max_value type data for the respective data-types, not actual data.

When I run the example.py script in this thread, I only ever get two meters and no battery objects.

I have found that you can change the CAN/RS485 terminal settings via the battery’s local wifi connection, section 7.2 in the LG RESU 16H manual (seems the same as my 10H) https://www.zerohomebills.com/wp-content/uploads/LG-Chem-RESU-16H-Prime-Installation-Manual-EN.pdf . Still haven’t found a setting that works - guessing it is something in the meter dip switches still.

Thank you so much for this hard work !!, @Remko.

I have a small question : the entity “Solar House Consumption W”. It works well, but during the discharging time it’s not correct. I think we need to add the negative state of the battery and add it.
What do you think.?

1 Like

Hello everyone! I installed and set up as you explained in the initial post … I attach screenshots, but unfortunately the values that come out in the dashboard are wrong. Think that as I am writing this post it is 11.22 PM and the dashboard shows 16Kw of solar production: D

I ask for your help in understanding where I went wrong.

thank you!


That page is cumulative. Total for the day. Is that wrong?

Looks like you produced 16.8 for the day, sent 10.5 to the battery and used 6.3 yourself, nothing exported.

Hi thanks for your reply! Now I understand how it works, I thought the graph represented instant consumption / production …

Have you created automatisms to charge the battery during the night, just in case the forecast of solar production is low due to bad weather?

I do not have a battery myself but I imagine the forecast data could be used with a threshold value to tell your battery to charge from grid.

I think you‘re right! Having the same problem at your described situation!

Pls look at configuration of your inverter
Typical config should be one inverter and one battery.

did you try this config ?

I have a SE5000H with RESU 10H and it worked for me declaring 1 inverter and one battery

Thanks @Remko , this looks really nice. Do you know of a Modbus configuration like your energy.yaml without battery included?

I converted it for my own setup without a battery. It was pretty straight forward.

Note i have altered some of the sensor names and added a bunch of extra stuff to mine to deal with AGLs complex demand tarrifs (still a WIP but i’ve nearly got it). You’ll see this mostly in the accounting totals.

template:
  - sensor:
      - name: "Solar Self Consumption Ratio"
        unique_id: solar_self_consumption_ratio
        icon: mdi:percent-outline
        state: >
          {% if ((states('sensor.solar_panel_production_daily_total') | float(0)) <= 0) %}
            0
          {% else %}
            {{((((states('sensor.solar_house_consumption_daily_total') | float(0)) - (states('sensor.solar_imported_power_daily_total') | float(0))) / (states('sensor.solar_panel_production_daily_total') | float(0)) ) * 100 ) | round (0)}}
          {% endif %}
      - name: "Solar Self Sufficiency Ratio"
        unique_id: solar_self_sufficiency_ratio
        icon: mdi:percent-outline
        state: >
          {% if ((states('sensor.solar_house_consumption_daily_total') | float(0)) <= 0) %}
            0
          {% else %}
            {{((1 - ((states('sensor.solar_imported_power_daily_total') | float(0)) / (states('sensor.solar_house_consumption_daily_total') | 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: "W"
        icon: mdi:solar-power
        state: >
          {{(((states('sensor.solaredge_ac_energy_kwh') | float(0)) / 1000) | round (2))}}

      ##############################################################
      # CUSTOM STUFF ############
      - name: "Current Electricity Rate"
        unique_id: current_electricity_rate
        unit_of_measurement: "AUD/kWh"
        icon: mdi:currency-usd
        state: >
          {{ states('sensor.electricity_import_rate_peak') | float(0) }}

        # {% set t = now() %}
        # {%- if t.hour >=14 and t.hour <20 and is_state('binary_sensor.workday_sensor', 'on') %}
        #   {%- if t.month in [11,12,1,2,3] -%}
        #     0.23452
        #   {%- elif t.month in [4,5,9,10] -%}
        #     0.11726
        #   {%- endif -%}
        # {%- elif t.hour >=17 and t.hour <21 and is_state('binary_sensor.workday_sensor', 'on') and t.month in [6,7,8] -%}
        #   0.23452
        # {%- else -%}
        #   0.13156
        # {%- endif -%}

      # Custom ones from https://community.home-assistant.io/t/updated-solaredge-modbus-full-setup-guide-with-energy-dashboard-integration-for-installations-with-battery-connected/340956/175?u=sgtbatten
      - name: "Electricity Import Rate High Demand"
        unique_id: electricity_import_rate_high_demand
        icon: mdi:cash-minus
        unit_of_measurement: "$/kWh"
        state: >
          0.23452

      - name: "Electricity Import Rate Low Demand"
        unique_id: electricity_import_rate_low_demand
        icon: mdi:cash-minus
        unit_of_measurement: "$/kWh"
        state: >
          0.11726

      - name: "Electricity Import Rate Peak"
        unique_id: electricity_import_rate_peak
        icon: mdi:cash-minus
        unit_of_measurement: "$/kWh"
        state: >
          0.13156

      - name: "Electricity Import Rate Shoulder"
        unique_id: electricity_import_rate_shoulder
        icon: mdi:cash-minus
        unit_of_measurement: "$/kWh"
        state: >
          0.13156

      - name: "Electricity Import Rate Off Peak"
        unique_id: electricity_import_rate_off_peak
        icon: mdi:cash-minus
        unit_of_measurement: "$/kWh"
        state: >
          0.13156

      - name: "Electricity Export Rate"
        unique_id: electricity_export_rate
        icon: mdi:cash-plus
        unit_of_measurement: "$/kWh"
        state: >
          0.05000

      - name: "Electricity Supply Charge"
        unique_id: electricity_supply_charge
        icon: mdi:cash-plus
        unit_of_measurement: "$/day"
        state: >
          1.03235

      - name: "Solar Accounting Total Daily"
        unique_id: solar_accounting_total_daily
        icon: mdi:currency-usd
        unit_of_measurement: "$"
        state: >
          {% set supply = states('sensor.electricity_supply_charge') | float(0) %}
          {% set offpeak = (states('sensor.solar_imported_power_daily_off_peak') | float(0)) * (states('sensor.electricity_import_rate_off_peak') | float(0)) %}
          {% set shoulder = (states('sensor.solar_imported_power_daily_shoulder') | float(0)) * (states('sensor.electricity_import_rate_shoulder') | float(0)) %}
          {% set peak = (states('sensor.solar_imported_power_daily_peak') | float(0)) * (states('sensor.electricity_import_rate_peak') | float(0)) %}
          {% set feedintariff = (states('sensor.solar_exported_power_daily') | float(0)) * (states('sensor.electricity_export_rate') | float(0)) %}
          {{ (supply + offpeak + shoulder + peak - feedintariff) | round(2) }}

      # - name: "Solar Accounting Total Weekly"
      #   unique_id: solar_accounting_total_weekly
      #   icon: mdi:currency-usd
      #   unit_of_measurement: "$"
      #   state: >
      #     {% set cost = (states('sensor.solar_imported_power_weekly') | float(0)) * ((states('sensor.solar_import_rate') | float(0))) + ((states('sensor.supply_charge') | float(0))) %}
      #     {% set compensation = (states('sensor.solar_exported_power_weekly') | float(0)) * ((states('sensor.solar_export_rate') | float(0))) %}
      #     {{ (cost - compensation) | round(2) }}

      - name: "Solar Accounting Total Monthly"
        unique_id: solar_accounting_total_monthly
        icon: mdi:currency-usd
        unit_of_measurement: "$"
        state: >
          {% set supply = (states('sensor.electricity_supply_charge') | float(0)) * ((states('sensor.days_past_in_month') | float(0)) + 1 ) %}
          {% set offpeak = (states('sensor.solar_imported_power_monthly_off_peak') | float(0)) * (states('sensor.electricity_import_rate_off_peak') | float(0)) %}
          {% set shoulder = (states('sensor.solar_imported_power_monthly_shoulder') | float(0)) * (states('sensor.electricity_import_rate_shoulder') | float(0)) %}
          {% set peak = (states('sensor.solar_imported_power_monthly_peak') | float(0)) * (states('sensor.electricity_import_rate_peak') | float(0)) %}
          {% set feedintariff = (states('sensor.solar_exported_power_monthly') | float(0)) * (states('sensor.electricity_export_rate') | float(0)) %}
          {{ (supply + offpeak + shoulder + peak - feedintariff) | round(2) }}

      - name: "Solar Accounting Total Yearly"
        unique_id: solar_accounting_total_yearly
        icon: mdi:currency-usd
        unit_of_measurement: "$"
        state: >
          {% set supply = (states('sensor.electricity_supply_charge') | float(0)) * ((states('sensor.days_past_in_year') | float(0)) + 1 ) %}
          {% set offpeak = (states('sensor.solar_imported_power_yearly_off_peak') | float(0)) * (states('sensor.electricity_import_rate_off_peak') | float(0)) %}
          {% set shoulder = (states('sensor.solar_imported_power_yearly_shoulder') | float(0)) * (states('sensor.electricity_import_rate_shoulder') | float(0)) %}
          {% set peak = (states('sensor.solar_imported_power_yearly_peak') | float(0)) * (states('sensor.electricity_import_rate_peak') | float(0)) %}
          {% set feedintariff = (states('sensor.solar_exported_power_yearly') | float(0)) * (states('sensor.electricity_export_rate') | float(0)) %}
          {{ (supply + offpeak + shoulder + peak - feedintariff) | round(2) }}

      - name: "Solar Inverter Effectiveness Int"
        unique_id: solar_inverter_effectiveness_int
        icon: mdi:percent-outline
        unit_of_measurement: "%"
        state: >
          {{ ((states('sensor.solar_inverter_effectiveness') | float(0)) * 100) | round(2) }}

      - name: "Solar Inverter Effectiveness Average Int"
        unique_id: solar_inverter_effectiveness_average_int
        icon: mdi:percent-outline
        unit_of_measurement: "%"
        state: >
          {{ ((states('sensor.solar_inverter_effectiveness_average') | float(0)) * 100) | round(2) }}
      ################## END CUSTOM #########################################
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
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_panel_production_daily_total:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Daily Total
    cycle: daily
  solar_house_consumption_daily:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Daily
    cycle: daily
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_house_consumption_daily_total:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Daily Total
    cycle: daily
  solar_imported_power_daily:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Daily
    cycle: daily
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_imported_power_daily_total:
    source: sensor.solar_imported_power_kwh
    name: Solar Imported Power Daily Total
    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
  #   tariffs:
  #     - peak
  #     - shoulder
  #     - off-peak
  # solar_house_consumption_weekly:
  #   source: sensor.solar_house_consumption_kwh
  #   name: Solar House Consumption Weekly
  #   cycle: weekly
  #   tariffs:
  #     - peak
  #     - shoulder
  #     - off-peak
  # solar_panel_production_weekly:
  #   source: sensor.solar_panel_production_kwh
  #   name: Solar Panel Production Weekly
  #   cycle: weekly
  #   tariffs:
  #     - peak
  #     - shoulder
  #     - off-peak
  # 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
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_house_consumption_monthly:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Monthly
    cycle: monthly
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_panel_production_monthly:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Monthly
    cycle: monthly
    tariffs:
      - peak
      - shoulder
      - off-peak
  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
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_house_consumption_yearly:
    source: sensor.solar_house_consumption_kwh
    name: Solar House Consumption Yearly
    cycle: yearly
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_panel_production_yearly:
    source: sensor.solar_panel_production_kwh
    name: Solar Panel Production Yearly
    cycle: yearly
    tariffs:
      - peak
      - shoulder
      - off-peak
  solar_exported_power_yearly:
    source: sensor.solar_exported_power_kwh
    name: Solar Exported Power Yearly
    cycle: yearly

  # https://crontab.guru/#0,30_14-20_*_4,5,9,10_1-5
  electricity_imported_demand:
    source: sensor.solar_imported_power_kwh
    name: Electricity Imported Demand
    cron: 0,30 * * * *
    tariffs:
      - high-demand
      - low-demand
      - no-demand

  # electricity_imported_high_demand_winter:
  #   source: sensor.solar_imported_power_kwh
  #   name: Electricity Imported Winter High Demand
  #   cron: 0,30 17-21 * 6-8 1-5
  #   tariffs:
  #     - demand
  #     - non-demand

  #
  # electricity_imported_low_demand:
  #   source: sensor.solar_imported_power_kwh
  #   name: Electricity Imported Low Demand
  #   cron: 0,30 14-20 * 4,5,9,10 1-5
  #   tariffs:
  #     - demand
  #     - non-demand

input_number:
  electricity_demand_max:
    name: Electricity Demand Max Value
    # initial: 0
    min: 0
    max: 20
    # mode: box
    step: 0.001

The above is a bit outdated but for anyone who was interested in handling demand tariffs, here is
a link to my finished Demand Tariff Guide which covers the next steps once you setup these sensors.

2 Likes

For “Solar Panel to House W”, I’m trying to convert that to the entities for my system. My meters are set up differently so I have to tweak things. I’m having a bad time trying to figure out your “if’s” so that I can align them to my setup. Would you be able to elaborate a bit on those conditions?

Something like “If Battery Charging and Panels Producing” or whatever the states are supposed to represent?

I would really appreciate it. Thanks!

edit: I think I figured it out, just had to walk away for a bit. I compared the entities you used in other places to see how I converted them for my setup. I think the numbers look better now… WIP for sure.

I was just going to look at it to try to explain it based on one example. That exactly has been the puzzle I worked on for quite a while, trying to catch all the different conditions. Used Excel tables and all for that. So I am happy you figured it out and have fun with the rest of the puzzle…:wink:

Hey @Remko
could you please look at the following Posts?

and

i’think that there is a small Bug in the Calculation in rare Situations. Perhaps you could fix it?

br
s_ash

Hi @s_ash ,

sorry for the late replies. Been pretty busy with work lately and just haven’t gotten round to actively answering here. So my try…I do see the “issues” people are reporting and may have 2 different explanations:

  1. Some people use an EV charger, which I do not have and do not know how I could integrate that, without having some setup myself. So, if that is the case I am afraid I cannot really help figuring that out.

  2. The other effect I keep seeing is the result of the effectiveness of both battery, as well as the inverter. In my previous version of this package I did not take that into account. In this setup I do and the effect is quite dramatic to be honest. The inverter itself is pretty good, the effectiveness is always around 98%. That means, if the panels would produce 100W and I would use all for my house consumption, 98 W would actually be used by my house.
    The other effectiveness value, the battery, is quite different. It really depends on the charge state of the battery and the load I am asking from it, how effective it is. The values range between 95% (very good) and about 40% (not so good). So this means…if the battery delivers 100W to the house, my house actually only gets 40W of real usage.

Here it is clearly visible in the graphs over the same time period.
image
image

The effect is actually more dramatic if you take the actual values and not my average calculation:
image

These effects are not taking into account when using the Solaredge Monitoring platform. I think it would scare most people how much power they actually loose.

For example, below a screenshot of my total values so far this year:
image

and the corresponding values from SolarEdge:

So what I see here:

  • Total production is roughly equal, so that is correct
  • Import and export are roughly equal
  • My House consumption is off by about 300 kWh.
  • Battery output is off by about 200 kWh

My conclusion: The battery output in my own calculation takes the effectiveness into account and you can see here that in average, my battery has an effectivity of (590/841) 70%

This also results in the difference in house consumption; Solaredge just takes the direct output value from the battery and ignores the losses there.

So summarised, if I look at my values over a couple of months now, it seems pretty accurate and the differences I see are explainable. Again, if people see bigger differences it may be due to EV Charger, not having a battery, or just simply a different setup which is hard for me to debug.

An option would be to basically edit the yaml in your configuration and take the effectiveness calculations out. So basically replace this section:

    - 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 Battery Effectiveness"
      unique_id: solar_battery_effectiveness
      icon: mdi:percent-outline
      unit_of_measurement: '%'
      state: >       
        {% if (((states('sensor.solaredge_dc_power') | float(0)) + (states('sensor.solaredge_battery1_power') | float(0))) <= 0 ) %}
          {% if ((states('sensor.solaredge_battery1_power')| float(0)) >= 0) %}
            {{(states('sensor.solar_battery_effectiveness'))}}
          {% elif ((states('sensor.solaredge_dc_power') | float(0)) <= 0) %}
            {{(states('sensor.solar_battery_effectiveness'))}}  
          {% else %}
            {{1 - ((((states('sensor.solaredge_battery1_power') | float(0)) * -1) - (states('sensor.solaredge_dc_power') | float(0))) /  ((states('sensor.solaredge_battery1_power') | float(0)) * -1))}}
          {% endif %} 
        {% elif is_state('sensor.solar_battery_effectiveness', 'unknown') %}
          1
        {% elif is_state('sensor.solar_battery_effectiveness', 'unavailable') %}
          1
        {% elif is_state('sensor.solar_battery_effectiveness', 0) %}
          1
        {% else %}
          {{(states('sensor.solar_battery_effectiveness'))}}
        {% endif %}

with this:

    - name: "Solar Inverter Effectiveness"
      unique_id: solar_inverter_effectiveness
      icon: mdi:percent-outline
      unit_of_measurement: '%'
      state: '1'
        
    - name: "Solar Battery Effectiveness"
      unique_id: solar_battery_effectiveness
      icon: mdi:percent-outline
      unit_of_measurement: '%'
      state: '1'

I hope this answers some of the questions and helps others forward.

1 Like

Simply Magnificent! - Thanks so much for spending the time to get this working :slight_smile:
Much satisfaction now that everything is logging properly!

1 Like

Charging and discharging house batteries always comes with a high amount of lost energy.
The efficiency of a battery depends on the setup… but usually, your inverter converts DC into AC (with losses) - then, the battery inverter will again convert the AC into DC (with losses) and if your house consumes energy from the battery, it needs to be converted again from DC into AC (again with losses).

all of that needs to be taken to account…