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)
- Midea (also sold as 'Ultimate' in Finland)
- Mitsubishi Electric FD, FE
- Sharp / IVT
The hardware is just a basic Sensebender + nRF24L01 combo, with these additions:
- 4.7 μF decoupling capacitor between the GND and VCC pins
- 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.
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).