From d012717b835edbe4ff999c9cdbdbe908b68fd042 Mon Sep 17 00:00:00 2001 From: Jeremiah Wuenschel Date: Sat, 6 Feb 2016 21:54:08 -0800 Subject: [PATCH] Created a rough draft describing the MQTT Bridge setup --- ...ings-with-MQTT-and-Home-Assistant.markdown | 191 ++++++++++++++++++ .../SmartThings-HomeAssistant.png | Bin 0 -> 52969 bytes 2 files changed, 191 insertions(+) create mode 100644 source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown create mode 100644 source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png diff --git a/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown new file mode 100644 index 00000000000..61ecb36d59d --- /dev/null +++ b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown @@ -0,0 +1,191 @@ +--- +layout: post +title: "Smarter Smart Things with MQTT and Home Assistant" +description: "Jer and St. John describe how they connected SmartThings with Home Assistant." +date: 2016-02-09 10:10 -0700 +date_formatted: "February 09, 2016" +author: Jeremiah Wuenschel and St. John Johnson +comments: true +categories: User-Stories +og_image: /images/blog/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.jpg +--- + + +_This is a guest post by Home Assistant users [Jeremiah Wuenschel](https://github.com/jer) and [St. John Johnson](https://github.com/stjohnjohnson)._ + + +### Why combine SmartThings and Home Assistant? + + +### Bridge Design +**HTTP Endpoint**: There are really only 2 ways to communicate with the SmartThings hub that we could find. The easiest approach is to create a RESTful SmartApp authenticated with OAuth that provides state changes via HTTP directly. This approach is pretty straightforward to implement, but it requires communication with the SmartThings cloud service, and can't be done entirely on your LAN. We hoped to keep all communication internal, and came up with a second approach. + +**Custom Device Type:** SmartThings custom device types allow developers to define handlers for HTTP events received directly over the local network by the SmartThings hub. Messages received are authenticated by MAC address, and can contain arbitrary strings in their payload. Since a Device Type is only ever tied to a single device, we need to add a SmartApp to the mix in order to translate events between individual devices and our special Home Assistant Bridge device. Here is what we have so far: +``` +Z-Wave Switch | +Zigbee motion sensor |<---> Bridge App <---> Bridge Device Type <---> +Z-Wave light bulb | +``` + +On the Home Assistant side, there is a powerful platform available based on the MQTT lightweight message bus protocol. Everything from lights to switches to temperature sensors can be defined in Home Assistant as an MQTT component, so it makes for a convenient integration point. This requires an MQTT broker for handling the message bus, and one last piece to translate between the HTTP that SmartThings supports and MQTT. + +Here is the final sequence of events: + +![SmartThings Bridge Sequence]("/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png" "SmartThings Bridge Sequence") + + +There are a lot of stops along the way for these events, but each piece is a simple translation layer to shuttle the events between systems. + +## Setting up the MQTT bridge + +### MQTT + +Assuming that you already have Home Assistant and Smart Things running, you wil first want to get an MQTT broker running. There are a handful of [MQTT][mosquitto] [brokers][emqttd] available in Open Source land. We chose [Mosca][mosca] for its simplicity. + +There is very little you need to do to get Mosca running. The easiest approach is to install [Docker][docker], and run a command like the following: + + $ docker run \ + -d \ + --name="mqtt" \ + -v /opt/mosca:/db \ + -p 1883:1883 \ + matteocollina/mosca + + +This will start Mosca up inside of a docker container, while keeping persistent storage for Mosca in `/opt/mosca`. The default configuration is the only thing we need to get things up and running. + +If you don't want to mess with Docker and can get node.js installed without trouble, the [Standalone][mosca-standalone] instructions are all you need. + +### MQTT Bridge + +This is the small piece of magic that bridges the gap between MQTT and SmartThings. It is a node.js app, and like Mosca it is probably easiest to install with Docker: + + $ docker run \ + -d \ + --name="mqtt-bridge" \ + -v /opt/mqtt-bridge:/config \ + -p 8080:8080 \ + stjohnjohnson/smartthings-mqtt-bridge + +The code for this bridge is [on Github][mqtt-bridge] if you want to start it up independently. + +The MQTT Bridge only needs to know where your MQTT broker lives. If you are using these docker commands as-is, edit `/opt/mqtt-bridge/config.yml` to look like this: + +```yaml +--- +mqtt: + host: localhost +``` + +Restart the bridge, and you are ready to go: + + $ docker restart mqtt-bridge + +### SmartThing + +The next step is the device type. Go to the [Smart Things Device IDE][ide-dt] and `Create New Device Handler`. Choose `From Code` and paste in the [MQTT Bridge Device Code][devicetype]. Click Save. + +Now to install your new Device Handler. Go back to `My Devices` in the IDE, and click `New Device`. Enter a name, and pick any random set of characters for the Device Network Id (this will automatically update later). For Type, scroll to the bottom of the list and find your newly created `MQTT Bridge`. Fill in the other boxes however you like. + +Go back to `My Devices`, and click on your new device in the list. This will bring up a page that allows you to edit your device's Preferences. Click `edit` and fill in the 3 pieces of information it asks for. + + MQTT Bridge IP Address: + MQTT Bridge Port: <8080 if you have changed nothing in the previous commands> + MQTT Bridge MAC Address: + +This will create the link between SmartThings and the MQTT Bridge. + +### SmartApp + +The last step is to setup the SmartApp. After this, any registered devices will start sending their events to MQTT. + +Go to the [Smart App IDE][ide-app]. Click `New SmartApp`, followed by `From Code`. Paste in the [MQTT Bridge SmartApp code][smartapp] and click `save`. In the SmartThings mobile app, add the new SmartApp and configure it with your devices and MQTT Bridge device. Clicking `done` will subscribe SmartThings to your MQTT broker and begin 2-way propagation of events. + +### Configure Home Assistant + +To add SmartThings devices to Home Assistant over MQTT, first enable MQTT in Home Assistant: + +```yaml +mqtt: + broker: localhost +``` + +Replace `localhost` with the location of the running MQTT Broker. Devices from the MQTT Bridge are published to the path `/smartthings//` + +For example, my Dimmer Z-Wave Lamp is called "Fireplace Lights" in SmartThings. The following topics are published: + + # Brightness (0-99) + /smartthings/Fireplace Lights/level + # Switch State (on|off) + /smartthings/Fireplace Lights/switch + +Here is an example Home Assistant config: + +```yaml +switch: + platform: mqtt + name: "Fireplace Lights" + state_topic: "/smartthings/Fireplace Lights/switch" + command_topic: "/smartthings/Fireplace Lights/switch" + brightness_state_topic: "/smartthings/Fireplace Lights/level" + brightness_command_topic: "/smartthings/Fireplace Lights/level" + payload_on: "on" + payload_off: "off" + retain: true +``` + +We recommend `retain: true` for every MQTT device in order to keep states in sync when things become disconnected. + +Start digging through the [MQTT Components][mqtt-ha] in Home Assistant to find which components map to the new events being published to MQTT. + +### Configuring with Docker-Compose + +Our personal prefernce for starting the whole suite of software is to use a single Docker-Compose file. + +Just create a file called docker-compose.yml like this: + +```yaml +mqtt: + image: matteocollina/mosca + ports: + - 1883:1883 + +mqttbridge: + image: stjohnjohnson/smartthings-mqtt-bridge + volumes: + - ./mqtt-bridge:/config + ports: + - 8080:8080 + links: + - mqtt + +homeassistant: + image: balloob/home-assistant + ports: + - 80:80 + volumes: + - ./home-assistant:/config + - /etc/localtime:/etc/localtime:ro + links: + - mqtt +``` + +This will start home-assistant, MQTT, and the Bridge, in dependency order. All config can reference the name of the docker container instead of localhost (e.g. mqtt for the broker host in Home Assistant). + +### Future Improvements +- **Raspberry pi**: There is a lot of interest in getting this running on the Raspberry Pi. It only requires binaries compiled for ARM, so we plan to get ARM-compatible versions of the containers going at some point. +- **Authentication for MQTT**: At the moment, the MQTT bridge doesn't understand how to authenticate to MQTT, so only unauthenticated MQTT is supported. This is mitigated to some degree if you use our Docker Compose config, because MQTT's port is not actually shared publicly. +- **Authentication for MQTT Bridge**: Right now the bridge expects that anyone subscribing is the SmartThings hub. This could use proper authentication. + + +[mosquitto]: http://mosquitto.org/ +[emqttd]: https://github.com/emqtt/emqttd +[mosca]: http://www.mosca.io/ +[docker]: https://www.docker.com/ +[mosca-standalone]: https://github.com/mcollina/mosca#standalone +[mqtt-bridge]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge +[ide-dt]: https://graph.api.smartthings.com/ide/devices +[devicetype]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/devicetypes/stj/mqtt-bridge.src/mqtt-bridge.groovy +[ide-app]: https://graph.api.smartthings.com/ide/apps +[smartapp]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/smartapps/stj/mqtt-bridge.src/mqtt-bridge.groovy +[mqtt-ha]: https://home-assistant.io/components/mqtt/ diff --git a/source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png b/source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0d2b970dec8114666cd81f57bb1f00c570c47f GIT binary patch literal 52969 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 F{tp!=O$Gn} literal 0 HcmV?d00001