Heating, maintenance and turbo modes for Carrier #2 (Qlima)
This commit is contained in:
parent
4df8f1ea16
commit
81bb077dca
|
@ -22,7 +22,7 @@ CarrierNQVHeatpumpIR::CarrierNQVHeatpumpIR() : CarrierHeatpumpIR()
|
|||
CarrierMCAHeatpumpIR::CarrierMCAHeatpumpIR() : CarrierHeatpumpIR()
|
||||
{
|
||||
static const char PROGMEM model[] PROGMEM = "carrier_mca";
|
||||
static const char PROGMEM info[] PROGMEM = "{\"mdl\":\"carrier_mca\",\"dn\":\"Carrier MCA\",\"mT\":17,\"xT\":30,\"fs\":4}";
|
||||
static const char PROGMEM info[] PROGMEM = "{\"mdl\":\"carrier_mca\",\"dn\":\"Carrier MCA\",\"mT\":17,\"xT\":30,\"fs\":4, \"maint\":[10]}";
|
||||
|
||||
_model = model;
|
||||
_info = info;
|
||||
|
@ -189,6 +189,12 @@ void CarrierNQVHeatpumpIR::sendCarrier(IRSender& IR, uint8_t operatingMode, uint
|
|||
}
|
||||
|
||||
void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd)
|
||||
{
|
||||
send(IR, powerModeCmd, operatingModeCmd, fanSpeedCmd, temperatureCmd, swingVCmd, swingHCmd, false);
|
||||
}
|
||||
|
||||
|
||||
void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool turboMode)
|
||||
{
|
||||
(void)swingVCmd;
|
||||
(void)swingHCmd;
|
||||
|
@ -199,6 +205,7 @@ void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t oper
|
|||
uint8_t operatingMode = CARRIER_AIRCON2_MODE_COOL;
|
||||
uint8_t fanSpeed = CARRIER_AIRCON2_FAN_AUTO;
|
||||
uint8_t temperature = 23;
|
||||
bool maintenanceMode = false;
|
||||
|
||||
if (powerModeCmd == POWER_OFF)
|
||||
{
|
||||
|
@ -218,6 +225,9 @@ void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t oper
|
|||
case MODE_COOL:
|
||||
operatingMode = CARRIER_AIRCON2_MODE_COOL;
|
||||
break;
|
||||
case MODE_HEAT:
|
||||
operatingMode = CARRIER_AIRCON2_MODE_HEAT;
|
||||
break;
|
||||
case MODE_DRY:
|
||||
operatingMode = CARRIER_AIRCON2_MODE_DRY;
|
||||
fanSpeed = CARRIER_AIRCON2_FAN_DRY_AUTO; // Fan speed is always 'AUTO' in DRY mode
|
||||
|
@ -226,6 +236,9 @@ void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t oper
|
|||
operatingMode = CARRIER_AIRCON2_MODE_FAN;
|
||||
temperature = 31; // Temperature is always 31 in FAN mode
|
||||
break;
|
||||
case MODE_MAINT:
|
||||
maintenanceMode = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (operatingModeCmd != MODE_AUTO
|
||||
|
@ -255,12 +268,15 @@ void CarrierMCAHeatpumpIR::send(IRSender& IR, uint8_t powerModeCmd, uint8_t oper
|
|||
}
|
||||
}
|
||||
|
||||
sendCarrier(IR, powerMode, operatingMode, fanSpeed, temperature);
|
||||
sendCarrier(IR, powerMode, operatingMode, fanSpeed, temperature, maintenanceMode, turboMode);
|
||||
}
|
||||
|
||||
void CarrierMCAHeatpumpIR::sendCarrier(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature)
|
||||
void CarrierMCAHeatpumpIR::sendCarrier(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, bool maintenanceMode, bool turboMode)
|
||||
{
|
||||
uint8_t sendBuffer[] = { 0x4D, 0xB2, 0xD8, 0x00, 0x00, 0x00 };
|
||||
static const uint8_t sendBufferMaintenance[] PROGMEM = { 0xAD, 0x52, 0xAF, 0x50, 0x55, 0xAA };
|
||||
static const uint8_t sendBufferTurbo[] PROGMEM = { 0xAD, 0x52, 0xAF, 0x50, 0x45, 0xBA };
|
||||
|
||||
static const uint8_t temperatures[] PROGMEM = { 0, 8, 12, 4, 6, 14, 10, 2, 3, 11, 9, 1, 5, 13, 7 };
|
||||
|
||||
sendBuffer[2] |= powerMode | fanSpeed;
|
||||
|
@ -272,6 +288,16 @@ void CarrierMCAHeatpumpIR::sendCarrier(IRSender& IR, uint8_t powerMode, uint8_t
|
|||
sendBuffer[3] = ~sendBuffer[2];
|
||||
sendBuffer[5] = ~sendBuffer[4];
|
||||
|
||||
// Maintenance or turbo mode overide
|
||||
if (maintenanceMode)
|
||||
{
|
||||
memcpy_P(sendBuffer, sendBufferMaintenance, sizeof(sendBufferMaintenance));
|
||||
}
|
||||
if (turboMode)
|
||||
{
|
||||
memcpy_P(sendBuffer, sendBufferTurbo, sizeof(sendBufferTurbo));
|
||||
}
|
||||
|
||||
// 38 kHz PWM frequency
|
||||
IR.setFrequency(38);
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
Carrier 42NQV035G / 38NYV035H2 heatpump control (remote control P/N WH-L05SE)
|
||||
Carrier 42MCA009515LS A/C control (remote control P/N R11CG/E)
|
||||
* Qlima (remote control P/N ABS10FP)
|
||||
*/
|
||||
#ifndef CarrierHeatpumpIR_h
|
||||
#define CarrierHeatpumpIR_h
|
||||
|
@ -41,6 +42,7 @@
|
|||
#define CARRIER_AIRCON2_MODE_COOL 0x00
|
||||
#define CARRIER_AIRCON2_MODE_DRY 0x20
|
||||
#define CARRIER_AIRCON2_MODE_FAN 0x20
|
||||
#define CARRIER_AIRCON2_MODE_HEAT 0x30
|
||||
#define CARRIER_AIRCON2_MODE_OFF 0x00 // Power OFF
|
||||
#define CARRIER_AIRCON2_MODE_ON 0x20 // Power ON
|
||||
#define CARRIER_AIRCON2_FAN_DRY_AUTO 0x00 // Fan speed, AUTO or DRY modes
|
||||
|
@ -80,9 +82,10 @@ class CarrierMCAHeatpumpIR : public CarrierHeatpumpIR
|
|||
|
||||
public:
|
||||
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd);
|
||||
void send(IRSender& IR, uint8_t powerModeCmd, uint8_t operatingModeCmd, uint8_t fanSpeedCmd, uint8_t temperatureCmd, uint8_t swingVCmd, uint8_t swingHCmd, bool turboMode);
|
||||
|
||||
private:
|
||||
void sendCarrier(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature);
|
||||
void sendCarrier(IRSender& IR, uint8_t powerMode, uint8_t operatingMode, uint8_t fanSpeed, uint8_t temperature, bool maintenanceMode, bool turboMode);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue