SmartThings are Groovy
Toward the end of 2016 everyone was complaining about what a terrible year it was and as I reflected upon my own 2016 I thought it went well in the realm of technology. Google released the first generation pixel phone and along with it the Google Home. I had read some stories about Google Home being compatible with the SmartThings ecosystem for home automation and I had always dreamed of a smart home so naturally I bought the SmartThings kit and dove right in.
One of the initial features I wanted was a way for the home and I to communicate. The Google Home seemed to allow bi-directional communication in the sense that I could speak commands and it could be a speaker to broadcast notifications or report other home metrics or SIRENS. To my disappointment the Google Home has not been able to fill this role as I have dreamed and I have struggled over the years to make it a reality.
Initially I looked at some projects that use the casting features built into the Google Home and chromecast devices but the response time is pretty slow and if you are already casting media it is stopped and not resumed. Another solution was to purchase a speaker that was already fully compatible with SmartThings and there are a few that were tempting but I kept thinking I have multiple chromecast audios and multiple Google Homes and in the interest of saving money and space I don't want to add more hardware when the hardware I have is capable (or I felt it should be capable).
So here we are at the end of 2018 and wow has the SmartThings community expanded. A user on the forums has built a handy NodeJS app, Google Assistant Relay, that can broadcast to the Google Home using a recently added feature in the Google Assistant SDK called broadcasting. Not only that, Google recently announced they are expanding the broadcasting feature to support replies from the assistant. These improvements are phenomenal and after getting the Google Assistant Relay setup I was able to POST a JSON message to it which then broadcast whatever text I wanted to all of the Google Homes in my house.
This is what I had been looking for so I scoured around the SmartThings forum to find a smartapp to put the Google Assistant Relay to use and get my notifications broadcasting but I could not find one. So after a little research and development I put together a smartapp that allows you to select the SmartThings devices you want to receive notifications for.
Important: The smartapp and device handler will only work with a functioning Google Assistant Relay v2 server.
SmartApp: Used to broadcast SmartThings device state changes to your Google Home using the Google Assistant Relay v2. The smartapp listens for smartthings device events and POST's a JSON message to the Google Assistant Relay v2 server when a device event is triggered.
Device Handler: Can be used in conjunction with 3rd party tools (ie. WebCoRE) to send custom notifications to your Google Assistant Relay v2 server.
You do not need to install both the smartapp and device handler. If you only want device notifications the smartapp will do that autonomous from the device handler. The device handler is handy to have if you are integrating other smartapps or 3rd party applications that need a smartthings device to perform an action. Currently the device handler only supports the speech synthesis capability.
Install Instructions: Installing the SmartApp on the SmartThings hub and in the SmartThings App
STEP 1: Install the SmartApp on the Hub
Method 1
Login to your SmartThings API account
https://account.smartthings.com/
Click My SmartApps
Click Settings
Click Add new repository and fill in the fields with these exact values and click Save:
Owner: braytonstafford
Name: google-assistant-relay
Branch: master
Click Update from Repo and select google-assistant-relay (master)
In the right side panel under New (only in GitHub) check the box next to smartapps/braytonstafford/google-assistant-relay-notifications.src/google-assistant-relay-notifications.groovy
Check the box for Publish
Click Execute update
Method 2
Login to your SmartThings API account
https://account.smartthings.com/
Click My SmartApps
Click New SmartApp
Click From Code
Copy and Paste the code from here into the code editor
Click Create
Click Publish -> For Me
STEP 2: Setup the SmartThings Mobile App
Open the SmartThings App
Go to the Marketplace
Click SmartApps
Click My Apps
Click Google Assistant Relay
Choose the devices you want to receive notifications when their state changes.
Fill in the Google Assistant Relay Hostname or IP Address
Fill in the Google Assistant Relay Port
Click Save
You should now hear broadcasts to your Google Home when the selected devices' state changes.
Install Instructions: Installing the Device Handler on the SmartThings hub
STEP 1: Install the Device Handler on the Hub
Method 1
Login to your SmartThings API account
https://account.smartthings.com/
Click My My Device Handlers
Click Settings
Click Add new repository and fill in the fields with these exact values and click Save:
Owner: braytonstafford
Name: google-assistant-relay
Branch: master
Click Update from Repo and select google-assistant-relay (master)
In the right side panel under New (only in GitHub) check the box next to smartapps/braytonstafford/google-assistant-relay-speech.src/google-assistant-relay-speech.groovy
Check the box for Publish
Click Execute update
Method 2
Login to your SmartThings API account
https://account.smartthings.com/
Click My Device Handlers
Click Create New Device Handler
Click From Code
Copy and Paste the code from here into the code editor
Click Create
Click Publish -> For Me
STEP 2: Create the Device on the Hub
Login to your SmartThings API account
https://account.smartthings.com/
Click My Devices
Click New Device
Enter these values in the fields and click Create:
- Name: Google Assistant Relay Speech
- Label: Google Assistant Relay Speech
- Device Network Id: GoogleAssistantRelaySpeech1
- Type: Google Assistant Relay Speech
- Version: Published
- Location: [YOUR LOCATION]
- Hub: [YOUR HUB]
- Group: Location: [YOUR GROUP] (if applicable)
STEP 3: Setup the Device in the SmartThings app
Open the SmartThings App
Go to My Home
Under the Things tab click the Google Assistant Relay Speech device
Click the settings wheel in the top right
Enter the Google Assistant Relay Hostname/IP Address and Port
Click Save
If you give it a try and run into any problems feel free to open an issue in the github repo and I'll check it out. I hope you are as excited as I am to get started broadcasting my SmartThings events throughout my house via broadcast messages on Google Home.
Head over to the SmartThings forum post to engage with the community.