[RELEASE] Follow Me - Speaker control with priority messaging, volume controls, voices and sound files!


1 Like

Ok found that however it still not working for me.

When I send notices using the "music device" I get nothing (no errors, no notice). Switching over the speech device I get the notice, but have no volume control.

I noticed you say

I am using the "Follow Me" device driver. Did I miss a step? (I am not using this to speak just log notifications)

Here are my setting so far, just testing it out, so they are basic (KISS)

Thanks in advance for the help, sorry to be so dumb on this.

I've stated a few times that the original driver was 'What did I say' before this app even existed. That's how it started, just a driver. Then the app came later so I renamed it to 'Follow Me Driver'. Any reference to 'WDIS' carries over to 'Follow Me'

Then No child apps are necessary. They are only used to send speech to real speakers.

Only one type of speaker should be selected, either Music Player or Speech Synthesis. This is for the actual speaker you will be using, not the 'Follow Me' speaker proxy.

Priority features like volume and sound files don't work on all speakers as stated in the app. There is a button within the app to check 'Known Speaker Abilities'.

Hope this helps

Hi @bptworld,

I have made some minor tweaks to my local copy of the follow me driver, and was wondering if you would like to include it in the official version.

I had two aims, one was to have a button alongside my notifications on a dashboard to clear the list, and the second aim was to clear them overnight using a scheduled rule. Please correct me if this is already possible.

What I did in the driver code was to:

  1. add the refresh capability, ccommand reference and refresh method
  2. inside the refresh method I call the clearSpeechData method
  3. in clearSpeechData I replaced the "Waiting for data" references with a space.

At this point I could hit a refresh command button in the device setup screen to essentially clear recent notifications.

I then setup a virtual button plus a new RM rule that refreshed my Follow Me device when the button is pressed. I placed the button on my dashboard alongside a tile displaying the Follow Me notifications, allowing me to somewhat "acknowledge" notifications that appear. I'll setup a second rule to run overnight to also refresh the Follow Me device, I e. clear the notifications.

This would not be relevant in all situations, I am only using Follow Me at the moment to tell me when the washing is done, so something i can clear without too much of a concern.

If you're interested I'd be happy to show you a few screenshots and setup a Pull Request. Let me know what you think.


The goal here isn't to be able to easily clear the queue but to not have to clear the queue at all. :wink:

I've been using a newer version of the code here for a couple of weeks and haven't had to clear the queue yet. I just posted the new code on GitHub. Give that a try and see how it goes.


New version on GitHub...

V2.1.3 - 04/15/20 - Adjustments to speaker queue

Thanks Bryan, I'll give it a go.

I am trying to get this.


How can I get priority message if I do not set the priority levels using a child app?

Do you have a sample rule?

Again sorry to be dumb, and ask stupid questions I am sure I am missing something easy.

This is all done in the driver. From any app or RM, select 'Follow Me' for the speaker and then in the speech input, add something like:

  • [L:0]This is a low priority message
  • [N:0]This is a normal priority message
  • [H:0]This is a high priority message

The follow me driver will color format the text and add it to the list.

No problem at all, this is a complicated app/driver. I'm here to help.

1 Like


Thank you! The wife really needs to know when the washer is done urgently! :man_shrugging:


If this is the case I really don't need he app installed, if I only plan to use the driver? I think I'm starting to get it. :wink:

1 Like

Hey, that's very important! I do the laundry here and if the clothes stay wet for a couple of hours after the machine is finished... they have to be washed again! lol

I use it for washer/dryer, dishwasher, fridge open too long, time to feed the dogs, time for meds, trash day, recycle week, mailbox alerts, front door alerts, people coming and going and more. Endless possibilities!


Hi @bptworld, hope you are keeping well.

I was wondering if you would consider adding a new feature to your FollowMe app?

I have setup an hourly speaking clock notification. The problem I am experiencing is that I may be listening to music or in the middle of a video call on my google device and when the announcement is made the activity is interupted. Is it posible for there to be an enable/disable feature incorporated where you can specify that the notification is not sent if the google device is currently playing or being used in some way?

I suppose I could possibly do something in RM to turn speakers on or off based on a virtual switch however it would be tidier if managed within the app.

There is no way to know if the google device is playing anything. Wish there was.

Hi @bptworld,

thanks for your work - this looks really good. Just a thought:

I have an LG TV that is able to display push notifications (via LG WebOS TV Driver).

While the TV is on, I prefer to receive visual notifications on the TV instead of voice announcements. I do this using Rule Machine rules (if TV is on, send push notification, if TV is off, announce via speaker), but this is not very easy to maintain.

Maybe this is something that you'd be interested to add to Follow me?


Interesting idea. Added to the list.


That is a shame. You can see the status of whether it is 'idle' or 'Playing', however when you are in a video call it just shows as 'idle'. Guess I'll have to setup a google mini for notifications in addition to the Google Display. The wife is going to love that! More gadgets around the home.

1 Like

Might I suggest a code change. When you specify 12 hour time, no AM/PM is shown. I've changed the following change to getDateTime

if(hourType == true) newdate=date.format("MM-d hh:mm")

if(hourType == true) newdate=date.format("MM-d hh:mm A")

Also, I don't know if this was on purpose, but I notice you ignore the NumOfLines when building the time. This code fixes that and prevents the tile from overflowing.

    int intNumOfLines = numOfLines
    if (listSize1 > intNumOfLines) state.list1.removeAt(intNumOfLines)

    String result1 = state.list1.join(";")
    def lines1     = result1.split(";")

    if(logEnable) log.debug "In makeList - All - listSize1: ${listSize1}"
    if(logEnable) log.debug "In makeList - All - intNumOfLines: ${intNumOfLines}"

    theData1 = "<table><tr><td align='left'><div style='font-size:${fontSize}px;font-family:Lucida Sans Typewriter'>"
    for (i=0; i<intNumOfLines && i<listSize1 && theData1.length() < 990;i++)
         theData1 += "${lines1[i]}<br>"
    theData1 += "</div></td></tr></table>"
    if(logEnable) log.debug "theData1 - ${theData1.replace("<","!")}"

This is inserted into populateMap replacing original lines 288 (if) -- 312 (close paren). Ping me if you have any questions.


This was strictly a character count decision. Have to balance between readability and data.

My tile code has been working great for over a year now. :wink: I'll take a look at your modified code though, always a better way of doing things. Thanks.

No problem. Just was playing with the tile and found the (non-)issue. Hope it works out.

Found a minor issue. Exceeded the 1024 limit. Corrected for loop. (this is the real code that does all the work).

    for (i=0; i<intNumOfLines && i<listSize1 && theData1.length() < 990;i++) {
        if ((theData1.length() + lines1[i].length()) > 990) break
        theData1 += "${lines1[i]}<br>"

Bryan,, Error when updating with HPM

Error Occurred During Installation

An error occurred while installing the package: Failed to upgrade app https://raw.githubusercontent.com/bptworld/Hubitat/master/Apps/Follow%20Me/FM-child.groovy.