Skip to content

Commit

Permalink
Merge pull request #105 from jasonacox/v0.10.7
Browse files Browse the repository at this point in the history
Add power history retrieval to FleetAPI
  • Loading branch information
jasonacox committed Jul 7, 2024
2 parents da83ed7 + 0770d7d commit f2d54f2
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
12 changes: 12 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# RELEASE NOTES

## v0.10.7 - Energy History

* FleetAPI - Add `get_history()` and `get_calendar_history()` to return energy, power, soe, and other history data.

```python
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")
```

## v0.10.6 - pyLint Cleanup

* Minor Bug Fixes - TEDAPI get_reserve() fix to address unscaled results.
Expand Down
2 changes: 1 addition & 1 deletion pypowerwall/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
from typing import Union, Optional
import time

version_tuple = (0, 10, 6)
version_tuple = (0, 10, 7)
version = __version__ = '%d.%d.%d' % version_tuple
__author__ = 'jasonacox'

Expand Down
34 changes: 34 additions & 0 deletions pypowerwall/fleetapi/fleetapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
get_site_info() - get site info
get_battery_reserve() - get battery reserve level
get_operating_mode() - get operating mode
get_history() - get energy history
get_calendar_history() - get calendar history
solar_power() - get solar power
grid_power() - get grid power
battery_power() - get battery power
Expand Down Expand Up @@ -462,6 +464,38 @@ def get_products(self, force=False):
log.debug(f"get_products: {payload}")
return self.keyval(payload, "response")

def get_calendar_history(self, kind=None, duration=None, time_zone=None,
start=None, end=None):
""" Get energy history
kind: power, soe, energy, backup, self_consumption,
time_of_use_energy, savings
duration: day, week, month, year, lifetime
time_zone: America/Los_Angeles
start: 2024-05-01T00:00:00-07:00 (RFC3339 format)
end: 2024-05-01T23:59:59-07:00
"""
return self.get_history(kind, duration, time_zone,
start, end, "calendar_history")

def get_history(self, kind=None, duration=None, time_zone=None,
start=None, end=None, history="history"):
""" Get energy history
kind: power, energy, backup, self_consumption
duration: day, week, month, year, lifetime
time_zone: America/Los_Angeles
start: 2024-05-01T00:00:00-07:00 (RFC3339 format)
end: 2024-05-01T23:59:59-07:00
"""
if not self.site_id:
return None
arg_kind = f"kind={kind}&" if kind else ""
arg_duration = f"period={duration}&" if duration else ""
arg_time_zone = f"time_zone={time_zone}" if time_zone else ""
arg_start = f"start={start}&" if start else ""
arg_end = f"end={end}&" if end else ""
h = self.poll(f"api/1/energy_sites/{self.site_id}/{history}?{arg_kind}{arg_duration}{arg_time_zone}{arg_start}{arg_end}")
return self.keyval(h, "response")

def set_battery_reserve(self, reserve: int):
if reserve < 0 or reserve > 100:
log.debug(f"Invalid reserve level: {reserve}")
Expand Down

0 comments on commit f2d54f2

Please sign in to comment.