I got this running the other day. I have a whole house audio system… and I happened to have an old Android phone laying around that I don’t use because a portion of the touchscreen no longer works. If you have an old phone laying around, this is a GREAT way to repurpose it.
Here’s what I did:
[ul][li]Installed IVONA text to speech engine from the market[/li]
[li]Installed the IVONA “Amy” voice (sexy british accent, and very good quality. Difficult to tell it’s synthesized). I could have used the built in Android TTS engine/voices, but this one is way better[/li]
[li]Installed SetCPU to prevent the CPU speed from going below 1113mhz to keep the phone responsive (not required)[/li]
[li]Go under the wifi settings, join it to your network. Click the menu button and select “Advanced”. Set a static IP for the phone, and change the power saving settings in this screen so the Wifi will never turn off[/li]
[li]Install Vera Alerts from the android market[/li]
[li]Start Vera Alerts, click menu, click Register to register it with google’s C2DM service [/li]
[li]Install VeraAlerts from the Micasaverde app store [/li]
[li]In the Vera Alerts device created on Vera, edit it, and put in the Device ID listed in the VeraAlerts app on your android device [/li]
[li]Send a test message [/li][/ul]
Now you’re ready to use it. I created a new scene called Voice Alerts. I did not select any devices for it. But, I create a trigger for each voice announcement I want, and after the trigger is created, I put the LUUP code in the trigger event rather than in the LUUP tab for the scene. This way, you can have one scene for voice alerts instead of one for each one. For example, I have a trigger for when the front door is tripped, and the LUUP event is:
luup.call_action("urn:richardgreen:serviceId:VeraAlert1", "SendAlert",
{Message = "{tone:2} Front door has been opened.", Recipients = ""}, 46)
It’s really simple to use. However, it would be nice if there was a method to choose this as a notification under the notifications tab for each device rather than having to put in LUUP code. It’s my understanding that some sort of notifications hook needs to be added before this is possible.
So now I’m in the process of porting all of my voice announcements from my ELK M1 Gold over to Vera Alerts. The ELK’s voice announcements are not very good quality, and you’re limited to a 500 word vocabulary since it’s not TTS.
Features I’d like to see with Vera Alerts:
[ul][li]Ability to have the phone just listen on a local port, and the vera app to send directly to the phone, bypassing Google’s C2DM and the dependence on an internet connection and a 3rd party service for things to work.[/li]
[li]If your alert sound is long, it will start speaking before the alert tone is finished playing. Is there an easy way to fix this in the code? If no, could a {sleep:X} tag be added where X is a number of milliseconds? “{tone:2}{sleep:1500} Movement on rear deck, arm yourself.”[/li]
[li]No status bar icon to tell if the app is running.[/li][/ul]
C2DM is good for people who use Vera Alerts on the move. But for those of use who are just going to stick the android device in a cabinet and hook it into a whole house speaker system, it doesn’t make sense to use it. Messages are limited to 1024 bytes, so you probably couldn’t send a whole breaking news story to it if you had something that pulled important things via RSS and played them. It relies on an internet connection either via wifi or phone network. It relies on a 3rd party service, which also has rate limits (I was unable to find what these are). Some people may have privacy concerns with sending data like this to google. Latency could be a concern, but it’s been almost instantaneous for me (50M pipe though).
Overall, this is a great solution for voice announcements. I really have grown accustomed to them from my ELK, but was always annoyed on the crappy quality and the limited vocabulary. This addresses both of those issues nicely.