Well prior to them nuking my setup I had each panel displayed as a meter arranged in to three arrays and in the correct order that the panels were in physically. This allowed me to see at a glance the production numbers of each panel. Obviously when I would look into the history I could see the historical production numbers of each panel graphed out as well. This allowed me to quickly and easily see patterns and faults. For example I knew that right after about noon the western most panel on my main south east array would begin to be shaded by the chimney, followed a while later by the one under it and so on. It was a very distinctive pattern in the graphed out production numbers and I knew it was normal. Any anomaly, however, sticks out immediately. If it was a full sun day and every panel is clipping out except for one that is 20, 50, a 100 watts below that point and is not shaded, obviously something is out of sorts.
Possix does show per panel current wattage, but Iāve setup something using this method and the production endpoint
https://{IQ Gateway_ip}/api/v1/production/inverters
Would you mind sharing an example code of one of the cards you have above @JakeK ? Iād like to setup a Lovelace array as well and have been looking around for examples, but it seems not a lot of people use per panel monitoring, or atleast put it into a dashboard. Trying to figure out the right card to use.
Iām currently at work so itāll be a while until I can get the code. Probably wonāt have a chance until some time this coming week.
I did find a screenshot of prior the firmware update. It really is just a bunch of vertical cards.
Sure, this is what I use currently (and is working very well for me):
mqtt:
sensor:
- name: "Solar Lifetime Production"
unique_id: '0a7476cc-d6c1-40ba-8ae1-606518c3497d'
state_topic: "home/envoy/Envoy-S Metered/Production CT"
unit_of_measurement: "Wh"
state_class: total_increasing
device_class: energy
value_template: "{{ value_json.production[1].whLifetime }}"
- name: "Solar Current Production"
unique_id: '0a7476cc-d6c1-40ba-8ae1-606518c3497c'
state_topic: "home/envoy/Envoy-S Metered/Production CT"
unit_of_measurement: "W"
state_class: measurement
value_template: "{{ value_json.production[1].wNow if value_json.production[1].wNow > 0 else 0 }}"
Hereās the yaml for my dashboard arrays.
type: vertical-stack
cards:
- type: markdown
content: North West Array
- type: grid
cards:
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 12
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 11
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 10
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 9
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 8
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 7
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 6
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 5
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 4
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 3
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 2
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 1
needle: true
severity:
green: 100
yellow: 10
red: 0
columns: 4
- type: markdown
content: South East Array 2
- type: grid
cards:
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
needle: true
severity:
green: 100
yellow: 10
red: 0
name: Panel 14
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 13
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 12
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 11
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 10
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 9
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 8
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 7
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 6
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 5
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 4
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 3
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 2
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 1
needle: true
severity:
green: 100
yellow: 10
red: 0
columns: 4
square: false
- type: markdown
content: South East Array 1
- type: grid
cards:
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 16
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 15
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 14
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 13
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 12
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 11
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 10
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 9
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 8
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 7
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 6
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 5
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 4
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 3
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 2
needle: true
severity:
green: 100
yellow: 10
red: 0
- type: gauge
entity: sensor.envoy_inverter_
min: 0
max: 340
name: Panel 1
needle: true
severity:
green: 100
yellow: 10
red: 0
square: false
columns: 4
When Sony removed the capability to install Linux on the PS3 post-launch, there was a successful class action suit, just sayinā.
Is there any way to downgrade the firmware? I made a mistake in my firewall config and mine upgraded over the weekend. The token situation looks like way more effort than Iām willing to expend to set back up.
I got as far as level 2 tech support on the phone yesterday and the guy swore up and down that it wasnāt possible to downgrade it. Instead he told me about some APIv4 that has a free version that doesnāt even come close to doing what I was asking. https://developer-v4.enphase.com/developer-plans
Instead I was able to get one of the envoy integrations on hacs to work last night. Now if only I could get my mariadb database tables repaired so I could have the past two years of energy data.
https://github.com/briancmpbll/home_assistant_custom_envoy
I got it to work thanks to the comments on the Brian Campbell GitHub issues (#71) page:
It involved using that repo after uninstalling and then restarting HASS. My envoy is on D7.3.120 and I did need to move up to the latest 2023.5.2.
I was hopeless but was surprised when it worked. I used my Enphase login and password and clicked the unlabeled button which in other releases was āuse envoyā during configuration. It paused for longer than I expected but went through last night (May 5). Because the device name is based on serial number, all my front end stuff came up without having to edit any of the entities.
Itās very simple, you can copy/paste the code right out of my post here: Enphase local API with firmware 7.x - my setup
replace the usermame/password/serial number where it says to, and it prints a token - good for a year
For 5.x.x firmware we have net-consumption
metric and we can calculate net-production (grid-out) value:
net-production[whLifetime] = production[whLifetime] - consumption[whLifetime] + net-consumption[whLifetime]
After asking enphase very nicely over and over again, I finally got documentation for the local REST API Endpoints. Hopefully this will be helpful for the devs working on updating their enphase integrations!
Thanks, very useful!
Hi HA_n00b,
Trying to get the enphase working, I created the helper as you suggested and created a sensor:
But for some reason this sensor keeps having status unavailable?
Any help would be appreciated
Hi all,
Iām new here and Iām going to ask maybe a couple of stupid questions but I have to do itā¦
The main issue here is we donāt want go outside home to ask for anything and have it all locally, but this integrations (posixx, jrutski,ā¦) all try to get the token programatically accessing to enlighten websiteā¦ why? If we can generate a token valid for 1 year, why not enable a field in the integration to write the token as option and avoid any external comunication? Can I do that already? Where in the config files I have to set the token?
The other question is I had the core integration working until last wednesday enphase decided to upgrade MY envoy without any advise (i opened a case with them very disapointed but I see how they try to monetize the data and the access to it so they donāt care). I donāt want to lose the historical data so, as iām not installing the integration since the begining but substituing the integration for the new one (i tried with posixx version), how can i update the configuring data from the form? I cannot find how to do it. Any advise? Let me say that home assistant is powerful, amazing and awesome, but the documentation to change things, or fix values or configs is very obscure, not intuitive and mostly inexistent. It will be perfect to understand where to bypass the tries to get token online, set the token manually (i can do that once per year if needed), or simply where to set the host if the ip changesā¦ I have some programing skills and I could help community, but documentation to understand how things works is not easy to find. Am I right?
My 2c
JA
Played around with this over the weekend but used the Enphase portal. When toggling off it took over half an hour to respond, toggling on well over 15 minutes. Could be random?
When using the local access, is the response instantaneous?
Yes, with local access to the Envoy, it responds within minutes with both turning on and off.
I donāt have this option in my local webinterface. Is it behind the āinstaller loginā? [Which would present the next challengeā¦ how to obtain the password].
Am on FW D05, from the sounds of this discussion I should probably limit internet access and prevent a FW upgrade.
Yes its in the installer section. I have a DIY installer account en installed the system myself.
You can create a DIY account and ask your installer or Enphase Support to give access.
Thanks! I found a py script which derives the installer password from the serial number of the envoyā¦ gives me the shivers thinking about the security vulnerability of this product especially considering itās not possible to change the installer password. Luckily this is a local only interface - will disconnect my envoy from the internet just to be sureā¦
Used the script myself and can confirm it does the trick.