I am planning to restructure HouseControl a bit to allow more commands to be sent to remote computers. This will allow me to have a network of HouseControl nodes each with different devices attached and with different local services.
Currently I just send speech, volume control and Spotify commands to a remote music server, which runs a modified version of HouseControl. I want to run the same version of HouseControl on all nodes, but each with its own configuration file. I then want to be able to configure any device to be a remote one, just by specifying a server in the configuration file, and to forward all commands for that device to the specified server node.
At the same time, I plan to add some extra computer control plug-ins. I will separate volume control from media control, as the volume control on a computer applies to all the media plug-ins running on that computer. I will also separate out the program control that is currently part of the Spotify plugin. Program control uses JNA platform interfaces and the Java Robot class to control processes and send keys to them. I can use this for more general program control commands.
Eventually, I will have HouseControl running on all the computers in the house including the Raspberry Pis. I will be able to direct commands to any node and have them relayed to the appropriate node for a specific device or service. So, if I have microphones on some nodes, these will be able to pick up voice commands and forward them to the appropriate node. I will need rules to cope with nodes not being active as I do not want to have all computers on all the time. For example, the best active server for speech output could be selected, or I might want to send the speech output to multiple servers on each floor of the house.
I recently found an old Marmitek X10 remote control that I used some years back to control the now defunct ShowShifter software on a PC. It has a remote and a receiver. It says it uses IR and RF 433 signals. I will see if I can pick up the RF signals using one of my existing RF 433 MHz transceivers. If not I will use the Marmitek receiver on a PC or possibly a Raspberry PI, if it works on that. I will then attempt to use it as a sort of super universal remote control by relaying the commands around using HouseControl. It should then be able to control any device in the house. For example, I could say “control TV” and then use it to control TV, or “control XBMC” and use it to control XBMC on a Raspberry Pi.
I want to get to the point where I can pick up the closest controller and control anything in the house with it.
I still have not found a very satisfactory way of controlling things. I mainly use my HouseChat client on my PC as I am on my laptop a lot of the time. Other times I use OpenRemote on a phone or tablet. Sometimes I use voice control but that is often not convenient. Sometimes I use the various remote controls, such as the LightwaveRF one. Sometimes. I even press physical buttons! I will be able to try gesture control when my Leap Motion device arrives in a month or so. I am looking forward to brain control when that becomes feasible, but I don’t know how practical everyone controlling the hundreds of devices in the house via brain control is going to be. There are going to be a lot of telepathic arguments over who has what on the TV, and what temperature each room is set to.