162 lines
7.1 KiB
C++
162 lines
7.1 KiB
C++
/*
|
|
Mitsubishi Heavy SRKxxZJ-S heatpump control (remote control P/N RKX502A001C)
|
|
*/
|
|
#ifndef MitsubishiHeavyHeatpumpIR_h
|
|
#define MitsubishiHeavyHeatpumpIR_h
|
|
|
|
#include <HeatpumpIR.h>
|
|
|
|
|
|
// Mitsubishi Heavy timing constants
|
|
#define MITSUBISHI_HEAVY_HDR_MARK 3200 // 3200
|
|
#define MITSUBISHI_HEAVY_HDR_SPACE 1600 // 1600
|
|
#define MITSUBISHI_HEAVY_BIT_MARK 400 // 400
|
|
#define MITSUBISHI_HEAVY_ONE_SPACE 1200 // 1200
|
|
#define MITSUBISHI_HEAVY_ZERO_SPACE 400 // 400
|
|
|
|
|
|
// Mitsubishi Heavy codes
|
|
#define MITSUBISHI_HEAVY_MODE_AUTO 0x07 // Operating mode
|
|
#define MITSUBISHI_HEAVY_MODE_HEAT 0x03
|
|
#define MITSUBISHI_HEAVY_MODE_COOL 0x06
|
|
#define MITSUBISHI_HEAVY_MODE_DRY 0x05
|
|
#define MITSUBISHI_HEAVY_MODE_FAN 0x04
|
|
#define MITSUBISHI_HEAVY_ZMP_MODE_FAN 0xD4 //ZMP model seems to have a different value for operating mode 'fan'
|
|
#define MITSUBISHI_HEAVY_ZMP_MODE_MAINT 0x06 //We use the maintenance mode to activate cleaning.
|
|
|
|
#define MITSUBISHI_HEAVY_MODE_OFF 0x08 // Power OFF
|
|
#define MITSUBISHI_HEAVY_MODE_ON 0x00 // Power ON
|
|
|
|
#define MITSUBISHI_HEAVY_ZJ_FAN_AUTO 0xE0 // Fan speed
|
|
#define MITSUBISHI_HEAVY_ZJ_FAN1 0xA0
|
|
#define MITSUBISHI_HEAVY_ZJ_FAN2 0x80
|
|
#define MITSUBISHI_HEAVY_ZJ_FAN3 0x60
|
|
#define MITSUBISHI_HEAVY_ZJ_HIPOWER 0x40
|
|
#define MITSUBISHI_HEAVY_ZJ_ECONO 0x00
|
|
|
|
#define MITSUBISHI_HEAVY_ZM_FAN_AUTO 0x0F // Fan speed
|
|
#define MITSUBISHI_HEAVY_ZM_FAN1 0x0E
|
|
#define MITSUBISHI_HEAVY_ZM_FAN2 0x0D
|
|
#define MITSUBISHI_HEAVY_ZM_FAN3 0x0C
|
|
#define MITSUBISHI_HEAVY_ZM_FAN4 0x0B
|
|
#define MITSUBISHI_HEAVY_ZM_HIPOWER 0x07
|
|
#define MITSUBISHI_HEAVY_ZM_ECONO 0x09
|
|
|
|
#define MITSUBISHI_HEAVY_ZMP_FAN_AUTO 0xE0 // Fan speed
|
|
#define MITSUBISHI_HEAVY_ZMP_FAN1 0xA0
|
|
#define MITSUBISHI_HEAVY_ZMP_FAN2 0x80
|
|
#define MITSUBISHI_HEAVY_ZMP_FAN3 0x60
|
|
#define MITSUBISHI_HEAVY_ZMP_HIPOWER 0x20
|
|
#define MITSUBISHI_HEAVY_ZMP_ECONO 0x00
|
|
|
|
#define MITSUBISHI_HEAVY_CLEAN_ON 0x00
|
|
#define MITSUBISHI_HEAVY_ZMP_CLEAN_ON 0xDF
|
|
#define MITSUBISHI_HEAVY_ZJ_CLEAN_OFF 0x20
|
|
#define MITSUBISHI_HEAVY_ZM_CLEAN_OFF 0x60
|
|
#define MITSUBISHI_HEAVY_ZMP_CLEAN_OFF 0x20
|
|
|
|
#define MITSUBISHI_HEAVY_ZM_3DAUTO_ON 0x00 // Only available in Auto, Cool and Heat mode
|
|
#define MITSUBISHI_HEAVY_ZM_3DAUTO_OFF 0x12
|
|
|
|
#define MITSUBISHI_HEAVY_ZJ_SILENT_ON 0x00
|
|
#define MITSUBISHI_HEAVY_ZM_SILENT_ON 0x00 // NOT available in Fan or Dry mode
|
|
#define MITSUBISHI_HEAVY_ZM_SILENT_OFF 0x80
|
|
#define MITSUBISHI_HEAVY_ZMP_SILENT_ON 0x00
|
|
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_SWING 0x0A // Vertical swing
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_UP 0x02
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_MUP 0x18
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_MIDDLE 0x10
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_MDOWN 0x08
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_DOWN 0x00
|
|
#define MITSUBISHI_HEAVY_ZJ_VS_STOP 0x1A
|
|
|
|
#define MITSUBISHI_HEAVY_ZM_VS_SWING 0xE0 // Vertical swing
|
|
#define MITSUBISHI_HEAVY_ZM_VS_UP 0xC0
|
|
#define MITSUBISHI_HEAVY_ZM_VS_MUP 0xA0
|
|
#define MITSUBISHI_HEAVY_ZM_VS_MIDDLE 0x80
|
|
#define MITSUBISHI_HEAVY_ZM_VS_MDOWN 0x60
|
|
#define MITSUBISHI_HEAVY_ZM_VS_DOWN 0x40
|
|
#define MITSUBISHI_HEAVY_ZM_VS_STOP 0x20
|
|
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_SWING 0x0A // Vertical swing
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_UP 0x02
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_MUP 0x18
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_MIDDLE 0x10
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_MDOWN 0x08
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_DOWN 0x00
|
|
#define MITSUBISHI_HEAVY_ZMP_VS_STOP 0x1A
|
|
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_SWING 0x4C // Horizontal swing - 3D AUTO
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_MIDDLE 0x48
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_LEFT 0xC8
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_MLEFT 0x88
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_MRIGHT 0x08
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_RIGHT 0xC4
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_STOP 0xCC
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_LEFTRIGHT 0x84
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_RIGHTLEFT 0x44
|
|
#define MITSUBISHI_HEAVY_ZJ_HS_3DAUTO 0x04
|
|
|
|
#define MITSUBISHI_HEAVY_ZM_HS_SWING 0x0F // Horizontal swing
|
|
#define MITSUBISHI_HEAVY_ZM_HS_MIDDLE 0x0C
|
|
#define MITSUBISHI_HEAVY_ZM_HS_LEFT 0x0E
|
|
#define MITSUBISHI_HEAVY_ZM_HS_MLEFT 0x0D
|
|
#define MITSUBISHI_HEAVY_ZM_HS_MRIGHT 0x0B
|
|
#define MITSUBISHI_HEAVY_ZM_HS_RIGHT 0x0A
|
|
#define MITSUBISHI_HEAVY_ZM_HS_STOP 0x07
|
|
#define MITSUBISHI_HEAVY_ZM_HS_LEFTRIGHT 0x08
|
|
#define MITSUBISHI_HEAVY_ZM_HS_RIGHTLEFT 0x09
|
|
|
|
//ZMP model does not support horizontal swing
|
|
#define MITSUBISHI_HEAVY_ZMP_HS_STOP 0xCC
|
|
|
|
// MitsubishiHeavy model codes
|
|
#define MITSUBISHIHEAVY_ZJ 0
|
|
#define MITSUBISHIHEAVY_ZM 1
|
|
#define MITSUBISHIHEAVY_ZMP 2
|
|
|
|
|
|
class MitsubishiHeavyHeatpumpIR : public HeatpumpIR
|
|
{
|
|
protected: // Cannot create generic MitsubishiHeavy heatpump instances
|
|
MitsubishiHeavyHeatpumpIR();
|
|
uint8_t _mitsubishiModel; // Tells whether this is ZJ or ZM (or other supported model...)
|
|
|
|
public:
|
|
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd);
|
|
virtual void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool cleanModeCmd, bool silentModeCmd, bool _3DAutoCmd);
|
|
};
|
|
|
|
class MitsubishiHeavyZJHeatpumpIR : public MitsubishiHeavyHeatpumpIR
|
|
{
|
|
public:
|
|
MitsubishiHeavyZJHeatpumpIR();
|
|
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool cleanModeCmd, bool silentModeCmd, bool _3DAutoCmd);
|
|
|
|
private:
|
|
void sendMitsubishiHeavy(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, uint8_t swingV, uint8_t swingH, uint8_t cleanMode);
|
|
};
|
|
|
|
class MitsubishiHeavyZMHeatpumpIR : public MitsubishiHeavyHeatpumpIR
|
|
{
|
|
public:
|
|
MitsubishiHeavyZMHeatpumpIR();
|
|
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool cleanModeCmd, bool silentModeCmd, bool _3DAutoCmd);
|
|
|
|
private:
|
|
void sendMitsubishiHeavy(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, uint8_t swingV, uint8_t swingH, uint8_t cleanMode, uint8_t silentMode, uint8_t _3DAuto);
|
|
};
|
|
|
|
class MitsubishiHeavyZMPHeatpumpIR : public MitsubishiHeavyHeatpumpIR
|
|
{
|
|
public:
|
|
MitsubishiHeavyZMPHeatpumpIR();
|
|
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool cleanModeCmd, bool silentModeCmd, bool _3DAutoCmd);
|
|
|
|
private:
|
|
void sendMitsubishiHeavy(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, uint8_t swingV, uint8_t swingH, uint8_t cleanMode);
|
|
};
|
|
|
|
#endif
|