voice command

A couple of weeks ago I set my self a seemingly simple goal: turning the projector in the kitchen on without having to find the remote control (or resorting to the use of a long stick). I’d done a similar thing in a previous house by using a USB-UIRT http://www.usbuirt.com/) to record and send the right IR codes to the projector.  The whole was part of a WPF application I’d written to project our calendars on the kitchen wall so that we don’t forget things in the mornings.

For our newly refurbished house I’d decided a while ago that it made sense to assemble everything in-situ while the builders were still working on the house and there were tall step-ladders in place. This meant that the USB-UIRT box had now been placed in its final position about 2.2m above the kitchen worktop and close to the projector(s) it is to control. I only recognised a problem with this once I started trying to get the USB-UIRT to learn the power on/off codes for the projectors – you need to hold the remote within about 30cm of the USB-UIRT to learn a code.

20130930 8dp kitchen projector photo - annotated

Since I didn’t fancy bringing in step-ladders every time I wanted to change something I ordered another USB-UIRT to use for the purpose. It just arrived today so I set about locating the best software to use to learn the remote’s IR codes and I stumbled onto this video – http://www.youtube.com/watch?v=rNUQacQblXM – which indirectly took me to looking at VoxCommando http://voxcommando.com/  @VoxCommando.

So today has actually been pretty successful all told – especially as I’ve had to fit in a couple of appointments and a few hours off for assisting with coaching my son’s football team.

I’ve implemented a set of voice commands using the VoxCommando software and got most of the current functions of the kitchen computer working – including turning on and off the projectors.

image

I was a little confused to start off with by the terminology around VoxCommando but it became much easier once I’d understood the order rule creation.  For each rule the first thing you do is define the Action to be taken and then you define the voice command and parameters. You can do it the other way around but the UI seems to lead you this way. There are a few rules I’ve been playing with – like showing the photo-calendar software I’ve been developing (that’s what is running on the wall in the first picture). I’ve also been adding commands to display commonly used recipes – there’s a better way to do this than having a separate rule for each – by using XML files – but at the moment I’m just trying to work out the Action part of the command to ensure that the window is opened on the downward pointing projector (if that projector is on) and is maximised to make life easy for the chef – most of this is still to be figured out though.

image

To get the projectors to turn on and off hasn’t been easy either. I’ve recorded the IR messaging several times for each projector and the results haven’t been very repeatable when played back. Sometimes the projector interprets the communication as a different command – split screen seemed popular for the Epson one. I’ve finally recorded a sequence that seems to work though – and this was soon (maybe immediately) after I switched from Pronto to UUIRT format for the Epson – maybe there is more information in the UUIRT format or maybe it’s just dumb luck.  What I did determine though is that each time I recorded the codes from the same remote in the same format I got subtly different results. And since both projectors have only a single power button they both require a separate press to confirm powering down – this means that if the projector off and you try to turn it off then you’ll turn it on and have to press the off button yet more times to really be sure it if off again. Not an ideal situation of course.

For the coloured lights I used the VoxCommando learning steps I mentioned at the beginning of this post and detailed at http://voxcommando.com/forum/index.php?topic=1169.0. After conversion from the map file to XML (as detailed in the video) I ended up with the following:

image

Sadly not all of these codes work – and I still haven’t managed to get the voice recognition to recognise my rendition of the word purple!

Having gotten this far I decided I really wanted the projector to turn on and off automatically based on the time of day – so it would be one while we have breakfast in the morning and we can look at the calendar to ensure we’re not missing anything important. VoxCommando has not “gotten hold” of the USB-UIRT so I now have to get VoxCommando to do the waking up. That’s not as easy as it might be because there only seems to be a VC.SetEventTimer command and that doesn’t seem to allow for repeated commands.

image

I’ve found this http://voxcommando.com/forum/index.php?topic=653.msg4655#msg4655 which suggests using Windows Task Scheduler to run udpsender.exe which is a utility provided in VoxCommandoExtras. I had to play around a little to get payloads to work – basically you have to use && to separate the event name and the payload.

image

This will probably work ok for now but I’m not really happy with the limited repeat options on Task Scheduler.  The main problem I have is that the projector’s on / off commands use the same codes and I can’t tell if the projector is on or off when I want to sent the command. I probably could use VoxCommando’s python support to keep track of when it thinks it’s sent an on/off command but then there’s the issue of manual intervention – which may happen – and missed IR code reception – which does happen from time to time. Ah well!

Finally I have also realised there’s a lot of potential with other features of the VoxCommando as it sports a plug-in for the Vera Z-Wave hub and I’ve around 150 Z-wave devices in the house now – although many are still not working to my satisfaction …