January 23, 20251 yr Author @-cK- this has been added to release 6.5.0 🙂 https://github.com/slipx06/sunsynk-power-flow-card/releases/tag/v6.5.0
January 24, 20251 yr @slipx Thanks much appreciated will update tonight when I'm home. Just a quick question is this only on the essential loads entities (1-6)? From my quick peak at the notes and changes it looks like only the essential loads. If so, any possibility to have this option on the daily load as well perhaps as a overall usage warning? E.G. on my 5.5kw system I can set 5kw as the max. Will help with the less tech inclined to understand RED means bad, load to high than having them squint to read the Watt reading on the tablet screen I have setup in the house. If this is include already, apologies and ignore above 😉 Thanks
January 24, 20251 yr Author It's only applied to the individual essential loads at the moment. I can look to apply it to the total essential load as well.
January 26, 20251 yr Hi guys, first of all excuse my English. I am trying to get the Slipx06 layout to work in HA. The inverter is a Deye 5kw and I have put the Slipx yaml on the ESP32. I have communication and I can see data but when it comes to setting the layout I see nothing. The screen looks without any graphs or data, I have noticed that if I uninstall ApexCharts Card and reinstall it the graphs appear (although not all, some with error). But if I move to another tab (summary for example) and return the created one, nothing is shown again. I also tried to create separate charts, but only 3 or 4 charts show graphs. I don't know what else to do... if someone can help me, I would appreciate it.
January 27, 20251 yr Author I tried to create a short clip on how to set it up some time back. You might find it useful https://photos.app.goo.gl/unhJubM2r4BkjW3A8 The horseshoe breaks the dashboard if entities are not correct so perhaps remove those cards first. Also make sure you have all the required entities for the Sunsynk Power Flow Card. The error in your screenshot shows that you have not provided an entity for `day_pv_energy_108:` Also the ploty graphs take time to populate. For the daily you need to wait 24 hours for data to start showing up etc. Edited January 27, 20251 yr by slipx
January 27, 20251 yr 3 hours ago, slipx said: I tried to create a short clip on how to set it up some time back. You might find it useful https://photos.app.goo.gl/unhJubM2r4BkjW3A8 The horseshoe breaks the dashboard if entities are not correct so perhaps remove those cards first. Also make sure you have all the required entities for the Sunsynk Power Flow Card. The error in your screenshot shows that you have not provided an entity for `day_pv_energy_108:` Also the ploty graphs take time to populate. For the daily you need to wait 24 hours for data to start showing up etc. Thanks for replying Slipx, If I'm using the yaml “ESPHome-1P-Sunsynk-Deye.yaml” that you have on github, it should have all the entities you say, right? I put just as the files that come up in github. The weird thing is what I said, that if I uninstall ApexCharts Card and reinstall it, the card works (with some errors) but it disappears if I go somewhere else and come back.... If I press F5 to reload it reappears, I just found out.... I have deleted the card entities that referenced sonoff and TUYA geiser sensors. The only card that appears with errors I do not know why. I can't see anything on the phone at all.... Thank you again for everything, from the bottom of my heart. Edited January 27, 20251 yr by minerillo
January 27, 20251 yr Author @minerillo the latest version of the dashboard does not use any Apex Charts. I moved everything to plotly graphs. For the solar forecast are you using Open-Meteo or Solcast ? I'm adding two arrays together so you would need to modify the sensors for your integration. Try the code below type: custom:plotly-graph view_layout: grid-area: solar hours_to_show: 4d time_offset: 2.5d refresh_interval: auto entities: - entity: sensor.sunsynk_solar_power name: Solar Power line: color: rgb(255, 155, 48) shape: spline width: 1 fill: tozeroy fillcolor: rgba(255, 155, 48, 0.3) yaxis: y3 show_value: false showlegend: false - entity: sensor.energy_production_today line: color: rgb(125, 125, 125) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 showlegend: true - entity: sensor.energy_production_tomorrow line: color: rgb(90,90,90) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 - entity: sensor.energy_production_d2 line: color: rgb(50,50,50) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 showlegend: true - entity: sensor.sunsynk_battery_soc name: Battery line: color: red shape: spline width: 1 yaxis: y2 show_value: true showlegend: false visible: true - entity: "" name: Now yaxis: y9 showlegend: false line: width: 2 dash: dot color: aqua x: $ex [Date.now(), Date.now()] "y": - 0 - 1 defaults: yaxes: fixedrange: true layout: height: 410 margin: t: 55 l: 50 showlegend: false legend: x: 0.1 "y": -0.8 yaxis2: range: - 20 - 105 fixedrange: true annotations: - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: orange'>" + Number(hass.states['sensor.energy_production_today'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Today</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.06 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: dodgerblue'>" + Number(hass.states['sensor.meteo_energy_production_today_remaining'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Remaining</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.28 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: '>" + Number(hass.states['sensor.energy_production_tomorrow'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Tomorrow</span><br>" xref: x domain yref: y domain xanchor: center yanchor: centre x: 0.5 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: white'>" + Number(hass.states['sensor.energy_production_d2'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Day 2</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.72 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: red'>" + Number(hass.states['sensor.sunsynk_battery_soc'].state) + "</span></span>%<br>" + "</span><span style=''>SOC</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.94 "y": 1.2 showarrow: false config: scrollZoom: false Edited January 27, 20251 yr by slipx
January 28, 20251 yr 23 hours ago, slipx said: @minerillo the latest version of the dashboard does not use any Apex Charts. I moved everything to plotly graphs. For the solar forecast are you using Open-Meteo or Solcast ? I'm adding two arrays together so you would need to modify the sensors for your integration. Try the code below type: custom:plotly-graph view_layout: grid-area: solar hours_to_show: 4d time_offset: 2.5d refresh_interval: auto entities: - entity: sensor.sunsynk_solar_power name: Solar Power line: color: rgb(255, 155, 48) shape: spline width: 1 fill: tozeroy fillcolor: rgba(255, 155, 48, 0.3) yaxis: y3 show_value: false showlegend: false - entity: sensor.energy_production_today line: color: rgb(125, 125, 125) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 showlegend: true - entity: sensor.energy_production_tomorrow line: color: rgb(90,90,90) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 - entity: sensor.energy_production_d2 line: color: rgb(50,50,50) shape: spline fill: tozeroy filters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; } yaxis: y1 showlegend: true - entity: sensor.sunsynk_battery_soc name: Battery line: color: red shape: spline width: 1 yaxis: y2 show_value: true showlegend: false visible: true - entity: "" name: Now yaxis: y9 showlegend: false line: width: 2 dash: dot color: aqua x: $ex [Date.now(), Date.now()] "y": - 0 - 1 defaults: yaxes: fixedrange: true layout: height: 410 margin: t: 55 l: 50 showlegend: false legend: x: 0.1 "y": -0.8 yaxis2: range: - 20 - 105 fixedrange: true annotations: - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: orange'>" + Number(hass.states['sensor.energy_production_today'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Today</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.06 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: dodgerblue'>" + Number(hass.states['sensor.meteo_energy_production_today_remaining'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Remaining</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.28 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: '>" + Number(hass.states['sensor.energy_production_tomorrow'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Tomorrow</span><br>" xref: x domain yref: y domain xanchor: center yanchor: centre x: 0.5 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: white'>" + Number(hass.states['sensor.energy_production_d2'].state).toFixed(1) + "</span></span>kWh<br>" + "</span><span style=''>Forecast Day 2</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.72 "y": 1.2 showarrow: false - text: |- $fn ({hass}) => "<span style='font-size: 24px;'><span style='color: red'>" + Number(hass.states['sensor.sunsynk_battery_soc'].state) + "</span></span>%<br>" + "</span><span style=''>SOC</span><br>" xref: x domain yref: y domain xanchor: center yanchor: center x: 0.94 "y": 1.2 showarrow: false config: scrollZoom: false First of all, thank you again for everything. Finally I have been able to install the dashboard well by changing several parameters in the yaml and removing things that I am not going to use. I think everything works correctly and it is beautiful. I still have a lot of work to do and learn, but I am definitely grateful for the work you do for the community. I'll keep an eye out for updates, I'll probably need help again hahaha. Translated with DeepL.com (free version)
January 28, 20251 yr On 2024/10/28 at 7:23 PM, IggyP said: Update: I forgot to add that in the logs of ESP32 it is reading 100% from inverter. in config of inverter is no battery configured. Hi all, Since June I have running this power flow card without issues connected via ESP32. Yesterday night Deye support installed a new Firmware to my inverter Deye 12kw 3p HV. Don't have any battery installed but since this morning it is showing the Battery SOC at 100% (see screenshot) before it was 0% Any where I can look into? Thanks in advance. Regards Joern Hi all, Hi Slipx, I asked Deye Support regarding the issue that after Firmware update Battery SOC is showing 100% though no Battery is connected. Also I have asked for the latest version of Modbus RTU address list (see attached) My inverter is giving the value 100 which I checked in ESP32 logs. Battrey 1 SoC address is 588 and Battery 2 Soc address is 589. So it looks like that inverter is giving wrong values which I raised already to Deye support. Does anyone seen this behavior before? Regards Iggy MODBUSRTU_V105.2-20240401(1).doc Edited January 28, 20251 yr by IggyP
February 5, 20251 yr Hi all, I just had my first solar system installed, and while researching homeassistant integration I stumbled on slipx's dash. and would just like to say "I love it " I do have a feature request tho, It would be nice to have plotly graphs recording the individual pv strings, voltage and wattage. and daily peak graphs for each string. Reason I would like this, I believe my installers have put too much on 1 of the strings and dont want to risk blowing the inverter. Im pretty new to ha as well so dont really know how to start about doing this. has anyone done anything similar or could help me with it ? Regards Mike
March 20, 20251 yr Hello Silpx, Since today my Horseshoe card are not working anymore. Didn't changed anything.Any idea where to check?Thanks Iggy
March 20, 20251 yr 4 minutes ago, IggyP said:Hello Silpx,Since today my Horseshoe card are not working anymore. Didn't changed anything.Any idea where to check?ThanksIggyEncountered the same issue today—everything works fine on the desktop, but not on mobile. I tried re-downloading the plugin, but it didn’t help on the mobile side. Also, I can't seem to find the clear cache settings on iOS.
March 20, 20251 yr 7 hours ago, Muttley said:Encountered the same issue today—everything works fine on the desktop, but not on mobile. I tried re-downloading the plugin, but it didn’t help on the mobile side. Also, I can't seem to find the clear cache settings on iOS.For me it do not work for both Desktop or Mobile.
March 21, 20251 yr Author Hi @Muttley @IggyP . Its a known issue with that card. Here is a link to the fix https://github.com/AmoebeLabs/flex-horseshoe-card/issues/88#issuecomment-2145334978
March 21, 20251 yr 1 hour ago, slipx said:Hi @Muttley @IggyP . Its a known issue with that card. Here is a link to the fixhttps://github.com/AmoebeLabs/flex-horseshoe-card/issues/88#issuecomment-2145334978Hi Slipx,I found this fix already and was going to share here as well. But you already did. Thank you very much!RegardsIggy
March 22, 20251 yr On 2025/03/21 at 11:34 AM, slipx said:Hi @Muttley @IggyP . Its a known issue with that card. Here is a link to the fixhttps://github.com/AmoebeLabs/flex-horseshoe-card/issues/88#issuecomment-2145334978Thanks for this!
March 23, 20251 yr Hi @cc120689I really like the visuals you have applied. Ia there any way you can share with me please ad I'd love to use similar. Thanks
April 5, 20251 yr Author v6.7.0🚀 Exciting New Featuresfeat: added new inverter models for EASun, Ferroamp, Sigenergy and Linky closes #657, #579feat: six essential loads can now be displayed on the card without the need for wide screen display mode if certain conditions are met i.e. mppt <=3 on lite card and !show_aux on full card etc closes #635Full Change Edited April 5, 20251 yr by slipx
July 18, 2025Jul 18 @slipx I've seen this request on your github and here for more batteries in the card (3, 4 and 5 etc).Seeing as this card is severely space limited with all the info and options already added in, the only option I see for more batteries in the card self beyond the 2 battery option currently, is when running it in full mode and on a wide panel setup. Just trying to think about how you would incorporate that to the card makes my brain hurt. So what I've done is add my batteries using standard grid layout cards and markdown cards below this one to get what I want on my one dashboard. It is still WIP but perhaps the easiest solution to all those request for additional batteries would be to make an independent card for just batteries or enable an option that the card can be setup for just displaying the battery section that can then be stacked up or something 🤷♂️.This option using markdown cards however is very flexible and customizable to setup your own info and monitoring.
July 18, 2025Jul 18 Author Yes that makes more sense. It also becomes very complex trying to do all the calculations on multiple batteries. When people ask for extra toggles or info that's not part of the default card I usually suggest the stack in card
July 18, 2025Jul 18 2 hours ago, -cK- said:@slipx I've seen this request on your github and here for more batteries in the card (3, 4 and 5 etc).Seeing as this card is severely space limited with all the info and options already added in, the only option I see for more batteries in the card self beyond the 2 battery option currently, is when running it in full mode and on a wide panel setup. Just trying to think about how you would incorporate that to the card makes my brain hurt. So what I've done is add my batteries using standard grid layout cards and markdown cards below this one to get what I want on my one dashboard.It is still WIP but perhaps the easiest solution to all those request for additional batteries would be to make an independent card for just batteries or enable an option that the card can be setup for just displaying the battery section that can then be stacked up or something 🤷♂️.This option using markdown cards however is very flexible and customizable to setup your own info and monitoring.Please share your YAML... I need this on my dashboard 😁
July 19, 2025Jul 19 18 hours ago, Muttley said:Please share your YAML... I need this on my dashboard 😁Sure thing.I'm using a Grid-layout Dashboard:My layout config is as follow, adjust to fit your needs:grid-template-columns: 35% 35% 10% 10% 10% grid-template-rows: auto grid-template-areas: | "flow flow flow2 flow2 flow2" "batt1 batt2 acc acc acc" justify-items: stretch mediaquery: "(max-width: 800px)": grid-template-columns: 100% grid-template-areas: | "flow" "batt1" "batt2" "flow2" "acc"Here is one of the pairs of yaml. IndBatts.yamlJust adjust your parameters to your battery specs.There is also 2 monitors related to the Temp section. One for min and max with 🌡️ icon and one for when there is a big deviation on the temp sensors ⚠️icon. Adjust or remove as you see fit.Note I've set them up in a pair configuration so that when viewed on my phone I have pair showing in one row, you can split it off as 4 indivuals if you want but this is how I have mine setup.
July 20, 2025Jul 20 I've made a small tweak to my markdown card with regard to the information it displays.I've added in a check to indicated if the SOH of the battery drops below 100% to display a warning, see below:This is the updated markdown section if anyone want to incorporate that as well. IndBattMarkdownv2.yaml
July 21, 2025Jul 21 22 hours ago, -cK- said:I've made a small tweak to my markdown card with regard to the information it displays.I've added in a check to indicated if the SOH of the battery drops below 100% to display a warning, see below:This is the updated markdown section if anyone want to incorporate that as well.IndBattMarkdownv2.yamlThanks so much!!This is awesome 😍
July 28, 2025Jul 28 On 2024/06/13 at 10:08 PM, slipx said:@rgt.dnl I created my own template sensor that sums the data from two arrays and adjusted how the attributes are created. If you are using the default integration sensor then replace the filters for each entity in the graph filters: - fn: | ({meta}) => ({ xs: meta.wh_period.map(({ start }) => new Date(start)), ys: meta.wh_period.map(({ value }) => value), })withfilters: - fn: | ({meta}) => { const entries = Object.entries(meta.wh_period); const xs = entries.map(([start, _]) => new Date(start)); const ys = entries.map(([_, value]) => value); return { xs, ys }; }I've updated the code on GitHub @slipx Could you perhaps share the template sensor config? I have 2 arrays and I think I need to do the same as you did, I have a basic config to just sum the state value but getting this error on the graph:Error: at [entities.1.filters.0]: Error in filter: TypeError: can't convert undefined to object Error: at [entities.2.filters.0]: Error in filter: TypeError: can't convert undefined to objectI think it might be because I'm not addressing the attributes of the sensors I'm combining 🤷♂️.Thanks
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.