Skip to content

Commit 45840e5

Browse files
authored
Merge pull request #515 from plugwise/improve-2
Code improvements
2 parents c646885 + d64fc30 commit 45840e5

File tree

9 files changed

+34
-101
lines changed

9 files changed

+34
-101
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## Ongoing
4+
5+
- General improving of code
6+
37
## v0.37.0
48

59
- Refactor code into separate parts/paths for actual and legacy Plugwise devices.

plugwise/__init__.py

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@
3131
import aiohttp
3232
from defusedxml import ElementTree as etree
3333

34-
# Dict as class
35-
# Version detection
36-
import semver
37-
3834

3935
class Smile(SmileComm):
4036
"""The Plugwise SmileConnect class."""
@@ -80,15 +76,15 @@ def __init__(
8076
self._target_smile: str = NONE
8177
self.gateway_id: str = NONE
8278
self.loc_data: dict[str, ThermoLoc] = {}
83-
self.smile_fw_version: str | None
84-
self.smile_hostname: str
79+
self.smile_fw_version: str | None = None
80+
self.smile_hostname: str = NONE
8581
self.smile_hw_version: str | None = None
8682
self.smile_legacy = False
87-
self.smile_mac_address: str | None
88-
self.smile_model: str
89-
self.smile_name: str
90-
self.smile_type: str
91-
self.smile_version: tuple[str, semver.version.Version]
83+
self.smile_mac_address: str | None = None
84+
self.smile_model: str = NONE
85+
self.smile_name: str = NONE
86+
self.smile_type: str = NONE
87+
self.smile_version: str = NONE
9288
self.smile_zigbee_mac_address: str | None = None
9389

9490
async def connect(self) -> bool:
@@ -143,12 +139,10 @@ async def connect(self) -> bool:
143139
self.smile_fw_version,
144140
self.smile_hostname,
145141
self.smile_hw_version,
146-
self.smile_legacy,
147142
self.smile_mac_address,
148143
self.smile_model,
149144
self.smile_name,
150145
self.smile_type,
151-
self.smile_version,
152146
self._user,
153147
self._port,
154148
self._timeout,
@@ -171,7 +165,6 @@ async def connect(self) -> bool:
171165
self.smile_model,
172166
self.smile_name,
173167
self.smile_type,
174-
self.smile_version,
175168
self.smile_zigbee_mac_address,
176169
self._user,
177170
self._port,
@@ -207,8 +200,8 @@ async def _smile_detect(self, result: etree, dsmrmain: etree) -> None:
207200
)
208201
raise UnsupportedDeviceError
209202

210-
ver = semver.version.Version.parse(self.smile_fw_version)
211-
self._target_smile = f"{model}_v{ver.major}"
203+
version_major: str = self.smile_fw_version.split(".", 1)[0]
204+
self._target_smile = f"{model}_v{version_major}"
212205
LOGGER.debug("Plugwise identified as %s", self._target_smile)
213206
if self._target_smile not in SMILES:
214207
LOGGER.error(
@@ -228,10 +221,10 @@ async def _smile_detect(self, result: etree, dsmrmain: etree) -> None:
228221
self.smile_model = "Gateway"
229222
self.smile_name = SMILES[self._target_smile].smile_name
230223
self.smile_type = SMILES[self._target_smile].smile_type
231-
self.smile_version = (self.smile_fw_version, ver)
224+
self.smile_version = self.smile_fw_version
232225

233226
if self.smile_type == "stretch":
234-
self._stretch_v2 = self.smile_version[1].major == 2
227+
self._stretch_v2 = int(version_major) == 2
235228

236229
if self.smile_type == "thermostat":
237230
self._is_thermostat = True

plugwise/helper.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,7 @@ def __init__(self) -> None:
214214
self._opentherm_device: bool
215215
self._outdoor_temp: float
216216
self._reg_allowed_modes: list[str] = []
217-
self._schedule_old_states: dict[str, dict[str, str]] = {}
218-
self._smile_legacy = False
217+
self._schedule_old_states: dict[str, dict[str, str]]
219218
self._status: etree
220219
self._stretch_v2: bool
221220
self._system: etree
@@ -240,13 +239,13 @@ def __init__(self) -> None:
240239
self.gw_data: GatewayData = {}
241240
self.gw_devices: dict[str, DeviceData] = {}
242241
self.loc_data: dict[str, ThermoLoc]
243-
self.smile_fw_version: str | None = None
244-
self.smile_hw_version: str | None = None
245-
self.smile_mac_address: str | None = None
242+
self.smile_fw_version: str | None
243+
self.smile_hw_version: str | None
244+
self.smile_mac_address: str | None
246245
self.smile_model: str
247246
self.smile_name: str
248247
self.smile_type: str
249-
self.smile_zigbee_mac_address: str | None = None
248+
self.smile_zigbee_mac_address: str | None
250249
self.therms_with_offset_func: list[str] = []
251250

252251
def smile(self, name: str) -> bool:
@@ -305,13 +304,12 @@ def _get_module_data(
305304
def _energy_device_info_finder(self, appliance: etree, appl: Munch) -> Munch:
306305
"""Helper-function for _appliance_info_finder().
307306
308-
Collect energy device info (Circle, Plug, Stealth): firmware, model and vendor name.
307+
Collect energy device info (Smartmeter, Plug): firmware, model and vendor name.
309308
"""
310309
if self.smile_type == "power":
311310
locator = "./logs/point_log/electricity_point_meter"
312311
mod_type = "electricity_point_meter"
313312
module_data = self._get_module_data(appliance, locator, mod_type)
314-
appl.zigbee_mac = module_data["zigbee_mac_address"]
315313
appl.hardware = module_data["hardware_version"]
316314
appl.model = module_data["vendor_model"]
317315
appl.vendor_name = module_data["vendor_name"]

plugwise/legacy/helper.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
# This way of importing aiohttp is because of patch/mocking in testing (aiohttp timeouts)
5252
from defusedxml import ElementTree as etree
5353
from munch import Munch
54-
import semver
5554

5655

5756
def etree_to_dict(element: etree) -> dict[str, str]:
@@ -90,15 +89,13 @@ def __init__(self) -> None:
9089
self.gw_data: GatewayData = {}
9190
self.gw_devices: dict[str, DeviceData] = {}
9291
self.loc_data: dict[str, ThermoLoc]
93-
self.smile_fw_version: str | None = None
94-
self.smile_hw_version: str | None = None
95-
self.smile_legacy = False
96-
self.smile_mac_address: str | None = None
92+
self.smile_fw_version: str | None
93+
self.smile_hw_version: str | None
94+
self.smile_mac_address: str | None
9795
self.smile_model: str
9896
self.smile_name: str
9997
self.smile_type: str
100-
self.smile_version: tuple[str, semver.version.Version]
101-
self.smile_zigbee_mac_address: str | None = None
98+
self.smile_zigbee_mac_address: str | None
10299

103100
def smile(self, name: str) -> bool:
104101
"""Helper-function checking the smile-name."""
@@ -176,15 +173,15 @@ def _get_module_data(
176173
def _energy_device_info_finder(self, appliance: etree, appl: Munch) -> Munch:
177174
"""Helper-function for _appliance_info_finder().
178175
179-
Collect energy device info (Circle, Plug, Stealth): firmware, model and vendor name.
176+
Collect energy device info (Smartmeter, Circle, Stealth, etc.): firmware, model and vendor name.
180177
"""
181178
if self.smile_type in ("power", "stretch"):
182179
locator = "./services/electricity_point_meter"
183180
mod_type = "electricity_point_meter"
184181

185182
module_data = self._get_module_data(appliance, locator, mod_type)
186-
# Filter appliance without zigbee_mac, it's an orphaned device
187183
appl.zigbee_mac = module_data["zigbee_mac_address"]
184+
# Filter appliance without zigbee_mac, it's an orphaned device
188185
if appl.zigbee_mac is None and self.smile_type != "power":
189186
return None
190187

plugwise/legacy/smile.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import datetime as dt
88

9-
# Version detection
109
from plugwise.constants import (
1110
APPLIANCES,
1211
DEFAULT_PORT,
@@ -29,7 +28,6 @@
2928

3029
import aiohttp
3130
from munch import Munch
32-
import semver
3331

3432

3533
class SmileLegacyAPI(SmileComm, SmileLegacyData):
@@ -55,7 +53,6 @@ def __init__(
5553
smile_model: str,
5654
smile_name: str,
5755
smile_type: str,
58-
smile_version: tuple[str, semver.version.Version],
5956
smile_zigbee_mac_address: str | None,
6057
username: str = DEFAULT_USERNAME,
6158
port: int = DEFAULT_PORT,
@@ -85,7 +82,6 @@ def __init__(
8582
self.smile_model = smile_model
8683
self.smile_name = smile_name
8784
self.smile_type = smile_type
88-
self.smile_version = smile_version
8985
self.smile_zigbee_mac_address = smile_zigbee_mac_address
9086

9187
self._previous_day_number: str = "0"

plugwise/smile.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@
3535
# Dict as class
3636
from munch import Munch
3737

38-
# Version detection
39-
import semver
40-
4138

4239
class SmileAPI(SmileComm, SmileData):
4340
"""The Plugwise SmileAPI helper class for actual Plugwise devices."""
@@ -61,12 +58,10 @@ def __init__(
6158
smile_fw_version: str | None,
6259
smile_hostname: str | None,
6360
smile_hw_version: str | None,
64-
smile_legacy: bool,
6561
smile_mac_address: str | None,
6662
smile_model: str,
6763
smile_name: str,
6864
smile_type: str,
69-
smile_version: tuple[str, semver.version.Version],
7065
username: str = DEFAULT_USERNAME,
7166
port: int = DEFAULT_PORT,
7267
timeout: float = DEFAULT_TIMEOUT,
@@ -95,12 +90,10 @@ def __init__(
9590
self.smile_fw_version = smile_fw_version
9691
self.smile_hostname = smile_hostname
9792
self.smile_hw_version = smile_hw_version
98-
self.smile_legacy = smile_legacy
9993
self.smile_mac_address = smile_mac_address
10094
self.smile_model = smile_model
10195
self.smile_name = smile_name
10296
self.smile_type = smile_type
103-
self.smile_version = smile_version
10497

10598
self._heater_id: str
10699
self._cooling_enabled = False

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ dependencies = [
3434
"munch",
3535
"pyserial",
3636
"python-dateutil",
37-
"semver>=3.0.0",
3837
]
3938

4039
[project.urls]

0 commit comments

Comments
 (0)