|
6 | 6 | import logging |
7 | 7 |
|
8 | 8 | import async_timeout |
| 9 | +from dateutil import tz |
9 | 10 | from dateutil.parser import parse |
10 | 11 | from defusedxml import ElementTree as etree |
11 | 12 | from munch import Munch |
@@ -721,7 +722,10 @@ def _appliance_measurements(self, appliance, data, measurements): |
721 | 722 | if appliance.find(i_locator) is not None: |
722 | 723 | name = f"{measurement}_interval" |
723 | 724 | 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] |
725 | 729 |
|
726 | 730 | return data |
727 | 731 |
|
@@ -1137,29 +1141,22 @@ def _create_lists_from_data(self, data, bs_list, s_list, sw_list): |
1137 | 1141 | """Helper-function for smile.py: _all_device_data(). |
1138 | 1142 | Create lists of binary_sensors, sensors, switches from the relevant data. |
1139 | 1143 | """ |
1140 | | - for _, value in list(data.items()): |
| 1144 | + for key, value in list(data.items()): |
1141 | 1145 | 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: |
1147 | 1147 | if self._active_device_present: |
1148 | 1148 | item[ATTR_STATE] = value |
1149 | 1149 | bs_list.append(item) |
1150 | 1150 | 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 |
1156 | 1157 | item[ATTR_STATE] = value |
1157 | 1158 | s_list.append(item) |
1158 | 1159 | 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: |
1164 | 1161 | item[ATTR_STATE] = value |
1165 | 1162 | sw_list.append(item) |
0 commit comments