Tell me about home solar

Cool. I am/used to be a programmer. I very much like their software. It’s facinating to look in real time at how your system is operating.

And I can see the kWh that each individual panel has created. By day, month, year or lifetime.

Solar offset is now 107% for the month, and the sun isn’t even up yet.

It’s fun stuff, isn’t it? My last job was turning all that data into visualizations, charts, and rooftop diagrams. It was cool being able to see how the different individual modules and strings performed over time (usually due to orientation and shading).

We drew some inspiration from Enphase’s app (shh) but also had a few small innovations of our own. Wish more of this was open source for homeowners (it could very well be; the majority of it was already built on open source).

@Reply . Do you have a drafting background? Or all programming.

Drafting like CAD, architectural, or solar line drawings? No, sorry (to any of those). I’m only a coder (and also installed a few solar systems). I’ve dabbled with graphics and GIS, but not any sort of drafting for building or mechanical/electrical things.

Yes, Xcel has a Green Button download link, which if I click I get an xml file (like it’s 2005, why not json?) full of my usage information. It doesn’t seem to contain any identifying information, so I uploaded it to a web based analyzer, and either the web thing is broken, or the xml is broken, because it had usage but not cost.

Anyway, my desire was to have some other app or website retrieve the Green Button data and keep track of it for me. That does seem to be a use case, but it’s not at all clear if anyone actually provides that service outside of their own customer base. For example, I found some solar companies that will use the Green Button stuff to create usage portals for their own customers.

Xcel does have a way to attach the smart meter to my home wifi, and then I can query it directly, and there are scripts to do that and dump it into grafana or something. There is both an app and a website to do the attaching, but my meter appears to be stuck in “pending” so it won’t let me add it to wifi. I need to call about that.

Xcel can be good and bad to work with. “My electricity is weird” and they can have someone out in an hour. “My meter is flashing ‘Err0r9’” and it can take a year for them to come replace it. Right now my meter says “HAnd15” which I’ve discovered just means HAN (home access network, aka wifi) disconnected.

Yeah, my (limited) experience trying to get help with utility smart data stuff has been horrible across the board — most of their customer-facing organization is set up to handle outages and such, not nerds trying to connect to their APIs.

That said, the format itself is documented: UtilityAPI - Docs - Green Button XML Format

You should just be able to read that XML file in any text editor (or drag it into your browser) to see what it contains.

The GB XML download I got from my own utility has daily or monthly usages (depending on the date range I choose). It also has my address at the top.

The monthly version has costs while the daily version does not.

https://gbmeter.com/ was able to read it, but that web app is buggy and has the costs wrong (among other things). I think you have to divide the monthly costs by 100,000 to get the USD value — it looks to me like a cost reading between the two intervals, not a per-kWh rate.

SOME utilities seem to offer a “Connect My Data” variant of the Green Button data, which lets you (or another app) subscribe to an Atom feed for regular updates. If yours doesn’t, then it’ll be harder.

There’s probably a way to write a Playwright (or similar) script to log in as you every hour in a virtual browser and download the data that way, then send it along to wherever you want… but that is a tedious and often fragile approach.

The whole Green Button thing is pretty old, and many of the resources and articles about them are now dead links — especially any that point to the White House.

There are also current transducers that can clamp around your circuit breaker panel wires to measure the power going through them and report that way. One brand used to be Neurio, but I think they were bought by someone and discontinued. Tesla might have its own whitelabeled version: aimfulwandering comments on What happened to Neurio?

And there are similar devices on Amazon, though I can’t vouch for any of them.

Last thought… when the smart meters came out, a bunch of people reverse engineered their protocols (I think many models have an infrared LED that can be used for reading); there used to be some open source software to look at their blinking IR lights with a webcam and demodulate that data into a CSV or such. It’s been a while, but you might look into that. That completely bypasses the meter wifi and uses its own on-meter output that’s meant for utility workers to read with specialized devices.

Oh, and I think there was also some work in decoding their radio signals using software defined radio (they have a peer to peer mesh that they use to connect to each other in a mesh and report back to the utility, though not all smart meters or utilities use that part of their function).

So you have a lot of ways to tackle this, but none of them as straightforward as “connect my data to this other place”, it sounds like :frowning:

Good luck; sounds like a fun (if tedious) project. Feel free to PM me if you want any help with it.


Side thought…

Back when I did this for fun, we had to hook up a RS232 serial port to the inverter’s own programming port, then we reverse engineered its (simple and plaintext) protocol to get the minute by minute data. We hooked that up to an external data logger and then connected that to an old laptop running a cron job to upload the data every hour or so, then piped it to a third party API for storage. It was a pain in the ass, but at least it was possible… I think systems are generally a lot more proprietary and locked down nowadays =/

Yeah, I just grepped mine for my street number and account number, and it didn’t find anything. I’ll have to poke around, but I think it only had one I can download.

There’s already one inside my Tesla box. Something called a Neurio model W2, with a purple light on it. I discovered that while trying to find documentation about a serial port on the controller board. It looks like it only has ethernet and wifi, as to be expected from a company that builds a car with only a touchscreen.

That did lead to me finding some information about what can be pulled off the inverter. Apparently the local API is a reduced version of the v2 (or maybe v1) PowerWall API, but it can be queried locally.

And as I expected, other people have already done the hard work of putting this all together for feeding into grafana, or whatever.

It also showed me NetZero, which might do everything I want.

The thing I’m going to need to investigate for all of that, is if it will work with just an inverter, or if. a PowerWall is needed.

Anwyay, here is some json, straight off my inverter. I’ll have to play with this during the day and see if any of these numbers will show me actual production.

{
  "max_system_energy_kWh": 13.5,
  "max_system_power_kW": 5,
  "site_name": "My Home",
  "timezone": "America/Denver",
  "max_site_meter_power_kW": 1000000000,
  "min_site_meter_power_kW": -1000000000,
  "nominal_system_energy_kWh": 13.5,
  "nominal_system_power_kW": 7.68,
  "grid_code": {
    "grid_code": "60Hz_240V_s_SMC_IEEE1547-2018_Colorado-Xcel-2025",
    "grid_voltage_setting": 240,
    "grid_freq_setting": 60,
    "grid_phase_setting": "Split",
    "country": "United States",
    "state": "Colorado",
    "distributor": "*",
    "utility": "Xcel Energy (CO)",
    "retailer": "*",
    "region": "IEEE1547-2018_Xcel-Energy"
  }
}{
  "din": "1538000-45-D--GFXXXXXXXXXXXX",
  "start_time": "2026-02-17 14:27:47 +0800",
  "up_time_seconds": "31h11m38.042134013s",
  "is_new": false,
  "version": "25.42.1 1d1ff4c6",
  "git_hash": "1d1ff4c6bc8ef5dad15b2fc67ff41fe67f92c0fe",
  "commission_count": 0,
  "device_type": "teg",
  "teg_type": "pvinverter",
  "sync_type": "v2.1",
  "cellular_disabled": false,
  "can_reboot": true
}
{
  "command_source": "NothingActive",
  "battery_target_power": 0,
  "battery_target_reactive_power": 0,
  "nominal_full_pack_energy": 0,
  "nominal_energy_remaining": 0,
  "max_power_energy_remaining": 0,
  "max_power_energy_to_be_charged": 0,
  "max_charge_power": 0,
  "max_discharge_power": 0,
  "max_apparent_power": 0,
  "instantaneous_max_discharge_power": 0,
  "instantaneous_max_charge_power": 0,
  "instantaneous_max_apparent_power": 0,
  "hardware_capability_charge_power": 0,
  "hardware_capability_discharge_power": 0,
  "hardware_capability_adjusted_charge_power": 0,
  "grid_services_power": 0,
  "system_island_state": "SystemGridConnected",
  "available_blocks": 0,
  "available_charger_blocks": 0,
  "ffr_power_availability_high": 0,
  "ffr_power_availability_low": 0,
  "load_charge_constraint": 0,
  "max_sustained_ramp_rate": 1920000,
  "grid_faults": [],
  "can_reboot": "Yes",
  "smart_inv_delta_p": 0,
  "smart_inv_delta_q": 0,
  "last_toggle_timestamp": "0001-01-01T00:00:00Z",
  "solar_real_power_limit": 1401.3011039772894,
  "score": 10000,
  "primary": true,
  "auxiliary_load": 0,
  "inverter_nominal_usable_power": 0,
  "system_available_charge_power_design_pf": 0,
  "system_available_discharge_power_design_pf": 0,
  "system_available_charge_power_unity_pf": 0,
  "system_available_discharge_power_unity_pf": 0,
  "system_charge_power_capability_design_pf": 0,
  "system_discharge_power_capability_design_pf": 0,
  "system_charge_power_capability_unity_pf": 0,
  "system_discharge_power_capability_unity_pf": 0,
  "system_adjusted_charge_power_capability_design_pf": 0,
  "system_adjusted_charge_power_capability_unity_pf": 0,
  "expected_energy_remaining": 0
}

Can you pull data straight from the Neurio, maybe with third party apps or firmware (not sure)? That’s what it was originally designed to do, to capture and transmit power metrics over the internet.

There’s an API for it: Neurio Public API

And supposedly if you go over the local network it won’t need auth? Not sure.

Edit: nevermind, sorry, that’s the public API over the cloud. some github posts are saying that somebody figured out how to talk to it over the LAN, but I’ve yet to find instructions. Will look harder tomorrow…