Skip to content

Commit 2ee9288

Browse files
committed
Import from packaging and implement
1 parent 70d3914 commit 2ee9288

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

plugwise/__init__.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import aiohttp
3333
from defusedxml import ElementTree as etree
34+
from packaging.version import Version, parse
3435

3536

3637
class Smile(SmileComm):
@@ -75,7 +76,7 @@ def __init__(
7576
self._target_smile: str = NONE
7677
self.gateway_id: str = NONE
7778
self.loc_data: dict[str, ThermoLoc] = {}
78-
self.smile_fw_version: str | None = None
79+
self.smile_fw_version: Version | None
7980
self.smile_hostname: str = NONE
8081
self.smile_hw_version: str | None = None
8182
self.smile_legacy = False
@@ -84,7 +85,7 @@ def __init__(
8485
self.smile_model_id: str | None = None
8586
self.smile_name: str = NONE
8687
self.smile_type: str = NONE
87-
self.smile_version: str | None = None
88+
self.smile_version: Version | None = None
8889
self.smile_zigbee_mac_address: str | None = None
8990

9091
async def connect(self) -> str | None:
@@ -184,7 +185,7 @@ async def _smile_detect(self, result: etree, dsmrmain: etree) -> None:
184185
if (gateway := result.find("./gateway")) is not None:
185186
if (v_model := gateway.find("vendor_model")) is not None:
186187
model = v_model.text
187-
self.smile_fw_version = gateway.find("firmware_version").text
188+
self.smile_fw_version = parse(gateway.find("firmware_version").text)
188189
self.smile_hw_version = gateway.find("hardware_version").text
189190
self.smile_hostname = gateway.find("hostname").text
190191
self.smile_mac_address = gateway.find("mac_address").text
@@ -200,7 +201,7 @@ async def _smile_detect(self, result: etree, dsmrmain: etree) -> None:
200201
)
201202
raise UnsupportedDeviceError
202203

203-
version_major: str = self.smile_fw_version.split(".", 1)[0]
204+
version_major= str(self.smile_fw_version.major)
204205
self._target_smile = f"{model}_v{version_major}"
205206
LOGGER.debug("Plugwise identified as %s", self._target_smile)
206207
if self._target_smile not in SMILES:
@@ -267,7 +268,7 @@ async def _smile_detect_legacy(
267268
or network is not None
268269
):
269270
system = await self._request(SYSTEM)
270-
self.smile_fw_version = system.find("./gateway/firmware").text
271+
self.smile_fw_version = parse(system.find("./gateway/firmware").text)
271272
return_model = system.find("./gateway/product").text
272273
self.smile_hostname = system.find("./gateway/hostname").text
273274
# If wlan0 contains data it's active, so eth0 should be checked last
@@ -278,7 +279,7 @@ async def _smile_detect_legacy(
278279
# P1 legacy:
279280
elif dsmrmain is not None:
280281
status = await self._request(STATUS)
281-
self.smile_fw_version = status.find("./system/version").text
282+
self.smile_fw_version = parse(status.find("./system/version").text)
282283
return_model = status.find("./system/product").text
283284
self.smile_hostname = status.find("./network/hostname").text
284285
self.smile_mac_address = status.find("./network/mac_address").text

0 commit comments

Comments
 (0)