v0.20.0 - PW3 Battery Health, Truthful Gateway Status and Site Info, Token Hygiene
- feat(tedapi): Powerwall 3 battery health and inverter detail in vitals. Tesla's own app queries (the V2026_06
PW3QueryandComplianceQuery) request 23 PW3 signals our default V2024_06 query didn't; they are now requested as ComponentsQuery extras (PW3_APP_SIGNAL_NAMES) and passed through as delivered. Each battery'sTEPODblock gainsBMS_kwhDischargeTotal(lifetime kWh discharged),BMS_LOG_ahDischargeTotal,BMS_LOG_cacAvg,BMS_LOG_numFullBattCycles,BMS_LOG_overDischargeCounter,BMS_LOG_selfDischargeRate,HVP_SafetyBiDisconnectStateandHVP_a061_LockoutOnIsoFaultRetry. Each Powerwall'sTEPINVblock gainsPCH_AcRealPowerSum,PCH_AcVoltageLL/CN, the rapid-shutdown and external-switch states (PWS_*), and the battery aggregate's expected energy (BAGGR_*). Enum and boolean signals now come through (they arrive intextValue/boolValue). Empty expansion slots report placeholder values and are still skipped. Validated live on 2x PW3 (firmware 26.26.11): only keys added. Under V2026_06 thePCH/PWS/BAGGR/HVPsignals also arrive (Tesla'sPW3Queryrequests them); theBMS_*ones are V2024_06 only. (#421) - fix(tedapi):
/api/site_inforeturnednullfor every field. It read config.json's top level, but these keys live under itssite_infosection. Site name, timezone, system energy/power, meter limits, panel current and grid code (with country, state and utility) are now filled, in the gateway's shape;grid_voltage_setting/grid_freq_setting/grid_phase_settingstaynullbecause config.json has no such settings. Validated live on 2x Powerwall 3. (#420) - fix:
/api/statusstart_timeandup_time_secondsnow mean what they mean on a gateway (when it last started), ornullwhere that isn't known. Before, every non-local backend put an install/commission date instart_timeandnulluptime, and cloud/FleetAPI reported a hard-codedgit_hashandsync_type: "v2.1". Strict clients failed to parse the dates: evcc's go-powerwall readsstart_timeas2006-01-02 15:04:05 -0700andup_time_secondsas a Go duration (#418). (#419)- TEDAPI: computed from
SYNC_Uptime, the Backup Gateway sync board's uptime in ms, requested through the device-controller query's unsignedmsaSignals.nullon sites without a sync board and under V2026_06. NewTEDAPI.get_gateway_uptime(); vitals gainSYNC_UptimeonTESYNC.git_hashis filled from the firmware. Validated on 2x PW3 + Backup Gateway 2 — go-powerwall parses the output. - Cloud and FleetAPI: the Tesla site API has no start time, uptime, git hash or sync type, so these are
null(sync_type"unknown"). - The dates aren't lost: TEDAPI adds
battery_commission_date, cloud/FleetAPI addinstallation_date, each passed through unchanged.
- TEDAPI: computed from
- fix:
strings()no longer modifies the dict returned byvitals(). On Powerwall 3,/vitalsPVAC blocks no longer pick upPVS_String*_Connectedkeys after a/stringscall; the keys remain in thePVS--blocks and/strings. (#414) - fix(auth): interactive Tesla login and
setup -fleetapino longer print refresh/access tokens to the console. The pywebview backend also returns the populatedtoken_datadict (fixes the empty-token behavior reported on Windows, #409). (#415, fixes #417 discussion) - docs: API.md describes the
/api/statustime fields and where solar string data lives in vitals. - tests: new
test_tedapi_site_info.py,test_gateway_uptime.py,test_strings_vitals_isolation.py. - Library version bumped to
0.20.0.
Proxy t106
- Upgraded to pyPowerwall v0.20.0 — see above.
/vitalsand/pw/vitalsgain the PW3 battery health and inverter detail,/api/statusreports truthful gateway start time/uptime, and/api/site_infois filled in TEDAPI mode.
Install / upgrade:
- PyPI: pypowerwall 0.20.0:
pip install --upgrade pypowerwall==0.20.0 - Proxy image:
jasonacox/pypowerwall:0.20.0t106
Full changelog: https://github.com/jasonacox/pypowerwall/blob/main/RELEASE.md
Contributors
Thanks to the community members who made this release possible: