Skip to content

Commit 7d56e1c

Browse files
committed
add device_and_unit_id property
1 parent 53afd61 commit 7d56e1c

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

pyfritzhome/devicetypes/fritzhomeentitybase.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,17 @@ def _update_from_node(self, node):
4343

4444
self.name = node.findtext("name").strip()
4545

46+
@property
47+
def device_and_unit_id(self):
48+
"""Get the device and possible unit id."""
49+
if self.ain.startswith("tmp") or self.ain.startswith("grp"):
50+
return (self.ain, None)
51+
elif self.ain.startswith("Z") and len(self.ain) == 19:
52+
return (self.ain[0:17], self.ain[17:])
53+
elif "-" in self.ain:
54+
return tuple(self.ain.split("-"))
55+
return (self.ain, None)
56+
4657
# XML Helpers
4758

4859
def get_node_value(self, elem, node):

tests/test_fritzhomedevicebase.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from unittest.mock import MagicMock
55

66
from pyfritzhome import Fritzhome
7+
from pyfritzhome.devicetypes.fritzhomeentitybase import FritzhomeEntityBase
78

89
from .helper import Helper
910

@@ -89,3 +90,24 @@ def test_get_device_present(self):
8990
"http://10.0.0.1/webservices/homeautoswitch.lua",
9091
{"ain": "08761 0000434", "switchcmd": "getswitchpresent", "sid": None},
9192
)
93+
94+
def test_device_and_unit_id(self):
95+
device = FritzhomeEntityBase()
96+
97+
device.ain = "11630 0114733"
98+
assert device.device_and_unit_id == ("11630 0114733", None)
99+
100+
device.ain = "11630 0114733-1"
101+
assert device.device_and_unit_id == ("11630 0114733", "1")
102+
103+
device.ain = "ZA4C1380C30E07AB1"
104+
assert device.device_and_unit_id == ("ZA4C1380C30E07AB1", None)
105+
106+
device.ain = "ZA4C1380C30E07AB101"
107+
assert device.device_and_unit_id == ("ZA4C1380C30E07AB1", "01")
108+
109+
device.ain = "grp303E4F-3F7D9BE07"
110+
assert device.device_and_unit_id == ("grp303E4F-3F7D9BE07", None)
111+
112+
device.ain = "tmp816271-3F6EB615E"
113+
assert device.device_and_unit_id == ("tmp816271-3F6EB615E", None)

0 commit comments

Comments
 (0)