IRremoteESP8266
Loading...
Searching...
No Matches
ir_Haier.h
Go to the documentation of this file.
1// Copyright 2018-2021 crankyoldgit
12
13// Supports:
14// Brand: Haier, Model: HSU07-HEA03 remote (HAIER_AC)
15// Brand: Haier, Model: YR-W02 remote (HAIER_AC_YRW02)
16// Brand: Haier, Model: HSU-09HMC203 A/C (HAIER_AC_YRW02)
17// Brand: Haier, Model: V9014557 M47 8D remote (HAIER_AC176)
18// Brand: Mabe, Model: MMI18HDBWCA6MI8 A/C (HAIER_AC176)
19// Brand: Mabe, Model: V12843 HJ200223 remote (HAIER_AC176)
20// Brand: Daichi, Model: D-H A/C (HAIER_AC176)
21// Brand: Haier, Model: KFR-26GW/83@UI-Ge A/C (HAIER_AC160)
22
23#ifndef IR_HAIER_H_
24#define IR_HAIER_H_
25
26#ifndef UNIT_TEST
27#include <Arduino.h>
28#endif
29#include "IRremoteESP8266.h"
30#include "IRsend.h"
31#ifdef UNIT_TEST
32#include "IRsend_test.h"
33#endif
34
39 struct {
40 // Byte 0
41 uint8_t Prefix;
42 // Byte 1
43 uint8_t Command:4;
44 uint8_t Temp :4;
45 // Byte 2
46 uint8_t CurrHours:5;
47 uint8_t unknown :1; // value=1
48 uint8_t SwingV :2;
49 // Byte 3
50 uint8_t CurrMins:6;
51 uint8_t OffTimer:1;
52 uint8_t OnTimer :1;
53 // Byte 4
54 uint8_t OffHours:5;
55 uint8_t Health :1;
56 uint8_t :0;
57 // Byte 5
58 uint8_t OffMins:6;
59 uint8_t Fan :2;
60 // Byte 6
61 uint8_t OnHours:5;
62 uint8_t Mode :3;
63 // Byte 7
64 uint8_t OnMins:6;
65 uint8_t Sleep :1;
66 uint8_t :0;
67 // Byte 8
68 uint8_t Sum;
69 };
70};
71
72// Constants
73
74const uint8_t kHaierAcPrefix = 0b10100101;
75
76const uint8_t kHaierAcMinTemp = 16;
77const uint8_t kHaierAcDefTemp = 25;
78const uint8_t kHaierAcMaxTemp = 30;
79const uint8_t kHaierAcCmdOff = 0b0000;
80const uint8_t kHaierAcCmdOn = 0b0001;
81const uint8_t kHaierAcCmdMode = 0b0010;
82const uint8_t kHaierAcCmdFan = 0b0011;
83const uint8_t kHaierAcCmdTempUp = 0b0110;
84const uint8_t kHaierAcCmdTempDown = 0b0111;
85const uint8_t kHaierAcCmdSleep = 0b1000;
86const uint8_t kHaierAcCmdTimerSet = 0b1001;
87const uint8_t kHaierAcCmdTimerCancel = 0b1010;
88const uint8_t kHaierAcCmdHealth = 0b1100;
89const uint8_t kHaierAcCmdSwing = 0b1101;
90
91const uint8_t kHaierAcSwingVOff = 0b00;
92const uint8_t kHaierAcSwingVUp = 0b01;
93const uint8_t kHaierAcSwingVDown = 0b10;
94const uint8_t kHaierAcSwingVChg = 0b11;
95
96const uint8_t kHaierAcAuto = 0;
97const uint8_t kHaierAcCool = 1;
98const uint8_t kHaierAcDry = 2;
99const uint8_t kHaierAcHeat = 3;
100const uint8_t kHaierAcFan = 4;
101
102const uint8_t kHaierAcFanAuto = 0;
103const uint8_t kHaierAcFanLow = 1;
104const uint8_t kHaierAcFanMed = 2;
105const uint8_t kHaierAcFanHigh = 3;
106
107const uint16_t kHaierAcMaxTime = (23 * 60) + 59;
108
109const uint8_t kHaierAcSleepBit = 0b01000000;
110
111// Legacy Haier AC defines.
112#define HAIER_AC_MIN_TEMP kHaierAcMinTemp
113#define HAIER_AC_DEF_TEMP kHaierAcDefTemp
114#define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
115#define HAIER_AC_CMD_OFF kHaierAcCmdOff
116#define HAIER_AC_CMD_ON kHaierAcCmdOn
117#define HAIER_AC_CMD_MODE kHaierAcCmdMode
118#define HAIER_AC_CMD_FAN kHaierAcCmdFan
119#define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
120#define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
121#define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
122#define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
123#define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
124#define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
125#define HAIER_AC_CMD_SWINGV kHaierAcCmdSwing
126#define HAIER_AC_SWINGV_OFF kHaierAcSwingVOff
127#define HAIER_AC_SWINGV_UP kHaierAcSwingVUp
128#define HAIER_AC_SWINGV_DOWN kHaierAcSwingVDown
129#define HAIER_AC_SWINGV_CHG kHaierAcSwingVChg
130#define HAIER_AC_AUTO kHaierAcAuto
131#define HAIER_AC_COOL kHaierAcCool
132#define HAIER_AC_DRY kHaierAcDry
133#define HAIER_AC_HEAT kHaierAcHeat
134#define HAIER_AC_FAN kHaierAcFan
135#define HAIER_AC_FAN_AUTO kHaierAcFanAuto
136#define HAIER_AC_FAN_LOW kHaierAcFanLow
137#define HAIER_AC_FAN_MED kHaierAcFanMed
138#define HAIER_AC_FAN_HIGH kHaierAcFanHigh
139
140const uint8_t kHaierAcYrw02MinTempC = 16;
141const uint8_t kHaierAcYrw02MaxTempC = 30;
142const uint8_t kHaierAcYrw02MinTempF = 60;
143const uint8_t kHaierAcYrw02MaxTempF = 86;
144const uint8_t kHaierAcYrw02DefTempC = 25;
145
146const uint8_t kHaierAcYrw02ModelA = 0xA6;
147const uint8_t kHaierAcYrw02ModelB = 0x59;
148const uint8_t kHaierAc176Prefix = 0xB7;
149const uint8_t kHaierAc160Prefix = 0xB5;
150
151const uint8_t kHaierAcYrw02SwingVOff = 0x0;
152const uint8_t kHaierAcYrw02SwingVTop = 0x1;
153const uint8_t kHaierAcYrw02SwingVMiddle = 0x2; // Not available in heat mode.
154const uint8_t kHaierAcYrw02SwingVBottom = 0x3; // Only available in heat mode.
155const uint8_t kHaierAcYrw02SwingVDown = 0xA;
156const uint8_t kHaierAcYrw02SwingVAuto = 0xC; // Airflow
157
158const uint8_t kHaierAc160SwingVOff = 0b0000;
159const uint8_t kHaierAc160SwingVTop = 0b0001;
160const uint8_t kHaierAc160SwingVHighest = 0b0010;
161const uint8_t kHaierAc160SwingVHigh = 0b0100;
162const uint8_t kHaierAc160SwingVMiddle = 0b0110;
163const uint8_t kHaierAc160SwingVLow = 0b1000;
164const uint8_t kHaierAc160SwingVLowest = 0b0011;
165const uint8_t kHaierAc160SwingVAuto = 0b1100; // Airflow
166
167const uint8_t kHaierAcYrw02SwingHMiddle = 0x0;
168const uint8_t kHaierAcYrw02SwingHLeftMax = 0x3;
169const uint8_t kHaierAcYrw02SwingHLeft = 0x4;
170const uint8_t kHaierAcYrw02SwingHRight = 0x5;
171const uint8_t kHaierAcYrw02SwingHRightMax = 0x6;
172const uint8_t kHaierAcYrw02SwingHAuto = 0x7;
173
174const uint8_t kHaierAcYrw02FanHigh = 0b001;
175const uint8_t kHaierAcYrw02FanMed = 0b010;
176const uint8_t kHaierAcYrw02FanLow = 0b011;
177const uint8_t kHaierAcYrw02FanAuto = 0b101; // HAIER_AC176 uses `0` in Fan2
178
179const uint8_t kHaierAcYrw02Auto = 0b000; // 0
180const uint8_t kHaierAcYrw02Cool = 0b001; // 1
181const uint8_t kHaierAcYrw02Dry = 0b010; // 2
182const uint8_t kHaierAcYrw02Heat = 0b100; // 4
183const uint8_t kHaierAcYrw02Fan = 0b110; // 5
184
185const uint8_t kHaierAcYrw02ButtonTempUp = 0b00000;
186const uint8_t kHaierAcYrw02ButtonTempDown = 0b00001;
187const uint8_t kHaierAcYrw02ButtonSwingV = 0b00010;
188const uint8_t kHaierAcYrw02ButtonSwingH = 0b00011;
189const uint8_t kHaierAcYrw02ButtonFan = 0b00100;
190const uint8_t kHaierAcYrw02ButtonPower = 0b00101;
191const uint8_t kHaierAcYrw02ButtonMode = 0b00110;
192const uint8_t kHaierAcYrw02ButtonHealth = 0b00111;
193const uint8_t kHaierAcYrw02ButtonTurbo = 0b01000;
194const uint8_t kHaierAcYrw02ButtonSleep = 0b01011;
195const uint8_t kHaierAcYrw02ButtonTimer = 0b10000;
196const uint8_t kHaierAcYrw02ButtonLock = 0b10100;
197const uint8_t kHaierAc160ButtonLight = 0b10101;
198const uint8_t kHaierAc160ButtonAuxHeating = 0b10110;
199const uint8_t kHaierAc160ButtonClean = 0b11001;
200const uint8_t kHaierAcYrw02ButtonCFAB = 0b11010;
201
202const uint8_t kHaierAcYrw02NoTimers = 0b000;
203const uint8_t kHaierAcYrw02OffTimer = 0b001;
204const uint8_t kHaierAcYrw02OnTimer = 0b010;
205const uint8_t kHaierAcYrw02OnThenOffTimer = 0b100;
206const uint8_t kHaierAcYrw02OffThenOnTimer = 0b101;
207
211 struct {
212 // Byte 0
213 uint8_t Model :8;
214 // Byte 1
215 uint8_t SwingV :4;
216 uint8_t Temp :4; // 16C~30C
217 // Byte 2
218 uint8_t :5;
219 uint8_t SwingH :3;
220 // Byte 3
221 uint8_t :1;
222 uint8_t Health :1;
223 uint8_t :3;
224 uint8_t TimerMode :3;
225 // Byte 4
226 uint8_t :6;
227 uint8_t Power :1;
228 uint8_t :1;
229 // Byte 5
230 uint8_t OffTimerHrs :5;
231 uint8_t Fan :3;
232 // Byte 6
233 uint8_t OffTimerMins:6;
234 uint8_t Turbo :1;
235 uint8_t Quiet :1;
236 // Byte 7
237 uint8_t OnTimerHrs :5;
238 uint8_t Mode :3;
239 // Byte 8
240 uint8_t OnTimerMins :6;
241 uint8_t :1;
242 uint8_t Sleep :1;
243 // Byte 9
244 uint8_t :8;
245 // Byte 10
246 uint8_t ExtraDegreeF :1;
247 uint8_t :4;
248 uint8_t UseFahrenheit:1;
249 uint8_t :2;
250 // Byte 11
251 uint8_t :8;
252 // Byte 12
253 uint8_t Button :5;
254 uint8_t Lock :1;
255 uint8_t :2;
256 // Byte 13
257 uint8_t Sum :8;
258 // Byte 14
259 uint8_t Prefix2 :8;
260 // Byte 15
261 uint8_t :8;
262 // Byte 16
263 uint8_t :6;
264 uint8_t Fan2 :2;
265 // Byte 17
266 uint8_t :8;
267 // Byte 18
268 uint8_t :8;
269 // Byte 19
270 uint8_t :8;
271 // Byte 20
272 uint8_t :8;
273 // Byte 21
274 uint8_t Sum2 :8;
275 };
276};
277
281 struct {
282 // Byte 0
283 uint8_t Model :8;
284 // Byte 1
285 uint8_t SwingV :4;
286 uint8_t Temp :4; // 16C~30C
287 // Byte 2
288 uint8_t :5;
289 uint8_t SwingH :3;
290 // Byte 3
291 uint8_t :1;
292 uint8_t Health :1;
293 uint8_t :3;
294 uint8_t TimerMode :3;
295 // Byte 4
296 uint8_t :6;
297 uint8_t Power :1;
298 uint8_t AuxHeating :1;
299 // Byte 5
300 uint8_t OffTimerHrs :5;
301 uint8_t Fan :3;
302 // Byte 6
303 uint8_t OffTimerMins:6;
304 uint8_t Turbo :1;
305 uint8_t Quiet :1;
306 // Byte 7
307 uint8_t OnTimerHrs :5;
308 uint8_t Mode :3;
309 // Byte 8
310 uint8_t OnTimerMins :6;
311 uint8_t :1;
312 uint8_t Sleep :1;
313 // Byte 9
314 uint8_t :8;
315 // Byte 10
316 uint8_t ExtraDegreeF :1;
317 uint8_t :3;
318 uint8_t Clean :1;
319 uint8_t UseFahrenheit:1;
320 uint8_t :2;
321 // Byte 11
322 uint8_t :8;
323 // Byte 12
324 uint8_t Button :5;
325 uint8_t Lock :1;
326 uint8_t :2;
327 // Byte 13
328 uint8_t Sum :8;
329 // Byte 14
330 uint8_t Prefix :8;
331 // Byte 15
332 uint8_t :6;
333 uint8_t Clean2 :1;
334 uint8_t :1;
335 // Byte 16
336 uint8_t :5;
337 uint8_t Fan2 :3;
338 // Byte 17
339 uint8_t :8;
340 // Byte 18
341 uint8_t :8;
342 // Byte 19
343 uint8_t Sum2 :8;
344 };
345};
346
347// Legacy Haier YRW02 remote defines.
348#define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
349#define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
350#define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
351#define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
352#define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
353#define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
354#define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
355#define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
356#define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
357#define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
358#define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
359#define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
360#define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
361#define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
362#define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
363#define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
364#define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
365#define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
366#define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
367#define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
368#define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
369#define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
370#define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
371#define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
372#define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
373
374// Classes
377 public:
378 explicit IRHaierAC(const uint16_t pin, const bool inverted = false,
379 const bool use_modulation = true);
380#if SEND_HAIER_AC
381 void send(const uint16_t repeat = kHaierAcDefaultRepeat);
386 int8_t calibrate(void) { return _irsend.calibrate(); }
387#endif // SEND_HAIER_AC
388 void begin(void);
389 void stateReset(void);
390
391 void setCommand(const uint8_t command);
392 uint8_t getCommand(void) const;
393
394 void setTemp(const uint8_t temp);
395 uint8_t getTemp(void) const;
396
397 void setFan(const uint8_t speed);
398 uint8_t getFan(void) const;
399
400 uint8_t getMode(void) const;
401 void setMode(const uint8_t mode);
402
403 bool getSleep(void) const;
404 void setSleep(const bool on);
405 bool getHealth(void) const;
406 void setHealth(const bool on);
407
408 int16_t getOnTimer(void) const;
409 void setOnTimer(const uint16_t mins);
410 int16_t getOffTimer(void) const;
411 void setOffTimer(const uint16_t mins);
412 void cancelTimers(void);
413
414 uint16_t getCurrTime(void) const;
415 void setCurrTime(const uint16_t mins);
416
417 uint8_t getSwingV(void) const;
418 void setSwingV(const uint8_t state);
419
420 uint8_t* getRaw(void);
421 void setRaw(const uint8_t new_code[]);
422 static bool validChecksum(uint8_t state[],
423 const uint16_t length = kHaierACStateLength);
424 static uint8_t convertMode(const stdAc::opmode_t mode);
425 static uint8_t convertFan(const stdAc::fanspeed_t speed);
426 static uint8_t convertSwingV(const stdAc::swingv_t position);
427 static stdAc::opmode_t toCommonMode(const uint8_t mode);
428 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
429 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
430 stdAc::state_t toCommon(void) const;
431 String toString(void) const;
432#ifndef UNIT_TEST
433
434 private:
436#else // UNIT_TEST
438 IRsendTest _irsend;
440#endif
442 void checksum(void);
443};
444
447 friend class IRHaierACYRW02;
448 public:
449 explicit IRHaierAC176(const uint16_t pin, const bool inverted = false,
450 const bool use_modulation = true);
451#if SEND_HAIER_AC176
452 virtual void send(const uint16_t repeat = kHaierAc176DefaultRepeat);
457 int8_t calibrate(void) { return _irsend.calibrate(); }
458#endif // SEND_HAIER_AC176
459 void begin(void);
460 void stateReset(void);
461
462 void setModel(const haier_ac176_remote_model_t model);
464
465 void setButton(const uint8_t button);
466 uint8_t getButton(void) const;
467
468 void setUseFahrenheit(const bool on);
469 bool getUseFahrenheit(void) const;
470 void setTemp(const uint8_t temp, const bool fahrenheit = false);
471 uint8_t getTemp(void) const;
472
473 void setFan(const uint8_t speed);
474 uint8_t getFan(void) const;
475
476 uint8_t getMode(void) const;
477 void setMode(const uint8_t mode);
478
479 bool getPower(void) const;
480 void setPower(const bool on);
481 void on(void);
482 void off(void);
483
484 bool getSleep(void) const;
485 void setSleep(const bool on);
486 bool getHealth(void) const;
487 void setHealth(const bool on);
488
489 bool getTurbo(void) const;
490 void setTurbo(const bool on);
491 bool getQuiet(void) const;
492 void setQuiet(const bool on);
493
494 uint8_t getSwingV(void) const;
495 void setSwingV(const uint8_t pos);
496 uint8_t getSwingH(void) const;
497 void setSwingH(const uint8_t pos);
498
501 uint8_t getSwing(void) const;
502 void setSwing(const uint8_t pos);
503
504 void setTimerMode(const uint8_t setting);
505 uint8_t getTimerMode(void) const;
506 void setOnTimer(const uint16_t mins);
507 uint16_t getOnTimer(void) const;
508 void setOffTimer(const uint16_t mins);
509 uint16_t getOffTimer(void) const;
510
511 bool getLock(void) const;
512 void setLock(const bool on);
513
514 uint8_t* getRaw(void);
515 virtual void setRaw(const uint8_t new_code[]);
516 static bool validChecksum(const uint8_t state[],
517 const uint16_t length = kHaierAC176StateLength);
518 static uint8_t convertMode(const stdAc::opmode_t mode);
519 static uint8_t convertFan(const stdAc::fanspeed_t speed);
520 static uint8_t convertSwingV(const stdAc::swingv_t position);
521 static uint8_t convertSwingH(const stdAc::swingh_t position);
522 static stdAc::opmode_t toCommonMode(const uint8_t mode);
523 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
524 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
525 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
526 static bool toCommonTurbo(const uint8_t speed);
527 static bool toCommonQuiet(const uint8_t speed);
528 stdAc::state_t toCommon(void) const;
529 String toString(void) const;
530#ifndef UNIT_TEST
531
532 private:
534#else // UNIT_TEST
536 IRsendTest _irsend;
538#endif // UNIT_TEST
540 void checksum(void);
541};
542
545 public:
546 explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false,
547 const bool use_modulation = true);
548#if SEND_HAIER_AC_YRW02
549 void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat) override;
554 int8_t calibrate(void) { return _irsend.calibrate(); }
555#endif // SEND_HAIER_AC_YRW02
556 void setRaw(const uint8_t new_code[]) override;
557 static bool validChecksum(
558 const uint8_t state[],
559 const uint16_t length = kHaierACYRW02StateLength);
560};
561
564 public:
565 explicit IRHaierAC160(const uint16_t pin, const bool inverted = false,
566 const bool use_modulation = true);
567#if SEND_HAIER_AC160
568 virtual void send(const uint16_t repeat = kHaierAc160DefaultRepeat);
573 int8_t calibrate(void) { return _irsend.calibrate(); }
574#endif // SEND_HAIER_AC160
575 void begin(void);
576 void stateReset(void);
577
578 void setButton(const uint8_t button);
579 uint8_t getButton(void) const;
580
581 void setUseFahrenheit(const bool on);
582 bool getUseFahrenheit(void) const;
583 void setTemp(const uint8_t temp, const bool fahrenheit = false);
584 uint8_t getTemp(void) const;
585
586 void setFan(const uint8_t speed);
587 uint8_t getFan(void) const;
588
589 uint8_t getMode(void) const;
590 void setMode(const uint8_t mode);
591
592 bool getPower(void) const;
593 void setPower(const bool on);
594 void on(void);
595 void off(void);
596
597 bool getSleep(void) const;
598 void setSleep(const bool on);
599 bool getClean(void) const;
600 void setClean(const bool on);
601 bool getLightToggle(void) const;
602 void setLightToggle(const bool on);
603
604 bool getTurbo(void) const;
605 void setTurbo(const bool on);
606 bool getQuiet(void) const;
607 void setQuiet(const bool on);
608 bool getAuxHeating(void) const;
609 void setAuxHeating(const bool on);
610
611 uint8_t getSwingV(void) const;
612 void setSwingV(const uint8_t pos);
613
614 void setTimerMode(const uint8_t setting);
615 uint8_t getTimerMode(void) const;
616 void setOnTimer(const uint16_t mins);
617 uint16_t getOnTimer(void) const;
618 void setOffTimer(const uint16_t mins);
619 uint16_t getOffTimer(void) const;
620
621 bool getLock(void) const;
622 void setLock(const bool on);
623
624 bool getHealth(void) const;
625 void setHealth(const bool on);
626
627 uint8_t* getRaw(void);
628 virtual void setRaw(const uint8_t new_code[]);
629 static bool validChecksum(const uint8_t state[],
630 const uint16_t length = kHaierAC160StateLength);
631 static uint8_t convertMode(const stdAc::opmode_t mode);
632 static uint8_t convertFan(const stdAc::fanspeed_t speed);
633 static uint8_t convertSwingV(const stdAc::swingv_t position);
634 static stdAc::opmode_t toCommonMode(const uint8_t mode);
635 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
636 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
637 static bool toCommonTurbo(const uint8_t speed);
638 static bool toCommonQuiet(const uint8_t speed);
639 stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
640 String toString(void) const;
641#ifndef UNIT_TEST
642
643 private:
645#else // UNIT_TEST
647 IRsendTest _irsend;
649#endif // UNIT_TEST
651 void checksum(void);
652};
653#endif // IR_HAIER_H_
const uint16_t kHaierAcYrw02DefaultRepeat
Definition IRremoteESP8266.h:1286
const uint16_t kHaierAc160DefaultRepeat
Definition IRremoteESP8266.h:1289
const uint16_t kHaierAcDefaultRepeat
Definition IRremoteESP8266.h:1283
const uint16_t kHaierACYRW02StateLength
Definition IRremoteESP8266.h:1284
const uint16_t kHaierAC176StateLength
Definition IRremoteESP8266.h:1290
const uint16_t kHaierAC160StateLength
Definition IRremoteESP8266.h:1287
const uint16_t kHaierAc176DefaultRepeat
Definition IRremoteESP8266.h:1292
const uint16_t kHaierACStateLength
Definition IRremoteESP8266.h:1281
std::string String
Definition IRremoteESP8266.h:1564
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition IRsend.h:163
Class for handling detailed Haier 160 bit A/C messages.
Definition ir_Haier.h:563
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition ir_Haier.cpp:1737
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:1795
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:1518
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition ir_Haier.cpp:1544
static bool validChecksum(const uint8_t state[], const uint16_t length=kHaierAC160StateLength)
void setSwingV(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:1824
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition ir_Haier.cpp:1754
virtual void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:1538
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:1591
void setOffTimer(const uint16_t mins)
Set the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1896
uint16_t getOffTimer(void) const
Get the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1920
void setUseFahrenheit(const bool on)
Set the default temperature units to use.
Definition ir_Haier.cpp:1596
bool getClean(void) const
Get the Clean setting of the A/C.
Definition ir_Haier.cpp:1700
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:1569
uint8_t getTemp(void) const
Get the current temperature setting. The unit of temperature is specified by UseFahrenheit value.
Definition ir_Haier.cpp:1644
bool getUseFahrenheit(void) const
Get the default temperature units in use.
Definition ir_Haier.cpp:1600
virtual void send(const uint16_t repeat=kHaierAc160DefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:1505
HaierAc160Protocol _
Definition ir_Haier.h:650
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:1511
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:1531
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:1816
void setPower(const bool on)
Change the power setting.
Definition ir_Haier.cpp:1708
void setTemp(const uint8_t temp, const bool fahrenheit=false)
Set the temperature.
Definition ir_Haier.cpp:1605
void off(void)
Change the power setting to Off.
Definition ir_Haier.cpp:1717
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:1725
bool getLock(void) const
Get the Lock setting of the A/C.
Definition ir_Haier.cpp:1926
void setLock(const bool on)
Set the Lock setting of the A/C.
Definition ir_Haier.cpp:1930
void on(void)
Change the power setting to On.
Definition ir_Haier.cpp:1714
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition ir_Haier.cpp:1749
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Haier.cpp:2021
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:1721
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:2005
static bool toCommonTurbo(const uint8_t speed)
uint8_t getTimerMode(void) const
Get the Timer operating mode.
Definition ir_Haier.cpp:1862
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:1500
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:1820
bool getTurbo(void) const
Get the Turbo setting of the A/C.
Definition ir_Haier.cpp:1732
void setOnTimer(const uint16_t mins)
Set the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:1866
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:1993
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:1938
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:1791
uint16_t getOnTimer(void) const
Get the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:1890
void setTimerMode(const uint8_t setting)
Set the Timer operating mode.
Definition ir_Haier.cpp:1843
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:573
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:2056
void setLightToggle(const bool on)
Set the Light Toggle setting of the A/C.
Definition ir_Haier.cpp:1785
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:1809
bool getAuxHeating(void) const
Get the value of the Aux Heating setting.
Definition ir_Haier.cpp:1766
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:1980
void setAuxHeating(const bool on)
Change the Aux Heating setting.
Definition ir_Haier.cpp:1770
uint8_t getButton(void) const
Get the Button/Command setting of the A/C.
Definition ir_Haier.cpp:1565
static bool toCommonQuiet(const uint8_t speed)
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Haier.cpp:1951
bool getLightToggle(void) const
Get the value of the current Light toggle setting.
Definition ir_Haier.cpp:1778
void setClean(const bool on)
Set the Clean setting of the A/C.
Definition ir_Haier.cpp:1692
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Haier.cpp:1704
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:644
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1965
Class for handling detailed Haier 176 bit A/C messages.
Definition ir_Haier.h:446
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:457
void setModel(const haier_ac176_remote_model_t model)
Set the model of the A/C to emulate.
Definition ir_Haier.cpp:652
void setPower(const bool on)
Change the power setting.
Definition ir_Haier.cpp:808
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:533
uint8_t getSwing(void) const
These functions are for backward compatibility. Use getSwingV() and setSwingV() instead.
Definition ir_Haier.cpp:885
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:1173
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:561
void setSwing(const uint8_t pos)
For backward compatibility. Use setSwingV() instead. Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:892
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Haier.cpp:1050
void setSwingH(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition ir_Haier.cpp:926
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:1037
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:597
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:610
uint8_t getTemp(void) const
Get the current temperature setting. The unit of temperature is specified by UseFahrenheit value.
Definition ir_Haier.cpp:745
void setOnTimer(const uint16_t mins)
Set the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:965
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:870
bool getLock(void) const
Get the Lock setting of the A/C.
Definition ir_Haier.cpp:1025
void setUseFahrenheit(const bool on)
Set the default temperature units to use.
Definition ir_Haier.cpp:697
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1119
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition ir_Haier.cpp:623
void setSwingV(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:900
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Haier.cpp:1147
uint8_t getButton(void) const
Get the Button/Command setting of the A/C.
Definition ir_Haier.cpp:665
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:793
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition ir_Haier.cpp:837
uint8_t getTimerMode(void) const
Get the Timer operating mode.
Definition ir_Haier.cpp:961
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition ir_Haier.cpp:854
static bool toCommonQuiet(const uint8_t speed)
virtual void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:617
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1064
static bool toCommonTurbo(const uint8_t speed)
HaierAc176Protocol _
Definition ir_Haier.h:539
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Haier.cpp:1079
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:671
haier_ac176_remote_model_t getModel(void) const
Get/Detect the model of the A/C.
Definition ir_Haier.cpp:643
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:866
virtual void send(const uint16_t repeat=kHaierAc176DefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:566
void setTimerMode(const uint8_t setting)
Set the Timer operating mode.
Definition ir_Haier.cpp:942
uint8_t getSwingH(void) const
Get the Horizontal Swing position setting of the A/C.
Definition ir_Haier.cpp:922
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:692
bool getTurbo(void) const
Get the Turbo setting of the A/C.
Definition ir_Haier.cpp:832
void off(void)
Change the power setting to Off.
Definition ir_Haier.cpp:817
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:572
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition ir_Haier.cpp:849
uint16_t getOnTimer(void) const
Get the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:989
void setLock(const bool on)
Set the Lock setting of the A/C.
Definition ir_Haier.cpp:1029
friend class IRHaierACYRW02
Definition ir_Haier.h:447
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Haier.cpp:804
void setTemp(const uint8_t temp, const bool fahrenheit=false)
Set the temperature.
Definition ir_Haier.cpp:706
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:800
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:825
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:1107
static bool validChecksum(const uint8_t state[], const uint16_t length=kHaierAC176StateLength)
Verify the checksum is valid for a given state.
Definition ir_Haier.cpp:582
bool getUseFahrenheit(void) const
Get the default temperature units in use.
Definition ir_Haier.cpp:701
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Haier.cpp:1133
void setOffTimer(const uint16_t mins)
Set the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:995
void on(void)
Change the power setting to On.
Definition ir_Haier.cpp:814
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:821
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:896
uint16_t getOffTimer(void) const
Get the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1019
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:1094
Class for handling detailed Haier ACYRW02 A/C messages.
Definition ir_Haier.h:544
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:554
void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat) override
Send the current internal state as an IR message.
Definition ir_Haier.cpp:1323
void setRaw(const uint8_t new_code[]) override
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:1330
static bool validChecksum(const uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
Verify the checksum is valid for a given state.
Definition ir_Haier.cpp:1338
Class for handling detailed Haier A/C messages.
Definition ir_Haier.h:376
uint8_t getCommand(void) const
Get the Command/Button setting of the A/C.
Definition ir_Haier.cpp:187
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:162
int16_t getOnTimer(void) const
Get the On Timer value/setting of the A/C.
Definition ir_Haier.cpp:286
void cancelTimers(void)
Cancel/disable the On & Off timers.
Definition ir_Haier.cpp:327
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:209
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:230
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:390
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:220
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:193
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:386
int16_t getOffTimer(void) const
Get the Off Timer value/setting of the A/C.
Definition ir_Haier.cpp:296
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:260
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:405
HaierProtocol _
Definition ir_Haier.h:441
void setCurrTime(const uint16_t mins)
Set the clock value for the A/C.
Definition ir_Haier.cpp:335
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Haier.cpp:376
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:143
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:341
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Haier.cpp:441
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Haier.cpp:236
void send(const uint16_t repeat=kHaierAcDefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:123
void setOffTimer(const uint16_t mins)
Set & enable the Off Timer.
Definition ir_Haier.cpp:319
void setOnTimer(const uint16_t mins)
Set & enable the On Timer.
Definition ir_Haier.cpp:310
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Haier.cpp:254
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:430
void setSwingV(const uint8_t state)
Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:347
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:129
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:118
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:155
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:273
uint16_t getCurrTime(void) const
Get the clock value of the A/C.
Definition ir_Haier.cpp:306
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:418
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
Verify the checksum is valid for a given state.
Definition ir_Haier.cpp:137
void setCommand(const uint8_t command)
Set the Command/Button setting of the A/C.
Definition ir_Haier.cpp:168
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:435
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:468
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:363
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:280
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:267
Class for sending all basic IR protocols.
Definition IRsend.h:249
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:209
const uint8_t kHaierAc160ButtonLight
Definition ir_Haier.h:197
const uint8_t kHaierAcYrw02ButtonLock
Definition ir_Haier.h:196
const uint8_t kHaierAc160ButtonAuxHeating
Definition ir_Haier.h:198
const uint8_t kHaierAcHeat
Definition ir_Haier.h:99
const uint8_t kHaierAcYrw02ButtonFan
Definition ir_Haier.h:189
const uint8_t kHaierAc176Prefix
Definition ir_Haier.h:148
const uint8_t kHaierAc160SwingVLow
Definition ir_Haier.h:163
const uint8_t kHaierAcYrw02SwingVAuto
Definition ir_Haier.h:156
const uint8_t kHaierAc160SwingVHigh
Definition ir_Haier.h:161
const uint8_t kHaierAc160SwingVTop
Definition ir_Haier.h:159
const uint8_t kHaierAcYrw02Cool
Definition ir_Haier.h:180
const uint8_t kHaierAcYrw02OffThenOnTimer
Definition ir_Haier.h:206
const uint8_t kHaierAcYrw02Fan
Definition ir_Haier.h:183
const uint8_t kHaierAcYrw02NoTimers
Definition ir_Haier.h:202
const uint8_t kHaierAc160SwingVAuto
Definition ir_Haier.h:165
const uint8_t kHaierAcYrw02ButtonTempUp
Definition ir_Haier.h:185
const uint8_t kHaierAcDry
Definition ir_Haier.h:98
const uint8_t kHaierAc160SwingVLowest
Definition ir_Haier.h:164
const uint8_t kHaierAcCmdFan
Definition ir_Haier.h:82
const uint8_t kHaierAcCmdMode
Definition ir_Haier.h:81
const uint8_t kHaierAcYrw02MaxTempC
Definition ir_Haier.h:141
const uint8_t kHaierAcYrw02MaxTempF
Definition ir_Haier.h:143
const uint8_t kHaierAcYrw02ButtonSwingV
Definition ir_Haier.h:187
const uint8_t kHaierAcYrw02ButtonSleep
Definition ir_Haier.h:194
const uint8_t kHaierAcFanMed
Definition ir_Haier.h:104
const uint8_t kHaierAcYrw02SwingHRight
Definition ir_Haier.h:170
const uint8_t kHaierAcYrw02SwingHMiddle
Definition ir_Haier.h:167
const uint8_t kHaierAcYrw02FanMed
Definition ir_Haier.h:175
const uint8_t kHaierAcYrw02Dry
Definition ir_Haier.h:181
const uint8_t kHaierAcSwingVChg
Definition ir_Haier.h:94
const uint8_t kHaierAcSwingVUp
Definition ir_Haier.h:92
const uint8_t kHaierAc160SwingVMiddle
Definition ir_Haier.h:162
const uint8_t kHaierAcYrw02ButtonTimer
Definition ir_Haier.h:195
const uint8_t kHaierAcYrw02ButtonMode
Definition ir_Haier.h:191
const uint8_t kHaierAcYrw02ButtonSwingH
Definition ir_Haier.h:188
const uint8_t kHaierAcCmdOn
Definition ir_Haier.h:80
const uint8_t kHaierAcCmdHealth
Definition ir_Haier.h:88
const uint8_t kHaierAcCool
Definition ir_Haier.h:97
const uint8_t kHaierAcPrefix
Definition ir_Haier.h:74
const uint8_t kHaierAcDefTemp
Definition ir_Haier.h:77
const uint8_t kHaierAc160SwingVHighest
Definition ir_Haier.h:160
const uint8_t kHaierAcFanAuto
Definition ir_Haier.h:102
const uint8_t kHaierAcYrw02SwingVMiddle
Definition ir_Haier.h:153
const uint8_t kHaierAcMaxTemp
Definition ir_Haier.h:78
const uint8_t kHaierAcCmdOff
Definition ir_Haier.h:79
const uint8_t kHaierAcYrw02FanLow
Definition ir_Haier.h:176
const uint8_t kHaierAcCmdTimerSet
Definition ir_Haier.h:86
const uint8_t kHaierAcSwingVDown
Definition ir_Haier.h:93
const uint8_t kHaierAcYrw02OnTimer
Definition ir_Haier.h:204
const uint8_t kHaierAcYrw02MinTempF
Definition ir_Haier.h:142
const uint8_t kHaierAcYrw02Auto
Definition ir_Haier.h:179
const uint8_t kHaierAcYrw02Heat
Definition ir_Haier.h:182
const uint8_t kHaierAcYrw02MinTempC
Definition ir_Haier.h:140
const uint8_t kHaierAcYrw02OnThenOffTimer
Definition ir_Haier.h:205
const uint8_t kHaierAcFanHigh
Definition ir_Haier.h:105
const uint8_t kHaierAcYrw02SwingVDown
Definition ir_Haier.h:155
const uint8_t kHaierAcYrw02SwingHLeftMax
Definition ir_Haier.h:168
const uint8_t kHaierAcCmdTempUp
Definition ir_Haier.h:83
const uint8_t kHaierAcYrw02DefTempC
Definition ir_Haier.h:144
const uint8_t kHaierAcMinTemp
Definition ir_Haier.h:76
const uint8_t kHaierAcYrw02SwingHAuto
Definition ir_Haier.h:172
const uint8_t kHaierAcYrw02ButtonHealth
Definition ir_Haier.h:192
const uint8_t kHaierAcYrw02FanHigh
Definition ir_Haier.h:174
const uint8_t kHaierAcCmdTimerCancel
Definition ir_Haier.h:87
const uint8_t kHaierAc160SwingVOff
Definition ir_Haier.h:158
const uint8_t kHaierAcCmdSleep
Definition ir_Haier.h:85
const uint8_t kHaierAcYrw02ButtonCFAB
Definition ir_Haier.h:200
const uint8_t kHaierAcYrw02SwingHLeft
Definition ir_Haier.h:169
const uint8_t kHaierAcAuto
Definition ir_Haier.h:96
const uint8_t kHaierAcSleepBit
Definition ir_Haier.h:109
const uint8_t kHaierAcYrw02SwingVBottom
Definition ir_Haier.h:154
const uint8_t kHaierAcYrw02SwingHRightMax
Definition ir_Haier.h:171
const uint8_t kHaierAcYrw02FanAuto
Definition ir_Haier.h:177
const uint8_t kHaierAcYrw02ButtonTurbo
Definition ir_Haier.h:193
const uint16_t kHaierAcMaxTime
Definition ir_Haier.h:107
const uint8_t kHaierAcFanLow
Definition ir_Haier.h:103
const uint8_t kHaierAcYrw02ModelA
Definition ir_Haier.h:146
const uint8_t kHaierAcYrw02ModelB
Definition ir_Haier.h:147
const uint8_t kHaierAcYrw02OffTimer
Definition ir_Haier.h:203
const uint8_t kHaierAcCmdTempDown
Definition ir_Haier.h:84
const uint8_t kHaierAc160Prefix
Definition ir_Haier.h:149
const uint8_t kHaierAcYrw02SwingVTop
Definition ir_Haier.h:152
const uint8_t kHaierAcYrw02ButtonPower
Definition ir_Haier.h:190
const uint8_t kHaierAcFan
Definition ir_Haier.h:100
const uint8_t kHaierAcYrw02ButtonTempDown
Definition ir_Haier.h:186
const uint8_t kHaierAcYrw02SwingVOff
Definition ir_Haier.h:151
const uint8_t kHaierAcCmdSwing
Definition ir_Haier.h:89
const uint8_t kHaierAc160ButtonClean
Definition ir_Haier.h:199
const uint8_t kHaierAcSwingVOff
Definition ir_Haier.h:91
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:61
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
Native representation of a Haier 160 bit A/C message.
Definition ir_Haier.h:279
uint8_t raw[kHaierAC160StateLength]
The state in native form.
Definition ir_Haier.h:280
uint8_t Fan2
Definition ir_Haier.h:337
uint8_t Sum
Definition ir_Haier.h:328
uint8_t SwingH
Definition ir_Haier.h:289
uint8_t Mode
Definition ir_Haier.h:308
uint8_t SwingV
Definition ir_Haier.h:285
uint8_t Turbo
Definition ir_Haier.h:304
uint8_t Sleep
Definition ir_Haier.h:312
uint8_t OffTimerMins
Definition ir_Haier.h:303
uint8_t Sum2
Definition ir_Haier.h:343
uint8_t TimerMode
Definition ir_Haier.h:294
uint8_t OffTimerHrs
Definition ir_Haier.h:300
uint8_t Clean2
Definition ir_Haier.h:333
uint8_t Fan
Definition ir_Haier.h:301
uint8_t ExtraDegreeF
Definition ir_Haier.h:316
uint8_t Button
Definition ir_Haier.h:324
uint8_t Model
Definition ir_Haier.h:283
uint8_t Clean
Definition ir_Haier.h:318
uint8_t Health
Definition ir_Haier.h:292
uint8_t OnTimerHrs
Definition ir_Haier.h:307
uint8_t Lock
Definition ir_Haier.h:325
uint8_t AuxHeating
Definition ir_Haier.h:298
uint8_t Quiet
Definition ir_Haier.h:305
uint8_t Prefix
Definition ir_Haier.h:330
uint8_t Temp
Definition ir_Haier.h:286
uint8_t UseFahrenheit
Definition ir_Haier.h:319
uint8_t Power
Definition ir_Haier.h:297
uint8_t OnTimerMins
Definition ir_Haier.h:310
Native representation of a Haier 176 bit A/C message.
Definition ir_Haier.h:209
uint8_t Quiet
Definition ir_Haier.h:235
uint8_t Lock
Definition ir_Haier.h:254
uint8_t Turbo
Definition ir_Haier.h:234
uint8_t raw[kHaierAC176StateLength]
The state in native form.
Definition ir_Haier.h:210
uint8_t Button
Definition ir_Haier.h:253
uint8_t ExtraDegreeF
Definition ir_Haier.h:246
uint8_t Mode
Definition ir_Haier.h:238
uint8_t Sum2
Definition ir_Haier.h:274
uint8_t Prefix2
Definition ir_Haier.h:259
uint8_t Fan
Definition ir_Haier.h:231
uint8_t SwingH
Definition ir_Haier.h:219
uint8_t Health
Definition ir_Haier.h:222
uint8_t TimerMode
Definition ir_Haier.h:224
uint8_t Temp
Definition ir_Haier.h:216
uint8_t UseFahrenheit
Definition ir_Haier.h:248
uint8_t Sum
Definition ir_Haier.h:257
uint8_t OnTimerMins
Definition ir_Haier.h:240
uint8_t OffTimerHrs
Definition ir_Haier.h:230
uint8_t OffTimerMins
Definition ir_Haier.h:233
uint8_t SwingV
Definition ir_Haier.h:215
uint8_t Fan2
Definition ir_Haier.h:264
uint8_t Model
Definition ir_Haier.h:213
uint8_t Power
Definition ir_Haier.h:227
uint8_t Sleep
Definition ir_Haier.h:242
uint8_t OnTimerHrs
Definition ir_Haier.h:237
Native representation of a Haier HSU07-HEA03 A/C message.
Definition ir_Haier.h:36
uint8_t CurrHours
Definition ir_Haier.h:46
uint8_t Fan
Definition ir_Haier.h:59
uint8_t Health
Definition ir_Haier.h:55
uint8_t Sum
Definition ir_Haier.h:68
uint8_t OnMins
Definition ir_Haier.h:64
uint8_t Prefix
Definition ir_Haier.h:41
uint8_t OffMins
Definition ir_Haier.h:58
uint8_t OffTimer
Definition ir_Haier.h:51
uint8_t CurrMins
Definition ir_Haier.h:50
uint8_t Sleep
Definition ir_Haier.h:65
uint8_t Mode
Definition ir_Haier.h:62
uint8_t unknown
Definition ir_Haier.h:47
uint8_t OnTimer
Definition ir_Haier.h:52
uint8_t Command
Definition ir_Haier.h:43
uint8_t OffHours
Definition ir_Haier.h:54
uint8_t OnHours
Definition ir_Haier.h:61
uint8_t remote_state[kHaierACStateLength]
< The state in native IR code form
Definition ir_Haier.h:38
uint8_t SwingV
Definition ir_Haier.h:48
uint8_t Temp
Definition ir_Haier.h:44