Skip to content

Commit eca0a04

Browse files
Merge pull request #37 from dave-code-ruiz/dave-code-ruiz-patch-36
Correct value property to obtein battery_alarm and other alarms values
2 parents dba7ffd + 2368794 commit eca0a04

File tree

2 files changed

+77
-75
lines changed

2 files changed

+77
-75
lines changed

custom_components/uhomeuponor/uponor_api/__init__.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ async def update_values(self, allvalue_dict, *values):
165165

166166
req = self.create_request("read")
167167
for value in values:
168-
obj = {'id': str(value.id), 'properties': {'85': {}}}
168+
obj = {'id': str(value.id), 'properties': {str(value.property): {}}}
169169
self.add_request_object(req, obj)
170170

171171
response_data = await self.do_rest_call(req)
@@ -174,11 +174,11 @@ async def update_values(self, allvalue_dict, *values):
174174
for obj in response_data['result']['objects']:
175175
try:
176176
data_id = int(obj['id'])
177-
data_val = obj['properties']['85']['value']
177+
value = value_dict[data_id]
178+
data_val = obj['properties'][value.property]['value']
178179
except Exception as e:
179180
continue
180181

181-
value = value_dict[data_id]
182182
value.value = data_val
183183

184184
def getStepValue(self, id, therm):
@@ -220,7 +220,8 @@ def validate_values(self,response_data,allvalue_dict):
220220
for obj in response_data['result']['objects']:
221221
try:
222222
data_id = int(obj['id'])
223-
data_val = obj['properties']['85']['value']
223+
value = allvalue_dict[data_id]
224+
data_val = obj['properties'][value.property]['value']
224225
step=self.getStepValue(data_id,therm)
225226
#only is necesary validate values in addrs 11,25,28, rest of values do not change
226227
if step != 0:
@@ -246,7 +247,7 @@ def validate_values(self,response_data,allvalue_dict):
246247
#_LOGGER.debug("Response values, id %d, value %s, samevalue %d, old %s, idnext %s, next %s",data_id,data_val,samevalue,oldvalue.value,data_id+step,nextvalue.value)
247248

248249
except Exception as e:
249-
if '85' not in str(e):
250+
if '85' not in str(e) and '662' not in str(e):
250251
_LOGGER.debug("Response error %s obj %s",e,obj)
251252
continue
252253

@@ -265,7 +266,7 @@ async def set_values(self, *value_tuples):
265266
req = self.create_request("write")
266267

267268
for tpl in value_tuples:
268-
obj = {'id': str(tpl[0].id), 'properties': {'85': {'value': str(tpl[1])}}}
269+
obj = {'id': str(tpl[0].id), 'properties': {str(tpl[0].property): {'value': str(tpl[1])}}}
269270
self.add_request_object(req, obj)
270271

271272
await self.do_rest_call(req)
@@ -277,10 +278,11 @@ async def set_values(self, *value_tuples):
277278
class UponorValue(object):
278279
"""Single value in the Uponor API"""
279280

280-
def __init__(self, id, name):
281+
def __init__(self, id, name, prop):
281282
self.id = id
282283
self.name = name
283284
self.value = 0
285+
self.property = prop
284286

285287
class UponorBaseDevice(ABC):
286288
"""Base device class"""
@@ -295,7 +297,7 @@ def __init__(self, uponor_client, id_offset, properties, identity_string):
295297
self.identity_string = identity_string
296298

297299
for key_name, key_data in properties.items():
298-
value = UponorValue(id_offset + key_data['addr'], key_name)
300+
value = UponorValue(id_offset + key_data['addr'], key_name, key_data['property'])
299301
self.properties_byid[value.id] = value
300302
self.properties_byname[value.name] = value
301303

custom_components/uhomeuponor/uponor_api/const.py

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -15,81 +15,81 @@
1515
# U@Home
1616
# Offset: 0
1717
UHOME_MODULE_KEYS = {
18-
'module_id': {'addr': 20, 'value': 0},
19-
'cooling_available': {'addr': 21, 'value': 0},
20-
'holiday_mode': {'addr': 22, 'value': 0},
21-
'forced_eco_mode': {'addr': 23, 'value': 0},
22-
'hc_mode': {'addr': 24, 'value': 0},
23-
'hc_masterslave': {'addr': 25, 'value': 0},
24-
'ts_sv_version': {'addr': 26, 'value': 0},
25-
'holiday_setpoint': {'addr': 27, 'value': 0},
26-
'average_temp_low': {'addr': 28, 'value': 0},
27-
'low_temp_alarm_limit': {'addr': 29, 'value': 0},
28-
'low_temp_alarm_hysteresis': {'addr': 30, 'value': 0},
29-
'remote_access_alarm': {'addr': 31, 'value': 0},
30-
'device_lost_alarm': {'addr': 32, 'value': 0},
31-
'no_comm_controller1': {'addr': 33, 'value': 0},
32-
'no_comm_controller2': {'addr': 34, 'value': 0},
33-
'no_comm_controller3': {'addr': 35, 'value': 0},
34-
'no_comm_controller4': {'addr': 36, 'value': 0},
35-
'average_room_temperature': {'addr': 37, 'value': 0},
36-
'controller_presence': {'addr': 38, 'value': 0},
37-
'allow_hc_mode_change': {'addr': 39, 'value': 0},
38-
'hc_master_type': {'addr': 40, 'value': 0},
18+
'module_id': {'addr': 20, 'value': 0, 'property': '85'},
19+
'cooling_available': {'addr': 21, 'value': 0, 'property': '85'},
20+
'holiday_mode': {'addr': 22, 'value': 0, 'property': '85'},
21+
'forced_eco_mode': {'addr': 23, 'value': 0, 'property': '85'},
22+
'hc_mode': {'addr': 24, 'value': 0, 'property': '85'},
23+
'hc_masterslave': {'addr': 25, 'value': 0, 'property': '85'},
24+
'ts_sv_version': {'addr': 26, 'value': 0, 'property': '85'},
25+
'holiday_setpoint': {'addr': 27, 'value': 0, 'property': '85'},
26+
'average_temp_low': {'addr': 28, 'value': 0, 'property': '85'},
27+
'low_temp_alarm_limit': {'addr': 29, 'value': 0, 'property': '85'},
28+
'low_temp_alarm_hysteresis': {'addr': 30, 'value': 0, 'property': '85'},
29+
'remote_access_alarm': {'addr': 31, 'value': 0, 'property': '85'},
30+
'device_lost_alarm': {'addr': 32, 'value': 0, 'property': '85'},
31+
'no_comm_controller1': {'addr': 33, 'value': 0, 'property': '85'},
32+
'no_comm_controller2': {'addr': 34, 'value': 0, 'property': '85'},
33+
'no_comm_controller3': {'addr': 35, 'value': 0, 'property': '85'},
34+
'no_comm_controller4': {'addr': 36, 'value': 0, 'property': '85'},
35+
'average_room_temperature': {'addr': 37, 'value': 0, 'property': '85'},
36+
'controller_presence': {'addr': 38, 'value': 0, 'property': '85'},
37+
'allow_hc_mode_change': {'addr': 39, 'value': 0, 'property': '85'},
38+
'hc_master_type': {'addr': 40, 'value': 0, 'property': '85'},
3939
}
4040

4141
# Controllers
4242
# Offset: 60 + 500 x c
4343
UHOME_CONTROLLER_KEYS = {
44-
'output_module': {'addr': 0, 'value': 0},
45-
'rh_deadzone': {'addr': 1, 'value': 0},
46-
'controller_sv_version': {'addr': 2, 'value': 0},
47-
'thermostat_presence': {'addr': 3, 'value': 0},
48-
'supply_high_alarm': {'addr': 4, 'value': 0},
49-
'supply_low_alarm': {'addr': 5, 'value': 0},
50-
'average_room_temperature_NO': {'addr': 6, 'value': 0},
51-
'measured_outdoor_temperature': {'addr': 7, 'value': 0},
52-
'supply_temp': {'addr': 8, 'value': 0},
53-
'dehumidifier_status': {'addr': 9, 'value': 0},
54-
'outdoor_sensor_presence': {'addr': 10, 'value': 0},
44+
'output_module': {'addr': 0, 'value': 0, 'property': '85'},
45+
'rh_deadzone': {'addr': 1, 'value': 0, 'property': '85'},
46+
'controller_sv_version': {'addr': 2, 'value': 0, 'property': '85'},
47+
'thermostat_presence': {'addr': 3, 'value': 0, 'property': '85'},
48+
'supply_high_alarm': {'addr': 4, 'value': 0, 'property': '85'},
49+
'supply_low_alarm': {'addr': 5, 'value': 0, 'property': '85'},
50+
'average_room_temperature_NO': {'addr': 6, 'value': 0, 'property': '85'},
51+
'measured_outdoor_temperature': {'addr': 7, 'value': 0, 'property': '85'},
52+
'supply_temp': {'addr': 8, 'value': 0, 'property': '85'},
53+
'dehumidifier_status': {'addr': 9, 'value': 0, 'property': '85'},
54+
'outdoor_sensor_presence': {'addr': 10, 'value': 0, 'property': '85'},
5555
}
5656

5757
# Thermostats
5858
# Offset: 80 + 500 x c + 40 x t
5959
UHOME_THERMOSTAT_KEYS = {
60-
'eco_profile_active_cf': {'addr': 0, 'value': 0},
61-
'dehumidifier_control_activation': {'addr': 1, 'value': 0},
62-
'rh_control_activation': {'addr': 2, 'value': 0},
63-
'eco_profile_number': {'addr': 3, 'value': 0},
64-
'setpoint_write_enable': {'addr': 4, 'value': 0},
65-
'cooling_allowed': {'addr': 5, 'value': 0},
66-
'rh_setpoint': {'addr': 6, 'value': 0},
67-
'min_setpoint': {'addr': 7, 'value': 0},
68-
'max_setpoint': {'addr': 8, 'value': 0},
69-
'min_floor_temp': {'addr': 9, 'value': 0},
70-
'max_floor_temp': {'addr': 10, 'value': 0},
71-
'room_setpoint': {'addr': 11, 'value': 0},
72-
'eco_offset': {'addr': 12, 'value': 0},
73-
'eco_profile_active': {'addr': 13, 'value': 0},
74-
'home_away_mode_status': {'addr': 14, 'value': 0},
75-
'room_in_demand': {'addr': 15, 'value': 0},
76-
'rh_limit_reached': {'addr': 16, 'value': 0},
77-
'floor_limit_status': {'addr': 17, 'value': 0},
78-
'technical_alarm': {'addr': 18, 'value': 0},
79-
'tamper_indication': {'addr': 19, 'value': 0},
80-
'rf_alarm': {'addr': 20, 'value': 0},
81-
'battery_alarm': {'addr': 21, 'value': 0},
82-
'rh_sensor': {'addr': 22, 'value': 0},
83-
'thermostat_type': {'addr': 23, 'value': 0},
84-
'regulation_mode': {'addr': 24, 'value': 0},
85-
'room_temperature': {'addr': 25, 'value': 0},
86-
'room_temperature_ext': {'addr': 26, 'value': 0},
87-
'rh_value': {'addr': 27, 'value': 0},
88-
'ch_linked_to_th': {'addr': 28, 'value': 0},
89-
'room_name': {'addr': 29, 'value': 0},
90-
'utilization_factor_24h': {'addr': 30, 'value': 0},
91-
'utilization_factor_7d': {'addr': 31, 'value': 0},
92-
'reg_mode': {'addr': 32, 'value': 0},
93-
'channel_average': {'addr': 33, 'value': 0},
94-
'radiator_heating': {'addr': 34, 'value': 0}
60+
'eco_profile_active_cf': {'addr': 0, 'value': 0, 'property': '85'},
61+
'dehumidifier_control_activation': {'addr': 1, 'value': 0, 'property': '85'},
62+
'rh_control_activation': {'addr': 2, 'value': 0, 'property': '85'},
63+
'eco_profile_number': {'addr': 3, 'value': 0, 'property': '85'},
64+
'setpoint_write_enable': {'addr': 4, 'value': 0, 'property': '85'},
65+
'cooling_allowed': {'addr': 5, 'value': 0, 'property': '85'},
66+
'rh_setpoint': {'addr': 6, 'value': 0, 'property': '85'},
67+
'min_setpoint': {'addr': 7, 'value': 0, 'property': '85'},
68+
'max_setpoint': {'addr': 8, 'value': 0, 'property': '85'},
69+
'min_floor_temp': {'addr': 9, 'value': 0, 'property': '85'},
70+
'max_floor_temp': {'addr': 10, 'value': 0, 'property': '85'},
71+
'room_setpoint': {'addr': 11, 'value': 0, 'property': '85'},
72+
'eco_offset': {'addr': 12, 'value': 0, 'property': '85'},
73+
'eco_profile_active': {'addr': 13, 'value': 0, 'property': '85'},
74+
'home_away_mode_status': {'addr': 14, 'value': 0, 'property': '85'},
75+
'room_in_demand': {'addr': 15, 'value': 0, 'property': '85'},
76+
'rh_limit_reached': {'addr': 16, 'value': 0, 'property': '85'},
77+
'floor_limit_status': {'addr': 17, 'value': 0, 'property': '85'},
78+
'technical_alarm': {'addr': 18, 'value': 0, 'property': '662'},
79+
'tamper_indication': {'addr': 19, 'value': 0, 'property': '662'},
80+
'rf_alarm': {'addr': 20, 'value': 0, 'property': '662'},
81+
'battery_alarm': {'addr': 21, 'value': 0, 'property': '662'},
82+
'rh_sensor': {'addr': 22, 'value': 0, 'property': '85'},
83+
'thermostat_type': {'addr': 23, 'value': 0, 'property': '85'},
84+
'regulation_mode': {'addr': 24, 'value': 0, 'property': '85'},
85+
'room_temperature': {'addr': 25, 'value': 0, 'property': '85'},
86+
'room_temperature_ext': {'addr': 26, 'value': 0, 'property': '85'},
87+
'rh_value': {'addr': 27, 'value': 0, 'property': '85'},
88+
'ch_linked_to_th': {'addr': 28, 'value': 0, 'property': '85'},
89+
'room_name': {'addr': 29, 'value': 0, 'property': '85'},
90+
'utilization_factor_24h': {'addr': 30, 'value': 0, 'property': '85'},
91+
'utilization_factor_7d': {'addr': 31, 'value': 0, 'property': '85'},
92+
'reg_mode': {'addr': 32, 'value': 0, 'property': '85'},
93+
'channel_average': {'addr': 33, 'value': 0, 'property': '85'},
94+
'radiator_heating': {'addr': 34, 'value': 0, 'property': '85'}
9595
}

0 commit comments

Comments
 (0)