Batteries on PVO?

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…

Only just came across this thread but been hanging out for some battery support for a long time. So this is awesome news!

Currently my v2 includes battery output, and v4 includes battery input. I’m sure there was a reason I included output… but can’t remember anymore.

Anyway I just started logging the battery data into b1-6, and won’t alter my generation or consumption data yet… as I assume it will be manipulable later with settings. I guess I’d want v2 = v2 + b1, and v4 = v4 + b1… to remove battery outputs from generation and battery inputs from house consumption.

I’ve been logging my battery data since Feb 2023 in v11+v12. Is there a good way to copy that data to b1+b2… and once its all settled down, recalculate.

Thanks.

Been thinking about it overnight.

Power Used: I have been counting battery input and outputs in this figure from my server side. I shouldn’t have been counting inputs. It’s not used power, its stored power. I should still be counting outputs however… so realistically I’ve been double counting any battery power in my power used.

Power Generation: I have been counting battery outputs in this figure. However I think I did this because if I didn’t, then PVO would count the power used as imported, and I figured it was better to have incorrect generation stats than imported stats.

I guess I need to know what the implementation will be going forward, to determine what figures I will be sending into PVO with my battery stats.

If a feature could be added to manipulate large amounts of data (knowing that I could mess all my data up and it can’t be reversed etc) and queues / rate limits can be added to stop your servers getting smashed

  1. Start Date/Time
  2. End Date/Time
  3. Rule (to fix my data I’d use the following)

copy my extended data to battery data
b1 = v11
b2 = v12

remove battery input from power used
if(v11 > 0) v4 = v4 - v11

remove battery output from power generation
if(v11 < 0) v2 = v2 + v11

I’m not sure how the battery stats will eventually (or currently) effect net production calculations, so I’ll wait and see for now. My Generated is currently over reporting by the battery output, consumption over reporting by the battery input… but import and export are correct. Going back 3 or 4 years and fixing data would be great… but having accurate data going forward if probably more useful. I hope that made sense.