I recently posted a video on YouTube demonstrating several smart home integrations I configured with Google Home, SmartThings, Harmony, and IFTTT. The video was created, with quick turn around, based on a recent exchange I had with the fine people at SmartThings
— SmartThings (@smartthings) November 8, 2016
I’ve since received several requests, via the YouTube comments, to detail my configuration/setup. As a result, I’ve decided to put together this post to help answer the many questions received.
Before I jump into the details, I’ll first list out the different components used within the demonstrated ecosystem. (I do have other smart-capabilities configured, but I will keep this post centered on only those demonstrated in the video. I’ll save other integrations, such as my garage door or alarm system, for possible future content.)
It takes both software and hardware working in harmony to make my smart home a reality. For the sake of this post, I’ve separated the hardware components into two categories: traditional and smart. Think of “traditional” hardware as everyday appliances and systems, such as light bulbs or televisions. I classify “smart” hardware as devices connected to a network for home automation purposes. Smart devices connect to a local network, such as one powered by Z-Wave and ZigBee protocols, or a traditional TCP/IP configuration (e.g., Wi-Fi). These devices are usually always-on and are waiting for commands. (While traditional devices, such as a TV or networking switch/router, can be connected to a network, I don’t classify them as “smart” if they aren’t used to control, or broker the control of, devices.) The home automation network can be considered the backbone of any smart home.
A hub can be used to help connect and control the devices on your network. While there are many on the market, Wink and SmartThings are two of the more popular devices available. I chose to leverage the SmartThings platform due to their community support, compatibility, maturity, and company backing (SmartThings is a subsidiary of Samsung). The SmartThings Hub is compatible with both the ZigBee and Z-Wave protocol and, as a result, can communicate with most smart devices.
In addition to the SmartThings Hub, I leveraged many other devices in the video. Here is a quick run down of those devices, plus some of the software that was in use:
- Stereo Receivers: I had three stereo receivers (a.k.a., tuners) in the video.
- Television: One 46″ TV hanging over my fireplace
- Speakers: Many in-ceiling and in-wall speakers
- Light Bulbs: Traditional incandescent and florescent light bulbs, such as my can lights, sconces, and counter lights
- Desktop Computer: I won’t share much about how it was used, other than to note that I use a desktop computer to stream cable TV and digital content. This is done via Windows Media Center. My media streaming setup deserves its own blog post at a future date.
- Xbox 360: Goes along with my Media Center setup. I’ll touch on this a bit more below.
- Networking Gear: I won’t go into the details here, but just think network switches, wireless routers, and all of the devices required to run a traditional home network.
- Harmony Hub: Device that broadcasts infrared signals to traditional devices, such as my receiver, TV, and Xbox 360. I have many in the house, but three were used in the video.
- Google Home: Device that translates voice into commands and actions
- Google Chromecast: A second-gen Google Chromecast to display content
- Google Chromecast Audio: Three Chromecast Audio devices
- Smart Switches: By quick count, I had north of 10 smart switches at use during the demonstration. This includes on/off (i.e., toggle) ZigBee switches, Z-Wave dimmers, and ZigBee dimmers. I have switches from both GE and Leviton. I also have several add-on switches from GE and Leviton for my three-way switch configurations.
- SmartThings Hub: My smart home integration hub. It truly is the hub at the center that helps connect most of my components.
- IFTTT: An integration service also know as If This Then That. In simple terms, this is an internet service that perform actions based on events.
- SmartThings SmartApps: The aforementioned SmartThings Hub really just helps me connect to the important stuff, the SmartThings cloud-based rules engine.
My smart home comes to life when this software and hardware works together. The number of customizations you can configure in both IFTTT and SmartThings are only paralleled by your imagination (ok…maybe an exaggeration).
Below is a logical picture to help illustrate the smart home ecosystem used in the video.
With that as context, let’s walk through each scenario from the video and explain how the components work together. I don’t go into every detail, but I do link to posts and forums that can provide a bit more information if required.
Scenario 1: Dim the Main Floor lights to 40%
With this one command, I dimmed the lights in 4 rooms on my main floor. Specifically, I dimmed my Living Room, Billiard Room, Kitchen, and Breakfast Nook.
Each room has multiple lights, such as can lights, sconces, or, in the case of my breakfast area, a chandelier. Every single bulb can be classified as traditional. While I have a few “smart” light bulbs in my house, none were used in the video. I’ve received several YouTube questions about the type of bulbs in my house, so it is worth repeating: the lights used in the video are regular light bulbs you may have purchased at Home Depot, Lowes, or Ace Hardware during the last several decades.
Each grouping of lights is controlled by a switch, just like your house, apartment, or office building. For example, I have a three-way switch that controls my Kitchen can lights, an on/off switch that controls my Kitchen counter lights, and a single dimmer that controls my Billiard Room can lights. This is just like a house you would have walked into 20 years ago, with one slight difference: the switches I have in my wall are “smart.” I’ve replaced the traditional switches in my wall with ZigBee and Z-Wave switches. To the naked eye, these switches look and act just like any other switch. However, these are now connected to my home automation network and can be controlled remotely by SmartThings. Using the SmartThings app to turn the switches on or off is a great example of remote control capabilities. (One side note worth calling out here: when you power most ZigBee and Z-Wave devices through your home wiring – think romex or a wall outlet, that device will help extend and strengthen your home automation network. The devices will repeat signals to help connect those devices that far way from the hub. This repeating capability does not work with battery powered devices. Battery powered devices benefit from the repeating capability, but do not repeat themselves.)
Let’s assume for a moment that instead of using Google Home, I used my SmartThings Android app to control my lights. Further, let’s assume I only wanted to control my Living Room lights. To make this work, I would open the SmartThings app, scroll through my connected “Things,” and find the Living Room Dimmer switch. I would then have the ability to turn the switch off or on, or set the dim level to the percentage of my choosing. The SmartThings app connects to the SmartThings cloud service, which then connects to my SmartThings hub. The SmartThings hub is connected to my smart light switch, as described above. It flows in this manner: Phone App -> SmartThings Cloud -> SmartThings Hub -> Smart Switch -> Traditional Lights
Let’s now add Google Home to the equation and issue the following voice command: OK, Google. Dim the Living Room lights to 40%. In this scenario, I’ve simply replaced my SmartThings app with Google Home. Meaning, Google Home connects to the SmartThings cloud, which connects to my hub, which controls my switch.
Now it is time to complicate things a bit. In the video, I dimmed multiple rooms, not just my Living Room. Each of these rooms has one or more smart light switches. There are several options I could have used to control multiple switches:
- Issues one voice command after another: OK, Google. Dim the Living Room lights to 40%. OK, Google. Dim the Billiard Room lights to 40%. OK, Google. Dim…
- I could have created a fake room via the Google Home settings menu and placed all of my lights in that room. I could have called that room “Main Floor.” However, Google only allows you to assign a device to one room. Therefore, if I went this route, I would not be able to keep my Kitchen lights in the Kitchen room, since they will be in this fictitious “Main Room.”
- I can use some really neat capabilities within the SmartThings ecosystem and, specifically, a virtual switch. This is the route I chose, so I will explain this in a bit more detail.
Via the SmartThings website, you can create a fake switch (a.k.a., virtual or simulated switch). For my setup, I created a fake switch and called it “Main Floor Lights.” By itself, this switch does absolutely nothing. If I was to open up my SmartThings Android app, after creating the switch, I could turn the switch off an on, but it will do absolutely nothing; t is not connected to any hardware in my house. However, when you couple this fake switch with a SmartThings SmartApp, you really unlock your home automation capabilities. I use a SmartApp called Community’s own Rules Engine (CoRE). I’ll have to turn your attention to the SmartThings community for more information on CoRE, as this is a meaty topic all by itself.
Using a CoRE rule, I connected my fake Main Floor Lights switch to all of the switches in my Living Room, Billiard Room, Kitchen, and Breakfast Nook. I have this fake switch configured as a master switch that copies a single command and broadcasts that copy to each of my designated switches. When using my “dim the lights to 40%” example, I can now open up my Android app, find the Main Floor Lights switch, set the switch to 40%. That switch will do nothing but pass on that same command to all of my other switches, turning that one command into many. If I now swap my Android app with Google Home, I can do the same thing via a voice command.
Putting that all together, here is what happens when I bark the command “dim the main floor lights to 40%”
- Google Home hears my voice and converts my voice into a single command to the SmartThings cloud service. Specifically, it asks SmartThings to set my Main Floor Lights to 40%.
- SmartThings knows it has a virtual switch called Main Floor Lights and it sets the level to 40% based on Google’s command.
- My virtual switch broadcasts that same exact command to the Kitchen, Living Room, Billiard Room, and Breakfast Nook SmartThings switches.
- The SmartThings cloud system connects to my physical SmartThings hub.
- The SmartThings hub tells my physical smart switches to set the light level to 40%.
- The smart switch simply controls my regular light bulbs.
That was definitely a lot to consume for my first scenario, but do note that most of these concepts translate into the rest of my examples.
Scenario 2: Set the Floor lights to 100%
This is the same situation as scenario 1, except that I set the level to 100% instead of 40%
Scenario 3: Shut the Counter lights off
My counter lights are connected to a smart on/off toggle switch. These lights are not on dimmers because they are florescent lights, which can’t be dimmed. I have two completely independent smart switches controlling my Counter lights, as these lights are on both sides of my Kitchen on different hard-wired connections. I use the Smart Lighting SmartApp to virtually connect both switches. Through this configuration, I can flip one switch, whether it be physically or remotely, and the other switch will automatically change to the same state. This keeps me from having to tun on one switch, and then walk over to the other side of the Kitchen (1st world problems) to turn on the other. They work in harmony.
In this specific scenario, I simply have Google Home issue a command to just one of my SmartThings connected counter toggle switches. Once that toggle switch is changed, the other, via the Smart Lighting SmartApp, changes too.
Scenario 4: Shut off the Kitchen lights
Google Home has the concept of rooms. You can learn how to create and modify the rooms via the Google Home Help site. In this scenario, I have a room called Kitchen. This room has my counter lights as well as my overhead can lights connected. Both are on separate physical switches controlled by SmartThings. The command flows in the following manner: Google Home voice command looks for all lights in the Kitchen. It then issues a command to the SmartThings cloud service to turn those lights off. Everything else is the same as the previous scenarios.
Scenario 5: Turn all of the lights on
Google basically looks at all of the Google configured rooms where I have lights connected. It then issues a command to SmartThings to turn them all on. It is not setting the level, but simply turning them on just like you would if you walked up to the wall switch. The rest is just like before.
Scenario 6: Turn on the Living Room screen
It is now time to jump into my home entertainment configuration. Let’s first start by introducing my Harmony Hub. I encourage you to read all about it on their website, but, in short, it is a glorified universal remote control that issues infrared (IR) commands to my traditional entertainment devices. It knows how to control my TV, stereo receiver, and anything that can be controlled through IR. The receiver is hidden in a cabinet right next to the hub. The TV is above the fireplace and has a hidden wire transmitting the signal. In this scenario, I have it turning on both devices, and setting the appropriate inputs. This is accomplished through Harmony Activities. For this activity, I set the stereo receiver input to the HDMI port where I have a Google Chromecast connected.
While it is great that the Harmony Hub can control all of these devices, it is only useful if you have something that tells the hub which activity to execute. This can be done in many way. Three examples include:
- Through the physical remote control that comes with the Harmony Hub.
- Through the Harmony Hub Android App.
- Through connecting SmartThings with the Harmony Hub cloud service.
For this specific scenario, I am using example three. Fortunately, the SmartThings and Harmony cloud services can communicate with each other. They work in harmony. (OK…that was bad, I admit.) In addition to communicating with each other, Harmony creates the aforementioned virtual switches within SmartThings for you automatically. Therefore, I have a virtual switch in SmartThings for each one of my Harmony Activities.
Now that the configuration and capabilities have been explained, let’s connect the dots on how this scenario is executed:
- Voice command issued to Google Home to turn on the living room screen.
- Google Home sends that command to SmartThings and tells SmartThings to turn on the fake switch called Living Room Screen.
- The fake switch passes that command on to the Harmony cloud service.
- The Harmony cloud runs the Living Room Screen activity and tells the physical Harmony Hub to send out a bunch of IR commands to my TV and receiver.
- Everything is on!
There is one slight nuance you may have noticed in the video. When my screen turns on, my living room sconces dim. That is part of my Harmony Activity rule. I have connected my SmartThings dimmer switch with my Harmony Activities. I have a rule that automatically sets the dim level if the Living Room Screen is turned on and the sun has set. This is a good example of how Harmony can issue commands to SmartThings just as easily as it receives them.
Scenario 7: Play a SmartThings video on my Living Room Screen
Now that my screen is on, content can be broadcasted. Out-of-the-box, Google Home can cast content to your configured Chromecast devices. When I asked for a “SmartThings video,” it automatically conducted a search on YouTube and it sent the first result to my Chromecast device called Living Room Screen.
Scenario 8: Stop YouTube
Google Home was aware that it was playing a YouTube video. I simply asked for it to stop playing.
Scenario 9: Turn on the Living Room TV
This is almost identical to Scenario 6, with a few nuances. Google Home has issued a command to SmartThings to turn on the Living Room TV switch. In this case, the switch is connected to a Harmony Hub Activity with the same name. That activity turns on my TV and my stereo receiver. It also turns on my Xbox 360, going straight into Windows Media Center, and sets my receiver to the Xbox 360 HDMI connection. I will save my Windows Media Center setup for another post. Just know that all of my digital content, including cable TV, runs through a central location/desktop in my house. The content is then distributed to the Xbox 360 head unit, also know as an extender. I don’t have a single cable box in my house. My Xbox 360 devices serve this purpose.
Scenario 10: Turn on Live TV
This is just another Harmony Activity. This activity does the same as before, but it hits a button on the virtual remote control to turn on the last channel that was viewed.
Scenario 11: Turn off the living room TV
This simply turns off the Harmony Activity via the SmartThings virtual switch.
Scenario 12: Start the party
It is now time to introduce IFTTT. Think of IFTTT as a middle man that helps turn events into other actions. You can use it for way more than home automation, and what is demonstrated in my video. For example, I have it setup to automatically text my wife when I leave the office.
For this scenario in my video, I have configured a Google Assistant IFTTT Applet. This applet listens for a custom phrase from the Google Home device. This phrase can be virtually anything, and you can also have alternate ways to say the phrase. For example, I setup “start the party,” which can also be activated by saying “let’s party” or “it’s party time.” All phrases will trigger the same action in IFTTT. For this integration, I chose that action to be a fake switch in my SmartThings environment. “Start the party” simply turns on a SmartThings virtual switch I creatively named “Virtual Party Switch.” In addition to turning the switch on, it also replied with a phrase to let me know it understood and executed my command. In this case, it responded with “Party started. I hope you party like it is nineteen ninety-nine.”
Through a moderately complex CoRE rule, I’ve configured the Virtual Party Switch to do the following:
- Turn on all of the lights in my house and, for those lights that can be dimmed, set the dim level to 50%.
- Activate three Harmony Activities. Each of these activities is connected to its own Harmony Hub. I have three Harmony Hubs in this example (Patio, Main Floor, and Basement) and each received a command from SmartThings.
The Harmony Activities executed in this example powered on all of the stereo receivers and set the inputs to the one that has my Chromecast Audio connected. As a result, my house now has three Chromecast Audio devices wired to all of my house speakers, including in-wall and in-ceiling speakers, waiting for audio content.
Scenario 13: Play music on the House Speakers
I have my Google Home connected to my Google Music subscription. Out-of-the-box, Google Home can connect to a Chromecast Audio device or group. I have the three aforementioned Chromecast Audio devices connected as a group called House Speakers. When I requested music, Google randomly selected a song and casted it to my designated group. I could have easily asked for a specific song, or I could have played it to one zone/receiver in my house. However, since this is a party, I chose to cast it house-wide.
Scenario 14: Stop the party
This is another custom Google Assistant phrase issued via the IFTTT integration. This phrase will issue an “off” command to my Virtual Party Switch introduced earlier. I have three phrases configured to issue this same command: 1. stop the party, 2. party is over, and 3. it’s closing time. All would have instructed SmartThings to turn off the Virtual Party Switch. As a reminder, this switch is powered by a CoRE rule. This rule shut down my home entertainment devices, such as the three receivers, as well as my basement and outside lights. It also sets my main lights to 100% (because you always have to clean up after a party and I’m going to need some light). To confirm the IFTTT applet heard me correctly, I’m met with the custom response of “Party has been stopped. What a bummer.”
Scenario 15: Turn everything off
If you have made it this far, I’m impressed. This is the last example demonstrated in the video, and it is actually the least sophisticated. It simply looks at all of the switches I have connected – in this case, all of my SmartThings switches, whether they are virtual or real – and turns them off. I don’t give Google Home visibility into all of my switches and devices, as many are behind the scenes, or I just don’t want Google Home controlling. In this case, it shut off 22 switches.
The saying “there are many ways to skin a cat” is very applicable with my setup. There are numerous ways to achieve the same results. You can choose to swap out different smart devices (e.g., a Google Home with a Amazon Echo) or create completely different rules. I’m sure there are ways to streamline the actions and activities and I encourage you to experiment on your own.
Either way, my configuration meets my needs and I have since added more smart capabilities since I recorded the video, and I will continue to tinker.
Drop me a line in the comments and let me know what you think. Also, if I receive enough request, I just might publish a post on my Windows Media Center setup. (Sorry, I won’t be sharing info on my closed-circuit camera and security system; I don’t think that would be a wise move.)