Heatpump / airconditioner controller

Heatpump / A/C controller

This MySensors node turns the split-unit heatpumps or air conditioners into IoT devices. The MySensors node acts like a second infrared remote controller, sending the same commands as the real remote controller.

The design goal was to build a physically small node, small enough to be placed entirely within the covers of the indoor unit. In my project I also powered the node directly from the indoor unit's +5V DC feed, but I'm not encouraging anybody to void their warranties etc.


The software is based on the HeatpumpIR Arduino library, integrated into MySensors. The software should run on any Arduino-based board.

The software supports a number of common (in Nordic area) heatpumps:

  • Panasonic CKP
  • Panasonic DKE, JKE, NKE (probably also other Panasonic model families)
  • Carrier
  • Midea (also sold as 'Ultimate' in Finland)
  • Fujitsu
  • Mitsubishi Electric FD, FE
  • Samsung
  • Sharp / IVT
  • Daikin


The hardware is just a basic Sensebender + nRF24L01 combo, with these additions:

  • nRF24L01
    • 4.7 μF decoupling capacitor between the GND and VCC pins
  • Sensebender
    • 2.2 μF decoupling capacitor between the GND and VCC pins
    • powered through LE33ACZ 5V-3.3V step down regulator (accepts 5-18V DC input)
    • RXD, TXD and DTR headers for programming
  • IR led connected between D3 and GND
    • IR led in series with 1 kΩ resistor
    • soldered pins protected by shrink tube
  • everything wrapped into a shrink sleeve


Since this is an actuator node, it really can't be battery powered. I chose to 'steal' the power directly from the indoor unit's IR eye (pins 6 & 10 of the 'display unit' on this particular model), but for example a cell phone charger would do as well.

Control messages

The heatpump / A/C control messages are really long and model-specific. The HeatpumpIR library attempts to abstract this so that all models are controlled the same way, by giving these properties:

  • power state
  • operating mode
  • fan speed
  • temperature request

Control of the MySensors node follows the same principle:

The heatpump command is packed into a 32-bit hex number, see
libraries\HeatpumpIR\HeatpumpIR.h for the constants

   4 POWER
     6 FAN SPEED

00213416 (as an example of a valid code)
00 = always two zeros
  2 = PanasonicJKE
   1 = Power ON
    3 = COOL
     4 = FAN 4
      16 = Temperature 22 degrees (0x16 = 22)

The commands can be given as the payload of the V_IR_SEND message. As Domoticz does not really support this too well, another way (in Domoticz) is to give a value to the V_TEXT sensor, and trigger the send by turning the V_LIGHT switch on. See the Domoticz project page for more details (especially the Lua script to connect the virtual switches into the V_TEXT / V_LIGHT sensors).


Source Code

NameSize# Downloads
HeatpumpIRController.ino8.91 kB4485

Bill of Material

QtyValueDevicePackagePartsDescriptionMFMPNAliexpress or ebay link
1Sensebender Micro
1LE33ACZ 5V-3.3V step down regulator
1940nm wavelength infrared led
11 kΩ resistor
14.7 μF capacitor
12.2 μF capacitor
2DuPont male-female wire
2Button splice connector
120mm heat shrink sleeve
13mm heat shrink tube
16mm heat shrink tube


Sensors & Actuators

Related Content