Eclipse SmartHome Review
Eclipse SmartHome is a framework to build smart home gateways. It is an OSGi framework like Kura and is designed for in-home interaction.
It doesn’t really have a backhaul protocol as it’s not designed with this capability in mind. It offers a REST API that offers server side events, which in practice implements a publish/subscribe model similar to MQTT: https://www.eclipse.org/smarthome/documentation/concepts/events.html
The REST API would require inbound access to the device in order to use it properly, which we should avoid for OpenTRV. That said, it could be leveraged by adding a small bridge piece of code that would use the SSE model and push the events to a data platform.
One way OpenTRV could leverage SmartHome would be to de-couple the device and backhaul communication modules in such a way that SmartHome bridges could be build in the future by implementing a “ThingHandler” for the devices and an “EventSubscriber” for the backhaul.
Similar to Kura.
Why should we use Eclipse SmartHome?
- It would provide integration with a number of actuators and would be a good framework for the TRV devices and in-home deployments of OpenTRV.
- This would potentially increase the interest in OpenTRV by making it part of a larger eco-system.
Why should we NOT use Eclipse SmartHome?
- Eclipse SmartHome is a complex framework to use at this point in time.
- The main appeal of SmartHome is for the residential market. Even though this is the original market for OpenTRV, it’s not the primary target of the IoT Launchpad project.
- Because SmartHome is designed for the residential market, security and access restriction concepts are quite basic as it expects the users to have complete control of all devices.
- Design the new concentrator code in such a way that the device and data platform sides are clearly de-coupled.
- Implement a simple routing mechanism between device and backhaul in the default implementation (Apache Camel would be a good candidate for this) that can be replaced at deployment time.
- Consider building SmartHome bridge components that can be used to offer SmartHome integration by replacing the default routing module with a SmartHome module at deployment time.