ir_Mitsubishi.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // Copyright 2009 Ken Shirriff
  2. // Copyright 2017 David Conran
  3. #ifndef IR_MITSUBISHI_H_
  4. #define IR_MITSUBISHI_H_
  5. #define __STDC_LIMIT_MACROS
  6. #include <stdint.h>
  7. #ifndef UNIT_TEST
  8. #include <Arduino.h>
  9. #else
  10. #include <string>
  11. #endif
  12. #include "IRremoteESP8266.h"
  13. #include "IRsend.h"
  14. // MMMMM IIIII TTTTT SSSS U U BBBB IIIII SSSS H H IIIII
  15. // M M M I T S U U B B I S H H I
  16. // M M M I T SSS U U BBBB I SSS HHHHH I
  17. // M M I T S U U B B I S H H I
  18. // M M IIIII T SSSS UUU BBBBB IIIII SSSS H H IIIII
  19. // Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote
  20. // Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran
  21. // Constants
  22. const uint8_t kMitsubishiAcAuto = 0x20;
  23. const uint8_t kMitsubishiAcCool = 0x18;
  24. const uint8_t kMitsubishiAcDry = 0x10;
  25. const uint8_t kMitsubishiAcHeat = 0x08;
  26. const uint8_t kMitsubishiAcPower = 0x20;
  27. const uint8_t kMitsubishiAcFanAuto = 0;
  28. const uint8_t kMitsubishiAcFanMax = 5;
  29. const uint8_t kMitsubishiAcFanRealMax = 4;
  30. const uint8_t kMitsubishiAcFanSilent = 6;
  31. const uint8_t kMitsubishiAcMinTemp = 16; // 16C
  32. const uint8_t kMitsubishiAcMaxTemp = 31; // 31C
  33. const uint8_t kMitsubishiAcVaneAuto = 0;
  34. const uint8_t kMitsubishiAcVaneAutoMove = 7;
  35. const uint8_t kMitsubishiAcNoTimer = 0;
  36. const uint8_t kMitsubishiAcStartTimer = 5;
  37. const uint8_t kMitsubishiAcStopTimer = 3;
  38. const uint8_t kMitsubishiAcStartStopTimer = 7;
  39. // Legacy defines (Deprecated)
  40. #define MITSUBISHI_AC_VANE_AUTO_MOVE kMitsubishiAcVaneAutoMove
  41. #define MITSUBISHI_AC_VANE_AUTO kMitsubishiAcVaneAuto
  42. #define MITSUBISHI_AC_POWER kMitsubishiAcPower
  43. #define MITSUBISHI_AC_MIN_TEMP kMitsubishiAcMinTemp
  44. #define MITSUBISHI_AC_MAX_TEMP kMitsubishiAcMaxTemp
  45. #define MITSUBISHI_AC_HEAT kMitsubishiAcHeat
  46. #define MITSUBISHI_AC_FAN_SILENT kMitsubishiAcFanSilent
  47. #define MITSUBISHI_AC_FAN_REAL_MAX kMitsubishiAcFanRealMax
  48. #define MITSUBISHI_AC_FAN_MAX kMitsubishiAcFanMax
  49. #define MITSUBISHI_AC_FAN_AUTO kMitsubishiAcFanAuto
  50. #define MITSUBISHI_AC_DRY kMitsubishiAcDry
  51. #define MITSUBISHI_AC_COOL kMitsubishiAcCool
  52. #define MITSUBISHI_AC_AUTO kMitsubishiAcAuto
  53. class IRMitsubishiAC {
  54. public:
  55. explicit IRMitsubishiAC(uint16_t pin);
  56. static uint8_t calculateChecksum(uint8_t* data);
  57. void stateReset();
  58. #if SEND_MITSUBISHI_AC
  59. void send();
  60. #endif // SEND_MITSUBISHI_AC
  61. void begin();
  62. void on();
  63. void off();
  64. void setPower(bool state);
  65. bool getPower();
  66. void setTemp(uint8_t temp);
  67. uint8_t getTemp();
  68. void setFan(uint8_t fan);
  69. uint8_t getFan();
  70. void setMode(uint8_t mode);
  71. uint8_t getMode();
  72. void setVane(uint8_t mode);
  73. uint8_t getVane();
  74. uint8_t* getRaw();
  75. void setRaw(uint8_t* data);
  76. uint8_t getClock();
  77. void setClock(uint8_t clock);
  78. uint8_t getStartClock();
  79. void setStartClock(uint8_t clock);
  80. uint8_t getStopClock();
  81. void setStopClock(uint8_t clock);
  82. uint8_t getTimer();
  83. void setTimer(uint8_t timer);
  84. #ifdef ARDUINO
  85. String toString();
  86. #else
  87. std::string toString();
  88. #endif
  89. private:
  90. #ifdef ARDUINO
  91. String timeToString(uint64_t time);
  92. #else
  93. std::string timeToString(uint64_t time);
  94. #endif
  95. uint8_t remote_state[kMitsubishiACStateLength];
  96. void checksum();
  97. IRsend _irsend;
  98. };
  99. #endif // IR_MITSUBISHI_H_