33#include "IRsend_test.h"
90 explicit IRKelonAc(uint16_t pin,
bool inverted =
false,
91 bool use_modulation =
true);
111 void setTemp(
const uint8_t degrees);
113 void setFan(
const uint8_t speed);
114 uint8_t
getFan(
void)
const;
117 void setMode(
const uint8_t mode);
129 uint64_t
getRaw(
void)
const;
130 void setRaw(
const uint64_t new_code);
267 explicit IRKelon168Ac(uint16_t pin,
bool inverted =
false,
268 bool use_modulation =
true);
272 const bool calcChecksum =
true);
289 void setTemp(
const uint8_t temp);
291 void setFan(
const uint8_t speed);
292 uint8_t
getFan(
void)
const;
293 void setMode(
const uint8_t mode);
300 void setClock(
const uint16_t minsPastMidight);
302 void setOnTimer(
const uint16_t minsPastMidight);
313 uint8_t*
getRaw(
const bool calcChecksum =
true);
314 void setRaw(
const uint8_t newCode[],
337 void _setTemp(
const uint8_t temp,
const bool remember =
true);
const uint16_t kWhirlpoolAcStateLength
Definition IRremoteESP8266.h:1446
const uint16_t kKelon168DefaultRepeat
Definition IRremoteESP8266.h:1318
const uint16_t kNoRepeat
Definition IRremoteESP8266.h:1172
const uint16_t kKelon168StateLength
Definition IRremoteESP8266.h:1316
std::string String
Definition IRremoteESP8266.h:1564
kelon168_ac_remote_model_t
Definition IRsend.h:217
Definition ir_Kelon.h:265
uint16_t getClock(void) const
Get the clock time in nr. of minutes past midnight.
Definition ir_Kelon.cpp:827
uint16_t getOnTimer(void) const
Get the On Timer time..
Definition ir_Kelon.cpp:864
void setPower(const bool on)
Change the power setting.
Definition ir_Kelon.cpp:883
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Kelon.cpp:1011
bool getSuper(void) const
Get the Super (Turbo/Jet) setting of the A/C.
Definition ir_Kelon.cpp:942
uint8_t getFan(void) const
Get the current fan speed setting. The encoding is distributed across two bits, middle values (2 Low ...
Definition ir_Kelon.cpp:779
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Kelon.cpp:970
Kelon168Protocol _
Definition ir_Kelon.h:333
void checksum(const uint16_t length=kWhirlpoolAcStateLength)
Calculate & set the checksum for the current internal state of the remote.
Definition ir_Kelon.cpp:622
void enableOnTimer(const bool on)
Enable the On Timer.
Definition ir_Kelon.cpp:876
bool getPower(void) const
Get the value of the current power toggle setting.
Definition ir_Kelon.cpp:892
bool isOnTimerEnabled(void) const
Is the On timer enabled?
Definition ir_Kelon.cpp:870
bool getSwing(void) const
Get the (vertical) swing setting of the A/C.
Definition ir_Kelon.cpp:802
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Kelon.cpp:595
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Kelon.cpp:904
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Kelon.cpp:701
void setLight(const bool on)
Set the Light (Display/LED) setting of the A/C.
Definition ir_Kelon.cpp:808
String toString(void) const
Convert the current internal state into a human readable string.
Definition ir_Kelon.cpp:1046
uint8_t _desiredtemp
The last user explicitly set temperature.
Definition ir_Kelon.h:335
void setCommand(const uint8_t code)
Set the Command (Button) setting of the A/C.
Definition ir_Kelon.cpp:948
void enableOffTimer(const bool on)
Enable the Off Timer.
Definition ir_Kelon.cpp:851
IRsend _irsend
Instance of the IR send class.
Definition ir_Kelon.h:327
void _setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Kelon.cpp:708
bool getLight(void) const
Get the Light (Display/LED) setting of the A/C.
Definition ir_Kelon.cpp:815
bool isOffTimerEnabled(void) const
Is the Off timer enabled?
Definition ir_Kelon.cpp:845
void setClock(const uint16_t minsPastMidight)
Set the clock time in nr. of minutes past midnight.
Definition ir_Kelon.cpp:821
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Kelon.h:277
void setModel(const kelon168_ac_remote_model_t model)
Set the model of the A/C to emulate.
Definition ir_Kelon.cpp:663
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Kelon.cpp:912
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Kelon.cpp:955
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Kelon.cpp:730
void setSuper(const bool on)
Set the Super (Turbo/Jet) setting of the A/C.
Definition ir_Kelon.cpp:918
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Kelon.cpp:997
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Kelon.cpp:984
void send(const uint16_t repeat=kKelon168DefaultRepeat, const bool calcChecksum=true)
Send the current internal state as an IR message.
Definition ir_Kelon.cpp:634
void setOnTimer(const uint16_t minsPastMidight)
Set the On Timer time.
Definition ir_Kelon.cpp:858
uint8_t * getRaw(const bool calcChecksum=true)
Get a copy of the internal state/code for this protocol.
Definition ir_Kelon.cpp:643
void setRaw(const uint8_t newCode[], const uint16_t length=kKelon168StateLength)
Set the internal state from a valid code for this protocol.
Definition ir_Kelon.cpp:651
uint8_t getCommand(void) const
Get the Command (Button) setting of the A/C.
Definition ir_Kelon.cpp:898
void setSwing(const bool on)
Set the (vertical) swing setting of the A/C.
Definition ir_Kelon.cpp:794
int8_t getTempOffset(void) const
Calculate the temp. offset in deg C for the current model. Actually not used, but left for eventual s...
Definition ir_Kelon.cpp:675
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Kelon.cpp:693
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Kelon.cpp:737
void _setTemp(const uint8_t temp, const bool remember=true)
Set the temperature.
Definition ir_Kelon.cpp:683
static bool validChecksum(const uint8_t state[], const uint16_t length=kKelon168StateLength)
Verify the checksum is valid for a given state.
Definition ir_Kelon.cpp:601
void setOffTimer(const uint16_t minsPastMidight)
Set the Off Timer time.
Definition ir_Kelon.cpp:833
uint16_t getOffTimer(void) const
Get the Off Timer time..
Definition ir_Kelon.cpp:839
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Kelon.cpp:743
kelon168_ac_remote_model_t getModel(void) const
Get/Detect the model of the A/C. Actually only one remote type is supported.
Definition ir_Kelon.cpp:657
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Kelon.cpp:585
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Kelon.cpp:156
void setMode(const uint8_t mode)
Set the desired operation mode.
Definition ir_Kelon.cpp:221
void setTimerEnabled(const bool on)
Enable or disable the timer. Note that in order to enable the timer the minutes must be set with setT...
Definition ir_Kelon.cpp:329
void setToggleSwingVertical(const bool toggle)
Request toggling the vertical swing - will be reset to false after sending.
Definition ir_Kelon.cpp:260
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.
Definition ir_Kelon.cpp:347
uint8_t getMode(void) const
Get the current operation mode setting.
Definition ir_Kelon.cpp:256
stdAc::state_t toCommon(const stdAc::state_t *prev=nullptr) const
Convert the internal A/C object state to it's stdAc::state_t equivalent.
Definition ir_Kelon.cpp:398
void stateReset(void)
Reset the internals of the object to a known good state.
Definition ir_Kelon.cpp:104
uint16_t getTimer(void) const
Get the set timer. Timer set time is deleted once the command is sent, so calling this after send() w...
Definition ir_Kelon.cpp:319
bool getToggleSwingVertical(void) const
Get whether the swing mode is set to be toggled.
Definition ir_Kelon.cpp:266
bool getTimerEnabled(void) const
Get the current timer status.
Definition ir_Kelon.cpp:333
IRsend _irsend
Instance of the IR send class.
Definition ir_Kelon.h:140
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed to it's stdAc::fanspeed_t equivalent.
Definition ir_Kelon.cpp:387
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Kelon.cpp:181
uint64_t getRaw(void) const
Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
Definition ir_Kelon.cpp:338
void setTogglePower(const bool toggle)
Request toggling power - will be reset to false after sending.
Definition ir_Kelon.cpp:160
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Kelon.cpp:177
uint8_t _previousTemp
Definition ir_Kelon.h:150
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Kelon.h:99
int8_t getDryGrade(void) const
Get the current dehumidification intensity setting. In smart mode, this controls the temperature adju...
Definition ir_Kelon.cpp:214
uint8_t _previousFan
Definition ir_Kelon.h:151
void setSleep(const bool on)
Control the current sleep (quiet) setting.
Definition ir_Kelon.cpp:270
void setSupercool(const bool on)
Control the current super cool mode setting.
Definition ir_Kelon.cpp:278
bool getTogglePower(void) const
Get whether toggling power will be requested.
Definition ir_Kelon.cpp:164
bool getSupercool(void) const
Is the super cool mode setting on?
Definition ir_Kelon.cpp:293
void ensurePower(const bool on)
Since the AC does not support actually setting the power state to a known value, this utility allow e...
Definition ir_Kelon.cpp:130
String toString(void) const
Convert the internal settings into a human readable string.
Definition ir_Kelon.cpp:429
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Kelon.cpp:192
static uint8_t convertFan(const stdAc::fanspeed_t fan)
Convert a standard A/C fan speed (stdAc::fanspeed_t) into it a native speed.
Definition ir_Kelon.cpp:360
void setTimer(const uint16_t mins)
Set the timer time and enable it. Timer is an off timer if the unit is on, it is an on timer if the u...
Definition ir_Kelon.cpp:299
void setDryGrade(const int8_t grade)
Set the dehumidification intensity.
Definition ir_Kelon.cpp:198
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's stdAc::opmode_t equivalent.
Definition ir_Kelon.cpp:374
KelonProtocol _
Definition ir_Kelon.h:146
void setTemp(const uint8_t degrees)
Set the temperature setting.
Definition ir_Kelon.cpp:168
void send(const uint16_t repeat=kNoRepeat)
Send the current internal state as an IR message.
Definition ir_Kelon.cpp:114
void setRaw(const uint64_t new_code)
Set the raw state of the object.
Definition ir_Kelon.cpp:342
bool getSleep(void) const
Is the sleep setting on?
Definition ir_Kelon.cpp:274
uint8_t _previousMode
Definition ir_Kelon.h:149
Class for sending all basic IR protocols.
Definition IRsend.h:249
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:209
const uint8_t kKelon168CommandSleep
Definition ir_Kelon.h:255
const uint8_t kKelonMaxTemp
Definition ir_Kelon.h:85
const uint8_t kKelonModeSmart
Definition ir_Kelon.h:70
const uint8_t kKelon168CommandFanSpeed
Definition ir_Kelon.h:261
const uint8_t kKelon168ModeSmart
Definition ir_Kelon.h:232
const uint8_t kKelon168FanHigh
Definition ir_Kelon.h:247
const uint8_t kKelon168FanMin
Definition ir_Kelon.h:244
const uint8_t kKelon168CommandOnTimer
Definition ir_Kelon.h:257
const uint8_t kKelon168ChecksumByte1
Definition ir_Kelon.h:236
const uint8_t kKelon168MinTemp
Definition ir_Kelon.h:249
const uint8_t kKelon168FanMax
Definition ir_Kelon.h:248
const uint8_t kKelonModeFan
Definition ir_Kelon.h:73
const uint8_t kKelon168CommandMode
Definition ir_Kelon.h:258
const uint8_t kKelon168ModeDry
Definition ir_Kelon.h:234
const uint8_t kKelonFanMax
Definition ir_Kelon.h:80
const uint8_t kKelonModeDry
Definition ir_Kelon.h:72
const uint8_t kKelon168MaxTemp
Definition ir_Kelon.h:250
const uint8_t kKelon168Heat
Definition ir_Kelon.h:238
const uint8_t kKelon168FanMedium
Definition ir_Kelon.h:246
const uint8_t kKelonFanAuto
Definition ir_Kelon.h:74
const uint8_t kKelon168CommandTemp
Definition ir_Kelon.h:254
const uint8_t kKelon168Auto
Definition ir_Kelon.h:239
const uint8_t kKelon168Dry
Definition ir_Kelon.h:241
const uint8_t kKelon168FanLow
Definition ir_Kelon.h:245
const uint8_t kKelon168FanAuto
Definition ir_Kelon.h:243
const uint8_t kKelonModeHeat
Definition ir_Kelon.h:69
const uint8_t kKelonFanMedium
Definition ir_Kelon.h:79
const uint8_t kKelon168CommandSwing
Definition ir_Kelon.h:259
const uint8_t kKelonModeCool
Definition ir_Kelon.h:71
const uint8_t kKelon168CommandPower
Definition ir_Kelon.h:253
const int8_t kKelonDryGradeMax
Definition ir_Kelon.h:83
const uint8_t kKelon168Fan
Definition ir_Kelon.h:242
const uint8_t kKelonMinTemp
Definition ir_Kelon.h:84
const uint8_t kKelon168CommandOffTimer
Definition ir_Kelon.h:263
const uint8_t kKelon168Cool
Definition ir_Kelon.h:240
const uint8_t kKelon168ModeHeat
Definition ir_Kelon.h:231
const uint8_t kKelon168ChecksumByte2
Definition ir_Kelon.h:237
const uint8_t kKelonFanMin
Definition ir_Kelon.h:78
const int8_t kKelonDryGradeMin
Definition ir_Kelon.h:82
const uint8_t kKelon168CommandIFeel
Definition ir_Kelon.h:260
const uint8_t kKelon168AutoTemp
Definition ir_Kelon.h:251
const uint8_t kKelon168ModeCool
Definition ir_Kelon.h:233
const uint8_t kKelon168ModeFan
Definition ir_Kelon.h:235
const uint8_t kKelon168CommandSuper
Definition ir_Kelon.h:256
const uint8_t kKelon168CommandLight
Definition ir_Kelon.h:252
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:61
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:49
Structure to hold a common A/C state.
Definition IRsend.h:114
Native representation of a Kelon 168 bit A/C message.
Definition ir_Kelon.h:159
uint8_t OffTimerEnabled
Definition ir_Kelon.h:188
uint8_t OnTimerEnabled
Definition ir_Kelon.h:197
uint8_t ClockMins
Definition ir_Kelon.h:186
uint8_t LightOff
Definition ir_Kelon.h:183
uint8_t Sleep
Definition ir_Kelon.h:167
uint8_t Swing1
Definition ir_Kelon.h:169
uint8_t Temp
Definition ir_Kelon.h:173
uint8_t Sum2
Definition ir_Kelon.h:226
uint8_t Super1
Definition ir_Kelon.h:178
uint8_t raw[kKelon168StateLength]
The state in native form.
Definition ir_Kelon.h:160
uint8_t preamble[2]
Definition ir_Kelon.h:163
uint8_t Model2
Definition ir_Kelon.h:222
uint8_t Fan2
Definition ir_Kelon.h:214
uint8_t Cmd
Definition ir_Kelon.h:211
uint8_t pad1
Definition ir_Kelon.h:217
uint8_t Power
Definition ir_Kelon.h:166
uint8_t Mode
Definition ir_Kelon.h:171
uint8_t Swing2
Definition ir_Kelon.h:192
uint8_t On
Definition ir_Kelon.h:221
uint8_t ClockHours
Definition ir_Kelon.h:182
uint8_t OffMins
Definition ir_Kelon.h:195
uint8_t OnMins
Definition ir_Kelon.h:202
uint8_t Super2
Definition ir_Kelon.h:180
uint8_t OffHours
Definition ir_Kelon.h:190
uint8_t OnHours
Definition ir_Kelon.h:199
uint8_t Sum1
Definition ir_Kelon.h:207
uint8_t Model1
Definition ir_Kelon.h:220
uint8_t Fan
Definition ir_Kelon.h:165
uint8_t SmartModeEnabled
Definition ir_Kelon.h:60
uint8_t pad2
Definition ir_Kelon.h:63
uint8_t SuperCoolEnabled2
Definition ir_Kelon.h:64
uint8_t SuperCoolEnabled1
Definition ir_Kelon.h:62
uint8_t SwingVToggle
Definition ir_Kelon.h:54
uint8_t PowerToggle
Definition ir_Kelon.h:51
uint64_t raw
Definition ir_Kelon.h:46
uint8_t Fan
Definition ir_Kelon.h:50
uint8_t TimerHalfHour
Definition ir_Kelon.h:58
uint8_t TimerHours
Definition ir_Kelon.h:59
uint8_t preamble[2]
Definition ir_Kelon.h:49
uint8_t pad1
Definition ir_Kelon.h:61
uint8_t SleepEnabled
Definition ir_Kelon.h:52
uint8_t Temperature
Definition ir_Kelon.h:57
uint8_t DehumidifierGrade
Definition ir_Kelon.h:53
uint8_t TimerEnabled
Definition ir_Kelon.h:56
uint8_t Mode
Definition ir_Kelon.h:55