plugwise 1.7.8a1__py3-none-any.whl → 1.8.0__py3-none-any.whl

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/common.py CHANGED
@@ -145,8 +145,8 @@ class SmileCommon:
145
145
  "model": appl.model,
146
146
  "model_id": appl.model_id,
147
147
  "name": appl.name,
148
- "zigbee_mac_address": appl.zigbee_mac,
149
148
  "vendor": appl.vendor_name,
149
+ "zigbee_mac_address": appl.zigbee_mac,
150
150
  }.items():
151
151
  if value is not None or key == "location":
152
152
  appl_key = cast(ApplianceType, key)
@@ -205,7 +205,7 @@ class SmileCommon:
205
205
  "members": members,
206
206
  "vendor": "Plugwise",
207
207
  }
208
- self._count += 4
208
+ self._count += 5
209
209
 
210
210
  return switch_groups
211
211
 
plugwise/constants.py CHANGED
@@ -50,6 +50,7 @@ HW_MODELS: Final[dict[str, str]] = {
50
50
  "158-01": "Lisa",
51
51
  "160-01": "Plug",
52
52
  "168-01": "Jip",
53
+ "170-01": "Emma",
53
54
  "038500": "Stick",
54
55
  "070085": "Stick",
55
56
  "120002": "Stick Legrand",
@@ -553,7 +554,7 @@ class GwEntityData(TypedDict, total=False):
553
554
  preset_modes: list[str] | None
554
555
  # Schedules:
555
556
  available_schedules: list[str]
556
- select_schedule: str
557
+ select_schedule: str | None
557
558
 
558
559
  climate_mode: str
559
560
  # Extra for Adam Master Thermostats
plugwise/data.py CHANGED
@@ -268,11 +268,13 @@ class SmileData(SmileHelper):
268
268
  data["active_preset"] = self._preset(loc_id)
269
269
 
270
270
  # Schedule
271
+ data["available_schedules"] = []
272
+ data["select_schedule"] = None
273
+ self._count += 2
271
274
  avail_schedules, sel_schedule = self._schedules(loc_id)
272
275
  if avail_schedules != [NONE]:
273
276
  data["available_schedules"] = avail_schedules
274
277
  data["select_schedule"] = sel_schedule
275
- self._count += 2
276
278
 
277
279
  # Set HA climate HVACMode: auto, heat, heat_cool, cool and off
278
280
  data["climate_mode"] = "auto"
plugwise/helper.py CHANGED
@@ -411,7 +411,8 @@ class SmileHelper(SmileCommon):
411
411
  case "elga_status_code":
412
412
  data["elga_status_code"] = int(appl_p_loc.text)
413
413
  case "select_dhw_mode":
414
- data["select_dhw_mode"] = appl_p_loc.text
414
+ if self._dhw_allowed_modes:
415
+ data["select_dhw_mode"] = appl_p_loc.text
415
416
 
416
417
  common_match_cases(measurement, attrs, appl_p_loc, data)
417
418
 
@@ -522,7 +523,7 @@ class SmileHelper(SmileCommon):
522
523
 
523
524
  Collect the requested gateway mode.
524
525
  """
525
- if not (self.check_name(ADAM) and entity_id == self._gateway_id):
526
+ if not (entity_id == self._gateway_id and self.check_name(ADAM)):
526
527
  return None
527
528
 
528
529
  if (search := search_actuator_functionalities(appliance, key)) is not None:
@@ -535,29 +536,31 @@ class SmileHelper(SmileCommon):
535
536
  ) -> None:
536
537
  """Helper-function for _get_measurement_data().
537
538
 
538
- Adam: collect the gateway regulation_mode.
539
+ Adam gateway: collect the gateway regulation_mode.
539
540
  """
540
541
  if (
541
542
  mode := self._get_actuator_mode(
542
543
  appliance, entity_id, "regulation_mode_control_functionality"
543
544
  )
544
545
  ) is not None:
545
- data["select_regulation_mode"] = mode
546
- self._count += 1
546
+ # Below line needs to be here to set the boolean for both older and recent Adam firmware versions
547
547
  self._cooling_enabled = mode == "cooling"
548
+ if self._reg_allowed_modes:
549
+ data["select_regulation_mode"] = mode
550
+ self._count += 1
548
551
 
549
552
  def _get_gateway_mode(
550
553
  self, appliance: etree.Element, entity_id: str, data: GwEntityData
551
554
  ) -> None:
552
555
  """Helper-function for _get_measurement_data().
553
556
 
554
- Adam: collect the gateway mode.
557
+ Adam gateway: collect the gateway mode.
555
558
  """
556
559
  if (
557
560
  mode := self._get_actuator_mode(
558
561
  appliance, entity_id, "gateway_mode_control_functionality"
559
562
  )
560
- ) is not None:
563
+ ) is not None and self._gw_allowed_modes:
561
564
  data["select_gateway_mode"] = mode
562
565
  self._count += 1
563
566
 
@@ -718,7 +721,7 @@ class SmileHelper(SmileCommon):
718
721
  },
719
722
  "vendor": "Plugwise",
720
723
  }
721
- self._count += 3
724
+ self._count += 5
722
725
 
723
726
  def _match_locations(self) -> dict[str, ThermoLoc]:
724
727
  """Helper-function for _scan_thermostats().
plugwise/legacy/data.py CHANGED
@@ -67,11 +67,13 @@ class SmileLegacyData(SmileLegacyHelper):
67
67
  data["active_preset"] = self._preset()
68
68
 
69
69
  # Schedule
70
+ data["available_schedules"] = []
71
+ data["select_schedule"] = None
72
+ self._count += 2
70
73
  avail_schedules, sel_schedule = self._schedules()
71
74
  if avail_schedules != [NONE]:
72
75
  data["available_schedules"] = avail_schedules
73
76
  data["select_schedule"] = sel_schedule
74
- self._count += 2
75
77
 
76
78
  # Set HA climate HVACMode: auto, heat
77
79
  data["climate_mode"] = "auto"
@@ -82,6 +84,7 @@ class SmileLegacyData(SmileLegacyHelper):
82
84
  def _get_anna_control_state(self, data: GwEntityData) -> None:
83
85
  """Set the thermostat control_state based on the opentherm/onoff device state."""
84
86
  data["control_state"] = "idle"
87
+ self._count += 1
85
88
  for entity in self.gw_entities.values():
86
89
  if entity["dev_class"] != "heater_central":
87
90
  continue
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plugwise
3
- Version: 1.7.8a1
3
+ Version: 1.8.0
4
4
  Summary: Plugwise Smile (Adam/Anna/P1) and Stretch module for Python 3.
5
5
  Author: Plugwise device owners
6
6
  Maintainer: bouwew, CoMPaTech
@@ -11,6 +11,7 @@ Keywords: home,automation,plugwise,module
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3.14
14
15
  Classifier: Programming Language :: Python :: 3.13
15
16
  Classifier: Topic :: Home Automation
16
17
  Requires-Python: >=3.13
@@ -87,17 +88,17 @@ Module providing interfacing with the Plugwise devices:
87
88
  ### Smile
88
89
 
89
90
  - [x] Adam
90
- - [x] Lisa
91
+ - [x] Emma (only tested as ZigBee device connected to Adam)
91
92
  - [x] Jip
92
- - [x] Floor
93
- - [x] Tom
93
+ - [x] Lisa
94
+ - [x] Tom/Floor
94
95
  - [x] Koen (a Koen always comes with a Plug, the Plug is the active part)
95
96
  - [x] Plug
96
97
  - [x] Aqara Plug
97
- - [x] Anna
98
- - [x] Smile P1
99
- - [x] Stretch
100
- - [ ] Some of the equipment mentioned in USB when in use via Stretch or Adam
98
+ - [x] Anna (v1.8 and later firmware versions)
99
+ - [ ] Anna P1
100
+ - [x] Smile P1 (v2.0 and later firmware versions)
101
+ - [x] Stretch (only with Circles, please help out with other devices)
101
102
 
102
103
  - [x] [Home-Assistant](https://home-assistant.io) via
103
104
  - [x] Native supporting networked Plugwise products
@@ -0,0 +1,18 @@
1
+ plugwise/__init__.py,sha256=tctQhmRTvr70Am9x5V1UZf_VtPlw6o2if1MlgMVGcYo,17408
2
+ plugwise/common.py,sha256=PaTCpw_d5OoEHkN_TuS1KTiuL1nGgsrdgCxTATVtRCA,10084
3
+ plugwise/constants.py,sha256=F0RDampMHTyQjvmNlUC87tt7JzH2kK77t547eyArHDs,16946
4
+ plugwise/data.py,sha256=vtOot1JrgE7rHdt1pSnrh0BNAetcsPlTnoRD3SRD5lc,12571
5
+ plugwise/exceptions.py,sha256=Ce-tO9uNsMB-8FP6VAxBvsHNJ-NIM9F0onUZOdZI4Ys,1110
6
+ plugwise/helper.py,sha256=nVFD47K2aCSvlgmwJRYMLgP5gtgRLGrwhoe5GLHvNaw,39165
7
+ plugwise/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ plugwise/smile.py,sha256=hk_KTOzajekJvxi05g4sJoJ49YvlSLLUiNluvMUbKBM,20319
9
+ plugwise/smilecomm.py,sha256=DRQ3toRNEf3oo_mej49fPJ47m5das-jvo-8GnIrSPzw,5208
10
+ plugwise/util.py,sha256=rMcqfaB4dkQEZFJY-bBJISmlYgTnb6Ns3-Doxelf92Q,10689
11
+ plugwise/legacy/data.py,sha256=Dsv7wq_J6W0iC7vXhY_CQm03U5tfJM4O7SfSlJDBRQs,3246
12
+ plugwise/legacy/helper.py,sha256=vUuYX-vJErbVwGJu7On1ITDh8X8nzO8WoqN-whS9FJ4,16710
13
+ plugwise/legacy/smile.py,sha256=RBfasiOrAXUWwvUqciO0xzel4VMNsY0Nzb44GHqDPpo,12837
14
+ plugwise-1.8.0.dist-info/licenses/LICENSE,sha256=mL22BjmXtg_wnoDnnaqps5_Bg_VGj_yHueX5lsKwbCc,1144
15
+ plugwise-1.8.0.dist-info/METADATA,sha256=ukO3oUBIRcU9EIdYVMW2i8DRy20p7znw5d0PPZ1lpgs,8071
16
+ plugwise-1.8.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
17
+ plugwise-1.8.0.dist-info/top_level.txt,sha256=MYOmktMFf8ZmX6_OE1y9MoCZFfY-L8DA0F2tA2IvE4s,9
18
+ plugwise-1.8.0.dist-info/RECORD,,
@@ -1,18 +0,0 @@
1
- plugwise/__init__.py,sha256=tctQhmRTvr70Am9x5V1UZf_VtPlw6o2if1MlgMVGcYo,17408
2
- plugwise/common.py,sha256=vP4DgD1_Sv5B-7MwSjiYn7xoke20oDWggQ3aY5W1Jeg,10084
3
- plugwise/constants.py,sha256=V7piQ9xOrJ8nDK-RBcMiodSX3L-vEgRwnWmmxyRZCX8,16917
4
- plugwise/data.py,sha256=ZS6Oo05R0vXksYwsReKQLGCoyQd8bo-hg8jGE2uMH-w,12495
5
- plugwise/exceptions.py,sha256=Ce-tO9uNsMB-8FP6VAxBvsHNJ-NIM9F0onUZOdZI4Ys,1110
6
- plugwise/helper.py,sha256=LmepTNlN_EtamwZ-ur8A-MWY04X4wG1ZPN-E1f9Y1W0,38908
7
- plugwise/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- plugwise/smile.py,sha256=hk_KTOzajekJvxi05g4sJoJ49YvlSLLUiNluvMUbKBM,20319
9
- plugwise/smilecomm.py,sha256=DRQ3toRNEf3oo_mej49fPJ47m5das-jvo-8GnIrSPzw,5208
10
- plugwise/util.py,sha256=rMcqfaB4dkQEZFJY-bBJISmlYgTnb6Ns3-Doxelf92Q,10689
11
- plugwise/legacy/data.py,sha256=Z-7nw21s9-L4DcwPCZ_yoRGeI_fWBS1Q48kHmyh2pkY,3145
12
- plugwise/legacy/helper.py,sha256=vUuYX-vJErbVwGJu7On1ITDh8X8nzO8WoqN-whS9FJ4,16710
13
- plugwise/legacy/smile.py,sha256=RBfasiOrAXUWwvUqciO0xzel4VMNsY0Nzb44GHqDPpo,12837
14
- plugwise-1.7.8a1.dist-info/licenses/LICENSE,sha256=mL22BjmXtg_wnoDnnaqps5_Bg_VGj_yHueX5lsKwbCc,1144
15
- plugwise-1.7.8a1.dist-info/METADATA,sha256=kR-ur5GLSxDBkMTOAubA-huu0g7QqUORD7Y0BEXFuAw,7905
16
- plugwise-1.7.8a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
17
- plugwise-1.7.8a1.dist-info/top_level.txt,sha256=MYOmktMFf8ZmX6_OE1y9MoCZFfY-L8DA0F2tA2IvE4s,9
18
- plugwise-1.7.8a1.dist-info/RECORD,,