[OBSOLETE 1.1.6 5/25/16] Big Talker - Talk when events occur

Thanks for the logs, it helps diagnose the issue tremendously.

This is due to an intermittent scheduling / unscheduling issue within SmartThings platform that started around Jan 18, 2016.

Line 2984 calls the SmartThings API Unschedule() function which is apparently broken or randomly working for some (or all?) users. This is within the Talk() function and deals with rescheduling the polling system. Since SmartThings platform is throwing this random exception, the Talk() function never completes when this happens. Code execution stops. I could apply a patch to BigTalker, but either way this scheduling bug breaks the poller which will primarily affect Sonos users ability to detect if a playlist is playing.

I’ll wait a few days and see if SmartThings addresses this bug and try to patch BigTalker with a workaround if they do not.


@rayzurbock, is it possible to write a smartapp that can send text to your app to be spoken? What I would like to do is to write an app that would have Big Talker speak a greeting message when my phone becomes present and the door into the house is opened for the first time there after. I don’t want it going off every time I go in and the door.

I believe Rule Machine can do this for you. It might involve a virtual switch that is switched on for the first entry so you don’t get multiple greetings, just have Rule Machine check the state of the virtual switch for each door open. You turn off the virtual switch when your presence leaves.

I don’t believe SmartApp’s can directly communicate with one another (ie: passing variables and data). This would have to be done in the form of toggling a switch or something that each app can subscribe to to monitor for events and then act on those events.

As @eibyer suggested:
You could create a simulated switch (virtual switch) device to track/communicate to BigTalker. For example, create a simulated switch, Toggle that switch to ON when your I’m back routine runs and OFF when your Goodbye routine runs. I do something similar for my morning weather report (Toggle ON when Good Morning runs and OFF when Good Night runs). Add that simulated switch in BigTalker switch events with the phrase you wish to speak when you arrive. For more elaborate control, you could toggle the simulated switch based on various conditions using Rule Machine ( Rule Machine - Things That Are Smart Wiki )

Thanks @eibyer and @rayzurbock. A virtual switch has the advantage of keeping the design loosely coupled. @rayzurbock, what version of VLC are you running? Are you having any playback issues?

I’ve actually recently switched my Raspberry Pi from using VLC (and VLC Thing) to gmediarenderer-resurrect with “Generic Media Renderer”. I am moving towards setting up Android devices and using @NWTony’s LANnouncer.

VLC worked fine for me when I was using it, I just wanted to try something else. My Raspberry Pi keeps dropping wifi though and I have to pull the USB adapter out of it and reinsert it. Once I do that all is well again. (This has nothing to do with VLC or gmediarenderer-resurrect).

I am noticing though with mediaPlayer devices, such as I am using with gmediarenderer-resurrect, the SmartThings TTS (Text-To-Speech) cache is not always accurate anymore with the new SmartThings TTS engine. SmartThings Live Logging will show that the TTS engine is skipping generating the sound file for the text and using it from cache, but then use the wrong file that says something totally different than was requested.

I’m using it on OS X 10.11.3. I suspect that a new version of the OS broke the playback. I have another Mac Mini lying around that I was going to reimage to Ubuntu. I may try it on that OS.

One thing interesting about OS X is that it has a text to speech interface. You can choose from a number of voices and change the speed of the voice. I’ve been playing with it in Terminal with

say -v agnes “this is a test”

where agnes is one of the voices. I didn’t find the voices quite as real sounding as the one ST sends. Were one to create a LAN device to drive it, only the message text would be sent. Nothing would be cached. I’m not suggesting that you add this to your app. I just wanted to bring it up.

On a different subject, would there be a way to set up a variable message? If I set up a virtual switch that was recomended above, when I came in the door, I would like to collect some information and generate a message. For example, it could tell me how many times someone knocked on the door or rang the bell while I was away. I suspect this is not possible, but I thought I would ask.

I was testing Big Talker against some changes I made to VLC and it didn’t work. When I set debug and checked the log, it said “Remain silent while in mode Night”. It’s 2200 and the do not talk time is from 0000 to 0700.


It’s now 0900 and it works again.

Indeed, @NWTony has done something similar with his LANdroid app for Android devices. If someone wanted to write the OS X code and then a SmartThings device handler exposing a speechSynthesis or musicPlayer capability then it should be able to be added to SmartThings and BigTalker.

Currently, BigTalker does not have a variable / counter for such events.

BigTalker uses the SmartThings API function location.TimeZone (link) along with your configured Start/End times to feed into the function timeOfDayIsBetween() (link) which will return True/False in regards to remaining silent or not.

According the the documentation (see link above), location.TimeZone requires that location services is allowed on your mobile device for your SmartThings App. Are you in the US. or UK? If you have location services turned on and this is still an issue, perhaps this is a locale timezone calculation issue?

@rayzurbock, I’ve written the server. In the process of testing it, I started getting messages from VLC Thing. Since the actual text to be spoken is in the name of the mp3 file, I just parsed it out, replaced the underscores with spaces, and fed it to ‘say’. It works better than VLC. I don’t know what response VLC expects back so I just send an http header along with ‘OK’. I’m working on making the server less brittle. I always relied on Rails, Symfony, or PHP to do it for me. My next step is to create my own deivce handler. I was going to use VLC Thing as a starting point and strip it down to what I need, but it’s mostly stuffe I donn’t need. I’m going to find a better example

I tried the latest Big Talker 1.1.5 with my Samsung R1 speaker. It works really well for the weather announcement. Thanks Brian.


Awesome! Thanks for the feedback.

I just set Big Talker up with an old android phone (uPNP monkey installed) using the generic media renderer in smart things. Then I paired the phone (bluetooth) with amazon echo. This setup works far better that I would have thought. If the echo is busy talking, the Bluetooth audio gets faded in over top. Also, having the phone connected does not prevent the echo from receiving voice commands…

It also works with LANouncer, but I liked the TTS voice better with the DLNA generic speaker.

Thanks for making this app. Works great.


Any other apps like uPNP monkey that will work with older version of Android? My old phone apparently is too old for uPNP monkey… Your setup works great on my Nexus 7 but would prefer to use an old phone.

You might try BubbleUPnP. I think it has a renderer. Not sure if you’d need to keep the app open or not.

Bubble UNP needs to stay open. It keeps the renderer running in the notifications

I can get custom phrases to work but nothing with the predefined phrases like %weathercurrent%, etc.I look at live logging and nothing is even triggered at the set time.

Friends, I am not sure that I should continue development on BigTalker. @bravenel’s Rule Machine is so powerful that it can do almost everything BigTalker did and more. If he will add run-time variable ability into notification/speech phrases, (ie: %weathertoday%, etc) and a token/variable to insert the device change type (opened, closed, on, off, etc), then I do not see any reason to continue working on BigTalker. I can have unlimited number of timeslots and events for speech with Rule Machine instead of just the 3 that I wrote into BigTalker and so much more logic can be created using Rule Machine.

Tonight, Just to see if I could, I’ve replaced almost all of my BigTalker phrases with Rule Machine Rules and Triggers. The only ones that I haven’t converted are those that use tokens (run-time variables such as “The %devicename% is now %devicechange%”).

I welcome your feedback.

Example rule in Rule Machine that I am using now:

  • Time Based:

    • Create New Rule > Define A Trigger
    • Name the Trigger: Speak: John Doe Bed Time
    • Select Trigger Events > Capability > Certain Time > At a Certain Time: 7:29 pm
    • Select Actions
      • Send or speak a message > Custom message to send:
      • Notice: John Doe, its time to go to bed, John Doe
      • Speak this message > On this speech device (and/or music device).
  • Rule Based:

    • Create New Rule > Define A Rule
    • Name the Rule: Door Left Open
    • Select Conditions > Capability > Contact
    • Contact Sensors: Back Door, Front Door, etc…
    • Contact State: Open
    • Select Actions for True:
      • Delay These Actions > Minutes of Delay: 1 > Cancel on truth change: On
      • Send of speak a message > Custom message to send:
      • Notice: Door Left Open
      • Include device name: On
      • Speak this message > On this speech device (and/or music device)
      • Evaluate Rules after delay
        • Door Left Open
        • Minutes of delay: 1

Rule Machine 1.7: https://community.smartthings.com/t/rule-machine-version-1-7-released/37355

Rule Machine Wiki: http://thingsthataresmart.wiki/index.php?title=Rule_Machine



As you are aware, I love BT. I do use RM speech options when I want a simple audible notification with a rule. However, the default configurations in BT are great.

  1. Default Device
  2. Volume
  3. Only talk in this mode (unless I override it in a specific setting)
  4. Don’t talk before or after certain times (unless I override it)

And of course as you mentioned, using variables is really nice. I need to experiment with moving my BT over to RM. The ones I am most concerned about are:

  1. Announcing mode changes but not when changed from certain modes.
  2. Resuming music at the previous volume after an announcement that changed the volume
  3. Resuming the correct music (I know the BT polling has helped a lot with this)
  4. I love using the Talk Now feature to show off my smart home quickly