Op verzoek wil ik hier beschrijven hoe je een Mitsubishi airco met Airconwithme WiFi module kunt koppelen met Domoticz. Zoals wellicht bekend heeft de Airconwithme app niet veel mogelijkheden, sterker nog, na installatie van de module zijn alle timerfuncties van de afstandsbediening niet meer te gebruiken.
Omdat ik een tablet aan de muur heb hangen (met Dashticz) waarmee ik alles centraal kan bedienen zocht ik een manier om de Mitsubishi airco (wordt ook gebruikt om te verwarmen) hieraan toe te voegen. Na wat zoekwerk heb ik het bash script van tweaker KingOfDos als uitgangspunt genomen om verder mee te bouwen: https://gathering.tweaker...message/55811907#55811907
Het tablet scherm:
/f/image/l6Xq6Xm3zSUn3ml3ieHnjzTi.png?f=fotoalbum_large)
Zorg dat het IP-nummer van de Airconwithme module niet meer wijzigt, bv door een statische entry in de router aan te maken.
Eerste stap is het script werkende maken via command line:
Installeer het script in directory /home/pi/domoticz/scripts
Dit kan op meerdere manieren maar het handigste in het script kopiëren en plakken in de nano editor.
Login via ssh op de Raspberry Pi
tik in: nano /home/pi/domoticz/scripts/airco.sh
Plak het script (van tweaker KingOfDos) nu in de editor.
<ctrl o> om te saven
<ctrl x> om editor te verlaten
Maak het script uitvoerbaar:
tik in: chmod +x /home/pi/domoticz/scripts/airco.sh
Begin met het script te testen
Tik in: /home/pi/domoticz/scripts/airco.sh
Als het goed werkt geeft het script de opties die je mee kunt geven:
usage: /home/pi/domoticz/scripts/airco.sh ip set|get option [value]
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> get power
Geeft power status van airco (0 of 1)
Probeer nu airco aan of uit te zetten met:
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> set power on
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> set power off
Indien dit allemaal werkt kunnen alle andere functie getest worden.
Voeg in Domoticz de volgende dummy schakelaars toe:
/f/image/gyoOxFmocT8sBzGB8UhMQUHi.png?f=fotoalbum_large)
Details van de keuze schakelaars:
Voeg het volgende Lua script toe (trigger: device), IP-nummer wijzigen naar juiste nummer:
De namen van dummy schakelaars moeten overeen komen met de namen in het script.
Hierna zou het mogelijk moeten zijn de airco te bedienen vanuit Domoticz.
Voor de terugkoppeling draait er een bash script wat elk uur (of kwartier) de status van de airco en de bijbehorende dummy schakelaar in Domoticz opvraagt en bij een verschil de Domoticz settings bijwerkt.
voorbereiding:
Installeer jq
sudo apt install jq
Voeg in Domoticz (instellingen/systeem) 127.0.0.1 toe aan: Lokale netwerken (geen gebruikersnaam/wachtwoord)
Voeg het script toe:
Login via ssh op de Raspberry Pi
tik in: nano /home/pi/domoticz/scripts/airco_update.sh
Plak het script in de editor
Pas de variabelen en idx nummers van de dummy schakelaars aan
<ctrl o> om te saven
<ctrl x> om editor te verlaten
Maak het script uitvoerbaar:
tik in: chmod +x /home/pi/domoticz/scripts/airco_update.sh
Het script kan nu getest worden:
/home/pi/domoticz/scripts/airco_update.sh
Als er geen wijzigingen nodig zijn is er geen uitvoer.
Wijzig nu een airco setting via de airconwithme app of afstandsbediening
run script opnieuw:
/home/pi/domoticz/scripts/airco_update.sh
uitvoer zal iets zijn als:
{
"status" : "OK",
"title" : "SwitchLight"
}
Controleer in Domoticz of de setting goed is aangepast.
Eventueel kunnen alle andere settings gecontroleerd worden.
Als alles goed werkt kan het script in de crontab worden opgenomen zodat deze automatisch wordt uitgevoerd.
Voor een uurlijkse run:
sudo nano /etc/crontab
voeg toe:
0 * * * * pi /home/pi/domoticz/scripts/airco_update.sh
<ctrl> o
<ctrl> x
sudo service cron restart
Omdat ik een tablet aan de muur heb hangen (met Dashticz) waarmee ik alles centraal kan bedienen zocht ik een manier om de Mitsubishi airco (wordt ook gebruikt om te verwarmen) hieraan toe te voegen. Na wat zoekwerk heb ik het bash script van tweaker KingOfDos als uitgangspunt genomen om verder mee te bouwen: https://gathering.tweaker...message/55811907#55811907
Het tablet scherm:
/f/image/l6Xq6Xm3zSUn3ml3ieHnjzTi.png?f=fotoalbum_large)
Zorg dat het IP-nummer van de Airconwithme module niet meer wijzigt, bv door een statische entry in de router aan te maken.
Eerste stap is het script werkende maken via command line:
Installeer het script in directory /home/pi/domoticz/scripts
Dit kan op meerdere manieren maar het handigste in het script kopiëren en plakken in de nano editor.
Login via ssh op de Raspberry Pi
tik in: nano /home/pi/domoticz/scripts/airco.sh
Plak het script (van tweaker KingOfDos) nu in de editor.
<ctrl o> om te saven
<ctrl x> om editor te verlaten
Maak het script uitvoerbaar:
tik in: chmod +x /home/pi/domoticz/scripts/airco.sh
Begin met het script te testen
Tik in: /home/pi/domoticz/scripts/airco.sh
Als het goed werkt geeft het script de opties die je mee kunt geven:
usage: /home/pi/domoticz/scripts/airco.sh ip set|get option [value]
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> get power
Geeft power status van airco (0 of 1)
Probeer nu airco aan of uit te zetten met:
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> set power on
/home/pi/domoticz/scripts/airco.sh <ip-nummer airco> set power off
Indien dit allemaal werkt kunnen alle andere functie getest worden.
Voeg in Domoticz de volgende dummy schakelaars toe:
/f/image/gyoOxFmocT8sBzGB8UhMQUHi.png?f=fotoalbum_large)
Details van de keuze schakelaars:
![]() | ![]() | ![]() |
Voeg het volgende Lua script toe (trigger: device), IP-nummer wijzigen naar juiste nummer:
De namen van dummy schakelaars moeten overeen komen met de namen in het script.
Lua:
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
| commandArray = {} airco_ip = '192.168.77.21' script = '/home/pi/domoticz/scripts/airco.sh' --Airco aan/uit if (devicechanged['Airco']) then power = 'off' if (otherdevices['Airco'] == 'On') then power = 'on' end cmd = script..' '..airco_ip..' set power '..power print (cmd) os.execute(cmd) end --Airco temperatuur if (devicechanged['Airco Temperatuur']) then stemp = otherdevices_svalues['Airco Temperatuur'] stemp = math.abs(stemp * 10) cmd = script..' '..airco_ip..' set setpoint '..stemp print (cmd) os.execute(cmd) end --Airco mode if (devicechanged['Airco Mode']) then mode = 'fan' if (otherdevices['Airco Mode'] == 'Koelen') then mode = 'cool' elseif (otherdevices['Airco Mode'] == 'Verwarmen') then mode = 'heat' elseif (otherdevices['Airco Mode'] == 'Automatisch') then mode = 'auto' elseif (otherdevices['Airco Mode'] == 'Ontvochtigen') then mode = 'dry' elseif (otherdevices['Airco Mode'] == 'Ventileren') then mode = 'fan' end cmd = script..' '..airco_ip..' set mode '..mode print (cmd) os.execute(cmd) end --Airco snelheid if (devicechanged['Airco Snelheid']) then speed = '1' if (otherdevices['Airco Snelheid'] == '1') then speed = '1' elseif (otherdevices['Airco Snelheid'] == '2') then speed = '2' elseif (otherdevices['Airco Snelheid'] == '3') then speed = '3' elseif (otherdevices['Airco Snelheid'] == '4') then speed = '4' end cmd = script..' '..airco_ip..' set speed '..speed print (cmd) os.execute(cmd) end --Airco vane if (devicechanged['Airco Lamellen']) then vane = '1' if (otherdevices['Airco Lamellen'] == '1') then vane = '1' elseif (otherdevices['Airco Lamellen'] == '2') then vane = '2' elseif (otherdevices['Airco Lamellen'] == '3') then vane = '3' elseif (otherdevices['Airco Lamellen'] == '4') then vane = '4' elseif (otherdevices['Airco Lamellen'] == 'Swing') then vane = 'swing' end cmd = script..' '..airco_ip..' set vane '..vane print (cmd) os.execute(cmd) end return commandArray |
Hierna zou het mogelijk moeten zijn de airco te bedienen vanuit Domoticz.
Voor de terugkoppeling draait er een bash script wat elk uur (of kwartier) de status van de airco en de bijbehorende dummy schakelaar in Domoticz opvraagt en bij een verschil de Domoticz settings bijwerkt.
voorbereiding:
Installeer jq
sudo apt install jq
Voeg in Domoticz (instellingen/systeem) 127.0.0.1 toe aan: Lokale netwerken (geen gebruikersnaam/wachtwoord)
Voeg het script toe:
Login via ssh op de Raspberry Pi
tik in: nano /home/pi/domoticz/scripts/airco_update.sh
Plak het script in de editor
Pas de variabelen en idx nummers van de dummy schakelaars aan
<ctrl o> om te saven
<ctrl x> om editor te verlaten
Bash:
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
170
171
172
173
174
175
176
177
178
| #!/usr/bin/env bash #Dit script aanroepen in de crontab: #(run elke 15 min): */15 * * * * pi /home/pi/domoticz/scripts/airco_update.sh #of #(run elke 60 min): 0 * * * * pi /home/pi/domoticz/scripts/airco_update.sh #Indien nog aan het testen, elke 1 min): * * * * * pi /home/pi/domoticz/scripts/airco_update.sh #sudo nano /etc/crontab #sudo service cron restart #letop: installeer jq #sudo apt install jq #variabelen ipnummer=192.168.x.y poort=8080 pad=/home/pi/domoticz/scripts #dummy schakelaar idx tempidx=127 modeidx=128 poweridx=129 speedidx=130 vaneidx=133 returnidx=178 #power aircopower=$($pad/airco.sh $ipnummer get power) dompower=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$poweridx" | jq '.result[0].Data' | tr -d '"' ) power=Off if [ $aircopower = 1 ]; then power=On fi if [ $power != $dompower ]; then curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$poweridx&switchcmd=$power" fi #temperatuur aircotemp=$($pad/airco.sh $ipnummer get setpoint) domtemp=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$tempidx" | jq '.result[0].Data' | tr -d '"' ) domtemp=$(LANG=C printf "%.0f" ${domtemp}) temperatuur=$((aircotemp / 10)) if [ $aircotemp != "32768" ]; then if [ $temperatuur != $domtemp ]; then curl "http://127.0.0.1:$poort/json.htm?type=command¶m=udevice&idx=$tempidx&svalue=$temperatuur" fi fi #return temperatuur returntemp=$($pad/airco.sh $ipnummer get return) returntemp=$((returntemp / 10)) domreturntemp=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$returnidx" | jq '.result[0].Temp' | tr -d '"' ) domreturntemp=$(LANG=C printf "%.0f" ${domreturntemp}) if [ $returntemp != $domreturntemp ]; then curl "http://127.0.0.1:$poort/json.htm?type=command¶m=udevice&idx=$returnidx&svalue=$returntemp" fi #mode aircomode=$($pad/airco.sh $ipnummer get mode) dommode=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$modeidx" | jq '.result[0].Data' | tr -d '"' ) mode=3 case $dommode in "Set Level: 30 %") mode=0 ;; "Set Level: 20 %") mode=1 ;; "Set Level: 40 %") mode=2 ;; "Set Level: 50 %") mode=3 ;; "Set Level: 10 %") mode=4 ;; esac if [ $mode != $aircomode ]; then case $aircomode in 0) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$modeidx&switchcmd=Set%20Level&level=30" ;; 1) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$modeidx&switchcmd=Set%20Level&level=20" ;; 2) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$modeidx&switchcmd=Set%20Level&level=40" ;; 3) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$modeidx&switchcmd=Set%20Level&level=50" ;; 4) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$modeidx&switchcmd=Set%20Level&level=10" ;; esac fi #snelheid aircospeed=$($pad/airco.sh $ipnummer get speed) domspeed=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$speedidx" | jq '.result[0].Data' | tr -d '"' ) speed=2 case $domspeed in "Set Level: 10 %") speed=1 ;; "Set Level: 20 %") speed=2 ;; "Set Level: 30 %") speed=3 ;; "Set Level: 40 %") speed=4 ;; esac if [ $speed != $aircospeed ]; then case $aircospeed in 1) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$speedidx&switchcmd=Set%20Level&level=10" ;; 2) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$speedidx&switchcmd=Set%20Level&level=20" ;; 3) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$speedidx&switchcmd=Set%20Level&level=30" ;; 4) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$speedidx&switchcmd=Set%20Level&level=40" ;; esac fi #lamellen aircovane=$($pad/airco.sh $ipnummer get vane) domvane=$(curl -s "http://127.0.0.1:$poort/json.htm?type=devices&rid=$vaneidx" | jq '.result[0].Data' | tr -d '"' ) vane=1 case $domvane in "Set Level: 10 %") vane=1 ;; "Set Level: 20 %") vane=2 ;; "Set Level: 30 %") vane=3 ;; "Set Level: 40 %") vane=4 ;; "Set Level: 50 %") vane=10 ;; esac if [ $vane != $aircovane ]; then case $aircovane in 1) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$vaneidx&switchcmd=Set%20Level&level=10" ;; 2) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$vaneidx&switchcmd=Set%20Level&level=20" ;; 3) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$vaneidx&switchcmd=Set%20Level&level=30" ;; 4) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$vaneidx&switchcmd=Set%20Level&level=40" ;; 10) curl "http://127.0.0.1:$poort/json.htm?type=command¶m=switchlight&idx=$vaneidx&switchcmd=Set%20Level&level=50" ;; esac fi exit ${EXIT} |
Maak het script uitvoerbaar:
tik in: chmod +x /home/pi/domoticz/scripts/airco_update.sh
Het script kan nu getest worden:
/home/pi/domoticz/scripts/airco_update.sh
Als er geen wijzigingen nodig zijn is er geen uitvoer.
Wijzig nu een airco setting via de airconwithme app of afstandsbediening
run script opnieuw:
/home/pi/domoticz/scripts/airco_update.sh
uitvoer zal iets zijn als:
{
"status" : "OK",
"title" : "SwitchLight"
}
Controleer in Domoticz of de setting goed is aangepast.
Eventueel kunnen alle andere settings gecontroleerd worden.
Als alles goed werkt kan het script in de crontab worden opgenomen zodat deze automatisch wordt uitgevoerd.
Voor een uurlijkse run:
sudo nano /etc/crontab
voeg toe:
0 * * * * pi /home/pi/domoticz/scripts/airco_update.sh
<ctrl> o
<ctrl> x
sudo service cron restart
[ Voor 255% gewijzigd door Jef61 op 19-10-2020 20:28 ]