[Release] - Speaker Central

Speaker Central

Speaker Central allows you to assign a single virtual ‘ProxySpeechPlayer’ device (using a dedicated, custom device driver) in any app to receive TTS messages and ‘push’ the message to a number of different speakers.

This app was created when Hubitat released it’s ‘Chromecast’ application & drivers

I discovered that a Google Home Mini could be used as a local speaker device for TTS

Although I use a number of Sonos speakers for ‘urgent’ messages which are loudly broadcast throughout the house, I wanted a more manageable, local (in each room) solution, that I could control.

I now use a single proxy device with all my TTS capable apps and control individual speakers from multiple Speaker Central child apps

The speakers can be assigned to work only:

  • When there is motion ‘active’ on specified motion sensors
  • Between certain times
  • When in certain ‘modes’
  • When a switch is turned on.

The speakers ‘triggers’ can be combined with restrictions:

Presence sensor (Present or not)

Separate switch (on/off)

Between two times

Mode

Days

Sunrise or sunset

This means for example, you could have a speaker ‘active’ only if there is motion and it’s Thursday, between 9:00am and 5:00pm (but only when the hub is in ‘Home’ mode) J

This is a parent/child app which requires an individual child for each speaker or scenario.

Each child also has the ability to set speaker volume so can also be used for balancing speaker output levels.

Each child is capable of using either a ‘Speech Synthesiser’ or a ‘Music Player’ as it’s output device

The device driver will act as a ‘Speech Synthesiser’ and a ‘Music Player’. It also has the capability to be a ‘Notification Device’

This means it should be compatible with most, if not all, TTS/Notification apps.

Important note:

This driver and app is for TTS ONLY – it will not work as a proxy for playing Mp3s or music, and was never designed to be.

Speaker Central parent/child code is here:

https://github.com/CobraVmax/Hubitat/tree/master/Apps/Speaker%20Central

The Special driver is here;

https://github.com/CobraVmax/Hubitat/tree/master/Drivers/Speaker%20Central%20Proxy%20Driver

As always, please let me know if you have any problems

Enjoy! :slight_smile:

Andy

6 Likes

Speaker Central is part of Cobra Apps so if you don’t already have it, Cobra Apps must be installed first.
If you are currently using Cobra Apps then you will need to update it to include Speaker Central.

Andy

Did you release the "Cobra Apps" new version to github? The one listed is not new?

Oops..
Give me a couple of minutes :slight_smile:

Andy

1 Like

Try an update now :slight_smile:

Sorry about that.

Andy

1 Like

Where can I find the Speaker Central child App. My Cobra App updated to 2.6.0, but Cannot find the Speaker Central App. Looking forward to trying this out, and thank you.
As a newbee perhaps I am missing a step?

EDIT: Found it, and installed

1 Like

Guys
I found one or two of my 'Google Home Mini' speakers 'drop off' from time to time.
It's almost like the network goes to sleep (it doesn't but seems like it) so I loose connection to the speaker then get these errors in the logs

java.lang.NullPointerException: Cannot invoke method launchApp() on null object (runQ)
java.lang.NullPointerException: Cannot invoke method setVolume() on null object (setVolume)
java.lang.NullPointerException: Cannot invoke method getStatus() on null object (refresh)

I've found that by 'Initializing' the speaker, this reconnects it.
Unfortunately, this is not at regular times etc so I never know if a speaker is going to work or not (until it doesn't when expected!)

So.. I have added an optional switch to Speaker Central (speech synth) to enable an 'initialize' before speaking. (Use only if you have this problem and get these occasional error messages)

This switch forces a reconnect before speech.

It adds about a second to the time before speaking but I think it's worth it to stay connected

New version 1.1.0 uploaded to github.

Andy

1 Like

Does anyone else have this issue or do I just have a couple of dodgy GH minis?

Andy

I'm having this issue with one of my two minis. I'm just running simple announcements, haven't installed Speaker Central. Currently, I'm chasing possible causes by killing GHM's Downtime and Night Mode.

@Cobra Welp, Downtime & Night Mode weren't it. Just found it locked up again.

I don't use either in my setup

I don't actually know what causes it yet.
But using the 'initialize' command is a work around until I can get @mike.maxwell involved.

Andy

Initializing mine only works occasionally. Locked up solid this time. I'll have to rerun discovery.

"2019-01-25 07:34:00.224 pm [error] java.net.NoRouteToHostException: No route to host (Host unreachable) (initialize)

2019-01-25 07:33:57.186 pm [debug] initialize..."

That really looks like it can't find the speaker

Are you 100% sure the speaker is picking up the reserved IP address?

Andy

I checked the router again just now. Still showing same reserved IP as before.

Discovery got it working again, btw.

Interesting to know what is going on. Has the google minis been working fine with everyone up until recent? I have been using chromecast just fine when I recently added a Google Mini noticed it would work for awhile then just stopped with the TTS for contacts. The chromecast seems to not hang up like the minis. When I go into devices, google mini and refresh it will start to play everything it didnt before. Like it was buffering everything .

I’ve had this happen a couple of times when the device has dropped off but still seems to buffer the messages until reconnected.

Andy

I'm not using Message Central, but I have seen my Chromecast queue get backed up as well.
I posted about it here and was referred to your thread by @rcjordan. In my case, I just hit refresh on my Chromecast group that I speak to and the queue (annoyingly) flushed out. I'm not sure what caused the queue to start holding messages though.

#HubVersion=2.0.4

I have had the same thing happen here as well recently. I guess that's why the Chromecast integration is considered a beta? I was hoping to be able to have Rule Machine issue a daily refresh command to try and prevent it, but the device does not show up RM's Refresh feature. I know I could create a custom command in RM, but I was hoping to avoid that for now.

Good idea. I created a custom command in rule machine to refresh my Google Home mini group daily. For those not familiar with the process, the Loom link is a video showing what I did (watch it in full screen as the text is pretty small; also I clicked on "Parameters" and didn't need to so you can skip that)

#HubVersion=2.0.4

Hi! So with this app... how do I understand what sort of devices can be used for TTS speakers?