My house contains a single Air Conditioner (HVAC) that operates as a heater during winter. It is remarkably efficient, given that it is a ‘Split System’ rather than a ducted unit. Over the past year I have been able to control this unit over the Web thanks to some software and hardware that I have integrated.
My HVAC unit is in a stairwell in the centre of the house. This has some advantages and disadvantages. Thankfully I can get over the disadvantages with a bit of work.
The main deficiency with the unit is needing to use the remote to control the unit. To fix this I placed a permamently mounted IR Diode on a wall in the stairwell, and started playing.
My first experiment was to use an off the shelf remote for my HVAC unit, and wire the UP and DOWN buttons to relays so that I could computer control the temperature. This had one major issue. The problem was that I did not know for sure at any time what the temperature on the remote was. This was particularly the case when the software was restarted. So, I needed to get the software to adjust the temperature down about 20 times following a restart of the software, just so I knew that the set point had bottomed out. I could then move it up to the desired temperature. Not only was this slow, but it made a heap of noise as each button press caused the HVAC unit to beep.
The next experiment worked really well. This used the USB IR Toy from Dangerous Prototypes/Seeed Studios. This is actually open source hardware, and is quite inexpensive at about $20 including postage. This unit has the ability to record and play back almost any IR signal. It took me some time to record all the combinations of settings for the HVAC unit. One of the problems was that there were 16 temperatures, four fan settings and four mode settings. And if you pressed UP in temperature, this would send a different command than then pressing DOWN, since the temperature gets changed on each press. What I eventually did was to record enough signals, and then determine the mathematical sequence being transmitted. Once this was determined, I was able to generate arbitary commands without needing to actually record every keypress