The Eclipse SmartHome project is a proposed open source project under the Eclipse Technology Top-Level Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
Since the emergence of broadband internet connections, smartphones and tablets the smart home market shows a remarkable upsurge. This has led to a very fragmented market, which makes it difficult for customers to "bet on the right horse". In fact, there is not one system, protocol or standard that could possibly fulfill all potential requirements. There is hence a need for platforms that allow the integration of different systems, protocols or standards and that provide a uniform way of user interaction and higher level services.
The goals of the Eclipse SmartHome project can be summarized as:
- Provide a flexible framework for smart home and ambient assisted living (AAL) solutions. This framework focuses on the use cases of this domain, e.g. on easy automation and visualization aspects.
- Specify extension points for integration possibilities and higher-level services. Extending and thus customizing the solution must be as simple as possible and this requires concise and dedicated interfaces.
- Provide implementations of extensions for relevant systems, protocols or standards. Many of them can be useful to many smart home solutions, so this project will provide a set of extensions that can be included if desired. They can also be in the shape of a general Java library or an OSGi bundle, so that these implementations can be used independently of the rest of the project as well.
- Provide a development environment and tools to foster implementations of extensions. The right tooling can support the emergence of further extensions and thus stimulates future contributions to the project.
- Create a packaging and demo setups. Although the focus is on the framework, it needs to be shown how to package a real solution from it, which can be used as a starting point and for demo purposes.
The Eclipse SmartHome project is a framework that allows building smart home solutions that have a strong focus on heterogeneous environments, i.e. solutions that deal with the integration of different protocols or standards. Its purpose is to provide a uniform access to devices and information and to facilitate different kinds of interactions with them. This framework consists out of a set of OSGi bundles that can be deployed on an OSGi runtime and which defines OSGi services as extension points.
The stack is meant to be usable on any kind of system that can run an OSGi stack - be it a multi-core server, a residential gateway or a Raspberry Pi.
Currently planned initial features and extension points of this framework include:
- Data Handling
- Type System: A basic but extensible type system for smart home data and commands that provides a common ground for an abstracted data and device access.
- Data Registry: Keeps track of data point instances and their values.
- Event Mechanism: Passes data and operations asynchronously in a loosly coupled way between components.
- Bindings: Infrastructure to exchange data and commands with external systems and devices, e.g. through regular polling or background threads. Useful binding implementations such as HTTP, NTP or TCP will be part of the project.
- Rule Engine
- An implementation of a flexible rule engine that allows changing rules during runtime.
- Provides triggering upon events or on a temporal basis.
- Extensible through rule actions that are made available to all rules
- Simple but powerful textual representation of rules
- Declarative User Interfaces
- A simple way of describing user interface content in a declarative way.
- Defines a set of standard widgets and a hierarchy of pages.
- Structure is made available through REST APIs to be easily consumable by UI implementations
- Persistence Management
- Infrastructure that allows automatic data processing based on a simple and unified configuration
- Persistence targets can be anything like databases, log files, IoT cloud services etc.
- Implementations of persistence services such as logging or cli will be part of the project.
- REST API
- Provides all relevant information and services to user interfaces (e.g. native clients)
- Extensible to provide additional resources specific to a solution
- Integrates with persistence services to serve time series for interactive charts
Besides the runtime framework and implementation, the Eclipse SmartHome projects also provides different kinds of tools and samples:
- Eclipse editors for editing configuration models and rules. These provide full IDE support, such as content assist and syntax validation.
- Maven archetypes to easily create skeletons for extensions
- Demo packaging with Eclipse RT
- Remote management for configuration models, possibly through REST
- Meta-data based configuration of extensions
- Definition of rule modules (triggers and actions) that can be easily plugged together
- Notification APIs to easily administrate notification channels
- Interfaces for natural language processing / voice recognition
Targeting the vertical market of smart homes, this project fits nicely into the recent activities around IoT/M2M.
Besides this, Eclipse provides many projects that are a perfect fit for this project (and which are in fact used by the initial contribution):
- Eclipse Equinox is used as the default OSGi runtime.
- Eclipse Jetty serves as an embedded HTTP server for the REST API and other HTTP services.
- Eclipse Modelling Framework is the basis for all configuration models
- Eclipse Xtext provides IDE support for the textual editors and furthermore provides with Xbase the basis for the textual rule representation
Other Eclipse projects can be of interest in the future as well:
- Concierge: a small-footprint OSGi container optimized for embedded devices can be an interesting alternative to Equinox when being used on constrained devices.
- Kura: Lower level services offered by Kura, such as I/O connectivity, remote management and configuration can perfectly complement the Eclipse SmartHome stack.
- Paho: As an MQTT extension is planned as a communication channel, Paho is the natural choice here.
- Ponte: Ponte can be used as a uniform way of binding custom M2M devices and solutions to the smart home.
Initial ContributionThe initial contribution of the Eclipse SmartHome project will be a large subset of the current code of openHAB (open Home Automation Bus). In particular:
- Source code for all mentioned interfaces and services of the framework
- Source code of a couple of extensions (openHAB bindings, actions and persistence services)
- Documentation of the architecture and its extension points
- Build scripts and sample files
openHAB is currently available under GPLv3 license. The openHAB project owners will make the code base available under EPL (with the agreement of all contributors). Most dependencies of the openHAB core framework are already under EPL and even taken from Eclipse Orbit. For all other dependencies of the core framework, the project owners will go through the Eclipse legal review process to make sure that they are eligible for contribution.
Many of the existing extensions (bindings, actions, etc.) include third-party libraries that might not be moved to Eclipse. As a result, only a small subset of these extensions will be contributed to the Eclipse SmartHome project while the rest will stay within the openHAB project.
The following individuals are proposed as initial committers to the project:
- Kai Kreuzer, Deutsche Telekom AG (Project lead)
- Thomas Eichstädt-Engelen, innoQ Deutschland GmbH (Project co-lead)
- Thomas Letsch, Thomas Letsch IT Solutions
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
- Mike Milinkovich
- Benjamin Cabé
The following individuals, organisations, companies and projects have expressed interest in this project:
- Bastian Nordmeyer, Tinkerforge GmbH
- Eclipse SCADA
- Falk-Moritz Schaefer, Communication Technology Institute, TU Dortmund University
- Georg Grütter, Robert Bosch GmbH
- Prof. Gottfried Zimmermann, Stuttgart Media University, Responsive Media Experience Research Group
- Prof. Dr. Heiner Klocke, Cologne University of Applied Sciences
- Jochen Hiller, Deutsche Telekom AG
- Lars Pfannenschmidt, Deutsche Telekom AG
- Dr. Marco Eichelberg, OFFIS Institute for Information Technology
- Myriam Lipprandt, OFFIS Institute for Information Technology
- Stefan Feilmeier, FENECON GmbH & Co. KG
- Stefan Tilkov, innoQ Deutschland GmbH
- Stefan Vaillant, Cumulocity GmbH
Project SchedulingEclipse SmartHome aims at the initial contribution to be completed by the end of 2013. A first release is planned early 2014, mainly based on the refactored initial contribution.
Changes to this Document
|19-August-2013||Added interested parties|
|29-August-2013||Added further interested parties|
|06-September-2013||Added further interested parties|
|17-October-2013||Added further interested parties
Changed project name from Smart Home to SmartHome