Jump to content
Guides for the Forum Read more... ×
Poradniki na Forum Read more... ×
FIBARO Home Center App 1.0.0 - release Read more... ×
FIBARO Home Center App 1.0.0 - wydanie Read more... ×
  • 0
AutoFrank

[SCENE] Smart Message Hub {v1.2} - NEW RELEASE

Question

Hi Everyone

 

Smart Message Hub v1.2 (SMsgH v1.2) is now available.

This release includes fixes tor three bugs that had various impacts and support for international characters.

Thanks to @Sankotronic and @szmyk for locating the faults and extra feature for international characters

 

"FIRST TIME USERS" -  Please read below and follow the instructions laid out for first time users

UPGRADING FROM 1.1b to 1.2 - Please use this

Please login or register to see this link.

 - if you are a current user and may wish to consider  avail of the fixes or extra feature

 

This scene enables a user to send a message from either a scene or a virtual device to a number of notification and TTS services with a startScene call

Please login or register to see this code.

The scene also enables messages to be re-routed or queued depending on whether the house is set to Away mode, Sleep mode or if internet is not available. (See below for more details)

 

A demo  VD {v1.1} is also available to help demonstrate the scene features.

 

SCENE FEATURES

Smart Configuration options include the ability to re-route and/or queue all messages under certain conditions. (Internet unavailability , home occupancy mode presentState = Away)

Messages with international characters are also supported

  • Notification messages can be redirected to Home Center 2 Popup notification service if the internet is offline or unavailable
  • Notification messages can be queued if the internet is offline or unavailable. 
    • All Messages in the queue will be released as one combined message once the internet come s back online.
  • All TTS messages can be redirected to Home Center 2 Popup notification service if the internet is unavailable or offline or if the sonosAPI is offline if this solution is being leveraged
    • All TTS messages can be queued if presentsState = Away. 
  • All TTS messages in the queue will be announced once presentsState = Home
  • Simplified the message invocation method to startScene
    • Invoked via startScene(SMsgHid, {message string} (SMsgHid is the id of the SMsgH scene when it is saved to your system )
    • See below for examples
    • messageHub global no longer required (please delete when you have migrated all your scenes to using 1.1)
  • Added support for sleepState (no TTS messages if set to Sleep)
  • Additional support for HC2 popup notifications
    • Types (Critical, Successs, Info, Warning)
    • Images (use full url)
    • Buttons (represented as a table) - See @Sankotronic 

      Please login or register to see this link.

      on popup notifications to see how to format
    • Added ability to delay unloading of TTS messages by predefined time in seconds
    • Added support for custom language in for TTS and Notify redirects default Popup title and subtitle
    • Minor bug fixing and code cleaning

 

Configuration options also include a default message notification target, title, subtitle and volume but all these can also be specified as part of the message invocation.

There are three levels of debug verbosity. In normal mode there is a minimal amount of information displayed as the scene is triggered.

The two other modes allow for much more expressive displaying of scene variables as well as configuration settings if enabled

deBgVar is enabled in the scene so you can see the interactions- it can be disabled in normal running mode

 

SCENE MESSAGING OPTIONS
The supported services in this release include the following (supported in 1.0 & 1.1)

  • Pushover Notifications ------------------------------------------------------->  

    Please login or register to see this link.

  • allinone ( jompa68 scene)
  • Telegram messages
  • hc2email (Home Center 2 email service) 
  • hc2push (Home Center 2 push notification service)
  • hc2popup (Home Center 2 Popup Notification service) -------------------> [TUTORIAL}

    Please login or register to see this link.

     
  • Sonos-api based TTS -------------------------------------------------------->  [TUTORIAL] 

    Please login or register to see this link.

  • Sonos VD Remote based TTS ----------------------------------------------->

    Please login or register to see this link.

 

I have also included a Companion Demo VD. The virtual device will allow the user to demonstrate the scenes queuing/unloading capabilities.

CAUTION: The companion VD in demo mode can adjust the presentState and sleepState globals and will cause any other scene you may have with this as a trigger to execute

 

A simplified version of the LAN Monitor VD called  the WWWAPI Monitor will monitor just the sonos-api if desired and does not any in-built notification options like the LAN Monitor VD 2.5.Smart Message Hub users should use either the WWWAPI Monitor or LAN Monitor 2.6

 

Special thanks extended to  @Sankotronic @petergebruers, @jompa68 and @szmyk for their contributions leading to 1.2

 

Once the scene configuration is complete I would recommend running the demonstration virtual device.

This will give you a better understanding of the options and features as well providing some sample messages that you can run.

 

Ideas for subsequent revisions are always welcome
_f

    
  RELEASE CHANGELOG
  v1.0  - First release (march 4th 2017)

  v1.1 - Second release (march 17th 2017)

  v1.2 - Third Release (june 24th 2017) 

 

 

                                                                            ================================================

                                                                             FIRST TIME USERS - INSTALLATION & CONFIGURATION

                                                                            ================================================
The code is available in both lua and txt format below

Paste code into scene and run - All global variables will be automatically created (Please do not adjust global triggers in scene header)

  • Configure options as required at top of scene (line 100 onwards)
  • Configure enable smart redirects
  • Configure HC2 email settings, HC2 push settings and TTS services
  • Configure default message titles, subtitles and volume
  • Configuration notification settings, tokens, etc
  • Enable/Disable increased debug and config verbosity for troubleshooting

  
MESSAGE INVOCATION
  This message hub can be called from either a scene or a virtual device using a startScene call. The following is an example Sample invocations are included below

Please see the section on Message Invocation lower down in this post of you wish to send messages with international characters

Please login or register to see this code.

Note: Replace IDofSMsgHscene with HomeTable reference of numerical ID of the SMsgH scene when it is installed on your system    

You need to include all parameters up to last one you populate. For example, if you want to specify a subtitle, you need to include message, target, volume and title as well.

You CANNOT leave out a parameter in the call. Leave as "" if not used/required and default will be invoked.

 

**USER CONFIGURATIONS & SETTINGS**


OPTIONS FOR SMART RE-ROUTING OF MESSAGES
The following four options can be set to true or false depending on what features you wish to enable.

Please login or register to see this code.

Set to true to enables re-routing of sonos TTS messages from either the Sonos VD or the sonos-api solution to HC2 notification Popup if the sonos-http-api or Internet is unavailable/offline to your local LAN  

Please login or register to see this code.

Enable to Silence  TTS announcement in sleepState, TTS announcements are NOT queued, they are simply discarded

Please login or register to see this code.

 

Enable a Delay before TTS announcements are unloaded (seconds). Leave as "" for no delay

Please login or register to see this code.

 

Set to true to enable Sonos TTS messages to queue when presentState = 'Away'. When presentState is set to Home it triggers the scene to automatically unload all the messages in the TTS queue to the default player that has been named in the configuration section  

Please login or register to see this code.

Set to true to enable all notifications to re-route to HC2Popup notifications if the internet is unavailable/offline to your local LAN  

Please login or register to see this code.

Set to true to enable all notifications to queue when presentState= 'Away'. When presentState is set to Home it triggers the scene automatically and unloads the message in the notifications queue to the default notification service that has been named in the configuration section below

 

The scene as provided has all these 4 options set to true and this is the recommended setup if you wish to leverage full functionality and the demo
  
OPTIONS TO MONITOR THE INTERNET STATUS
To achieve the most benefit from this scene the internet and sonos-api should be dynamically monitored. Dynamically monitoring the internet will enable messages (TTS and notifications) to be queued while the internet if offline. Queued message can also be sent as hc2 pop notifications on the local LAN. The preferred monitoring option is named here. The example below is setup to use the LAN Monitor VD 2.5

Please login or register to see this code.

There are 3 options available: 

  • Select 'manual' if you wish internet and sonos-api to be permanently set to online. Please 
  • note that this option does NOT enable queuing of notification messages.
  • Select 'networkTable' to leverage the LAN Monitor VD 2.5, 
  • Select 'wwwapiTable' to leverage the new simplified WWWAPI Monitor 1.0

                               
 

HC2 EMAIL CONFIGURATION

Please login or register to see this code.

List all users that you want to be able send messages to. The user id's are located from the HC2. Select Configuration, then Access Control to see the current users.

 

 

HC2 PUSH CONFIGURATION

Please login or register to see this code.

List all users that you want to be able send push messages to. The mobile devices ID can be found by going to http://<HC_IP>/docs/ and looking under iosDevices section. 

Please login or register to see this code.

Select a default user from this list and this is used if there is no user specified as part of the message invocation. 

                               
 

TTS PREFERENCES

Select your TTS preference. If you use the sonos-http-api solution please enter API. 
If you use the Sonos VD Remote solution please enter REM. 

Please login or register to see this code.

Default volume for TTS announcements

Please login or register to see this code.

This allows you to select a default volume and this aplies to both the API and REM sonos solutions. This volume can be changed by including a different volume in the message invocation

 

 

SONOS-API PREFERENCES
Configure this section if you have selected API in the above section.

Please login or register to see this code.

List all the sonos players you want to send TTS messages to.

The zone/player names must match exactly what is on your sonos native application

Please login or register to see this code.

The default player/zone selected is used to unload the TTS message when presentState = Home.

The default player must be included in the overall players list above

Please login or register to see this code.

                          

The ip address and port are of the device that is hosting the sonos-api

Please login or register to see this code.

The final item here is the language or voice code for the respective TTS service. Thisoculd be something like en-gb for google or Amy for AWS Polly
                                 

 

SONOS REMOTE VD PREFERENCES
Configure this section if you have selected REM in the above section.

Please login or register to see this code.

List all the sonos player virtual devices you want to send TTS messages to. The virtual device id's and process button id’s much match exactly what is on your HC2 for each virtual device. Please note the process button may differ if you have modified the standard virtual device. 

Please login or register to see this code.

The default player/zone is user to unload the TTS message when presentState = Home.

This zone must be included in the overall REMplayers table and the name must match exactly.

Please login or register to see this code.

The final item in this section is the language or voice code for the respective TTS service

 

 

DEFAULT TITLES AND SUBTITLES

This scene has default titles and subtitles and these are used if no title or subtitle is included in the message invocation. 

Please login or register to see this code.

Adjust the default titles and subtitles as you require. Note: Subtitles are only used for PopUp Notifications

 

 

NOTIFICATION SERVICES
There is a broad range of notification services available to use. Some are native to the home center and others are third party services provided by external vendors.

Please login or register to see this code.

                               
Select the default notification service that you wish to use. This default service will be used if no service is invoked in the message and is also used as the service to unload the queued messages when presentState = Home

 

 

PUSHOVER CONFIGURATION
This service is provided by pushover.org. You will need to register with them and obtain a token and user key.

Please login or register to see this code.

     
Once registered you will need to select the devices that you wish to send the pushover notifications to. Once they are added to your pushover account you will need to add their details below. Currently there is only one setting for device which means that all messages to pushover will be send to the devices named in this list. Priority can be set at ) like I have below

Please login or register to see this code.

                                  
TELEGRAM CONFIGURATION
This service is provided by telegram.org. You will need to register with them and obtain a token and a chat ID

Please login or register to see this code.

DEBUG VERBOSITY OPTIONS
This allows a number of levels of debug verbosity. There is a minimal amount of debug window responses running in normal mode but these two capabilities allow the user to observe extra information in the debug window when  the scene is running. 

Please login or register to see this code.

 

OCCUPANCY/PRESENCE STATE

I am also supporting the presentState as it is defined by Sankotronic and others.
-- "PresentState" is predefined global value that determines if you are at home
-- or away. This variable value is set by other scene or VD. Enter name of your
-- global variable between "" if called different or leave as it is

Please login or register to see this code.

-- Enter corresponding values that you use for presence in your language. Change
-- the one in quotes or leave as it is

Please login or register to see this code.


HOMETABLE
There is also support for the hometable solution. Hometable is a approach to storing all device ID in a global variable. Please Uncomment the following line if you wish to use Hometable data in scene

Please login or register to see this code.

 

 

POPUP MESSAGE TYPES

Default popup message type, possible values: Success, Info, Warning, Critical.

Please define popup message default popup type, button caption and buttons if you wish

These defaults can be left as is or modified/translated into your own language 

Please login or register to see this code.

Please refer to Sankotronic Tutorial "Popup Notifications and Custom Images" for format and examples

 

POPUP REDIRECT TITLES AND SUBTITLES

Please amend the text sent to PopUp Notification when Internet or TTS is offline to your own language if you wish. Both Title and subtitle can be modified

Please login or register to see this code.

 
SAMPLE MESSAGE INVOCATIONS
The message function can be invoked with as little as one parameter or as many as five parameters. The following examples will provide a good understanding. 
 
Send message to default notification service, with default titles/subtitles

Please login or register to see this code.

Send message to specific notification service
(The notification service must match exactly what is contained in the notifySve table in the variables section)

Please login or register to see this code.

(The hc2user in the message invocation must match exactly what is contained in the hc2emailUsers table in the user configuration section)

Please login or register to see this code.

(The hc2push device in the message invocation must match exactly what is contained in the hc2emailUsers table in the user configuration section)

Please login or register to see this code.

(The sonos player name in the message invocation must match exactly what is contained in either the APIplayers or REMplayers table in the user configuration section)

 

The target can also specify sonos player or VD id for TTS with options

Please login or register to see this code.

Custom titles and subtitles can also be specified. These will overwrite the default titles and subtitles. Subtitles are only available for HC2 Popup notifications. They can be used with or with a target notification. If the target is omitted it will send to the default notification service that has been named in the configuration section

Please login or register to see this code.

Finally an example of a Message to popup with specified popup type

 

Please login or register to see this code.

 

MESSAGE WITH INTERNATIONAL CHARACTERS

 

If you want to send message with special characters just use urlencode function:

Please login or register to see this code.

Please login or register to see this code.

 

COMPANION DEMONSTRATION VD INSTRUCTIONS (1.1)

A number of sample notification and TTS messages can be activated  giving the user an understanding of the message invocation format and options
Demonstration mode enabled the toggling of 'Internet online/offline', presentState Home/Away, sleepState Sleep/Awake modes. This capability allows the used to observe the queuing and unloading of queued notification messages and TTS messages in action. 

 

Import the VD into your home center 2.

Review the messages and adjust based on your own implementation of Smart Message Hub
Send messages and TTS as required
To demonstrate the queuing and unload of queue’s

  1. Set demo mode to ON. 
  2. Send messages and TTS and observe in selected notification services and apps, 
  3. Set internet to offline, sent messages and observe queuing, 
  4. Set internet to online, observer unloading of queue. 
  5. Set presetState to Away, send messages and observe queuing. 
  6. Set presentState to Home and observe unloading of queue. 
  7. Set sleepState to Sleep and observe TTS are silenced. 
  8. For normal operation - set Demo mode to OFF

 

 

FILES

[Smart Message Hub SCENE]  

Please login or register to see this attachment.

    (lua file)

 

WWWAPI Monitor Virtual Device

[VIRTUAL DEVICE] 

Please login or register to see this attachment.

 

Companion Virtual Device

[VIRTUAL DEVICE] 

Please login or register to see this attachment.

  

Edited by AutoFrank

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0
  • Inquirer
  • 5 hours ago, Jamie mccrostie said:

    @AutoFrank

    Wow that must have taken some work, thought you'd been quiet.

    Thanks @Jamie mccrostie

    Let me know how you get on or of you have suggestions for the next revision 

    Share this post


    Link to post
    Share on other sites
    • 0

    I'll be giving this a go when I get time to set it up.

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 12 minutes ago, Desmo said:

    I'll be giving this a go when I get time to set it up.

     

    @Desmo Thanks, Let me know how you get on

    Share this post


    Link to post
    Share on other sites
    • 0
    1 hour ago, AutoFrank said:

     

    @Desmo Thanks, Let me know how you get on

    its not going well for me.. I am trying to use hometable, but I am getting all sorts of issues with the Scene, I have moved the local hometable variable to the top of the script, but now I get :-

    line 74: bad argument #1 to 'match' (string expected, got nil)

     

    line 74 is part of your  rem lines, so its syntax probably for the devices (sonos and iPhone etc) that are using hometable..

     

    I suspect this line..

    REMplayers = {
      ["MasterBed"] = {vd=jT.bedroom1.sonos1, btn="28"},
      }     

    Edited by shaunfrost
    addition

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 1 hour ago, shaunfrost said:

    its not going well for me.. I am trying to use hometable, but I am getting all sorts of issues with the Scene, I have moved the local hometable variable to the top of the script, but now I get :-

    line 74: bad argument #1 to 'match' (string expected, got nil)

     

    line 74 is part of your  rem lines, so its syntax probably for the devices (sonos and iPhone etc) that are using hometable..

     

    I suspect this line..

    REMplayers = {
      ["MasterBed"] = {vd=jT.bedroom1.sonos1, btn="28"},
      }     

    Hi @shaunfrost

     

    Try and get it working without sonos and hometable.  These can be configured later. The scene has no hometable dependencies.

     

    The easiest way to start is to set the default notification for something like hc2email. You can configure extra hc2 email users later but the superuser ( in your hc2 login) is already set up 

     

    Then import the demo vd and click the hc2email demo button and this should send an email and you'll see this action echoed in the debug window and the email.  If you want to see more set deBugVar = true 

     

    After that you can select addition notifications to try ....

     

    Later you can select your sonos solution and configure that 

     

    I'll be online later and we can talk some more then 

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 13 hours ago, AutoFrank said:

    Hi @shaunfrost

     

    Try and get it working without sonos and hometable.  These can be configured later. The scene has no hometable dependencies.

     

    The easiest way to start is to set the default notification for something like hc2email. You can configure extra hc2 email users later but the superuser ( in your hc2 login) is already set up 

     

    Then import the demo vd and click the hc2email demo button and this should send an email and you'll see this action echoed in the debug window and the email.  If you want to see more set deBugVar = true 

     

    After that you can select addition notifications to try ....

     

    Later you can select your sonos solution and configure that 

     

    I'll be online later and we can talk some more then 

     

    Hi @shaunfrost

     

    let me know how you got on after we talked over PM last evening.

    I fixed the bug you found with the globals creation and the updated scene have been added to post 1

     

    Thanks also for pointing out that it you have some scene that is triggered by (global) presentState  changing from either Home --> Away or from Away --> Home , my companion vd for this scene may do the same thing. I added a caution note to post1 

     

    -f

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • Added link to Tutorial on creating a pushover account and setup to post 1

    Share this post


    Link to post
    Share on other sites
    • 0
    23 hours ago, AutoFrank said:

     

    Hi @shaunfrost

     

    let me know how you got on after we talked over PM last evening.

    I fixed the bug you found with the globals creation and the updated scene have been added to post 1

     

    Thanks also for pointing out that it you have some scene that is triggered by (global) presentState  changing from either Home --> Away or from Away --> Home , my companion vd for this scene may do the same thing. I added a caution note to post1 

     

    -f

    Hi there,

    All seems good here, I am going to create all the other message style accounts to have a go, but the TTS is already in place and retro fit into my existing scenes.

    Thanks @AutoFrank

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 29 minutes ago, shaunfrost said:

    Hi there,

    All seems good here, I am going to create all the other message style accounts to have a go, but the TTS is already in place and retro fit into my existing scenes.

    Thanks @AutoFrank

    Thanks @shaunfrost

    I've also starting to 'clean sweep' my own setup to only use this for messages and this has allowed me to consolidate a huge amounts already

    win win all round..

     

    Share this post


    Link to post
    Share on other sites
    • 0

    @AutoFrank, i want to send same message to 2 or more different accounts for example, 1 to push and 1 to telegram or to SonosTTS.

    When i setup 2 lines of SendMsg it only target the last one and i understand why.

     

    Please login or register to see this code.

     

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 6 minutes ago, jompa68 said:

    @AutoFrank, i want to send same message to 2 or more different accounts for example, 1 to push and 1 to telegram or to SonosTTS.

    When i setup 2 lines of SendMsg it only target the last one and i understand why.

     

    Please login or register to see this code.

     

     

    Hi @jompa68

    Have you tried a short sleep between the two 

    maybe 500ms or 1sec

    Share this post


    Link to post
    Share on other sites
    • 0

    Hi @AutoFrank,

     

    While we were testing scene I forgot to ask you for one more thing. Fibaro popup service has also type of popup message like "Success", "Info", "Warning" and "Critical" which defines color of popup message frame and also icon. Is it possible to add possibility to define this value from message invocation function in next release?

     

    I use popup service in many different occasions with different message types so it would be really nice to have possibility to define this instead of using only one default type. Thank you!

     

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 22 minutes ago, Sankotronic said:

    Hi @AutoFrank,

     

    While we were testing scene I forgot to ask you for one more thing. Fibaro popup service has also type of popup message like "Success", "Info", "Warning" and "Critical" which defines color of popup message frame and also icon. Is it possible to add possibility to define this value from message invocation function in next release?

     

    I use popup service in many different occasions with different message types so it would be really nice to have possibility to define this instead of using only one default type. Thank you!

     

     

    @Sankotronic

     

    yes - shouldn't be an issue.

    I'll drop you some ideas via PM

    Share this post


    Link to post
    Share on other sites
    • 0

    Been working very irregular the last 2 weeks, when I'm back in a normal ritme this scene is up for testing :)

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 1 minute ago, jimicr said:

    Been working very irregular the last 2 weeks, when I'm back in a normal ritme this scene is up for testing :)

     

    @jimicr

     

    That would be great.. thx :-D

    A couple of users have it running and seem pleased with it.

    I just integrating it across my own system at the moment and already getting rid of a lot of TTS and canned message 'vd buttons'

    Share this post


    Link to post
    Share on other sites
    • 0

    Hi @AutoFrank,

     

    I already added this feature in my copy of scene. I will send it to you on PM. Can you please correct message function by changing last subtitle to msubtitle:

    Please login or register to see this code.

    otherwise subtitle will never be forwarded to the scene.

    Share this post


    Link to post
    Share on other sites
    • 0
  • Inquirer
  • 3 minutes ago, Sankotronic said:

    Hi @AutoFrank,

     

    I already added this feature in my copy of scene. I will send it to you on PM. Can you please correct message function by changing last subtitle to msubtitle:

    Please login or register to see this code.

    otherwise subtitle will never be forwarded to the scene.

     

    Thanks @Sankotronic

    Post corrected

    Share this post


    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    ×