Skip to content

Commit 9a39ba2

Browse files
authored
refactor: abstract away service calls (#627)
* abstract service.setProperty * abstract service.getProperty
1 parent 197ebf7 commit 9a39ba2

13 files changed

+404
-395
lines changed

PyViCare/PyViCareDevice.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ class Device:
1414
def __init__(self, service: ViCareService) -> None:
1515
self.service = service
1616

17+
def getProperty(self, property_name: str) -> Any:
18+
return self.service.getProperty(property_name)
19+
20+
def setProperty(self, property_name: str, action: str, data: Any) -> Any:
21+
return self.service.setProperty(property_name, action, data)
22+
1723
@handleNotSupported
1824
def getSerial(self):
19-
return self.service.getProperty("device.serial")["properties"]["value"]["value"]
25+
return self.getProperty("device.serial")["properties"]["value"]["value"]
2026

2127
@handleNotSupported
2228
def getDeviceErrors(self) -> list[Any]:
23-
return list[Any](self.service.getProperty("device.messages.errors.raw")["properties"]["entries"]["value"])
29+
return list[Any](self.getProperty("device.messages.errors.raw")["properties"]["entries"]["value"])
2430

2531
def isLegacyDevice(self) -> bool:
2632
return self.service.hasRoles(["type:legacy"])
@@ -39,7 +45,7 @@ def isVentilationDevice(self):
3945

4046
def _isTypeDevice(self, deviceType: str):
4147
try:
42-
return self.service.getProperty(deviceType)["isEnabled"] and self.service.getProperty(deviceType)["properties"]["active"]["value"]
48+
return self.getProperty(deviceType)["isEnabled"] and self.getProperty(deviceType)["properties"]["active"]["value"]
4349
except PyViCareNotSupportedFeatureError:
4450
return False
4551

@@ -48,30 +54,30 @@ class ZigbeeDevice(Device):
4854

4955
@handleNotSupported
5056
def getSerial(self) -> str:
51-
return str(self.service.getProperty("device.zigbee.parent.id")["deviceId"])
57+
return str(self.getProperty("device.zigbee.parent.id")["deviceId"])
5258

5359
@handleNotSupported
5460
def getZigbeeParentID(self) -> str:
55-
return str(self.service.getProperty("device.zigbee.parent.id")["properties"]["value"]["value"])
61+
return str(self.getProperty("device.zigbee.parent.id")["properties"]["value"]["value"])
5662

5763
@handleNotSupported
5864
def getZigbeeSignalStrength(self) -> int:
59-
return int(self.service.getProperty("device.zigbee.lqi")["properties"]["strength"]["value"])
65+
return int(self.getProperty("device.zigbee.lqi")["properties"]["strength"]["value"])
6066

6167
@handleNotSupported
6268
def getName(self) -> str:
63-
return str(self.service.getProperty("device.name")["properties"]["name"]["value"])
69+
return str(self.getProperty("device.name")["properties"]["name"]["value"])
6470

6571
@handleAPICommandErrors
6672
def setName(self, name: str) -> None:
67-
self.service.setProperty("device.name", "setName", {'name': name})
73+
self.setProperty("device.name", "setName", {'name': name})
6874

6975
@handleNotSupported
7076
def getIdentification(self) -> bool:
71-
return bool(self.service.getProperty("device.identification")["properties"]["triggered"]["value"])
77+
return bool(self.getProperty("device.identification")["properties"]["triggered"]["value"])
7278

7379
class ZigbeeBatteryDevice(ZigbeeDevice):
7480

7581
@handleNotSupported
7682
def getBatteryLevel(self) -> int:
77-
return int(self.service.getProperty("device.power.battery")["properties"]["level"]["value"])
83+
return int(self.getProperty("device.power.battery")["properties"]["level"]["value"])

PyViCare/PyViCareElectricalEnergySystem.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,182 +6,182 @@ class ElectricalEnergySystem(Device):
66

77
@handleNotSupported
88
def getPointOfCommonCouplingTransferPowerExchange(self):
9-
return self.service.getProperty("pcc.transfer.power.exchange")["properties"][
9+
return self.getProperty("pcc.transfer.power.exchange")["properties"][
1010
"value"
1111
]["value"]
1212

1313
@handleNotSupported
1414
def getPhotovoltaicProductionCumulatedUnit(self):
15-
return self.service.getProperty("photovoltaic.production.cumulated")[
15+
return self.getProperty("photovoltaic.production.cumulated")[
1616
"properties"
1717
]["currentDay"]["unit"]
1818

1919
@handleNotSupported
2020
def getPhotovoltaicProductionCumulatedCurrentDay(self):
21-
return self.service.getProperty("photovoltaic.production.cumulated")[
21+
return self.getProperty("photovoltaic.production.cumulated")[
2222
"properties"
2323
]["currentDay"]["value"]
2424

2525
@handleNotSupported
2626
def getPhotovoltaicProductionCumulatedCurrentWeek(self):
27-
return self.service.getProperty("photovoltaic.production.cumulated")[
27+
return self.getProperty("photovoltaic.production.cumulated")[
2828
"properties"
2929
]["currentWeek"]["value"]
3030

3131
@handleNotSupported
3232
def getPhotovoltaicProductionCumulatedCurrentMonth(self):
33-
return self.service.getProperty("photovoltaic.production.cumulated")[
33+
return self.getProperty("photovoltaic.production.cumulated")[
3434
"properties"
3535
]["currentMonth"]["value"]
3636

3737
@handleNotSupported
3838
def getPhotovoltaicProductionCumulatedCurrentYear(self):
39-
return self.service.getProperty("photovoltaic.production.cumulated")[
39+
return self.getProperty("photovoltaic.production.cumulated")[
4040
"properties"
4141
]["currentYear"]["value"]
4242

4343
@handleNotSupported
4444
def getPhotovoltaicProductionCumulatedLifeCycle(self):
45-
return self.service.getProperty("photovoltaic.production.cumulated")[
45+
return self.getProperty("photovoltaic.production.cumulated")[
4646
"properties"
4747
]["lifeCycle"]["value"]
4848

4949
@handleNotSupported
5050
def getPhotovoltaicStatus(self):
51-
return self.service.getProperty("photovoltaic.status")["properties"]["status"][
51+
return self.getProperty("photovoltaic.status")["properties"]["status"][
5252
"value"
5353
]
5454

5555
@handleNotSupported
5656
def getPhotovoltaicProductionCurrent(self):
57-
return self.service.getProperty("photovoltaic.production.current")[
57+
return self.getProperty("photovoltaic.production.current")[
5858
"properties"
5959
]["value"]["value"]
6060

6161
@handleNotSupported
6262
def getPhotovoltaicProductionCurrentUnit(self):
63-
return self.service.getProperty("photovoltaic.production.current")[
63+
return self.getProperty("photovoltaic.production.current")[
6464
"properties"
6565
]["value"]["unit"]
6666

6767
@handleNotSupported
6868
def getPointOfCommonCouplingTransferConsumptionTotal(self):
69-
return self.service.getProperty("pcc.transfer.consumption.total")["properties"][
69+
return self.getProperty("pcc.transfer.consumption.total")["properties"][
7070
"value"
7171
]["value"]
7272

7373
@handleNotSupported
7474
def getPointOfCommonCouplingTransferConsumptionTotalUnit(self):
75-
return self.service.getProperty("pcc.transfer.consumption.total")["properties"][
75+
return self.getProperty("pcc.transfer.consumption.total")["properties"][
7676
"value"
7777
]["unit"]
7878

7979
@handleNotSupported
8080
def getPointOfCommonCouplingTransferFeedInTotal(self):
81-
return self.service.getProperty("pcc.transfer.feedIn.total")["properties"][
81+
return self.getProperty("pcc.transfer.feedIn.total")["properties"][
8282
"value"
8383
]["value"]
8484

8585
@handleNotSupported
8686
def getPointOfCommonCouplingTransferFeedInTotalUnit(self):
87-
return self.service.getProperty("pcc.transfer.feedIn.total")["properties"][
87+
return self.getProperty("pcc.transfer.feedIn.total")["properties"][
8888
"value"
8989
]["unit"]
9090

9191
@handleNotSupported
9292
def getElectricalEnergySystemTransferChargeCumulatedUnit(self):
93-
return self.service.getProperty("ess.transfer.charge.cumulated")[
93+
return self.getProperty("ess.transfer.charge.cumulated")[
9494
"properties"
9595
]["currentDay"]["unit"]
9696

9797
@handleNotSupported
9898
def getElectricalEnergySystemTransferChargeCumulatedCurrentDay(self):
99-
return self.service.getProperty("ess.transfer.charge.cumulated")[
99+
return self.getProperty("ess.transfer.charge.cumulated")[
100100
"properties"
101101
]["currentDay"]["value"]
102102

103103
@handleNotSupported
104104
def getElectricalEnergySystemTransferChargeCumulatedCurrentWeek(self):
105-
return self.service.getProperty("ess.transfer.charge.cumulated")[
105+
return self.getProperty("ess.transfer.charge.cumulated")[
106106
"properties"
107107
]["currentWeek"]["value"]
108108

109109
@handleNotSupported
110110
def getElectricalEnergySystemTransferChargeCumulatedCurrentMonth(self):
111-
return self.service.getProperty("ess.transfer.charge.cumulated")[
111+
return self.getProperty("ess.transfer.charge.cumulated")[
112112
"properties"
113113
]["currentMonth"]["value"]
114114

115115
@handleNotSupported
116116
def getElectricalEnergySystemTransferChargeCumulatedCurrentYear(self):
117-
return self.service.getProperty("ess.transfer.charge.cumulated")[
117+
return self.getProperty("ess.transfer.charge.cumulated")[
118118
"properties"
119119
]["currentYear"]["value"]
120120

121121
@handleNotSupported
122122
def getElectricalEnergySystemTransferChargeCumulatedLifeCycle(self):
123-
return self.service.getProperty("ess.transfer.charge.cumulated")[
123+
return self.getProperty("ess.transfer.charge.cumulated")[
124124
"properties"
125125
]["lifeCycle"]["value"]
126126

127127
@handleNotSupported
128128
def getElectricalEnergySystemTransferDischargeCumulatedUnit(self):
129-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
129+
return self.getProperty("ess.transfer.discharge.cumulated")[
130130
"properties"
131131
]["currentDay"]["unit"]
132132

133133
@handleNotSupported
134134
def getElectricalEnergySystemTransferDischargeCumulatedCurrentDay(self):
135-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
135+
return self.getProperty("ess.transfer.discharge.cumulated")[
136136
"properties"
137137
]["currentDay"]["value"]
138138

139139
@handleNotSupported
140140
def getElectricalEnergySystemTransferDischargeCumulatedCurrentWeek(self):
141-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
141+
return self.getProperty("ess.transfer.discharge.cumulated")[
142142
"properties"
143143
]["currentWeek"]["value"]
144144

145145
@handleNotSupported
146146
def getElectricalEnergySystemTransferDischargeCumulatedCurrentMonth(self):
147-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
147+
return self.getProperty("ess.transfer.discharge.cumulated")[
148148
"properties"
149149
]["currentMonth"]["value"]
150150

151151
@handleNotSupported
152152
def getElectricalEnergySystemTransferDischargeCumulatedCurrentYear(self):
153-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
153+
return self.getProperty("ess.transfer.discharge.cumulated")[
154154
"properties"
155155
]["currentYear"]["value"]
156156

157157
@handleNotSupported
158158
def getElectricalEnergySystemTransferDischargeCumulatedLifeCycle(self):
159-
return self.service.getProperty("ess.transfer.discharge.cumulated")[
159+
return self.getProperty("ess.transfer.discharge.cumulated")[
160160
"properties"
161161
]["lifeCycle"]["value"]
162162

163163
@handleNotSupported
164164
def getElectricalEnergySystemSOC(self):
165-
return self.service.getProperty("ess.stateOfCharge")["properties"]["value"][
165+
return self.getProperty("ess.stateOfCharge")["properties"]["value"][
166166
"value"
167167
]
168168

169169
@handleNotSupported
170170
def getElectricalEnergySystemSOCUnit(self):
171-
return self.service.getProperty("ess.stateOfCharge")["properties"]["value"][
171+
return self.getProperty("ess.stateOfCharge")["properties"]["value"][
172172
"unit"
173173
]
174174

175175
@handleNotSupported
176176
def getElectricalEnergySystemPower(self):
177-
return self.service.getProperty("ess.power")["properties"]["value"]["value"]
177+
return self.getProperty("ess.power")["properties"]["value"]["value"]
178178

179179
@handleNotSupported
180180
def getElectricalEnergySystemPowerUnit(self):
181-
return self.service.getProperty("ess.power")["properties"]["value"]["unit"]
181+
return self.getProperty("ess.power")["properties"]["value"]["unit"]
182182

183183
@handleNotSupported
184184
def getElectricalEnergySystemOperationState(self):
185-
return self.service.getProperty("ess.operationState")["properties"]["value"][
185+
return self.getProperty("ess.operationState")["properties"]["value"][
186186
"value"
187187
]

PyViCare/PyViCareFloorHeating.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,30 @@ class FloorHeating(ZigbeeDevice):
66

77
@handleNotSupported
88
def getSupplyTemperature(self) -> float:
9-
return float(self.service.getProperty("fht.sensors.temperature.supply")["properties"]["value"]["value"])
9+
return float(self.getProperty("fht.sensors.temperature.supply")["properties"]["value"]["value"])
1010

1111
@handleNotSupported
1212
def getActiveMode(self) -> str:
13-
return str(self.service.getProperty("fht.operating.modes.active")["properties"]["value"]["value"])
13+
return str(self.getProperty("fht.operating.modes.active")["properties"]["value"]["value"])
1414

1515

1616
class FloorHeatingChannel(Device):
1717

1818
@handleNotSupported
1919
def getSerial(self) -> str:
20-
return str(self.service.getProperty("device.name")["deviceId"])
20+
return str(self.getProperty("device.name")["deviceId"])
2121

2222
@handleNotSupported
2323
def getName(self) -> str:
24-
return str(self.service.getProperty("device.name")["properties"]["name"]["value"])
24+
return str(self.getProperty("device.name")["properties"]["name"]["value"])
2525

2626
@handleAPICommandErrors
2727
def setName(self, name: str) -> None:
28-
self.service.setProperty("device.name", "setName", {'name': name})
28+
self.setProperty("device.name", "setName", {'name': name})
2929

3030
@handleNotSupported
3131
def getValveState(self) -> str:
32-
return str(self.service.getProperty("fht.valve.state")["properties"]["status"]["value"])
32+
return str(self.getProperty("fht.valve.state")["properties"]["status"]["value"])
3333

3434
@handleNotSupported
3535
def isValveOpen(self) -> bool:

0 commit comments

Comments
 (0)