IRremoteIDF
Infrared send & receive for ESP-IDF
Loading...
Searching...
No Matches
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 "IRplatform.h"
8#else
9#include <memory>
10#endif
11#ifdef SWIGLIB
12#include <vector>
13#endif // SWIGLIB
14#include "IRremoteESP8266.h"
15#include "ir_Airton.h"
16#include "ir_Airwell.h"
17#include "ir_Amcor.h"
18#include "ir_Argo.h"
19#include "ir_Bosch.h"
20#include "ir_Carrier.h"
21#include "ir_Coolix.h"
22#include "ir_Corona.h"
23#include "ir_Daikin.h"
24#include "ir_Delonghi.h"
25#include "ir_Fujitsu.h"
26#include "ir_Ecoclim.h"
27#include "ir_Electra.h"
28#include "ir_Eurom.h"
29#include "ir_Goodweather.h"
30#include "ir_Gree.h"
31#include "ir_Haier.h"
32#include "ir_Hitachi.h"
33#include "ir_Kelon.h"
34#include "ir_Kelvinator.h"
35#include "ir_LG.h"
36#include "ir_Midea.h"
37#include "ir_Mirage.h"
38#include "ir_Mitsubishi.h"
39#include "ir_MitsubishiHeavy.h"
40#include "ir_Neoclima.h"
41#include "ir_Panasonic.h"
42#include "ir_Rhoss.h"
43#include "ir_Samsung.h"
44#include "ir_Sanyo.h"
45#include "ir_Sharp.h"
46#include "ir_Tcl.h"
47#include "ir_Technibel.h"
48#include "ir_Teco.h"
49#include "ir_Toshiba.h"
50#include "ir_Transcold.h"
51#include "ir_Trotec.h"
52#include "ir_Truma.h"
53#include "ir_Vestel.h"
54#include "ir_Voltas.h"
55#include "ir_Whirlpool.h"
56#include "ir_York.h"
57
58// Constants
59const int8_t kGpioUnused = -1;
60
61// Class
63class IRac {
64 public:
65 explicit IRac(const uint16_t pin, const bool inverted = false,
66 const bool use_modulation = true);
67 static bool isProtocolSupported(const decode_type_t protocol);
68 static void initState(stdAc::state_t *state,
69 const decode_type_t vendor, const int16_t model,
70 const bool power, const stdAc::opmode_t mode,
71 const float degrees, const bool celsius,
72 const stdAc::fanspeed_t fan,
73 const stdAc::swingv_t swingv,
74 const stdAc::swingh_t swingh,
75 const bool quiet, const bool turbo, const bool econo,
76 const bool light, const bool filter, const bool clean,
77 const bool beep, const int16_t sleep,
78 const int16_t clock);
79 static void initState(stdAc::state_t *state);
80 void markAsSent(void);
81 bool sendAc(void);
82 bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
83 bool sendAc(const decode_type_t vendor, const int16_t model,
84 const bool power, const stdAc::opmode_t mode, const float degrees,
85 const bool celsius, const stdAc::fanspeed_t fan,
86 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
87 const bool quiet, const bool turbo, const bool econo,
88 const bool light, const bool filter, const bool clean,
89 const bool beep, const int16_t sleep = -1,
90 const int16_t clock = -1);
91 static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
92 static bool strToBool(const char *str, const bool def = false);
93 static int16_t strToModel(const char *str, const int16_t def = -1);
94 static stdAc::ac_command_t strToCommandType(const char *str,
97 const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
99 const char *str,
102 const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
104 const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
105 static String boolToString(const bool value);
106 static String commandTypeToString(const stdAc::ac_command_t cmdType);
107 static String opmodeToString(const stdAc::opmode_t mode,
108 const bool ha = false);
109 static String fanspeedToString(const stdAc::fanspeed_t speed);
110 static String swingvToString(const stdAc::swingv_t swingv);
111 static String swinghToString(const stdAc::swingh_t swingh);
114#ifdef SWIGLIB
115 std::vector<int> getTiming(void);
116 void resetTiming(void);
117#endif // SWIGLIB
118 bool hasStateChanged(void);
120#ifdef UNIT_TEST
121#ifndef SWIGLIB
125 std::shared_ptr<IRrecv> _utReceiver = nullptr;
126 std::unique_ptr<decode_results> _lastDecodeResults = nullptr;
128#endif // SWIGLIB
129#else
130
131 private:
132#endif // UNIT_TEST
133 uint16_t _pin;
137#if SEND_AIRTON
138 void airton(IRAirtonAc *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 bool turbo,
142 const bool light, const bool econo, const bool filter,
143 const int16_t sleep = -1);
144#endif // SEND_AIRTON
145#if SEND_AIRWELL
146 void airwell(IRAirwellAc *ac,
147 const bool on, const stdAc::opmode_t mode, const float degrees,
148 const stdAc::fanspeed_t fan);
149#endif // SEND_AIRWELL
150#if SEND_AMCOR
151 void amcor(IRAmcorAc *ac,
152 const bool on, const stdAc::opmode_t mode, const float degrees,
153 const stdAc::fanspeed_t fan);
154#endif // SEND_AMCOR
155#if SEND_ARGO
156 void argo(IRArgoAC *ac,
157 const bool on, const stdAc::opmode_t mode, const float degrees,
158 const float sensorTemp, const stdAc::fanspeed_t fan,
159 const stdAc::swingv_t swingv, const bool iFeel, const bool turbo,
160 const int16_t sleep = -1);
162 const bool on, const stdAc::opmode_t mode, const float degrees,
163 const float sensorTemp, const stdAc::fanspeed_t fan,
164 const stdAc::swingv_t swingv, const bool iFeel, const bool night,
165 const bool econo, const bool turbo, const bool filter, const bool light);
166 void argoWrem3_iFeelReport(IRArgoAC_WREM3 *ac, const float sensorTemp);
167 void argoWrem3_ConfigSet(IRArgoAC_WREM3 *ac, const uint8_t param,
168 const uint8_t value, bool safe = true);
169 void argoWrem3_SetTimer(IRArgoAC_WREM3 *ac, bool on,
170 const uint16_t currentTime, const uint16_t delayMinutes);
171#endif // SEND_ARGO
172#if SEND_BOSCH144
173 void bosch144(IRBosch144AC *ac,
174 const bool on, const stdAc::opmode_t mode, const float degrees,
175 const bool celsius, const stdAc::fanspeed_t fan,
176 const bool quiet);
177#endif // SEND_BOSCH144
178#if SEND_CARRIER_AC64
179void carrier64(IRCarrierAc64 *ac,
180 const bool on, const stdAc::opmode_t mode,
181 const float degrees, const stdAc::fanspeed_t fan,
182 const stdAc::swingv_t swingv, const int16_t sleep = -1);
183#endif // SEND_CARRIER_AC64
184#if SEND_COOLIX
185 void coolix(IRCoolixAC *ac,
186 const bool on, const stdAc::opmode_t mode, const float degrees,
187 const float sensorTemp, const stdAc::fanspeed_t fan,
188 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
189 const bool iFeel, const bool turbo, const bool light,
190 const bool clean, const int16_t sleep = -1);
191#endif // SEND_COOLIX
192#if SEND_CORONA_AC
193 void corona(IRCoronaAc *ac,
194 const bool on, const stdAc::opmode_t mode,
195 const float degrees, const stdAc::fanspeed_t fan,
196 const stdAc::swingv_t swingv, const bool econo);
197#endif // SEND_CORONA_AC
198#if SEND_DAIKIN
199 void daikin(IRDaikinESP *ac,
200 const bool on, const stdAc::opmode_t mode, const float degrees,
201 const stdAc::fanspeed_t fan,
202 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
203 const bool quiet, const bool turbo, const bool econo,
204 const bool clean);
205#endif // SEND_DAIKIN
206#if SEND_DAIKIN128
207 void daikin128(IRDaikin128 *ac,
208 const bool on, const stdAc::opmode_t mode,
209 const float degrees, const stdAc::fanspeed_t fan,
210 const stdAc::swingv_t swingv,
211 const bool quiet, const bool turbo, const bool light,
212 const bool econo, const int16_t sleep = -1,
213 const int16_t clock = -1);
214#endif // SEND_DAIKIN128
215#if SEND_DAIKIN152
216 void daikin152(IRDaikin152 *ac,
217 const bool on, const stdAc::opmode_t mode,
218 const float degrees, const stdAc::fanspeed_t fan,
219 const stdAc::swingv_t swingv,
220 const bool quiet, const bool turbo, const bool econo);
221#endif // SEND_DAIKIN152
222#if SEND_DAIKIN160
223 void daikin160(IRDaikin160 *ac,
224 const bool on, const stdAc::opmode_t mode,
225 const float degrees, const stdAc::fanspeed_t fan,
226 const stdAc::swingv_t swingv);
227#endif // SEND_DAIKIN160
228#if SEND_DAIKIN176
229 void daikin176(IRDaikin176 *ac,
230 const bool on, const stdAc::opmode_t mode,
231 const float degrees, const stdAc::fanspeed_t fan,
232 const stdAc::swingh_t swingh);
233#endif // SEND_DAIKIN176
234#if SEND_DAIKIN2
235 void daikin2(IRDaikin2 *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, const bool light,
240 const bool econo, const bool filter, const bool clean,
241 const bool beep, const int16_t sleep = -1,
242 const int16_t clock = -1);
243#endif // SEND_DAIKIN2
244#if SEND_DAIKIN216
245void daikin216(IRDaikin216 *ac,
246 const bool on, const stdAc::opmode_t mode,
247 const float degrees, const stdAc::fanspeed_t fan,
248 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
249 const bool quiet, const bool turbo);
250#endif // SEND_DAIKIN216
251#if SEND_DAIKIN312
252 void daikin312(IRDaikin312 *ac,
253 const bool on, const stdAc::opmode_t mode,
254 const float degrees, const stdAc::fanspeed_t fan,
255 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
256 const bool quiet, const bool turbo, const bool light,
257 const bool econo, const bool filter, const bool clean,
258 const bool beep, const int16_t sleep = -1,
259 const int16_t clock = -1);
260#endif // SEND_DAIKIN312
261#if SEND_DAIKIN64
262 void daikin64(IRDaikin64 *ac,
263 const bool on, const stdAc::opmode_t mode,
264 const float degrees, const stdAc::fanspeed_t fan,
265 const stdAc::swingv_t swingv,
266 const bool quiet, const bool turbo,
267 const int16_t sleep = -1, const int16_t clock = -1);
268#endif // SEND_DAIKIN64
269#if SEND_DELONGHI_AC
270 void delonghiac(IRDelonghiAc *ac,
271 const bool on, const stdAc::opmode_t mode, const bool celsius,
272 const float degrees, const stdAc::fanspeed_t fan,
273 const bool turbo, const int16_t sleep = -1);
274#endif // SEND_DELONGHI_AC
275#if SEND_ECOCLIM
276void ecoclim(IREcoclimAc *ac,
277 const bool on, const stdAc::opmode_t mode,
278 const float degrees, const float sensorTemp,
279 const stdAc::fanspeed_t fan, const int16_t sleep = -1,
280 const int16_t clock = -1);
281#endif // SEND_ECOCLIM
282#if SEND_ELECTRA_AC
283void electra(IRElectraAc *ac,
284 const bool on, const stdAc::opmode_t mode,
285 const float degrees, const float sensorTemp,
286 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
287 const stdAc::swingh_t swingh, const bool iFeel, const bool quiet,
288 const bool turbo, const bool lighttoggle, const bool clean);
289#endif // SEND_ELECTRA_AC
290#if SEND_EUROM
291 void eurom(IREuromAc *ac, const bool power, const stdAc::opmode_t mode,
292 const float degrees, const bool fahrenheit,
293 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
294 const bool sleep);
295#endif // SEND_EUROM
296#if SEND_FUJITSU_AC
297 void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
298 const bool on, const stdAc::opmode_t mode,
299 const bool celsius, const float degrees,
300 const stdAc::fanspeed_t fan,
301 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
302 const bool quiet, const bool turbo, const bool econo,
303 const bool filter, const bool clean, const int16_t sleep = -1);
304#endif // SEND_FUJITSU_AC
305#if SEND_GOODWEATHER
307 const bool on, const stdAc::opmode_t mode,
308 const float degrees,
309 const stdAc::fanspeed_t fan,
310 const stdAc::swingv_t swingv,
311 const bool turbo, const bool light,
312 const int16_t sleep = -1);
313#endif // SEND_GOODWEATHER
314#if SEND_GREE
315 void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
316 const bool on, const stdAc::opmode_t mode, const bool celsius,
317 const float degrees, const stdAc::fanspeed_t fan,
318 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
319 const bool iFeel, const bool turbo, const bool econo,
320 const bool light, const bool clean, const int16_t sleep = -1);
321#endif // SEND_GREE
322#if SEND_HAIER_AC
323 void haier(IRHaierAC *ac,
324 const bool on, const stdAc::opmode_t mode, const float degrees,
325 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
326 const bool filter, const int16_t sleep = -1,
327 const int16_t clock = -1);
328#endif // SEND_HAIER_AC
329#if SEND_HAIER_AC160
330 void haier160(IRHaierAC160 *ac,
331 const bool on, const stdAc::opmode_t mode, const bool celsius,
332 const float degrees, const stdAc::fanspeed_t fan,
333 const stdAc::swingv_t swingv,
334 const bool turbo, const bool quiet, const bool filter,
335 const bool clean, const bool light, const bool prevlight,
336 const int16_t sleep = -1);
337#endif // SEND_HAIER_AC160
338#if SEND_HAIER_AC176
339 void haier176(IRHaierAC176 *ac,
340 const haier_ac176_remote_model_t model, const bool on,
341 const stdAc::opmode_t mode, const bool celsius,
342 const float degrees, const stdAc::fanspeed_t fan,
343 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
344 const bool turbo, const bool quiet, const bool filter,
345 const int16_t sleep = -1);
346#endif // SEND_HAIER_AC176
347#if SEND_HAIER_AC_YRW02
348 void haierYrwo2(IRHaierACYRW02 *ac,
349 const bool on, const stdAc::opmode_t mode,
350 const bool celsius, const float degrees,
351 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
352 const stdAc::swingh_t swingh, const bool turbo,
353 const bool quiet, const bool filter,
354 const int16_t sleep = -1);
355#endif // SEND_HAIER_AC_YRW02
356#if SEND_HITACHI_AC
357 void hitachi(IRHitachiAc *ac,
358 const bool on, const stdAc::opmode_t mode,
359 const float degrees, const stdAc::fanspeed_t fan,
360 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
361#endif // SEND_HITACHI_AC
362#if SEND_HITACHI_AC1
364 const bool on, const bool power_toggle,
365 const stdAc::opmode_t mode,
366 const float degrees, const stdAc::fanspeed_t fan,
367 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
368 const bool swing_toggle, const int16_t sleep = -1);
369#endif // SEND_HITACHI_AC1
370#if SEND_HITACHI_AC264
371 void hitachi264(IRHitachiAc264 *ac,
372 const bool on, const stdAc::opmode_t mode,
373 const float degrees, const stdAc::fanspeed_t fan);
374#endif // SEND_HITACHI_AC264
375#if SEND_HITACHI_AC296
376 void hitachi296(IRHitachiAc296 *ac,
377 const bool on, const stdAc::opmode_t mode,
378 const float degrees, const stdAc::fanspeed_t fan);
379#endif // SEND_HITACHI_AC296
380#if SEND_HITACHI_AC344
381 void hitachi344(IRHitachiAc344 *ac,
382 const bool on, const stdAc::opmode_t mode,
383 const float degrees, const stdAc::fanspeed_t fan,
384 const stdAc::swingv_t swingv,
385 const stdAc::swingh_t swingh);
386#endif // SEND_HITACHI_AC344
387#if SEND_HITACHI_AC424
388 void hitachi424(IRHitachiAc424 *ac,
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#endif // SEND_HITACHI_AC424
393#if SEND_KELON
394 void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
395 const int8_t dryGrade, const float degrees,
396 const stdAc::fanspeed_t fan, const bool toggleSwing,
397 const bool superCool, const int16_t sleep);
398#endif // SEND_KELON
399#if SEND_KELVINATOR
400 void kelvinator(IRKelvinatorAC *ac,
401 const bool on, const stdAc::opmode_t mode,
402 const float degrees, const stdAc::fanspeed_t fan,
403 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
404 const bool quiet, const bool turbo, const bool light,
405 const bool filter, const bool clean);
406#endif // SEND_KELVINATOR
407#if SEND_LG
408 void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
409 const bool on, const stdAc::opmode_t mode,
410 const float degrees, const stdAc::fanspeed_t fan,
411 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
412 const stdAc::swingh_t swingh, const bool light);
413#endif // SEND_LG
414#if SEND_MIDEA
415 void midea(IRMideaAC *ac,
416 const bool on, const stdAc::opmode_t mode, const bool celsius,
417 const float degrees, const float sensorTemp,
418 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
419 const bool iFeel, const bool quiet, const bool quiet_prev,
420 const bool turbo, const bool econo, const bool light,
421 const bool clean, const int16_t sleep = -1);
422#endif // SEND_MIDEA
423#if SEND_MIRAGE
424 void mirage(IRMirageAc *ac, const stdAc::state_t state);
425#endif // SEND_MIRAGE
426#if SEND_MITSUBISHI_AC
427 void mitsubishi(IRMitsubishiAC *ac,
428 const bool on, const stdAc::opmode_t mode,
429 const float degrees,
430 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
431 const stdAc::swingh_t swingh,
432 const bool quiet, const int16_t clock = -1);
433#endif // SEND_MITSUBISHI_AC
434#if SEND_MITSUBISHI112
436 const bool on, const stdAc::opmode_t mode,
437 const float degrees, const stdAc::fanspeed_t fan,
438 const stdAc::swingv_t swingv,
439 const stdAc::swingh_t swingh,
440 const bool quiet);
441#endif // SEND_MITSUBISHI112
442#if SEND_MITSUBISHI136
444 const bool on, const stdAc::opmode_t mode,
445 const float degrees, const stdAc::fanspeed_t fan,
446 const stdAc::swingv_t swingv, const bool quiet);
447#endif // SEND_MITSUBISHI136
448#if SEND_MITSUBISHIHEAVY
450 const bool on, const stdAc::opmode_t mode,
451 const float degrees, const stdAc::fanspeed_t fan,
452 const stdAc::swingv_t swingv,
453 const stdAc::swingh_t swingh,
454 const bool turbo, const bool econo, const bool clean);
456 const bool on, const stdAc::opmode_t mode,
457 const float degrees, const stdAc::fanspeed_t fan,
458 const stdAc::swingv_t swingv,
459 const stdAc::swingh_t swingh,
460 const bool quiet, const bool turbo, const bool econo,
461 const bool filter, const bool clean,
462 const int16_t sleep = -1);
463#endif // SEND_MITSUBISHIHEAVY
464#if SEND_NEOCLIMA
465 void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
466 const bool celsius, const float degrees,
467 const stdAc::fanspeed_t fan,
468 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
469 const bool turbo, const bool econo, const bool light,
470 const bool filter, const int16_t sleep = -1);
471#endif // SEND_NEOCLIMA
472#if SEND_PANASONIC_AC
474 const bool on, const stdAc::opmode_t mode, const float degrees,
475 const stdAc::fanspeed_t fan,
476 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
477 const bool quiet, const bool turbo, const bool filter,
478 const int16_t clock = -1);
479#endif // SEND_PANASONIC_AC
480#if SEND_PANASONIC_AC32
482 const bool on, const stdAc::opmode_t mode,
483 const float degrees, const stdAc::fanspeed_t fan,
484 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
485#endif // SEND_PANASONIC_AC32
486#if SEND_RHOSS
487 void rhoss(IRRhossAc *ac,
488 const bool on, const stdAc::opmode_t mode, const float degrees,
489 const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
490#endif // SEND_RHOSS
491#if SEND_SAMSUNG_AC
492 void samsung(IRSamsungAc *ac,
493 const bool on, const stdAc::opmode_t mode, const float degrees,
494 const stdAc::fanspeed_t fan,
495 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
496 const bool quiet, const bool turbo, const bool econo,
497 const bool light, const bool filter, const bool clean,
498 const bool beep, const int16_t sleep = -1,
499 const bool prevpower = true, const int16_t prevsleep = -1,
500 const bool forceextended = true);
501#endif // SEND_SAMSUNG_AC
502#if SEND_SANYO_AC
503 void sanyo(IRSanyoAc *ac,
504 const bool on, const stdAc::opmode_t mode, const float degrees,
505 const float sensorTemp, const stdAc::fanspeed_t fan,
506 const stdAc::swingv_t swingv, const bool iFeel, const bool beep,
507 const int16_t sleep = -1);
508#endif // SEND_SANYO_AC
509#if SEND_SANYO_AC88
510 void sanyo88(IRSanyoAc88 *ac,
511 const bool on, const stdAc::opmode_t mode,
512 const float degrees, const stdAc::fanspeed_t fan,
513 const stdAc::swingv_t swingv, const bool turbo,
514 const bool filter,
515 const int16_t sleep = -1, const int16_t clock = -1);
516#endif // SEND_SANYO_AC88
517#if SEND_SHARP_AC
518 void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
519 const bool on, const bool prev_power, const stdAc::opmode_t mode,
520 const float degrees, const stdAc::fanspeed_t fan,
521 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
522 const bool turbo, const bool light,
523 const bool filter, const bool clean);
524#endif // SEND_SHARP_AC
525#if SEND_TCL112AC
526 void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
527 const bool on, const stdAc::opmode_t mode, const float degrees,
528 const stdAc::fanspeed_t fan,
529 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
530 const bool quiet, const bool turbo, const bool light,
531 const bool econo, const bool filter);
532#endif // SEND_TCL112AC
533#if SEND_TECHNIBEL_AC
534 void technibel(IRTechnibelAc *ac,
535 const bool on, const stdAc::opmode_t mode, const bool celsius,
536 const float degrees, const stdAc::fanspeed_t fan,
537 const stdAc::swingv_t swingv, const int16_t sleep = -1);
538#endif // SEND_TECHNIBEL_AC
539#if SEND_TECO
540 void teco(IRTecoAc *ac,
541 const bool on, const stdAc::opmode_t mode, const float degrees,
542 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
543 const bool light, const int16_t sleep = -1);
544#endif // SEND_TECO
545#if SEND_TOSHIBA_AC
546 void toshiba(IRToshibaAC *ac,
547 const bool on, const stdAc::opmode_t mode, const float degrees,
548 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
549 const bool turbo, const bool econo, const bool filter);
550#endif // SEND_TOSHIBA_AC
551#if SEND_TROTEC
552 void trotec(IRTrotecESP *ac,
553 const bool on, const stdAc::opmode_t mode, const float degrees,
554 const stdAc::fanspeed_t fan, const int16_t sleep = -1);
555#endif // SEND_TROTEC
556#if SEND_TROTEC_3550
557 void trotec3550(IRTrotec3550 *ac,
558 const bool on, const stdAc::opmode_t mode,
559 const bool celsius, const float degrees,
560 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
561#endif // SEND_TROTEC_3550
562#if SEND_TRUMA
563 void truma(IRTrumaAc *ac,
564 const bool on, const stdAc::opmode_t mode, const float degrees,
565 const stdAc::fanspeed_t fan, const bool quiet);
566#endif // SEND_TRUMA
567#if SEND_VESTEL_AC
568 void vestel(IRVestelAc *ac,
569 const bool on, const stdAc::opmode_t mode, const float degrees,
570 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
571 const bool turbo, const bool filter,
572 const int16_t sleep = -1, const int16_t clock = -1,
573 const bool sendNormal = true);
574#endif // SEND_VESTEL_AC
575#if SEND_VOLTAS
576 void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
577 const bool on, const stdAc::opmode_t mode,
578 const float degrees, const stdAc::fanspeed_t fan,
579 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
580 const bool turbo, const bool econo, const bool light,
581 const int16_t sleep = -1);
582#endif // SEND_VOLTAS
583#if SEND_WHIRLPOOL_AC
585 const bool on, const stdAc::opmode_t mode, const float degrees,
586 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
587 const bool turbo, const bool light,
588 const int16_t sleep = -1, const int16_t clock = -1);
589#endif // SEND_WHIRLPOOL_AC
590#if SEND_TRANSCOLD
591 void transcold(IRTranscoldAc *ac,
592 const bool on, const stdAc::opmode_t mode, const float degrees,
593 const stdAc::fanspeed_t fan,
594 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
595#endif // SEND_TRANSCOLD
596static stdAc::state_t cleanState(const stdAc::state_t state);
597static stdAc::state_t handleToggles(const stdAc::state_t desired,
598 const stdAc::state_t *prev = NULL);
599}; // IRac class
600
602namespace IRAcUtils {
603String resultAcToString(const decode_results * const results);
604bool decodeToState(const decode_results *decode, stdAc::state_t *result,
605 const stdAc::state_t *prev = NULL);
606} // namespace IRAcUtils
607#endif // IRAC_H_
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition IRac.h:59
std::string String
The protocol code builds human readable output with String. On ESP-IDF that is just std::string.
Definition IRplatform.h:21
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition IRremoteESP8266.h:1035
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition IRsend.h:187
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition IRsend.h:198
tcl_ac_remote_model_t
TCL (& Teknopoint) A/C model numbers.
Definition IRsend.h:205
lg_ac_remote_model_t
LG A/C model numbers.
Definition IRsend.h:228
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition IRsend.h:146
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition IRsend.h:211
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition IRsend.h:217
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition IRsend.h:169
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition IRsend.h:175
gree_ac_remote_model_t
Gree A/C model numbers.
Definition IRsend.h:161
Class for handling detailed Airton 56-bit A/C messages.
Definition ir_Airton.h:73
Class for handling detailed Airwell A/C messages.
Definition ir_Airwell.h:58
Class for handling detailed Amcor A/C messages.
Definition ir_Amcor.h:88
Supports Argo A/C SAC-WREM3 IR remote protocol.
Definition ir_Argo.h:447
Supports Argo A/C SAC-WREM2 IR remote protocol.
Definition ir_Argo.h:420
Class for handling detailed Bosch144 A/C messages.
Definition ir_Bosch.h:179
Class for handling detailed Carrier 64 bit A/C messages.
Definition ir_Carrier.h:87
Class for handling detailed Coolix A/C messages.
Definition ir_Coolix.h:156
Class for handling detailed Corona A/C messages.
Definition ir_Corona.h:105
Class for handling detailed Daikin 128-bit A/C messages.
Definition ir_Daikin.h:1364
Class for handling detailed Daikin 152-bit A/C messages.
Definition ir_Daikin.h:1434
Class for handling detailed Daikin 160-bit A/C messages.
Definition ir_Daikin.h:1253
Class for handling detailed Daikin 176-bit A/C messages.
Definition ir_Daikin.h:1305
Class for handling detailed Daikin 216-bit A/C messages.
Definition ir_Daikin.h:1197
Class for handling detailed Daikin 312-bit A/C messages.
Definition ir_Daikin.h:1099
Class for handling detailed Daikin 312-bit A/C messages.
Definition ir_Daikin.h:902
Class for handling detailed Daikin 64-bit A/C messages.
Definition ir_Daikin.h:1494
Class for handling detailed Daikin 280-bit A/C messages.
Definition ir_Daikin.h:1017
Class for handling detailed Delonghi A/C messages.
Definition ir_Delonghi.h:71
Class for handling detailed EcoClim A/C 56 bit messages.
Definition ir_Ecoclim.h:82
Class for handling detailed Electra A/C messages.
Definition ir_Electra.h:114
Class for handling detailed Eurom A/C messages.
Definition ir_Eurom.h:150
Class for handling detailed Fujitsu A/C messages.
Definition ir_Fujitsu.h:179
Class for handling detailed Goodweather A/C messages.
Definition ir_Goodweather.h:98
Class for handling detailed Gree A/C messages.
Definition ir_Gree.h:154
Class for handling detailed Haier 160 bit A/C messages.
Definition ir_Haier.h:561
Class for handling detailed Haier 176 bit A/C messages.
Definition ir_Haier.h:444
Class for handling detailed Haier ACYRW02 A/C messages.
Definition ir_Haier.h:542
Class for handling detailed Haier A/C messages.
Definition ir_Haier.h:374
Class for handling detailed Hitachi 104-bit A/C messages.
Definition ir_Hitachi.h:428
Class for handling detailed Hitachi 264-bit A/C messages.
Definition ir_Hitachi.h:606
Definition ir_Hitachi.h:623
Class for handling detailed Hitachi 344-bit A/C messages.
Definition ir_Hitachi.h:585
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition ir_Hitachi.h:496
Class for handling detailed Hitachi 224-bit A/C messages.
Definition ir_Hitachi.h:371
Definition ir_Kelon.h:88
Class for handling detailed Kelvinator A/C messages.
Definition ir_Kelvinator.h:130
Class for handling detailed LG A/C messages.
Definition ir_LG.h:112
Class for handling detailed Midea A/C messages.
Definition ir_Midea.h:173
Class for handling detailed Mirage 120-bit A/C messages.
Definition ir_Mirage.h:194
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition ir_Mitsubishi.h:399
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition ir_Mitsubishi.h:345
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition ir_Mitsubishi.h:265
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition ir_MitsubishiHeavy.h:182
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition ir_MitsubishiHeavy.h:269
Class for handling detailed Neoclima A/C messages.
Definition ir_Neoclima.h:118
Class for handling detailed Panasonic 32bit A/C messages.
Definition ir_Panasonic.h:223
Class for handling detailed Panasonic A/C messages.
Definition ir_Panasonic.h:104
Class for handling detailed Rhoss A/C messages.
Definition ir_Rhoss.h:92
Class for handling detailed Samsung A/C messages.
Definition ir_Samsung.h:184
Class for handling detailed Sanyo A/C messages.
Definition ir_Sanyo.h:227
Class for handling detailed Sanyo A/C messages.
Definition ir_Sanyo.h:109
Class for handling detailed Sharp A/C messages.
Definition ir_Sharp.h:151
Class for handling detailed TCL A/C messages.
Definition ir_Tcl.h:124
Class for handling detailed Technibel A/C messages.
Definition ir_Technibel.h:75
Class for handling detailed Teco A/C messages.
Definition ir_Teco.h:60
Class for handling detailed Toshiba A/C messages.
Definition ir_Toshiba.h:134
Class for handling detailed Transcold A/C messages.
Definition ir_Transcold.h:118
Class for handling detailed Trotec 3550 A/C messages.
Definition ir_Trotec.h:196
Class for handling detailed Trotec A/C messages.
Definition ir_Trotec.h:131
Class for handling detailed Truma A/C messages.
Definition ir_Truma.h:67
Class for handling detailed Vestel A/C messages.
Definition ir_Vestel.h:98
Class for handling detailed Voltas A/C messages.
Definition ir_Voltas.h:89
Class for handling detailed Whirlpool A/C messages.
Definition ir_Whirlpool.h:130
A universal/common/generic interface for controling supported A/Cs.
Definition IRac.h:63
std::vector< int > getTiming(void)
Definition IRac.cpp:193
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:1142
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:1773
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition IRac.cpp:3772
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:2435
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:1064
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:2570
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:1742
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:416
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition IRac.cpp:4165
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:2065
void bosch144(IRBosch144AC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const bool quiet)
Send a Bosch144 A/C message with the supplied settings.
Definition IRac.cpp:669
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:3823
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:447
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 quiet, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition IRac.cpp:1250
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:750
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:3935
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition IRac.cpp:3797
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:2972
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:1842
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:971
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition IRac.cpp:3783
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition IRac.cpp:4078
static String commandTypeToString(const stdAc::ac_command_t cmdType)
Convert the supplied operation mode into the appropriate String.
Definition IRac.cpp:4103
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:475
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:3892
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:1915
void resetTiming(void)
Definition IRac.cpp:194
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:607
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:2177
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition IRac.cpp:4148
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:2298
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:1971
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:938
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:1876
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:555
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition IRac.cpp:3976
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:3859
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:3803
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:2221
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:2894
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:1603
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:2933
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:710
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:1713
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:1433
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:1025
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition IRac.h:136
void daikin312(IRDaikin312 *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 Daikin 312-bit A/C message with the supplied settings.
Definition IRac.cpp:1100
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:901
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:2774
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition IRac.cpp:4096
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition IRac.h:134
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:2533
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:2603
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:2101
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:2705
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:2026
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:993
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:2816
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:2477
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:2959
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:2737
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition IRac.cpp:4132
uint16_t _pin
The GPIO to use to transmit messages from.
Definition IRac.h:133
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:645
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:1561
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:1388
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:1676
bool _modulation
Is frequency modulation to be used?
Definition IRac.h:135
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:1639
void markAsSent(void)
Update the previous state to the current one.
Definition IRac.cpp:3766
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:510
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:1198
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:1516
void mirage(IRMirageAc *ac, const stdAc::state_t state)
Send a Mirage 120-bit A/C message with the supplied settings.
Definition IRac.cpp:2007
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:2637
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition IRac.cpp:200
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:826
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:190
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:1474
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:2857
stdAc::state_t next
The state we want the device to be in after we send.
Definition IRac.h:119
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:1323
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:1807
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:2673
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition IRac.cpp:185
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:145
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:1172
void eurom(IREuromAc *ac, const bool power, const stdAc::opmode_t mode, const float degrees, const bool fahrenheit, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool sleep)
Send an Eurom A/C message with the supplied settings.
Definition IRac.cpp:1291
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:589
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:2136
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:2391
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:2262
static String opmodeToString(const stdAc::opmode_t mode, const bool ha=false)
Convert the supplied operation mode into the appropriate String.
Definition IRac.cpp:4117
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:861
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:2344
Results returned from the decoder.
Definition IRrecv.h:89
Support for Airton protocol.
Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
Amcor A/C protocol.
Support for Argo Ulisse 13 DCI Mobile Split ACs.
Support for Bosch A/C protocol.
Carrier A/C.
Support for Coolix A/C protocols.
Support for Daikin A/C protocols.
Delonghi A/C.
EcoClim A/C protocol.
Support for Electra A/C protocols.
Support for Eurom A/C protocols.
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
Support for Goodweather compatible HVAC protocols.
Support for Gree A/C protocols.
Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
Support for Hitachi A/C protocols.
Support for Kelan AC protocol.
Support for Kelvinator A/C protocols.
Support for LG protocols.
Support for Midea protocols. Midea added by crankyoldgit & bwze.
Support for Mirage protocol.
Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
Support for Panasonic protocols.
Support for Rhoss A/C protocol.
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
Support for Sharp protocols.
Support for TCL protocols.
Support for Technibel protocol.
Support for Teco protocols.
Support for Toshiba protocols.
Support for Transcold A/C protocols.
Support for Trotec protocols.
Support for Truma protocol.
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
Support for Voltas A/C protocol.
Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
Support for the York AC protocol (remote GRYLH2A)
Common functions for use with all A/Cs supported by the IRac class.
Definition IRac.h:602
String resultAcToString(const decode_results *const results)
Display the human readable state of an A/C message if we can.
Definition IRac.cpp:4185
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev=NULL)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition IRac.cpp:4672
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:67
ac_command_t
Tyoe of A/C command (if the remote uses different codes for each)
Definition IRsend.h:96
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:55
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:106
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:80
Structure to hold a common A/C state.
Definition IRsend.h:120