Eclipse SmartHome 0.10.0

Release Date
Deliverables

Along the core framework the release delivers the following new modules:

  • Generic Bluetooth binding
  • BlueZ Bluetooth binding extension
  • BlueGiga Bluetooth binding extension
  • Blukii Bluetooth binding extension
  • Homematic binding
  • OneWire binding
  • Bose SoundTouch binding
  • Sony Audio binding
  • OpenWeatherMap binding
  • meteoBlue binding
  • Semantic Metadata module
  • MQTT protocol support
  • MQTT embedded broker
  • MQTT broker connections
  • MQTT binding with generic mapping, Homie 3.x & Home Assistant support
  • OAuth2 client implementation
  • HTTP authentication & authorization module
  • Common HTTP & WebSocket client
  • Units of Measurement API
  • MapDB persistence service
  • Serial transport API
Compatibility

The REST API kept full backward compatibility to 0.9.0

Bindings implemented against 0.9.0 should be source compatible to this release. Nevertheless, the APIs have evolved and a few methods and services have been marked as deprecated. Implementors are therefore asked to check their implementation against the updated APIs and adapt them to the newer version (dedicated information on how to do so is given on every deprecation notice).

Worth mentionig is an extensive use of the buidler pattern. A lot of core model classes are now created and modified using a builder. Examples for new builders: ChannelBuilder, ChannelTypeBuilder, ThingBuilder, ThingTypeBuilder, BridgeBuilder, ChannelGroupTypeBuilder, ChannelDefinitionBuilder, etc. Those builders are exposed to bindings via BaseThingHandler#editThing and ThingHandlerCallback#createChannelBuilder[s] or ThingHandlerCallback#editChannel.

The introduction of UoM made a breaking change in the Astro binding necessary: The "kilometer" and "miles" channels have been replaced by a new "distance" channel.

Internationalization

Most labels of extensions have been translated from English to German, French and Dutch.

Target Environments

The target environment is any platform that has:

  • a JVM compliant with Java SE 8 Compact Profile 2
  • an OSGi framework 4.2 or above
  • at least 128MB Java heap space

The framework has been tested with Oracle JDK 1.8, ZuluVM 1.8 and with the OSGi framework implementations Eclipse Equinox, Eclipse Concierge, Apache Felix and ProSyst mBS both on x86 and ARM platforms.

The Eclipse SmartHome sample packaging is a 15 MB zip file which demonstrates a minimal runtime on Concierge, which can be used for testing target hardware platforms.

Tests with Java 11 have been performed and besides warnings about "illegal accesses" in some external components, no issues have been found. There hasn't been any in-depth testing with Java 11 on the various JVMs, so the recommendation is to keep using Java 8 with Eclipse SmartHome. Further details can be found here.

Themes

MQTT

MQTT support is a major contribution to the framework and comes with separate modules for * Basic protocol support * Embedded MQTT broker * MQTT broker connections * Generic topic mapping, Homie 3.x & Home Assistant support

Bluetooth LE

Bluetooth LE support comes with separate modules for * Generic BLE support * BlueGiga USB dongle support * blueZ USB dongle support * Blukii SmartBeacon support

New Bindings

New bindings apart from BLE and MQTT are * Bose SoundTouch * Sony Audio * Homematic * OneWire * OpenWeatherMap * meteoBlue Apart from that new bindings emerge from the community and the need for wider protocol and device support for commercial solutions based on Eclipse SmartHome.

Semantic Metadata

In order to adopt to user interfaces like voice commands or chat bots, a semantic layer provides meaning beyond the static definition of the framework's device abstraction. The ontology based on semantic metadata is a huge step in this direction.

Units of Measurement

A major contribution is the support for unit based measurement values. Bindings provide values with the unit the physical device offers, while the framework is able to convert into all compatible units. Those could be locale based defaults or user defined units for specific applications.