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.
Software
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
Hardware
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
Power
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
12345678
3 MODEL
4 POWER
5 OPERATING MODE
6 FAN SPEED
78 TEMPERATURE IN HEX
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).