IRremoteESP8266
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 <Arduino.h>
8#else
9#include <memory>
10#endif
11#include "IRremoteESP8266.h"
12#include "ir_Airton.h"
13#include "ir_Airwell.h"
14#include "ir_Amcor.h"
15#include "ir_Argo.h"
16#include "ir_Bosch.h"
17#include "ir_Carrier.h"
18#include "ir_Coolix.h"
19#include "ir_Corona.h"
20#include "ir_Daikin.h"
21#include "ir_Delonghi.h"
22#include "ir_Fujitsu.h"
23#include "ir_Ecoclim.h"
24#include "ir_Electra.h"
25#include "ir_Eurom.h"
26#include "ir_Goodweather.h"
27#include "ir_Gree.h"
28#include "ir_Haier.h"
29#include "ir_Hitachi.h"
30#include "ir_Kelon.h"
31#include "ir_Kelvinator.h"
32#include "ir_LG.h"
33#include "ir_Midea.h"
34#include "ir_Mirage.h"
35#include "ir_Mitsubishi.h"
36#include "ir_MitsubishiHeavy.h"
37#include "ir_Neoclima.h"
38#include "ir_Panasonic.h"
39#include "ir_Rhoss.h"
40#include "ir_Samsung.h"
41#include "ir_Sanyo.h"
42#include "ir_Sharp.h"
43#include "ir_Tcl.h"
44#include "ir_Technibel.h"
45#include "ir_Teco.h"
46#include "ir_Toshiba.h"
47#include "ir_Transcold.h"
48#include "ir_Trotec.h"
49#include "ir_Truma.h"
50#include "ir_Vestel.h"
51#include "ir_Voltas.h"
52#include "ir_Whirlpool.h"
53#include "ir_York.h"
54
55// Constants
56const int8_t kGpioUnused = -1;
57
58// Class
60class IRac {
61 public:
62 explicit IRac(const uint16_t pin, const bool inverted = false,
63 const bool use_modulation = true);
64 static bool isProtocolSupported(const decode_type_t protocol);
65 static void initState(stdAc::state_t *state,
66 const decode_type_t vendor, const int16_t model,
67 const bool power, const stdAc::opmode_t mode,
68 const float degrees, const bool celsius,
69 const stdAc::fanspeed_t fan,
70 const stdAc::swingv_t swingv,
71 const stdAc::swingh_t swingh,
72 const bool quiet, const bool turbo, const bool econo,
73 const bool light, const bool filter, const bool clean,
74 const bool beep, const int16_t sleep,
75 const int16_t clock);
76 static void initState(stdAc::state_t *state);
77 void markAsSent(void);
78 bool sendAc(void);
79 bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
80 bool sendAc(const decode_type_t vendor, const int16_t model,
81 const bool power, const stdAc::opmode_t mode, const float degrees,
82 const bool celsius, const stdAc::fanspeed_t fan,
83 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
84 const bool quiet, const bool turbo, const bool econo,
85 const bool light, const bool filter, const bool clean,
86 const bool beep, const int16_t sleep = -1,
87 const int16_t clock = -1);
88 static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
89 static bool strToBool(const char *str, const bool def = false);
90 static int16_t strToModel(const char *str, const int16_t def = -1);
91 static stdAc::ac_command_t strToCommandType(const char *str,
94 const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
96 const char *str,
99 const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
101 const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
102 static String boolToString(const bool value);
103 static String commandTypeToString(const stdAc::ac_command_t cmdType);
104 static String opmodeToString(const stdAc::opmode_t mode,
105 const bool ha = false);
106 static String fanspeedToString(const stdAc::fanspeed_t speed);
107 static String swingvToString(const stdAc::swingv_t swingv);
108 static String swinghToString(const stdAc::swingh_t swingh);
111 bool hasStateChanged(void);
113#ifdef UNIT_TEST
117 std::shared_ptr<IRrecv> _utReceiver = nullptr;
118 std::unique_ptr<decode_results> _lastDecodeResults = nullptr;
120#else
121
122 private:
123#endif // UNIT_TEST
124 uint16_t _pin;
128#if SEND_AIRTON
129 void airton(IRAirtonAc *ac,
130 const bool on, const stdAc::opmode_t mode,
131 const float degrees, const stdAc::fanspeed_t fan,
132 const stdAc::swingv_t swingv, const bool turbo,
133 const bool light, const bool econo, const bool filter,
134 const int16_t sleep = -1);
135#endif // SEND_AIRTON
136#if SEND_AIRWELL
137 void airwell(IRAirwellAc *ac,
138 const bool on, const stdAc::opmode_t mode, const float degrees,
139 const stdAc::fanspeed_t fan);
140#endif // SEND_AIRWELL
141#if SEND_AMCOR
142 void amcor(IRAmcorAc *ac,
143 const bool on, const stdAc::opmode_t mode, const float degrees,
144 const stdAc::fanspeed_t fan);
145#endif // SEND_AMCOR
146#if SEND_ARGO
147 void argo(IRArgoAC *ac,
148 const bool on, const stdAc::opmode_t mode, const float degrees,
149 const float sensorTemp, const stdAc::fanspeed_t fan,
150 const stdAc::swingv_t swingv, const bool iFeel, const bool turbo,
151 const int16_t sleep = -1);
153 const bool on, const stdAc::opmode_t mode, const float degrees,
154 const float sensorTemp, const stdAc::fanspeed_t fan,
155 const stdAc::swingv_t swingv, const bool iFeel, const bool night,
156 const bool econo, const bool turbo, const bool filter, const bool light);
157 void argoWrem3_iFeelReport(IRArgoAC_WREM3 *ac, const float sensorTemp);
158 void argoWrem3_ConfigSet(IRArgoAC_WREM3 *ac, const uint8_t param,
159 const uint8_t value, bool safe = true);
160 void argoWrem3_SetTimer(IRArgoAC_WREM3 *ac, bool on,
161 const uint16_t currentTime, const uint16_t delayMinutes);
162#endif // SEND_ARGO
163#if SEND_BOSCH144
164 void bosch144(IRBosch144AC *ac,
165 const bool on, const stdAc::opmode_t mode, const float degrees,
166 const bool celsius, const stdAc::fanspeed_t fan,
167 const bool quiet);
168#endif // SEND_BOSCH144
169#if SEND_CARRIER_AC64
170void carrier64(IRCarrierAc64 *ac,
171 const bool on, const stdAc::opmode_t mode,
172 const float degrees, const stdAc::fanspeed_t fan,
173 const stdAc::swingv_t swingv, const int16_t sleep = -1);
174#endif // SEND_CARRIER_AC64
175#if SEND_COOLIX
176 void coolix(IRCoolixAC *ac,
177 const bool on, const stdAc::opmode_t mode, const float degrees,
178 const float sensorTemp, const stdAc::fanspeed_t fan,
179 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
180 const bool iFeel, const bool turbo, const bool light,
181 const bool clean, const int16_t sleep = -1);
182#endif // SEND_COOLIX
183#if SEND_CORONA_AC
184 void corona(IRCoronaAc *ac,
185 const bool on, const stdAc::opmode_t mode,
186 const float degrees, const stdAc::fanspeed_t fan,
187 const stdAc::swingv_t swingv, const bool econo);
188#endif // SEND_CORONA_AC
189#if SEND_DAIKIN
190 void daikin(IRDaikinESP *ac,
191 const bool on, const stdAc::opmode_t mode, const float degrees,
192 const stdAc::fanspeed_t fan,
193 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
194 const bool quiet, const bool turbo, const bool econo,
195 const bool clean);
196#endif // SEND_DAIKIN
197#if SEND_DAIKIN128
198 void daikin128(IRDaikin128 *ac,
199 const bool on, const stdAc::opmode_t mode,
200 const float degrees, const stdAc::fanspeed_t fan,
201 const stdAc::swingv_t swingv,
202 const bool quiet, const bool turbo, const bool light,
203 const bool econo, const int16_t sleep = -1,
204 const int16_t clock = -1);
205#endif // SEND_DAIKIN128
206#if SEND_DAIKIN152
207 void daikin152(IRDaikin152 *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 econo);
212#endif // SEND_DAIKIN152
213#if SEND_DAIKIN160
214 void daikin160(IRDaikin160 *ac,
215 const bool on, const stdAc::opmode_t mode,
216 const float degrees, const stdAc::fanspeed_t fan,
217 const stdAc::swingv_t swingv);
218#endif // SEND_DAIKIN160
219#if SEND_DAIKIN176
220 void daikin176(IRDaikin176 *ac,
221 const bool on, const stdAc::opmode_t mode,
222 const float degrees, const stdAc::fanspeed_t fan,
223 const stdAc::swingh_t swingh);
224#endif // SEND_DAIKIN176
225#if SEND_DAIKIN2
226 void daikin2(IRDaikin2 *ac,
227 const bool on, const stdAc::opmode_t mode,
228 const float degrees, const stdAc::fanspeed_t fan,
229 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
230 const bool quiet, const bool turbo, const bool light,
231 const bool econo, const bool filter, const bool clean,
232 const bool beep, const int16_t sleep = -1,
233 const int16_t clock = -1);
234#endif // SEND_DAIKIN2
235#if SEND_DAIKIN216
236void daikin216(IRDaikin216 *ac,
237 const bool on, const stdAc::opmode_t mode,
238 const float degrees, const stdAc::fanspeed_t fan,
239 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
240 const bool quiet, const bool turbo);
241#endif // SEND_DAIKIN216
242#if SEND_DAIKIN64
243 void daikin64(IRDaikin64 *ac,
244 const bool on, const stdAc::opmode_t mode,
245 const float degrees, const stdAc::fanspeed_t fan,
246 const stdAc::swingv_t swingv,
247 const bool quiet, const bool turbo,
248 const int16_t sleep = -1, const int16_t clock = -1);
249#endif // SEND_DAIKIN64
250#if SEND_DELONGHI_AC
251 void delonghiac(IRDelonghiAc *ac,
252 const bool on, const stdAc::opmode_t mode, const bool celsius,
253 const float degrees, const stdAc::fanspeed_t fan,
254 const bool turbo, const int16_t sleep = -1);
255#endif // SEND_DELONGHI_AC
256#if SEND_ECOCLIM
257void ecoclim(IREcoclimAc *ac,
258 const bool on, const stdAc::opmode_t mode,
259 const float degrees, const float sensorTemp,
260 const stdAc::fanspeed_t fan, const int16_t sleep = -1,
261 const int16_t clock = -1);
262#endif // SEND_ECOCLIM
263#if SEND_ELECTRA_AC
264void electra(IRElectraAc *ac,
265 const bool on, const stdAc::opmode_t mode,
266 const float degrees, const float sensorTemp,
267 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
268 const stdAc::swingh_t swingh, const bool iFeel, const bool quiet,
269 const bool turbo, const bool lighttoggle, const bool clean);
270#endif // SEND_ELECTRA_AC
271#if SEND_EUROM
272 void eurom(IREuromAc *ac, const bool power, const stdAc::opmode_t mode,
273 const float degrees, const bool fahrenheit,
274 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
275 const bool sleep);
276#endif // SEND_EUROM
277#if SEND_FUJITSU_AC
278 void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
279 const bool on, const stdAc::opmode_t mode,
280 const bool celsius, const float degrees,
281 const stdAc::fanspeed_t fan,
282 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
283 const bool quiet, const bool turbo, const bool econo,
284 const bool filter, const bool clean, const int16_t sleep = -1);
285#endif // SEND_FUJITSU_AC
286#if SEND_GOODWEATHER
288 const bool on, const stdAc::opmode_t mode,
289 const float degrees,
290 const stdAc::fanspeed_t fan,
291 const stdAc::swingv_t swingv,
292 const bool turbo, const bool light,
293 const int16_t sleep = -1);
294#endif // SEND_GOODWEATHER
295#if SEND_GREE
296 void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
297 const bool on, const stdAc::opmode_t mode, const bool celsius,
298 const float degrees, const stdAc::fanspeed_t fan,
299 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
300 const bool iFeel, const bool turbo, const bool econo,
301 const bool light, const bool clean, const int16_t sleep = -1);
302#endif // SEND_GREE
303#if SEND_HAIER_AC
304 void haier(IRHaierAC *ac,
305 const bool on, const stdAc::opmode_t mode, const float degrees,
306 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
307 const bool filter, const int16_t sleep = -1,
308 const int16_t clock = -1);
309#endif // SEND_HAIER_AC
310#if SEND_HAIER_AC160
311 void haier160(IRHaierAC160 *ac,
312 const bool on, const stdAc::opmode_t mode, const bool celsius,
313 const float degrees, const stdAc::fanspeed_t fan,
314 const stdAc::swingv_t swingv,
315 const bool turbo, const bool quiet, const bool filter,
316 const bool clean, const bool light, const bool prevlight,
317 const int16_t sleep = -1);
318#endif // SEND_HAIER_AC160
319#if SEND_HAIER_AC176
320 void haier176(IRHaierAC176 *ac,
321 const haier_ac176_remote_model_t model, const bool on,
322 const stdAc::opmode_t mode, const bool celsius,
323 const float degrees, const stdAc::fanspeed_t fan,
324 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
325 const bool turbo, const bool quiet, const bool filter,
326 const int16_t sleep = -1);
327#endif // SEND_HAIER_AC176
328#if SEND_HAIER_AC_YRW02
329 void haierYrwo2(IRHaierACYRW02 *ac,
330 const bool on, const stdAc::opmode_t mode,
331 const bool celsius, const float degrees,
332 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
333 const stdAc::swingh_t swingh, const bool turbo,
334 const bool quiet, const bool filter,
335 const int16_t sleep = -1);
336#endif // SEND_HAIER_AC_YRW02
337#if SEND_HITACHI_AC
338 void hitachi(IRHitachiAc *ac,
339 const bool on, const stdAc::opmode_t mode,
340 const float degrees, const stdAc::fanspeed_t fan,
341 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
342#endif // SEND_HITACHI_AC
343#if SEND_HITACHI_AC1
345 const bool on, const bool power_toggle,
346 const stdAc::opmode_t mode,
347 const float degrees, const stdAc::fanspeed_t fan,
348 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
349 const bool swing_toggle, const int16_t sleep = -1);
350#endif // SEND_HITACHI_AC1
351#if SEND_HITACHI_AC264
352 void hitachi264(IRHitachiAc264 *ac,
353 const bool on, const stdAc::opmode_t mode,
354 const float degrees, const stdAc::fanspeed_t fan);
355#endif // SEND_HITACHI_AC264
356#if SEND_HITACHI_AC296
357 void hitachi296(IRHitachiAc296 *ac,
358 const bool on, const stdAc::opmode_t mode,
359 const float degrees, const stdAc::fanspeed_t fan);
360#endif // SEND_HITACHI_AC296
361#if SEND_HITACHI_AC344
362 void hitachi344(IRHitachiAc344 *ac,
363 const bool on, const stdAc::opmode_t mode,
364 const float degrees, const stdAc::fanspeed_t fan,
365 const stdAc::swingv_t swingv,
366 const stdAc::swingh_t swingh);
367#endif // SEND_HITACHI_AC344
368#if SEND_HITACHI_AC424
369 void hitachi424(IRHitachiAc424 *ac,
370 const bool on, const stdAc::opmode_t mode,
371 const float degrees, const stdAc::fanspeed_t fan,
372 const stdAc::swingv_t swingv);
373#endif // SEND_HITACHI_AC424
374#if SEND_KELON
375 void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
376 const int8_t dryGrade, const float degrees,
377 const stdAc::fanspeed_t fan, const bool toggleSwing,
378 const bool superCool, const int16_t sleep);
379#endif // SEND_KELON
380#if SEND_KELVINATOR
381 void kelvinator(IRKelvinatorAC *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, const stdAc::swingh_t swingh,
385 const bool quiet, const bool turbo, const bool light,
386 const bool filter, const bool clean);
387#endif // SEND_KELVINATOR
388#if SEND_LG
389 void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
390 const bool on, const stdAc::opmode_t mode,
391 const float degrees, const stdAc::fanspeed_t fan,
392 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
393 const stdAc::swingh_t swingh, const bool light);
394#endif // SEND_LG
395#if SEND_MIDEA
396 void midea(IRMideaAC *ac,
397 const bool on, const stdAc::opmode_t mode, const bool celsius,
398 const float degrees, const float sensorTemp,
399 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
400 const bool iFeel, const bool quiet, const bool quiet_prev,
401 const bool turbo, const bool econo, const bool light,
402 const bool clean, const int16_t sleep = -1);
403#endif // SEND_MIDEA
404#if SEND_MIRAGE
405 void mirage(IRMirageAc *ac, const stdAc::state_t state);
406#endif // SEND_MIRAGE
407#if SEND_MITSUBISHI_AC
408 void mitsubishi(IRMitsubishiAC *ac,
409 const bool on, const stdAc::opmode_t mode,
410 const float degrees,
411 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
412 const stdAc::swingh_t swingh,
413 const bool quiet, const int16_t clock = -1);
414#endif // SEND_MITSUBISHI_AC
415#if SEND_MITSUBISHI112
417 const bool on, const stdAc::opmode_t mode,
418 const float degrees, const stdAc::fanspeed_t fan,
419 const stdAc::swingv_t swingv,
420 const stdAc::swingh_t swingh,
421 const bool quiet);
422#endif // SEND_MITSUBISHI112
423#if SEND_MITSUBISHI136
425 const bool on, const stdAc::opmode_t mode,
426 const float degrees, const stdAc::fanspeed_t fan,
427 const stdAc::swingv_t swingv, const bool quiet);
428#endif // SEND_MITSUBISHI136
429#if SEND_MITSUBISHIHEAVY
431 const bool on, const stdAc::opmode_t mode,
432 const float degrees, const stdAc::fanspeed_t fan,
433 const stdAc::swingv_t swingv,
434 const stdAc::swingh_t swingh,
435 const bool turbo, const bool econo, const bool clean);
437 const bool on, const stdAc::opmode_t mode,
438 const float degrees, const stdAc::fanspeed_t fan,
439 const stdAc::swingv_t swingv,
440 const stdAc::swingh_t swingh,
441 const bool quiet, const bool turbo, const bool econo,
442 const bool filter, const bool clean,
443 const int16_t sleep = -1);
444#endif // SEND_MITSUBISHIHEAVY
445#if SEND_NEOCLIMA
446 void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
447 const bool celsius, const float degrees,
448 const stdAc::fanspeed_t fan,
449 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
450 const bool turbo, const bool econo, const bool light,
451 const bool filter, const int16_t sleep = -1);
452#endif // SEND_NEOCLIMA
453#if SEND_PANASONIC_AC
455 const bool on, const stdAc::opmode_t mode, const float degrees,
456 const stdAc::fanspeed_t fan,
457 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
458 const bool quiet, const bool turbo, const bool filter,
459 const int16_t clock = -1);
460#endif // SEND_PANASONIC_AC
461#if SEND_PANASONIC_AC32
463 const bool on, const stdAc::opmode_t mode,
464 const float degrees, const stdAc::fanspeed_t fan,
465 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
466#endif // SEND_PANASONIC_AC32
467#if SEND_RHOSS
468 void rhoss(IRRhossAc *ac,
469 const bool on, const stdAc::opmode_t mode, const float degrees,
470 const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
471#endif // SEND_RHOSS
472#if SEND_SAMSUNG_AC
473 void samsung(IRSamsungAc *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 econo,
478 const bool light, const bool filter, const bool clean,
479 const bool beep, const int16_t sleep = -1,
480 const bool prevpower = true, const int16_t prevsleep = -1,
481 const bool forceextended = true);
482#endif // SEND_SAMSUNG_AC
483#if SEND_SANYO_AC
484 void sanyo(IRSanyoAc *ac,
485 const bool on, const stdAc::opmode_t mode, const float degrees,
486 const float sensorTemp, const stdAc::fanspeed_t fan,
487 const stdAc::swingv_t swingv, const bool iFeel, const bool beep,
488 const int16_t sleep = -1);
489#endif // SEND_SANYO_AC
490#if SEND_SANYO_AC88
491 void sanyo88(IRSanyoAc88 *ac,
492 const bool on, const stdAc::opmode_t mode,
493 const float degrees, const stdAc::fanspeed_t fan,
494 const stdAc::swingv_t swingv, const bool turbo,
495 const bool filter,
496 const int16_t sleep = -1, const int16_t clock = -1);
497#endif // SEND_SANYO_AC88
498#if SEND_SHARP_AC
499 void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
500 const bool on, const bool prev_power, const stdAc::opmode_t mode,
501 const float degrees, const stdAc::fanspeed_t fan,
502 const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
503 const bool turbo, const bool light,
504 const bool filter, const bool clean);
505#endif // SEND_SHARP_AC
506#if SEND_TCL112AC
507 void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
508 const bool on, const stdAc::opmode_t mode, const float degrees,
509 const stdAc::fanspeed_t fan,
510 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
511 const bool quiet, const bool turbo, const bool light,
512 const bool econo, const bool filter);
513#endif // SEND_TCL112AC
514#if SEND_TECHNIBEL_AC
515 void technibel(IRTechnibelAc *ac,
516 const bool on, const stdAc::opmode_t mode, const bool celsius,
517 const float degrees, const stdAc::fanspeed_t fan,
518 const stdAc::swingv_t swingv, const int16_t sleep = -1);
519#endif // SEND_TECHNIBEL_AC
520#if SEND_TECO
521 void teco(IRTecoAc *ac,
522 const bool on, const stdAc::opmode_t mode, const float degrees,
523 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
524 const bool light, const int16_t sleep = -1);
525#endif // SEND_TECO
526#if SEND_TOSHIBA_AC
527 void toshiba(IRToshibaAC *ac,
528 const bool on, const stdAc::opmode_t mode, const float degrees,
529 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
530 const bool turbo, const bool econo, const bool filter);
531#endif // SEND_TOSHIBA_AC
532#if SEND_TROTEC
533 void trotec(IRTrotecESP *ac,
534 const bool on, const stdAc::opmode_t mode, const float degrees,
535 const stdAc::fanspeed_t fan, const int16_t sleep = -1);
536#endif // SEND_TROTEC
537#if SEND_TROTEC_3550
538 void trotec3550(IRTrotec3550 *ac,
539 const bool on, const stdAc::opmode_t mode,
540 const bool celsius, const float degrees,
541 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
542#endif // SEND_TROTEC_3550
543#if SEND_TRUMA
544 void truma(IRTrumaAc *ac,
545 const bool on, const stdAc::opmode_t mode, const float degrees,
546 const stdAc::fanspeed_t fan, const bool quiet);
547#endif // SEND_TRUMA
548#if SEND_VESTEL_AC
549 void vestel(IRVestelAc *ac,
550 const bool on, const stdAc::opmode_t mode, const float degrees,
551 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
552 const bool turbo, const bool filter,
553 const int16_t sleep = -1, const int16_t clock = -1,
554 const bool sendNormal = true);
555#endif // SEND_VESTEL_AC
556#if SEND_VOLTAS
557 void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
558 const bool on, const stdAc::opmode_t mode,
559 const float degrees, const stdAc::fanspeed_t fan,
560 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
561 const bool turbo, const bool econo, const bool light,
562 const int16_t sleep = -1);
563#endif // SEND_VOLTAS
564#if SEND_WHIRLPOOL_AC
566 const bool on, const stdAc::opmode_t mode, const float degrees,
567 const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
568 const bool turbo, const bool light,
569 const int16_t sleep = -1, const int16_t clock = -1);
570#endif // SEND_WHIRLPOOL_AC
571#if SEND_TRANSCOLD
572 void transcold(IRTranscoldAc *ac,
573 const bool on, const stdAc::opmode_t mode, const float degrees,
574 const stdAc::fanspeed_t fan,
575 const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
576#endif // SEND_TRANSCOLD
577static stdAc::state_t cleanState(const stdAc::state_t state);
578static stdAc::state_t handleToggles(const stdAc::state_t desired,
579 const stdAc::state_t *prev = NULL);
580}; // IRac class
581
583namespace IRAcUtils {
584String resultAcToString(const decode_results * const results);
585bool decodeToState(const decode_results *decode, stdAc::state_t *result,
586 const stdAc::state_t *prev = NULL);
587} // namespace IRAcUtils
588#endif // IRAC_H_
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition IRac.h:56
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition IRremoteESP8266.h:1036
std::string String
Definition IRremoteESP8266.h:1564
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition IRsend.h:181
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition IRsend.h:192
tcl_ac_remote_model_t
TCL (& Teknopoint) A/C model numbers.
Definition IRsend.h:199
lg_ac_remote_model_t
LG A/C model numbers.
Definition IRsend.h:222
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition IRsend.h:140
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition IRsend.h:205
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition IRsend.h:211
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition IRsend.h:163
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition IRsend.h:169
gree_ac_remote_model_t
Gree A/C model numbers.
Definition IRsend.h:155
Class for handling detailed Airton 56-bit A/C messages.
Definition ir_Airton.h:75
Class for handling detailed Airwell A/C messages.
Definition ir_Airwell.h:60
Class for handling detailed Amcor A/C messages.
Definition ir_Amcor.h:90
Supports Argo A/C SAC-WREM3 IR remote protocol.
Definition ir_Argo.h:449
Supports Argo A/C SAC-WREM2 IR remote protocol.
Definition ir_Argo.h:422
Class for handling detailed Bosch144 A/C messages.
Definition ir_Bosch.h:181
Class for handling detailed Carrier 64 bit A/C messages.
Definition ir_Carrier.h:89
Class for handling detailed Coolix A/C messages.
Definition ir_Coolix.h:158
Class for handling detailed Corona A/C messages.
Definition ir_Corona.h:107
Class for handling detailed Daikin 128-bit A/C messages.
Definition ir_Daikin.h:1070
Class for handling detailed Daikin 152-bit A/C messages.
Definition ir_Daikin.h:1140
Class for handling detailed Daikin 160-bit A/C messages.
Definition ir_Daikin.h:959
Class for handling detailed Daikin 176-bit A/C messages.
Definition ir_Daikin.h:1011
Class for handling detailed Daikin 216-bit A/C messages.
Definition ir_Daikin.h:903
Class for handling detailed Daikin 312-bit A/C messages.
Definition ir_Daikin.h:805
Class for handling detailed Daikin 64-bit A/C messages.
Definition ir_Daikin.h:1200
Class for handling detailed Daikin 280-bit A/C messages.
Definition ir_Daikin.h:723
Class for handling detailed Delonghi A/C messages.
Definition ir_Delonghi.h:73
Class for handling detailed EcoClim A/C 56 bit messages.
Definition ir_Ecoclim.h:84
Class for handling detailed Electra A/C messages.
Definition ir_Electra.h:115
Class for handling detailed Eurom A/C messages.
Definition ir_Eurom.h:152
Class for handling detailed Fujitsu A/C messages.
Definition ir_Fujitsu.h:180
Class for handling detailed Goodweather A/C messages.
Definition ir_Goodweather.h:100
Class for handling detailed Gree A/C messages.
Definition ir_Gree.h:156
Class for handling detailed Haier 160 bit A/C messages.
Definition ir_Haier.h:563
Class for handling detailed Haier 176 bit A/C messages.
Definition ir_Haier.h:446
Class for handling detailed Haier ACYRW02 A/C messages.
Definition ir_Haier.h:544
Class for handling detailed Haier A/C messages.
Definition ir_Haier.h:376
Class for handling detailed Hitachi 104-bit A/C messages.
Definition ir_Hitachi.h:429
Class for handling detailed Hitachi 264-bit A/C messages.
Definition ir_Hitachi.h:607
Definition ir_Hitachi.h:624
Class for handling detailed Hitachi 344-bit A/C messages.
Definition ir_Hitachi.h:586
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition ir_Hitachi.h:497
Class for handling detailed Hitachi 224-bit A/C messages.
Definition ir_Hitachi.h:372
Definition ir_Kelon.h:88
Class for handling detailed Kelvinator A/C messages.
Definition ir_Kelvinator.h:132
Class for handling detailed LG A/C messages.
Definition ir_LG.h:114
Class for handling detailed Midea A/C messages.
Definition ir_Midea.h:175
Class for handling detailed Mirage 120-bit A/C messages.
Definition ir_Mirage.h:196
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition ir_Mitsubishi.h:401
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition ir_Mitsubishi.h:347
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition ir_Mitsubishi.h:267
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition ir_MitsubishiHeavy.h:184
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition ir_MitsubishiHeavy.h:271
Class for handling detailed Neoclima A/C messages.
Definition ir_Neoclima.h:120
Class for handling detailed Panasonic 32bit A/C messages.
Definition ir_Panasonic.h:225
Class for handling detailed Panasonic A/C messages.
Definition ir_Panasonic.h:106
Class for handling detailed Rhoss A/C messages.
Definition ir_Rhoss.h:94
Class for handling detailed Samsung A/C messages.
Definition ir_Samsung.h:186
Class for handling detailed Sanyo A/C messages.
Definition ir_Sanyo.h:229
Class for handling detailed Sanyo A/C messages.
Definition ir_Sanyo.h:111
Class for handling detailed Sharp A/C messages.
Definition ir_Sharp.h:153
Class for handling detailed TCL A/C messages.
Definition ir_Tcl.h:126
Class for handling detailed Technibel A/C messages.
Definition ir_Technibel.h:77
Class for handling detailed Teco A/C messages.
Definition ir_Teco.h:62
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:120
Class for handling detailed Trotec 3550 A/C messages.
Definition ir_Trotec.h:198
Class for handling detailed Trotec A/C messages.
Definition ir_Trotec.h:133
Class for handling detailed Truma A/C messages.
Definition ir_Truma.h:69
Class for handling detailed Vestel A/C messages.
Definition ir_Vestel.h:100
Class for handling detailed Voltas A/C messages.
Definition ir_Voltas.h:91
Class for handling detailed Whirlpool A/C messages.
Definition ir_Whirlpool.h:132
A universal/common/generic interface for controling supported A/Cs.
Definition IRac.h:60
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:1080
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:1711
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition IRac.cpp:3700
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:2373
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:1050
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:2508
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:1680
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:402
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition IRac.cpp:4093
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:2003
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:655
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:3751
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:433
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:1188
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:736
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:3863
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition IRac.cpp:3725
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:2910
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:1780
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:957
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition IRac.cpp:3711
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition IRac.cpp:4006
static String commandTypeToString(const stdAc::ac_command_t cmdType)
Convert the supplied operation mode into the appropriate String.
Definition IRac.cpp:4031
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:461
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:3820
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:1853
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:593
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:2115
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition IRac.cpp:4076
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:2236
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:1909
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:924
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:1814
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:541
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition IRac.cpp:3904
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:3787
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:3731
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:2159
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:2832
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:1541
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:2871
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:696
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:1651
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:1371
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:1011
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition IRac.h:127
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:887
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:2712
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition IRac.cpp:4024
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition IRac.h:125
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:2471
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:2541
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:2039
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:2643
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:1964
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:979
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:2754
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:2415
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:2897
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:2675
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition IRac.cpp:4060
uint16_t _pin
The GPIO to use to transmit messages from.
Definition IRac.h:124
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:631
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:1499
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:1326
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:1614
bool _modulation
Is frequency modulation to be used?
Definition IRac.h:126
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:1577
void markAsSent(void)
Update the previous state to the current one.
Definition IRac.cpp:3694
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:496
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:1136
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:1454
void mirage(IRMirageAc *ac, const stdAc::state_t state)
Send a Mirage 120-bit A/C message with the supplied settings.
Definition IRac.cpp:1945
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:2575
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition IRac.cpp:189
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:812
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:184
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:1412
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:2795
stdAc::state_t next
The state we want the device to be in after we send.
Definition IRac.h:112
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:1261
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:1745
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:2611
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition IRac.cpp:179
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:139
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:1110
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:1229
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:575
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:2074
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:2329
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:2200
static String opmodeToString(const stdAc::opmode_t mode, const bool ha=false)
Convert the supplied operation mode into the appropriate String.
Definition IRac.cpp:4045
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:847
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:2282
Results returned from the decoder.
Definition IRrecv.h:101
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.cpp:4107
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition IRac.cpp:4113
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:4593
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:61
ac_command_t
Tyoe of A/C command (if the remote uses different codes for each)
Definition IRsend.h:90
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:49
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:100
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:74
Structure to hold a common A/C state.
Definition IRsend.h:114