46#define __STDC_LIMIT_MACROS
54#include "IRsend_test.h"
156#define MIDEA_AC_COOL kMideaACCool
157#define MIDEA_AC_DRY kMideaACDry
158#define MIDEA_AC_AUTO kMideaACAuto
159#define MIDEA_AC_HEAT kMideaACHeat
160#define MIDEA_AC_FAN kMideaACFan
161#define MIDEA_AC_FAN_AUTO kMideaACFanAuto
162#define MIDEA_AC_FAN_LOW kMideaACFanLow
163#define MIDEA_AC_FAN_MED kMideaACFanMed
164#define MIDEA_AC_FAN_HI kMideaACFanHigh
165#define MIDEA_AC_POWER kMideaACPower
166#define MIDEA_AC_SLEEP kMideaACSleep
167#define MIDEA_AC_MIN_TEMP_F kMideaACMinTempF
168#define MIDEA_AC_MAX_TEMP_F kMideaACMaxTempF
169#define MIDEA_AC_MIN_TEMP_C kMideaACMinTempC
170#define MIDEA_AC_MAX_TEMP_C kMideaACMaxTempC
177 explicit IRMideaAC(
const uint16_t pin,
const bool inverted =
false,
178 const bool use_modulation =
true);
195 void setTemp(
const uint8_t temp,
const bool useCelsius =
false);
196 uint8_t
getTemp(
const bool useCelsius =
false)
const;
197 void setSensorTemp(
const uint8_t temp,
const bool useCelsius =
false);
201 void setFan(
const uint8_t fan);
202 uint8_t
getFan(
void)
const;
203 void setMode(
const uint8_t mode);
205 void setRaw(
const uint64_t newState);
235 void setQuiet(
const bool on,
const bool prev);
273 void setType(
const uint8_t type);
const uint16_t kMideaMinRepeat
Definition IRremoteESP8266.h:1334
std::string String
Definition IRremoteESP8266.h:1564
Class for handling detailed Midea A/C messages.
Definition ir_Midea.h:175
void setTurboToggle(const bool on)
Set the A/C to toggle the Turbo mode for the next send.
Definition ir_Midea.cpp:398
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Midea.cpp:615
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Midea.cpp:602
void setSwingVStep(const bool on)
Set the A/C to step the vertical swing for the next send.
Definition ir_Midea.cpp:363
bool isOffTimerEnabled(void) const
Is the OffTimer enabled?
Definition ir_Midea.cpp:578
uint8_t getType(void) const
Get the message type setting of the A/C message.
Definition ir_Midea.cpp:529
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition ir_Midea.cpp:330
void setUseCelsius(const bool celsius)
Set the A/C unit to use Celsius natively.
Definition ir_Midea.cpp:195
void setOffTimer(const uint16_t mins)
Set the value of the Off Timer.
Definition ir_Midea.cpp:591
bool isEconoToggle(void) const
Is the current state an Econo (energy saver) toggle message?
Definition ir_Midea.cpp:385
uint16_t getOffTimer(void) const
Get the value of the OffTimer is currently set to.
Definition ir_Midea.cpp:584
bool _Quiet_prev
Definition ir_Midea.h:265
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Midea.cpp:173
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Midea.cpp:336
bool _EconoToggle
Definition ir_Midea.h:261
bool getEnableSensorTemp(void) const
Is the remote temperature sensor enabled?
Definition ir_Midea.cpp:292
uint8_t getTemp(const bool useCelsius=false) const
Get the current temperature setting.
Definition ir_Midea.cpp:227
bool getQuiet(void) const
Definition ir_Midea.cpp:492
bool getTurboToggle(void)
Definition ir_Midea.cpp:408
bool isSwingVStep(void) const
Is the current state a step vertical swing message?
Definition ir_Midea.cpp:367
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Midea.cpp:302
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Midea.cpp:314
uint8_t getSensorTemp(const bool useCelsius=false) const
Get the current Sensor temperature setting.
Definition ir_Midea.cpp:265
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Midea.h:186
bool get8CHeatToggle(void)
Definition ir_Midea.cpp:466
void checksum(void)
Calculate & set the checksum for the current internal state of the remote.
Definition ir_Midea.cpp:522
void setTemp(const uint8_t temp, const bool useCelsius=false)
Set the temperature.
Definition ir_Midea.cpp:206
MideaProtocol _
Definition ir_Midea.h:259
String toString(void)
Convert the current internal state into a human readable string.
Definition ir_Midea.cpp:692
uint16_t getOnTimer(void) const
Get the value of the OnTimer is currently set to.
Definition ir_Midea.cpp:556
bool getSwingVToggle(void)
Definition ir_Midea.cpp:355
bool isSwingVToggle(void) const
Is the current state a vertical swing toggle message?
Definition ir_Midea.cpp:348
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition ir_Midea.cpp:296
bool is8CHeatToggle(void) const
Is the current state a 8C Heat (Freeze Protect) toggle message?
Definition ir_Midea.cpp:453
bool isOnTimerEnabled(void) const
Is the OnTimer enabled?
Definition ir_Midea.cpp:549
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Midea.cpp:654
bool _CleanToggle
Definition ir_Midea.h:260
bool _Quiet
Definition ir_Midea.h:264
void setCleanToggle(const bool on)
Set the A/C to toggle the Self Clean mode for the next send.
Definition ir_Midea.cpp:439
bool getEconoToggle(void)
Definition ir_Midea.cpp:391
bool getLightToggle(void)
Definition ir_Midea.cpp:425
bool getUseCelsius(void) const
Is the device currently using Celsius or the Fahrenheit temp scale?
Definition ir_Midea.cpp:189
void setSwingVToggle(const bool on)
Set the A/C to toggle the vertical swing toggle for the next send.
Definition ir_Midea.cpp:343
void setLightToggle(const bool on)
Set the A/C to toggle the Light (LED) mode for the next send.
Definition ir_Midea.cpp:415
bool _TurboToggle
Definition ir_Midea.h:270
void setType(const uint8_t type)
Set the message type setting of the A/C message.
Definition ir_Midea.cpp:533
void setEnableSensorTemp(const bool on)
Enable the remote's Sensor temperature.
Definition ir_Midea.cpp:279
bool _SwingVStep
Definition ir_Midea.h:268
bool isCleanToggle(void) const
Is the current state a Self-Clean toggle message?
Definition ir_Midea.cpp:432
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition ir_Midea.cpp:517
void setSensorTemp(const uint8_t temp, const bool useCelsius=false)
Set the Sensor temperature.
Definition ir_Midea.cpp:242
void setOnTimer(const uint16_t mins)
Set the value of the On Timer.
Definition ir_Midea.cpp:567
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Midea.cpp:308
bool getCleanToggle(void)
Definition ir_Midea.cpp:445
bool isQuiet(void) const
Is the current state a Quiet(Silent) message?
Definition ir_Midea.cpp:473
void setRaw(const uint64_t newState)
Set the internal state from a valid code for this protocol.
Definition ir_Midea.cpp:167
bool _LightToggle
Definition ir_Midea.h:263
void setPower(const bool on)
Change the power setting.
Definition ir_Midea.cpp:177
bool getSwingVStep(void)
Definition ir_Midea.cpp:373
bool isLightToggle(void) const
Is the current state a Light (LED) toggle message?
Definition ir_Midea.cpp:419
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Midea.cpp:629
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Midea.cpp:117
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition ir_Midea.cpp:502
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Midea.cpp:101
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Midea.cpp:642
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Midea.cpp:183
bool _SwingVToggle
Definition ir_Midea.h:266
uint64_t getRaw(void)
Get a copy of the internal state/code for this protocol.
Definition ir_Midea.cpp:160
IRsend _irsend
Instance of the IR send class.
Definition ir_Midea.h:253
bool isTurboToggle(void) const
Is the current state a Turbo toggle message?
Definition ir_Midea.cpp:402
void setQuiet(const bool on)
Set the Quiet (Silent) mode for the next send.
Definition ir_Midea.cpp:480
void setEconoToggle(const bool on)
Set the A/C to toggle the Econo (energy saver) mode for the next send.
Definition ir_Midea.cpp:381
void set8CHeatToggle(const bool on)
Set the A/C to toggle the 8C Heat (Freeze Protect) mode for the next send.
Definition ir_Midea.cpp:460
bool _8CHeatToggle
Definition ir_Midea.h:262
void send(const uint16_t repeat=kMideaMinRepeat)
Send the current internal state as an IR message.
Definition ir_Midea.cpp:122
void on(void)
Set the requested power state of the A/C to on.
Definition ir_Midea.cpp:170
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 kMideaACSensorTempOnTimerOff
Definition ir_Midea.h:118
const uint64_t kMideaACQuietOn
Definition ir_Midea.h:148
const uint64_t kMideaACSwingVStep
Definition ir_Midea.h:132
const uint8_t kMideaACTypeFollow
Message type.
Definition ir_Midea.h:153
const uint8_t kMideaACMinTempF
Fahrenheit.
Definition ir_Midea.h:110
const uint8_t kMideaACMaxTempC
Celsius.
Definition ir_Midea.h:113
const uint64_t kMideaACQuietOff
Definition ir_Midea.h:149
const uint8_t kMideaACFanAuto
Definition ir_Midea.h:125
const uint8_t kMideaACAuto
Definition ir_Midea.h:122
const uint64_t kMideaACToggleTurbo
Definition ir_Midea.h:143
const uint64_t kMideaACToggleSwingV
Definition ir_Midea.h:131
const uint8_t kMideaACTypeCommand
Message type.
Definition ir_Midea.h:151
const uint8_t kMideaACMaxSensorTempF
Fahrenheit (Guess only!)
Definition ir_Midea.h:117
const uint64_t kMideaACToggleLight
Definition ir_Midea.h:142
const uint8_t kMideaACMaxSensorTempC
Celsius.
Definition ir_Midea.h:115
const uint8_t kMideaACDry
Definition ir_Midea.h:121
const uint8_t kMideaACFanLow
Definition ir_Midea.h:126
const uint8_t kMideaACFanMed
Definition ir_Midea.h:127
const uint8_t kMideaACCool
Definition ir_Midea.h:120
const uint8_t kMideaACFanHigh
Definition ir_Midea.h:128
const uint8_t kMideaACHeat
Definition ir_Midea.h:123
const uint8_t kMideaACMinSensorTempF
Fahrenheit.
Definition ir_Midea.h:116
const uint64_t kMideaACToggleSelfClean
Definition ir_Midea.h:145
const uint8_t kMideaACMaxTempF
Fahrenheit.
Definition ir_Midea.h:111
const uint8_t kMideaACFan
Definition ir_Midea.h:124
kSwingVToggleStr
Definition ir_Midea.h:139
const uint64_t kMideaACToggle8CHeat
Definition ir_Midea.h:147
const uint8_t kMideaACMinTempC
Celsius.
Definition ir_Midea.h:112
const uint8_t kMideaACTimerOff
Definition ir_Midea.h:119
const uint8_t kMideaACTypeSpecial
Message type.
Definition ir_Midea.h:152
const uint8_t kMideaACMinSensorTempC
Celsius.
Definition ir_Midea.h:114
const uint64_t kMideaACToggleEcono
Definition ir_Midea.h:141
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 Midea A/C message.
Definition ir_Midea.h:71
uint8_t Fan
Definition ir_Midea.h:97
uint8_t useFahrenheit
Definition ir_Midea.h:93
uint8_t disableSensor
Definition ir_Midea.h:86
uint8_t BeepDisable
0 = no beep in follow me messages, 1 = beep.
Definition ir_Midea.h:90
uint8_t SensorTemp
Degrees or OnTimer.
Definition ir_Midea.h:85
uint8_t Sum
Definition ir_Midea.h:76
uint8_t Temp
Definition ir_Midea.h:92
uint8_t Power
Definition ir_Midea.h:102
uint8_t Header
Typically 0b10100.
Definition ir_Midea.h:105
uint64_t remote_state
The state in native IR code form.
Definition ir_Midea.h:72
uint8_t Mode
Definition ir_Midea.h:96
uint8_t Type
Normal, Special, or FollowMe message type.
Definition ir_Midea.h:104
uint8_t Sleep
Definition ir_Midea.h:101
uint8_t OffTimer
Nr of Half hours. Off is 0b111111.
Definition ir_Midea.h:89