What is SmartThings?
SmartThings is a technology used to create a connected home. At its core, SmartThings is a cloud-based service that interfaces with a user’s SmartThings hub. Its design allows for quick and seamless additions of many types of sensors to a home network. Devices connect to the hub using either the Z-Wave or ZigBee standard.
Why combine SmartThings with OpenSensorHub?
The two technologies appear to attempt the same thing, making the internet of things accessible. It seems then, that combining the two would only be redundant. This isn’t the case. SmartThings exists as a simple, easy to use, but somewhat closed system. Some types of sensors or sensor packages are not directly supported by SmartThings, even though it is extensible through its own API and web-based IDE. Also, the ability to customize the way data is viewed through SmartThings is limited in comparison to OpenSensorHub (OSH).
OSH, on the other hand, is entirely devoted to inclusivity and customizability, using primarily technology based on the OGC Sensor Web Enablement (SWE) open standards. The core of the idea revolves primarily around two ideas:
- That it should be possible for all sensors to essentially “speak the same language” and
- That there is a real need for rapidly deployable and easily configurable sensor systems.
The crux is that SmartThings has created an ecosystem supporting a more constrained set of sensors, while OpenSensorHub allows seemingly unrelated sensors to communicate easily and effectively.
What Use Cases Exist for this Software?
SmartThings is marketed mainly for home monitoring, but we see potential value in using this system in commercial spaces when paired with OpenSensorHub. The ease of setup of the standard SmartThings system combined with the ability to replay the data and effectively visualize it make a strong case for the technology as a supplement to traditional security measures.
Another case we have tested for is quick deployment on site. So long as the SmartThings hub has a wired internet connection it can be inserted into a site in a preconfigured state. This allows the sensor network to be deployed within minutes assuming it has already been configured offsite. Further refinements to the system like pairing it with its own mobile access point can remove the need for access to the wired network of a building.
When combined, the two services allow us to geolocate important events tied to the SmartThings devices. A security team can see that motion has been triggered or a door opened and have OSH task a camera with remote Pan-Tilt-Zoom capabilities to view the event, providing nearly seamless awareness of a situation. Quickly deployed smart lights can be used to light a path showing available egress routes to bystanders once they are triggered by some other event such as a smoke detector or chemical sensor.
This was demonstrated recently in an “active shooter/hostage” exercise in which SmartThings-supported sensors (motion detectors, door monitors, etc) were rapidly deployed an accessed by an OpenSensorHub node to augment other sensors (chem-bio detectors, fixed and mobile cameras, drones, etc.) in order to provide more complete situation awareness and a common operating picture involving all relevant sensors.
How is the Technology Implemented?
SmartThings provides an API based on a subset of the Groovy programming language. This API allows anyone to create a SmartApp (Samsung’s term for the app that runs in their cloud using their API) that is installed as part of the SmartThings mobile app (iOS and Android). We use this API to create a simple and lightweight SmartApp that uses simple HTTP requests to accomplish a few things within OpenSensorHub. All communication to OSH from SmartThings is handled by the Sensor Observation Service’s Transactional profile (SOS-T). The currently enabled actions are as follows:
- Insert a sensor with a unique identifier into a running OSH instance
- Provide OSH a result template for each sensor capability. Note:
- A capability corresponds to a single measured quantity in SmartThings (i.e. an observable property); multi-sensors have several capabilities.
- A result template is simply an XML description of the structure and content of observation values that will be sent to the OSH node
- Send data to OSH according to the expected result template
NOTE: the insertSensor and insertResultTemplate calls are only made once, whereas the insertResult request is repeated for each new observation event.
These HTTP request results are used within SmartThings to map sensor IDs to their respective URIs and in turn to map the OSH sensor IDs to the SmartThings device capabilities. It is important to do this as Sensor devices in SmartThings and their corresponding sensor in OSH may not be identified in the same manner internally.
At this time, the SmartApp is never exposed to the inside of the OSH instance, which may support other sensors running on the same node. We may aim to change this in a later version of our SmartApp if it is a requirement to allow OpenSensorHub to task devices on the SmartThings network.
During the configuration of the OSH node, the deployer is able to select which SensorThings sensors to provide to the OSH node (as shown in the figure below). The design of this software allows sensor data to still be exposed through SensorThings interfaces while also being supported by the OpenSensorHub web service interface.
The Future of the Software
The software currently exists as a demonstration of capabilities, but we are aiming to refine it in such a way that adapting any SmartThings sensor network to a visual OSH web client can be done within minutes without the need for custom web clients for each situation. As mentioned above, pairing a SmartThings hub with a mobile access point, preferably 4G LTE, enables the hub to arrive on the scene and begin transmitting data within moments. Additionally, we hope to improve the interaction between OSH and SmartThings by allowing commands to be sent from the ST app to the OSH node, allowing for closer interoperation of the systems.