Skip to content

Releases: jasonacox/pypowerwall

v0.10.9 - TEDAPI Voltage & Current

21 Jul 23:17
87ae55a
Compare
Choose a tag to compare

What's Changed

  • Add computed voltage and current to /api/meters/aggregates from TEDAPI status data by @jasonacox in #107
  • Fix error in num_meters_aggregated calculation in aggregates.

Full Changelog: v0.10.8...v0.10.9

v0.10.8 - Firmware Version for TEDAPI

07 Jul 04:32
fcb24f0
Compare
Choose a tag to compare

What's Changed

  • TEDAPI functions for firmware version and PW3 by @jasonacox in #106
  • Add TEDAPI get_firmware_version() to poll Powerwall for firmware version. Discovered by @geptto in #97. This function has been integrated into pypowerwall existing APIs (e.g. pw.version())
  • Add TEDAPI get_components() and get_battery_block() functions which provide additional Powerwall 3 related device vital information for Powerwall 3 owners. Discovered by @lignumaqua in jasonacox/Powerwall-Dashboard#392 (comment). The plan it to integrate this data into the other device vitals payloads for PW3 systems (TODO).

Full Changelog: v0.10.7...v0.10.8

v0.10.7 - FleetAPI Energy History

07 Jul 03:37
f2d54f2
Compare
Choose a tag to compare

What's Changed

  • Add power history retrieval to FleetAPI by @jasonacox in #105
  • FleetAPI - Add get_history() and get_calendar_history() to return energy, power, soe, and other history data.
import pypowerwall

pw = pypowerwall.Powerwall(host=PW_HOST, email=PW_EMAIL, fleetapi=True)
pw.client.fleet.get_calendar_history(kind="soe")
pw.client.fleet.get_history(kind="power")

Full Changelog: v0.10.6...v0.10.7

v0.10.6 - pyLint Cleanup

16 Jun 04:44
6f0dbd1
Compare
Choose a tag to compare

What's Changed

  • Address pyLint cleanup and minor bug fixes by @jasonacox in #103
  • TEDAPI get_reserve() fix to address unscaled battery backup reserve level results.
  • Address pyLint Cleanup of Code.
  • Proxy: Command mode error handling.
  • Cloud Mode: Fix logic for selecting FleetAPI mode
  • Add request timeout settings to FleetAPI and TEDAPI calls.

Full Changelog: v0.10.5...v0.10.6

v0.10.5 - Minor Fixes

15 Jun 05:54
Compare
Choose a tag to compare

What's Changed

  • v0.10.5 - Minor Fixes by @jasonacox in #102
  • Fix for TEDAPI "full" (e.g. Powerwall 3) mode, including grid_status bug resulting in false reports of grid status, level() bug where data gap resulted in 0% state of charge and alerts() where data gap from tedapi resulted in a null alert.
  • Add TEDAPI API call locking to limit load caused by concurrent polling.
  • Proxy - Add battery full_pack and remaining energy data to /pod API call for all cases.

Full Changelog: v0.10.4...v0.10.5

0.10.4 - Powerwall 3 Local API Support

11 Jun 05:47
f23a83d
Compare
Choose a tag to compare

What's Changed

  • Add Powerwall 3 Local API Support by @jasonacox in #101
  • TEDAPI will activate in hybrid (using TEDAPI for vitals and existing local APIs for other metrics) or full (all data from TEDAPI) mode to provide better Powerwall 3 support.
  • The full mode will automatically activate when the customer password is blank and gw_pwd is set.
  • Note: The full mode will provide less metrics than hybrid mode since Powerwall 2/+ systems have additional APIs that are used in hybrid mode to fetch additional data
import pypowerwall

# Activate HYBRID mode (for Powerwall / 2 / + systems)
pw = pypowerwall.Powerwall("192.168.91.1", password=PASSWORD, email=EMAIL, gw_pwd=PW_GW_PWD)

# Activate FULL mode (for all systems including Powerwall 3)
pw = pypowerwall.Powerwall("192.168.91.1", gw_pwd=PW_GW_PWD)

Related:

Full Changelog: v0.10.3...v0.10.4

v0.10.3 - TEDAPI Connect Update

09 Jun 23:42
Compare
Choose a tag to compare

What's Changed

  • v0.10.3 - TEDAPI Connect by @jasonacox in #100
  • Update setup.py to include dependencies on protobuf>=3.20.0.
  • Fix TEDAPI connect() logic error to better validate PW3 Gateway endpoint access as raised in #97 by @ttl74ls100
  • Add documentation for TEDAPI setup.
  • Update CLI to support TEDAPI calls.
  • Proxy t60 - Fix edge case where /csv API will error due to NoneType inputs.
  • Add TEDAPI argument to set custom GW IP address.
# Connect to TEDAPI and pull data
python3 -m pypowerwall tedapi

# Direct call to TEDAPI class test function (optional password)
python3 -m pypowerwall.tedapi GWPASSWORD
python3 -m pypowerwall.tedapi --debug
python3 -m pypowerwall.tedapi --gw_ip 192.168.91.1 --debug

Full Changelog: v0.10.2...v0.10.3

v0.10.2 - FleetAPI Hotfix

09 Jun 04:06
2a6e971
Compare
Choose a tag to compare

What's Changed

  • Fix FleetAPI Setup by @jasonacox in #99 as raised in #98.
  • Update FleetAPI documentation and CLI usage.

Full Changelog: v0.10.1...v0.10.2

v0.10.1 - TEDAPI Vitals Hotfix

08 Jun 18:01
706afaf
Compare
Choose a tag to compare

What's Changed

  • v0.10.1 - TEDAPI Vitals Hotfix by @jasonacox in #96
  • Fix PVAC lookup error logic in TEDAPI class vitals() function.
  • Add alerts and other elements to PVAC TETHC TESYNC vitals.
  • Update vitals Neurio block to include correct location and adjust RealPower based on power scale factor.

Full Changelog: v0.10.0...v0.10.1

v0.10.0 - New Device Vitals

03 Jun 05:03
267d6c0
Compare
Choose a tag to compare

What's Changed

  • v0.10.0 - New Device Vitals by @jasonacox in #95
  • Add support for /tedapi API access on Gateway (requires connectivity to 192.168.91.1 GW and Gateway Password) with access to "config" and "status" data.
  • Adds drop-in replacement for depreciated /vitals API and payload using the new TEDAPI class. This allows easy access to Powerwall device vitals.
  • Proxy update to t58 to support TEDAPI with environmental variable PW_GW_PWD for Gateway Password. Also added FleetAPI, Cloud and TEDAPI specific GET calls, /fleetapi, /cloud, and /tedapi respectively.
# How to Activate the TEDAPI Mode
import pypowerwall

# You will need the Gateway/WiFi Password usually found on QR code on Gateway (not the customer password)
gw_pwd = "GW_PASSWORD" 

# Direct Connect to GW
host = "192.168.91.1" 
pw = pypowerwall.Powerwall(host,password,email,timezone,gw_pwd=gw_pwd)
print(pw.vitals())
# New TEDAPI Class
import pypowerwall.tedapi

tedapi = pypowerwall.tedapi.TEDAPI("GW_PASSWORD")

config = tedapi.get_config()
status = tedapi.get_status()

meterAggregates = status.get('control', {}).get('meterAggregates', [])
for meter in meterAggregates:
    location = meter.get('location', 'Unknown').title()
    realPowerW = int(meter.get('realPowerW', 0))
    print(f"   - {location}: {realPowerW}W")

Full Changelog: v0.9.1...v0.10.0