From 5a14eef01d8c5baa295c79b7b4a58142dcd97cd5 Mon Sep 17 00:00:00 2001 From: Kai Kreuzer Date: Fri, 11 Nov 2016 09:30:30 +0100 Subject: [PATCH] updated generated content and added imperihome integration Signed-off-by: Kai Kreuzer --- _data/oh1addons.csv | 2 + _includes/user-menu.html | 2 + addons/bindings/onkyo/readme.md | 25 +- addons/io.md | 1 + addons/io/imperihome/readme.md | 434 ++++++++++++++++++++++++++++++ concepts/audio.md | 28 ++ concepts/discovery.md | 49 +--- concepts/event-type-definition.md | 96 ------- concepts/events.md | 205 -------------- concepts/images/audio.png | Bin 0 -> 75724 bytes concepts/images/hli.png | Bin 0 -> 19515 bytes 11 files changed, 487 insertions(+), 355 deletions(-) create mode 100644 addons/io/imperihome/readme.md create mode 100644 concepts/audio.md delete mode 100644 concepts/event-type-definition.md delete mode 100644 concepts/events.md create mode 100644 concepts/images/audio.png create mode 100644 concepts/images/hli.png diff --git a/_data/oh1addons.csv b/_data/oh1addons.csv index c26e9aa6d..1942fd345 100644 --- a/_data/oh1addons.csv +++ b/_data/oh1addons.csv @@ -27,6 +27,7 @@ binding,EnOcean Binding binding,Enphase Energy Binding binding,Epson Projector Binding binding,Exec Binding +binding,Fatek PLC Binding binding,Freeswitch Binding binding,FS20 Binding binding,Garadget Binding @@ -39,6 +40,7 @@ binding,InsteonPLM Binding binding,Intertechno Binding binding,IPX800 Binding binding,IRTrans Binding +binding,jointSPACE Binding binding,KNX Binding binding,Koubachi Binding binding,LCN Binding diff --git a/_includes/user-menu.html b/_includes/user-menu.html index 60dae01b7..82cb20414 100644 --- a/_includes/user-menu.html +++ b/_includes/user-menu.html @@ -8,6 +8,7 @@
  • Items
  • Things
  • Inbox & Discovery
  • +
  • Audio & Voice
  • Installation @@ -65,6 +66,7 @@
  • User Interfaces diff --git a/addons/bindings/onkyo/readme.md b/addons/bindings/onkyo/readme.md index 5487b6feb..bf3552af8 100644 --- a/addons/bindings/onkyo/readme.md +++ b/addons/bindings/onkyo/readme.md @@ -22,6 +22,7 @@ This binding supports only one thing: The Onkyo AV Receiver This binding can discover the supported Onkyo AV Receivers. At the moment only the following models are supported: * TX-NR535 +* TX-NR646 ## Binding Configuration @@ -48,16 +49,20 @@ The Onkyo AVR supports the following channels: | Channel Type ID | Item Type | Description | |-------------------------|--------------|--------------| -| power | Switch | Power on/off your device | -| mute | Switch | Mute/unmute your device | -| input | Number | The input for the AVR | -| volume | Dimmer | Volume of your device | -| control | Player | Control the Zone Player, e.g. play/pause/next/previous/ffward/rewind (available if playing from Network or USB)| -| title | String | Title of the current song (available if playing from Network or USB)| -| album | String | Album name of the current song (available if playing from Network or USB)| -| artist | String | Artist name of the current song (available if playing from Network or USB)| -| currentPlayingTime | String | Current playing time of the current song (available if playing from Network or USB)| -| listenmode | Number | Current listening mode e.g. Stero, 5.1ch Surround,..| +| zone1#power | Switch | Power on/off your device | +| zone1#mute | Switch | Mute/unmute zone 1 | +| zone1#input | Number | The input for zone 1 | +| zone1#volume | Dimmer | Volume of zone 1 | +| zone2#power | Switch | Power on/off zone 2 | +| zone2#mute | Switch | Mute/unmute zone 2 | +| zone2#input | Number | The input for zone 2 | +| zone2#volume | Dimmer | Volume of zone 2 | +| player#control | Player | Control the Zone Player, e.g. play/pause/next/previous/ffward/rewind (available if playing from Network or USB)| +| player#title | String | Title of the current song (available if playing from Network or USB)| +| player#album | String | Album name of the current song (available if playing from Network or USB)| +| player#artist | String | Artist name of the current song (available if playing from Network or USB)| +| player#currentPlayingTime | String | Current playing time of the current song (available if playing from Network or USB)| +| player#listenmode | Number | Current listening mode e.g. Stero, 5.1ch Surround,..| ##Input Source Mapping diff --git a/addons/io.md b/addons/io.md index 02397b2ed..58a1cc1de 100644 --- a/addons/io.md +++ b/addons/io.md @@ -12,3 +12,4 @@ layout: documentation |-------|----------------------| | [HomeKit]({{docu}}/addons/io/homekit/readme.html) | Exposes openHAB items to HomeKit, so that it can be used with Siri on iOS. | | [Amazon Echo]({{docu}}/addons/io/hueemulation/readme.html) | Emulates a Philips hue bridge, so that devices like Amazon Echo can discover and use it. | +| [ImperiHome]({{docu}}/addons/io/imperihome/readme.html) | Allows the integration of openHAB into the Evertygo ImperiHome dashboard app | diff --git a/addons/io/imperihome/readme.md b/addons/io/imperihome/readme.md new file mode 100644 index 000000000..09d573dd8 --- /dev/null +++ b/addons/io/imperihome/readme.md @@ -0,0 +1,434 @@ +--- +layout: documentation +--- + +{% include base.html %} + +# ImperiHome integration service + +This IO service exposes openHAB Items to the Evertygo [ImperiHome](http://www.evertygo.com/imperihome) dashboard app for Android and iOS. +It creates a REST service at _/imperihome/iss_ that implements the [ImperiHome Standard System API](http://dev.evertygo.com/api/iss) (ISS). + +## Installation + +The ImperiHome integration service can be installed through the Paper UI. Navigate to Extensions > Misc and click Install. + +## Configuration + +The service itself has no configuration. ImperiHome on the other hand must be configured to connect to your openHAB instance. + +Start ImperiHome, open the menu and go to My Systems. Add a new system (+) and choose 'ImperiHome Standard System' as the object type. Now enter the URL to your openHAB instance + as Local URL, followed by _/imperihome/iss_. For example, if your OH instance is running at _http://192.168.1.10:8080/_, the Local URL would be _http://192.168.1.10:8080/imperihome/iss_. + +If you have port forwarding or similar set up to access your OH form the internet, you can also fill the Remote URL in the same way. For example: +_http://my-openhab-url.dyndns.org:8080/imperihome/iss_. Please be aware that this service provides no authentication mechanism, so anyone could use the API to control your +system when accessible from the internet. + +Click Next to let ImperiHome validate the URL. After validation succeeded the system is added and you can continue to configure your Items for use in ImperiHome. + +## Device Tagging + +This service uses Item tags to determine how to expose your Items to ImperiHome. All tags are formatted like this: + +``` +iss:: +``` + +For example: + +``` +iss:room:Kitchen +``` + +If you've defined your Items in _.items_ files, tags can be added using the + +``` +[ "mytag" ] +``` + +syntax (after the _(Groups)_ and before the _{channel}_). +If you created your items another way, e.g. using the Paper UI, [HABmin](https://github.com/openhab/org.openhab.ui.habmin) allows you to modify the tags. + +### Tag: _type_ + +Specifies the device type to expose to ImperiHome. Take a look at [Device types](#deviceTypes) below for the supported device types and how to configure them. +If no type is specified, this service will try to auto-detect the type from the Item, based on supported value types (OnOff for a switch, HSB for color light) and Item name. + +_Required_: no
    +_Default_: auto-detect
    +Example: + +``` +iss:type:DevSwitch +``` + +### Tag: _room_ + +Specifies the room the device will show up in in ImperiHome. + +_Required_: no
    +_Default_: 'No Room'
    +_Example_: + +``` +iss:room:Kitchen +``` + +### Tag: _label_ + +Sets the device label in ImperiHome. If no label is specified, the Item label is used if available. Otherwise the Item name will be used. + +_Required_: no
    +_Default_: Item label or name
    +_Example_: + +``` +iss:label:Kitchen light +``` + +### Tag: _mapping_ + +Sets the mapping for a ImperiHome MultiSwitch device, just like an openHAB sitemap mapping does. +In the example below, 'All off', 'Relax' and 'Reading' will be visible in ImperiHome. Clicking one of the options will send +a 0, 1 or 2 value command to the openHAB item. + +_Required_: only for MultiSwitch device
    +_Default_: none
    +_Example_: + +``` +iss:mapping:0=All off,1=Relax,2=Reading +``` + +### Tag: _link_ + +Links two devices together, using the value from the linked device as an additional value in the device containing the link tag. +See [Device links](#deviceLinks) for details. + +_Required_: no
    +_Default_: none
    +_Example_: + +``` +iss:link:energy:Kitchen_Current_Consumption +``` + +### Tag: _unit_ + +Sets the unit for devices with a numeric value, such as _DevTemperature_ and _DevGenericSensor_. +The unit is only used to tell ImperiHome what to display; no conversion is performed. + +_Required_: no
    +_Default_: none
    +_Example_: + +``` +iss:unit:°C +``` + +### Tag: _invert_ + +Inverts the state of on/off devices such as switches and dimmers. + +_Required_: no
    +_Default_: false
    +_Example_: + +``` +iss:invert:true +``` + + + +## Device types + +The following table lists the ImperiHome API device types that you can use in a _iss:type_ tag. Not all device types are currently supported. For those that are supported, +the Item types you can use them on are listed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DeviceDescriptionSupportedItem typesLink types
    DevCameraMJPEG IP CameraNo-
    DevCO2CO2 sensorYesNumber-
    DevCO2AlertCO2 Alert sensorYesContact, Number, String(1), Switch-
    DevDimmerDimmable lightYesDimmerenergy
    DevDoorDoor / window security sensorYesContact, Number, String(1), Switch-
    DevElectricityElectricity consumption sensorYesNumberkwh, watt
    DevFloodFlood security sensorYesContact, Number, String(1), Switch-
    DevGenericSensorGeneric sensor (any value)YesNumber, String-
    DevHygrometryHygro sensorYesNumber-
    DevLockDoor lockYesContact, Switch-
    DevLuminosityLuminance sensorYesNumber-
    DevMotionMotion security sensorYesContact, Number, String(1), Switch-
    DevMultiSwitchMultiple choice actuatorYesNumber-
    DevNoiseNoise sensorYesNumber-
    DevPlayerAudio/Video playerNo-
    DevPlaylistAudio/Video playlistNo-
    DevPressurePressure sensorYesNumber-
    DevRainRain sensorYesNumberaccum
    DevRGBLightRGB(W) Light (dimmable)YesColorenergy
    DevSceneScene (launchable)YesSwitch, Number-
    DevShutterShutter actuatorNo-
    DevSmokeSmoke security sensorYesContact, Number, String(1), Switch-
    DevSwitchStandard on/off switchYesSwitchenergy
    DevTemperatureTemperature sensorYesNumber-
    DevTempHygroTemperature and Hygrometry combined sensorYesNumberhygro, temp
    DevThermostatThermostatNo-
    DevUVUV sensorYesNumber-
    DevWindWind sensorYesNumberdirection
    + +(1) When using a String Item for trippable devices, any non-empty value other than 'ok' will set the device to tripped. This makes it compatible with the Nest Protect binding. + + + +## Device links + +Some devices can be linked to another device. This allows you to create combined devices reporting multiple values, or reporting the energy consumption with a switch device. + +The _link_ tag refers to the name of the Item it should link to. The item must be an ImperiHome device itself, so it must have at least one _iss_ tag. + +### Switch energy consumption + +ImperiHome allows you to show the current energy consumption for a _DevDimmer_, _DevRGBLight_ and _DevSwitch_. +This example links the _MyLightEnergy_ Number Item to the _MyLight_ Switch Item, +so the _DevSwitch_ device will also report the energy consumption value to ImperiHome: + +``` +Switch MyLight "My Light" ["iss:type:DevSwitch", "iss:link:energy:MyLight_Energy"] { channel="zwave:device:1:node14:switch_binary1" } +Number MyLightEnergy "My Light Usage [%.1f W]" ["iss:type:DevElectricity"] { channel="zwave:device:1:node14:meter_watts1" } +``` + +### Total energy consumption + +The _DevElectricity_ devices main value is the current consumption in Watts. To add the total consumption in KWh, link your electricity device to +a generic sensor device containing the total energy consumption value: + +``` +Number MyLight_Energy "My Light Usage [%.1f W]" ["iss:type:DevElectricity", "iss:link:kwh:MyLight_Total_Energy"] { channel="zwave:device:1:node14:meter_watts1" } +Number MyLight_Total_Energy "My Light Total usage [%.1f KWh]" ["iss:type:DevGenericSensor", "iss:unit:KWh"] { channel="zwave:device:1:node14:sensor_power1" } +``` + +### TempHygro + +ImperiHome recognizes the special _DevTempHygro_ device, combining a temperature and hydrometry sensor. You can create such a device by linking either from a temperature Item to a hygro Item: + +``` +Number MyTemp "Temperature [%.1f °C]" ["iss:type:DevTempHygro", "iss:link:hygro:MyHum"] { channel="zwave:device:1:node8:sensor_temperature" } +Number MyHum "Humidity [%d%%]" ["iss:type:DevHygrometry"] { channel="zwave:device:1:node8:sensor_relhumidity" } +``` + +or vise versa: + +``` +Number MyTemp "Temperature [%.1f °C]" ["iss:type:DevTemperature"] { channel="zwave:device:1:node8:sensor_temperature" } +Number MyHum "Humidity [%d%%]" ["iss:type:DevTempHygro", "iss:link:temp:MyTemp"] { channel="zwave:device:1:node8:sensor_relhumidity" } +``` + +### Rain accumulation + +The _DevRain_ devices main value is the current instant rain value (default in mm per hour). To add the total rain accumulation value, link your rain device to +a generic sensor device: + +``` +Number RainCurrent "Rain current [%.1f mm/h]" ["iss:type:DevRain", "iss:link:accum:RainAccumulation"] { channel="..." } +Number RainAccumulation "Rain accumulation [%.1f mm]" ["iss:type:DevGenericSensor", "iss:unit:mm"] { channel="..." } +``` + +### Wind direction + +The _DevWind_ devices main value is the current wind speed (default in km per hour). To add the wind direction value (default in degrees), link your wind device to +a generic sensor device: + +``` +Number WindSpeed "Wind speed [%.1f km/h]" ["iss:type:DevWind", "iss:link:direction:WindDirection"] { channel="..." } +Number WindDirection "Wind direction [%d deg]" ["iss:type:DevGenericSensor", "iss:unit:deg"] { channel="..." } +``` + +## Items example + +``` +Color LVR_Billy "Billy" (Lights) ["iss:room:Living room", "iss:type:DevRGBLight"] { channel="hue:0210:001122334455:bulb1:color" } +Switch LVR_TallLamp "Tall lamp" (Lights) ["iss:room:Living room", "iss:type:DevSwitch", "iss:invert:true"] { channel="zwave:device:1:node3:switch_binary" } +Dimmer LVR_DinnerTable "Dinner table" (Lights) ["iss:room:Living room", "iss:type:DevDimmer"] { channel="zwave:device:1:node13:switch_dimmer" } + +Number ENT_Entrance_Current "Entrance usage [%.1f W]" (Wattage) ["iss:room:Entrance", "iss:type:DevElectricity", "iss:unit:Watt"] { channel="zwave:device:1:node14:meter_watts1" } + +Number ENT_Temperature "Entrance temperature [%.1f °C]" (Temperature) ["iss:room:Entrance", "iss:type:DevTempHygro", "iss:link:hygro:ENT_Humidity"] { channel="zwave:device:1:node8:sensor_temperature" } +Number ENT_Luminance "Entrance light [%d lm]" (Luminance) ["iss:room:Entrance", "iss:type:DevLuminosity", "iss:unit:lux"] { channel="zwave:device:1:node8:sensor_luminance" } +Number ENT_Humidity "Entrance humidity [%d%%]" (Humidity) ["iss:room:Entrance", "iss:type:DevHygrometry"] { channel="zwave:device:1:node8:sensor_relhumidity" } +``` + diff --git a/concepts/audio.md b/concepts/audio.md new file mode 100644 index 000000000..85f6c414b --- /dev/null +++ b/concepts/audio.md @@ -0,0 +1,28 @@ +--- +layout: documentation +--- + +{% include base.html %} + +# Audio & Voice + +Audio and voice features are an important aspect of any smart home solution as it is a very natural way to interact with the user. + +Eclipse SmartHome comes with a very modular architecture that enables all kinds of different use cases. At its core, there is the notion of an *audio stream*. Audio streams are provided by *audio sources* and consumed by *audio sinks*. + +![](images/audio.png) + +- *Audio Streams* are essentially a byte stream with a given *audio format*. They do not need to be limited in size, i.e. it is also allowed to have continuous streams, e.g. the input from a microphone or from an Internet radio station. +- *Audio Formats* define the container (e.g. WAV), encoding, bit rate, sample frequency and depth and the bit order (little or big endian). +- *Audio Sources* are services that are capable of producing audio streams. They can support different formats and provide a stream in a requested format upon request. Typical audio source services are microphones. Typically, a continuous stream is expected from them. +- *Audio Sinks* are services that accept audio streams of certain formats. Typically, these are expected to play the audio stream, i.e. they are some kind of speaker or media device. +- *Text-to-Speech* (TTS) services are similar to audio sources with respect to the ability to create audio streams. The difference is that they take a string as an input and will synthesize this string to a spoken text using a given voice. TTS services can provide information about the voices that they support and the locale that those voices are associated with. Each voice supports exactly one locale. +- *Speech-to-Text* (STT) services are similar to audio sinks, but they do not simply play back the stream, but convert it to a plain string. They provide information about supported formats and locales. + +As plain text from an STT service is often not very useful, there is additionally the concept of a *human language interpreter*: + +![](images/hli.png) + +A *Human Language Interpreter* takes a string as an input. It then derives actions from it (like sending commands to devices) and/or replies with a string, which opens the possibility to realize conversations. As such an interpreter is not directly linked to audio streams, but operates on strings only, this can be the basis for any kind of assistant, e.g. for chat bots using the console, XMPP, Twitter or other messaging services. + +Applications can dynamically choose which services to use, so that different sinks can be used for different use cases. Defaults can be set as a configuration for all those services in case an application does not ask for any specific service. diff --git a/concepts/discovery.md b/concepts/discovery.md index bc3228625..537a61976 100644 --- a/concepts/discovery.md +++ b/concepts/discovery.md @@ -4,53 +4,14 @@ layout: documentation {% include base.html %} -# Thing Discovery and Inbox +# Thing Discovery -Many technologies and systems can be automatically discovered on the network or browsed through some API. It therefore makes a lot of sense to use these features for a smart home solution. +Many devices, technologies and systems can be automatically discovered on the network or browsed through some API. It therefore makes a lot of sense to use these features for a smart home solution. -In Eclipse SmartHome bindings can therefore implement _Discovery Services_ for things. As a solution might not want to make everything that is found on the network immediately available to the user and his applications, all _Discovery Results_ are regarded as suggestions that are first put into an _inbox_. - -## Glossary - -- _Discovery_: Search for available things in the smart home environment. -- _Discovery Result_: Result of a _Discovery_ stored in the _Inbox_. -- _Discovery Service_: Implements a service to discover things, typically based on a specialized protocol (e.g. UPnP). -- _Inbox_: List of all discovered things, constantly updated by all running discoveries. +In Eclipse SmartHome bindings therefore implement _Discovery Services_ for things, which provide _Discovery Results_. All _Discovery Results_ are regarded as suggestions to the user and are put into the _inbox_. ## Inbox -The inbox represents a list of all discovered things (`DiscoveryResult`) from all known discovery services. Bindings can register new discovery services to discover new thing types (e.g. the Hue binding registers a new discovery service to search for Hue lights). Technically the inbox is an OSGi service which manages the discovery results. Notification about new things added to or things removed from the inbox will be sent as events. +The inbox holds a list of all discovered things (`DiscoveryResult`) from all active discovery services. A discovery result represents a discovered thing of a specific thing type, that could be instantiated as a thing. The result usually contains properties that identify the discovered things further like IP address or a serial number. Each discovery result also has a timestamp when it was added to or updated in the inbox and it may also contain a time to live, indicating the time after which it is be automatically removed from the inbox. -### Discovery Result - -A discovery result represents a discovered thing of a specific thing type, that could be instantiated as things in Eclipse SmartHome. The result usually contains properties that identify the discovered things further like IP address or a serial number. Each discovery result also has a timestamp when it was added to or updated in the inbox and it may also contain a time to live, indicating the time after which it will be automatically removed from the inbox. - -The following table gives an overview about the main parts of a `DiscoveryResult`: - -| Field | Description | -|-------|-------------| -| `thingUID` | The `thingUID` is the unique identifier of the specific discovered thing (e.g. a device's serial number). It *must not* be constructed out of properties, that can change (e.g. IP addresses). A typical `thingUID` could look like this: `hue:bridge:001788141f1a` -| `thingTypeUID` | Contrary to the `thingUID` is the `thingTypeUID` that specifies the type the discovered thing belongs to. It could be constructed from e.g. a product number. A typical `thingTypeUID` could be the following: `hue:bridge`. -| `bridgeUID` | If the discovered thing belongs to a bridge, the `bridgeUID` contains the UID of that bridge. -| `properties` | The `properties` of a `DiscoveryResult` contain the configuration for the newly created thing. - -Discovery results can either be ignored or approved, where in the latter case a thing is created for them and they become available in the application. The configuration of that created thing contains the values from the `properties`of the approved `DiscoveryResult`. If an entry is ignored, it will be hidden in the inbox without creating a thing for it. - -### Active Scan vs. Background Discovery - -There are different ways how a thing can be discovered: - -- In protocols like UPnP or Bonjour/mDNS devices send announcements on the network that can be listened to. In Eclipse SmartHome we refer to such mechanisms as "background discovery", i.e. passive mechanisms where events come in and can be processed. Things can be therefore found any time and put into the inbox. - -- There might be an API, which can be accessed to actively query all available things. In Eclipse SmartHome, this is called an "active scan" and thus configuration UIs must provide a way to trigger such a scan for a certain thing type. In general, it is not recommended to do any active discovery by the binding in the background as it can negatively impact the system performance. The only exception is that a scan can be triggered once at startup and if a bridge has been added, so that its attached things are directly discovered. - -## Available Discovery Services - -Eclipse SmartHome already comes with some discovery services. These are: - -- `UPnPDiscoveryService`: This discovery service discovers all IP devices using the UPnP protocol. The bindings must implement a `UpnpDiscoveryParticipant` to support this discovery service. The [UPnP discovery service documentation](../development/bindings/discovery-services.html#upnp-discovery) explains in detail, how to do that. -- `MDNSDiscoveryService`: All devices supporting the mDNS protocol are discovered by this service. - -Bindings implement more discovery services, e.g. the search for Hue lights in the Hue binding or the search for the local weather in the Yahoo weather binding. - -The [Implement Discovery Service](../development/bindings/discovery-services.html) chapter describes how to implement DiscoveryServices in a binding. +Discovery results can either be ignored or approved, where in the latter case a thing is created for them and they become available in the application. If an entry is ignored, it will be hidden in the inbox without creating a thing for it. diff --git a/concepts/event-type-definition.md b/concepts/event-type-definition.md deleted file mode 100644 index ab29f06db..000000000 --- a/concepts/event-type-definition.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: documentation ---- - -{% include base.html %} - -# Event Type Definition - -Eclipse SmartHome provides the possibility to easily implement new event types and event factories. - -## Define new Event Type - -Events can be added by implementing the `Event` interface or the `AbstractEvent` class which offers a default implementation. Both classes are located in the Eclipse SmartHome core bundle. - -The following Java snippet shows a new event type extending the class `AbstractEvent`. - -```java -public class SunriseEvent extends AbstractEvent { - - public final static String TYPE = SunriseEvent.class.getSimpleName(); - - private final SunriseDTO sunriseDTO; - - SunriseEvent(String topic, String payload, SunriseDTO sunriseDTO) { - super(topic, payload, null); - this.sunriseDTO = sunriseDTO; - } - - @Override - public String getType() { - return TYPE; - } - - public SunriseDTO getSunriseDTO() { - return sunriseDTO; - } - - @Override - public String toString() { - return "Sunrise at '" + getSunriseDTO.getTime() + "'."; - } -} -``` - -The listing below summarizes some coding guidelines as illustrated in the example above: - -- Events should only be created by event factories. Constructors do not have any access specifier in order to make the class package private. -- The serialization of the payload into a data transfer object (e.g. `SunriseDTO`) should be part of the event factory and will be assigned to a class member via the constructor. -- A public member `TYPE` represents the event type as string representation and is usually the name of the class. -- The `toString()` method should deliver a meaningful string since it is used for event logging. -- The source of an event can be null if not required. - -For more information about implementing an event, please refer to the Java documentation. - -## Define new Event Factory -Event factories can be added by implementing the `EventFactory` interface or the `AbstractEventFactory` class. The `AbstractEventFactory` provides some useful utility for parameter validation and payload serialization & deserialization with JSON. The classes are located in the Eclipse SmartHome core bundle. - -```java -public class SunEventFactory extends AbstractEventFactory { - - private static final String SUNRISE_EVENT_TOPIC = "smarthome/sun/{time}/sunrise"; - - public SunEventFactory() { - super(Sets.newHashSet(SunriseEvent.TYPE); - } - - @Override - protected Event createEventByType(String eventType, String topic, String payload, String source) throws Exception { - Event event = null; - if (eventType.equals(SunriseEvent.TYPE)) { - createSunriseEvent(topic, payload); - } - return event; - } - - private createSunriseEvent(String topic, String payload) { - SunriseDTO sunriseDTO = deserializePayload(payload, SunriseDTO.class); - return new SunriseEvent(topic, payload, sunriseDTO); - } - - public static SunriseEvent createSunriseEvent(Sunrise sunrise) { - String topic = buildTopic(SUNRISE_EVENT_TOPIC, sunrise.getTime()); - SunriseDTO sunriseDTO = map(sunrise); - String payload = serializePayload(sunriseDTO); - return new SunriseEvent(topic, payload, sunriseDTO); - } -} -``` -The listing below summarizes some guidelines as illustrated in the example above: - -- Provide the supported event types (`SunriseEvent.TYPE`) via an `AbstractEventFactory` constructor call. The supported event types will be returned by the `AbstractEventFactory.getSupportedEventTypes()` method. -- The event factory defines the topic (`SUNRISE_EVENT_TOPIC`) of the supported event types. Please ensure that the topic format follows the topic structure of the Eclipse SmartHome core events, similar to a REST URI (`{namespace}/{entityType}/{entity}/{sub-entity-1}/.../{sub-entity-n}/{action}`). The namespace must be `smarthome`. -- Implement the method `createEventByType(String eventType, String topic, String payload, String source)` to create a new event based on the topic and the payload, determined by the event type. This method will be called by the framework in order to dispatch received events to the corresponding event subscribers. If the payload is serialized with JSON, the method `deserializePayload(String payload, Class classOfPayload)`can be used to deserialize the payload into a data transfer object. -- Provide a static method to create event instances based on a domain object (Item, Thing, or in the example above `Sunrise`). This method can be used by components in order to create events based on domain objects which should be sent by the EventPublisher. If the data transfer object should be serialized into a JSON payload, the method `serializePayload(Object payloadObject)` can be used. - -For more information about implementing an event factory, please refer to the Java documentation. \ No newline at end of file diff --git a/concepts/events.md b/concepts/events.md deleted file mode 100644 index aecc190fe..000000000 --- a/concepts/events.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: documentation ---- - -{% include base.html %} - -# Events - -The Eclipse SmartHome framework provides an event bus for inter-component communication. The communication is based on events which can be sent and received through the event bus in an asynchronous way. Examples of Eclipse SmartHome event types are _ItemCommandEvent_, _ItemStateEvent_, _ItemAddedEvent_, _ThingStatusInfoEvent_, etc. - -This section gives a short overview about the event API and illustrates how to receive such events. Furthermore, the sending of events and the implementation of new event types will be described. - -A code snippet about receiving events can be found in chapter "Receive Events". In particular, receiving _ItemStateEvents_ and _ItemCommandEvents_ is described in chapter "Receive ItemStateEvents and ItemCommandEvents". - -## API Introduction - -### The Interfaces - -![Event Interfaces](diagrams/event_interfaces.png) - -The `EventPublisher` posts `Event`s through the Eclipse SmartHome event bus in an asynchronous way. The `EventSubscriber` defines the callback interface to receive events of specific types to which the event subscriber is subscribed. The EventPublisher and the EventSubscribers are registered as OSGi services. An event subscriber can provide an `EventFilter` in order to filter events based on the topic or the content. If there is no filter all subscribed event types are received. The event itself will be subclassed for each event type, which exists in the System (e.g. ItemCommandEvent, ItemUpdatedEvent, ThingStatusInfoEvent). - -### The Core Events -This section lists the core events provided by Eclipse SmartHome which can be divided into the categories _Item Events_, _Thing Events_ and _Inbox Events_. - -An event consists of a `topic`, a `type`, a `payload` and a `source`. The payload can be serialized with any String representation and is determined by its concrete event type implementation (e.g. ItemCommandEvent, ItemUpdatedEvent). The payloads of the Eclipse SmartHome core events are serialized with JSON. Each event implementation provides the payload as high level methods as well, usually presented by a data transfer object (DTO). - -A topic clearly defines the target of the event and its structure is similar to a REST URI, except the last part, the action. The topics of Eclipse SmartHome events are divided into the following four parts: `{namespace}/{entityType}/{entity}/{action}`, e.g. `smarthome/items/{itemName}/command`. - -The type of an event is represented by a string, usually the name of the concrete event implementation class, e.g. ItemCommandEvent, ItemUpdatedEvent. This string type presentation is used by event subscribers for event subscription (see chapter "Receive Events") and by the framework for the creation of concrete event instances. - -The event source is optional and represents the name of the source identifying the sender. - -#### Item Events - -| Event |Description |Topic | -|-----------------------|-------------------------------------------------|----------------------------------------| -| ItemAddedEvent |An item has been added to the item registry. |smarthome/items/{itemName}/added | -| ItemRemovedEvent |An item has been removed from the item registry. |smarthome/items/{itemName}/removed | -| ItemUpdatedEvent |An item has been updated in the item registry. |smarthome/items/{itemName}/updated | -| ItemCommandEvent |A command is sent to an item via a channel. |smarthome/items/{itemName}/command | -| ItemStateEvent |The state of an item is updated. |smarthome/items/{itemName}/state | -| ItemStateChangedEvent |The state of an item has changed. |smarthome/items/{itemName}/statechanged | - -**Note:** The ItemStateEvent is always sent if the state of an item is updated, even if the state did not change. ItemStateChangedEvent is sent only if the state of an item was really changed. It contains the old and the new state of the item. - -#### Thing Events - -| Event |Description |Topic | -|-----------------------|-------------------------------------------------|-----------------------------------| -| ThingAddedEvent |A thing has been added to the thing registry. |smarthome/things/{thingUID}/added | -| ThingRemovedEvent |A thing has been removed from the thing registry.|smarthome/things/{thingUID}/removed| -| ThingUpdatedEvent |A thing has been updated in the thing registry. |smarthome/things/{thingUID}/updated| -| ThingStatusInfoEvent |The status of a thing is updated. |smarthome/things/{thingUID}/status | -| ThingStatusInfoChangedEvent |The status of a thing changed. |smarthome/things/{thingUID}/statuschanged | - -**Note:** The ThingStatusInfoEvent is always sent if the status info of a thing is updated, even if the status did not change. ThingStatusInfoChangedEvent is sent only if the status of a thing was really changed. It contains the old and the new status of the thing. - -#### Inbox Events - -| Event |Description |Topic | -|-----------------------|---------------------------------------------------|-----------------------------------| -| InboxAddedEvent |A discovery result has been added to the inbox. |smarthome/inbox/{thingUID}/added | -| InboxRemovedEvent |A discovery result has been removed from the inbox. |smarthome/inbox/{thingUID}/removed | -| InboxUpdateEvent |A discovery result has been updated in the inbox. |smarthome/inbox/{thingUID}/updated | - -#### Link Events - -| Event |Description |Topic | -|-----------------------------|---------------------------------------------------------|------------------------------------------------| -| ItemChannelLinkAddedEvent |An item channel link has been added to the registry. |smarthome/links/{itemName}-{channelUID}/added | -| ItemChannelLinkRemovedEvent |An item channel link has been removed from the registry. |smarthome/links/{itemName}-{channelUID}/removed | -| ItemThingLinkAddedEvent |An item thing link has been added to the registry. |smarthome/links/{itemName}-{thingUID}/added | -| ItemThingLinkRemovedEvent |An item thing link has been removed from the registry. |smarthome/links/{itemName}-{thingUID}/removed | - -#### Channel Events -| Event |Description |Topic | -|-----------------------------|---------------------------------------------------------|------------------------------------------------| -| ChannelTriggeredEvent |A channel has been triggered. |smarthome/channels/{channelUID}/triggered | - -## Receive Events - -This section describes how to receive Eclipse SmartHome events in Java. If you want to receive events "outside" Eclipse SmartHome, e.g. with JavaScript, please refer to the [Server Sent Events section](../features/rest.html). - -An event subscriber defines the callback interface for receiving events from the Eclipse SmartHome event bus. The following Java snippet shows how to receive `ItemStateEvent`s and `ItemCommandEvent`s from the event bus. Therefore, the `EventSubscriber` interface must be implemented. - -```java -public class SomeItemEventSubscriber implements EventSubscriber { - private final Set subscribedEventTypes = ImmutableSet.of(ItemStateEvent.TYPE, ItemCommandEvent.TYPE); - private final EventFilter eventFiter = new TopicEventFilter("smarthome/items/ItemX/.*"); - - @Override - public Set getSubscribedEventTypes() { - return subscribedEventTypes; - } - - @Override - public EventFilter getEventFilter() { - return eventFilter; - } - - @Override - public void receive(Event event) { - String topic = event.getTopic(); - String type = event.getType(); - String payload = event.getPayload(); - if (event instanceof ItemCommandEvent) { - ItemCommandEvent itemCommandEvent = (ItemCommandEvent) event; - String itemName = itemCommandEvent.getItemName(); - Command command = itemCommandEvent.getItemCommand(); - // ... - } else if (event instanceof ItemStateEvent) { - ItemStateEvent itemStateEvent = (ItemStateEvent) event; - // ... - } - } -} -``` -The `SomeItemEventSubscriber` is subscribed to the event types `ItemStateEvent` and `ItemCommandEvent`, provided by the method `getSubscribedEventTypes()`. A string representation of an event type can be found by a public member `TYPE` which usually presents the name of the class. To subscribe to all available event types, use the public member `ALL_EVENT_TYPES` of the event subscriber interface. - -The event subscriber provides a `TopicEventFilter` which is a default Eclipse SmartHome `EventFilter` implementation that ensures filtering of events based on a topic. The argument of the filter is a [Java regular expression](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). The filter method `EventFilter.apply()` will be called for each event on the event bus to which the event subscriber is subscribed (in the example above ItemStateEvent and ItemCommandEvent). If the filter applies (in the given example for all item events with the item name "ItemX"), the event will be received by the `EventSubscriber.receive()` method. Received events can be cast to the event implementation class for further processing. - -Each event subscriber must be registered via OSGi Declarative Services (DS) under the `org.eclipse.smarthome.event.EventSubscriber` interface. - -```xml - - - - - - -``` - -The listing below summarizes some best practices in order to implement event subscribers: - -- To subscribe to only one event type Eclipse SmartHome provides the `org.eclipse.smarthome.core.events.AbstractTypedEventSubscriber` implementation. To receive an already cast event the `receiveTypedEvent(T)` method must be implemented. To provide an event filter the method `getEventFilter()` can be overridden. -- Eclipse SmartHome provides an `AbstractItemEventSubscriber` class in order to receive ItemStateEvents and ItemCommandEvents (more information can be obtained in the next chapter). -- To filter events based on a topic the `org.eclipse.smarthome.core.events.TopicEventFilter` implementation from the Eclipse SmartHome core bundle can be used. The filtering is based on [Java regular expression](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html). -- The subscribed event types and the filter should be stored as class members (see example above) due to performance reasons. -- If the subscribed event types are sufficient in order to receive all interested events, do not return any filter (in that case the method getFilter() returns null) due to performance reasons. -- Avoid the creation of too many event subscribers. Similar event types can be received in one event subscriber. -- Handle exceptions in event subscriber implementation and throw only serious exceptions. Thrown exceptions will be handled in the framework by logging an error message with the cause. -- The receive method should terminate quickly, since it blocks other event subscribers. Create a thread for long running operations. - - -### Receive ItemStateEvents and ItemCommandEvents -Due to the fact that receiving ItemStateEvents and ItemCommandEvents is a common use case, Eclipse SmartHome provides an abstract event subscriber implementation via the core bundle. The class `org.eclipse.smarthome.core.items.events.AbstractItemEventSubscriber` provides two methods `receiveUpdate(ItemStateEvent)` and `receiveCommand(ItemCommandEvent)` which can be implemented in order to receive and handle such events. - -```java -public class SomeItemEventSubscriber extends AbstractItemEventSubscriber { - private final EventFilter eventFiter = new TopicEventFilter("smarthome/items/ItemX/.*"); - - @Override - public EventFilter getEventFilter() { - return eventFilter; - } - - @Override - protected void receiveCommand(ItemCommandEvent commandEvent) { - // do something - } - - @Override - protected void receiveUpdate(ItemStateEvent stateEvent) { - // do something - } -} -``` - -## Send Events - -Usually the core events are only sent by the Eclipse SmartHome framework. However, it is possible to sent events explicitly, e.g. ItemCommandEvents and ItemStateEvents. The Java snippet below illustrates how to send events via the EventPublisher. The Eclipse SmartHome core events can only be created via the corresponding event factory. - -```java -public class SomeComponentWantsToPost { - private EventPublisher eventPublisher; - - public void postSomething() { - ItemCommandEvent itemCommandEvent = ItemEventFactory.createCommandEvent("ItemX", OnOffType.ON); - eventPublisher.post(itemCommandEvent); - } - - protected void setEventPublisher(EventPublisher eventPublisher) { - this.eventPublisher = eventPublisher; - } - - protected void unsetEventPublisher(EventPublisher eventPublisher) { - this.eventPublisher = null; - } -} -``` - -The EventPublisher will be injected via OSGi Declarative Services. - -```xml - - - - -``` - -## Define new Event Types - -It is possible to create and provide new event types. For a detailed description please refer to the [Event Type Definition section](./event-type-definition.html). diff --git a/concepts/images/audio.png b/concepts/images/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..dd379a4e9b5c2397c534bf7a0daea263bc0eab72 GIT binary patch literal 75724 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

    +j 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�L#Fn6$`q!_C-Aw-kTtJpu6>UUL@@`#=0Zl;#z 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 literal 0 HcmV?d00001