Batteries on PVO?

The ‘Add Status’ API does accept b1-b6 and will record them, but there is currently no method to view the data.

Update - You can click on the ‘Download’ link below the graph to review the uploaded battery data.

It isn’t, there will be an option to add/subtract the battery power (b1) value from v4

Currently, b1 is mandatory, b2-b6 values are ignored if b1 is missing.

This maps to the [telemetries.power] value on the SolarEdge or [battery.power] on the Powerwall

This will be based on the SolarEdge battery statuses -

  • 0 (Invalid)
  • 1 (Standby
  • 2 (Thermal Mgmt.)
  • 3 (Enabled)
  • 4 (Fault)

As an exercise I have modified a script to start uploading data to b1 and b2 for my friend’s AlphaESS in addition to v8 and v9.

SoC [ State of Charge ] and RoC [ Rate of Charge ]

Okay. Normally you would adjust exports/imports instead of consumption, but since “Add Status” doesn’t upload exports/imports, I can see why you might want such an option.

The Daily/Weekly/Monthly/Yearly charts seem to calculate exports/imports if consumption is uploaded (and conversely calculate consumption if exports/imports are uploaded with the “Add Output” API). Will the battery stats be taken into account when auto-calculating exports/imports on these charts, and/or will exports/imports be able to updated? (At the moment, it seems that if you upload consumption, then the calculated exports/imports cannot be updated.)

Thanks.

For testing purposes, do you mind posting the system id?

Net data (import/export) is calculated from gross generation and consumption, since adding/subtracting the battery power will adjust the consumption value it will ultimately affect the resulting net data.

5-minute consumption/generation data added/updated via ‘Add Status’ will automatically recalculate import/exports.

Hi @bankstownbloke,

sid=66069

v7 → Internal Inverter Temperature from Fronius Symo
v8 → SoC of AlphaESS SMILE G3 B5 INV
v9 → Rate of Charge of AlphaESS SMILE G3 B5 INV

So far so good uploading to ‘b1’ and ‘b2’. I haven’t figured out how to extract the other data from the Alpha ESS yet. b3 etc.

2025-10-13 17:35

Inverter Temperature: 48C
    Max Count: 1
    https://pvoutput.org/service/r2/addstatus.jsp?key=XXXXXXXX&sid=66069&d=20251013&t=17:35:12&v7=48&v8=100&v9=-596&b1=-596&b2=100
    OK 200: Added Status

Grannos

1 Like

Thanks @grannos - b1 and b2 are now displaying on the live system page.

Please refresh the page.

Default graph colours can be changed under account ‘Settings’ -

image

1 Like

Hi @bankstownbloke. Working great. Thanks.

Now I guess that it’s time to start digging a bit deeper in to Alpha ESS API.

Grannos

I’m uploading B1-B5 on my system 28198, if its of any use for testing.

When taking advantage of time-based feed-in tariffs, the formula consumption + battery power could result in a negative consumption number. I have no data between 6pm-7:15pm because I was exporting more than I was using.

I am trying to upload data that gives an accurate export/import, so I am pre-adjusting consumption by battery power before uploading. Of course, this can now result in negative consumption, which causes the upload to fail.

Do you have any suggestions?

Thanks.

sid=93768

What are the raw numbers for v4, v2 and b1 under this scenario?

{'d': '20251019', 't': '18:00', 'v2': 0, 'v4': 0, 'v5': 23.8, 'v6': 213.4, 'v7': 39, 'v8': 26, 'b1': -360.0, 'b2': 98.7, 'b4': 3246290, 'b5': 3183100}"
{'d': '20251019', 't': '18:05', 'v2': 0, 'v4': -3000, 'v5': 23.7, 'v6': 214.8, 'v7': 40, 'v8': 26, 'b1': -5880.0, 'b2': 96.2, 'b3': 24180, 'b4': 3246290, 'b5': 3183590}"
{'d': '20251019', 't': '18:10', 'v2': 0, 'v4': -3960, 'v5': 23.7, 'v6': 214.4, 'v7': 42, 'v8': 27, 'b1': -6960.0, 'b2': 93.6, 'b4': 3246290, 'b5': 3184170}"
{'d': '20251019', 't': '18:15', 'v2': 120, 'v4': -4440, 'v5': 23.6, 'v6': 209.8, 'v7': 44, 'v8': 27, 'b1': -6960.0, 'b2': 90.9, 'b4': 3246290, 'b5': 3184750}"
{'d': '20251019', 't': '18:20', 'v2': 120, 'v4': -3360, 'v5': 23.5, 'v6': 212.1, 'v7': 46, 'v8': 27, 'b1': -6960.0, 'b2': 88.2, 'b3': 24180, 'b4': 3246290, 'b5': 3185330}"
{'d': '20251019', 't': '18:25', 'v2': 0, 'v4': -5040, 'v5': 23.4, 'v6': 214.2, 'v7': 48, 'v8': 27, 'b1': -6720.0, 'b2': 85.7, 'b4': 3246290, 'b5': 3185890}"
{'d': '20251019', 't': '18:30', 'v2': 0, 'v4': -4920, 'v5': 23.3, 'v6': 207.9, 'v7': 50, 'v8': 27, 'b1': -6000.0, 'b2': 83.5, 'b4': 3246290, 'b5': 3186390}"
{'d': '20251019', 't': '18:35', 'v2': 0, 'v4': -5040, 'v5': 23.2, 'v6': 216.1, 'v7': 51, 'v8': 28, 'b1': -6000.0, 'b2': 81.2, 'b4': 3246290, 'b5': 3186890}"
{'d': '20251019', 't': '18:40', 'v2': 120, 'v4': -4920, 'v5': 23.2, 'v6': 213.6, 'v7': 52, 'v8': 28, 'b1': -5640.0, 'b2': 79.1, 'b4': 3246290, 'b5': 3187360}"
{'d': '20251019', 't': '18:45', 'v2': 0, 'v4': -5040, 'v5': 23.1, 'v6': 213.9, 'v7': 52, 'v8': 28, 'b1': -5640.0, 'b2': 76.9, 'b4': 3246290, 'b5': 3187830}"
{'d': '20251019', 't': '18:50', 'v2': 0, 'v4': -4920, 'v5': 22.8, 'v6': 214.1, 'v7': 53, 'v8': 28, 'b1': -5640.0, 'b2': 74.8, 'b3': 24180, 'b4': 3246290, 'b5': 3188300}"
{'d': '20251019', 't': '18:55', 'v2': 0, 'v4': -4920, 'v5': 22.4, 'v6': 219.3, 'v7': 53, 'v8': 28, 'b1': -5640.0, 'b2': 72.7, 'b3': 24180, 'b4': 3246290, 'b5': 3188770}"
{'d': '20251019', 't': '19:00', 'v2': 120, 'v4': -5040, 'v5': 22.2, 'v6': 209.5, 'v7': 53, 'v8': 28, 'b1': -5640.0, 'b2': 70.5, 'b3': 24180, 'b4': 3246290, 'b5': 3189240}"
{'d': '20251019', 't': '19:05', 'v2': 0, 'v4': -4920, 'v5': 22.0, 'v6': 214.2, 'v7': 54, 'v8': 28, 'b1': -5640.0, 'b2': 68.4, 'b3': 24180, 'b4': 3246290, 'b5': 3189710}"
{'d': '20251019', 't': '19:10', 'v2': 0, 'v4': -4920, 'v5': 21.9, 'v6': 209.6, 'v7': 54, 'v8': 29, 'b1': -5640.0, 'b2': 66.3, 'b4': 3246290, 'b5': 3190180}"
{'d': '20251019', 't': '19:15', 'v2': 0, 'v4': -3240, 'v5': 21.9, 'v6': 203.2, 'v7': 54, 'v8': 29, 'b1': -3840.0, 'b2': 64.8, 'b4': 3246290, 'b5': 3190500}"
{'d': '20251019', 't': '19:20', 'v2': 0, 'v4': 0, 'v5': 21.9, 'v6': 214.6, 'v7': 53, 'v8': 29, 'b1': -480.0, 'b2': 64.7, 'b4': 3246290, 'b5': 3190540}"
{'d': '20251019', 't': '19:25', 'v2': 0, 'v4': 0, 'v5': 21.9, 'v6': 213.8, 'v7': 51, 'v8': 29, 'b1': -480.0, 'b2': 64.5, 'b4': 3246290, 'b5': 3190580}"
{'d': '20251019', 't': '19:30', 'v2': 0, 'v4': 0, 'v5': 21.8, 'v6': 210.9, 'v7': 50, 'v8': 29, 'b1': -478.4, 'b2': 64.3, 'b3': 24180, 'b4': 3246290, 'b5': 3190620}"
{'d': '20251019', 't': '19:35', 'v2': 0, 'v4': 0, 'v5': 21.8, 'v6': 210.8, 'v7': 49, 'v8': 29, 'b1': -478.4, 'b2': 64.2, 'b3': 24180, 'b4': 3246290, 'b5': 3190660}"
{'d': '20251019', 't': '19:40', 'v2': 0, 'v4': 0, 'v5': 21.7, 'v6': 200.7, 'v7': 47, 'v8': 29, 'b1': -360.0, 'b2': 64.0, 'b3': 24180, 'b4': 3246290, 'b5': 3190690}"
{'d': '20251019', 't': '19:45', 'v2': 0, 'v4': 0, 'v5': 21.6, 'v6': 191.2, 'v7': 46, 'v8': 29, 'b1': -480.0, 'b2': 63.8, 'b4': 3246290, 'b5': 3190730}"
{'d': '20251019', 't': '19:50', 'v2': 0, 'v4': 109, 'v5': 21.6, 'v6': 184.8, 'v7': 45, 'v8': 28, 'b1': -335.4, 'b2': 63.7, 'b3': 24180, 'b4': 3246290, 'b5': 3190760}"
{'d': '20251019', 't': '19:55', 'v2': 0, 'v4': 0, 'v5': 21.5, 'v6': 170.2, 'v7': 44, 'v8': 28, 'b1': -480.0, 'b2': 63.5, 'b4': 3246290, 'b5': 3190800}"

Under this scenario, you’d like gross consumption calculated as

v4 = v4 - b1 ?

v4 = -5040 - (-5640)
v4 = 600

It would be best to handle this with a flag in the addstatus request e.g. &bc=1 so it won’t affect existing requests where this isn’t applicable.

hi, we just got shiny new PV system with battery (goodwe) installed last week and I would like to continue using PVoutput, which served me well for over a decade, to track production and savings.
Great to see that battery monitoring is available now, can anyone confirm if pvoutput can can calculate savings from battery system yet? (I know it can do this well for solar PV).

I’m currently exploring how to do this with Home Assistant but since I’m new to HA, the progress is quite slow

Not currently, but it would be a feature added in the future.

Installed 3 Enphase batteries, and now the PVOutput data doesn’t reflect imported power. Is there a way to correct this?

PVOutput would need to retrieve the battery data from Enphase, this would be separate enhancement in the future.

Aha. Any guesses when that might be? The system as it stands now isn’t useful to me and my ilk. I was really enjoying the daily cost calculation data.

Unfortunately a timeline can’t be provided at the moment.

Enphase is a little complicated given the battery data requires additional requests to Enphase and we are constriant by a total number of monthly requests, for all systems, which is quickly approaching its limits as more Enphase systems are added.

For testing purposes, do you allow PVOutput to make requests on your Enphase account? This is to sample the data and the number of requests will be kept to a minimum (1-2 per day)

I have a google sheet setup to pull my Powerwall data and upload to PVOutput…