Go to the documentation of this file.
26 #include "IRsend_test.h"
106 #define HAIER_AC_MIN_TEMP kHaierAcMinTemp
107 #define HAIER_AC_DEF_TEMP kHaierAcDefTemp
108 #define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
109 #define HAIER_AC_CMD_OFF kHaierAcCmdOff
110 #define HAIER_AC_CMD_ON kHaierAcCmdOn
111 #define HAIER_AC_CMD_MODE kHaierAcCmdMode
112 #define HAIER_AC_CMD_FAN kHaierAcCmdFan
113 #define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
114 #define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
115 #define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
116 #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
117 #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
118 #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
119 #define HAIER_AC_CMD_SWING kHaierAcCmdSwing
120 #define HAIER_AC_SWING_OFF kHaierAcSwingOff
121 #define HAIER_AC_SWING_UP kHaierAcSwingUp
122 #define HAIER_AC_SWING_DOWN kHaierAcSwingDown
123 #define HAIER_AC_SWING_CHG kHaierAcSwingChg
124 #define HAIER_AC_AUTO kHaierAcAuto
125 #define HAIER_AC_COOL kHaierAcCool
126 #define HAIER_AC_DRY kHaierAcDry
127 #define HAIER_AC_HEAT kHaierAcHeat
128 #define HAIER_AC_FAN kHaierAcFan
129 #define HAIER_AC_FAN_AUTO kHaierAcFanAuto
130 #define HAIER_AC_FAN_LOW kHaierAcFanLow
131 #define HAIER_AC_FAN_MED kHaierAcFanMed
132 #define HAIER_AC_FAN_HIGH kHaierAcFanHigh
214 #define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
215 #define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
216 #define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
217 #define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
218 #define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
219 #define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
220 #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
221 #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
222 #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
223 #define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
224 #define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
225 #define HAIER_AC_YRW02_TURBO_HIGH kHaierAcYrw02TurboHigh
226 #define HAIER_AC_YRW02_TURBO_LOW kHaierAcYrw02TurboLow
227 #define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
228 #define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
229 #define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
230 #define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
231 #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
232 #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
233 #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
234 #define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
235 #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
236 #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
237 #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
238 #define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
239 #define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
240 #define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
246 explicit IRHaierAC(
const uint16_t pin,
const bool inverted =
false,
247 const bool use_modulation =
true);
255 #endif // SEND_HAIER_AC
261 void setTemp(
const uint8_t temp);
264 void setFan(
const uint8_t speed);
265 uint8_t
getFan(
void)
const;
268 void setMode(
const uint8_t mode);
288 void setRaw(
const uint8_t new_code[]);
316 explicit IRHaierACYRW02(
const uint16_t pin,
const bool inverted =
false,
317 const bool use_modulation =
true);
318 #if SEND_HAIER_AC_YRW02
325 #endif // SEND_HAIER_AC_YRW02
331 void setTemp(
const uint8_t temp);
334 void setFan(
const uint8_t speed);
335 uint8_t
getFan(
void)
const;
338 void setMode(
const uint8_t mode);
357 void setRaw(
const uint8_t new_code[]);
381 #endif // IR_HAIER_H_
String toString(void) const
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:871
const uint8_t kHaierAcCmdFan
Definition: ir_Haier.h:76
const uint8_t kHaierAcFanHigh
Definition: ir_Haier.h:99
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:532
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:916
uint8_t getTemp(void) const
Get the current temperature setting.
Definition: ir_Haier.cpp:646
void setPower(const bool on)
Change the power setting.
Definition: ir_Haier.cpp:671
int16_t getOffTimer(void) const
Get the Off Timer value/setting of the A/C.
Definition: ir_Haier.cpp:267
Definition: ir_Haier.h:135
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:201
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:820
const uint8_t kHaierAcYrw02Fan
Definition: ir_Haier.h:201
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:913
const uint8_t kHaierAcYrw02FanMed
Definition: ir_Haier.h:189
const uint8_t kHaierAcSwingChg
Definition: ir_Haier.h:88
void setSwing(const uint8_t state)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:318
uint8_t Temp
Definition: ir_Haier.h:142
const uint8_t kHaierAcAuto
Definition: ir_Haier.h:90
const uint8_t kHaierAcYrw02ButtonTurbo
Definition: ir_Haier.h:210
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:324
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:371
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:911
const uint8_t kHaierAcCmdTempDown
Definition: ir_Haier.h:78
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:133
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:114
uint8_t Swing
Definition: ir_Haier.h:42
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:659
const uint8_t kHaierAcCmdMode
Definition: ir_Haier.h:75
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
const uint8_t kHaierAcYrw02ButtonHealth
Definition: ir_Haier.h:209
uint16_t getCurrTime(void) const
Get the clock value of the A/C.
Definition: ir_Haier.cpp:277
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:164
void on(void)
Change the power setting to On.
Definition: ir_Haier.cpp:677
const uint8_t kHaierAcCmdSleep
Definition: ir_Haier.h:79
HaierYRW02Protocol _
Definition: ir_Haier.h:377
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:347
uint8_t Prefix
Definition: ir_Haier.h:35
uint8_t getTemp(void) const
Get the current temperature setting.
Definition: ir_Haier.cpp:225
uint8_t Temp
Definition: ir_Haier.h:38
uint8_t getFan(void) const
Get the current fan speed setting.
Definition: ir_Haier.cpp:180
uint8_t OnTimer
Definition: ir_Haier.h:46
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:807
const uint8_t kHaierAcYrw02Auto
Definition: ir_Haier.h:197
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:126
const uint8_t kHaierAcCmdSwing
Definition: ir_Haier.h:83
const uint8_t kHaierAcYrw02Prefix
Definition: ir_Haier.h:179
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:244
const uint8_t kHaierAcYrw02SwingTop
Definition: ir_Haier.h:182
uint8_t getTurbo(void) const
Get the Turbo setting of the A/C.
Definition: ir_Haier.cpp:697
uint8_t CurrMins
Definition: ir_Haier.h:44
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:622
uint8_t raw[kHaierACYRW02StateLength]
The state in native form.
Definition: ir_Haier.h:136
uint8_t Mode
Definition: ir_Haier.h:56
uint8_t Power
Definition: ir_Haier.h:151
String toString(void) const
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:439
const uint8_t kHaierAcCmdTimerSet
Definition: ir_Haier.h:80
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:191
const uint8_t kHaierAcCmdTempUp
Definition: ir_Haier.h:77
void cancelTimers(void)
Cancel/disable the On & Off timers.
Definition: ir_Haier.cpp:298
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:557
Class for sending all basic IR protocols.
Definition: IRsend.h:176
IRsend _irsend
Instance of the IR send class.
Definition: ir_Haier.h:302
void setSwing(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:742
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:334
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:97
uint8_t getSwing(void) const
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:736
std::string String
Definition: IRremoteESP8266.h:1128
bool getHealth(void) const
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:238
const uint8_t kHaierAcYrw02ButtonSleep
Definition: ir_Haier.h:211
const uint8_t kHaierAcPrefix
Definition: ir_Haier.h:68
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:914
uint8_t Prefix
Definition: ir_Haier.h:139
void setOnTimer(const uint16_t mins)
Set & enable the On Timer.
Definition: ir_Haier.cpp:281
uint8_t Sleep
Definition: ir_Haier.h:164
const uint8_t kHaierAcSwingOff
Definition: ir_Haier.h:85
const uint8_t kHaierAcSwingDown
Definition: ir_Haier.h:87
bool getPower(void) const
Get the value of the current power setting.
Definition: ir_Haier.cpp:665
const uint8_t kHaierAcYrw02FanHigh
Definition: ir_Haier.h:188
const uint8_t kHaierAcFan
Definition: ir_Haier.h:94
const uint8_t kHaierAcYrw02FanLow
Definition: ir_Haier.h:190
uint8_t Fan
Definition: ir_Haier.h:53
const uint8_t kHaierAcYrw02SwingAuto
Definition: ir_Haier.h:186
const uint8_t kHaierAcCool
Definition: ir_Haier.h:91
uint8_t Turbo
Definition: ir_Haier.h:158
const uint8_t kHaierAcDefTemp
Definition: ir_Haier.h:71
uint8_t Mode
Definition: ir_Haier.h:161
const uint8_t kHaierAcYrw02SwingOff
Definition: ir_Haier.h:181
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:361
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:251
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:723
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:231
const uint8_t kHaierAcYrw02ButtonTempUp
Definition: ir_Haier.h:203
uint8_t Swing
Definition: ir_Haier.h:141
void off(void)
Change the power setting to Off.
Definition: ir_Haier.cpp:680
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:652
const uint8_t kHaierAcMinTemp
Definition: ir_Haier.h:70
const uint8_t kHaierAcYrw02SwingDown
Definition: ir_Haier.h:185
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:108
uint8_t getSwing(void) const
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:312
HaierProtocol _
Definition: ir_Haier.h:308
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:543
uint8_t Health
Definition: ir_Haier.h:49
const uint8_t kHaierAcCmdHealth
Definition: ir_Haier.h:82
uint8_t unknown
Definition: ir_Haier.h:41
uint8_t CurrHours
Definition: ir_Haier.h:40
uint8_t remote_state[kHaierACStateLength]
< The state in native IR code form
Definition: ir_Haier.h:32
const uint8_t kHaierAcCmdOn
Definition: ir_Haier.h:74
const uint8_t kHaierAcYrw02SwingMiddle
Definition: ir_Haier.h:183
uint8_t getFan(void) const
Get the current fan speed setting.
Definition: ir_Haier.cpp:717
const uint8_t kHaierAcYrw02ButtonSwing
Definition: ir_Haier.h:205
const uint8_t kHaierAcYrw02TurboLow
Definition: ir_Haier.h:195
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:570
const uint8_t kHaierAcFanMed
Definition: ir_Haier.h:98
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:690
const uint8_t kHaierAcYrw02TurboOff
Definition: ir_Haier.h:193
uint8_t Health
Definition: ir_Haier.h:147
const uint8_t kHaierAcYrw02ButtonTempDown
Definition: ir_Haier.h:204
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:244
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:628
uint8_t OnMins
Definition: ir_Haier.h:58
void setOffTimer(const uint16_t mins)
Set & enable the Off Timer.
Definition: ir_Haier.cpp:290
const uint8_t kHaierAcYrw02FanAuto
Definition: ir_Haier.h:191
const uint8_t kHaierAcYrw02TurboHigh
Definition: ir_Haier.h:194
const uint8_t kHaierAcMaxTemp
Definition: ir_Haier.h:72
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:845
void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Haier.cpp:537
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:583
const uint8_t kHaierAcYrw02ButtonFan
Definition: ir_Haier.h:206
const uint8_t kHaierAcYrw02Cool
Definition: ir_Haier.h:198
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:376
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:577
const uint8_t kHaierAcYrw02SwingBottom
Definition: ir_Haier.h:184
uint8_t OffHours
Definition: ir_Haier.h:48
const uint8_t kHaierAcFanAuto
Definition: ir_Haier.h:96
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:792
const uint8_t kHaierAcCmdOff
Definition: ir_Haier.h:73
uint8_t Sleep
Definition: ir_Haier.h:59
IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:527
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:412
int16_t getOnTimer(void) const
Get the On Timer value/setting of the A/C.
Definition: ir_Haier.cpp:257
const uint8_t kHaierAcYrw02Heat
Definition: ir_Haier.h:200
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:100
void setCommand(const uint8_t command)
Set the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:139
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:254
const uint8_t kHaierAcSleepBit
Definition: ir_Haier.h:103
const uint8_t kHaierAcDry
Definition: ir_Haier.h:92
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:551
const uint8_t kHaierAcSwingUp
Definition: ir_Haier.h:86
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:401
const uint8_t kHaierAcYrw02ButtonMode
Definition: ir_Haier.h:208
const uint8_t kHaierAcHeat
Definition: ir_Haier.h:93
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:684
Definition: ir_Haier.h:30
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:89
const uint16_t kHaierAcMaxTime
Definition: ir_Haier.h:101
void setCurrTime(const uint16_t mins)
Set the clock value for the A/C.
Definition: ir_Haier.cpp:306
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:832
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:314
IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:84
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:207
uint8_t getCommand(void) const
Get the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:158
uint8_t Fan
Definition: ir_Haier.h:155
void setTurbo(const uint8_t speed)
Set the Turbo setting of the A/C.
Definition: ir_Haier.cpp:705
const uint8_t kHaierAcYrw02Dry
Definition: ir_Haier.h:199
uint8_t OnHours
Definition: ir_Haier.h:55
uint8_t OffTimer
Definition: ir_Haier.h:45
Structure to hold a common A/C state.
Definition: IRsend.h:97
uint8_t Command
Definition: ir_Haier.h:37
uint8_t Button
Definition: ir_Haier.h:172
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:765
uint8_t OffMins
Definition: ir_Haier.h:52
uint8_t Sum
Definition: ir_Haier.h:175
uint8_t Sum
Definition: ir_Haier.h:62
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:389
const uint8_t kHaierAcYrw02ButtonPower
Definition: ir_Haier.h:207
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:606
uint8_t getButton(void) const
Get the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:600
const uint8_t kHaierAcCmdTimerCancel
Definition: ir_Haier.h:81
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:778
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:94