Go to the documentation of this file.
26 #include "IRsend_test.h"
95 #define HAIER_AC_MIN_TEMP kHaierAcMinTemp
96 #define HAIER_AC_DEF_TEMP kHaierAcDefTemp
97 #define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
98 #define HAIER_AC_CMD_OFF kHaierAcCmdOff
99 #define HAIER_AC_CMD_ON kHaierAcCmdOn
100 #define HAIER_AC_CMD_MODE kHaierAcCmdMode
101 #define HAIER_AC_CMD_FAN kHaierAcCmdFan
102 #define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
103 #define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
104 #define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
105 #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
106 #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
107 #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
108 #define HAIER_AC_CMD_SWING kHaierAcCmdSwing
109 #define HAIER_AC_SWING_OFF kHaierAcSwingOff
110 #define HAIER_AC_SWING_UP kHaierAcSwingUp
111 #define HAIER_AC_SWING_DOWN kHaierAcSwingDown
112 #define HAIER_AC_SWING_CHG kHaierAcSwingChg
113 #define HAIER_AC_AUTO kHaierAcAuto
114 #define HAIER_AC_COOL kHaierAcCool
115 #define HAIER_AC_DRY kHaierAcDry
116 #define HAIER_AC_HEAT kHaierAcHeat
117 #define HAIER_AC_FAN kHaierAcFan
118 #define HAIER_AC_FAN_AUTO kHaierAcFanAuto
119 #define HAIER_AC_FAN_LOW kHaierAcFanLow
120 #define HAIER_AC_FAN_MED kHaierAcFanMed
121 #define HAIER_AC_FAN_HIGH kHaierAcFanHigh
187 #define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
188 #define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
189 #define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
190 #define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
191 #define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
192 #define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
193 #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
194 #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
195 #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
196 #define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
197 #define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
198 #define HAIER_AC_YRW02_TURBO_HIGH kHaierAcYrw02TurboHigh
199 #define HAIER_AC_YRW02_TURBO_LOW kHaierAcYrw02TurboLow
200 #define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
201 #define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
202 #define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
203 #define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
204 #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
205 #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
206 #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
207 #define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
208 #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
209 #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
210 #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
211 #define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
212 #define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
213 #define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
219 explicit IRHaierAC(
const uint16_t pin,
const bool inverted =
false,
220 const bool use_modulation =
true);
228 #endif // SEND_HAIER_AC
234 void setTemp(
const uint8_t temp);
237 void setFan(
const uint8_t speed);
241 void setMode(
const uint8_t mode);
261 void setRaw(
const uint8_t new_code[]);
284 static uint16_t
getTime(
const uint8_t ptr[]);
285 static void setTime(uint8_t ptr[],
const uint16_t nr_mins);
291 explicit IRHaierACYRW02(
const uint16_t pin,
const bool inverted =
false,
292 const bool use_modulation =
true);
293 #if SEND_HAIER_AC_YRW02
300 #endif // SEND_HAIER_AC_YRW02
306 void setTemp(
const uint8_t temp);
309 void setFan(
const uint8_t speed);
313 void setMode(
const uint8_t mode);
332 void setRaw(
const uint8_t new_code[]);
356 #endif // IR_HAIER_H_
const uint8_t kHaierAcCmdFan
Definition: ir_Haier.h:42
const uint8_t kHaierAcFanHigh
Definition: ir_Haier.h:79
bool getHealth(void)
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:674
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:543
static void setTime(uint8_t ptr[], const uint16_t nr_mins)
Set the Time value at the given pointer.
Definition: ir_Haier.cpp:286
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:891
void setPower(const bool on)
Change the power setting.
Definition: ir_Haier.cpp:686
const uint8_t kHaierAcMinsSize
Definition: ir_Haier.h:86
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:839
const uint8_t kHaierAcHealthBitOffset
Definition: ir_Haier.h:58
const uint8_t kHaierAcTimeOffset
Definition: ir_Haier.h:84
static uint16_t getTime(const uint8_t ptr[])
Get the Time value at the given pointer.
Definition: ir_Haier.cpp:254
const uint8_t kHaierAcYrw02ModeOffset
Definition: ir_Haier.h:163
const uint8_t kHaierAcYrw02Fan
Definition: ir_Haier.h:168
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:888
const uint8_t kHaierAcYrw02FanMed
Definition: ir_Haier.h:150
const uint8_t kHaierAcSwingChg
Definition: ir_Haier.h:66
void setSwing(const uint8_t state)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:329
const uint8_t kHaierAcAuto
Definition: ir_Haier.h:70
const uint8_t kHaierAcYrw02ButtonTurbo
Definition: ir_Haier.h:183
bool getHealth(void)
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:235
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:299
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
IRsend _irsend
Instance of the IR send class.
Definition: ir_Haier.h:346
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:886
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Haier.cpp:680
const uint8_t kHaierAcCmdTempDown
Definition: ir_Haier.h:44
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:130
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:108
const uint8_t kHaierAcCmdMode
Definition: ir_Haier.h:41
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
const uint8_t kHaierAcYrw02ButtonHealth
Definition: ir_Haier.h:182
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:161
void on(void)
Change the power setting to On.
Definition: ir_Haier.cpp:692
const uint8_t kHaierAcCmdSleep
Definition: ir_Haier.h:45
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:358
const uint8_t kHaierAcYrw02PowerOffset
Definition: ir_Haier.h:142
const uint8_t kHaierAcYrw02TurboOffset
Definition: ir_Haier.h:155
int16_t getOffTimer(void)
Get the Off Timer value/setting of the A/C.
Definition: ir_Haier.cpp:271
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:826
uint8_t remote_state[kHaierACYRW02StateLength]
The state in native form.
Definition: ir_Haier.h:352
const uint8_t kHaierAcYrw02Auto
Definition: ir_Haier.h:164
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:123
const uint8_t kHaierAcCmdSwing
Definition: ir_Haier.h:49
const uint8_t kHaierAcYrw02Prefix
Definition: ir_Haier.h:125
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:450
const uint8_t kHaierAcYrw02TurboSize
Definition: ir_Haier.h:156
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:241
const uint8_t kHaierAcYrw02SwingTop
Definition: ir_Haier.h:132
const uint8_t kHaierAcCmdTimerSet
Definition: ir_Haier.h:46
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:699
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:188
const uint8_t kHaierAcCmdTempUp
Definition: ir_Haier.h:43
void cancelTimers(void)
Cancel/disable the On & Off timers.
Definition: ir_Haier.cpp:310
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:569
Class for sending all basic IR protocols.
Definition: IRsend.h:170
uint8_t getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Haier.cpp:712
IRsend _irsend
Instance of the IR send class.
Definition: ir_Haier.h:275
void setSwing(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:761
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:345
uint8_t getSwing(void)
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:755
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
const uint8_t kHaierAcFanLow
Definition: ir_Haier.h:77
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Haier.cpp:734
std::string String
Definition: IRremoteESP8266.h:1093
const uint8_t kHaierAcYrw02Sleep
Definition: ir_Haier.h:172
const uint8_t kHaierAcYrw02ButtonSleep
Definition: ir_Haier.h:184
const uint8_t kHaierAcPrefix
Definition: ir_Haier.h:33
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:889
void setOnTimer(const uint16_t mins)
Set & enable the On Timer.
Definition: ir_Haier.cpp:295
const uint8_t kHaierAcSwingOff
Definition: ir_Haier.h:63
const uint8_t kHaierAcSwingDown
Definition: ir_Haier.h:65
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:637
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:864
const uint8_t kHaierAcYrw02FanHigh
Definition: ir_Haier.h:149
const uint8_t kHaierAcFan
Definition: ir_Haier.h:74
const uint8_t kHaierAcYrw02FanLow
Definition: ir_Haier.h:151
const uint8_t kHaierAcYrw02SwingAuto
Definition: ir_Haier.h:136
const uint8_t kHaierAcCool
Definition: ir_Haier.h:71
const uint8_t kHaierAcDefTemp
Definition: ir_Haier.h:37
uint8_t remote_state[kHaierACStateLength]
The state in native code form.
Definition: ir_Haier.h:281
const uint8_t kHaierAcYrw02SwingOff
Definition: ir_Haier.h:131
uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:372
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:741
const uint8_t kHaierAcOffTimerOffset
Definition: ir_Haier.h:54
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:228
const uint8_t kHaierAcYrw02ButtonTempUp
Definition: ir_Haier.h:176
const uint8_t kHaierAcYrw02SleepOffset
Definition: ir_Haier.h:171
void off(void)
Change the power setting to Off.
Definition: ir_Haier.cpp:695
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:667
const uint8_t kHaierAcMinTemp
Definition: ir_Haier.h:36
const uint8_t kHaierAcYrw02SwingDown
Definition: ir_Haier.h:135
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Haier.cpp:222
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:102
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:554
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:248
const uint8_t kHaierAcCmdHealth
Definition: ir_Haier.h:48
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Haier.cpp:661
const uint8_t kHaierAcCmdOn
Definition: ir_Haier.h:40
const uint8_t kHaierAcYrw02SwingMiddle
Definition: ir_Haier.h:133
const uint8_t kHaierAcYrw02ButtonSwing
Definition: ir_Haier.h:178
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:890
const uint8_t kHaierAcYrw02TurboLow
Definition: ir_Haier.h:159
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:585
const uint8_t kHaierAcFanMed
Definition: ir_Haier.h:78
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:705
const uint8_t kHaierAcYrw02TurboOff
Definition: ir_Haier.h:157
uint8_t getButton(void)
Get the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:615
const uint8_t kHaierAcYrw02ButtonTempDown
Definition: ir_Haier.h:177
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:217
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:643
const uint8_t kHaierAcYrw02FanOffset
Definition: ir_Haier.h:147
uint16_t getCurrTime(void)
Get the clock value of the A/C.
Definition: ir_Haier.cpp:281
const uint8_t kHaierAcSleepBitOffset
Definition: ir_Haier.h:91
void setOffTimer(const uint16_t mins)
Set & enable the Off Timer.
Definition: ir_Haier.cpp:303
const uint8_t kHaierAcYrw02FanAuto
Definition: ir_Haier.h:152
const uint8_t kHaierAcYrw02TurboHigh
Definition: ir_Haier.h:158
const uint8_t kHaierAcMaxTemp
Definition: ir_Haier.h:38
void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Haier.cpp:548
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:598
const uint8_t kHaierAcYrw02ButtonFan
Definition: ir_Haier.h:179
const uint8_t kHaierAcYrw02Cool
Definition: ir_Haier.h:165
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:387
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:592
const uint8_t kHaierAcYrw02HealthOffset
Definition: ir_Haier.h:139
const uint8_t kHaierAcYrw02SwingBottom
Definition: ir_Haier.h:134
const uint8_t kHaierAcFanAuto
Definition: ir_Haier.h:76
uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:811
uint8_t getCommand(void)
Get the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:155
const uint8_t kHaierAcYrw02Power
Definition: ir_Haier.h:143
const uint8_t kHaierAcCmdOff
Definition: ir_Haier.h:39
IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:538
const uint8_t kHaierAcYrw02Heat
Definition: ir_Haier.h:167
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:94
void setCommand(const uint8_t command)
Set the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:136
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:227
const uint8_t kHaierAcSleepBit
Definition: ir_Haier.h:92
const uint8_t kHaierAcDry
Definition: ir_Haier.h:72
const uint8_t kHaierAcOnTimerOffset
Definition: ir_Haier.h:55
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:563
const uint8_t kHaierAcSwingUp
Definition: ir_Haier.h:64
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:412
const uint8_t kHaierAcYrw02ButtonMode
Definition: ir_Haier.h:181
const uint8_t kHaierAcHeat
Definition: ir_Haier.h:73
const uint8_t kHaierAcYrw02FanSize
Definition: ir_Haier.h:148
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:198
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:83
uint8_t getSwing(void)
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:323
const uint16_t kHaierAcMaxTime
Definition: ir_Haier.h:88
void setCurrTime(const uint16_t mins)
Set the clock value for the A/C.
Definition: ir_Haier.cpp:317
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:851
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:289
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Haier.cpp:177
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:423
IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:78
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:204
const uint8_t kHaierAcSwingOffset
Definition: ir_Haier.h:61
void setTurbo(const uint8_t speed)
Set the Turbo setting of the A/C.
Definition: ir_Haier.cpp:721
const uint8_t kHaierAcYrw02Dry
Definition: ir_Haier.h:166
const uint8_t kHaierAcModeOffset
Definition: ir_Haier.h:69
Structure to hold a common A/C state.
Definition: IRsend.h:97
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:784
const uint8_t kHaierAcHoursSize
Definition: ir_Haier.h:85
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:400
const uint8_t kHaierAcYrw02ButtonPower
Definition: ir_Haier.h:180
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:621
int16_t getOnTimer(void)
Get the On Timer value/setting of the A/C.
Definition: ir_Haier.cpp:261
const uint8_t kHaierAcSwingSize
Definition: ir_Haier.h:62
const uint8_t kHaierAcCmdTimerCancel
Definition: ir_Haier.h:47
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:797
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
void send(const uint16_t repeat=kHaierAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Haier.cpp:88