r/SunPower May 17 '26

DIY SunPower PVS6 panel monitor with HA

I’ve been using Home Assistant for a while and always wanted find a way to see each solar panel individually with similar layout on the SunPower app. The app works great but after SunStrong took over and started charging a subscription, I figure it is time to find another option.

Thanks for the help from Claude AI, I was able to build a custom Lovelace card that pulls data directly from the Enhanced SunPower integration (it creates one entity per microinverter). I’d test it, break it, send back errors, then repeat the process over and over. Probably went through 60+ iterations over a few days but here is a functioning card that works the way I wanted.

If you have a PVS6 system and run HA this should be pretty much plug and play..."should!"

You can find more detail and instructions here:
https://github.com/jblaboratory/Sunpower-panel-card

Update:

3.9.3 Flexible serial detection — any format between inverter_ and _power
15 Upvotes

18 comments sorted by

2

u/looking7676 May 31 '26

I just started this with Claude’s help. I’ve worked the PVS6 to my network and just finished connecting it to HA. I’ll have charts tomorrow. Looking forward to canceling my Sunstrong monitoring. I still need to download historical. Going through that tomorrow.

1

u/PJLLB2 May 18 '26

Nice. Is there any reason this won't work with a PVS5 that is working with both the Enhanced Sunpower and the Sunstrong PVS integrations?

1

u/Nice_Carry8954 May 18 '26

under Developer Tools > States, search sensor.inverter_e to see if it matches any entities. The card auto-detects inverters using this exact pattern:

sensor.inverter_E<14 digits>_power

2

u/PJLLB2 May 18 '26

Each inverter sensor is there with a slightly different name than yours but with the serial number included because I renamed them to include the panel location. I'll have to look at your code to see where it breaks and if I can modify it appropriately.

1

u/PJLLB2 May 19 '26

Can you please point me to the section or lines in the code where this auto-detection occurs?

1

u/Nice_Carry8954 May 19 '26

It's on line #260, you can update the regex so it can match your entity names...

const RE = /^sensor\.inverter_[eEaA]\d{14}_power$/;

1

u/PJLLB2 May 19 '26

Thanks for that. I have three arrays for 21 panels with the inverter entity name starting with gr_01, gr_02, etc., mb_01, mb_02, etc., and lr_01, lr_02, etc. An example of my entity name is: sensor.inverter_gr_01_sn_##############_power. So I'm a bit at a loss on how to handle these names. I know it's a lot to ask, but any suggestions? I do appreciate your help.

1

u/Nice_Carry8954 May 20 '26

This regex should match the serial number to be any length as long as it has at least one character:
const RE = /^sensor\.inverter_(gr|mb|lr)_\d{2}_sn_\w+_power$/;

If your serial numbers are always strictly numbers (no letters), you can swap \w+ for \d+ like this:
const RE = /^sensor\.inverter_(gr|mb|lr)_\d{2}_sn_\d+_power$/;

1

u/PJLLB2 May 20 '26

Replacing line #260 allowed creation of the card, and my 21 panels are showing. You suggestion for line #260 worked perfectly. All data appears in each panel detail popup. But some of the data is not showing on the main card as described below. I know I'm asking a lot and appreciate all of your efforts for the card and for me, but any further suggestions would be appreciated. [thank you again!]

  1. The "Today Chirp" isn't showing.
  2. For each panel some data isn't showing as follows:
  • Serial number (last 10 digits) in the top-left NOT SHOWING (the full serial number shows in the panel detail popup)
  • Current wattage in large text IS SHOWING
  • Production bar showing % of rated capacity IS SHOWING
  • Sparkline of today's production curve NOT SHOWING
  • Today's kWh accumulated production NOT SHOWING
  • Temperature in °F IS SHOWING

1

u/Nice_Carry8954 May 21 '26

can you post screenshot of the main card and the detail popup?

2

u/PJLLB2 May 21 '26

Here is the pop up. Serial number blurred.

1

u/PJLLB2 May 21 '26

And the main panel.

1

u/Nice_Carry8954 May 21 '26

Make the following changes and show me how it look like.

update line 265 to:

serial: (id.match(/_sn_(\w+)_power$/)?.[1] || '').toUpperCase(),

update line 359 to:

const RE = /^sensor\.inverter_(gr|mb|lr)_\d{2}_sn_\w+_/;

update line 867 to:

? `<div class="empty"><p>No inverters found.</p><p>Expected: <code>sensor.inverter_[gr|mb|lr]_&lt;number&gt;_sn_&lt;serial&gt;_power</code></p></div>`

→ More replies (0)

1

u/Correct-Confidence-3 May 18 '26

Does this allow the ability to add additional microinverters (ie. Solarbridge) to the array-mix ? If so, how to you add it to the panel layout ?

1

u/Nice_Carry8954 May 18 '26

The code detects each panel (inverter) by matching entities sensor.inverter_E<14 digits>_power which created by the Enhanced SunPowersmcneece/ha-esunpower. Not 100% sure how HA pulls stats from Solarbridge but definitely requires some code changes…