IRremoteESP8266
Loading...
Searching...
No Matches
ir_Kelon.h
Go to the documentation of this file.
1// Copyright 2021 Davide Depau
2// Copyright 2022 Leonardo Ascione (leonardfactory)
3
21
22// Supports:
23// Brand: Kelon, Model: ON/OFF 9000-12000 (KELON)
24// Brand: Kelon, Model: DG11R2-01 remote (KELON168)
25// Brand: Kelon, Model: RCH-R0Y3 remote (KELON168)
26// Brand: Kelon, Model: AST-09UW4RVETG00A A/C (KELON168)
27// Brand: Hisense, Model: AST-09UW4RVETG00A A/C (KELON168)
28
29#ifndef IR_KELON_H_
30#define IR_KELON_H_
31
32#ifdef UNIT_TEST
33#include "IRsend_test.h"
34#endif
35
36#include <algorithm>
37#include <cstring>
38#ifndef ARDUINO
39#include <string>
40#endif
41#include "IRremoteESP8266.h"
42#include "IRsend.h"
43#include "IRutils.h"
44
46 uint64_t raw;
47
48 struct {
49 uint8_t preamble[2];
50 uint8_t Fan: 2;
51 uint8_t PowerToggle: 1;
52 uint8_t SleepEnabled: 1;
54 uint8_t SwingVToggle: 1;
55 uint8_t Mode: 3;
56 uint8_t TimerEnabled: 1;
57 uint8_t Temperature: 4;
58 uint8_t TimerHalfHour: 1;
59 uint8_t TimerHours: 6;
60 uint8_t SmartModeEnabled: 1;
61 uint8_t pad1: 4;
63 uint8_t pad2: 2;
65 };
66};
67
68// Constants
69const uint8_t kKelonModeHeat = 0;
70const uint8_t kKelonModeSmart = 1; // (temp = 26C, but not shown)
71const uint8_t kKelonModeCool = 2;
72const uint8_t kKelonModeDry = 3; // (temp = 25C, but not shown)
73const uint8_t kKelonModeFan = 4; // (temp = 25C, but not shown)
74const uint8_t kKelonFanAuto = 0;
75// Note! Kelon fan speeds are actually 0:AUTO, 1:MAX, 2:MED, 3:MIN
76// Since this is insane, I decided to invert them in the public API, they are
77// converted back in setFan/getFan
78const uint8_t kKelonFanMin = 1;
79const uint8_t kKelonFanMedium = 2;
80const uint8_t kKelonFanMax = 3;
81
82const int8_t kKelonDryGradeMin = -2;
83const int8_t kKelonDryGradeMax = +2;
84const uint8_t kKelonMinTemp = 18;
85const uint8_t kKelonMaxTemp = 32;
86
87
88class IRKelonAc {
89 public:
90 explicit IRKelonAc(uint16_t pin, bool inverted = false,
91 bool use_modulation = true);
92 void stateReset(void);
93 #if SEND_KELON
94 void send(const uint16_t repeat = kNoRepeat);
99 int8_t calibrate(void) { return _irsend.calibrate(); }
104 void ensurePower(const bool on);
105 #endif // SEND_KELON
106
107
108 void begin(void);
109 void setTogglePower(const bool toggle);
110 bool getTogglePower(void) const;
111 void setTemp(const uint8_t degrees);
112 uint8_t getTemp(void) const;
113 void setFan(const uint8_t speed);
114 uint8_t getFan(void) const;
115 void setDryGrade(const int8_t grade);
116 int8_t getDryGrade(void) const;
117 void setMode(const uint8_t mode);
118 uint8_t getMode(void) const;
119 void setToggleSwingVertical(const bool toggle);
120 bool getToggleSwingVertical(void) const;
121 void setSleep(const bool on);
122 bool getSleep(void) const;
123 void setSupercool(const bool on);
124 bool getSupercool(void) const;
125 void setTimer(const uint16_t mins);
126 uint16_t getTimer(void) const;
127 void setTimerEnabled(const bool on);
128 bool getTimerEnabled(void) const;
129 uint64_t getRaw(void) const;
130 void setRaw(const uint64_t new_code);
131 static uint8_t convertMode(const stdAc::opmode_t mode);
132 static uint8_t convertFan(const stdAc::fanspeed_t fan);
133 static stdAc::opmode_t toCommonMode(const uint8_t mode);
134 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
135 stdAc::state_t toCommon(const stdAc::state_t *prev = nullptr) const;
136 String toString(void) const;
137
138 private:
139#ifndef UNIT_TEST
141#else // UNIT_TEST
143 IRsendTest _irsend;
145#endif // UNIT_TEST
147
148 // Used when exiting supercool mode
149 uint8_t _previousMode = 0;
152};
153
154
157
161 struct {
162 // Byte 0~1
163 uint8_t preamble[2]; // Fixed to 0x83, 0x06
164 // Byte 2
165 uint8_t Fan :2;
166 uint8_t Power :1;
167 uint8_t Sleep :1;
168 uint8_t :3; // Not encoded / used, should be dry?
169 uint8_t Swing1 :1;
170 // Byte 3
171 uint8_t Mode :3;
172 uint8_t :1;
173 uint8_t Temp :4;
174 // Byte 4
175 uint8_t :8;
176 // Byte 5
177 uint8_t :4;
178 uint8_t Super1 :1;
179 uint8_t :2;
180 uint8_t Super2 :1;
181 // Byte 6
182 uint8_t ClockHours :5;
183 uint8_t LightOff :1;
184 uint8_t :2;
185 // Byte 7
186 uint8_t ClockMins :6;
187 uint8_t :1;
188 uint8_t OffTimerEnabled :1;
189 // Byte 8
190 uint8_t OffHours :5;
191 uint8_t :1;
192 uint8_t Swing2 :1;
193 uint8_t :1;
194 // Byte 9
195 uint8_t OffMins :6;
196 uint8_t :1;
197 uint8_t OnTimerEnabled :1;
198 // Byte 10
199 uint8_t OnHours :5;
200 uint8_t :3;
201 // Byte 11
202 uint8_t OnMins :6;
203 uint8_t :2;
204 // Byte 12
205 uint8_t :8;
206 // Byte 13
207 uint8_t Sum1 :8;
208 // Byte 14
209 uint8_t :8;
210 // Byte 15
211 uint8_t Cmd :8;
212 // Byte 16
213 uint8_t :1;
214 uint8_t Fan2 :1;
215 uint8_t :6;
216 // Byte 17
217 uint8_t pad1;
218 // Byte 18 (Model1 & Model2 are some fixed bits.
219 // On Whirlpool remotes they indicate the remote model)
220 uint8_t Model1 :4;
221 uint8_t On :1;
222 uint8_t Model2 :3;
223 // Byte 19
224 uint8_t :8;
225 // Byte 20
226 uint8_t Sum2 :8;
227 };
228};
229
230// Constants
231const uint8_t kKelon168ModeHeat = 0;
232const uint8_t kKelon168ModeSmart = 1; // (temp = 26C, but not shown)
233const uint8_t kKelon168ModeCool = 2;
234const uint8_t kKelon168ModeDry = 3; // (temp = 25C, but not shown)
235const uint8_t kKelon168ModeFan = 4; // (temp = 25C, but not shown)
236const uint8_t kKelon168ChecksumByte1 = 13;
238const uint8_t kKelon168Heat = 0;
239const uint8_t kKelon168Auto = 1;
240const uint8_t kKelon168Cool = 2;
241const uint8_t kKelon168Dry = 3;
242const uint8_t kKelon168Fan = 4;
243const uint8_t kKelon168FanAuto = 0;
244const uint8_t kKelon168FanMin = 1; // 0b001
245const uint8_t kKelon168FanLow = 2; // 0b010
246const uint8_t kKelon168FanMedium = 3; // 0b011
247const uint8_t kKelon168FanHigh = 4; // 0b100
248const uint8_t kKelon168FanMax = 5; // 0b101
249const uint8_t kKelon168MinTemp = 16; // 16C (DG11R2-01)
250const uint8_t kKelon168MaxTemp = 32; // 30C (DG11R2-01)
251const uint8_t kKelon168AutoTemp = 23; // 23C
252const uint8_t kKelon168CommandLight = 0x00;
253const uint8_t kKelon168CommandPower = 0x01;
254const uint8_t kKelon168CommandTemp = 0x02;
255const uint8_t kKelon168CommandSleep = 0x03;
256const uint8_t kKelon168CommandSuper = 0x04;
257const uint8_t kKelon168CommandOnTimer = 0x05;
258const uint8_t kKelon168CommandMode = 0x06;
259const uint8_t kKelon168CommandSwing = 0x07;
260const uint8_t kKelon168CommandIFeel = 0x0D;
261const uint8_t kKelon168CommandFanSpeed = 0x11;
262// const uint8_t kKelon168CommandIFeel = 0x17; // ?
263const uint8_t kKelon168CommandOffTimer = 0x1D;
264
266 public:
267 explicit IRKelon168Ac(uint16_t pin, bool inverted = false,
268 bool use_modulation = true);
269
270 #if SEND_KELON168
271 void send(const uint16_t repeat = kKelon168DefaultRepeat,
272 const bool calcChecksum = true);
277 int8_t calibrate(void) { return _irsend.calibrate(); }
278 #endif // SEND_KELON168
279
280 void begin(void);
281 void stateReset(void);
282
283 void setPower(const bool on);
284 bool getPower(void) const;
285 void setSleep(const bool on);
286 bool getSleep(void) const;
287 void setSuper(const bool on);
288 bool getSuper(void) const;
289 void setTemp(const uint8_t temp);
290 uint8_t getTemp(void) const;
291 void setFan(const uint8_t speed);
292 uint8_t getFan(void) const;
293 void setMode(const uint8_t mode);
294 uint8_t getMode(void) const;
295 void setSwing(const bool on);
296 bool getSwing(void) const;
297 void setLight(const bool on);
298 bool getLight(void) const;
299 uint16_t getClock(void) const;
300 void setClock(const uint16_t minsPastMidight);
301 uint16_t getOnTimer(void) const;
302 void setOnTimer(const uint16_t minsPastMidight);
303 void enableOnTimer(const bool on);
304 bool isOnTimerEnabled(void) const;
305 uint16_t getOffTimer(void) const;
306 void setOffTimer(const uint16_t minsPastMidight);
307 void enableOffTimer(const bool on);
308 bool isOffTimerEnabled(void) const;
309 void setCommand(const uint8_t code);
310 uint8_t getCommand(void) const;
312 void setModel(const kelon168_ac_remote_model_t model);
313 uint8_t* getRaw(const bool calcChecksum = true);
314 void setRaw(const uint8_t newCode[],
315 const uint16_t length = kKelon168StateLength);
316 static bool validChecksum(const uint8_t state[],
317 const uint16_t length = kKelon168StateLength);
318 static uint8_t convertMode(const stdAc::opmode_t mode);
319 static uint8_t convertFan(const stdAc::fanspeed_t speed);
320 static stdAc::opmode_t toCommonMode(const uint8_t mode);
321 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
322 stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
323 String toString(void) const;
324#ifndef UNIT_TEST
325
326 private:
328#else // UNIT_TEST
330 IRsendTest _irsend;
332#endif // UNIT_TEST
334
335 uint8_t _desiredtemp;
336 void checksum(const uint16_t length = kWhirlpoolAcStateLength);
337 void _setTemp(const uint8_t temp, const bool remember = true);
338 void _setMode(const uint8_t mode);
339 int8_t getTempOffset(void) const;
340};
341
342#endif // IR_KELON_H_
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
Definition ir_Kelon.h:88
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
Definition ir_Kelon.h:45
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