Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Home Assistant Sunsynk Power Flow Card and Dashboard

Featured Replies

  • Author

This is in my sensors.yaml file but I'm using the Open-Meteo Solar Forecast integration. If you are using Solcast the change required is in the last post https://github.com/dbuezas/lovelace-plotly-graph-card/discussions/422

Remember to update your sensors

- platform: template
  sensors:
    energy_production_today_sum:
      friendly_name: "Energy Production Today Sum"
      unit_of_measurement: "kWh"
      device_class: energy
      value_template: >-
        {% set sensor1 = states('sensor.energy_production_today_2') |float %}
        {% set sensor2 = states('sensor.energy_production_today_3') |float %}
        {% set total_watts = sensor1 + sensor2 %}
        {{ total_watts }}
      attribute_templates:
        watts: >-
          {% set sensor1 = state_attr('sensor.energy_production_today_2', 'watts') %}
          {% set sensor2 = state_attr('sensor.energy_production_today_3', 'watts') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}
        wh_period: >-
          {% set sensor1 = state_attr('sensor.energy_production_today_2', 'wh_period') %}
          {% set sensor2 = state_attr('sensor.energy_production_today_3', 'wh_period') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}
    energy_production_tomorrow_sum:
      friendly_name: "Energy Production Tomorrow Sum"
      unit_of_measurement: "kWh"
      device_class: energy
      value_template: >-
        {% set sensor1 = states('sensor.energy_production_tomorrow_2') |float %}
        {% set sensor2 = states('sensor.energy_production_tomorrow_3') |float %}
        {% set total_watts = sensor1 + sensor2 %}
        {{ total_watts }}
      attribute_templates:
        watts: >-
          {% set sensor1 = state_attr('sensor.energy_production_tomorrow_2', 'watts') %}
          {% set sensor2 = state_attr('sensor.energy_production_tomorrow_3', 'watts') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}
        wh_period: >-
          {% set sensor1 = state_attr('sensor.energy_production_tomorrow_2', 'wh_period') %}
          {% set sensor2 = state_attr('sensor.energy_production_tomorrow_3', 'wh_period') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}
    energy_production_d2_sum:
      friendly_name: "Energy Production D2 Sum"
      unit_of_measurement: "kWh"
      device_class: energy
      value_template: >-
        {% set sensor1 = states('sensor.energy_production_d2') |float %}
        {% set sensor2 = states('sensor.energy_production_d2_2') |float %}
        {% set total_watts = sensor1 + sensor2 %}
        {{ total_watts }}
      attribute_templates:
        watts: >-
          {% set sensor1 = state_attr('sensor.energy_production_d2', 'watts') %}
          {% set sensor2 = state_attr('sensor.energy_production_d2_2', 'watts') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}
        wh_period: >-
          {% set sensor1 = state_attr('sensor.energy_production_d2', 'wh_period') %}
          {% set sensor2 = state_attr('sensor.energy_production_d2_2', 'wh_period') %}
          {% set ns = namespace(output={}) %}

          {% for time, value in sensor1.items() %}
            {% if time in sensor2 %}
              {% set sum_value = value + sensor2[time] %}
            {% else %}
              {% set sum_value = value %}
            {% endif %}
            {% set ns.output = dict(ns.output, **{time: sum_value}) %}
          {% endfor %}

          {% for time, value in sensor2.items() %}
            {% if time not in sensor1 %}
              {% set ns.output = dict(ns.output, **{time: value}) %}
            {% endif %}
          {% endfor %}

          {{ ns.output }}

Edited by slipx

  • 2 weeks later...
  • Replies 589
  • Views 125.7k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • thank you @slipx, I've been using the power flow card for a while now but didn't know about the animations. now thanks your examples I've implemented the animations. I use a generator on my AUX port

  • I've made  a small update to the Dashboard. The load shedding card shows remaining time based on battery SOC and battery power. You will need to create some template sensors as discussed here and prov

  • Here's a slight contribution to the goodness on this thread which lives on my main HA screen: type: custom:bar-card entities: - entity: sensor.load_shedding_area_eskde_4_sandownext10cityofj

Posted Images

Hi, not sure if this has been asked before, but I would like to show a total of the "non-essentials" load for the day, it does this for the UPS / essentials load but I cant seem to find this for non essentials.

On 2025/08/11 at 10:39 AM, Greglsh said:

Hi, not sure if this has been asked before, but I would like to show a total of the "non-essentials" load for the day, it does this for the UPS / essentials load but I cant seem to find this for non essentials.

You would need something that tracks the non essentials energy.

  • Author

v7.0.0 Latest

What's Changed

🚀 Exciting New Features

Performance & Efficiency Overhaul

The card's performance has been optimized to feel more fluid, responsive, and efficient.

  • Smoother Visuals: The user interface now groups updates together, resulting in smoother animations and a less "jerky" experience.

  • Smarter Updates: The card now actively monitors only the devices and information visible on screen, significantly reducing unnecessary processing.

  • Optimized Rendering: Significant changes have been made to how visuals are rendered. This includes a much faster method for displaying icons and "guarding" complex interface parts so they are not re-drawn unless something changes.

  • Faster Initial Load: By pre-computing settings and caching visual templates, the card now loads much faster after the first time.

  • Conserved Resources: The card now pauses animations and data updates for off-screen elements or powered-off devices to save processing power.

Editor Experience Improvements

The editor has been updated to be more intuitive, helpful, and clean.

  • More Guidance & Clarity: Helper text has been expanded throughout the editor to better explain what each option does.

  • Fewer Errors: The editor now sets limits on number fields, helping prevent invalid or out-of-range values.

  • A Smarter, Dynamic Interface: The editor is now more intelligent, hiding or showing certain options based on other selections. This keeps the interface clean and focused on what's important.

  • Improved Color Selection: The color pickers are now more reliable and show a live preview of your chosen colors, taking the guesswork out of customization.

Full Changelogv6.9.2...v7.0.0

Edited by slipx

  • 3 months later...

Hi,

I have just added a 2nd battery to my sunsynk solar install.

I have the 5.5kw ecco inverter

The original battery is a G5.3

The new battery is a W5.3

these are wired in parallel and the new battery is the master.

the comms cable comes from the inverter to the pcs connection on the W5.3

then comes from the Out connection on the W5.3 to the In connection on the G5.3

for the dash comms i am using ESPHome-1P-Sunsynk-Deye.yaml

Can I display the details of the individual batteries in the dashboard ?

when I have been trying this evening and set the dash to show 2 batteries, I cant seem to get it to work. I just get an empty battery outline for the 2nd battery, no details get populated.

Thanks for any assistance with this

Edited by MikeBham

  • 1 month later...
  • Author

V7.2.0

## What's Changed
🚀 Exciting New Features

* feat: add custom labels for daily charge and discharge closes #637
* feat: add custom labels for autarky and ratio
* feat: add Chisage inverter image closes #769
* feat: add SRNE HES inverter image closes #732
* docs: add ecoflow example by @windmueller in https://github.com/slipx06/sunsynk-power-flow-card/pull/756
* docs: sigenergy.rst: Simplify text by using links by @reedy in https://github.com/slipx06/sunsynk-power-flow-card/pull/762

🐛 Patches & Bug Fixes
* fix: essential_load4_extra entry in sigenergy.rst closes #773
* fix: load 6 not clickable and unecessary rendering of static icons closes #764
* fix: missing defaults in editor
* fix: sungrow dispatch run code #739
* fix: localisation of custom labels when using defaults
* fix: typo in OnGrid Status by @Roving-Ronin in https://github.com/slipx06/sunsynk-power-flow-card/pull/758

**Full Changelog**: https://github.com/slipx06/sunsynk-power-flow-card/compare/v7.1.3...v7.2.0

Edited by slipx

@Skyden if you want to you can check the previous page for what I've done, not sure if this will work for you as I just added a separate card for my batteries below slipx's card.

https://powerforum.co.za/topic/17970-home-assistant-sunsynk-power-flow-card-and-dashboard/page/23/#findComment-221673

https://powerforum.co.za/topic/17970-home-assistant-sunsynk-power-flow-card-and-dashboard/page/23/#findComment-221786

Maybe a stupid question but have you checked that the sensor names are still the same that v3 populates vs v2. The config is mapped to the sensors and perhaps it just a matter of sensor names on the v3 differ slightly or because there was remnants of v2 it added a _2 to the sensors of v3 at the end. I don't use the solarsynk integration but had to alter some template sensors recently had duplicate sensors that got created so I just had to purge the old ones and rename some sensors back and that solved my problem. Maybe it is something similar?

  • 3 weeks later...

Hi @slipx

Thanks again for your beautiful card)

There is an idea. How do you think maybe it's a time to add one more energy source in addition to the grid - generator? (Diesel, gasoline, etc).

For countries with frequent blackouts a generator is popular additional emergency power source and it would be nice ti see on card current parameters and daily consumption from the generator.

Thanks

Edited by Vitaliy

Hmm. After I revisited configuration documentation and looked precisely ti screenshots I found that probably it possible to draw generator as an aux.

The problem only that probably only sunsilk/deye users familiar with AUX word. Users of other inverters just may not recognize this ability. And showing generator is not explicitly explained in documentation as a use case.

  • 5 months later...

How would someone add a extra input next to grid? a generator that connected to Gen input on the inverter? so you can see the power a got the following sensors so it should be possible?


sensor.solarsynkv3_111_gentime2on: true OK

HA Entity: sensor.solarsynkv3_111_generator_power: 0 W OK

HA Entity: sensor.solarsynkv3_111_generator_to: False OK

HA Entity: sensor.solarsynkv3_111_exists_generator: True OK

HA Entity: sensor.solarsynkv3_111_genpeakpower: 4000 OK

HA Entity: sensor.solarsynkv3_111_generator_on: False OK

HA Entity: sensor.solarsynkv3_111_gentime1on: true OK

HA Entity: sensor.solarsynkv3_111_gencoolingtime: 0 OK

HA Entity: sensor.solarsynkv3_111_genpeakshaving: 0 OK

HA Entity: sensor.solarsynkv3_111_genandgridsignal: 3 OK

HA Entity: sensor.solarsynkv3_111_generatorforcedstart: 1 OK

HA Entity: sensor.solarsynkv3_111_genoffvolt: 51 OK

HA Entity: sensor.solarsynkv3_111_gentoload: 0 OK

HA Entity: sensor.solarsynkv3_111_generatorstartcap: 10 OK

HA Entity: sensor.solarsynkv3_111_genonvolt: 54 OK

HA Entity: sensor.solarsynkv3_111_genoncap: 100 OK

HA Entity: sensor.solarsynkv3_111_generatorstartvolt: 0 OK

HA Entity: sensor.solarsynkv3_111_maxoperatingtimeofgen: 24 OK

HA Entity: sensor.solarsynkv3_111_genchargeon: 1 OK

HA Entity: sensor.solarsynkv3_111_gentime6on: true OK

HA Entity: sensor.solarsynkv3_111_gentoloadon: 0 OK

HA Entity: sensor.solarsynkv3_111_gentime5on: true OK

HA Entity: sensor.solarsynkv3_111_deyegenpowerdoubleflag: 0 OK

HA Entity: sensor.solarsynkv3_111_gentime4on: true OK

HA Entity: sensor.solarsynkv3_111_genconnectgrid: 0 OK

HA Entity: sensor.solarsynkv3_111_genoffcap: 95 OK

HA Entity: sensor.solarsynkv3_111_gentime3on: true OK

HA Entity: sensor.solarsynkv3_111_generatorbatterycurrent: 60 OK

HA Entity: sensor.solarsynkv3_111_genminsolar: 0 OK

HA Entity: sensor.solarsynkv3_111_gensignal: 1 OK

Edited by Wesleydn

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.