Skip to content

Commit

Permalink
Add support for watering reports. (#101)
Browse files Browse the repository at this point in the history
* Add support for watering reports.

* Cleaned up the schema a bit.
  • Loading branch information
thomaskistler authored Dec 17, 2023
1 parent 743946e commit 3d9e9b3
Show file tree
Hide file tree
Showing 3 changed files with 407 additions and 49 deletions.
24 changes: 24 additions & 0 deletions pydrawise/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
SensorFlowSummary,
StatusCodeAndSummary,
User,
WateringReportEntry,
Zone,
ZoneSuspension,
)
Expand Down Expand Up @@ -321,3 +322,26 @@ async def get_water_flow_summary(
f"Sensor with id={sensor.id} does not have any flow information"
)
return deserialize(SensorFlowSummary, sensors[0]["flowSummary"])

async def get_watering_report(
self, controller: Controller, start: datetime, end: datetime
) -> list[WateringReportEntry]:
"""Retrieves a watering report for the given controller and time period.
:param controller: The controller whose watering report to generate.
:param start: Start time.
:param end: End time."""
selector = self._schema.Query.controller(controllerId=controller.id).select(
self._schema.Controller.reports.select(
self._schema.Reports.watering(
**{
"from": DateTime.to_json(start).timestamp,
"until": DateTime.to_json(end).timestamp,
}
).select(*get_selectors(self._schema, WateringReportEntry)),
),
)
result = await self._query(selector)
return deserialize(
list[WateringReportEntry], result["controller"]["reports"]["watering"]
)
Loading

0 comments on commit 3d9e9b3

Please # to comment.