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 #endif
9 #include "IRremoteESP8266.h"
10 #include "ir_Airton.h"
11 #include "ir_Airwell.h"
12 #include "ir_Amcor.h"
13 #include "ir_Argo.h"
14 #include "ir_Carrier.h"
15 #include "ir_Coolix.h"
16 #include "ir_Corona.h"
17 #include "ir_Daikin.h"
18 #include "ir_Delonghi.h"
19 #include "ir_Fujitsu.h"
20 #include "ir_Ecoclim.h"
21 #include "ir_Electra.h"
22 #include "ir_Goodweather.h"
23 #include "ir_Gree.h"
24 #include "ir_Haier.h"
25 #include "ir_Hitachi.h"
26 #include "ir_Kelon.h"
27 #include "ir_Kelvinator.h"
28 #include "ir_LG.h"
29 #include "ir_Midea.h"
30 #include "ir_Mirage.h"
31 #include "ir_Mitsubishi.h"
32 #include "ir_MitsubishiHeavy.h"
33 #include "ir_Neoclima.h"
34 #include "ir_Panasonic.h"
35 #include "ir_Rhoss.h"
36 #include "ir_Samsung.h"
37 #include "ir_Sanyo.h"
38 #include "ir_Sharp.h"
39 #include "ir_Tcl.h"
40 #include "ir_Technibel.h"
41 #include "ir_Teco.h"
42 #include "ir_Toshiba.h"
43 #include "ir_Transcold.h"
44 #include "ir_Trotec.h"
45 #include "ir_Truma.h"
46 #include "ir_Vestel.h"
47 #include "ir_Voltas.h"
48 #include "ir_Whirlpool.h"
49 
50 // Constants
51 const int8_t kGpioUnused = -1;
52 
53 // Class
55 class IRac {
56  public:
57  explicit IRac(const uint16_t pin, const bool inverted = false,
58  const bool use_modulation = true);
59  static bool isProtocolSupported(const decode_type_t protocol);
60  static void initState(stdAc::state_t *state,
61  const decode_type_t vendor, const int16_t model,
62  const bool power, const stdAc::opmode_t mode,
63  const float degrees, const bool celsius,
64  const stdAc::fanspeed_t fan,
65  const stdAc::swingv_t swingv,
66  const stdAc::swingh_t swingh,
67  const bool quiet, const bool turbo, const bool econo,
68  const bool light, const bool filter, const bool clean,
69  const bool beep, const int16_t sleep,
70  const int16_t clock);
71  static void initState(stdAc::state_t *state);
72  void markAsSent(void);
73  bool sendAc(void);
74  bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
75  bool sendAc(const decode_type_t vendor, const int16_t model,
76  const bool power, const stdAc::opmode_t mode, const float degrees,
77  const bool celsius, const stdAc::fanspeed_t fan,
78  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
79  const bool quiet, const bool turbo, const bool econo,
80  const bool light, const bool filter, const bool clean,
81  const bool beep, const int16_t sleep = -1,
82  const int16_t clock = -1);
83  static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
84  static bool strToBool(const char *str, const bool def = false);
85  static int16_t strToModel(const char *str, const int16_t def = -1);
87  const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
89  const char *str,
92  const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
94  const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
95  static String boolToString(const bool value);
96  static String opmodeToString(const stdAc::opmode_t mode,
97  const bool ha = false);
98  static String fanspeedToString(const stdAc::fanspeed_t speed);
99  static String swingvToString(const stdAc::swingv_t swingv);
100  static String swinghToString(const stdAc::swingh_t swingh);
101  stdAc::state_t getState(void);
103  bool hasStateChanged(void);
105 #ifndef UNIT_TEST
106 
107  private:
108 #endif
109  uint16_t _pin;
110  bool _inverted;
111  bool _modulation;
113 #if SEND_AIRTON
114  void airton(IRAirtonAc *ac,
115  const bool on, const stdAc::opmode_t mode,
116  const float degrees, const stdAc::fanspeed_t fan,
117  const stdAc::swingv_t swingv, const bool turbo,
118  const bool light, const bool econo, const bool filter,
119  const int16_t sleep = -1);
120 #endif // SEND_AIRTON
121 #if SEND_AIRWELL
122  void airwell(IRAirwellAc *ac,
123  const bool on, const stdAc::opmode_t mode, const float degrees,
124  const stdAc::fanspeed_t fan);
125 #endif // SEND_AIRWELL
126 #if SEND_AMCOR
127  void amcor(IRAmcorAc *ac,
128  const bool on, const stdAc::opmode_t mode, const float degrees,
129  const stdAc::fanspeed_t fan);
130 #endif // SEND_AMCOR
131 #if SEND_ARGO
132  void argo(IRArgoAC *ac,
133  const bool on, const stdAc::opmode_t mode, const float degrees,
134  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
135  const bool turbo, const int16_t sleep = -1);
136 #endif // SEND_ARGO
137 #if SEND_CARRIER_AC64
138 void carrier64(IRCarrierAc64 *ac,
139  const bool on, const stdAc::opmode_t mode,
140  const float degrees, const stdAc::fanspeed_t fan,
141  const stdAc::swingv_t swingv, const int16_t sleep = -1);
142 #endif // SEND_CARRIER_AC64
143 #if SEND_COOLIX
144  void coolix(IRCoolixAC *ac,
145  const bool on, const stdAc::opmode_t mode, const float degrees,
146  const stdAc::fanspeed_t fan,
147  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
148  const bool turbo, const bool light, const bool clean,
149  const int16_t sleep = -1);
150 #endif // SEND_COOLIX
151 #if SEND_CORONA_AC
152  void corona(IRCoronaAc *ac,
153  const bool on, const stdAc::opmode_t mode,
154  const float degrees, const stdAc::fanspeed_t fan,
155  const stdAc::swingv_t swingv, const bool econo);
156 #endif // SEND_CORONA_AC
157 #if SEND_DAIKIN
158  void daikin(IRDaikinESP *ac,
159  const bool on, const stdAc::opmode_t mode, const float degrees,
160  const stdAc::fanspeed_t fan,
161  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
162  const bool quiet, const bool turbo, const bool econo,
163  const bool clean);
164 #endif // SEND_DAIKIN
165 #if SEND_DAIKIN128
166  void daikin128(IRDaikin128 *ac,
167  const bool on, const stdAc::opmode_t mode,
168  const float degrees, const stdAc::fanspeed_t fan,
169  const stdAc::swingv_t swingv,
170  const bool quiet, const bool turbo, const bool light,
171  const bool econo, const int16_t sleep = -1,
172  const int16_t clock = -1);
173 #endif // SEND_DAIKIN128
174 #if SEND_DAIKIN152
175  void daikin152(IRDaikin152 *ac,
176  const bool on, const stdAc::opmode_t mode,
177  const float degrees, const stdAc::fanspeed_t fan,
178  const stdAc::swingv_t swingv,
179  const bool quiet, const bool turbo, const bool econo);
180 #endif // SEND_DAIKIN152
181 #if SEND_DAIKIN160
182  void daikin160(IRDaikin160 *ac,
183  const bool on, const stdAc::opmode_t mode,
184  const float degrees, const stdAc::fanspeed_t fan,
185  const stdAc::swingv_t swingv);
186 #endif // SEND_DAIKIN160
187 #if SEND_DAIKIN176
188  void daikin176(IRDaikin176 *ac,
189  const bool on, const stdAc::opmode_t mode,
190  const float degrees, const stdAc::fanspeed_t fan,
191  const stdAc::swingh_t swingh);
192 #endif // SEND_DAIKIN176
193 #if SEND_DAIKIN2
194  void daikin2(IRDaikin2 *ac,
195  const bool on, const stdAc::opmode_t mode,
196  const float degrees, const stdAc::fanspeed_t fan,
197  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
198  const bool quiet, const bool turbo, const bool light,
199  const bool econo, const bool filter, const bool clean,
200  const bool beep, const int16_t sleep = -1,
201  const int16_t clock = -1);
202 #endif // SEND_DAIKIN2
203 #if SEND_DAIKIN216
204 void daikin216(IRDaikin216 *ac,
205  const bool on, const stdAc::opmode_t mode,
206  const float degrees, const stdAc::fanspeed_t fan,
207  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
208  const bool quiet, const bool turbo);
209 #endif // SEND_DAIKIN216
210 #if SEND_DAIKIN64
211  void daikin64(IRDaikin64 *ac,
212  const bool on, const stdAc::opmode_t mode,
213  const float degrees, const stdAc::fanspeed_t fan,
214  const stdAc::swingv_t swingv,
215  const bool quiet, const bool turbo,
216  const int16_t sleep = -1, const int16_t clock = -1);
217 #endif // SEND_DAIKIN64
218 #if SEND_DELONGHI_AC
219  void delonghiac(IRDelonghiAc *ac,
220  const bool on, const stdAc::opmode_t mode, const bool celsius,
221  const float degrees, const stdAc::fanspeed_t fan,
222  const bool turbo, const int16_t sleep = -1);
223 #endif // SEND_DELONGHI_AC
224 #if SEND_ECOCLIM
225 void ecoclim(IREcoclimAc *ac,
226  const bool on, const stdAc::opmode_t mode,
227  const float degrees, const stdAc::fanspeed_t fan,
228  const int16_t sleep = -1, const int16_t clock = -1);
229 #endif // SEND_ECOCLIM
230 #if SEND_ELECTRA_AC
231 void electra(IRElectraAc *ac,
232  const bool on, const stdAc::opmode_t mode,
233  const float degrees, const stdAc::fanspeed_t fan,
234  const stdAc::swingv_t swingv,
235  const stdAc::swingh_t swingh, const bool turbo,
236  const bool lighttoggle, const bool clean);
237 #endif // SEND_ELECTRA_AC
238 #if SEND_FUJITSU_AC
239  void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
240  const bool on, const stdAc::opmode_t mode,
241  const bool celsius, const float degrees,
242  const stdAc::fanspeed_t fan,
243  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
244  const bool quiet, const bool turbo, const bool econo,
245  const bool filter, const bool clean, const int16_t sleep = -1);
246 #endif // SEND_FUJITSU_AC
247 #if SEND_GOODWEATHER
248  void goodweather(IRGoodweatherAc *ac,
249  const bool on, const stdAc::opmode_t mode,
250  const float degrees,
251  const stdAc::fanspeed_t fan,
252  const stdAc::swingv_t swingv,
253  const bool turbo, const bool light,
254  const int16_t sleep = -1);
255 #endif // SEND_GOODWEATHER
256 #if SEND_GREE
257  void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
258  const bool on, const stdAc::opmode_t mode, const bool celsius,
259  const float degrees, const stdAc::fanspeed_t fan,
260  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
261  const bool turbo, const bool econo, const bool light,
262  const bool clean, const int16_t sleep = -1);
263 #endif // SEND_GREE
264 #if SEND_HAIER_AC
265  void haier(IRHaierAC *ac,
266  const bool on, const stdAc::opmode_t mode, const float degrees,
267  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
268  const bool filter, const int16_t sleep = -1,
269  const int16_t clock = -1);
270 #endif // SEND_HAIER_AC
271 #if SEND_HAIER_AC176
272  void haier176(IRHaierAC176 *ac,
273  const haier_ac176_remote_model_t model, const bool on,
274  const stdAc::opmode_t mode, const bool celsius,
275  const float degrees, const stdAc::fanspeed_t fan,
276  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
277  const bool turbo, const bool quiet, const bool filter,
278  const int16_t sleep = -1);
279 #endif // SEND_HAIER_AC176
280 #if SEND_HAIER_AC_YRW02
281  void haierYrwo2(IRHaierACYRW02 *ac,
282  const bool on, const stdAc::opmode_t mode,
283  const bool celsius, const float degrees,
284  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
285  const stdAc::swingh_t swingh, const bool turbo,
286  const bool quiet, const bool filter,
287  const int16_t sleep = -1);
288 #endif // SEND_HAIER_AC_YRW02
289 #if SEND_HITACHI_AC
290  void hitachi(IRHitachiAc *ac,
291  const bool on, const stdAc::opmode_t mode,
292  const float degrees, const stdAc::fanspeed_t fan,
293  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
294 #endif // SEND_HITACHI_AC
295 #if SEND_HITACHI_AC1
296  void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
297  const bool on, const bool power_toggle,
298  const stdAc::opmode_t mode,
299  const float degrees, const stdAc::fanspeed_t fan,
300  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
301  const bool swing_toggle, const int16_t sleep = -1);
302 #endif // SEND_HITACHI_AC1
303 #if SEND_HITACHI_AC264
304  void hitachi264(IRHitachiAc264 *ac,
305  const bool on, const stdAc::opmode_t mode,
306  const float degrees, const stdAc::fanspeed_t fan);
307 #endif // SEND_HITACHI_AC264
308 #if SEND_HITACHI_AC296
309  void hitachi296(IRHitachiAc296 *ac,
310  const bool on, const stdAc::opmode_t mode,
311  const float degrees, const stdAc::fanspeed_t fan);
312 #endif // SEND_HITACHI_AC296
313 #if SEND_HITACHI_AC344
314  void hitachi344(IRHitachiAc344 *ac,
315  const bool on, const stdAc::opmode_t mode,
316  const float degrees, const stdAc::fanspeed_t fan,
317  const stdAc::swingv_t swingv,
318  const stdAc::swingh_t swingh);
319 #endif // SEND_HITACHI_AC344
320 #if SEND_HITACHI_AC424
321  void hitachi424(IRHitachiAc424 *ac,
322  const bool on, const stdAc::opmode_t mode,
323  const float degrees, const stdAc::fanspeed_t fan,
324  const stdAc::swingv_t swingv);
325 #endif // SEND_HITACHI_AC424
326 #if SEND_KELON
327  void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
328  const int8_t dryGrade, const float degrees,
329  const stdAc::fanspeed_t fan, const bool toggleSwing,
330  const bool superCool, const int16_t sleep);
331 #endif // SEND_KELON
332 #if SEND_KELVINATOR
333  void kelvinator(IRKelvinatorAC *ac,
334  const bool on, const stdAc::opmode_t mode,
335  const float degrees, const stdAc::fanspeed_t fan,
336  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
337  const bool quiet, const bool turbo, const bool light,
338  const bool filter, const bool clean);
339 #endif // SEND_KELVINATOR
340 #if SEND_LG
341  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
342  const bool on, const stdAc::opmode_t mode,
343  const float degrees, const stdAc::fanspeed_t fan,
344  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
345  const stdAc::swingh_t swingh, const bool light);
346 #endif // SEND_LG
347 #if SEND_MIDEA
348  void midea(IRMideaAC *ac,
349  const bool on, const stdAc::opmode_t mode, const bool celsius,
350  const float degrees, const stdAc::fanspeed_t fan,
351  const stdAc::swingv_t swingv,
352  const bool quiet, const bool quiet_prev, const bool turbo,
353  const bool econo, const bool light, const bool clean,
354  const int16_t sleep = -1);
355 #endif // SEND_MIDEA
356 #if SEND_MIRAGE
357  void mirage(IRMirageAc *ac, const stdAc::state_t state);
358 #endif // SEND_MIRAGE
359 #if SEND_MITSUBISHI_AC
360  void mitsubishi(IRMitsubishiAC *ac,
361  const bool on, const stdAc::opmode_t mode,
362  const float degrees,
363  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
364  const stdAc::swingh_t swingh,
365  const bool quiet, const int16_t clock = -1);
366 #endif // SEND_MITSUBISHI_AC
367 #if SEND_MITSUBISHI112
369  const bool on, const stdAc::opmode_t mode,
370  const float degrees, const stdAc::fanspeed_t fan,
371  const stdAc::swingv_t swingv,
372  const stdAc::swingh_t swingh,
373  const bool quiet);
374 #endif // SEND_MITSUBISHI112
375 #if SEND_MITSUBISHI136
377  const bool on, const stdAc::opmode_t mode,
378  const float degrees, const stdAc::fanspeed_t fan,
379  const stdAc::swingv_t swingv, const bool quiet);
380 #endif // SEND_MITSUBISHI136
381 #if SEND_MITSUBISHIHEAVY
383  const bool on, const stdAc::opmode_t mode,
384  const float degrees, const stdAc::fanspeed_t fan,
385  const stdAc::swingv_t swingv,
386  const stdAc::swingh_t swingh,
387  const bool turbo, const bool econo, const bool clean);
389  const bool on, const stdAc::opmode_t mode,
390  const float degrees, const stdAc::fanspeed_t fan,
391  const stdAc::swingv_t swingv,
392  const stdAc::swingh_t swingh,
393  const bool quiet, const bool turbo, const bool econo,
394  const bool filter, const bool clean,
395  const int16_t sleep = -1);
396 #endif // SEND_MITSUBISHIHEAVY
397 #if SEND_NEOCLIMA
398  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
399  const bool celsius, const float degrees,
400  const stdAc::fanspeed_t fan,
401  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
402  const bool turbo, const bool econo, const bool light,
403  const bool filter, const int16_t sleep = -1);
404 #endif // SEND_NEOCLIMA
405 #if SEND_PANASONIC_AC
407  const bool on, const stdAc::opmode_t mode, const float degrees,
408  const stdAc::fanspeed_t fan,
409  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
410  const bool quiet, const bool turbo, const bool filter,
411  const int16_t clock = -1);
412 #endif // SEND_PANASONIC_AC
413 #if SEND_PANASONIC_AC32
414  void panasonic32(IRPanasonicAc32 *ac,
415  const bool on, const stdAc::opmode_t mode,
416  const float degrees, const stdAc::fanspeed_t fan,
417  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
418 #endif // SEND_PANASONIC_AC32
419 #if SEND_RHOSS
420  void rhoss(IRRhossAc *ac,
421  const bool on, const stdAc::opmode_t mode, const float degrees,
422  const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
423 #endif // SEND_RHOSS
424 #if SEND_SAMSUNG_AC
425  void samsung(IRSamsungAc *ac,
426  const bool on, const stdAc::opmode_t mode, const float degrees,
427  const stdAc::fanspeed_t fan,
428  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
429  const bool quiet, const bool turbo, const bool econo,
430  const bool light, const bool filter, const bool clean,
431  const bool beep, const int16_t sleep = -1,
432  const bool prevpower = true, const int16_t prevsleep = -1,
433  const bool forceextended = true);
434 #endif // SEND_SAMSUNG_AC
435 #if SEND_SANYO_AC
436  void sanyo(IRSanyoAc *ac,
437  const bool on, const stdAc::opmode_t mode, const float degrees,
438  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
439  const bool beep, const int16_t sleep = -1);
440 #endif // SEND_SANYO_AC
441 #if SEND_SANYO_AC88
442  void sanyo88(IRSanyoAc88 *ac,
443  const bool on, const stdAc::opmode_t mode,
444  const float degrees, const stdAc::fanspeed_t fan,
445  const stdAc::swingv_t swingv, const bool turbo,
446  const bool filter,
447  const int16_t sleep = -1, const int16_t clock = -1);
448 #endif // SEND_SANYO_AC88
449 #if SEND_SHARP_AC
450  void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
451  const bool on, const bool prev_power, const stdAc::opmode_t mode,
452  const float degrees, const stdAc::fanspeed_t fan,
453  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
454  const bool turbo, const bool light,
455  const bool filter, const bool clean);
456 #endif // SEND_SHARP_AC
457 #if SEND_TCL112AC
458  void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
459  const bool on, const stdAc::opmode_t mode, const float degrees,
460  const stdAc::fanspeed_t fan,
461  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
462  const bool quiet, const bool turbo, const bool light,
463  const bool econo, const bool filter);
464 #endif // SEND_TCL112AC
465 #if SEND_TECHNIBEL_AC
466  void technibel(IRTechnibelAc *ac,
467  const bool on, const stdAc::opmode_t mode, const bool celsius,
468  const float degrees, const stdAc::fanspeed_t fan,
469  const stdAc::swingv_t swingv, const int16_t sleep = -1);
470 #endif // SEND_TECHNIBEL_AC
471 #if SEND_TECO
472  void teco(IRTecoAc *ac,
473  const bool on, const stdAc::opmode_t mode, const float degrees,
474  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
475  const bool light, const int16_t sleep = -1);
476 #endif // SEND_TECO
477 #if SEND_TOSHIBA_AC
478  void toshiba(IRToshibaAC *ac,
479  const bool on, const stdAc::opmode_t mode, const float degrees,
480  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
481  const bool turbo, const bool econo, const bool filter);
482 #endif // SEND_TOSHIBA_AC
483 #if SEND_TROTEC
484  void trotec(IRTrotecESP *ac,
485  const bool on, const stdAc::opmode_t mode, const float degrees,
486  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
487 #endif // SEND_TROTEC
488 #if SEND_TROTEC_3550
489  void trotec3550(IRTrotec3550 *ac,
490  const bool on, const stdAc::opmode_t mode,
491  const bool celsius, const float degrees,
492  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
493 #endif // SEND_TROTEC_3550
494 #if SEND_TRUMA
495  void truma(IRTrumaAc *ac,
496  const bool on, const stdAc::opmode_t mode, const float degrees,
497  const stdAc::fanspeed_t fan, const bool quiet);
498 #endif // SEND_TRUMA
499 #if SEND_VESTEL_AC
500  void vestel(IRVestelAc *ac,
501  const bool on, const stdAc::opmode_t mode, const float degrees,
502  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
503  const bool turbo, const bool filter,
504  const int16_t sleep = -1, const int16_t clock = -1,
505  const bool sendNormal = true);
506 #endif // SEND_VESTEL_AC
507 #if SEND_VOLTAS
508  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
509  const bool on, const stdAc::opmode_t mode,
510  const float degrees, const stdAc::fanspeed_t fan,
511  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
512  const bool turbo, const bool econo, const bool light,
513  const int16_t sleep = -1);
514 #endif // SEND_VOLTAS
515 #if SEND_WHIRLPOOL_AC
517  const bool on, const stdAc::opmode_t mode, const float degrees,
518  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
519  const bool turbo, const bool light,
520  const int16_t sleep = -1, const int16_t clock = -1);
521 #endif // SEND_WHIRLPOOL_AC
522 #if SEND_TRANSCOLD
523  void transcold(IRTranscoldAc *ac,
524  const bool on, const stdAc::opmode_t mode, const float degrees,
525  const stdAc::fanspeed_t fan,
526  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
527 #endif // SEND_TRANSCOLD
528 static stdAc::state_t cleanState(const stdAc::state_t state);
529 static stdAc::state_t handleToggles(const stdAc::state_t desired,
530  const stdAc::state_t *prev = NULL);
531 }; // IRac class
532 
534 namespace IRAcUtils {
535  String resultAcToString(const decode_results * const results);
536  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
537  const stdAc::state_t *prev = NULL);
538 } // namespace IRAcUtils
539 #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:380
ir_Kelvinator.h
Support for Kelvinator A/C protocols.
IRSamsungAc
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:185
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:1251
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:917
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:145
IRac::getState
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:140
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:3428
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:1385
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::ecoclim
void ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, 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:898
IRac::markAsSent
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:3285
stdAc::swingv_t
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
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:775
ir_Trotec.h
Support for Trotec protocols.
IRac::sanyo
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Sanyo A/C message with the supplied settings.
Definition: IRac.cpp:1992
IRDaikinESP
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:693
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:1488
IRDaikin2
Class for handling detailed Daikin 312-bit A/C messages.
Definition: ir_Daikin.h:775
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:983
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:1040
stdAc::fanspeed_t
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
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:3605
whirlpool_ac_remote_model_t
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:188
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:2455
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:844
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:1948
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:2414
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:2492
tcl_ac_remote_model_t
tcl_ac_remote_model_t
TCL (& Teknopoint) A/C model numbers.
Definition: IRsend.h:176
IRac::sendAc
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:3291
IRac::cmpStates
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:3302
ir_Midea.h
Support for Midea protocols. Midea added by crankyoldgit & bwze.
IRac::midea
void midea(IRMideaAC *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 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:1580
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:134
IRDaikin64
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:1170
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:1215
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:2372
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:611
IRac::IRac
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:70
IRDaikin216
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:873
IRVoltas
Class for handling detailed Voltas A/C messages.
Definition: ir_Voltas.h:90
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:2075
hitachi_ac1_remote_model_t
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:146
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:1173
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:651
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:51
IRAcUtils
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:3650
IRSanyoAc
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:108
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:1132
IRKelonAc
Definition: ir_Kelon.h:77
IRWhirlpoolAc
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:132
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:3582
IRac::next
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:104
String
std::string String
Definition: IRremoteESP8266.h:1373
IRMitsubishiAC
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:266
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:2271
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:3469
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:1354
IRAmcorAc
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:90
IRMitsubishi112
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:400
ir_Ecoclim.h
EcoClim A/C protocol.
IRTcl112Ac
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:124
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:743
IRElectraAc
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:113
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:3314
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:814
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:2531
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:2570
IRMitsubishi136
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:346
panasonic_ac_remote_model_t
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:158
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:1325
stdAc::swingh_t
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
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:1669
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:4093
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:1419
ir_Samsung.h
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
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:3590
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:3656
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:688
fujitsu_ac_remote_model_t
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
ir_Gree.h
Support for Gree A/C protocols.
IRCarrierAc64
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:84
IRHitachiAc296
Definition: ir_Hitachi.h:624
ir_Mirage.h
Support for Mirage protocol.
IRMideaAC
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:173
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:110
IRFujitsuAC
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:173
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:1866
IRac::swingvToString
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3620
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:55
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.
IRac::electra
void electra(IRElectraAc *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 lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:940
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:2557
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:1631
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:408
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:1110
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:2303
IRHaierAC
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:292
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:1825
IRDaikin160
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:929
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:362
ir_Goodweather.h
Support for Goodweather compatible HVAC protocols.
IRac::argo
void argo(IRArgoAC *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 int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:440
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:2235
lg_ac_remote_model_t
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:194
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:1705
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:349
IRac::_modulation
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:111
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:2201
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:3320
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:1288
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:1902
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:3564
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:2033
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:1740
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:3387
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:2131
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:1612
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:2335
IRac::swinghToString
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3636
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:874
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:1454
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:112
IRHaierACYRW02
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:460
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:721
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:576
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:100
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:1527
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:1781
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
IRGreeAC
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:152
IRac::coolix
void coolix(IRCoolixAC *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 light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:509
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:3356
ir_Toshiba.h
Support for Toshiba protocols.
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 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:1092
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:1048
stdAc::state_t
Structure to hold a common A/C state.
Definition: IRsend.h:97
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
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:127
IRSanyoAc88
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:226
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:150
IRDaikin176
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:981
ir_Amcor.h
Amcor A/C protocol.
IRac::_pin
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:109
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:2168
voltas_ac_remote_model_t
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:182
sharp_ac_remote_model_t
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition: IRsend.h:169
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:472
haier_ac176_remote_model_t
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition: IRsend.h:140
stdAc::opmode_t
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46