Skip to content

Commit 2c8f5de

Browse files
committed
Add last_reset timestamp for interval-sensors - part 1
1 parent 50ba5d4 commit 2c8f5de

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

plugwise/helper.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import logging
77

88
import async_timeout
9+
from dateutil import tz
910
from dateutil.parser import parse
1011
from defusedxml import ElementTree as etree
1112
from munch import Munch
@@ -721,7 +722,10 @@ def _appliance_measurements(self, appliance, data, measurements):
721722
if appliance.find(i_locator) is not None:
722723
name = f"{measurement}_interval"
723724
measure = appliance.find(i_locator).text
724-
data[name] = format_measure(measure, ENERGY_WATT_HOUR)
725+
log_date = parse(appliance.find(i_locator).get("log_date"))
726+
log_date = log_date.astimezone(tz.gettz('UTC')).replace(tzinfo=None)
727+
log_date = log_date.strftime("%Y-%m-%d %H:%M:%S")
728+
data[name] = [format_measure(measure, ENERGY_WATT_HOUR), log_date]
725729

726730
return data
727731

@@ -1137,29 +1141,22 @@ def _create_lists_from_data(self, data, bs_list, s_list, sw_list):
11371141
"""Helper-function for smile.py: _all_device_data().
11381142
Create lists of binary_sensors, sensors, switches from the relevant data.
11391143
"""
1140-
for _, value in list(data.items()):
1144+
for key, value in list(data.items()):
11411145
for item in BINARY_SENSORS:
1142-
try:
1143-
data.pop(item[ATTR_ID])
1144-
except KeyError:
1145-
pass
1146-
else:
1146+
if item[ATTR_ID] == key:
11471147
if self._active_device_present:
11481148
item[ATTR_STATE] = value
11491149
bs_list.append(item)
11501150
for item in SENSORS:
1151-
try:
1152-
data.pop(item[ATTR_ID])
1153-
except KeyError:
1154-
pass
1155-
else:
1151+
if item[ATTR_ID] == key:
1152+
if "interval" in item[ATTR_ID]:
1153+
if type(value) is list:
1154+
log_date = value[1]
1155+
value = value[0]
1156+
item["last_reset"] = log_date
11561157
item[ATTR_STATE] = value
11571158
s_list.append(item)
11581159
for item in SWITCHES:
1159-
try:
1160-
data.pop(item[ATTR_ID])
1161-
except KeyError:
1162-
pass
1163-
else:
1160+
if item[ATTR_ID] == key:
11641161
item[ATTR_STATE] = value
11651162
sw_list.append(item)

0 commit comments

Comments
 (0)