github jasonacox/pypowerwall v0.20.0
v0.20.0 - PW3 Battery Health, Truthful Gateway Status and Site Info, Token Hygiene

6 hours ago

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 PW3Query and ComplianceQuery) 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's TEPOD block gains BMS_kwhDischargeTotal (lifetime kWh discharged), BMS_LOG_ahDischargeTotal, BMS_LOG_cacAvg, BMS_LOG_numFullBattCycles, BMS_LOG_overDischargeCounter, BMS_LOG_selfDischargeRate, HVP_SafetyBiDisconnectState and HVP_a061_LockoutOnIsoFaultRetry. Each Powerwall's TEPINV block gains PCH_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 in textValue/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 the PCH/PWS/BAGGR/HVP signals also arrive (Tesla's PW3Query requests them); the BMS_* ones are V2024_06 only. (#421)
  • fix(tedapi): /api/site_info returned null for every field. It read config.json's top level, but these keys live under its site_info section. 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_setting stay null because config.json has no such settings. Validated live on 2x Powerwall 3. (#420)
  • fix: /api/status start_time and up_time_seconds now mean what they mean on a gateway (when it last started), or null where that isn't known. Before, every non-local backend put an install/commission date in start_time and null uptime, and cloud/FleetAPI reported a hard-coded git_hash and sync_type: "v2.1". Strict clients failed to parse the dates: evcc's go-powerwall reads start_time as 2006-01-02 15:04:05 -0700 and up_time_seconds as 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 unsigned msaSignals. null on sites without a sync board and under V2026_06. New TEDAPI.get_gateway_uptime(); vitals gain SYNC_Uptime on TESYNC. git_hash is 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 add installation_date, each passed through unchanged.
  • fix: strings() no longer modifies the dict returned by vitals(). On Powerwall 3, /vitals PVAC blocks no longer pick up PVS_String*_Connected keys after a /strings call; the keys remain in the PVS-- blocks and /strings. (#414)
  • fix(auth): interactive Tesla login and setup -fleetapi no longer print refresh/access tokens to the console. The pywebview backend also returns the populated token_data dict (fixes the empty-token behavior reported on Windows, #409). (#415, fixes #417 discussion)
  • docs: API.md describes the /api/status time 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. /vitals and /pw/vitals gain the PW3 battery health and inverter detail, /api/status reports truthful gateway start time/uptime, and /api/site_info is 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:

Don't miss a new pypowerwall release

NewReleases is sending notifications on new releases.