IRremoteESP8266

Classes | Variables
ir_Haier.h File Reference

Support for Haier A/C protocols. The specifics of reverse engineering the protocols details: More...

Go to the source code of this file.

## Classes
union | HaierProtocol
| Native representation of a Haier HSU07-HEA03 A/C message. More...
union | HaierAc176Protocol
| Native representation of a Haier 176 bit A/C message. More...
union | HaierAc160Protocol
| Native representation of a Haier 160 bit A/C message. More...
class | IRHaierAC
| Class for handling detailed Haier A/C messages. More...
class | IRHaierAC176
| Class for handling detailed Haier 176 bit A/C messages. More...
class | IRHaierACYRW02
| Class for handling detailed Haier ACYRW02 A/C messages. More...
class | IRHaierAC160
| Class for handling detailed Haier 160 bit A/C messages. More...

## Variables
const uint8_t | kHaierAcPrefix = 0b10100101
const uint8_t | kHaierAcMinTemp = 16
const uint8_t | kHaierAcDefTemp = 25
const uint8_t | kHaierAcMaxTemp = 30
const uint8_t | kHaierAcCmdOff = 0b0000
const uint8_t | kHaierAcCmdOn = 0b0001
const uint8_t | kHaierAcCmdMode = 0b0010
const uint8_t | kHaierAcCmdFan = 0b0011
const uint8_t | kHaierAcCmdTempUp = 0b0110
const uint8_t | kHaierAcCmdTempDown = 0b0111
const uint8_t | kHaierAcCmdSleep = 0b1000
const uint8_t | kHaierAcCmdTimerSet = 0b1001
const uint8_t | kHaierAcCmdTimerCancel = 0b1010
const uint8_t | kHaierAcCmdHealth = 0b1100
const uint8_t | kHaierAcCmdSwing = 0b1101
const uint8_t | kHaierAcSwingVOff = 0b00
const uint8_t | kHaierAcSwingVUp = 0b01
const uint8_t | kHaierAcSwingVDown = 0b10
const uint8_t | kHaierAcSwingVChg = 0b11
const uint8_t | kHaierAcAuto = 0
const uint8_t | kHaierAcCool = 1
const uint8_t | kHaierAcDry = 2
const uint8_t | kHaierAcHeat = 3
const uint8_t | kHaierAcFan = 4
const uint8_t | kHaierAcFanAuto = 0
const uint8_t | kHaierAcFanLow = 1
const uint8_t | kHaierAcFanMed = 2
const uint8_t | kHaierAcFanHigh = 3
const uint16_t | kHaierAcMaxTime = (23 * 60) + 59
const uint8_t | kHaierAcSleepBit = 0b01000000
const uint8_t | kHaierAcYrw02MinTempC = 16
const uint8_t | kHaierAcYrw02MaxTempC = 30
const uint8_t | kHaierAcYrw02MinTempF = 60
const uint8_t | kHaierAcYrw02MaxTempF = 86
const uint8_t | kHaierAcYrw02DefTempC = 25
const uint8_t | kHaierAcYrw02ModelA = 0xA6
const uint8_t | kHaierAcYrw02ModelB = 0x59
const uint8_t | kHaierAc176Prefix = 0xB7
const uint8_t | kHaierAc160Prefix = 0xB5
const uint8_t | kHaierAcYrw02SwingVOff = 0x0
const uint8_t | kHaierAcYrw02SwingVTop = 0x1
const uint8_t | kHaierAcYrw02SwingVMiddle = 0x2
const uint8_t | kHaierAcYrw02SwingVBottom = 0x3
const uint8_t | kHaierAcYrw02SwingVDown = 0xA
const uint8_t | kHaierAcYrw02SwingVAuto = 0xC
const uint8_t | kHaierAc160SwingVOff = 0b0000
const uint8_t | kHaierAc160SwingVTop = 0b0001
const uint8_t | kHaierAc160SwingVHighest = 0b0010
const uint8_t | kHaierAc160SwingVHigh = 0b0100
const uint8_t | kHaierAc160SwingVMiddle = 0b0110
const uint8_t | kHaierAc160SwingVLow = 0b1000
const uint8_t | kHaierAc160SwingVLowest = 0b0011
const uint8_t | kHaierAc160SwingVAuto = 0b1100
const uint8_t | kHaierAcYrw02SwingHMiddle = 0x0
const uint8_t | kHaierAcYrw02SwingHLeftMax = 0x3
const uint8_t | kHaierAcYrw02SwingHLeft = 0x4
const uint8_t | kHaierAcYrw02SwingHRight = 0x5
const uint8_t | kHaierAcYrw02SwingHRightMax = 0x6
const uint8_t | kHaierAcYrw02SwingHAuto = 0x7
const uint8_t | kHaierAcYrw02FanHigh = 0b001
const uint8_t | kHaierAcYrw02FanMed = 0b010
const uint8_t | kHaierAcYrw02FanLow = 0b011
const uint8_t | kHaierAcYrw02FanAuto = 0b101
const uint8_t | kHaierAcYrw02Auto = 0b000
const uint8_t | kHaierAcYrw02Cool = 0b001
const uint8_t | kHaierAcYrw02Dry = 0b010
const uint8_t | kHaierAcYrw02Heat = 0b100
const uint8_t | kHaierAcYrw02Fan = 0b110
const uint8_t | kHaierAcYrw02ButtonTempUp = 0b00000
const uint8_t | kHaierAcYrw02ButtonTempDown = 0b00001
const uint8_t | kHaierAcYrw02ButtonSwingV = 0b00010
const uint8_t | kHaierAcYrw02ButtonSwingH = 0b00011
const uint8_t | kHaierAcYrw02ButtonFan = 0b00100
const uint8_t | kHaierAcYrw02ButtonPower = 0b00101
const uint8_t | kHaierAcYrw02ButtonMode = 0b00110
const uint8_t | kHaierAcYrw02ButtonHealth = 0b00111
const uint8_t | kHaierAcYrw02ButtonTurbo = 0b01000
const uint8_t | kHaierAcYrw02ButtonSleep = 0b01011
const uint8_t | kHaierAcYrw02ButtonTimer = 0b10000
const uint8_t | kHaierAcYrw02ButtonLock = 0b10100
const uint8_t | kHaierAc160ButtonLight = 0b10101
const uint8_t | kHaierAc160ButtonAuxHeating = 0b10110
const uint8_t | kHaierAc160ButtonClean = 0b11001
const uint8_t | kHaierAcYrw02ButtonCFAB = 0b11010
const uint8_t | kHaierAcYrw02NoTimers = 0b000
const uint8_t | kHaierAcYrw02OffTimer = 0b001
const uint8_t | kHaierAcYrw02OnTimer = 0b010
const uint8_t | kHaierAcYrw02OnThenOffTimer = 0b100
const uint8_t | kHaierAcYrw02OffThenOnTimer = 0b101

## Detailed Description

Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:

- HSU07-HEA03 by kuzin2006.
- YR-W02/HSU-09HMC203 by non7top.
  See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/404
    https://www.dropbox.com/s/mecyib3lhdxc8c6/IR%20data%20reverse%20engineering.xlsx?dl=0
    https://github.com/crankyoldgit/IRremoteESP8266/issues/485
    https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0&preview=haer2.ods
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1804

## Variable Documentation

## ◆ kHaierAc160ButtonAuxHeating

const uint8_t kHaierAc160ButtonAuxHeating = 0b10110

## ◆ kHaierAc160ButtonClean

const uint8_t kHaierAc160ButtonClean = 0b11001

## ◆ kHaierAc160ButtonLight

const uint8_t kHaierAc160ButtonLight = 0b10101

## ◆ kHaierAc160Prefix

const uint8_t kHaierAc160Prefix = 0xB5

## ◆ kHaierAc160SwingVAuto

const uint8_t kHaierAc160SwingVAuto = 0b1100

## ◆ kHaierAc160SwingVHigh

const uint8_t kHaierAc160SwingVHigh = 0b0100

## ◆ kHaierAc160SwingVHighest

const uint8_t kHaierAc160SwingVHighest = 0b0010

## ◆ kHaierAc160SwingVLow

const uint8_t kHaierAc160SwingVLow = 0b1000

## ◆ kHaierAc160SwingVLowest

const uint8_t kHaierAc160SwingVLowest = 0b0011

## ◆ kHaierAc160SwingVMiddle

const uint8_t kHaierAc160SwingVMiddle = 0b0110

## ◆ kHaierAc160SwingVOff

const uint8_t kHaierAc160SwingVOff = 0b0000

## ◆ kHaierAc160SwingVTop

const uint8_t kHaierAc160SwingVTop = 0b0001

## ◆ kHaierAc176Prefix

const uint8_t kHaierAc176Prefix = 0xB7

## ◆ kHaierAcAuto

const uint8_t kHaierAcAuto = 0

## ◆ kHaierAcCmdFan

const uint8_t kHaierAcCmdFan = 0b0011

## ◆ kHaierAcCmdHealth

const uint8_t kHaierAcCmdHealth = 0b1100

## ◆ kHaierAcCmdMode

const uint8_t kHaierAcCmdMode = 0b0010

## ◆ kHaierAcCmdOff

const uint8_t kHaierAcCmdOff = 0b0000

## ◆ kHaierAcCmdOn

const uint8_t kHaierAcCmdOn = 0b0001

## ◆ kHaierAcCmdSleep

const uint8_t kHaierAcCmdSleep = 0b1000

## ◆ kHaierAcCmdSwing

const uint8_t kHaierAcCmdSwing = 0b1101

## ◆ kHaierAcCmdTempDown

const uint8_t kHaierAcCmdTempDown = 0b0111

## ◆ kHaierAcCmdTempUp

const uint8_t kHaierAcCmdTempUp = 0b0110

## ◆ kHaierAcCmdTimerCancel

const uint8_t kHaierAcCmdTimerCancel = 0b1010

## ◆ kHaierAcCmdTimerSet

const uint8_t kHaierAcCmdTimerSet = 0b1001

## ◆ kHaierAcCool

const uint8_t kHaierAcCool = 1

## ◆ kHaierAcDefTemp

const uint8_t kHaierAcDefTemp = 25

## ◆ kHaierAcDry

const uint8_t kHaierAcDry = 2

## ◆ kHaierAcFan

const uint8_t kHaierAcFan = 4

## ◆ kHaierAcFanAuto

const uint8_t kHaierAcFanAuto = 0

## ◆ kHaierAcFanHigh

const uint8_t kHaierAcFanHigh = 3

## ◆ kHaierAcFanLow

const uint8_t kHaierAcFanLow = 1

## ◆ kHaierAcFanMed

const uint8_t kHaierAcFanMed = 2

## ◆ kHaierAcHeat

const uint8_t kHaierAcHeat = 3

## ◆ kHaierAcMaxTemp

const uint8_t kHaierAcMaxTemp = 30

## ◆ kHaierAcMaxTime

const uint16_t kHaierAcMaxTime = (23 * 60) + 59

## ◆ kHaierAcMinTemp

const uint8_t kHaierAcMinTemp = 16

## ◆ kHaierAcPrefix

const uint8_t kHaierAcPrefix = 0b10100101

## ◆ kHaierAcSleepBit

const uint8_t kHaierAcSleepBit = 0b01000000

## ◆ kHaierAcSwingVChg

const uint8_t kHaierAcSwingVChg = 0b11

## ◆ kHaierAcSwingVDown

const uint8_t kHaierAcSwingVDown = 0b10

## ◆ kHaierAcSwingVOff

const uint8_t kHaierAcSwingVOff = 0b00

## ◆ kHaierAcSwingVUp

const uint8_t kHaierAcSwingVUp = 0b01

## ◆ kHaierAcYrw02Auto

const uint8_t kHaierAcYrw02Auto = 0b000

## ◆ kHaierAcYrw02ButtonCFAB

const uint8_t kHaierAcYrw02ButtonCFAB = 0b11010

## ◆ kHaierAcYrw02ButtonFan

const uint8_t kHaierAcYrw02ButtonFan = 0b00100

## ◆ kHaierAcYrw02ButtonHealth

const uint8_t kHaierAcYrw02ButtonHealth = 0b00111

## ◆ kHaierAcYrw02ButtonLock

const uint8_t kHaierAcYrw02ButtonLock = 0b10100

## ◆ kHaierAcYrw02ButtonMode

const uint8_t kHaierAcYrw02ButtonMode = 0b00110

## ◆ kHaierAcYrw02ButtonPower

const uint8_t kHaierAcYrw02ButtonPower = 0b00101

## ◆ kHaierAcYrw02ButtonSleep

const uint8_t kHaierAcYrw02ButtonSleep = 0b01011

## ◆ kHaierAcYrw02ButtonSwingH

const uint8_t kHaierAcYrw02ButtonSwingH = 0b00011

## ◆ kHaierAcYrw02ButtonSwingV

const uint8_t kHaierAcYrw02ButtonSwingV = 0b00010

## ◆ kHaierAcYrw02ButtonTempDown

const uint8_t kHaierAcYrw02ButtonTempDown = 0b00001

## ◆ kHaierAcYrw02ButtonTempUp

const uint8_t kHaierAcYrw02ButtonTempUp = 0b00000

## ◆ kHaierAcYrw02ButtonTimer

const uint8_t kHaierAcYrw02ButtonTimer = 0b10000

## ◆ kHaierAcYrw02ButtonTurbo

const uint8_t kHaierAcYrw02ButtonTurbo = 0b01000

## ◆ kHaierAcYrw02Cool

const uint8_t kHaierAcYrw02Cool = 0b001

## ◆ kHaierAcYrw02DefTempC

const uint8_t kHaierAcYrw02DefTempC = 25

## ◆ kHaierAcYrw02Dry

const uint8_t kHaierAcYrw02Dry = 0b010

## ◆ kHaierAcYrw02Fan

const uint8_t kHaierAcYrw02Fan = 0b110

## ◆ kHaierAcYrw02FanAuto

const uint8_t kHaierAcYrw02FanAuto = 0b101

## ◆ kHaierAcYrw02FanHigh

const uint8_t kHaierAcYrw02FanHigh = 0b001

## ◆ kHaierAcYrw02FanLow

const uint8_t kHaierAcYrw02FanLow = 0b011

## ◆ kHaierAcYrw02FanMed

const uint8_t kHaierAcYrw02FanMed = 0b010

## ◆ kHaierAcYrw02Heat

const uint8_t kHaierAcYrw02Heat = 0b100

## ◆ kHaierAcYrw02MaxTempC

const uint8_t kHaierAcYrw02MaxTempC = 30

## ◆ kHaierAcYrw02MaxTempF

const uint8_t kHaierAcYrw02MaxTempF = 86

## ◆ kHaierAcYrw02MinTempC

const uint8_t kHaierAcYrw02MinTempC = 16

## ◆ kHaierAcYrw02MinTempF

const uint8_t kHaierAcYrw02MinTempF = 60

## ◆ kHaierAcYrw02ModelA

const uint8_t kHaierAcYrw02ModelA = 0xA6

## ◆ kHaierAcYrw02ModelB

const uint8_t kHaierAcYrw02ModelB = 0x59

## ◆ kHaierAcYrw02NoTimers

const uint8_t kHaierAcYrw02NoTimers = 0b000

## ◆ kHaierAcYrw02OffThenOnTimer

const uint8_t kHaierAcYrw02OffThenOnTimer = 0b101

## ◆ kHaierAcYrw02OffTimer

const uint8_t kHaierAcYrw02OffTimer = 0b001

## ◆ kHaierAcYrw02OnThenOffTimer

const uint8_t kHaierAcYrw02OnThenOffTimer = 0b100

## ◆ kHaierAcYrw02OnTimer

const uint8_t kHaierAcYrw02OnTimer = 0b010

## ◆ kHaierAcYrw02SwingHAuto

const uint8_t kHaierAcYrw02SwingHAuto = 0x7

## ◆ kHaierAcYrw02SwingHLeft

const uint8_t kHaierAcYrw02SwingHLeft = 0x4

## ◆ kHaierAcYrw02SwingHLeftMax

const uint8_t kHaierAcYrw02SwingHLeftMax = 0x3

## ◆ kHaierAcYrw02SwingHMiddle

const uint8_t kHaierAcYrw02SwingHMiddle = 0x0

## ◆ kHaierAcYrw02SwingHRight

const uint8_t kHaierAcYrw02SwingHRight = 0x5

## ◆ kHaierAcYrw02SwingHRightMax

const uint8_t kHaierAcYrw02SwingHRightMax = 0x6

## ◆ kHaierAcYrw02SwingVAuto

const uint8_t kHaierAcYrw02SwingVAuto = 0xC

## ◆ kHaierAcYrw02SwingVBottom

const uint8_t kHaierAcYrw02SwingVBottom = 0x3

## ◆ kHaierAcYrw02SwingVDown

const uint8_t kHaierAcYrw02SwingVDown = 0xA

## ◆ kHaierAcYrw02SwingVMiddle

const uint8_t kHaierAcYrw02SwingVMiddle = 0x2

## ◆ kHaierAcYrw02SwingVOff

const uint8_t kHaierAcYrw02SwingVOff = 0x0

## ◆ kHaierAcYrw02SwingVTop

const uint8_t kHaierAcYrw02SwingVTop = 0x1