plugwise 1.1.0a0__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plugwise-1.1.0a0 → plugwise-1.3.0}/PKG-INFO +1 -1
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/common.py +14 -9
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/constants.py +2 -2
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/data.py +9 -10
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/helper.py +10 -6
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/legacy/helper.py +5 -1
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/util.py +4 -1
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise.egg-info/PKG-INFO +1 -1
- {plugwise-1.1.0a0 → plugwise-1.3.0}/pyproject.toml +2 -2
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_adam.py +7 -7
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_anna.py +15 -15
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_p1.py +3 -3
- {plugwise-1.1.0a0 → plugwise-1.3.0}/LICENSE +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/README.md +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/__init__.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/exceptions.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/legacy/data.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/legacy/smile.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/py.typed +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise/smile.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise.egg-info/SOURCES.txt +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise.egg-info/dependency_links.txt +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise.egg-info/requires.txt +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/plugwise.egg-info/top_level.txt +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/setup.cfg +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/setup.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_generic.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_init.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_legacy_anna.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_legacy_generic.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_legacy_p1.py +0 -0
- {plugwise-1.1.0a0 → plugwise-1.3.0}/tests/test_legacy_stretch.py +0 -0
@@ -52,6 +52,7 @@ class SmileCommon:
|
|
52
52
|
self,
|
53
53
|
appl: Munch,
|
54
54
|
xml_1: etree,
|
55
|
+
legacy: bool,
|
55
56
|
xml_2: etree = None,
|
56
57
|
xml_3: etree = None,
|
57
58
|
) -> Munch:
|
@@ -68,8 +69,8 @@ class SmileCommon:
|
|
68
69
|
# Info for On-Off device
|
69
70
|
if self._on_off_device:
|
70
71
|
appl.name = "OnOff" # pragma: no cover
|
71
|
-
appl.vendor_name = None # pragma: no cover
|
72
72
|
appl.model = "Unknown" # pragma: no cover
|
73
|
+
appl.vendor_name = None # pragma: no cover
|
73
74
|
return appl # pragma: no cover
|
74
75
|
|
75
76
|
# Info for OpenTherm device
|
@@ -85,13 +86,12 @@ class SmileCommon:
|
|
85
86
|
module_data = self._get_module_data(xml_1, locator_2, mod_type, xml_3)
|
86
87
|
appl.vendor_name = module_data["vendor_name"]
|
87
88
|
appl.hardware = module_data["hardware_version"]
|
88
|
-
appl.
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
)
|
89
|
+
appl.model_id = module_data["vendor_model"] if not legacy else None
|
90
|
+
appl.model = (
|
91
|
+
"Generic heater/cooler"
|
92
|
+
if self._cooling_present
|
93
|
+
else "Generic heater"
|
94
|
+
)
|
95
95
|
|
96
96
|
return appl
|
97
97
|
|
@@ -102,7 +102,11 @@ class SmileCommon:
|
|
102
102
|
xml_2 = return_valid(xml_2, self._domain_objects)
|
103
103
|
module_data = self._get_module_data(xml_1, locator, mod_type, xml_2)
|
104
104
|
appl.vendor_name = module_data["vendor_name"]
|
105
|
-
appl.model =
|
105
|
+
appl.model = module_data["vendor_model"]
|
106
|
+
if appl.model != "ThermoTouch": # model_id for Anna not present as stand-alone device
|
107
|
+
appl.model_id = appl.model
|
108
|
+
appl.model = check_model(appl.model, appl.vendor_name)
|
109
|
+
|
106
110
|
appl.hardware = module_data["hardware_version"]
|
107
111
|
appl.firmware = module_data["firmware_version"]
|
108
112
|
appl.zigbee_mac = module_data["zigbee_mac_address"]
|
@@ -197,6 +201,7 @@ class SmileCommon:
|
|
197
201
|
"location": appl.location,
|
198
202
|
"mac_address": appl.mac,
|
199
203
|
"model": appl.model,
|
204
|
+
"model_id": appl.model_id,
|
200
205
|
"name": appl.name,
|
201
206
|
"zigbee_mac_address": appl.zigbee_mac,
|
202
207
|
"vendor": appl.vendor_name,
|
@@ -258,13 +258,13 @@ ApplianceType = Literal[
|
|
258
258
|
]
|
259
259
|
|
260
260
|
BinarySensorType = Literal[
|
261
|
-
"battery_state",
|
262
261
|
"compressor_state",
|
263
262
|
"cooling_enabled",
|
264
263
|
"cooling_state",
|
265
264
|
"dhw_state",
|
266
265
|
"flame_state",
|
267
266
|
"heating_state",
|
267
|
+
"low_battery",
|
268
268
|
"plugwise_notification",
|
269
269
|
"secondary_boiler_state",
|
270
270
|
]
|
@@ -410,13 +410,13 @@ class ModelData(TypedDict):
|
|
410
410
|
class SmileBinarySensors(TypedDict, total=False):
|
411
411
|
"""Smile Binary Sensors class."""
|
412
412
|
|
413
|
-
battery_state: bool
|
414
413
|
compressor_state: bool
|
415
414
|
cooling_enabled: bool
|
416
415
|
cooling_state: bool
|
417
416
|
dhw_state: bool
|
418
417
|
flame_state: bool
|
419
418
|
heating_state: bool
|
419
|
+
low_battery: bool
|
420
420
|
plugwise_notification: bool
|
421
421
|
secondary_boiler_state: bool
|
422
422
|
|
@@ -62,25 +62,21 @@ class SmileData(SmileHelper):
|
|
62
62
|
self._add_or_update_notifications(device_id, device, data)
|
63
63
|
|
64
64
|
device.update(data)
|
65
|
-
|
66
65
|
is_battery_low = (
|
67
66
|
mac_list
|
68
|
-
and "
|
67
|
+
and "low_battery" in device["binary_sensors"]
|
69
68
|
and device["zigbee_mac_address"] in mac_list
|
70
|
-
and (
|
71
|
-
(device["dev_class"] in ("thermo_sensor", "thermostatic_radiator_valve") and device["sensors"]["battery"] < 30)
|
72
|
-
or (device["dev_class"] in ("zone_thermometer", "zone_thermostat") and device["sensors"]["battery"] < 15)
|
73
|
-
)
|
69
|
+
and device["dev_class"] in ("thermo_sensor", "thermostatic_radiator_valve", "zone_thermometer", "zone_thermostat")
|
74
70
|
)
|
75
71
|
if is_battery_low:
|
76
|
-
device["binary_sensors"]["
|
72
|
+
device["binary_sensors"]["low_battery"] = True
|
77
73
|
|
78
74
|
self._update_for_cooling(device)
|
79
75
|
|
80
76
|
remove_empty_platform_dicts(device)
|
81
77
|
|
82
78
|
def _detect_low_batteries(self) -> list[str]:
|
83
|
-
"""Helper-function updating the
|
79
|
+
"""Helper-function updating the low-battery binary_sensor status from a Battery-is-low message."""
|
84
80
|
mac_address_list: list[str] = []
|
85
81
|
mac_pattern = re.compile(r"(?:[0-9A-F]{2}){8}")
|
86
82
|
matches = ["Battery", "below"]
|
@@ -88,12 +84,15 @@ class SmileData(SmileHelper):
|
|
88
84
|
for msg_id, notification in list(self._notifications.items()):
|
89
85
|
mac_address: str | None = None
|
90
86
|
message: str | None = notification.get("message")
|
91
|
-
|
87
|
+
warning: str | None = notification.get("warning")
|
88
|
+
notify = message or warning
|
89
|
+
if notify is not None and all(x in notify for x in matches) and (mac_addresses := mac_pattern.findall(notify)):
|
92
90
|
mac_address = mac_addresses[0] # re.findall() outputs a list
|
93
91
|
|
94
92
|
if mac_address is not None:
|
95
|
-
self._notifications.pop(msg_id)
|
96
93
|
mac_address_list.append(mac_address)
|
94
|
+
if message is not None: # only block message-type notifications
|
95
|
+
self._notifications.pop(msg_id)
|
97
96
|
|
98
97
|
return mac_address_list
|
99
98
|
|
@@ -285,7 +285,8 @@ class SmileHelper(SmileCommon):
|
|
285
285
|
|
286
286
|
appl.dev_id = appliance.attrib["id"]
|
287
287
|
appl.name = appliance.find("name").text
|
288
|
-
appl.model =
|
288
|
+
appl.model = None
|
289
|
+
appl.model_id = None
|
289
290
|
appl.firmware = None
|
290
291
|
appl.hardware = None
|
291
292
|
appl.mac = None
|
@@ -350,7 +351,8 @@ class SmileHelper(SmileCommon):
|
|
350
351
|
appl.dev_id = self.gateway_id
|
351
352
|
appl.location = loc_id
|
352
353
|
appl.mac = None
|
353
|
-
appl.model = self.
|
354
|
+
appl.model = self._domain_objects.find("./gateway/vendor_model").text
|
355
|
+
appl.model_id = None
|
354
356
|
appl.name = "P1"
|
355
357
|
appl.pwclass = "smartmeter"
|
356
358
|
appl.zigbee_mac = None
|
@@ -370,7 +372,7 @@ class SmileHelper(SmileCommon):
|
|
370
372
|
return self._appl_thermostat_info(appl, appliance)
|
371
373
|
case "heater_central":
|
372
374
|
# Collect heater_central device info
|
373
|
-
self._appl_heater_central_info(appl, appliance)
|
375
|
+
self._appl_heater_central_info(appl, appliance, False) # False means non-legacy device
|
374
376
|
self._appl_dhw_mode_info(appl, appliance)
|
375
377
|
return appl
|
376
378
|
case _:
|
@@ -380,14 +382,14 @@ class SmileHelper(SmileCommon):
|
|
380
382
|
def _energy_device_info_finder(self, appl: Munch, appliance: etree) -> Munch:
|
381
383
|
"""Helper-function for _appliance_info_finder().
|
382
384
|
|
383
|
-
Collect energy device info (Smartmeter
|
385
|
+
Collect energy device info (Smartmeter): firmware, model and vendor name.
|
384
386
|
"""
|
385
387
|
if self.smile_type == "power":
|
386
388
|
locator = "./logs/point_log/electricity_point_meter"
|
387
389
|
mod_type = "electricity_point_meter"
|
388
390
|
module_data = self._get_module_data(appliance, locator, mod_type)
|
389
391
|
appl.hardware = module_data["hardware_version"]
|
390
|
-
appl.model = module_data["vendor_model"]
|
392
|
+
appl.model = module_data["vendor_model"] # don't use model_id for Smartmeter
|
391
393
|
appl.vendor_name = module_data["vendor_name"]
|
392
394
|
appl.firmware = module_data["firmware_version"]
|
393
395
|
|
@@ -403,7 +405,8 @@ class SmileHelper(SmileCommon):
|
|
403
405
|
return None
|
404
406
|
|
405
407
|
appl.vendor_name = module_data["vendor_name"]
|
406
|
-
appl.
|
408
|
+
appl.model_id = module_data["vendor_model"]
|
409
|
+
appl.model = check_model(appl.model_id, appl.vendor_name)
|
407
410
|
appl.hardware = module_data["hardware_version"]
|
408
411
|
appl.firmware = module_data["firmware_version"]
|
409
412
|
|
@@ -418,6 +421,7 @@ class SmileHelper(SmileCommon):
|
|
418
421
|
appl.hardware = self.smile_hw_version
|
419
422
|
appl.mac = self.smile_mac_address
|
420
423
|
appl.model = self.smile_model
|
424
|
+
appl.model_id = self._domain_objects.find("./gateway/vendor_model").text
|
421
425
|
appl.name = self.smile_name
|
422
426
|
appl.vendor_name = "Plugwise"
|
423
427
|
|
@@ -117,6 +117,7 @@ class SmileLegacyHelper(SmileCommon):
|
|
117
117
|
appl.dev_id = appliance.attrib["id"]
|
118
118
|
appl.name = appliance.find("name").text
|
119
119
|
appl.model = appl.pwclass.replace("_", " ").title()
|
120
|
+
appl.model_id = None
|
120
121
|
appl.firmware = None
|
121
122
|
appl.hardware = None
|
122
123
|
appl.mac = None
|
@@ -207,7 +208,9 @@ class SmileLegacyHelper(SmileCommon):
|
|
207
208
|
return self._appl_thermostat_info(appl, appliance, self._modules)
|
208
209
|
# Collect heater_central device info
|
209
210
|
case "heater_central":
|
210
|
-
return self._appl_heater_central_info(
|
211
|
+
return self._appl_heater_central_info(
|
212
|
+
appl, appliance, True, self._appliances, self._modules
|
213
|
+
) # True means legacy device
|
211
214
|
# Collect info from Stretches
|
212
215
|
case _:
|
213
216
|
return self._energy_device_info_finder(appliance, appl)
|
@@ -246,6 +249,7 @@ class SmileLegacyHelper(SmileCommon):
|
|
246
249
|
appl.location = loc_id
|
247
250
|
appl.mac = None
|
248
251
|
appl.model = self.smile_model
|
252
|
+
appl.model_id = None
|
249
253
|
appl.name = "P1"
|
250
254
|
appl.pwclass = "smartmeter"
|
251
255
|
appl.zigbee_mac = None
|
@@ -110,6 +110,9 @@ def check_model(name: str | None, vendor_name: str | None) -> str | None:
|
|
110
110
|
if vendor_name == "Plugwise" and ((model := version_to_model(name)) != "Unknown"):
|
111
111
|
return model
|
112
112
|
|
113
|
+
if name is not None and "lumi.plug" in name:
|
114
|
+
return "Aqara Smart Plug"
|
115
|
+
|
113
116
|
return name
|
114
117
|
|
115
118
|
|
@@ -139,7 +142,7 @@ def common_match_cases(
|
|
139
142
|
data[sp_key] = value
|
140
143
|
|
141
144
|
if "battery" in data["sensors"]:
|
142
|
-
data["binary_sensors"]["
|
145
|
+
data["binary_sensors"]["low_battery"] = False
|
143
146
|
|
144
147
|
|
145
148
|
def escape_illegal_xml_characters(xmldata: str) -> str:
|
@@ -1,10 +1,10 @@
|
|
1
1
|
[build-system]
|
2
|
-
requires = ["setuptools~=
|
2
|
+
requires = ["setuptools~=74.0", "wheel~=0.44.0"]
|
3
3
|
build-backend = "setuptools.build_meta"
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "plugwise"
|
7
|
-
version = "1.
|
7
|
+
version = "1.3.0"
|
8
8
|
license = {file = "LICENSE"}
|
9
9
|
description = "Plugwise Smile (Adam/Anna/P1) and Stretch module for Python 3."
|
10
10
|
readme = "README.md"
|
@@ -36,7 +36,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
36
36
|
assert smile.gateway_id == "da224107914542988a88561b4452b0f6"
|
37
37
|
assert smile._last_active["f2bf9048bef64cc5b6d5110154e33c81"] == "Weekschema"
|
38
38
|
assert smile._last_active["f871b8c4d63549319221e294e4f88074"] == "Badkamer"
|
39
|
-
assert self.device_items ==
|
39
|
+
assert self.device_items == 157
|
40
40
|
assert self.device_list == [
|
41
41
|
"da224107914542988a88561b4452b0f6",
|
42
42
|
"056ee145a816487eaa69243c3280f8bf",
|
@@ -186,7 +186,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
186
186
|
assert smile._last_active["82fa13f017d240daa0d0ea1775420f24"] == CV_JESSIE
|
187
187
|
assert smile._last_active["08963fec7c53423ca5680aa4cb502c63"] == BADKAMER_SCHEMA
|
188
188
|
assert smile._last_active["446ac08dd04d4eff8ac57489757b7314"] == BADKAMER_SCHEMA
|
189
|
-
assert self.device_items ==
|
189
|
+
assert self.device_items == 340
|
190
190
|
|
191
191
|
assert "af82e4ccf9c548528166d38e560662a4" in self.notifications
|
192
192
|
await smile.delete_notification()
|
@@ -264,7 +264,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
264
264
|
assert smile._last_active["82fa13f017d240daa0d0ea1775420f24"] == CV_JESSIE
|
265
265
|
assert smile._last_active["08963fec7c53423ca5680aa4cb502c63"] == BADKAMER_SCHEMA
|
266
266
|
assert smile._last_active["446ac08dd04d4eff8ac57489757b7314"] == BADKAMER_SCHEMA
|
267
|
-
assert self.device_items ==
|
267
|
+
assert self.device_items == 340
|
268
268
|
|
269
269
|
assert "af82e4ccf9c548528166d38e560662a4" in self.notifications
|
270
270
|
|
@@ -302,7 +302,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
302
302
|
assert smile._last_active["a562019b0b1f47a4bde8ebe3dbe3e8a9"] == WERKDAG_SCHEMA
|
303
303
|
assert smile._last_active["8cf650a4c10c44819e426bed406aec34"] == WERKDAG_SCHEMA
|
304
304
|
assert smile._last_active["5cc21042f87f4b4c94ccb5537c47a53f"] == WERKDAG_SCHEMA
|
305
|
-
assert self.device_items ==
|
305
|
+
assert self.device_items == 439
|
306
306
|
|
307
307
|
await smile.close_connection()
|
308
308
|
await self.disconnect(server, client)
|
@@ -323,7 +323,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
323
323
|
)
|
324
324
|
|
325
325
|
await self.device_test(smile, "2022-01-02 00:00:01", testdata)
|
326
|
-
assert self.device_items ==
|
326
|
+
assert self.device_items == 58
|
327
327
|
assert self.cooling_present
|
328
328
|
# assert self._cooling_enabled - no cooling_enabled indication present
|
329
329
|
|
@@ -348,7 +348,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
348
348
|
await self.device_test(smile, "2020-03-22 00:00:01", testdata)
|
349
349
|
assert smile.gateway_id == "b128b4bbbd1f47e9bf4d756e8fb5ee94"
|
350
350
|
assert smile._last_active["009490cc2f674ce6b576863fbb64f867"] == "Weekschema"
|
351
|
-
assert self.device_items ==
|
351
|
+
assert self.device_items == 73
|
352
352
|
assert "6fb89e35caeb4b1cb275184895202d84" in self.notifications
|
353
353
|
|
354
354
|
result = await self.tinker_thermostat(
|
@@ -392,7 +392,7 @@ class TestPlugwiseAdam(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
392
392
|
assert smile._last_active["06aecb3d00354375924f50c47af36bd2"] is None
|
393
393
|
assert smile._last_active["d27aede973b54be484f6842d1b2802ad"] is None
|
394
394
|
assert smile._last_active["13228dab8ce04617af318a2888b3c548"] is None
|
395
|
-
assert self.device_items ==
|
395
|
+
assert self.device_items == 228
|
396
396
|
|
397
397
|
# Negative test
|
398
398
|
result = await self.tinker_thermostat(
|
@@ -30,7 +30,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
30
30
|
await self.device_test(smile, "2020-04-05 00:00:01", testdata)
|
31
31
|
assert smile.gateway_id == "0466eae8520144c78afb29628384edeb"
|
32
32
|
assert smile._last_active["eb5309212bf5407bb143e5bfa3b18aee"] == "Standaard"
|
33
|
-
assert self.device_items ==
|
33
|
+
assert self.device_items == 58
|
34
34
|
assert not self.notifications
|
35
35
|
|
36
36
|
assert not self.cooling_present
|
@@ -105,7 +105,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
105
105
|
|
106
106
|
await self.device_test(smile, "2020-04-05 00:00:01", testdata)
|
107
107
|
assert smile._last_active["eb5309212bf5407bb143e5bfa3b18aee"] == "Standaard"
|
108
|
-
assert self.device_items ==
|
108
|
+
assert self.device_items == 58
|
109
109
|
assert not self.notifications
|
110
110
|
|
111
111
|
result = await self.tinker_thermostat(
|
@@ -138,7 +138,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
138
138
|
)
|
139
139
|
|
140
140
|
await self.device_test(smile, "2020-04-05 00:00:01", testdata)
|
141
|
-
assert self.device_items ==
|
141
|
+
assert self.device_items == 58
|
142
142
|
|
143
143
|
result = await self.tinker_thermostat(
|
144
144
|
smile,
|
@@ -167,7 +167,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
167
167
|
|
168
168
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
169
169
|
assert smile._last_active["c34c6864216446528e95d88985e714cc"] == "Normaal"
|
170
|
-
assert self.device_items ==
|
170
|
+
assert self.device_items == 39
|
171
171
|
assert not self.notifications
|
172
172
|
|
173
173
|
result = await self.tinker_thermostat(
|
@@ -196,7 +196,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
196
196
|
await self.device_test(smile, "2020-04-12 00:00:01", testdata)
|
197
197
|
assert smile.gateway_id == "015ae9ea3f964e668e490fa39da3870b"
|
198
198
|
assert smile._last_active["c784ee9fdab44e1395b8dee7d7a497d5"] == "standaard"
|
199
|
-
assert self.device_items ==
|
199
|
+
assert self.device_items == 67
|
200
200
|
assert not self.notifications
|
201
201
|
assert self.cooling_present
|
202
202
|
assert not self._cooling_enabled
|
@@ -225,7 +225,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
225
225
|
await self.device_test(
|
226
226
|
smile, "2020-04-13 00:00:01", testdata_updated, initialize=False
|
227
227
|
)
|
228
|
-
assert self.device_items ==
|
228
|
+
assert self.device_items == 64
|
229
229
|
await smile.close_connection()
|
230
230
|
await self.disconnect(server, client)
|
231
231
|
|
@@ -251,7 +251,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
251
251
|
|
252
252
|
await self.device_test(smile, "2020-04-19 00:00:01", testdata)
|
253
253
|
assert smile._last_active["c784ee9fdab44e1395b8dee7d7a497d5"] == "standaard"
|
254
|
-
assert self.device_items ==
|
254
|
+
assert self.device_items == 64
|
255
255
|
assert self.cooling_present
|
256
256
|
assert not self.notifications
|
257
257
|
|
@@ -296,7 +296,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
296
296
|
)
|
297
297
|
|
298
298
|
await self.device_test(smile, "2020-04-19 00:00:01", testdata)
|
299
|
-
assert self.device_items ==
|
299
|
+
assert self.device_items == 64
|
300
300
|
assert self.cooling_present
|
301
301
|
assert self._cooling_enabled
|
302
302
|
assert self._cooling_active
|
@@ -323,7 +323,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
323
323
|
await self.device_test(smile, "2020-04-12 00:00:01", testdata)
|
324
324
|
assert smile.gateway_id == "015ae9ea3f964e668e490fa39da3870b"
|
325
325
|
assert smile._last_active["c784ee9fdab44e1395b8dee7d7a497d5"] == "standaard"
|
326
|
-
assert self.device_items ==
|
326
|
+
assert self.device_items == 63
|
327
327
|
assert not self.notifications
|
328
328
|
assert not self.cooling_present
|
329
329
|
|
@@ -350,7 +350,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
350
350
|
smile._last_active["d3ce834534114348be628b61b26d9220"]
|
351
351
|
== THERMOSTAT_SCHEDULE
|
352
352
|
)
|
353
|
-
assert self.device_items ==
|
353
|
+
assert self.device_items == 63
|
354
354
|
assert smile.gateway_id == "fb49af122f6e4b0f91267e1cf7666d6f"
|
355
355
|
assert self.cooling_present
|
356
356
|
assert not self._cooling_enabled
|
@@ -375,7 +375,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
375
375
|
)
|
376
376
|
assert self.cooling_present
|
377
377
|
assert not self._cooling_enabled
|
378
|
-
assert self.device_items ==
|
378
|
+
assert self.device_items == 63
|
379
379
|
|
380
380
|
await smile.close_connection()
|
381
381
|
await self.disconnect(server, client)
|
@@ -404,7 +404,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
404
404
|
smile._last_active["d3ce834534114348be628b61b26d9220"]
|
405
405
|
== THERMOSTAT_SCHEDULE
|
406
406
|
)
|
407
|
-
assert self.device_items ==
|
407
|
+
assert self.device_items == 63
|
408
408
|
assert not self.notifications
|
409
409
|
|
410
410
|
assert self.cooling_present
|
@@ -431,7 +431,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
431
431
|
|
432
432
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
433
433
|
assert smile._last_active["15da035090b847e7a21f93e08c015ebc"] == "Winter"
|
434
|
-
assert self.device_items ==
|
434
|
+
assert self.device_items == 66
|
435
435
|
assert self.cooling_present
|
436
436
|
assert not self._cooling_enabled
|
437
437
|
|
@@ -497,7 +497,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
497
497
|
|
498
498
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
499
499
|
assert smile._last_active["15da035090b847e7a21f93e08c015ebc"] == "Winter"
|
500
|
-
assert self.device_items ==
|
500
|
+
assert self.device_items == 66
|
501
501
|
assert self.cooling_present
|
502
502
|
assert self._cooling_enabled
|
503
503
|
|
@@ -520,7 +520,7 @@ class TestPlugwiseAnna(TestPlugwise): # pylint: disable=attribute-defined-outsi
|
|
520
520
|
)
|
521
521
|
|
522
522
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
523
|
-
assert self.device_items ==
|
523
|
+
assert self.device_items == 66
|
524
524
|
assert self.cooling_present
|
525
525
|
assert not self._cooling_enabled
|
526
526
|
|
@@ -28,7 +28,7 @@ class TestPlugwiseP1(TestPlugwise): # pylint: disable=attribute-defined-outside
|
|
28
28
|
|
29
29
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
30
30
|
assert smile.gateway_id == "a455b61e52394b2db5081ce025a430f3"
|
31
|
-
assert self.device_items ==
|
31
|
+
assert self.device_items == 30
|
32
32
|
assert "97a04c0c263049b29350a660b4cdd01e" in self.notifications
|
33
33
|
|
34
34
|
await smile.close_connection()
|
@@ -52,7 +52,7 @@ class TestPlugwiseP1(TestPlugwise): # pylint: disable=attribute-defined-outside
|
|
52
52
|
|
53
53
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
54
54
|
assert smile.gateway_id == "a455b61e52394b2db5081ce025a430f3"
|
55
|
-
assert self.device_items ==
|
55
|
+
assert self.device_items == 32
|
56
56
|
assert not self.notifications
|
57
57
|
|
58
58
|
# Now change some data and change directory reading xml from
|
@@ -86,7 +86,7 @@ class TestPlugwiseP1(TestPlugwise): # pylint: disable=attribute-defined-outside
|
|
86
86
|
|
87
87
|
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
|
88
88
|
assert smile.gateway_id == "03e65b16e4b247a29ae0d75a78cb492e"
|
89
|
-
assert self.device_items ==
|
89
|
+
assert self.device_items == 41
|
90
90
|
assert self.notifications
|
91
91
|
|
92
92
|
await smile.close_connection()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|