Skip to content

Commit c75d32a

Browse files
committed
Convert Water Meter values
1 parent ddb551b commit c75d32a

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

toonapi/models.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
convert_kwh,
2121
convert_negative_none,
2222
convert_temperature,
23+
convert_m3,
24+
convert_lmin
2325
)
2426

2527

@@ -360,22 +362,23 @@ class WaterUsage:
360362
installed: Optional[bool] = None
361363
is_smart: Optional[bool] = None
362364
meter: Optional[int] = None
365+
day_cost: Optional[float] = None
363366

364367
last_updated_from_display: Optional[datetime] = None
365368
last_updated = datetime.utcnow()
366369

367370
def update_from_dict(self, data: Dict[str, Any]) -> None:
368371
"""Update this WaterUsage object with data from a dictionary."""
369-
self.average = process_data(data, "avgValue", self.average)
370-
self.current = process_data(data, "value", self.current)
371-
self.day_average = process_data(data, "avgDayValue", self.day_average)
372-
self.day_usage = process_data(data, "dayUsage", self.day_usage)
372+
self.average = process_data(data, "avgValue", self.average, convert_lmin)
373+
self.current = process_data(data, "value", self.current, convert_lmin)
374+
self.day_average = process_data(data, "avgDayValue", self.day_average, convert_m3)
375+
self.day_usage = process_data(data, "dayUsage", self.day_usage, convert_m3)
373376
self.installed = process_data(
374377
data, "installed", self.installed, convert_boolean
375378
)
376379
self.is_smart = process_data(data, "isSmart", self.is_smart, convert_boolean)
377-
self.meter = process_data(data, "meterReading", self.meter)
378-
380+
self.meter = process_data(data, "meterReading", self.meter, convert_m3)
381+
self.day_cost = process_data(data, "dayCost", self.day_cost)
379382
self.last_updated_from_display = process_data(
380383
data,
381384
"lastUpdatedFromDisplay",

toonapi/util.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,17 @@ def convert_cm3(value: int) -> Optional[float]:
4141
def convert_negative_none(value: int) -> Optional[int]:
4242
"""Convert an negative int value from the ToonAPI to a NoneType."""
4343
return None if value < 0 else value
44+
45+
46+
def convert_m3(value: int) -> Optional[float]:
47+
"""Convert a value from the ToonAPI to a M3 value."""
48+
if value is None:
49+
return None
50+
return round(float(value) / 1000.0, 2)
51+
52+
53+
def convert_lmin(value: int) -> Optional[float]:
54+
"""Convert a value from the ToonAPI to a L/MINUTE value."""
55+
if value is None:
56+
return None
57+
return round(float(value) / 60.0, 1)

0 commit comments

Comments
 (0)