SolarEdgeMonitor not working

The SolarEdgeMonitor app is not working.

I’ve looked at the code and see that the app uses the API call “currentPowerFlow.” When attempting to access that API via HTTPS, the API responds with no information. Other API calls do return information; for example, “overview” works as well as other calls. I’ve opened a case with SolarEdge to see if they can shed any light on this issue. I will update here when I have more information.

1 Like

If you are able go head and fix the code.

I wasn’t sure if it was just me or not. I wasn’t too sure of how to set it up, so i didn’t know if I was wrong or if the app wasn’t working.

Is it still not working ? I can try to debug it if someone has some credentials I can test with.

I finally received a reply from SolarEdge:

Thank you for contacting Solaredge Technical Support.
We can only provide the API key other than that we do not have access.
Please see the link below, for API Guide

https://knowledge-center.solaredge.com/sites/kc/files/se_monitoring_api.pdf

Then they closed the ticket.

I think the best way forward is to make the app fault tolerant when some api data is missing. That way it will keep working. Unless of course they changed the api permanently and the app should be updated accordingly.

The API Call documented in their API Reference “Site Overview” works.
Here is what I get when punching in my API key and Site ID:
image

Here is the API Reference for Site Overview:

Site Overview
Description: Display the site overview data.
URL: /site/{siteId}/ overview
Example URL: https://monitoringapi.solaredge.com/ site/{siteId}/overview?api_key=L4QLVQ1LOKCQX2193VSEICXW61NP6B1O
Method: GET
Accepted formats: JSON and XML
 Request: The following parameter is included in the request:
Parameter Type Mandatory Description
siteId Integer Yes The site identifier
 Response: The response includes the site current power, daily energy, monthly energy, yearly energy and life time energy

The app uses the API Call “Site Power Flow”. Here is what that call returns when I plug in my Site ID and API Key:
CurrentPowerFlow

Here is the API Reference for Site Power Flow:

Site Power Flow
Description: Retrieves the current power flow between all elements of the site including PV array, storage (battery), loads
(consumption) and grid.
Note: Applies when export , import and consumption can be measured.
URL: /site/{siteId}/currentPowerFlow
Method: GET
Accepted response formats: JSON (default), XML
 Parameters:
 Example URL:
https://monitoringapi.solaredge.com/site/1/currentPowerFlow?api_key=L4QLVQ1LOKCQX2193VSEICXW61NP6B1O
Parameter Type Mandatory Description
siteId number Yes The site identifier
API Description
27
 Response: The response returns power flow for each of the elements in the system and their state.
In case the site does not support this information, the response should be an empty object.
Otherwise, the response includes the following:
• siteCurrentPowerFlow - Root element
• unit - The measurement units (e.g. Watt)
• connections - A table including all the relationships between the elements, and the power flow
directions (producing element and consuming element)
• from element - The element providing power
• to element - The element consuming power
• A list of elements - Element per entity type in the specific site
• GRID - always included in response
• LOAD - always included in response
• PV - included if the site has a PV array (measurement of PV produced power)
• STORAGE - included if the site has storage installed and enabled
• Parameters for each element:

  1. For all included elements, the following parameters are provided:
    o status - The current status of the element (Active / Idle
    / Disabled)
    o currentPower - The current power of the element. All
    numbers are positive; power direction is determined by the
    “connections” section above:
     For STORAGE - Check the “connection” section for
    the direction. From storage to load = discharge. From
    PV to storage or from load to storage = charge.
     For GRID - Check the “connection” section for the
    direction. From grid to load = import (purchase),
    from load to grid = export (feed-in).
  2. For Storage, the following additional properties are included:
    o chargeLevel - The accumulated state of energy (% of charge)
    for all batteries
    o critical- If the accumulated storage charge level drops below a
    configurable level (currently 10%), this flag is returned
    o timeLeft - In Backup mode (GRID is Disabled), this property is
    returned to specify the time left before the storage energy
    runs out (estimated according to current load level).

The Site Overview (and all other API calls, apparently) are working. Just the “Site Power Flow” call is not working. When I say Not Working, I mean it returns no data.

If SolarEdge will not fix their API, then this app will not work at all.

Could it be that your installation doesn’t support it ? Or maybe you need to enable it somehow ? Or did it work before and not it doesn’t ?

Where I live only the installers and monitoring service can be system managers so I can’t get them API. Kind of makes there app useless.

If you email me, I’ll supply my site ID and API key for testing.
I’d like this tidbyt app to function.

[email protected]

1 Like

App is still not working. For me, anyway.
Generated new keys twice and still all zeros in display.

Hi all!
Is this problem solved for anyone in the meanwhile? If yes, how?

I have exactly the same problem (currentPowerFlow API call not working - returns a HTTP error 500, while other API calls such as overview or details are working fine), and I wonder whether there is anything I could do about it (some workaround?).
I wrote to SolarEdge Support - let’s see whether they have any useful answer for me.

Best regards, Chris

Still not working for me either.

Would it suffice to just ignore the 500 response if possible or is that the crucial data you need ?

Ignoring the error is not an option, because I would need excatly these data returned by this call.

i think th V2 API must be used since 2023 but i am not able to recode it so maybe the dev of the offical app? Migrating from V1 to V2 | Monitoring

Agree - I submitted a pull request for the author/tidbyt to review - hopefully it makes the app functional again.

TL;DR: In order for this app to work for you, your system needs specific hardware: https://www.solaredge.com/us/products/metering-and-sensors/current-transformers/

This app has never worked for me, and I think I have finally figured out why. I was digging around in the v1 API, which supports generic GET requests so you can just experiment in a browser without fiddling with headers or POST data or anything.

Just about every request I tried worked for my site. For example

https://monitoringapi.solaredge.com/site/[my site id]/overview?api_key=[my API key]

returns

<overview>
  <lastUpdateTime>2024-06-25 13:27:37</lastUpdateTime>
  <lifeTimeData>
    <energy>2.8978506E7</energy>
  </lifeTimeData>
  <lastYearData>
    <energy>3085186.0</energy>
  </lastYearData>
  <lastMonthData>
    <energy>527126.0</energy>
  </lastMonthData>
  <lastDayData>
    <energy>14440.0</energy>
  </lastDayData>
  <currentPower>
    <power>3048.5857</power>
  </currentPower>
  <measuredBy>INVERTER</measuredBy>
</overview>

but the one request the app makes, https://monitoringapi.solaredge.com/site/[my site ID]/currentPowerFlow?api_key=[my API key], just returns

<siteCurrentPowerFlow/>

I did a little googling, and it looks like our friends using HomeAssistant have been experiencing this challenge as well. The API used by the SolarEdgeMonitor app can only provide data if you have the device mentioned hooked up as part of your Solar Edge system.

1 Like

I started looking at this tonight and noticed something weird. It seems to be xml in my browser but when the tidbyt gets the response, it’s json?

Here’s what seems to work (styling still work in progress)

load(“render.star”, “render”)
load(“http.star”, “http”)
load(“xpath.star”, “xpath”)

API_KEY = “XXXXXXXXXXX”
SITE_ID = “XXXXX”

url = “https://monitoringapi.solaredge.com/site/” + SITE_ID + “/overview?api_key=” + API_KEY

def main():
response = http.get(url)

if response.status_code != 200:
result = “fail”
else:
result = “pass”
doc = xpath.loads(response.body())

json_data = response.json()
current_power = json_data[“overview”][“currentPower”][“power”]
last_day_energy = json_data[“overview”][“lastDayData”][“energy”]
lastMonthData = json_data[“overview”][“lastMonthData”][“energy”]
lastYearData = json_data[“overview”][“lastYearData”][“energy”]
lifeTimeData = json_data[“overview”][“lifeTimeData”][“energy”]

return render.Root(

child = render.Marquee(
height = 40,
scroll_direction = “vertical”,
child = render.WrappedText("Current: " + str(current_power) +
"; Today: " + str(last_day_energy) +
"; Last Year: " + str(lastYearData) +
"; Life Time: " + str(lifeTimeData))
)

)

I hope someone can rework the code and fix it!

why can’t you modify the original code with the good styling to have the correct fetching code ?