IRremoteESP8266
Loading...
Searching...
No Matches
ir_Mitsubishi.h
Go to the documentation of this file.
1// Copyright 2009 Ken Shirriff
2// Copyright 2017-2021 David Conran
3// Copyright 2019 Mark Kuchel
4
19
20// Supports:
21// Brand: Mitsubishi, Model: TV (MITSUBISHI)
22// Brand: Mitsubishi, Model: HC3000 Projector (MITSUBISHI2)
23// Brand: Mitsubishi, Model: MS-GK24VA A/C
24// Brand: Mitsubishi, Model: KM14A 0179213 remote
25// Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
26// Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote (MITSUBISHI136)
27// Brand: Mitsubishi Electric, Model: MSH-A24WV A/C (MITSUBISHI112)
28// Brand: Mitsubishi Electric, Model: MUH-A24WV A/C (MITSUBISHI112)
29// Brand: Mitsubishi Electric, Model: KPOA remote (MITSUBISHI112)
30// Brand: Mitsubishi Electric, Model: MLZ-RX5017AS A/C (MITSUBISHI_AC)
31// Brand: Mitsubishi Electric, Model: SG153/M21EDF426 remote (MITSUBISHI_AC)
32// Brand: Mitsubishi Electric, Model: MSZ-GV2519 A/C (MITSUBISHI_AC)
33// Brand: Mitsubishi Electric, Model: RH151/M21ED6426 remote (MITSUBISHI_AC)
34// Brand: Mitsubishi Electric, Model: MSZ-SF25VE3 A/C (MITSUBISHI_AC)
35// Brand: Mitsubishi Electric, Model: SG15D remote (MITSUBISHI_AC)
36// Brand: Mitsubishi Electric, Model: MSZ-ZW4017S A/C (MITSUBISHI_AC)
37// Brand: Mitsubishi Electric, Model: MSZ-FHnnVE A/C (MITSUBISHI_AC)
38// Brand: Mitsubishi Electric, Model: RH151 remote (MITSUBISHI_AC)
39// Brand: Mitsubishi Electric, Model: PAR-FA32MA remote (MITSUBISHI136)
40
41#ifndef IR_MITSUBISHI_H_
42#define IR_MITSUBISHI_H_
43
44#define __STDC_LIMIT_MACROS
45#include <stdint.h>
46#ifndef UNIT_TEST
47#include <Arduino.h>
48#endif
49#include "IRremoteESP8266.h"
50#include "IRsend.h"
51#ifdef UNIT_TEST
52#include "IRsend_test.h"
53#endif
54
58 struct {
59 // Byte 0~4
60 uint8_t pad0[5];
61 // Byte 5
62 uint8_t :5;
63 uint8_t Power :1;
64 uint8_t :2;
65 // Byte 6
66 uint8_t :3;
67 uint8_t Mode :3;
68 uint8_t ISee : 1;
69 uint8_t :1;
70 // Byte 7
71 uint8_t Temp :4;
72 uint8_t HalfDegree :1;
73 uint8_t :3;
74 // Byte 8
75 uint8_t :4;
76 uint8_t WideVane:4; // SwingH
77 // Byte 9
78 uint8_t Fan :3;
79 uint8_t Vane :3; // SwingV or VaneRight
80 uint8_t VaneBit :1;
81 uint8_t FanAuto :1;
82 // Byte 10
83 uint8_t Clock :8;
84 // Byte 11
85 uint8_t StopClock :8;
86 // Byte 12
87 uint8_t StartClock:8;
88 // Byte 13
89 uint8_t Timer :3;
90 uint8_t WeeklyTimer :1;
91 uint8_t :4;
92 // Byte 14
93 uint8_t :5;
94 uint8_t Ecocool :1;
95 uint8_t :2;
96 // Byte 15
97 uint8_t DirectIndirect:2;
98 uint8_t AbsenseDetect :1;
99 uint8_t :2;
100 uint8_t iSave10C :1; // i-SAVE:mode=Heat & iSave=on AND 10C on remote
101 uint8_t :2;
102 // Byte 16
103 uint8_t :1;
104 uint8_t NaturalFlow :1;
105 uint8_t :1;
106 uint8_t VaneLeft :3; // SwingV(Left)
107 uint8_t :2;
108 // Byte 17
109 uint8_t Sum :8;
110 };
111};
112
113// Constants
114const uint8_t kMitsubishiAcAuto = 0b100;
115const uint8_t kMitsubishiAcCool = 0b011;
116const uint8_t kMitsubishiAcDry = 0b010;
117const uint8_t kMitsubishiAcHeat = 0b001;
118const uint8_t kMitsubishiAcFan = 0b111;
119const uint8_t kMitsubishiAcFanAuto = 0;
120const uint8_t kMitsubishiAcFanMax = 5;
121const uint8_t kMitsubishiAcFanRealMax = 4;
122const uint8_t kMitsubishiAcFanSilent = 6;
124const float kMitsubishiAcMinTemp = 16.0; // 16C
125const float kMitsubishiAcMaxTemp = 31.0; // 31C
126const uint8_t kMitsubishiAcVaneAuto = 0b000; // Vanes move when AC wants to.
127const uint8_t kMitsubishiAcVaneHighest = 0b001;
128const uint8_t kMitsubishiAcVaneHigh = 0b010;
129const uint8_t kMitsubishiAcVaneMiddle = 0b011;
130const uint8_t kMitsubishiAcVaneLow = 0b100;
131const uint8_t kMitsubishiAcVaneLowest = 0b101;
132const uint8_t kMitsubishiAcVaneSwing = 0b111; // Vanes move all the time.
134const uint8_t kMitsubishiAcWideVaneLeftMax = 0b0001; // 1
135const uint8_t kMitsubishiAcWideVaneLeft = 0b0010; // 2
136const uint8_t kMitsubishiAcWideVaneMiddle = 0b0011; // 3
137const uint8_t kMitsubishiAcWideVaneRight = 0b0100; // 4
138const uint8_t kMitsubishiAcWideVaneRightMax = 0b0101; // 5
139const uint8_t kMitsubishiAcWideVaneWide = 0b0110; // 6
140const uint8_t kMitsubishiAcWideVaneAuto = 0b1000; // 8
141const uint8_t kMitsubishiAcDirectOff = 0b00; // Vanes move when AC wants to.
142const uint8_t kMitsubishiAcIndirect = 0b01;
143const uint8_t kMitsubishiAcDirect = 0b11;
144const uint8_t kMitsubishiAcNoTimer = 0;
145const uint8_t kMitsubishiAcStartTimer = 5;
146const uint8_t kMitsubishiAcStopTimer = 3;
148
152 struct {
153 // Byte 0~4
154 uint8_t pad[5];
155 // Byte 5
156 uint8_t :6;
157 uint8_t Power :1;
158 uint8_t :1;
159 // Byte 6
160 uint8_t Mode :3;
161 uint8_t :1;
162 uint8_t Temp :4;
163 // Byte 7
164 uint8_t :1;
165 uint8_t Fan :2;
166 uint8_t :1;
167 uint8_t SwingV :4;
168 };
169};
170
171const uint8_t kMitsubishi136PowerByte = 5;
172const uint8_t kMitsubishi136MinTemp = 17; // 17C
173const uint8_t kMitsubishi136MaxTemp = 30; // 30C
174const uint8_t kMitsubishi136Fan = 0b000;
175const uint8_t kMitsubishi136Cool = 0b001;
176const uint8_t kMitsubishi136Heat = 0b010;
177const uint8_t kMitsubishi136Auto = 0b011;
178const uint8_t kMitsubishi136Dry = 0b101;
179const uint8_t kMitsubishi136SwingVLowest = 0b0000;
180const uint8_t kMitsubishi136SwingVLow = 0b0001;
181const uint8_t kMitsubishi136SwingVHigh = 0b0010;
182const uint8_t kMitsubishi136SwingVHighest = 0b0011;
183const uint8_t kMitsubishi136SwingVAuto = 0b1100;
184const uint8_t kMitsubishi136FanMin = 0b00;
185const uint8_t kMitsubishi136FanLow = 0b01;
186const uint8_t kMitsubishi136FanMed = 0b10;
187const uint8_t kMitsubishi136FanMax = 0b11;
189
193 struct {
194 // Byte 0~4
195 uint8_t pad0[5];
196 // Byte 5
197 uint8_t :2;
198 uint8_t Power :1;
199 uint8_t :5;
200 // Byte 6
201 uint8_t Mode :3;
202 uint8_t :5;
203 // Byte 7
204 uint8_t Temp :4;
205 uint8_t :4;
206 // Byte 8
207 uint8_t Fan :3;
208 uint8_t SwingV :3;
209 uint8_t :2;
210 // Byte 9~11
211 uint8_t pad1[3];
212 // Byte 12
213 uint8_t :2;
214 uint8_t SwingH :4;
215 uint8_t :2;
216 // Byte 13
217 uint8_t Sum :8;
218 };
219};
220
221const uint8_t kMitsubishi112Cool = 0b011;
222const uint8_t kMitsubishi112Heat = 0b001;
223const uint8_t kMitsubishi112Auto = 0b111;
224const uint8_t kMitsubishi112Dry = 0b010;
225
226const uint8_t kMitsubishi112MinTemp = 16; // 16C
227const uint8_t kMitsubishi112MaxTemp = 31; // 31C
228
229const uint8_t kMitsubishi112FanMin = 0b010;
230const uint8_t kMitsubishi112FanLow = 0b011;
231const uint8_t kMitsubishi112FanMed = 0b101;
232const uint8_t kMitsubishi112FanMax = 0b000;
234const uint8_t kMitsubishi112SwingVLowest = 0b101;
235const uint8_t kMitsubishi112SwingVLow = 0b100;
236const uint8_t kMitsubishi112SwingVMiddle = 0b011;
237const uint8_t kMitsubishi112SwingVHigh = 0b010;
238const uint8_t kMitsubishi112SwingVHighest = 0b001;
239const uint8_t kMitsubishi112SwingVAuto = 0b111;
240
241const uint8_t kMitsubishi112SwingHLeftMax = 0b0001;
242const uint8_t kMitsubishi112SwingHLeft = 0b0010;
243const uint8_t kMitsubishi112SwingHMiddle = 0b0011;
244const uint8_t kMitsubishi112SwingHRight = 0b0100;
245const uint8_t kMitsubishi112SwingHRightMax = 0b0101;
246const uint8_t kMitsubishi112SwingHWide = 0b1000;
247const uint8_t kMitsubishi112SwingHAuto = 0b1100;
248
249// Legacy defines (Deprecated)
250#define MITSUBISHI_AC_VANE_AUTO_MOVE kMitsubishiAcVaneAutoMove
251#define MITSUBISHI_AC_VANE_AUTO kMitsubishiAcVaneAuto
252#define MITSUBISHI_AC_MIN_TEMP kMitsubishiAcMinTemp
253#define MITSUBISHI_AC_MAX_TEMP kMitsubishiAcMaxTemp
254#define MITSUBISHI_AC_HEAT kMitsubishiAcHeat
255#define MITSUBISHI_AC_FAN_SILENT kMitsubishiAcFanSilent
256#define MITSUBISHI_AC_FAN_REAL_MAX kMitsubishiAcFanRealMax
257#define MITSUBISHI_AC_FAN_MAX kMitsubishiAcFanMax
258#define MITSUBISHI_AC_FAN_AUTO kMitsubishiAcFanAuto
259#define MITSUBISHI_AC_DRY kMitsubishiAcDry
260#define MITSUBISHI_AC_COOL kMitsubishiAcCool
261#define MITSUBISHI_AC_AUTO kMitsubishiAcAuto
262
263
268 public:
269 explicit IRMitsubishiAC(const uint16_t pin, const bool inverted = false,
270 const bool use_modulation = true);
271 void stateReset(void);
272 static bool validChecksum(const uint8_t* data);
273#if SEND_MITSUBISHI_AC
274 void send(const uint16_t repeat = kMitsubishiACMinRepeat);
279 int8_t calibrate(void) { return _irsend.calibrate(); }
280#endif // SEND_MITSUBISHI_AC
281 void begin(void);
282 void on(void);
283 void off(void);
284 void setPower(const bool on);
285 bool getPower(void) const;
286 void setTemp(const float degrees);
287 float getTemp(void) const;
288 void setFan(const uint8_t speed);
289 uint8_t getFan(void) const;
290 void setMode(const uint8_t mode);
291 uint8_t getMode(void) const;
292 void setISave10C(const bool state);
293 bool getISave10C(void) const;
294 void setISee(const bool state);
295 bool getISee(void) const;
296 void setDirectIndirect(const uint8_t position);
297 uint8_t getDirectIndirect(void) const;
298 void setEcocool(const bool state);
299 bool getEcocool(void) const;
300 void setAbsenseDetect(const bool state);
301 bool getAbsenseDetect(void) const;
302 void setNaturalFlow(const bool state);
303 bool getNaturalFlow(void) const;
304 void setVane(const uint8_t position); // controls RIGHT vane on some models
305 uint8_t getVane(void) const;
306 void setVaneLeft(const uint8_t position);
307 uint8_t getVaneLeft(void) const;
308 void setWideVane(const uint8_t position);
309 uint8_t getWideVane(void) const;
310 uint8_t* getRaw(void);
311 void setRaw(const uint8_t* data);
312 uint8_t getClock(void) const;
313 void setClock(const uint8_t clock);
314 uint8_t getStartClock(void) const;
315 void setStartClock(const uint8_t clock);
316 uint8_t getStopClock(void) const;
317 void setStopClock(const uint8_t clock);
318 uint8_t getTimer(void) const;
319 void setTimer(const uint8_t timer);
320 bool getWeeklyTimerEnabled(void) const;
321 void setWeeklyTimerEnabled(const bool on);
322 static uint8_t convertMode(const stdAc::opmode_t mode);
323 static uint8_t convertFan(const stdAc::fanspeed_t speed);
324 static uint8_t convertSwingV(const stdAc::swingv_t position);
325 static uint8_t convertSwingH(const stdAc::swingh_t position);
326 static stdAc::opmode_t toCommonMode(const uint8_t mode);
327 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
328 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
329 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
330 stdAc::state_t toCommon(void) const;
331 String toString(void) const;
332#ifndef UNIT_TEST
333
334 private:
336#else // UNIT_TEST
338 IRsendTest _irsend;
340#endif // UNIT_TEST
342 void checksum(void);
343 static uint8_t calculateChecksum(const uint8_t* data);
344};
345
348 public:
349 explicit IRMitsubishi136(const uint16_t pin, const bool inverted = false,
350 const bool use_modulation = true);
351 void stateReset(void);
352#if SEND_MITSUBISHI136
353 void send(const uint16_t repeat = kMitsubishi136MinRepeat);
358 int8_t calibrate(void) { return _irsend.calibrate(); }
359#endif // SEND_MITSUBISHI136
360 void begin(void);
361 static bool validChecksum(const uint8_t* data,
362 const uint16_t len = kMitsubishi136StateLength);
363 void on(void);
364 void off(void);
365 void setPower(const bool on);
366 bool getPower(void) const;
367 void setTemp(const uint8_t degrees);
368 uint8_t getTemp(void) const;
369 void setFan(const uint8_t speed);
370 uint8_t getFan(void) const;
371 void setMode(const uint8_t mode);
372 uint8_t getMode(void) const;
373 void setSwingV(const uint8_t position);
374 uint8_t getSwingV(void) const;
375 void setQuiet(const bool on);
376 bool getQuiet(void) const;
377 uint8_t* getRaw(void);
378 void setRaw(const uint8_t* data);
379 static uint8_t convertMode(const stdAc::opmode_t mode);
380 static uint8_t convertFan(const stdAc::fanspeed_t speed);
381 static uint8_t convertSwingV(const stdAc::swingv_t position);
382 static stdAc::opmode_t toCommonMode(const uint8_t mode);
383 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
384 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
385 stdAc::state_t toCommon(void) const;
386 String toString(void) const;
387#ifndef UNIT_TEST
388
389 private:
391#else // UNIT_TEST
393 IRsendTest _irsend;
395#endif // UNIT_TEST
397 void checksum(void);
398};
399
402 public:
403 explicit IRMitsubishi112(const uint16_t pin, const bool inverted = false,
404 const bool use_modulation = true);
405 void stateReset(void);
406#if SEND_MITSUBISHI112
407 void send(const uint16_t repeat = kMitsubishi112MinRepeat);
412 int8_t calibrate(void) { return _irsend.calibrate(); }
413#endif // SEND_MITSUBISHI112
414 void begin(void);
415 void on(void);
416 void off(void);
417 void setPower(const bool on);
418 bool getPower(void) const;
419 void setTemp(const uint8_t degrees);
420 uint8_t getTemp(void) const;
421 void setFan(const uint8_t speed);
422 uint8_t getFan(void) const;
423 void setMode(const uint8_t mode);
424 uint8_t getMode(void) const;
425 void setSwingV(const uint8_t position);
426 uint8_t getSwingV(void) const;
427 void setSwingH(const uint8_t position);
428 uint8_t getSwingH(void) const;
429 void setQuiet(const bool on);
430 bool getQuiet(void) const;
431 uint8_t* getRaw(void);
432 void setRaw(const uint8_t* data);
433 static uint8_t convertMode(const stdAc::opmode_t mode);
434 static uint8_t convertFan(const stdAc::fanspeed_t speed);
435 static uint8_t convertSwingV(const stdAc::swingv_t position);
436 static uint8_t convertSwingH(const stdAc::swingh_t position);
437 static stdAc::opmode_t toCommonMode(const uint8_t mode);
438 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
439 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
440 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
441 stdAc::state_t toCommon(void) const;
442 String toString(void) const;
443#ifndef UNIT_TEST
444
445 private:
447#else // UNIT_TEST
449 IRsendTest _irsend;
451#endif // UNIT_TEST
453 void checksum(void);
454};
455
456#endif // IR_MITSUBISHI_H_
const uint16_t kMitsubishi136StateLength
Definition IRremoteESP8266.h:1347
const uint16_t kMitsubishiACMinRepeat
Definition IRremoteESP8266.h:1346
const uint16_t kMitsubishi136MinRepeat
Definition IRremoteESP8266.h:1349
const uint16_t kMitsubishi112StateLength
Definition IRremoteESP8266.h:1350
const uint16_t kMitsubishi112MinRepeat
Definition IRremoteESP8266.h:1352
const uint16_t kMitsubishiACStateLength
Definition IRremoteESP8266.h:1344
std::string String
Definition IRremoteESP8266.h:1564
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition ir_Mitsubishi.h:401
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:1434
void setTemp(const uint8_t degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:1426
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:1420
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:1414
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:1690
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:1467
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1634
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1648
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:1455
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:1383
bool getQuiet(void) const
Get the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1545
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:1565
uint8_t getSwingV(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1502
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:1402
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:1395
Mitsubishi112Protocol _
Definition ir_Mitsubishi.h:452
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition ir_Mitsubishi.cpp:1378
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1609
void send(const uint16_t repeat=kMitsubishi112MinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:1388
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1579
void setSwingH(const uint8_t position)
Set the Horizontal Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1508
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:1370
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1535
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:1552
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1621
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1593
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1410
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:1440
uint8_t getSwingH(void) const
Get the Horizontal Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1528
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:1662
void on(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1407
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:412
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:1461
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1484
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:446
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition ir_Mitsubishi.h:347
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1081
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1159
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:1058
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:1046
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:1026
uint8_t getSwingV(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1098
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1016
void send(const uint16_t repeat=kMitsubishi136MinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:994
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:1119
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:1020
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1145
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:1001
static bool validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
Verify the checksum is valid for a given state.
Definition ir_Mitsubishi.cpp:976
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:956
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1104
void on(void)
Set the requested power state of the A/C to on.
Definition ir_Mitsubishi.cpp:1013
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:358
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:1132
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:1223
bool getQuiet(void) const
Get the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1112
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition ir_Mitsubishi.cpp:966
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:1064
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1172
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:1040
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:989
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:1008
void setTemp(const uint8_t degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:1032
Mitsubishi136Protocol _
Definition ir_Mitsubishi.h:396
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1185
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:390
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:1197
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:1052
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition ir_Mitsubishi.h:267
void setWideVane(const uint8_t position)
Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.
Definition ir_Mitsubishi.cpp:583
void setTemp(const float degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:393
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:380
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:747
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:342
void setStopClock(const uint8_t clock)
Set the desired stop time of the A/C unit.
Definition ir_Mitsubishi.cpp:625
void setStartClock(const uint8_t clock)
Set the desired start time of the A/C unit.
Definition ir_Mitsubishi.cpp:613
void send(const uint16_t repeat=kMitsubishiACMinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:335
void on(void)
Set the requested power state of the A/C to on.
Definition ir_Mitsubishi.cpp:373
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:443
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:819
void setEcocool(const bool state)
Set the requested Ecocool mode.
Definition ir_Mitsubishi.cpp:504
Mitsubishi144Protocol _
Definition ir_Mitsubishi.h:341
uint8_t getVaneLeft(void) const
Get the Left Vane (Vertical Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:579
bool getAbsenseDetect(void) const
Get the Absense Detect mode of the A/C.
Definition ir_Mitsubishi.cpp:522
void setISave10C(const bool state)
Set the iSave10C (i-SAVE) mode of the A/C.
Definition ir_Mitsubishi.cpp:478
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:415
void setNaturalFlow(const bool state)
Set the requested Natural Flow mode.
Definition ir_Mitsubishi.cpp:544
uint8_t getVane(void) const
Get the Vane (Vertical Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:567
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:663
uint8_t getTimer(void) const
Get the timers active setting of the A/C.
Definition ir_Mitsubishi.cpp:634
void setVaneLeft(const uint8_t position)
Set the requested Left Vane (Vertical Swing) operation mode of the a/c unit.
Definition ir_Mitsubishi.cpp:573
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:335
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:437
uint8_t getWideVane(void) const
Get the Wide Vane (Horizontal Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:589
bool getWeeklyTimerEnabled(void) const
Get the value of the WeeklyTimer Enabled setting.
Definition ir_Mitsubishi.cpp:815
void setClock(const uint8_t clock)
Set the clock time on the A/C unit.
Definition ir_Mitsubishi.cpp:601
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Mitsubishi.cpp:354
bool getEcocool(void) const
Get the Ecocool mode of the A/C.
Definition ir_Mitsubishi.cpp:510
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:718
bool getISave10C(void) const
Get the iSave10C (i-SAVE) mode of the A/C.
Definition ir_Mitsubishi.cpp:486
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:702
bool getNaturalFlow(void) const
Get the Natural Flow mode of the A/C.
Definition ir_Mitsubishi.cpp:550
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:650
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:320
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:279
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:330
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:731
static uint8_t calculateChecksum(const uint8_t *data)
Calculate the checksum for a given state.
Definition ir_Mitsubishi.cpp:368
uint8_t getStartClock(void) const
Get the desired start time of the A/C unit.
Definition ir_Mitsubishi.cpp:608
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:680
bool getISee(void) const
Get the iSee mode of the A/C.
Definition ir_Mitsubishi.cpp:498
void setVane(const uint8_t position)
Set the requested vane (Vertical Swing) operation mode of the a/c unit.
Definition ir_Mitsubishi.cpp:558
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:386
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:376
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:349
void setWeeklyTimerEnabled(const bool on)
Change the Weekly Timer Enabled setting.
Definition ir_Mitsubishi.cpp:809
void setTimer(const uint8_t timer)
Set the timers active setting of the A/C.
Definition ir_Mitsubishi.cpp:643
uint8_t getClock(void) const
Get the clock time of the A/C unit.
Definition ir_Mitsubishi.cpp:596
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:769
static bool validChecksum(const uint8_t *data)
Verify the checksum is valid for a given state.
Definition ir_Mitsubishi.cpp:361
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:429
uint8_t getDirectIndirect(void) const
Get the Direct/Indirect mode of the A/C.
Definition ir_Mitsubishi.cpp:538
void setAbsenseDetect(const bool state)
Set the requested Absense Detect mode.
Definition ir_Mitsubishi.cpp:516
float getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:409
void setDirectIndirect(const uint8_t position)
Set the requested Direct/Indirect mode. Only works if I-See mode is ON.
Definition ir_Mitsubishi.cpp:528
void setISee(const bool state)
Set the requested iSee mode.
Definition ir_Mitsubishi.cpp:492
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:783
uint8_t getStopClock(void) const
Get the desired stop time of the A/C unit.
Definition ir_Mitsubishi.cpp:620
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 kMitsubishiAcVaneSwing
Definition ir_Mitsubishi.h:132
const uint8_t kMitsubishi112SwingVMiddle
Definition ir_Mitsubishi.h:236
const uint8_t kMitsubishiAcNoTimer
Definition ir_Mitsubishi.h:144
const uint8_t kMitsubishi136SwingVLow
Definition ir_Mitsubishi.h:180
const uint8_t kMitsubishiAcVaneAuto
Definition ir_Mitsubishi.h:126
const uint8_t kMitsubishi112SwingVHighest
Definition ir_Mitsubishi.h:238
const uint8_t kMitsubishi112SwingVAuto
Definition ir_Mitsubishi.h:239
const uint8_t kMitsubishiAcAuto
Definition ir_Mitsubishi.h:114
const uint8_t kMitsubishi112SwingHRightMax
Definition ir_Mitsubishi.h:245
const uint8_t kMitsubishiAcWideVaneAuto
Definition ir_Mitsubishi.h:140
const uint8_t kMitsubishiAcVaneMiddle
Definition ir_Mitsubishi.h:129
const uint8_t kMitsubishi112Heat
Definition ir_Mitsubishi.h:222
const uint8_t kMitsubishi136FanMin
Definition ir_Mitsubishi.h:184
const uint8_t kMitsubishi136MaxTemp
Definition ir_Mitsubishi.h:173
const uint8_t kMitsubishiAcVaneAutoMove
Definition ir_Mitsubishi.h:133
const uint8_t kMitsubishiAcIndirect
Definition ir_Mitsubishi.h:142
const uint8_t kMitsubishiAcFanAuto
Definition ir_Mitsubishi.h:119
const uint8_t kMitsubishi136SwingVHigh
Definition ir_Mitsubishi.h:181
const uint8_t kMitsubishiAcStartTimer
Definition ir_Mitsubishi.h:145
const uint8_t kMitsubishiAcCool
Definition ir_Mitsubishi.h:115
const uint8_t kMitsubishi136FanMax
Definition ir_Mitsubishi.h:187
const uint8_t kMitsubishi136Fan
Definition ir_Mitsubishi.h:174
const uint8_t kMitsubishi112SwingHLeftMax
Definition ir_Mitsubishi.h:241
const uint8_t kMitsubishi112Dry
Definition ir_Mitsubishi.h:224
const uint8_t kMitsubishi112FanLow
Definition ir_Mitsubishi.h:230
const uint8_t kMitsubishiAcDirectOff
Definition ir_Mitsubishi.h:141
const uint8_t kMitsubishi112SwingVLow
Definition ir_Mitsubishi.h:235
const uint8_t kMitsubishiAcWideVaneRight
Definition ir_Mitsubishi.h:137
const uint8_t kMitsubishi112FanMax
Definition ir_Mitsubishi.h:232
const uint8_t kMitsubishi136SwingVHighest
Definition ir_Mitsubishi.h:182
const uint8_t kMitsubishi136MinTemp
Definition ir_Mitsubishi.h:172
const uint8_t kMitsubishiAcStopTimer
Definition ir_Mitsubishi.h:146
const uint8_t kMitsubishiAcVaneHigh
Definition ir_Mitsubishi.h:128
const uint8_t kMitsubishiAcHeat
Definition ir_Mitsubishi.h:117
const uint8_t kMitsubishiAcWideVaneWide
Definition ir_Mitsubishi.h:139
const uint8_t kMitsubishi112Auto
Definition ir_Mitsubishi.h:223
const uint8_t kMitsubishiAcFanSilent
Definition ir_Mitsubishi.h:122
const uint8_t kMitsubishi136FanMed
Definition ir_Mitsubishi.h:186
const uint8_t kMitsubishi112SwingHRight
Definition ir_Mitsubishi.h:244
const uint8_t kMitsubishi112SwingHMiddle
Definition ir_Mitsubishi.h:243
const uint8_t kMitsubishiAcFan
Definition ir_Mitsubishi.h:118
const uint8_t kMitsubishiAcWideVaneLeft
Definition ir_Mitsubishi.h:135
const uint8_t kMitsubishi136SwingVAuto
Definition ir_Mitsubishi.h:183
const uint8_t kMitsubishi112SwingHLeft
Definition ir_Mitsubishi.h:242
const uint8_t kMitsubishiAcVaneHighest
Definition ir_Mitsubishi.h:127
const uint8_t kMitsubishiAcFanQuiet
Definition ir_Mitsubishi.h:123
const uint8_t kMitsubishi136Heat
Definition ir_Mitsubishi.h:176
const uint8_t kMitsubishi136Cool
Definition ir_Mitsubishi.h:175
const uint8_t kMitsubishiAcDry
Definition ir_Mitsubishi.h:116
const uint8_t kMitsubishiAcDirect
Definition ir_Mitsubishi.h:143
const uint8_t kMitsubishiAcFanRealMax
Definition ir_Mitsubishi.h:121
const float kMitsubishiAcMaxTemp
Definition ir_Mitsubishi.h:125
const uint8_t kMitsubishi112FanMed
Definition ir_Mitsubishi.h:231
const uint8_t kMitsubishi112Cool
Definition ir_Mitsubishi.h:221
const uint8_t kMitsubishi136SwingVLowest
Definition ir_Mitsubishi.h:179
const uint8_t kMitsubishiAcWideVaneMiddle
Definition ir_Mitsubishi.h:136
const uint8_t kMitsubishiAcWideVaneRightMax
Definition ir_Mitsubishi.h:138
const uint8_t kMitsubishi112SwingHAuto
Definition ir_Mitsubishi.h:247
const uint8_t kMitsubishi112SwingVHigh
Definition ir_Mitsubishi.h:237
const uint8_t kMitsubishiAcFanMax
Definition ir_Mitsubishi.h:120
const uint8_t kMitsubishi112SwingVLowest
Definition ir_Mitsubishi.h:234
const uint8_t kMitsubishi136PowerByte
Definition ir_Mitsubishi.h:171
const uint8_t kMitsubishiAcVaneLow
Definition ir_Mitsubishi.h:130
const uint8_t kMitsubishi112MinTemp
Definition ir_Mitsubishi.h:226
const uint8_t kMitsubishi136Dry
Definition ir_Mitsubishi.h:178
const uint8_t kMitsubishi112FanMin
Definition ir_Mitsubishi.h:229
const float kMitsubishiAcMinTemp
Definition ir_Mitsubishi.h:124
const uint8_t kMitsubishiAcWideVaneLeftMax
Definition ir_Mitsubishi.h:134
const uint8_t kMitsubishi112FanQuiet
Definition ir_Mitsubishi.h:233
const uint8_t kMitsubishi136Auto
Definition ir_Mitsubishi.h:177
const uint8_t kMitsubishiAcVaneLowest
Definition ir_Mitsubishi.h:131
const uint8_t kMitsubishiAcStartStopTimer
Definition ir_Mitsubishi.h:147
const uint8_t kMitsubishi136FanLow
Definition ir_Mitsubishi.h:185
const uint8_t kMitsubishi136FanQuiet
Definition ir_Mitsubishi.h:188
const uint8_t kMitsubishi112SwingHWide
Definition ir_Mitsubishi.h:246
const uint8_t kMitsubishi112MaxTemp
Definition ir_Mitsubishi.h:227
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
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:100
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:74
Structure to hold a common A/C state.
Definition IRsend.h:114
Native representation of a Mitsubishi 112-bit A/C message.
Definition ir_Mitsubishi.h:191
uint8_t SwingH
Definition ir_Mitsubishi.h:214
uint8_t pad0[5]
Definition ir_Mitsubishi.h:195
uint8_t Sum
Definition ir_Mitsubishi.h:217
uint8_t SwingV
Definition ir_Mitsubishi.h:208
uint8_t Temp
Definition ir_Mitsubishi.h:204
uint8_t Power
Definition ir_Mitsubishi.h:198
uint8_t raw[kMitsubishi112StateLength]
The state in code form.
Definition ir_Mitsubishi.h:192
uint8_t Mode
Definition ir_Mitsubishi.h:201
uint8_t Fan
Definition ir_Mitsubishi.h:207
uint8_t pad1[3]
Definition ir_Mitsubishi.h:211
Native representation of a Mitsubishi 136-bit A/C message.
Definition ir_Mitsubishi.h:150
uint8_t SwingV
Definition ir_Mitsubishi.h:167
uint8_t Mode
Definition ir_Mitsubishi.h:160
uint8_t pad[5]
Definition ir_Mitsubishi.h:154
uint8_t Power
Definition ir_Mitsubishi.h:157
uint8_t Temp
Definition ir_Mitsubishi.h:162
uint8_t raw[kMitsubishi136StateLength]
The state in code form.
Definition ir_Mitsubishi.h:151
uint8_t Fan
Definition ir_Mitsubishi.h:165
Native representation of a Mitsubishi 144-bit A/C message.
Definition ir_Mitsubishi.h:56
uint8_t Fan
Definition ir_Mitsubishi.h:78
uint8_t ISee
Definition ir_Mitsubishi.h:68
uint8_t Temp
Definition ir_Mitsubishi.h:71
uint8_t Timer
Definition ir_Mitsubishi.h:89
uint8_t StartClock
Definition ir_Mitsubishi.h:87
uint8_t WeeklyTimer
Definition ir_Mitsubishi.h:90
uint8_t FanAuto
Definition ir_Mitsubishi.h:81
uint8_t Sum
Definition ir_Mitsubishi.h:109
uint8_t iSave10C
Definition ir_Mitsubishi.h:100
uint8_t HalfDegree
Definition ir_Mitsubishi.h:72
uint8_t Clock
Definition ir_Mitsubishi.h:83
uint8_t Ecocool
Definition ir_Mitsubishi.h:94
uint8_t pad0[5]
Definition ir_Mitsubishi.h:60
uint8_t NaturalFlow
Definition ir_Mitsubishi.h:104
uint8_t StopClock
Definition ir_Mitsubishi.h:85
uint8_t AbsenseDetect
Definition ir_Mitsubishi.h:98
uint8_t Mode
Definition ir_Mitsubishi.h:67
uint8_t raw[kMitsubishiACStateLength]
The state in code form.
Definition ir_Mitsubishi.h:57
uint8_t VaneBit
Definition ir_Mitsubishi.h:80
uint8_t WideVane
Definition ir_Mitsubishi.h:76
uint8_t DirectIndirect
Definition ir_Mitsubishi.h:97
uint8_t VaneLeft
Definition ir_Mitsubishi.h:106
uint8_t Vane
Definition ir_Mitsubishi.h:79
uint8_t Power
Definition ir_Mitsubishi.h:63