Skip to content

Commit 82b85e4

Browse files
committed
Add support for read only operation modes from status
1 parent 59b6c0a commit 82b85e4

File tree

5 files changed

+1072
-17
lines changed

5 files changed

+1072
-17
lines changed

ThermiaOnlineAPI/api/ThermiaAPI.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,20 @@ def get__group_operational_time(self, device_id: str):
267267
return self.__get_register_group(device_id, REG_GROUP_OPERATIONAL_TIME)
268268

269269
def get_group_operational_operation(self, device: ThermiaHeatPump):
270-
register_data = self.__get_register_group(
271-
device.id, REG_GROUP_OPERATIONAL_OPERATION
270+
return self.__get_group_operational_operation_from_register_group(
271+
device, REG_GROUP_OPERATIONAL_OPERATION
272272
)
273273

274+
def get_group_operational_operation_from_status(self, device: ThermiaHeatPump):
275+
return self.__get_group_operational_operation_from_register_group(
276+
device, REG_GROUP_OPERATIONAL_STATUS
277+
)
278+
279+
def __get_group_operational_operation_from_register_group(
280+
self, device: ThermiaHeatPump, register_group: str
281+
):
282+
register_data = self.__get_register_group(device.id, register_group)
283+
274284
data = [d for d in register_data if d["registerName"] == REG_OPERATIONMODE]
275285

276286
if len(data) != 1:

ThermiaOnlineAPI/model/HeatPump.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def __init__(self, device_data: dict, api_interface: "ThermiaAPI"):
7171
self.__group_operational_status = None
7272
self.__group_operational_time = None
7373
self.__group_operational_operation = None
74+
self.__group_operational_operation_read_only = None
7475
self.__group_hot_water: Dict[str, Optional[int]] = {
7576
"hot_water_switch": None,
7677
"hot_water_boost_switch": None,
@@ -116,6 +117,9 @@ def update_data(self):
116117
self.__group_operational_operation = (
117118
self.__api_interface.get_group_operational_operation(self)
118119
)
120+
self.__group_operational_operation_read_only = (
121+
self.__api_interface.get_group_operational_operation_from_status(self)
122+
)
119123
self.__group_hot_water = self.__api_interface.get_group_hot_water(self)
120124

121125
self.__alarms = self.__api_interface.get_all_alarms(self.__device_id)
@@ -892,25 +896,50 @@ def auxiliary_heater_3_operational_time(self):
892896

893897
@property
894898
def operation_mode(self):
895-
return get_dict_value_or_none(self.__group_operational_operation, "current")
899+
if self.__group_operational_operation is not None:
900+
return get_dict_value_or_none(self.__group_operational_operation, "current")
901+
902+
return get_dict_value_or_none(
903+
self.__group_operational_operation_read_only, "current"
904+
)
896905

897906
@property
898907
def available_operation_modes(self):
908+
if self.__group_operational_operation is not None:
909+
return list(
910+
get_dict_value_or_default(
911+
self.__group_operational_operation, "available", {}
912+
).values()
913+
)
914+
899915
return list(
900916
get_dict_value_or_default(
901-
self.__group_operational_operation, "available", {}
917+
self.__group_operational_operation_read_only, "available", {}
902918
).values()
903919
)
904920

905921
@property
906922
def available_operation_mode_map(self):
923+
if self.__group_operational_operation is not None:
924+
return get_dict_value_or_default(
925+
self.__group_operational_operation, "available", {}
926+
)
927+
907928
return get_dict_value_or_default(
908-
self.__group_operational_operation, "available", {}
929+
self.__group_operational_operation_read_only, "available", {}
909930
)
910931

911932
@property
912933
def is_operation_mode_read_only(self):
913-
return get_dict_value_or_none(self.__group_operational_operation, "isReadOnly")
934+
if self.__group_operational_operation is not None:
935+
return get_dict_value_or_none(
936+
self.__group_operational_operation, "isReadOnly"
937+
)
938+
939+
if self.__group_operational_operation_read_only is not None:
940+
True
941+
942+
return None
914943

915944
###########################################################################
916945
# Hot water data

0 commit comments

Comments
 (0)