-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbroadlink.rules
More file actions
169 lines (148 loc) · 6.6 KB
/
broadlink.rules
File metadata and controls
169 lines (148 loc) · 6.6 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
var broadlink_cli_script = "/bin/python /etc/openhab2/scripts/python-broadlink/cli/broadlink_cli"
var broadlink_cli_send = "%1$s %2$s --send %3$s"
var bedroom_minisplit = "--type 0x5f36 --host 10.0.0.42 --mac 24dfa7dee9ca"
var living_room_minisplit = "--type 0x5f36 --host 10.0.0.59 --mac 24dfa7e016db"
var office_minisplit = "--type 0x5f36 --host 10.0.0.66 --mac 24dfa77a973a"
val miniSplitTemperatureChange = [ GenericItem giMiniSplitTemp, GenericItem giMiniSplitMode, String cliSend, String cliScript, String minisplit |
var newTemp = ""
if(giMiniSplitMode.state == 0){ // DRY MODE
if(giMiniSplitTemp.state == 64)
newTemp = transform("MAP", "mini_split.map", "DRY_64")
else if(giMiniSplitTemp.state == 66)
newTemp = transform("MAP", "mini_split.map", "DRY_66")
else if(giMiniSplitTemp.state == 68)
newTemp = transform("MAP", "mini_split.map", "DRY_68")
else if(giMiniSplitTemp.state == 70)
newTemp = transform("MAP", "mini_split.map", "DRY_70")
else if(giMiniSplitTemp.state == 72)
newTemp = transform("MAP", "mini_split.map", "DRY_72")
else if(giMiniSplitTemp.state == 74)
newTemp = transform("MAP", "mini_split.map", "DRY_74")
} else if(giMiniSplitMode.state == 2){ // HOT MODE
if(giMiniSplitTemp.state == 64)
newTemp = transform("MAP", "mini_split.map", "HOT_64")
else if(giMiniSplitTemp.state == 66)
newTemp = transform("MAP", "mini_split.map", "HOT_66")
else if(giMiniSplitTemp.state == 68)
newTemp = transform("MAP", "mini_split.map", "HOT_68")
else if(giMiniSplitTemp.state == 70)
newTemp = transform("MAP", "mini_split.map", "HOT_70")
else if(giMiniSplitTemp.state == 72)
newTemp = transform("MAP", "mini_split.map", "HOT_72")
else if(giMiniSplitTemp.state == 74)
newTemp = transform("MAP", "mini_split.map", "HOT_74")
}
executeCommandLine(String::format(cliSend, cliScript, minisplit, newTemp), 5000)
]
val roomTemperatureChange = [ GenericItem giMiniSplitTemp, GenericItem giRoomTemp, GenericItem giSavings, GenericItem giMode, int convertCelsius |
if(giMiniSplitTemp.state != NULL && giMiniSplitTemp.state > 0){
var Number miniSplitTemp = giMiniSplitTemp.state as Number
var Number currentTemp = giRoomTemp.state as Number
var maxTempAllowed = miniSplitTemp + 1.5
logInfo("roomTemperatureChange", "giMiniSplitTemp.state: {}, maxTempAllowed: {}", giMiniSplitTemp.state, maxTempAllowed)
if(convertCelsius == 1)
currentTemp = (currentTemp * 1.8) + 32
logInfo("roomTemperatureChange", "giRoomTemp.state: {}, currentTemp: {}", giRoomTemp.state, currentTemp)
if(giSavings.state == ON){
if(currentTemp >= maxTempAllowed)
giMode.sendCommand(0)
else if(currentTemp <= miniSplitTemp)
giMode.sendCommand(1)
}
}
]
val miniSplitPowerChange = [ GenericItem gi, String cliSend, String cliScript, String minisplit |
logInfo("miniSplitPowerChange", "gi.state: {}", gi.state)
if(gi.state == ON){
var on_hex = transform("MAP", "mini_split.map", "ON")
executeCommandLine(String::format(cliSend, cliScript, minisplit, on_hex), 5000)
} else if(gi.state == OFF){
var off_hex = transform("MAP", "mini_split.map", "OFF")
executeCommandLine(String::format(cliSend, cliScript, minisplit, off_hex), 5000)
}
]
val miniSplitModeChange = [ GenericItem gi, String cliSend, String cliScript, String minisplit |
logInfo("miniSplitModeChange", "gi.state: {}", gi.state)
if(gi.state == 0){
var drymode_hex = transform("MAP", "mini_split.map", "DRY_MODE")
executeCommandLine(String::format(cliSend, cliScript, minisplit, drymode_hex), 5000)
}else if(gi.state == 1){
var fanmode_hex = transform("MAP", "mini_split.map", "FAN_MODE")
executeCommandLine(String::format(cliSend, cliScript, minisplit, fanmode_hex), 5000)
}else if(gi.state == 2){
var heatmode_hex = transform("MAP", "mini_split.map", "HEAT_MODE")
executeCommandLine(String::format(cliSend, cliScript, minisplit, heatmode_hex), 5000)
}
]
rule "Living Room Mini Split Power"
when
Item LR_MiniSplit_Power received command
then
miniSplitPowerChange.apply(LR_MiniSplit_Power, broadlink_cli_send, broadlink_cli_script, living_room_minisplit)
end
rule "Living Room Mini Split Mode"
when
Item LR_MiniSplit_Mode received command
then
miniSplitModeChange.apply(LR_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, living_room_minisplit)
end
rule "Bedroom Mini Split Power"
when
Item BR_MiniSplit_Power received command
then
miniSplitPowerChange.apply(BR_MiniSplit_Power, broadlink_cli_send, broadlink_cli_script, bedroom_minisplit)
end
rule "Bedroom Mini Split Mode"
when
Item BR_MiniSplit_Mode received command
then
miniSplitModeChange.apply(BR_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, bedroom_minisplit)
end
rule "Office Mini Split Power"
when
Item Office_MiniSplit_Power received command
then
miniSplitPowerChange.apply(Office_MiniSplit_Power, broadlink_cli_send, broadlink_cli_script, office_minisplit)
end
rule "Office Mini Split Mode"
when
Item Office_MiniSplit_Mode received command
then
miniSplitModeChange.apply(Office_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, office_minisplit)
end
rule "Bedroom Mini Split Temp"
when
Item BR_MiniSplit_Temp received command
then
miniSplitTemperatureChange.apply(BR_MiniSplit_Temp, BR_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, bedroom_minisplit)
end
rule "Living Room Mini Split Temp"
when
Item LR_MiniSplit_Temp received command
then
miniSplitTemperatureChange.apply(LR_MiniSplit_Temp, LR_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, living_room_minisplit)
end
rule "Office Mini Split Temp"
when
Item Office_MiniSplit_Temp received command
then
miniSplitTemperatureChange.apply(Office_MiniSplit_Temp, Office_MiniSplit_Mode, broadlink_cli_send, broadlink_cli_script, office_minisplit)
end
rule "Bedroom Temp received update"
when
Item BR_BedTemperature received update
then
roomTemperatureChange.apply(BR_MiniSplit_Temp, BR_BedTemperature, BR_MiniSplit_Savings, BR_MiniSplit_Mode, 1)
end
rule "Living Room Temp received update"
when
Item LR_Temperature received update
then
roomTemperatureChange.apply(LR_MiniSplit_Temp, LR_Temperature, LR_MiniSplit_Savings, LR_MiniSplit_Mode, 0)
end
rule "Office Temp received update"
when
Item Hallway_Temperature received update
then
roomTemperatureChange.apply(Office_MiniSplit_Temp, Hallway_Temperature, Office_MiniSplit_Savings, Office_MiniSplit_Mode, 1)
end