IRremoteIDF
Infrared send & receive for ESP-IDF
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#include "IRplatform.h"
27#include "IRremoteESP8266.h"
28#include "IRsend.h"
29#ifdef UNIT_TEST
30#include "IRsend_test.h"
31#endif
32
37 struct {
38 // Byte 0
39 uint8_t Prefix;
40 // Byte 1
41 uint8_t Command:4;
42 uint8_t Temp :4;
43 // Byte 2
44 uint8_t CurrHours:5;
45 uint8_t unknown :1; // value=1
46 uint8_t SwingV :2;
47 // Byte 3
48 uint8_t CurrMins:6;
49 uint8_t OffTimer:1;
50 uint8_t OnTimer :1;
51 // Byte 4
52 uint8_t OffHours:5;
53 uint8_t Health :1;
54 uint8_t :0;
55 // Byte 5
56 uint8_t OffMins:6;
57 uint8_t Fan :2;
58 // Byte 6
59 uint8_t OnHours:5;
60 uint8_t Mode :3;
61 // Byte 7
62 uint8_t OnMins:6;
63 uint8_t Sleep :1;
64 uint8_t :0;
65 // Byte 8
66 uint8_t Sum;
67 };
68};
69
70// Constants
71
72const uint8_t kHaierAcPrefix = 0b10100101;
73
74const uint8_t kHaierAcMinTemp = 16;
75const uint8_t kHaierAcDefTemp = 25;
76const uint8_t kHaierAcMaxTemp = 30;
77const uint8_t kHaierAcCmdOff = 0b0000;
78const uint8_t kHaierAcCmdOn = 0b0001;
79const uint8_t kHaierAcCmdMode = 0b0010;
80const uint8_t kHaierAcCmdFan = 0b0011;
81const uint8_t kHaierAcCmdTempUp = 0b0110;
82const uint8_t kHaierAcCmdTempDown = 0b0111;
83const uint8_t kHaierAcCmdSleep = 0b1000;
84const uint8_t kHaierAcCmdTimerSet = 0b1001;
85const uint8_t kHaierAcCmdTimerCancel = 0b1010;
86const uint8_t kHaierAcCmdHealth = 0b1100;
87const uint8_t kHaierAcCmdSwing = 0b1101;
88
89const uint8_t kHaierAcSwingVOff = 0b00;
90const uint8_t kHaierAcSwingVUp = 0b01;
91const uint8_t kHaierAcSwingVDown = 0b10;
92const uint8_t kHaierAcSwingVChg = 0b11;
93
94const uint8_t kHaierAcAuto = 0;
95const uint8_t kHaierAcCool = 1;
96const uint8_t kHaierAcDry = 2;
97const uint8_t kHaierAcHeat = 3;
98const uint8_t kHaierAcFan = 4;
99
100const uint8_t kHaierAcFanAuto = 0;
101const uint8_t kHaierAcFanLow = 1;
102const uint8_t kHaierAcFanMed = 2;
103const uint8_t kHaierAcFanHigh = 3;
104
105const uint16_t kHaierAcMaxTime = (23 * 60) + 59;
106
107const uint8_t kHaierAcSleepBit = 0b01000000;
108
109// Legacy Haier AC defines.
110#define HAIER_AC_MIN_TEMP kHaierAcMinTemp
111#define HAIER_AC_DEF_TEMP kHaierAcDefTemp
112#define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
113#define HAIER_AC_CMD_OFF kHaierAcCmdOff
114#define HAIER_AC_CMD_ON kHaierAcCmdOn
115#define HAIER_AC_CMD_MODE kHaierAcCmdMode
116#define HAIER_AC_CMD_FAN kHaierAcCmdFan
117#define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
118#define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
119#define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
120#define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
121#define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
122#define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
123#define HAIER_AC_CMD_SWINGV kHaierAcCmdSwing
124#define HAIER_AC_SWINGV_OFF kHaierAcSwingVOff
125#define HAIER_AC_SWINGV_UP kHaierAcSwingVUp
126#define HAIER_AC_SWINGV_DOWN kHaierAcSwingVDown
127#define HAIER_AC_SWINGV_CHG kHaierAcSwingVChg
128#define HAIER_AC_AUTO kHaierAcAuto
129#define HAIER_AC_COOL kHaierAcCool
130#define HAIER_AC_DRY kHaierAcDry
131#define HAIER_AC_HEAT kHaierAcHeat
132#define HAIER_AC_FAN kHaierAcFan
133#define HAIER_AC_FAN_AUTO kHaierAcFanAuto
134#define HAIER_AC_FAN_LOW kHaierAcFanLow
135#define HAIER_AC_FAN_MED kHaierAcFanMed
136#define HAIER_AC_FAN_HIGH kHaierAcFanHigh
137
138const uint8_t kHaierAcYrw02MinTempC = 16;
139const uint8_t kHaierAcYrw02MaxTempC = 30;
140const uint8_t kHaierAcYrw02MinTempF = 60;
141const uint8_t kHaierAcYrw02MaxTempF = 86;
142const uint8_t kHaierAcYrw02DefTempC = 25;
143
144const uint8_t kHaierAcYrw02ModelA = 0xA6;
145const uint8_t kHaierAcYrw02ModelB = 0x59;
146const uint8_t kHaierAc176Prefix = 0xB7;
147const uint8_t kHaierAc160Prefix = 0xB5;
148
149const uint8_t kHaierAcYrw02SwingVOff = 0x0;
150const uint8_t kHaierAcYrw02SwingVTop = 0x1;
151const uint8_t kHaierAcYrw02SwingVMiddle = 0x2; // Not available in heat mode.
152const uint8_t kHaierAcYrw02SwingVBottom = 0x3; // Only available in heat mode.
153const uint8_t kHaierAcYrw02SwingVDown = 0xA;
154const uint8_t kHaierAcYrw02SwingVAuto = 0xC; // Airflow
155
156const uint8_t kHaierAc160SwingVOff = 0b0000;
157const uint8_t kHaierAc160SwingVTop = 0b0001;
158const uint8_t kHaierAc160SwingVHighest = 0b0010;
159const uint8_t kHaierAc160SwingVHigh = 0b0100;
160const uint8_t kHaierAc160SwingVMiddle = 0b0110;
161const uint8_t kHaierAc160SwingVLow = 0b1000;
162const uint8_t kHaierAc160SwingVLowest = 0b0011;
163const uint8_t kHaierAc160SwingVAuto = 0b1100; // Airflow
164
165const uint8_t kHaierAcYrw02SwingHMiddle = 0x0;
166const uint8_t kHaierAcYrw02SwingHLeftMax = 0x3;
167const uint8_t kHaierAcYrw02SwingHLeft = 0x4;
168const uint8_t kHaierAcYrw02SwingHRight = 0x5;
169const uint8_t kHaierAcYrw02SwingHRightMax = 0x6;
170const uint8_t kHaierAcYrw02SwingHAuto = 0x7;
171
172const uint8_t kHaierAcYrw02FanHigh = 0b001;
173const uint8_t kHaierAcYrw02FanMed = 0b010;
174const uint8_t kHaierAcYrw02FanLow = 0b011;
175const uint8_t kHaierAcYrw02FanAuto = 0b101; // HAIER_AC176 uses `0` in Fan2
176
177const uint8_t kHaierAcYrw02Auto = 0b000; // 0
178const uint8_t kHaierAcYrw02Cool = 0b001; // 1
179const uint8_t kHaierAcYrw02Dry = 0b010; // 2
180const uint8_t kHaierAcYrw02Heat = 0b100; // 4
181const uint8_t kHaierAcYrw02Fan = 0b110; // 5
182
183const uint8_t kHaierAcYrw02ButtonTempUp = 0b00000;
184const uint8_t kHaierAcYrw02ButtonTempDown = 0b00001;
185const uint8_t kHaierAcYrw02ButtonSwingV = 0b00010;
186const uint8_t kHaierAcYrw02ButtonSwingH = 0b00011;
187const uint8_t kHaierAcYrw02ButtonFan = 0b00100;
188const uint8_t kHaierAcYrw02ButtonPower = 0b00101;
189const uint8_t kHaierAcYrw02ButtonMode = 0b00110;
190const uint8_t kHaierAcYrw02ButtonHealth = 0b00111;
191const uint8_t kHaierAcYrw02ButtonTurbo = 0b01000;
192const uint8_t kHaierAcYrw02ButtonSleep = 0b01011;
193const uint8_t kHaierAcYrw02ButtonTimer = 0b10000;
194const uint8_t kHaierAcYrw02ButtonLock = 0b10100;
195const uint8_t kHaierAc160ButtonLight = 0b10101;
196const uint8_t kHaierAc160ButtonAuxHeating = 0b10110;
197const uint8_t kHaierAc160ButtonClean = 0b11001;
198const uint8_t kHaierAcYrw02ButtonCFAB = 0b11010;
199
200const uint8_t kHaierAcYrw02NoTimers = 0b000;
201const uint8_t kHaierAcYrw02OffTimer = 0b001;
202const uint8_t kHaierAcYrw02OnTimer = 0b010;
203const uint8_t kHaierAcYrw02OnThenOffTimer = 0b100;
204const uint8_t kHaierAcYrw02OffThenOnTimer = 0b101;
205
209 struct {
210 // Byte 0
211 uint8_t Model :8;
212 // Byte 1
213 uint8_t SwingV :4;
214 uint8_t Temp :4; // 16C~30C
215 // Byte 2
216 uint8_t :5;
217 uint8_t SwingH :3;
218 // Byte 3
219 uint8_t :1;
220 uint8_t Health :1;
221 uint8_t :3;
222 uint8_t TimerMode :3;
223 // Byte 4
224 uint8_t :6;
225 uint8_t Power :1;
226 uint8_t :1;
227 // Byte 5
228 uint8_t OffTimerHrs :5;
229 uint8_t Fan :3;
230 // Byte 6
231 uint8_t OffTimerMins:6;
232 uint8_t Turbo :1;
233 uint8_t Quiet :1;
234 // Byte 7
235 uint8_t OnTimerHrs :5;
236 uint8_t Mode :3;
237 // Byte 8
238 uint8_t OnTimerMins :6;
239 uint8_t :1;
240 uint8_t Sleep :1;
241 // Byte 9
242 uint8_t :8;
243 // Byte 10
244 uint8_t ExtraDegreeF :1;
245 uint8_t :4;
246 uint8_t UseFahrenheit:1;
247 uint8_t :2;
248 // Byte 11
249 uint8_t :8;
250 // Byte 12
251 uint8_t Button :5;
252 uint8_t Lock :1;
253 uint8_t :2;
254 // Byte 13
255 uint8_t Sum :8;
256 // Byte 14
257 uint8_t Prefix2 :8;
258 // Byte 15
259 uint8_t :8;
260 // Byte 16
261 uint8_t :6;
262 uint8_t Fan2 :2;
263 // Byte 17
264 uint8_t :8;
265 // Byte 18
266 uint8_t :8;
267 // Byte 19
268 uint8_t :8;
269 // Byte 20
270 uint8_t :8;
271 // Byte 21
272 uint8_t Sum2 :8;
273 };
274};
275
279 struct {
280 // Byte 0
281 uint8_t Model :8;
282 // Byte 1
283 uint8_t SwingV :4;
284 uint8_t Temp :4; // 16C~30C
285 // Byte 2
286 uint8_t :5;
287 uint8_t SwingH :3;
288 // Byte 3
289 uint8_t :1;
290 uint8_t Health :1;
291 uint8_t :3;
292 uint8_t TimerMode :3;
293 // Byte 4
294 uint8_t :6;
295 uint8_t Power :1;
296 uint8_t AuxHeating :1;
297 // Byte 5
298 uint8_t OffTimerHrs :5;
299 uint8_t Fan :3;
300 // Byte 6
301 uint8_t OffTimerMins:6;
302 uint8_t Turbo :1;
303 uint8_t Quiet :1;
304 // Byte 7
305 uint8_t OnTimerHrs :5;
306 uint8_t Mode :3;
307 // Byte 8
308 uint8_t OnTimerMins :6;
309 uint8_t :1;
310 uint8_t Sleep :1;
311 // Byte 9
312 uint8_t :8;
313 // Byte 10
314 uint8_t ExtraDegreeF :1;
315 uint8_t :3;
316 uint8_t Clean :1;
317 uint8_t UseFahrenheit:1;
318 uint8_t :2;
319 // Byte 11
320 uint8_t :8;
321 // Byte 12
322 uint8_t Button :5;
323 uint8_t Lock :1;
324 uint8_t :2;
325 // Byte 13
326 uint8_t Sum :8;
327 // Byte 14
328 uint8_t Prefix :8;
329 // Byte 15
330 uint8_t :6;
331 uint8_t Clean2 :1;
332 uint8_t :1;
333 // Byte 16
334 uint8_t :5;
335 uint8_t Fan2 :3;
336 // Byte 17
337 uint8_t :8;
338 // Byte 18
339 uint8_t :8;
340 // Byte 19
341 uint8_t Sum2 :8;
342 };
343};
344
345// Legacy Haier YRW02 remote defines.
346#define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
347#define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
348#define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
349#define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
350#define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
351#define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
352#define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
353#define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
354#define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
355#define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
356#define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
357#define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
358#define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
359#define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
360#define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
361#define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
362#define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
363#define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
364#define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
365#define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
366#define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
367#define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
368#define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
369#define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
370#define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
371
372// Classes
375 public:
376 explicit IRHaierAC(const uint16_t pin, const bool inverted = false,
377 const bool use_modulation = true);
378#if SEND_HAIER_AC
379 void send(const uint16_t repeat = kHaierAcDefaultRepeat);
384 int8_t calibrate(void) { return _irsend.calibrate(); }
385#endif // SEND_HAIER_AC
386 void begin(void);
387 void stateReset(void);
388
389 void setCommand(const uint8_t command);
390 uint8_t getCommand(void) const;
391
392 void setTemp(const uint8_t temp);
393 uint8_t getTemp(void) const;
394
395 void setFan(const uint8_t speed);
396 uint8_t getFan(void) const;
397
398 uint8_t getMode(void) const;
399 void setMode(const uint8_t mode);
400
401 bool getSleep(void) const;
402 void setSleep(const bool on);
403 bool getHealth(void) const;
404 void setHealth(const bool on);
405
406 int16_t getOnTimer(void) const;
407 void setOnTimer(const uint16_t mins);
408 int16_t getOffTimer(void) const;
409 void setOffTimer(const uint16_t mins);
410 void cancelTimers(void);
411
412 uint16_t getCurrTime(void) const;
413 void setCurrTime(const uint16_t mins);
414
415 uint8_t getSwingV(void) const;
416 void setSwingV(const uint8_t state);
417
418 uint8_t* getRaw(void);
419 void setRaw(const uint8_t new_code[]);
420 static bool validChecksum(uint8_t state[],
421 const uint16_t length = kHaierACStateLength);
422 static uint8_t convertMode(const stdAc::opmode_t mode);
423 static uint8_t convertFan(const stdAc::fanspeed_t speed);
424 static uint8_t convertSwingV(const stdAc::swingv_t position);
425 static stdAc::opmode_t toCommonMode(const uint8_t mode);
426 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
427 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
428 stdAc::state_t toCommon(void) const;
429 String toString(void) const;
430#ifndef UNIT_TEST
431
432 private:
434#else // UNIT_TEST
436 IRsendTest _irsend;
438#endif
440 void checksum(void);
441};
442
445 friend class IRHaierACYRW02;
446 public:
447 explicit IRHaierAC176(const uint16_t pin, const bool inverted = false,
448 const bool use_modulation = true);
449#if SEND_HAIER_AC176
450 virtual void send(const uint16_t repeat = kHaierAc176DefaultRepeat);
455 int8_t calibrate(void) { return _irsend.calibrate(); }
456#endif // SEND_HAIER_AC176
457 void begin(void);
458 void stateReset(void);
459
460 void setModel(const haier_ac176_remote_model_t model);
462
463 void setButton(const uint8_t button);
464 uint8_t getButton(void) const;
465
466 void setUseFahrenheit(const bool on);
467 bool getUseFahrenheit(void) const;
468 void setTemp(const uint8_t temp, const bool fahrenheit = false);
469 uint8_t getTemp(void) const;
470
471 void setFan(const uint8_t speed);
472 uint8_t getFan(void) const;
473
474 uint8_t getMode(void) const;
475 void setMode(const uint8_t mode);
476
477 bool getPower(void) const;
478 void setPower(const bool on);
479 void on(void);
480 void off(void);
481
482 bool getSleep(void) const;
483 void setSleep(const bool on);
484 bool getHealth(void) const;
485 void setHealth(const bool on);
486
487 bool getTurbo(void) const;
488 void setTurbo(const bool on);
489 bool getQuiet(void) const;
490 void setQuiet(const bool on);
491
492 uint8_t getSwingV(void) const;
493 void setSwingV(const uint8_t pos);
494 uint8_t getSwingH(void) const;
495 void setSwingH(const uint8_t pos);
496
499 uint8_t getSwing(void) const;
500 void setSwing(const uint8_t pos);
501
502 void setTimerMode(const uint8_t setting);
503 uint8_t getTimerMode(void) const;
504 void setOnTimer(const uint16_t mins);
505 uint16_t getOnTimer(void) const;
506 void setOffTimer(const uint16_t mins);
507 uint16_t getOffTimer(void) const;
508
509 bool getLock(void) const;
510 void setLock(const bool on);
511
512 uint8_t* getRaw(void);
513 virtual void setRaw(const uint8_t new_code[]);
514 static bool validChecksum(const uint8_t state[],
515 const uint16_t length = kHaierAC176StateLength);
516 static uint8_t convertMode(const stdAc::opmode_t mode);
517 static uint8_t convertFan(const stdAc::fanspeed_t speed);
518 static uint8_t convertSwingV(const stdAc::swingv_t position);
519 static uint8_t convertSwingH(const stdAc::swingh_t position);
520 static stdAc::opmode_t toCommonMode(const uint8_t mode);
521 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
522 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
523 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
524 static bool toCommonTurbo(const uint8_t speed);
525 static bool toCommonQuiet(const uint8_t speed);
526 stdAc::state_t toCommon(void) const;
527 String toString(void) const;
528#ifndef UNIT_TEST
529
530 private:
532#else // UNIT_TEST
534 IRsendTest _irsend;
536#endif // UNIT_TEST
538 void checksum(void);
539};
540
543 public:
544 explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false,
545 const bool use_modulation = true);
546#if SEND_HAIER_AC_YRW02
547 void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat) override;
552 int8_t calibrate(void) { return _irsend.calibrate(); }
553#endif // SEND_HAIER_AC_YRW02
554 void setRaw(const uint8_t new_code[]) override;
555 static bool validChecksum(
556 const uint8_t state[],
557 const uint16_t length = kHaierACYRW02StateLength);
558};
559
562 public:
563 explicit IRHaierAC160(const uint16_t pin, const bool inverted = false,
564 const bool use_modulation = true);
565#if SEND_HAIER_AC160
566 virtual void send(const uint16_t repeat = kHaierAc160DefaultRepeat);
571 int8_t calibrate(void) { return _irsend.calibrate(); }
572#endif // SEND_HAIER_AC160
573 void begin(void);
574 void stateReset(void);
575
576 void setButton(const uint8_t button);
577 uint8_t getButton(void) const;
578
579 void setUseFahrenheit(const bool on);
580 bool getUseFahrenheit(void) const;
581 void setTemp(const uint8_t temp, const bool fahrenheit = false);
582 uint8_t getTemp(void) const;
583
584 void setFan(const uint8_t speed);
585 uint8_t getFan(void) const;
586
587 uint8_t getMode(void) const;
588 void setMode(const uint8_t mode);
589
590 bool getPower(void) const;
591 void setPower(const bool on);
592 void on(void);
593 void off(void);
594
595 bool getSleep(void) const;
596 void setSleep(const bool on);
597 bool getClean(void) const;
598 void setClean(const bool on);
599 bool getLightToggle(void) const;
600 void setLightToggle(const bool on);
601
602 bool getTurbo(void) const;
603 void setTurbo(const bool on);
604 bool getQuiet(void) const;
605 void setQuiet(const bool on);
606 bool getAuxHeating(void) const;
607 void setAuxHeating(const bool on);
608
609 uint8_t getSwingV(void) const;
610 void setSwingV(const uint8_t pos);
611
612 void setTimerMode(const uint8_t setting);
613 uint8_t getTimerMode(void) const;
614 void setOnTimer(const uint16_t mins);
615 uint16_t getOnTimer(void) const;
616 void setOffTimer(const uint16_t mins);
617 uint16_t getOffTimer(void) const;
618
619 bool getLock(void) const;
620 void setLock(const bool on);
621
622 bool getHealth(void) const;
623 void setHealth(const bool on);
624
625 uint8_t* getRaw(void);
626 virtual void setRaw(const uint8_t new_code[]);
627 static bool validChecksum(const uint8_t state[],
628 const uint16_t length = kHaierAC160StateLength);
629 static uint8_t convertMode(const stdAc::opmode_t mode);
630 static uint8_t convertFan(const stdAc::fanspeed_t speed);
631 static uint8_t convertSwingV(const stdAc::swingv_t position);
632 static stdAc::opmode_t toCommonMode(const uint8_t mode);
633 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
634 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
635 static bool toCommonTurbo(const uint8_t speed);
636 static bool toCommonQuiet(const uint8_t speed);
637 stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
638 String toString(void) const;
639#ifndef UNIT_TEST
640
641 private:
643#else // UNIT_TEST
645 IRsendTest _irsend;
647#endif // UNIT_TEST
649 void checksum(void);
650};
651#endif // IR_HAIER_H_
std::string String
The protocol code builds human readable output with String. On ESP-IDF that is just std::string.
Definition IRplatform.h:21
const uint16_t kHaierAcYrw02DefaultRepeat
Definition IRremoteESP8266.h:1285
const uint16_t kHaierAc160DefaultRepeat
Definition IRremoteESP8266.h:1288
const uint16_t kHaierAcDefaultRepeat
Definition IRremoteESP8266.h:1282
const uint16_t kHaierACYRW02StateLength
Definition IRremoteESP8266.h:1283
const uint16_t kHaierAC176StateLength
Definition IRremoteESP8266.h:1289
const uint16_t kHaierAC160StateLength
Definition IRremoteESP8266.h:1286
const uint16_t kHaierAc176DefaultRepeat
Definition IRremoteESP8266.h:1291
const uint16_t kHaierACStateLength
Definition IRremoteESP8266.h:1280
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition IRsend.h:169
Class for handling detailed Haier 160 bit A/C messages.
Definition ir_Haier.h:561
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition ir_Haier.cpp:1735
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:1793
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:1516
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition ir_Haier.cpp:1542
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:1822
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition ir_Haier.cpp:1752
virtual void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:1536
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:1589
void setOffTimer(const uint16_t mins)
Set the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1894
uint16_t getOffTimer(void) const
Get the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1918
void setUseFahrenheit(const bool on)
Set the default temperature units to use.
Definition ir_Haier.cpp:1594
bool getClean(void) const
Get the Clean setting of the A/C.
Definition ir_Haier.cpp:1698
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:1567
uint8_t getTemp(void) const
Get the current temperature setting. The unit of temperature is specified by UseFahrenheit value.
Definition ir_Haier.cpp:1642
bool getUseFahrenheit(void) const
Get the default temperature units in use.
Definition ir_Haier.cpp:1598
virtual void send(const uint16_t repeat=kHaierAc160DefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:1503
HaierAc160Protocol _
Definition ir_Haier.h:648
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:1509
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:1529
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:1814
void setPower(const bool on)
Change the power setting.
Definition ir_Haier.cpp:1706
void setTemp(const uint8_t temp, const bool fahrenheit=false)
Set the temperature.
Definition ir_Haier.cpp:1603
void off(void)
Change the power setting to Off.
Definition ir_Haier.cpp:1715
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:1723
bool getLock(void) const
Get the Lock setting of the A/C.
Definition ir_Haier.cpp:1924
void setLock(const bool on)
Set the Lock setting of the A/C.
Definition ir_Haier.cpp:1928
void on(void)
Change the power setting to On.
Definition ir_Haier.cpp:1712
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition ir_Haier.cpp:1747
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:2019
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:1719
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:2003
static bool toCommonTurbo(const uint8_t speed)
uint8_t getTimerMode(void) const
Get the Timer operating mode.
Definition ir_Haier.cpp:1860
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:1498
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:1818
bool getTurbo(void) const
Get the Turbo setting of the A/C.
Definition ir_Haier.cpp:1730
void setOnTimer(const uint16_t mins)
Set the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:1864
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:1991
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:1936
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:1789
uint16_t getOnTimer(void) const
Get the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:1888
void setTimerMode(const uint8_t setting)
Set the Timer operating mode.
Definition ir_Haier.cpp:1841
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:571
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:2054
void setLightToggle(const bool on)
Set the Light Toggle setting of the A/C.
Definition ir_Haier.cpp:1783
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:1807
bool getAuxHeating(void) const
Get the value of the Aux Heating setting.
Definition ir_Haier.cpp:1764
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:1978
void setAuxHeating(const bool on)
Change the Aux Heating setting.
Definition ir_Haier.cpp:1768
uint8_t getButton(void) const
Get the Button/Command setting of the A/C.
Definition ir_Haier.cpp:1563
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:1949
bool getLightToggle(void) const
Get the value of the current Light toggle setting.
Definition ir_Haier.cpp:1776
void setClean(const bool on)
Set the Clean setting of the A/C.
Definition ir_Haier.cpp:1690
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Haier.cpp:1702
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:642
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1963
Class for handling detailed Haier 176 bit A/C messages.
Definition ir_Haier.h:444
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:455
void setModel(const haier_ac176_remote_model_t model)
Set the model of the A/C to emulate.
Definition ir_Haier.cpp:650
void setPower(const bool on)
Change the power setting.
Definition ir_Haier.cpp:806
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:531
uint8_t getSwing(void) const
These functions are for backward compatibility. Use getSwingV() and setSwingV() instead.
Definition ir_Haier.cpp:883
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:1171
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:559
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:890
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Haier.cpp:1048
void setSwingH(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition ir_Haier.cpp:924
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:1035
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:595
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:608
uint8_t getTemp(void) const
Get the current temperature setting. The unit of temperature is specified by UseFahrenheit value.
Definition ir_Haier.cpp:743
void setOnTimer(const uint16_t mins)
Set the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:963
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:868
bool getLock(void) const
Get the Lock setting of the A/C.
Definition ir_Haier.cpp:1023
void setUseFahrenheit(const bool on)
Set the default temperature units to use.
Definition ir_Haier.cpp:695
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1117
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition ir_Haier.cpp:621
void setSwingV(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:898
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Haier.cpp:1145
uint8_t getButton(void) const
Get the Button/Command setting of the A/C.
Definition ir_Haier.cpp:663
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:791
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition ir_Haier.cpp:835
uint8_t getTimerMode(void) const
Get the Timer operating mode.
Definition ir_Haier.cpp:959
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition ir_Haier.cpp:852
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:615
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:1062
static bool toCommonTurbo(const uint8_t speed)
HaierAc176Protocol _
Definition ir_Haier.h:537
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Haier.cpp:1077
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:669
haier_ac176_remote_model_t getModel(void) const
Get/Detect the model of the A/C.
Definition ir_Haier.cpp:641
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:864
virtual void send(const uint16_t repeat=kHaierAc176DefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:564
void setTimerMode(const uint8_t setting)
Set the Timer operating mode.
Definition ir_Haier.cpp:940
uint8_t getSwingH(void) const
Get the Horizontal Swing position setting of the A/C.
Definition ir_Haier.cpp:920
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:690
bool getTurbo(void) const
Get the Turbo setting of the A/C.
Definition ir_Haier.cpp:830
void off(void)
Change the power setting to Off.
Definition ir_Haier.cpp:815
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:570
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition ir_Haier.cpp:847
uint16_t getOnTimer(void) const
Get the number of minutes of the On Timer setting.
Definition ir_Haier.cpp:987
void setLock(const bool on)
Set the Lock setting of the A/C.
Definition ir_Haier.cpp:1027
friend class IRHaierACYRW02
Definition ir_Haier.h:445
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Haier.cpp:802
void setTemp(const uint8_t temp, const bool fahrenheit=false)
Set the temperature.
Definition ir_Haier.cpp:704
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:798
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:823
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:1105
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:580
bool getUseFahrenheit(void) const
Get the default temperature units in use.
Definition ir_Haier.cpp:699
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Haier.cpp:1131
void setOffTimer(const uint16_t mins)
Set the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:993
void on(void)
Change the power setting to On.
Definition ir_Haier.cpp:812
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:819
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:894
uint16_t getOffTimer(void) const
Get the number of minutes of the Off Timer setting.
Definition ir_Haier.cpp:1017
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:1092
Class for handling detailed Haier ACYRW02 A/C messages.
Definition ir_Haier.h:542
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:552
void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat) override
Send the current internal state as an IR message.
Definition ir_Haier.cpp:1321
void setRaw(const uint8_t new_code[]) override
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:1328
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:1336
Class for handling detailed Haier A/C messages.
Definition ir_Haier.h:374
uint8_t getCommand(void) const
Get the Command/Button setting of the A/C.
Definition ir_Haier.cpp:185
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition ir_Haier.cpp:160
int16_t getOnTimer(void) const
Get the On Timer value/setting of the A/C.
Definition ir_Haier.cpp:284
void cancelTimers(void)
Cancel/disable the On & Off timers.
Definition ir_Haier.cpp:325
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Haier.cpp:207
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Haier.cpp:228
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:388
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Haier.cpp:218
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Haier.cpp:191
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Haier.h:384
int16_t getOffTimer(void) const
Get the Off Timer value/setting of the A/C.
Definition ir_Haier.cpp:294
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:258
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Haier.cpp:403
HaierProtocol _
Definition ir_Haier.h:439
void setCurrTime(const uint16_t mins)
Set the clock value for the A/C.
Definition ir_Haier.cpp:333
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Haier.cpp:374
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Haier.cpp:141
uint8_t getSwingV(void) const
Get the Vertical Swing position setting of the A/C.
Definition ir_Haier.cpp:339
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Haier.cpp:439
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Haier.cpp:234
void send(const uint16_t repeat=kHaierAcDefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Haier.cpp:121
void setOffTimer(const uint16_t mins)
Set & enable the Off Timer.
Definition ir_Haier.cpp:317
void setOnTimer(const uint16_t mins)
Set & enable the On Timer.
Definition ir_Haier.cpp:308
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Haier.cpp:252
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Haier.cpp:428
void setSwingV(const uint8_t state)
Set the Vertical Swing mode of the A/C.
Definition ir_Haier.cpp:345
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Haier.cpp:127
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Haier.cpp:116
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Haier.cpp:153
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Haier.cpp:271
uint16_t getCurrTime(void) const
Get the clock value of the A/C.
Definition ir_Haier.cpp:304
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Haier.cpp:416
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
Verify the checksum is valid for a given state.
Definition ir_Haier.cpp:135
void setCommand(const uint8_t command)
Set the Command/Button setting of the A/C.
Definition ir_Haier.cpp:166
IRsend _irsend
Instance of the IR send class.
Definition ir_Haier.h:433
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Haier.cpp:466
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Haier.cpp:361
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Haier.cpp:278
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition ir_Haier.cpp:265
Class for sending all basic IR protocols.
Definition IRsend.h:256
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:286
const uint8_t kHaierAc160ButtonLight
Definition ir_Haier.h:195
const uint8_t kHaierAcYrw02ButtonLock
Definition ir_Haier.h:194
const uint8_t kHaierAc160ButtonAuxHeating
Definition ir_Haier.h:196
const uint8_t kHaierAcHeat
Definition ir_Haier.h:97
const uint8_t kHaierAcYrw02ButtonFan
Definition ir_Haier.h:187
const uint8_t kHaierAc176Prefix
Definition ir_Haier.h:146
const uint8_t kHaierAc160SwingVLow
Definition ir_Haier.h:161
const uint8_t kHaierAcYrw02SwingVAuto
Definition ir_Haier.h:154
const uint8_t kHaierAc160SwingVHigh
Definition ir_Haier.h:159
const uint8_t kHaierAc160SwingVTop
Definition ir_Haier.h:157
const uint8_t kHaierAcYrw02Cool
Definition ir_Haier.h:178
const uint8_t kHaierAcYrw02OffThenOnTimer
Definition ir_Haier.h:204
const uint8_t kHaierAcYrw02Fan
Definition ir_Haier.h:181
const uint8_t kHaierAcYrw02NoTimers
Definition ir_Haier.h:200
const uint8_t kHaierAc160SwingVAuto
Definition ir_Haier.h:163
const uint8_t kHaierAcYrw02ButtonTempUp
Definition ir_Haier.h:183
const uint8_t kHaierAcDry
Definition ir_Haier.h:96
const uint8_t kHaierAc160SwingVLowest
Definition ir_Haier.h:162
const uint8_t kHaierAcCmdFan
Definition ir_Haier.h:80
const uint8_t kHaierAcCmdMode
Definition ir_Haier.h:79
const uint8_t kHaierAcYrw02MaxTempC
Definition ir_Haier.h:139
const uint8_t kHaierAcYrw02MaxTempF
Definition ir_Haier.h:141
const uint8_t kHaierAcYrw02ButtonSwingV
Definition ir_Haier.h:185
const uint8_t kHaierAcYrw02ButtonSleep
Definition ir_Haier.h:192
const uint8_t kHaierAcFanMed
Definition ir_Haier.h:102
const uint8_t kHaierAcYrw02SwingHRight
Definition ir_Haier.h:168
const uint8_t kHaierAcYrw02SwingHMiddle
Definition ir_Haier.h:165
const uint8_t kHaierAcYrw02FanMed
Definition ir_Haier.h:173
const uint8_t kHaierAcYrw02Dry
Definition ir_Haier.h:179
const uint8_t kHaierAcSwingVChg
Definition ir_Haier.h:92
const uint8_t kHaierAcSwingVUp
Definition ir_Haier.h:90
const uint8_t kHaierAc160SwingVMiddle
Definition ir_Haier.h:160
const uint8_t kHaierAcYrw02ButtonTimer
Definition ir_Haier.h:193
const uint8_t kHaierAcYrw02ButtonMode
Definition ir_Haier.h:189
const uint8_t kHaierAcYrw02ButtonSwingH
Definition ir_Haier.h:186
const uint8_t kHaierAcCmdOn
Definition ir_Haier.h:78
const uint8_t kHaierAcCmdHealth
Definition ir_Haier.h:86
const uint8_t kHaierAcCool
Definition ir_Haier.h:95
const uint8_t kHaierAcPrefix
Definition ir_Haier.h:72
const uint8_t kHaierAcDefTemp
Definition ir_Haier.h:75
const uint8_t kHaierAc160SwingVHighest
Definition ir_Haier.h:158
const uint8_t kHaierAcFanAuto
Definition ir_Haier.h:100
const uint8_t kHaierAcYrw02SwingVMiddle
Definition ir_Haier.h:151
const uint8_t kHaierAcMaxTemp
Definition ir_Haier.h:76
const uint8_t kHaierAcCmdOff
Definition ir_Haier.h:77
const uint8_t kHaierAcYrw02FanLow
Definition ir_Haier.h:174
const uint8_t kHaierAcCmdTimerSet
Definition ir_Haier.h:84
const uint8_t kHaierAcSwingVDown
Definition ir_Haier.h:91
const uint8_t kHaierAcYrw02OnTimer
Definition ir_Haier.h:202
const uint8_t kHaierAcYrw02MinTempF
Definition ir_Haier.h:140
const uint8_t kHaierAcYrw02Auto
Definition ir_Haier.h:177
const uint8_t kHaierAcYrw02Heat
Definition ir_Haier.h:180
const uint8_t kHaierAcYrw02MinTempC
Definition ir_Haier.h:138
const uint8_t kHaierAcYrw02OnThenOffTimer
Definition ir_Haier.h:203
const uint8_t kHaierAcFanHigh
Definition ir_Haier.h:103
const uint8_t kHaierAcYrw02SwingVDown
Definition ir_Haier.h:153
const uint8_t kHaierAcYrw02SwingHLeftMax
Definition ir_Haier.h:166
const uint8_t kHaierAcCmdTempUp
Definition ir_Haier.h:81
const uint8_t kHaierAcYrw02DefTempC
Definition ir_Haier.h:142
const uint8_t kHaierAcMinTemp
Definition ir_Haier.h:74
const uint8_t kHaierAcYrw02SwingHAuto
Definition ir_Haier.h:170
const uint8_t kHaierAcYrw02ButtonHealth
Definition ir_Haier.h:190
const uint8_t kHaierAcYrw02FanHigh
Definition ir_Haier.h:172
const uint8_t kHaierAcCmdTimerCancel
Definition ir_Haier.h:85
const uint8_t kHaierAc160SwingVOff
Definition ir_Haier.h:156
const uint8_t kHaierAcCmdSleep
Definition ir_Haier.h:83
const uint8_t kHaierAcYrw02ButtonCFAB
Definition ir_Haier.h:198
const uint8_t kHaierAcYrw02SwingHLeft
Definition ir_Haier.h:167
const uint8_t kHaierAcAuto
Definition ir_Haier.h:94
const uint8_t kHaierAcSleepBit
Definition ir_Haier.h:107
const uint8_t kHaierAcYrw02SwingVBottom
Definition ir_Haier.h:152
const uint8_t kHaierAcYrw02SwingHRightMax
Definition ir_Haier.h:169
const uint8_t kHaierAcYrw02FanAuto
Definition ir_Haier.h:175
const uint8_t kHaierAcYrw02ButtonTurbo
Definition ir_Haier.h:191
const uint16_t kHaierAcMaxTime
Definition ir_Haier.h:105
const uint8_t kHaierAcFanLow
Definition ir_Haier.h:101
const uint8_t kHaierAcYrw02ModelA
Definition ir_Haier.h:144
const uint8_t kHaierAcYrw02ModelB
Definition ir_Haier.h:145
const uint8_t kHaierAcYrw02OffTimer
Definition ir_Haier.h:201
const uint8_t kHaierAcCmdTempDown
Definition ir_Haier.h:82
const uint8_t kHaierAc160Prefix
Definition ir_Haier.h:147
const uint8_t kHaierAcYrw02SwingVTop
Definition ir_Haier.h:150
const uint8_t kHaierAcYrw02ButtonPower
Definition ir_Haier.h:188
const uint8_t kHaierAcFan
Definition ir_Haier.h:98
const uint8_t kHaierAcYrw02ButtonTempDown
Definition ir_Haier.h:184
const uint8_t kHaierAcYrw02SwingVOff
Definition ir_Haier.h:149
const uint8_t kHaierAcCmdSwing
Definition ir_Haier.h:87
const uint8_t kHaierAc160ButtonClean
Definition ir_Haier.h:197
const uint8_t kHaierAcSwingVOff
Definition ir_Haier.h:89
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:67
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:55
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:106
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:80
Structure to hold a common A/C state.
Definition IRsend.h:120
Native representation of a Haier 160 bit A/C message.
Definition ir_Haier.h:277
uint8_t raw[kHaierAC160StateLength]
The state in native form.
Definition ir_Haier.h:278
uint8_t Fan2
Definition ir_Haier.h:335
uint8_t Sum
Definition ir_Haier.h:326
uint8_t SwingH
Definition ir_Haier.h:287
uint8_t Mode
Definition ir_Haier.h:306
uint8_t SwingV
Definition ir_Haier.h:283
uint8_t Turbo
Definition ir_Haier.h:302
uint8_t Sleep
Definition ir_Haier.h:310
uint8_t OffTimerMins
Definition ir_Haier.h:301
uint8_t Sum2
Definition ir_Haier.h:341
uint8_t TimerMode
Definition ir_Haier.h:292
uint8_t OffTimerHrs
Definition ir_Haier.h:298
uint8_t Clean2
Definition ir_Haier.h:331
uint8_t Fan
Definition ir_Haier.h:299
uint8_t ExtraDegreeF
Definition ir_Haier.h:314
uint8_t Button
Definition ir_Haier.h:322
uint8_t Model
Definition ir_Haier.h:281
uint8_t Clean
Definition ir_Haier.h:316
uint8_t Health
Definition ir_Haier.h:290
uint8_t OnTimerHrs
Definition ir_Haier.h:305
uint8_t Lock
Definition ir_Haier.h:323
uint8_t AuxHeating
Definition ir_Haier.h:296
uint8_t Quiet
Definition ir_Haier.h:303
uint8_t Prefix
Definition ir_Haier.h:328
uint8_t Temp
Definition ir_Haier.h:284
uint8_t UseFahrenheit
Definition ir_Haier.h:317
uint8_t Power
Definition ir_Haier.h:295
uint8_t OnTimerMins
Definition ir_Haier.h:308
Native representation of a Haier 176 bit A/C message.
Definition ir_Haier.h:207
uint8_t Quiet
Definition ir_Haier.h:233
uint8_t Lock
Definition ir_Haier.h:252
uint8_t Turbo
Definition ir_Haier.h:232
uint8_t raw[kHaierAC176StateLength]
The state in native form.
Definition ir_Haier.h:208
uint8_t Button
Definition ir_Haier.h:251
uint8_t ExtraDegreeF
Definition ir_Haier.h:244
uint8_t Mode
Definition ir_Haier.h:236
uint8_t Sum2
Definition ir_Haier.h:272
uint8_t Prefix2
Definition ir_Haier.h:257
uint8_t Fan
Definition ir_Haier.h:229
uint8_t SwingH
Definition ir_Haier.h:217
uint8_t Health
Definition ir_Haier.h:220
uint8_t TimerMode
Definition ir_Haier.h:222
uint8_t Temp
Definition ir_Haier.h:214
uint8_t UseFahrenheit
Definition ir_Haier.h:246
uint8_t Sum
Definition ir_Haier.h:255
uint8_t OnTimerMins
Definition ir_Haier.h:238
uint8_t OffTimerHrs
Definition ir_Haier.h:228
uint8_t OffTimerMins
Definition ir_Haier.h:231
uint8_t SwingV
Definition ir_Haier.h:213
uint8_t Fan2
Definition ir_Haier.h:262
uint8_t Model
Definition ir_Haier.h:211
uint8_t Power
Definition ir_Haier.h:225
uint8_t Sleep
Definition ir_Haier.h:240
uint8_t OnTimerHrs
Definition ir_Haier.h:235
Native representation of a Haier HSU07-HEA03 A/C message.
Definition ir_Haier.h:34
uint8_t CurrHours
Definition ir_Haier.h:44
uint8_t Fan
Definition ir_Haier.h:57
uint8_t Health
Definition ir_Haier.h:53
uint8_t Sum
Definition ir_Haier.h:66
uint8_t OnMins
Definition ir_Haier.h:62
uint8_t Prefix
Definition ir_Haier.h:39
uint8_t OffMins
Definition ir_Haier.h:56
uint8_t OffTimer
Definition ir_Haier.h:49
uint8_t CurrMins
Definition ir_Haier.h:48
uint8_t Sleep
Definition ir_Haier.h:63
uint8_t Mode
Definition ir_Haier.h:60
uint8_t unknown
Definition ir_Haier.h:45
uint8_t OnTimer
Definition ir_Haier.h:50
uint8_t Command
Definition ir_Haier.h:41
uint8_t OffHours
Definition ir_Haier.h:52
uint8_t OnHours
Definition ir_Haier.h:59
uint8_t remote_state[kHaierACStateLength]
< The state in native IR code form
Definition ir_Haier.h:36
uint8_t SwingV
Definition ir_Haier.h:46
uint8_t Temp
Definition ir_Haier.h:42