IRremoteESP8266

IRac.h
Go to the documentation of this file.
1 #ifndef IRAC_H_
2 #define IRAC_H_
3
4 // Copyright 2019 David Conran
5
6 #ifndef UNIT_TEST
7 #include <Arduino.h>
8 #else
9 #include <memory>
10 #endif
11 #include "IRremoteESP8266.h"
12 #include "ir_Airton.h"
13 #include "ir_Airwell.h"
14 #include "ir_Amcor.h"
15 #include "ir_Argo.h"
16 #include "ir_Bosch.h"
17 #include "ir_Carrier.h"
18 #include "ir_Coolix.h"
19 #include "ir_Corona.h"
20 #include "ir_Daikin.h"
21 #include "ir_Delonghi.h"
22 #include "ir_Fujitsu.h"
23 #include "ir_Ecoclim.h"
24 #include "ir_Electra.h"
25 #include "ir_Goodweather.h"
26 #include "ir_Gree.h"
27 #include "ir_Haier.h"
28 #include "ir_Hitachi.h"
29 #include "ir_Kelon.h"
30 #include "ir_Kelvinator.h"
31 #include "ir_LG.h"
32 #include "ir_Midea.h"
33 #include "ir_Mirage.h"
34 #include "ir_Mitsubishi.h"
35 #include "ir_MitsubishiHeavy.h"
36 #include "ir_Neoclima.h"
37 #include "ir_Panasonic.h"
38 #include "ir_Rhoss.h"
39 #include "ir_Samsung.h"
40 #include "ir_Sanyo.h"
41 #include "ir_Sharp.h"
42 #include "ir_Tcl.h"
43 #include "ir_Technibel.h"
44 #include "ir_Teco.h"
45 #include "ir_Toshiba.h"
46 #include "ir_Transcold.h"
47 #include "ir_Trotec.h"
48 #include "ir_Truma.h"
49 #include "ir_Vestel.h"
50 #include "ir_Voltas.h"
51 #include "ir_Whirlpool.h"
52 #include "ir_York.h"
53
54 // Constants
55 const int8_t kGpioUnused = -1;
56
57 // Class
59 class IRac {
60 public:
61 explicit IRac(const uint16_t pin, const bool inverted = false,
62 const bool use_modulation = true);
63 static bool isProtocolSupported(const decode_type_t protocol);
64 static void initState(stdAc::state_t *state,
65 const decode_type_t vendor, const int16_t model,
66 const bool power, const stdAc::opmode_t mode,
67 const float degrees, const bool celsius,
68 const stdAc::fanspeed_t fan,
69 const stdAc::swingv_t swingv,
70 const stdAc::swingh_t swingh,
71 const bool quiet, const bool turbo, const bool econo,
72 const bool light, const bool filter, const bool clean,
73 const bool beep, const int16_t sleep,
74 const int16_t clock);
75 static void initState(stdAc::state_t *state);
76 void markAsSent(void);
77 bool sendAc(void);
78 bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
79 bool sendAc(const decode_type_t vendor, const int16_t model,
80 const bool power, const stdAc::opmode_t mode, const float degrees,
81 const bool celsius, const stdAc::fanspeed_t fan,
82 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
83 const bool quiet, const bool turbo, const bool econo,
84 const bool light, const bool filter, const bool clean,
85 const bool beep, const int16_t sleep = -1,
86 const int16_t clock = -1);
87 static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
88 static bool strToBool(const char *str, const bool def = false);
89 static int16_t strToModel(const char *str, const int16_t def = -1);
90 static stdAc::ac_command_t strToCommandType(const char *str,
91 const stdAc::ac_command_t def = stdAc::ac_command_t::kControlCommand);
92 static stdAc::opmode_t strToOpmode(
93 const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
94 static stdAc::fanspeed_t strToFanspeed(
95 const char *str,
96 const stdAc::fanspeed_t def = stdAc::fanspeed_t::kAuto);
97 static stdAc::swingv_t strToSwingV(
98 const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
99 static stdAc::swingh_t strToSwingH(
100 const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
101 static String boolToString(const bool value);
102 static String commandTypeToString(const stdAc::ac_command_t cmdType);
103 static String opmodeToString(const stdAc::opmode_t mode,
104 const bool ha = false);
105 static String fanspeedToString(const stdAc::fanspeed_t speed);
106 static String swingvToString(const stdAc::swingv_t swingv);
107 static String swinghToString(const stdAc::swingh_t swingh);
108 stdAc::state_t getState(void);
109 stdAc::state_t getStatePrev(void);
110 bool hasStateChanged(void);
111 stdAc::state_t next;
112 #ifdef UNIT_TEST
113 std::shared_ptr<IRrecv> _utReceiver = nullptr;
117 std::unique_ptr<decode_results> _lastDecodeResults = nullptr;
119 #else
120
121 private:
122 #endif // UNIT_TEST
123 uint16_t _pin;
124 bool _inverted;
125 bool _modulation;
126 stdAc::state_t _prev;
127 #if SEND_AIRTON
128 void airton(IRAirtonAc *ac,
129 const bool on, const stdAc::opmode_t mode,
130 const float degrees, const stdAc::fanspeed_t fan,
131 const stdAc::swingv_t swingv, const bool turbo,
132 const bool light, const bool econo, const bool filter,
133 const int16_t sleep = -1);
134 #endif // SEND_AIRTON
135 #if SEND_AIRWELL
136 void airwell(IRAirwellAc *ac,
137 const bool on, const stdAc::opmode_t mode, const float degrees,
138 const stdAc::fanspeed_t fan);
139 #endif // SEND_AIRWELL
140 #if SEND_AMCOR
141 void amcor(IRAmcorAc *ac,
142 const bool on, const stdAc::opmode_t mode, const float degrees,
143 const stdAc::fanspeed_t fan);
144 #endif // SEND_AMCOR
145 #if SEND_ARGO
146 void argo(IRArgoAC *ac,
147 const bool on, const stdAc::opmode_t mode, const float degrees,
148 const float sensorTemp, const stdAc::fanspeed_t fan,
149 const stdAc::swingv_t swingv, const bool iFeel, const bool turbo,
150 const int16_t sleep = -1);
151 void argoWrem3_ACCommand(IRArgoAC_WREM3 *ac,
152 const bool on, const stdAc::opmode_t mode, const float degrees,
153 const float sensorTemp, const stdAc::fanspeed_t fan,
154 const stdAc::swingv_t swingv, const bool iFeel, const bool night,
155 const bool econo, const bool turbo, const bool filter, const bool light);
156 void argoWrem3_iFeelReport(IRArgoAC_WREM3 *ac, const float sensorTemp);
157 void argoWrem3_ConfigSet(IRArgoAC_WREM3 *ac, const uint8_t param,
158 const uint8_t value, bool safe = true);
159 void argoWrem3_SetTimer(IRArgoAC_WREM3 *ac, bool on,
160 const uint16_t currentTime, const uint16_t delayMinutes);
161 #endif // SEND_ARGO
162 #if SEND_BOSCH144
163 void bosch144(IRBosch144AC *ac,
164 const bool on, const stdAc::opmode_t mode, const float degrees,
165 const stdAc::fanspeed_t fan,
166 const bool quiet);
167 #endif // SEND_BOSCH144
168 #if SEND_CARRIER_AC64
169 void carrier64(IRCarrierAc64 *ac,
170 const bool on, const stdAc::opmode_t mode,
171 const float degrees, const stdAc::fanspeed_t fan,
172 const stdAc::swingv_t swingv, const int16_t sleep = -1);
173 #endif // SEND_CARRIER_AC64
174 #if SEND_COOLIX
175 void coolix(IRCoolixAC *ac,
176 const bool on, const stdAc::opmode_t mode, const float degrees,
177 const float sensorTemp, const stdAc::fanspeed_t fan,
178 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
179 const bool iFeel, const bool turbo, const bool light,
180 const bool clean, const int16_t sleep = -1);
181 #endif // SEND_COOLIX
182 #if SEND_CORONA_AC
183 void corona(IRCoronaAc *ac,
184 const bool on, const stdAc::opmode_t mode,
185 const float degrees, const stdAc::fanspeed_t fan,
186 const stdAc::swingv_t swingv, const bool econo);
187 #endif // SEND_CORONA_AC
188 #if SEND_DAIKIN
189 void daikin(IRDaikinESP *ac,
190 const bool on, const stdAc::opmode_t mode, const float degrees,
191 const stdAc::fanspeed_t fan,
192 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
193 const bool quiet, const bool turbo, const bool econo,
194 const bool clean);
195 #endif // SEND_DAIKIN
196 #if SEND_DAIKIN128
197 void daikin128(IRDaikin128 *ac,
198 const bool on, const stdAc::opmode_t mode,
199 const float degrees, const stdAc::fanspeed_t fan,
200 const stdAc::swingv_t swingv,
201 const bool quiet, const bool turbo, const bool light,
202 const bool econo, const int16_t sleep = -1,
203 const int16_t clock = -1);
204 #endif // SEND_DAIKIN128
205 #if SEND_DAIKIN152
206 void daikin152(IRDaikin152 *ac,
207 const bool on, const stdAc::opmode_t mode,
208 const float degrees, const stdAc::fanspeed_t fan,
209 const stdAc::swingv_t swingv,
210 const bool quiet, const bool turbo, const bool econo);
211 #endif // SEND_DAIKIN152
212 #if SEND_DAIKIN160
213 void daikin160(IRDaikin160 *ac,
214 const bool on, const stdAc::opmode_t mode,
215 const float degrees, const stdAc::fanspeed_t fan,
216 const stdAc::swingv_t swingv);
217 #endif // SEND_DAIKIN160
218 #if SEND_DAIKIN176
219 void daikin176(IRDaikin176 *ac,
220 const bool on, const stdAc::opmode_t mode,
221 const float degrees, const stdAc::fanspeed_t fan,
222 const stdAc::swingh_t swingh);
223 #endif // SEND_DAIKIN176
224 #if SEND_DAIKIN2
225 void daikin2(IRDaikin2 *ac,
226 const bool on, const stdAc::opmode_t mode,
227 const float degrees, const stdAc::fanspeed_t fan,
228 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
229 const bool quiet, const bool turbo, const bool light,
230 const bool econo, const bool filter, const bool clean,
231 const bool beep, const int16_t sleep = -1,
232 const int16_t clock = -1);
233 #endif // SEND_DAIKIN2
234 #if SEND_DAIKIN216
235 void daikin216(IRDaikin216 *ac,
236 const bool on, const stdAc::opmode_t mode,
237 const float degrees, const stdAc::fanspeed_t fan,
238 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
239 const bool quiet, const bool turbo);
240 #endif // SEND_DAIKIN216
241 #if SEND_DAIKIN64
242 void daikin64(IRDaikin64 *ac,
243 const bool on, const stdAc::opmode_t mode,
244 const float degrees, const stdAc::fanspeed_t fan,
245 const stdAc::swingv_t swingv,
246 const bool quiet, const bool turbo,
247 const int16_t sleep = -1, const int16_t clock = -1);
248 #endif // SEND_DAIKIN64
249 #if SEND_DELONGHI_AC
250 void delonghiac(IRDelonghiAc *ac,
251 const bool on, const stdAc::opmode_t mode, const bool celsius,
252 const float degrees, const stdAc::fanspeed_t fan,
253 const bool turbo, const int16_t sleep = -1);
254 #endif // SEND_DELONGHI_AC
255 #if SEND_ECOCLIM
256 void ecoclim(IREcoclimAc *ac,
257 const bool on, const stdAc::opmode_t mode,
258 const float degrees, const float sensorTemp,
259 const stdAc::fanspeed_t fan, const int16_t sleep = -1,
260 const int16_t clock = -1);
261 #endif // SEND_ECOCLIM
262 #if SEND_ELECTRA_AC
263 void electra(IRElectraAc *ac,
264 const bool on, const stdAc::opmode_t mode,
265 const float degrees, const float sensorTemp,
266 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
267 const stdAc::swingh_t swingh, const bool iFeel, const bool turbo,
268 const bool lighttoggle, const bool clean);
269 #endif // SEND_ELECTRA_AC
270 #if SEND_FUJITSU_AC
271 void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
272 const bool on, const stdAc::opmode_t mode,
273 const bool celsius, const float degrees,
274 const stdAc::fanspeed_t fan,
275 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
276 const bool quiet, const bool turbo, const bool econo,
277 const bool filter, const bool clean, const int16_t sleep = -1);
278 #endif // SEND_FUJITSU_AC
279 #if SEND_GOODWEATHER
280 void goodweather(IRGoodweatherAc *ac,
281 const bool on, const stdAc::opmode_t mode,
282 const float degrees,
283 const stdAc::fanspeed_t fan,
284 const stdAc::swingv_t swingv,
285 const bool turbo, const bool light,
286 const int16_t sleep = -1);
287 #endif // SEND_GOODWEATHER
288 #if SEND_GREE
289 void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
290 const bool on, const stdAc::opmode_t mode, const bool celsius,
291 const float degrees, const stdAc::fanspeed_t fan,
292 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
293 const bool iFeel, const bool turbo, const bool econo,
294 const bool light, const bool clean, const int16_t sleep = -1);
295 #endif // SEND_GREE
296 #if SEND_HAIER_AC
297 void haier(IRHaierAC *ac,
298 const bool on, const stdAc::opmode_t mode, const float degrees,
299 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
300 const bool filter, const int16_t sleep = -1,
301 const int16_t clock = -1);
302 #endif // SEND_HAIER_AC
303 #if SEND_HAIER_AC160
304 void haier160(IRHaierAC160 *ac,
305 const bool on, const stdAc::opmode_t mode, const bool celsius,
306 const float degrees, const stdAc::fanspeed_t fan,
307 const stdAc::swingv_t swingv,
308 const bool turbo, const bool quiet, const bool filter,
309 const bool clean, const bool light, const bool prevlight,
310 const int16_t sleep = -1);
311 #endif // SEND_HAIER_AC160
312 #if SEND_HAIER_AC176
313 void haier176(IRHaierAC176 *ac,
314 const haier_ac176_remote_model_t model, const bool on,
315 const stdAc::opmode_t mode, const bool celsius,
316 const float degrees, const stdAc::fanspeed_t fan,
317 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
318 const bool turbo, const bool quiet, const bool filter,
319 const int16_t sleep = -1);
320 #endif // SEND_HAIER_AC176
321 #if SEND_HAIER_AC_YRW02
322 void haierYrwo2(IRHaierACYRW02 *ac,
323 const bool on, const stdAc::opmode_t mode,
324 const bool celsius, const float degrees,
325 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
326 const stdAc::swingh_t swingh, const bool turbo,
327 const bool quiet, const bool filter,
328 const int16_t sleep = -1);
329 #endif // SEND_HAIER_AC_YRW02
330 #if SEND_HITACHI_AC
331 void hitachi(IRHitachiAc *ac,
332 const bool on, const stdAc::opmode_t mode,
333 const float degrees, const stdAc::fanspeed_t fan,
334 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
335 #endif // SEND_HITACHI_AC
336 #if SEND_HITACHI_AC1
337 void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
338 const bool on, const bool power_toggle,
339 const stdAc::opmode_t mode,
340 const float degrees, const stdAc::fanspeed_t fan,
341 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
342 const bool swing_toggle, const int16_t sleep = -1);
343 #endif // SEND_HITACHI_AC1
344 #if SEND_HITACHI_AC264
345 void hitachi264(IRHitachiAc264 *ac,
346 const bool on, const stdAc::opmode_t mode,
347 const float degrees, const stdAc::fanspeed_t fan);
348 #endif // SEND_HITACHI_AC264
349 #if SEND_HITACHI_AC296
350 void hitachi296(IRHitachiAc296 *ac,
351 const bool on, const stdAc::opmode_t mode,
352 const float degrees, const stdAc::fanspeed_t fan);
353 #endif // SEND_HITACHI_AC296
354 #if SEND_HITACHI_AC344
355 void hitachi344(IRHitachiAc344 *ac,
356 const bool on, const stdAc::opmode_t mode,
357 const float degrees, const stdAc::fanspeed_t fan,
358 const stdAc::swingv_t swingv,
359 const stdAc::swingh_t swingh);
360 #endif // SEND_HITACHI_AC344
361 #if SEND_HITACHI_AC424
362 void hitachi424(IRHitachiAc424 *ac,
363 const bool on, const stdAc::opmode_t mode,
364 const float degrees, const stdAc::fanspeed_t fan,
365 const stdAc::swingv_t swingv);
366 #endif // SEND_HITACHI_AC424
367 #if SEND_KELON
368 void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
369 const int8_t dryGrade, const float degrees,
370 const stdAc::fanspeed_t fan, const bool toggleSwing,
371 const bool superCool, const int16_t sleep);
372 #endif // SEND_KELON
373 #if SEND_KELVINATOR
374 void kelvinator(IRKelvinatorAC *ac,
375 const bool on, const stdAc::opmode_t mode,
376 const float degrees, const stdAc::fanspeed_t fan,
377 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
378 const bool quiet, const bool turbo, const bool light,
379 const bool filter, const bool clean);
380 #endif // SEND_KELVINATOR
381 #if SEND_LG
382 void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
383 const bool on, const stdAc::opmode_t mode,
384 const float degrees, const stdAc::fanspeed_t fan,
385 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
386 const stdAc::swingh_t swingh, const bool light);
387 #endif // SEND_LG
388 #if SEND_MIDEA
389 void midea(IRMideaAC *ac,
390 const bool on, const stdAc::opmode_t mode, const bool celsius,
391 const float degrees, const float sensorTemp,
392 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
393 const bool iFeel, const bool quiet, const bool quiet_prev,
394 const bool turbo, const bool econo, const bool light,
395 const bool clean, const int16_t sleep = -1);
396 #endif // SEND_MIDEA
397 #if SEND_MIRAGE
398 void mirage(IRMirageAc *ac, const stdAc::state_t state);
399 #endif // SEND_MIRAGE
400 #if SEND_MITSUBISHI_AC
401 void mitsubishi(IRMitsubishiAC *ac,
402 const bool on, const stdAc::opmode_t mode,
403 const float degrees,
404 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
405 const stdAc::swingh_t swingh,
406 const bool quiet, const int16_t clock = -1);
407 #endif // SEND_MITSUBISHI_AC
408 #if SEND_MITSUBISHI112
409 void mitsubishi112(IRMitsubishi112 *ac,
410 const bool on, const stdAc::opmode_t mode,
411 const float degrees, const stdAc::fanspeed_t fan,
412 const stdAc::swingv_t swingv,
413 const stdAc::swingh_t swingh,
414 const bool quiet);
415 #endif // SEND_MITSUBISHI112
416 #if SEND_MITSUBISHI136
417 void mitsubishi136(IRMitsubishi136 *ac,
418 const bool on, const stdAc::opmode_t mode,
419 const float degrees, const stdAc::fanspeed_t fan,
420 const stdAc::swingv_t swingv, const bool quiet);
421 #endif // SEND_MITSUBISHI136
422 #if SEND_MITSUBISHIHEAVY
423 void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac,
424 const bool on, const stdAc::opmode_t mode,
425 const float degrees, const stdAc::fanspeed_t fan,
426 const stdAc::swingv_t swingv,
427 const stdAc::swingh_t swingh,
428 const bool turbo, const bool econo, const bool clean);
429 void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac,
430 const bool on, const stdAc::opmode_t mode,
431 const float degrees, const stdAc::fanspeed_t fan,
432 const stdAc::swingv_t swingv,
433 const stdAc::swingh_t swingh,
434 const bool quiet, const bool turbo, const bool econo,
435 const bool filter, const bool clean,
436 const int16_t sleep = -1);
437 #endif // SEND_MITSUBISHIHEAVY
438 #if SEND_NEOCLIMA
439 void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
440 const bool celsius, const float degrees,
441 const stdAc::fanspeed_t fan,
442 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
443 const bool turbo, const bool econo, const bool light,
444 const bool filter, const int16_t sleep = -1);
445 #endif // SEND_NEOCLIMA
446 #if SEND_PANASONIC_AC
447 void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
448 const bool on, const stdAc::opmode_t mode, const float degrees,
449 const stdAc::fanspeed_t fan,
450 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
451 const bool quiet, const bool turbo, const bool filter,
452 const int16_t clock = -1);
453 #endif // SEND_PANASONIC_AC
454 #if SEND_PANASONIC_AC32
455 void panasonic32(IRPanasonicAc32 *ac,
456 const bool on, const stdAc::opmode_t mode,
457 const float degrees, const stdAc::fanspeed_t fan,
458 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
459 #endif // SEND_PANASONIC_AC32
460 #if SEND_RHOSS
461 void rhoss(IRRhossAc *ac,
462 const bool on, const stdAc::opmode_t mode, const float degrees,
463 const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
464 #endif // SEND_RHOSS
465 #if SEND_SAMSUNG_AC
466 void samsung(IRSamsungAc *ac,
467 const bool on, const stdAc::opmode_t mode, const float degrees,
468 const stdAc::fanspeed_t fan,
469 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
470 const bool quiet, const bool turbo, const bool econo,
471 const bool light, const bool filter, const bool clean,
472 const bool beep, const int16_t sleep = -1,
473 const bool prevpower = true, const int16_t prevsleep = -1,
474 const bool forceextended = true);
475 #endif // SEND_SAMSUNG_AC
476 #if SEND_SANYO_AC
477 void sanyo(IRSanyoAc *ac,
478 const bool on, const stdAc::opmode_t mode, const float degrees,
479 const float sensorTemp, const stdAc::fanspeed_t fan,
480 const stdAc::swingv_t swingv, const bool iFeel, const bool beep,
481 const int16_t sleep = -1);
482 #endif // SEND_SANYO_AC
483 #if SEND_SANYO_AC88
484 void sanyo88(IRSanyoAc88 *ac,
485 const bool on, const stdAc::opmode_t mode,
486 const float degrees, const stdAc::fanspeed_t fan,
487 const stdAc::swingv_t swingv, const bool turbo,
488 const bool filter,
489 const int16_t sleep = -1, const int16_t clock = -1);
490 #endif // SEND_SANYO_AC88
491 #if SEND_SHARP_AC
492 void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
493 const bool on, const bool prev_power, const stdAc::opmode_t mode,
494 const float degrees, const stdAc::fanspeed_t fan,
495 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
496 const bool turbo, const bool light,
497 const bool filter, const bool clean);
498 #endif // SEND_SHARP_AC
499 #if SEND_TCL112AC
500 void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
501 const bool on, const stdAc::opmode_t mode, const float degrees,
502 const stdAc::fanspeed_t fan,
503 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
504 const bool quiet, const bool turbo, const bool light,
505 const bool econo, const bool filter);
506 #endif // SEND_TCL112AC
507 #if SEND_TECHNIBEL_AC
508 void technibel(IRTechnibelAc *ac,
509 const bool on, const stdAc::opmode_t mode, const bool celsius,
510 const float degrees, const stdAc::fanspeed_t fan,
511 const stdAc::swingv_t swingv, const int16_t sleep = -1);
512 #endif // SEND_TECHNIBEL_AC
513 #if SEND_TECO
514 void teco(IRTecoAc *ac,
515 const bool on, const stdAc::opmode_t mode, const float degrees,
516 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
517 const bool light, const int16_t sleep = -1);
518 #endif // SEND_TECO
519 #if SEND_TOSHIBA_AC
520 void toshiba(IRToshibaAC *ac,
521 const bool on, const stdAc::opmode_t mode, const float degrees,
522 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
523 const bool turbo, const bool econo, const bool filter);
524 #endif // SEND_TOSHIBA_AC
525 #if SEND_TROTEC
526 void trotec(IRTrotecESP *ac,
527 const bool on, const stdAc::opmode_t mode, const float degrees,
528 const stdAc::fanspeed_t fan, const int16_t sleep = -1);
529 #endif // SEND_TROTEC
530 #if SEND_TROTEC_3550
531 void trotec3550(IRTrotec3550 *ac,
532 const bool on, const stdAc::opmode_t mode,
533 const bool celsius, const float degrees,
534 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
535 #endif // SEND_TROTEC_3550
536 #if SEND_TRUMA
537 void truma(IRTrumaAc *ac,
538 const bool on, const stdAc::opmode_t mode, const float degrees,
539 const stdAc::fanspeed_t fan, const bool quiet);
540 #endif // SEND_TRUMA
541 #if SEND_VESTEL_AC
542 void vestel(IRVestelAc *ac,
543 const bool on, const stdAc::opmode_t mode, const float degrees,
544 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
545 const bool turbo, const bool filter,
546 const int16_t sleep = -1, const int16_t clock = -1,
547 const bool sendNormal = true);
548 #endif // SEND_VESTEL_AC
549 #if SEND_VOLTAS
550 void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
551 const bool on, const stdAc::opmode_t mode,
552 const float degrees, const stdAc::fanspeed_t fan,
553 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
554 const bool turbo, const bool econo, const bool light,
555 const int16_t sleep = -1);
556 #endif // SEND_VOLTAS
557 #if SEND_WHIRLPOOL_AC
558 void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model,
559 const bool on, const stdAc::opmode_t mode, const float degrees,
560 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
561 const bool turbo, const bool light,
562 const int16_t sleep = -1, const int16_t clock = -1);
563 #endif // SEND_WHIRLPOOL_AC
564 #if SEND_TRANSCOLD
565 void transcold(IRTranscoldAc *ac,
566 const bool on, const stdAc::opmode_t mode, const float degrees,
567 const stdAc::fanspeed_t fan,
568 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
569 #endif // SEND_TRANSCOLD
570 static stdAc::state_t cleanState(const stdAc::state_t state);
571 static stdAc::state_t handleToggles(const stdAc::state_t desired,
572 const stdAc::state_t *prev = NULL);
573 }; // IRac class
574
576 namespace IRAcUtils {
577 String resultAcToString(const decode_results * const results);
578 bool decodeToState(const decode_results *decode, stdAc::state_t *result,
579 const stdAc::state_t *prev = NULL);
580 } // namespace IRAcUtils
581 #endif // IRAC_H_
IRPanasonicAc
Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:104
IRac::airwell
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:428
ir_Kelvinator.h
Support for Kelvinator A/C protocols.
IRac::electra
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool iFeel, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:1173
IRSamsungAc
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:186
IRac::commandTypeToString
static String commandTypeToString(const stdAc::ac_command_t cmdType)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:3979
IRac::hitachi
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1536
IRToshibaAC
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:127
decode_type_t
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:1011
IRac::getStatePrev
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:182
IRac::getState
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:177
IRMitsubishiHeavy152Ac
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:184
IRac::strToSwingH
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3811
IRac::hitachi344
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1670
stdAc::opmode_t::kAuto
@ kAuto
IRAirtonAc
Class for handling detailed Airton 56-bit A/C messages.
Definition: ir_Airton.h:75
ir_Electra.h
Support for Electra A/C protocols.
IRac::markAsSent
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:3642
stdAc::swingv_t
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:74
ir_Airwell.h
Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
IRac::daikin2
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:997
IRac::strToCommandType
static stdAc::ac_command_t strToCommandType(const char *str, const stdAc::ac_command_t def=stdAc::ac_command_t::kControlCommand)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3679
ir_Trotec.h
Support for Trotec protocols.
ir_Bosch.h
Support for Bosch A/C protocol.
IRac::argoWrem3_SetTimer
void argoWrem3_SetTimer(IRArgoAC_WREM3 *ac, bool on, const uint16_t currentTime, const uint16_t delayMinutes)
Send an Argo A/C WREM-3 Delay timer command.
Definition: IRac.cpp:620
IRDaikinESP
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:723
IRDelonghiAc
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:73
IRCoronaAc
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:107
IRac::kelvinator
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1773
IRDaikin2
Class for handling detailed Daikin 312-bit A/C messages.
Definition: ir_Daikin.h:805
IRac::fujitsu
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:1220
ir_Neoclima.h
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
IRDaikin128
Class for handling detailed Daikin 128-bit A/C messages.
Definition: ir_Daikin.h:1070
stdAc::fanspeed_t
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:61
ir_Sharp.h
Support for Sharp protocols.
IRac::fanspeedToString
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:4008
whirlpool_ac_remote_model_t
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:211
ir_Carrier.h
Carrier A/C.
IRac::whirlpool
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:2754
decode_results
Results returned from the decoder.
Definition: IRrecv.h:99
IRac::daikin64
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:1066
IRac::samsung
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const bool prevpower=true, const int16_t prevsleep=-1, const bool forceextended=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:2241
IRac::voltas
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:2713
IRac::transcold
void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Transcold A/C message with the supplied settings.
Definition: IRac.cpp:2791
tcl_ac_remote_model_t
tcl_ac_remote_model_t
TCL (& Teknopoint) A/C model numbers.
Definition: IRsend.h:199
IRac::sendAc
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:3648
IRac::cmpStates
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:3659
IRac::argoWrem3_ConfigSet
void argoWrem3_ConfigSet(IRArgoAC_WREM3 *ac, const uint8_t param, const uint8_t value, bool safe=true)
Send an Argo A/C WREM-3 Config command.
Definition: IRac.cpp:588
ir_Midea.h
Support for Midea protocols. Midea added by crankyoldgit & bwze.
ir_Daikin.h
Support for Daikin A/C protocols.
gree_ac_remote_model_t
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:155
IRDaikin64
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:1200
IRac::haierYrwo2
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1500
ir_Coolix.h
Support for Coolix A/C protocols.
IRac::vestel
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:2671
IRRhossAc
Class for handling detailed Rhoss A/C messages.
Definition: ir_Rhoss.h:94
IRHitachiAc424
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:497
IRac::daikin
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:833
IRac::IRac
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:107
IRDaikin216
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:903
IRVoltas
Class for handling detailed Voltas A/C messages.
Definition: ir_Voltas.h:91
IRac::sharp
void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:2374
hitachi_ac1_remote_model_t
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:169
IRac::haier176
void haier176(IRHaierAC176 *ac, const haier_ac176_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier 176 bit A/C message with the supplied settings.
Definition: IRac.cpp:1458
IRac::daikin128
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:873
IRHitachiAc
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:372
kGpioUnused
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition: IRac.h:55
IRAcUtils
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:4055
IRSanyoAc
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:111
stdAc::ac_command_t
ac_command_t
Tyoe of A/C command (if the remote uses different codes for each)
Definition: IRsend.h:90
IRac::haier
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:1371
IRKelonAc
Definition: ir_Kelon.h:77
IRWhirlpoolAc
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:132
IRac::haier160
void haier160(IRHaierAC160 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool quiet, const bool filter, const bool clean, const bool light, const bool prevlight, const int16_t sleep=-1)
Send a Haier 160 bit A/C message with the supplied settings.
Definition: IRac.cpp:1413
IRHitachiAc344
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:586
IRac::boolToString
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:3972
IRac::next
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:111
String
std::string String
Definition: IRremoteESP8266.h:1521
IRMitsubishiAC
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:267
IRac::trotec
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:2570
IRac::strToModel
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3852
IRac::hitachi296
void hitachi296(IRHitachiAc296 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a Hitachi 296-bit A/C message with the supplied settings.
Definition: IRac.cpp:1639
IRAmcorAc
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:90
ir_York.h
Support for the York AC protocol (remote GRYLH2A)
IRMitsubishi112
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:401
ir_Ecoclim.h
EcoClim A/C protocol.
IRTcl112Ac
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:125
IRac::daikin176
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:965
IRElectraAc
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:114
ir_Tcl.h
Support for TCL protocols.
IRac::hasStateChanged
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:3673
IRac::daikin216
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:1036
ir_Transcold.h
Support for Transcold A/C protocols.
ir_Hitachi.h
Support for Hitachi A/C protocols.
ir_Panasonic.h
Support for Panasonic protocols.
IRac::rhoss
void rhoss(IRRhossAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swing)
Send an Rhoss A/C message with the supplied settings.
Definition: IRac.cpp:2830
IRac::handleToggles
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:2869
IRac::argoWrem3_iFeelReport
void argoWrem3_iFeelReport(IRArgoAC_WREM3 *ac, const float sensorTemp)
Send an Argo A/C WREM-3 iFeel (room temp) silent (no beep) report.
Definition: IRac.cpp:570
IRMitsubishi136
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:347
panasonic_ac_remote_model_t
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:181
IRremoteESP8266.h
IRac::hitachi264
void hitachi264(IRHitachiAc264 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a Hitachi 264-bit A/C message with the supplied settings.
Definition: IRac.cpp:1610
stdAc::swingh_t
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:100
IRac::mitsubishi112
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1962
IRHitachiAc264
Class for handling detailed Hitachi 264-bit A/C messages.
Definition: ir_Hitachi.h:607
IRAcUtils::decodeToState
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:4525
IRHitachiAc1
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:429
IRMirageAc
Class for handling detailed Mirage 120-bit A/C messages.
Definition: ir_Mirage.h:196
IRac::hitachi424
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1704
ir_Samsung.h
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
IRArgoAC_WREM3
Supports Argo A/C SAC-WREM3 IR remote protocol.
Definition: ir_Argo.h:449
IRac::opmodeToString
static String opmodeToString(const stdAc::opmode_t mode, const bool ha=false)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:3993
IRAcUtils::resultAcToString
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:4061
IRac::daikin152
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:910
fujitsu_ac_remote_model_t
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:140
ir_Gree.h
Support for Gree A/C protocols.
IRCarrierAc64
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:89
IRHitachiAc296
Definition: ir_Hitachi.h:624
IRac::argoWrem3_ACCommand
void argoWrem3_ACCommand(IRArgoAC_WREM3 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool iFeel, const bool night, const bool econo, const bool turbo, const bool filter, const bool light)
Send an Argo A/C WREM-3 AC control message with the supplied settings.
Definition: IRac.cpp:536
ir_Mirage.h
Support for Mirage protocol.
IRMideaAC
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:175
IRKelvinatorAC
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:132
IRac::_inverted
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition: IRac.h:124
IRac::midea
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool iFeel, const bool quiet, const bool quiet_prev, const bool turbo, const bool econo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1868
IRFujitsuAC
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:179
ir_Airton.h
Support for Airton protocol.
ir_MitsubishiHeavy.h
Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
IRCoolixAC
Class for handling detailed Coolix A/C messages.
Definition: ir_Coolix.h:120
IRac::panasonic
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:2159
IRac::swingvToString
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:4024
ir_Mitsubishi.h
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
IRac
A universal/common/generic interface for controling supported A/Cs.
Definition: IRac.h:59
ir_Teco.h
Support for Teco protocols.
IRTrotec3550
Class for handling detailed Trotec 3550 A/C messages.
Definition: ir_Trotec.h:198
ir_Delonghi.h
Delonghi A/C.
IRHaierAC160
Class for handling detailed Haier 160 bit A/C messages.
Definition: ir_Haier.h:563
IRac::cleanState
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:2856
ir_Argo.h
Support for Argo Ulisse 13 DCI Mobile Split ACs.
IRac::mitsubishi
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1923
IRac::amcor
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:456
IRTechnibelAc
Class for handling detailed Technibel A/C messages.
Definition: ir_Technibel.h:77
IREcoclimAc
Class for handling detailed EcoClim A/C 56 bit messages.
Definition: ir_Ecoclim.h:84
IRAirwellAc
Class for handling detailed Airwell A/C messages.
Definition: ir_Airwell.h:60
ir_Voltas.h
Support for Voltas A/C protocol.
IRDaikin152
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:1140
IRLgAc
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:114
ir_Fujitsu.h
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
IRac::trotec3550
void trotec3550(IRTrotec3550 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Trotec 3550 A/C message with the supplied settings.
Definition: IRac.cpp:2602
IRHaierAC
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:376
IRac::argo
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool iFeel, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:491
IRac::neoclima
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:2118
IRDaikin160
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:959
IRSharpAc
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:153
IRHaierAC176
Class for handling detailed Haier 176 bit A/C messages.
Definition: ir_Haier.h:446
ir_Goodweather.h
Support for Goodweather compatible HVAC protocols.
IRac::toshiba
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool filter)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:2534
lg_ac_remote_model_t
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:217
IRac::mitsubishi136
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1998
stdAc::fanspeed_t::kAuto
@ kAuto
ir_Rhoss.h
Support for Rhoss A/C protocol.
IRac::airton
void airton(IRAirtonAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool econo, const bool filter, const int16_t sleep=-1)
Send an Airton 56-bit A/C message with the supplied settings.
Definition: IRac.cpp:397
IRac::_modulation
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:125
IRac::teco
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:2500
IRac::strToOpmode
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3699
ir_Sanyo.h
Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
IRac::hitachi1
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1573
IRac::gree
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool iFeel, const bool turbo, const bool econo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:1330
IRTranscoldAc
Class for handling detailed Transcold A/C messages.
Definition: ir_Transcold.h:120
stdAc::swingh_t::kOff
@ kOff
IRac::panasonic32
void panasonic32(IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:2195
ir_Whirlpool.h
Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
IRac::strToBool
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:3954
IRac::sanyo88
void sanyo88(IRSanyoAc88 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Sanyo 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:2332
IRac::mitsubishiHeavy88
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:2033
IRac::strToSwingV
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3768
IRVestelAc
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:100
IRPanasonicAc32
Class for handling detailed Panasonic 32bit A/C messages.
Definition: ir_Panasonic.h:223
IRac::tcl112
void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:2430
IRac::mirage
void mirage(IRMirageAc *ac, const stdAc::state_t state)
Send a Mirage 120-bit A/C message with the supplied settings.
Definition: IRac.cpp:1904
IRac::ecoclim
void ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)
Send an EcoClim A/C message with the supplied settings.
Definition: IRac.cpp:1122
IRTrotecESP
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:133
ir_Truma.h
Support for Truma protocol.
IRTecoAc
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:62
IRac::truma
void truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
Send a Truma A/C message with the supplied settings.
Definition: IRac.cpp:2634
IRac::swinghToString
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:4041
IRTrumaAc
Class for handling detailed Truma A/C messages.
Definition: ir_Truma.h:69
ir_Technibel.h
Support for Technibel protocol.
IRac::delonghiac
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:1096
IRac::kelon
void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)
Send a Kelon A/C message with the supplied settings.
Definition: IRac.cpp:1739
ir_Kelon.h
Support for Kelan AC protocol.
IRac::_prev
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition: IRac.h:126
IRHaierACYRW02
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:544
IRac::daikin160
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:943
IRac::corona
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:798
IRac::initState
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialise the given state with the supplied settings.
Definition: IRac.cpp:137
IRac::lg
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const stdAc::swingh_t swingh, const bool light)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1812
IRac::mitsubishiHeavy152
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:2074
stdAc::swingv_t::kOff
@ kOff
ir_Haier.h
Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
IRMitsubishiHeavy88Ac
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:271
IRac::bosch144
void bosch144(IRBosch144AC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
Send a Bosch144 A/C message with the supplied settings.
Definition: IRac.cpp:643
IRGreeAC
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:156
IRac::strToFanspeed
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3735
ir_Toshiba.h
Support for Toshiba protocols.
IRac::coolix
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool iFeel, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:724
stdAc::ac_command_t::kControlCommand
@ kControlCommand
IRac::goodweather
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:1285
stdAc::state_t
Structure to hold a common A/C state.
Definition: IRsend.h:114
IRac::sanyo
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const float sensorTemp, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool iFeel, const bool beep, const int16_t sleep=-1)
Send a Sanyo A/C message with the supplied settings.
Definition: IRac.cpp:2288
IRGoodweatherAc
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:100
ir_Vestel.h
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
ir_Corona.h
IRArgoAC
Supports Argo A/C SAC-WREM2 IR remote protocol.
Definition: ir_Argo.h:422
IRSanyoAc88
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:229
IRNeoclimaAc
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:120
IRac::isProtocolSupported
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:187
IRBosch144AC
Class for handling detailed Bosch144 A/C messages.
Definition: ir_Bosch.h:140
IRDaikin176
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:1011
ir_Amcor.h
Amcor A/C protocol.
IRac::_pin
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:123
IRac::technibel
void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Technibel A/C message with the supplied settings.
Definition: IRac.cpp:2467
voltas_ac_remote_model_t
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:205
sharp_ac_remote_model_t
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition: IRsend.h:192
ir_LG.h
Support for LG protocols.
IRac::carrier64
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:684
haier_ac176_remote_model_t
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition: IRsend.h:163
stdAc::opmode_t
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:49