-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathradiator_control.py
71 lines (61 loc) · 2.66 KB
/
radiator_control.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from eq3bt import Thermostat, Mode
class RadiatorControl:
def __init__(self, rooms):
self.rooms = rooms
self.radiators = {}
for room_name, value in self.rooms.items():
if isinstance(value, dict):
for k, v in value.items():
self.radiators[room_name + '_' + k] = v
else:
self.radiators[room_name] = value
def get_radiators(self):
return list(self.radiators.keys())
def get_rooms(self):
return list(self.rooms.keys())
def mode_auto(self, radiator):
if radiator in self.radiators.keys():
try:
t = Thermostat(self.radiators[radiator])
t.mode = Mode.Auto
return t.mode_readable
except:
return 'timeout'
def mode_off(self, radiator):
if radiator in self.radiators.keys():
try:
t = Thermostat(self.radiators[radiator])
t.mode = Mode.Closed
return t.mode_readable
except:
return 'timeout'
def mode_manual(self, radiator, temp):
if radiator in self.radiators.keys():
try:
t = Thermostat(self.radiators[radiator])
t.mode = Mode.Manual
t.target_temperature = temp
return self.__print_temp(t.mode_readable)
except:
return 'timeout'
def get_status(self, radiator):
if radiator in self.radiators.keys():
try:
t = Thermostat(self.radiators[radiator])
t.update()
answer = '\n'
answer += ' Locked: ' + str(t.locked) + '\n'
answer += ' Battery low: ' + str(t.low_battery) + '\n'
answer += ' Window open: ' + str(t.window_open) + '\n'
answer += ' Window open temp: ' + self.__print_temp(t.window_open_temperature) + '\n'
answer += ' Window open time: ' + str(t.window_open_time) + '\n'
answer += ' Boost: ' + str(t.boost) + '\n'
answer += ' Current target temp: ' + self.__print_temp(t.target_temperature) + '\n'
answer += ' Current comfort temp: ' + self.__print_temp(t.comfort_temperature) + '\n'
answer += ' Current eco temp: ' + self.__print_temp(t.eco_temperature) + '\n'
answer += ' Valve: ' + str(t.valve_state)
return answer
except:
return 'timeout'
def __print_temp(self, temperature):
return str(temperature).replace('(', '\(').replace(')', '\)').replace('.', '\.')