diff --git a/_addons_actions/pushbullet/readme.md b/_addons_actions/pushbullet/readme.md index 20508a96c..41872ea11 100644 --- a/_addons_actions/pushbullet/readme.md +++ b/_addons_actions/pushbullet/readme.md @@ -22,7 +22,10 @@ The Pushbullet action allows you to notify iOS, Android & Windows 10 Phone & Des The following is a valid action call that can be made when the plugin is loaded. For specific information on each item, see the [Pushbullet API](https://docs.pushbullet.com/). +The recipient can either be an email address or a channel tag. +If it is not specified or invalid, the note will be broadcast to all of the user account's devices. +- `sendPushbulletNote(String title, String message)` - `sendPushbulletNote(String receiver, String title, String message)` - `sendPushbulletNote(String botname, String receiver, String title, String message)` diff --git a/_addons_actions/pushover/readme.md b/_addons_actions/pushover/readme.md index 2b92e7fb7..fed9cc137 100644 --- a/_addons_actions/pushover/readme.md +++ b/_addons_actions/pushover/readme.md @@ -14,55 +14,83 @@ install: auto {% include base.html %} -# Pushover Actions - -The Pushover action service allows you to notify mobile devices of a message using the Pushover API web service. - -## Configuration - -You may define default values for parameters to action calls in the file `services/pushover.cfg`. -None of the configuration parameters are required as you can specify required configuration items in the action call, but you must at least provide an *API Token*, *User/Group Key* and a *Message* in some manner before a message can be pushed. - -| Property | Default | Required | Description | -|-----------------|---------|:-------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------| -| defaultTimeout | 10000 | No | Timeout in milliseconds for the connection to pushover.net | -| defaultToken | | if using action call without `apiToken` parameter | Pushover [API token](https://pushover.net/api) to send to devices | -| defaultUser | | if using action call without `userKey` parameter | Pushover User or Group key (not e-mail address) of your user (or you) to send to devices. | -| defaultTitle | openHAB | No | Application title for the notification | -| defaultPriority | 0 | No | Priority of the notification, from -2 (low priority) to 2 (high priority) | -| defaultUrl | | No | URL to attach to the message if not specified in the command. This can be used to trigger actions on the device. | -| defaultUrlTitle | | No | URL title to attach to the message if not specified in the command. This can be used to trigger actions on the device. | -| defaultRetry | 300 | No | When priority is 2 (high priority), how often (in seconds) should messages be resent | -| defaultExpire | 3600 | No | When priority is 2 (high priority), how long (in seconds) to continue resending messages until acknowledged | - -## Actions - -The following are valid action calls that can be made when the plugin is loaded. -For specific information on each item, see the [Pushover API](https://pushover.net/api). - -- `pushover(String message)` -- `pushover(String message, String device)` -- `pushover(String message, int priority)` -- `pushover(String message, int priority, String url)` -- `pushover(String message, int priority, String url, String urlTitle)` -- `pushover(String message, int priority, String url, String urlTitle, String soundFile)` -- `pushover(String message, String device, int priority)` -- `pushover(String message, String device, int priority, String url)` -- `pushover(String message, String device, int priority, String url, String urlTitle)` -- `pushover(String message, String device, int priority, String url, String urlTitle, String soundFile)` -- `pushover(String apiToken, String userKey, String message)` -- `pushover(String apiToken, String userKey, String message, String device)` -- `pushover(String apiToken, String userKey, String message, int priority)` -- `pushover(String apiToken, String userKey, String message, String device, int priority)` -- `pushover(String apiToken, String userKey, String message, String device, String title, String url, String urlTitle, int priority, String soundFile)` - -The action calls have to be configured in the above sequence, if you need to omit one of the call parameters you may use a null value or two double quotes. -In this case any default values from `services/pushover.cfg` will be used. -Note that you cannot use a null value for int priority. - -### Example - -Send a message without a sound, omit String url and String urlTitle. - -- `pushover("test message", 1, null, null, "none")` or -- `pushover("test message", 1, "", "", "none")` +# Pushover Actions + +The Pushover action service allows you to notify mobile devices of a message using the Pushover API web service. + +## Configuration + +You may define default values for parameters to action calls in the file `services/pushover.cfg`. +None of the configuration parameters are required as you can specify required configuration items in the action call, but you must at least provide an *API Token*, *User/Group Key* and a *Message* in some manner before a message can be pushed. + +| Property | Default | Required | method to set | Description | +|-----------------|---------|:-------------------------------------------------:|-------------------------------------|------------------------------------------------------------------------------------------------------------------------| +| defaultTimeout | 10000 | No | - | Timeout in milliseconds for the connection to pushover.net | +| defaultToken | | if using action call without `apiToken` parameter | withApiKey(String apiKey) | Pushover [API token](https://pushover.net/api) to send to devices | +| defaultUser | | if using action call without `userKey` parameter | withUser(String user) | Pushover User or Group key (not e-mail address) of your user (or you) to send to devices. | +| defaultTitle | openHAB | No | withTitle(String title) | Application title for the notification | +| defaultPriority | 0 | No | withPriority(int priority) | Priority of the notification, from -2 (low priority) to 2 (high priority) | +| defaultUrl | | No | withUrl(String url) | URL to attach to the message if not specified in the command. This can be used to trigger actions on the device. | +| defaultUrlTitle | | No | withUrlTitle(String urlTitle) | URL title to attach to the message if not specified in the command. This can be used to trigger actions on the device. | +| defaultRetry | 300 | No | - | When priority is 2 (high priority), how often (in seconds) should messages be resent | +| defaultExpire | 3600 | No | - | When priority is 2 (high priority), how long (in seconds) to continue resending messages until acknowledged | +| attachment | | No | withAttachment(String attachment) | The full path of a JPEG image attachment to be pushed with the message. | +| contentType | | No | withContentType(String contentType) | Content type, ie "image/png" | + +## Actions + +The following are valid action calls that can be made when the plugin is loaded. +For specific information on each item, see the [Pushover API](https://pushover.net/api). + +- `Deprecated ~~pushover(String message)~~` +- `Deprecated ~~pushover(String message, int priority)~~` +- `Deprecated ~~pushover(String message, int priority, String url)~~` +- `Deprecated ~~pushover(String message, int priority, String url, String urlTitle)~~` +- `Deprecated ~~pushover(String message, int priority, String url, String urlTitle, String soundFile)~~` +- `Deprecated ~~pushover(String message, String device)~~` +- `Deprecated ~~pushover(String message, String device, int priority)~~` +- `Deprecated ~~pushover(String message, String device, int priority, String url)~~` +- `Deprecated ~~pushover(String message, String device, int priority, String url, String urlTitle)~~` +- `Deprecated ~~pushover(String message, String device, int priority, String url, String urlTitle, String soundFile)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message, int priority)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message, String device)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message, String device, int priority)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message, String device, String title, String url, String urlTitle, int priority, String soundFile)~~` +- `Deprecated ~~pushover(String apiToken, String userKey, String message, String device, String title, String url, String urlTitle, int priority, String soundFile, String attachment)~~` +- `sendPushoverMessage(Pushover pushover)` + +The action calls have to be configured in the above sequence. The builder pattern is used to provide the parameters. The most parameters are optional and may have a default value. See the examples how to call use the pushover action. +In this case any default values from `services/pushover.cfg` will be used. +Note that you cannot use a null value for int priority. + + +- `cancelPushoverEmergency(String receipt)` +- `cancelPushoverEmergency(String apiToken, String userKey, String receipt)` + +The actions which are send using `withEmergencyPriority()` will send a message with [Emergency Priority](https://pushover.net/api#priority). +The actions return a receipt identifier (String). +The identifier has to be passed on to the `cancelPushoverEmergency` actions to cancel the notification prior to reaching the `defaultExpire` value of one hour. + +### Basic example + +Different ways to send a message. You can combine the withXXX methods as you need. + +- `sendPushoverMessage(pushoverBuilder("test message"))` or +- `sendPushoverMessage(pushoverBuilder("test message").withEmergencyPriority())` or +- `sendPushoverMessage(pushoverBuilder("test message").withAttachment("/path/to/file.jpeg"))` or +- `sendPushoverMessage(pushoverBuilder("test message").withAttachment("/path/to/file.png").withContentType("image/png"))` or +- `sendPushoverMessage(pushoverBuilder("test message").withApiKey("KEY").withUser("USER").withDevice("DEVICE").withTitle("TITLE").withUrl("URL").withUrlTitle("URL_TITLE").withPriority(0).withSound("SOUND").withAttachment("/path/to/file.png").withContentType("image/png"))` + +### Emergency example + +``` +var String receipt = sendPushoverMessage(pushoverBuilder("Attention, front door opened!").withEmergencyPriority()) + +// wait for your cancel condition + +if( receipt !== null ) { + cancelPushoverEmergency(receipt) + receipt = null +} +``` diff --git a/_addons_actions/telegram/readme.md b/_addons_actions/telegram/readme.md index 516510b23..a7404d47e 100644 --- a/_addons_actions/telegram/readme.md +++ b/_addons_actions/telegram/readme.md @@ -32,6 +32,17 @@ As described in the Telegram Bot API, this is the manual procedure needed in ord - Open a browser and invoke `https://api.telegram.org/bot/getUpdates` (where `` is the authentication token previously obtained) - Look at the JSON result and write down the value of `result[0].message.chat.id`. That is the chatId. Note that Telegram group chat chatIds are prefixed with a dash "-" that must be included in the config file. (e.g. bot1.chatId: -22334455) +## Actions + +Each of the actions returns `true` on success or `false` on failure. + +- `sendTelegram(String group, String message)`: Sends a Telegram via Telegram REST API - direct message +- `sendTelegram(String group, String format, Object... args)`: Sends a Telegram via Telegram REST API - build message with format and args +- `sendTelegramPhoto(String group, String photoURL, String caption)`: Sends a Picture via Telegram REST API +- `sendTelegramPhoto(String group, String photoURL, String caption, Integer timeoutMillis)`: Sends a Picture via Telegram REST API, using custom HTTP timeout +- `sendTelegramPhoto(String group, String photoURL, String caption, String username, String password)`: Sends a Picture, protected by username/password authentication, via Telegram REST API +- `sendTelegramPhoto(String group, String photoURL, String caption, String username, String password, int timeoutMillis, int retries)`: Sends a Picture, protected by username/password authentication, using custom HTTP timeout and retries, via Telegram REST API + ## Configuration The action can be configured in `services/telegram.cfg`. @@ -86,6 +97,12 @@ end ### Send an image to telegram chat +When sending an image from a URL, do not place the username/password in the URL like this: +`http://:@server/image.png`; pass the credentials to the `sendTelegramPhoto` +method instead. + +`http` and `https` are the only protocols allowed. + telegram.rules ```java @@ -110,7 +127,7 @@ then end ``` -In case your image is behind an authenticated web server (locked by username and password) you can pass the credentials as additional parameters to the extended `sendTelegramPhoto` method. +If an image is on a web server requiring authentication, credentials can be passed as additional parameters: telegram.rules @@ -124,11 +141,7 @@ then end ``` -Do not use username/password in url like in this example `http://:@server/image.png`; pass the credentials to the `sendTelegramPhoto` method instead. - -`http` and `https` are the only protocols allowed. - -If you would like to send a base64 jpeg or png image. +To send a base64 jpeg or png image: telegram.rules @@ -141,3 +154,16 @@ then sendTelegramPhoto("bot1", base64Image, "sent from Openhab") end ``` + +To send an image based on an Image Item: + +telegram.rules + +```java +rule "Send telegram with Image Item image and caption" +when + Item Webcam_Image changed +then + sendTelegramPhoto("bot1", Webcam_Image.state.toFullString, "sent from Openhab") +end +``` diff --git a/_addons_bindings/avmfritz/readme.md b/_addons_bindings/avmfritz/readme.md index af69aa186..39db92e87 100644 --- a/_addons_bindings/avmfritz/readme.md +++ b/_addons_bindings/avmfritz/readme.md @@ -43,13 +43,20 @@ This device does not contain a temperature sensor. ### FRITZ!DECT 301 / FRITZ!DECT 300 / Comet DECT -These devices [FRITZ!DECT 301](https://avm.de/produkte/fritzdect/fritzdect-301/), -FRITZ!DECT 300 and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol. +These devices [FRITZ!DECT 301](https://avm.de/produkte/fritzdect/fritzdect-301/), FRITZ!DECT 300 and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol. The FRITZ!Box can handle up to twelve heating thermostats. The binding provides channels for reading and setting the temperature. Additionally you can check the eco temperature, the comfort temperature and the battery level of the device. The FRITZ!Box has to run at least on firmware FRITZ!OS 6.35. +### FRITZ! groups + +The FRITZ!OS supports two different types of groups. +On the one hand there are groups for heating thermostats on the other hand there are groups for switchable outlets and power meters. +The first one provides the same channels like the [FRITZ!DECT 301 / FRITZ!DECT 300 / Comet DECT](http://docs.openhab.org/addons/bindings/avmfritz/readme.html#fritzdect-301--fritzdect-300--comet-dect) devices. +The later one provides the same channels like the [FRITZ!DECT 200 / FRITZ!DECT 210](http://docs.openhab.org/addons/bindings/avmfritz/readme.html#fritzdect-200--fritzdect-210) / [FRITZ!Powerline 546E](http://docs.openhab.org/addons/bindings/avmfritz/readme.html#fritzpowerline-546e) devices. +The FRITZ!Box has to run at least on firmware FRITZ!OS 6.69. + ## Discovery The FRITZ!Box and the powerline adapter are discovered through UPNP in the local network. @@ -87,23 +94,23 @@ If correct credentials are set in the bridge configuration, connected AHA device ## Supported Channels -| Channel Type ID | Item Type | Description | Available on thing | -|-----------------|-----------|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| mode | String | States the mode of the device (MANUAL/AUTOMATIC) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| locked | Contact | Device is locked for switching over external sources (OPEN/CLOSE) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| device_locked | Contact | Device is locked for switching manually (OPEN/CLOSE) - FRITZ!OS 6.90 | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| temperature | Number | Actual measured temperature (in °C) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!DECT Repeater 100, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| energy | Number | Accumulated energy consumption (in kWh) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | -| power | Number | Current power consumption (in W) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | -| outlet | Switch | Switchable outlet (ON/OFF) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | -| actual_temp | Number | Actual Temperature of heating thermostat (in °C) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| set_temp | Number | Set Temperature of heating thermostat (in °C) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| eco_temp | Number | Eco Temperature of heating thermostat (in °C) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| comfort_temp | Number | Comfort Temperature of heating thermostat (in °C) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| radiator_mode | String | Mode of heating thermostat (ON/OFF/COMFORT/ECO/BOOST) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| next_change | DateTime | Next change of the Set Temperature if scheduler is activated in the FRITZ!Box settings - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| next_temp | Number | Next Set Temperature if scheduler is activated in the FRITZ!Box settings (in °C) - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | -| battery_low | Switch | Battery Level Low (ON/OFF) - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| Channel Type ID | Item Type | Description | Available on thing | +|-----------------|--------------------|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| mode | String | States the mode of the device (MANUAL/AUTOMATIC) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| locked | Contact | Device is locked for switching over external sources (OPEN/CLOSE) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| device_locked | Contact | Device is locked for switching manually (OPEN/CLOSE) - FRITZ!OS 6.90 | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| temperature | Number:Temperature | Actual measured temperature | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!DECT Repeater 100, FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| energy | Number:Energy | Accumulated energy consumption | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | +| power | Number:Power | Current power consumption | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | +| outlet | Switch | Switchable outlet (ON/OFF) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!Powerline 546E | +| actual_temp | Number:Temperature | Actual Temperature of heating thermostat | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| set_temp | Number:Temperature | Set Temperature of heating thermostat | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| eco_temp | Number:Temperature | Eco Temperature of heating thermostat | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| comfort_temp | Number:Temperature | Comfort Temperature of heating thermostat | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| radiator_mode | String | Mode of heating thermostat (ON/OFF/COMFORT/ECO/BOOST) | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| next_change | DateTime | Next change of the Set Temperature if scheduler is activated in the FRITZ!Box settings - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| next_temp | Number:Temperature | Next Set Temperature if scheduler is activated in the FRITZ!Box settings - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | +| battery_low | Switch | Battery Level Low (ON/OFF) - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT | ## Full Example @@ -114,6 +121,8 @@ Bridge avmfritz:fritzbox:1 @ "Office" [ ipAddress="192.168.x.x", password="xxx", Thing FRITZ_DECT_200 xxxxxxxxxxxx "FRITZ!DECT 200 #1" @ "Living Room" [ ain="xxxxxxxxxxxx" ] Thing FRITZ_Powerline_546E yy_yy_yy_yy_yy_yy "FRITZ!Powerline 546E #2" @ "Office" [ ain="yy:yy:yy:yy:yy:yy" ] Thing Comet_DECT aaaaaabbbbbb "Comet DECT #3" @ "Office" [ ain="aaaaaabbbbbb" ] + Thing FRITZ_GROUP_HEATING AA_AA_AA_900 "Heating group" @ "Office" [ ain="AA:AA:AA-900" ] + Thing FRITZ_GROUP_SWITCH BB_BB_BB_900 "Switch group" @ "Living Room" [ ain="BB:BB:BB-900" ] } ``` @@ -121,41 +130,43 @@ demo.items: ```java Switch Outlet1 "Switchable outlet" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:outlet" } -Number Temperature1 "Actual measured temperature [%.1f °C]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:temperature" } -Number Energy1 "Accumulated energy consumption [%.3f Wh]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:energy" } -Number Power1 "Current power consumption [%.2f W]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:power" } +Number:Temperature Temperature1 "Current measured temperature [%.1f %unit%]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:temperature" } +Number:Energy Energy1 "Accumulated energy consumption [%.3f kWh]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:energy" } +Number:Power Power1 "Current power consumption [%.2f %unit%]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:power" } -Switch Outlet2 { channel="avmfritz:FRITZ_Powerline_546E:1:yy_yy_yy_yy_yy_yy:outlet" } +Switch Outlet2 "Switchable outlet" { channel="avmfritz:FRITZ_Powerline_546E:1:yy_yy_yy_yy_yy_yy:outlet" } -Group gCOMETDECT "Comet DECT heating thermostat" +Number:Temperature COMETDECTTemperature "Current measured temperature [%.1f %unit%]" { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:actual_temp" } +Number:Temperature COMETDECTSetTemperature "Thermostat temperature set point [%.1f %unit%]" { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:set_temp" } +String COMETDECTRadiatorMode "Radiator mode [%s]" { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:radiator_mode" } +Switch COMETDECTBattery "Battery low" { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:battery_low" } -Number COMETDECTActualTemp "Actual measured temperature [%.1f °C]" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:actual_temp" } -Number COMETDECTSetTemp "Thermostat temperature set point [%.1f °C]" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:set_temp" } -String COMETDECTRadiatorMode "Radiator mode [%s]" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:radiator_mode" } -Switch COMETDECTBattery "Battery low" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:aaaaaabbbbbb:battery_low" } +Number:Temperature FRITZ_GROUP_HEATINGSetTemperature "Group temperature set point [%.1f %unit%]" { channel="avmfritz:FRITZ_GROUP_HEATING:1:AA_AA_AA_900:set_temp" } + +Switch Outlet3 "Group switch" { channel="avmfritz:FRITZ_GROUP_SWITCH:1:BB_BB_BB_900:outlet" } ``` demo.sitemap: ```perl -sitemap demo label="Main Menu"{ +sitemap demo label="Main Menu" { - Frame label="FRITZ!DECT 200 switchable outlet" { - Switch item=Outlet1 icon="poweroutlet" - Text item=Temperature1 icon="temperature" - Text item=Energy1 icon="energy" - Text item=Power1 icon="energy" - } + Frame label="FRITZ!DECT 200 switchable outlet" { + Switch item=Outlet1 icon="poweroutlet" + Text item=Temperature1 icon="temperature" + Text item=Energy1 icon="energy" + Text item=Power1 icon="energy" + } - Frame label="FRITZ!Powerline 546E switchable outlet" { - Switch item=Outlet2 - } + Frame label="FRITZ!Powerline 546E switchable outlet" { + Switch item=Outlet2 icon="poweroutlet" + } - Frame "Comet DECT heating thermostat" { - Text item=COMETDECTActualTemp icon="temperature" - Setpoint item=COMETDECTSetTemp minValue=8.0 maxValue=28.0 step=0.5 icon="temperature" - Selection item=COMETDECTRadiatorMode mappings=["ON"="ON", "OFF"="OFF", "COMFORT"="COMFORT", "ECO"="ECO", "BOOST"="BOOST"] - Switch item=COMETDECTBattery icon="battery" - } + Frame "Comet DECT heating thermostat" { + Text item=COMETDECTTemperature icon="temperature" + Setpoint item=COMETDECTSetTemperature minValue=8.0 maxValue=28.0 step=0.5 icon="temperature" + Selection item=COMETDECTRadiatorMode mappings=["ON"="ON", "OFF"="OFF", "COMFORT"="COMFORT", "ECO"="ECO", "BOOST"="BOOST"] icon="heating" + Switch item=COMETDECTBattery icon="lowbattery" + } } ``` diff --git a/_addons_bindings/bosesoundtouch/readme.md b/_addons_bindings/bosesoundtouch/readme.md new file mode 100644 index 000000000..97fa524f7 --- /dev/null +++ b/_addons_bindings/bosesoundtouch/readme.md @@ -0,0 +1,141 @@ +--- +id: bosesoundtouch +label: Bose SoundTouch +title: Bose SoundTouch - Bindings +type: binding +description: "This binding supports the Bose SoundTouch multiroom system." +since: 2x +install: auto +--- + + + +{% include base.html %} + +# Bose SoundTouch Binding + +This binding supports the Bose SoundTouch multiroom system. + +## Supported Things + +The following Bose devices are supported: + +| Name | Thing Type | +|---------------------------------------|-----------------------------| +| Bose SoundTouch 10 | 10 | +| Bose SoundTouch 20 | 20 | +| Bose SoundTouch 30 | 30 | +| Bose SoundTouch 300 | 300 | +| Bose Wave SoundTouch Music System IV | waveSoundTouchMusicSystemIV | +| Bose SoundTouch Wireless Link Adapter | wirelessLinkAdapter | +| Bose SoundTouch SA-5 Amplifier | sa5Amplifier | +| Any other Bose SoundTouch device | device | + +## Discovery + +Speakers are automatically discovered using mDNS in the local network. + +## Binding Configuration + +The binding has no configuration options, all configuration is done at Thing level. + +## Thing Configuration + +All thing types have the same configuration parameters: + +| Parameter Name | Type | Required | Description | +|----------------|--------|----------|--------------------------------------------------------------| +| host | String | Yes | The host name or IP address of the device | +| macAddress | String | Yes | The MAC address of the used interface (format "123456789ABC")| + +Both are set when using discovery. For manual configuration, these values can be found in the Bose smartphone app (Settings -> About -> Device Name). +Note that the device might have two MAC addresses, one for ethernet and one for Wifi. + +## Channels + +All devices share the same set of channels, while some of them might not be available on all devices. + +| Channel ID | Item Type | Description | +|---------------------------|-----------|--------------------------------------------------------------| +| keyCode | String | Simulates pushing a remote control button | +| mute | Switch | Mutes the sound | +| nowPlayingAlbum | String | Current playing album name | +| nowPlayingArtist | String | Current playing artist name | +| nowPlayingArtwork | Image | Artwork for the current playing song | +| nowPlayingDescription | String | Description to current playing song | +| nowPlayingGenre | String | Genre of current playing song | +| nowPlayingItemName | String | Visible description shown in display | +| nowPlayingStationLocation | String | Location of current playing radio station | +| nowPlayingStationName | String | Name of current playing radio station | +| nowPlayingTrack | String | Track currently playing | +| operationMode | String | Current Operation Mode | +| playerControl | Player | Control the Player | +| power | Switch | SoundTouch power state | +| preset | Number | 1-6 Preset of Soundtouch, >7 Binding Presets | +| rateEnabled | Switch | Current source allows rating | +| saveAsPreset | Number | A selected presetable item is saved as preset with number >6 | +| skipEnabled | Switch | Current source allows skipping to next track | +| skipPreviousEnabled | Switch | Current source allows scrolling through tracks | +| volume | Dimmer | Set or get the volume | +| bass | Number | Bass (-9 minimum, 0 maximum) | + +## Full Example + +Things: + +``` +bosesoundtouch:device:demo @ "Living" [ host="192.168.1.2", macAddress="123456789ABC" ] +``` + +Items: + +``` +Switch Bose1_Power "Power: [%s]" { channel="bosesoundtouch:device:demo:power" } +Dimmer Bose1_Volume "Volume: [%d %%]" { channel="bosesoundtouch:device:demo:volume" } +Number Bose1_Bass "Bass: [%d %%]" { channel="bosesoundtouch:device:demo:bass" } +Switch Bose1_Mute "Mute: [%s]" { channel="bosesoundtouch:device:demo:mute" } +String Bose1_OperationMode "OperationMode: [%s]" { channel="bosesoundtouch:device:demo:operationMode" } +String Bose1_PlayerControl "Player Control: [%s]" { channel="bosesoundtouch:device:demo:playerControl" } +Number Bose1_Preset "Preset: [%d]" { channel="bosesoundtouch:device:demo:preset" } +Number Bose1_SaveAsPreset "Save as Preset: [%d]" { channel="bosesoundtouch:device:demo:saveAsPreset" } +String Bose1_KeyCode "Key Code: [%s]" { channel="bosesoundtouch:device:demo:keyCode" } +Switch Bose1_RateEnabled "Rate: [%s]" { channel="bosesoundtouch:device:demo:rateEnabled" } +Switch Bose1_SkipEnabled "Skip: [%s]" { channel="bosesoundtouch:device:demo:skipEnabled" } +Switch Bose1_SkipPreviousEnabled "SkipPrevious: [%s]" { channel="bosesoundtouch:device:demo:skipPreviousEnabled" } +String Bose1_nowPlayingAlbum "Album: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingAlbum" } +String Bose1_nowPlayingArtist "Artist: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingArtist" } +Image Bose1_nowPlayingArtwork "Artwork" { channel="bosesoundtouch:device:demo:nowPlayingArtwork" } +String Bose1_nowPlayingDescription "Description: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingDescription" } +String Bose1_nowPlayingGenre "Genre: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingGenre" } +String Bose1_nowPlayingItemName "Playing: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingItemName" } +String Bose1_nowPlayingStationLocation "Radio Location: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingStationLocation" } +String Bose1_nowPlayingStationName "Radio Name: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingStationName" } +String Bose1_nowPlayingTrack "Track: [%s]" { channel="bosesoundtouch:device:demo:nowPlayingTrack" } +``` + +Sitemap: + +``` +sitemap demo label="Bose Test Items" +{ + Frame label="Bose 1" { + Switch item=Bose1_Power + Slider item=Bose1_Volume + Number item=Bose1_Bass + Switch item=Bose1_Mute + Text item=Bose1_OperationMode + Text item=Bose1_PlayerControl + Number item=Bose1_Preset + Number item=Bose1_SaveAsPreset + Text item=Bose1_KeyCode + Text item=Bose1_nowPlayingAlbum + Text item=Bose1_nowPlayingArtist + Text item=Bose1_nowPlayingArtwork + Text item=Bose1_nowPlayingDescription + Text item=Bose1_nowPlayingGenre + Text item=Bose1_nowPlayingItemName + Text item=Bose1_nowPlayingStationLocation + Text item=Bose1_nowPlayingTrack + } +} +``` diff --git a/_addons_bindings/bticino1/readme.md b/_addons_bindings/bticino1/readme.md index 2c8519fad..12eab1345 100644 --- a/_addons_bindings/bticino1/readme.md +++ b/_addons_bindings/bticino1/readme.md @@ -34,6 +34,8 @@ This binding can be configured in the file `services/bticino.cfg`. | webserver.port | 20000 | No | OpenWebNet gateway port | | webserver.passwd | 12345 | No | OpenWebNet gateway password | | webserver.rescan_secs | 120 | No | OpenWebNet bus status rescan interval | +| webserver.heating_zones | 0 | No | OpenWebNet heating zones | +| webserver.shutter_run_msecs | 0 | No | OpenWebNet Runtime of Shutter to calculate Position Feedback | A sample configuration could look like: @@ -86,6 +88,8 @@ Group Corridor Group Living Group Plugs Group RollerUpShutters +Group Heating +Group HeatingActor // Sceneries Switch Movie_Scenery "Movie scenery" @@ -103,6 +107,85 @@ Switch Doorbell_Light "Doorbell courtesy light" (Entrance, Lights) {bticino="if= // Rollershutters Rollershutter RollUpShutter_1 "Roller-up shutter 1" (Living, RollerUpShutters) {bticino="if=webserver;who=2;what=0;where=46"} Rollershutter RollUpShutter_2 "Roller-up shutter 2" (Living, RollerUpShutters) {bticino="if=webserver;who=2;what=0;where=47"} + +//Heating +Number ActualTemp_1 "Actual Temperature 1 [%.1f °C]" (Heating) {bticino="if=default;who=4;what=0;where=1"} +Number ControlTemp_1 "Control Temperature 1 [%.1f °C]" (Heating) {bticino="if=default;who=4;what=12;where=1"} +Number OffsetTemp_1 "Offset Temperature 1 [MAP(yourbticino_offset.map):%s]" (Heating) {bticino="if=default;who=4;what=13;where=1"} +Number SetTemp_1 "Set Temperature [%.1f °C]" (Heating) {bticino="if=default;who=4;what=14;where=1"} + +Number HCtrlMode_1 "Control Mode [MAP(yourbticino.map):%s]" (Heating) {bticino="if=default;who=4;what=100;where=1"} +Number HOpMode_1 "Operation Mode [MAP(yourbticino.map):%s]" (Heating) {bticino="if=default;who=4;what=101;where=1"} + +Contact HValve_1 "Actor 1 [MAP(yourbticino.map):%s]" (HeatingActor) {bticino="if=default;who=4;what=20;where=1"} + +Contact HPumpe "Pump [MAP(yourbticino.map):%s]" (HeatingActor) {bticino="if=default;who=4;what=20;where=0"} +Number MHCtrlMode "Main Unit Control Mode [MAP(yourbticino.map):%s]" (Heating) {bticino="if=default;who=4;what=100;where=0"} +Number HMCtrlRemote "Main Unit Remote [MAP(yourbticino.map):%s]" (Heating) {bticino="if=default;who=4;what=102;where=0"} +String HMCtrlStatus "Main Unit Status [%s]" (Heating) {bticino="if=default;who=4;what=103;where=0"} +String HMCtrlFailure "Main Unit Failure [%s]" (Heating) {bticino="if=default;who=4;what=104;where=0"} +``` + +transform/yourbticino.map + +``` +CLOSED=Heating OFF +OPEN=Heating ON + +1=HEATING +2=COLLING + +20=Remote Control disabled +21=Remote Control enabled + +102=FREEZE PROTECTION +103=OFF +110=MANUAL +111=AUTOMATIK + +202=FREEZE PROTECTION +203=OFF +210=MANUAL +211=AUTOMATIK + +302=FREEZE PROTECTION +303=OFF +310=MANUAL +311=AUTOMATIK + +1101=Program Winter 1 +1102=Program Winter 2 +1103=Program Winter 3 + +1201=Scenario Winter 1 +1202=Scenario Winter 2 +.. +1216=Scenario Winter 16 + +2101=Program Summer 1 +2102=Program Summer 2 +2103=Program Summer 3 + + +2201=Scenario Winter 1 +2202=Scenario Winter 2 +.. +2216=Scenario Winter 16 +``` + +transform/yourbticino_offset.map + +``` +NULL=---- +0=+0 °C +1=+1 °C +2=+2 °C +3=+3 °C +4=-OFF- +5=FREEZE +-1=-1 °C +-2=-2 °C +-3=-3 °C ``` sitemaps/yourbticino.sitemap @@ -118,6 +201,23 @@ sitemap yourbticino label="Main panel" { Frame label="Sceneries" { Switch item=Movie_Scenery mappings=[OFF="Turn OFF",ON="Turn ON"] } + + Frame label="Heating Main Control Unit" { + Selection item=HMCtrlMode label="Control Mode Main Unit [%.1f]" mappings=[103="OFF", 102="FREEZE PROTECTION", 1101="Program Winter 1", 1201="Scenario Winter 1"] + Text item=HMCtrlRemote + Text item=HMCtrlStatus + Text item=HMCtrlFailure + Default item=HPumpe + } + Frame label="Heating Room 1" { + Text item=ActualTemp_1 + Text item=OffsetTemp_1 + Setpoint item=SetTemp_1 label="Set Point Temperature [%.1f °C]" step=0.5 minValue=16 maxValue=25 + Text item=ControlTemp_1 + Selection item=HCtrlMode_1 label="Control Mode [%.1f]" mappings=[103="OFF", 110="MANUAL", 111="AUTOMATIC", 102="FREEZE PROTECTION"] + Text item=HOpMode_1 + Text item=HValve_1 + } } ``` @@ -148,8 +248,8 @@ then } end -// Doorbel ringer light -rule "Doorbel ringer" +// Doorbell ringer light +rule "Doorbell ringer" when Item Doorbell_Light received update then diff --git a/_addons_bindings/fritzboxtr0641/readme.md b/_addons_bindings/fritzboxtr0641/readme.md index 8ec99809f..291dbe447 100644 --- a/_addons_bindings/fritzboxtr0641/readme.md +++ b/_addons_bindings/fritzboxtr0641/readme.md @@ -67,16 +67,16 @@ String fboxName "FBox Model [%s]" {fritzboxtr064="modelNam String fboxManufacturer "FBox Manufacturer [%s]" {fritzboxtr064="manufacturerName"} String fboxSerial "FBox Serial [%s]" {fritzboxtr064="serialNumber"} String fboxVersion "FBox Version [%s]" {fritzboxtr064="softwareVersion"} -# get wan ip if FritzBox establishes the internet connection (e. g. via DSL) +// get wan ip if FritzBox establishes the internet connection (e. g. via DSL) String fboxWanIP "FBox WAN IP [%s]" {fritzboxtr064="wanip"} -# get wan ip if FritzBox uses internet connection of external router +// get wan ip if FritzBox uses internet connection of external router String fboxWanIPExternal "FBox external WAN IP [%s]" {fritzboxtr064="externalWanip"} Switch fboxWifi24 "2,4GHz Wifi" {fritzboxtr064="wifi24Switch"} Switch fboxWifi50 "5,0GHz Wifi" {fritzboxtr064="wifi50Switch"} Switch fboxGuestWifi "Guest Wifi" {fritzboxtr064="wifiGuestSwitch"} Contact cFboxMacOnline "Presence (WiFi) [%s]" {fritzboxtr064="maconline:11-11-11-11-11-11" } -# WAN statistics +// WAN statistics String fboxWanAccessType "FBox WAN access type [%s]" {fritzboxtr064="wanWANAccessType"} Number fboxWanLayer1UpstreamMaxBitRate "FBox WAN us max bit rate [%s]" {fritzboxtr064="wanLayer1UpstreamMaxBitRate"} @@ -85,7 +85,7 @@ String fboxWanPhysicalLinkStatus "FBox WAN physical link status [%s]" {fritzbox Number fboxWanTotalBytesSent "WAN total bytes sent [%s]" {fritzboxtr064="wanTotalBytesSent"} Number fboxWanTotalBytesReceived "WAN total bytes received [%s]" {fritzboxtr064="wanTotalBytesReceived"} -# DSL statistics +// DSL statistics Contact fboxDslEnable "FBox DSL Enable [%s]" {fritzboxtr064="dslEnable"} String fboxDslStatus "FBox DSL Status [%s]" {fritzboxtr064="dslStatus"} @@ -101,30 +101,25 @@ Number fboxDslFECErrors "DSL FEC Errors [%s]" {fritzboxtr064="dslFECErrors"} Number fboxDslHECErrors "DSL HEC Errors [%s]" {fritzboxtr064="dslHECErrors"} Number fboxDslCRCErrors "DSL CRC Errors [%s]" {fritzboxtr064="dslCRCErrors"} -# only when using call monitor +// only when using call monitor Switch fboxRinging "Phone ringing [%s]" {fritzboxtr064="callmonitor_ringing" } Switch fboxRinging_Out "Phone ringing [%s]" {fritzboxtr064="callmonitor_outgoing" } Call fboxIncomingCall "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing" } Call fboxOutgoingCall "Outgoing call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_outgoing" } -# resolve numbers to names according phonebook +// resolve numbers to names based on phonebook Call fboxIncomingCallResolved "Incoming call: [%1$s to %2$s]" {fritzboxtr064="callmonitor_ringing:resolveName" } -# Telephone answering machine (TAM) items -# Number after tamSwitch is ID of configured TAM, start with 0 +// Telephone answering machine (TAM) items +// Number after tamSwitch is ID of configured TAM, start with 0 Switch fboxTAM0Switch "Answering machine ID 0" {fritzboxtr064="tamSwitch:0"} Number fboxTAM0NewMsg "New Messages TAM 0 [%s]" {fritzboxtr064="tamNewMessages:0"} -# Missed calls: specify the number of last days which should be searched for missed calls +// Missed calls: specify the number of last days which should be searched for missed calls Number fboxMissedCalls "Missed Calls [%s]" {fritzboxtr064="missedCallsInDays:5"} ``` -## Known issues - -See issues [here](https://github.com/gitbock/fritzboxtr064/issues?q=is%3Aissue+is%3Aclosed). - - ## Examples and Hints ### Sitemap @@ -138,14 +133,15 @@ Use a map for presence detection item: Create file `transform/presence.map` and add: ``` -1=present -0=not present +OPEN=present +CLOSED=not present +NULL=unknown ``` -Now, as item configuration use: +Now, as item configuration use (the addon "Map Transformation" must be installed): ``` -Contact cFboxMacOnline "Presence (Wifi) [MAP(presence.map):%d]" {fritzboxtr064="maconline:11-22-33-44-55-66 } +Contact cFboxMacOnline "Presence (Wifi) [MAP(presence.map):%s]" {fritzboxtr064="maconline:11-22-33-44-55-66 } ``` ### Rules @@ -159,9 +155,11 @@ when Item fboxRinging changed from OFF to ON then logInfo("Anrufermeldung", "Generating caller name message...") - // fboxIncoming call receives numbers/name of incoming call - val CallType incCall = fboxIncomingCall.state as CallType - var callerName = incCall.destNum //destNum is external number OR resolved Name if no phonebook entry exists + + val incCall = fboxIncomingCall.state as StringListType + val callerNumber = incCall.getValue(1) + val incCallResolved = fboxIncomingCallResolved.state as StringListType + val callerName = incCallResolved.getValue(1) // do something with callerName end diff --git a/_addons_bindings/fronius/readme.md b/_addons_bindings/fronius/readme.md index dc1367287..3d796f92b 100644 --- a/_addons_bindings/fronius/readme.md +++ b/_addons_bindings/fronius/readme.md @@ -12,78 +12,78 @@ install: auto {% include base.html %} -# Fronius Binding - -This binding uses the [Fronius Solar API V1](http://www.fronius.com/en/photovoltaics/products/all-products/system-monitoring/open-interfaces/fronius-solar-api-json-) to obtain data from a Fronius devices. - - -## Supported Things - -Support Fronius Galvo, Fronius Symo inverters and other Fronius inverters in combination with the Fronius Datamanager 1.0 / 2.0 or Fronius Datalogger. -You can add multiple inverters that depend on the same datalogger with different device ids. ( Default 1 ) - -## Discovery - -There is no discovery implemented. You have to create your things manually and specify the IP of the Datalogger and the DeviceId. - -## Binding Configuration - -The binding has no configuration options, all configuration is done at Thing level. - -## Thing Configuration - -The thing has a few configuration parameters: - -| Parameter | Description | -|-----------|------------------------------------------------------------------------- | -| Ip | the ip-address of your Fronius Datalogger | -| DeviceId | The identifier of your device ( Default: 1) | -| refresh | Refresh interval in seconds | - -## Channels - -| Channel ID | Item Type | Description | -|------------|--------------|------------------------- | -| day_energy | Number | Energy generated on current day | -| pac | Number | AC powery | -| total_energy | Number | Energy generated overall | -| year_energy | Number | Energy generated in current year | -| fac | Number | AC frequency | -| iac | Number | AC current | -| idc | Number | DC current | -| uac | Number | AC voltage | -| udc | Number | DC voltage | -| pGrid | Number | Power + from grid, - to grid | -| pLoad | Number | Power + generator, - consumer | -| pAkku | Number | Power + charge, - discharge | - -## Full Example - -demo.things: - -``` -Bridge fronius:bridge:mybridge [hostname="192.168.66.148",refreshInterval=5] { - Thing powerinverter myinverter [ deviceId=1 ] -} -``` - -demo.items: - -``` -Number AC_Powery { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelpac" } -Number Day_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneldayenergy" } -Number Total_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneltotal" } -Number Year_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelyear" } -Number FAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelfac" } -Number IAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneliac" } -Number IDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelidc" } -Number UAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneluac" } -Number UDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneludc" } -Number Grid_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpgrid" } -Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } -Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } -Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } -Number Battery_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpakku" } -``` - +# Fronius Binding + +This binding uses the [Fronius Solar API V1](http://www.fronius.com/en/photovoltaics/products/all-products/system-monitoring/open-interfaces/fronius-solar-api-json-) to obtain data from a Fronius devices. + + +## Supported Things + +Support Fronius Galvo, Fronius Symo inverters and other Fronius inverters in combination with the Fronius Datamanager 1.0 / 2.0 or Fronius Datalogger. +You can add multiple inverters that depend on the same datalogger with different device ids. ( Default 1 ) + +## Discovery + +There is no discovery implemented. You have to create your things manually and specify the IP of the Datalogger and the DeviceId. + +## Binding Configuration + +The binding has no configuration options, all configuration is done at Thing level. + +## Thing Configuration + +The thing has a few configuration parameters: + +| Parameter | Description | +|-----------|------------------------------------------------------------------------- | +| Ip | the ip-address of your Fronius Datalogger | +| DeviceId | The identifier of your device ( Default: 1) | +| refresh | Refresh interval in seconds | + +## Channels + +| Channel ID | Item Type | Description | +|------------|--------------|------------------------- | +| day_energy | Number | Energy generated on current day | +| pac | Number | AC powery | +| total_energy | Number | Energy generated overall | +| year_energy | Number | Energy generated in current year | +| fac | Number | AC frequency | +| iac | Number | AC current | +| idc | Number | DC current | +| uac | Number | AC voltage | +| udc | Number | DC voltage | +| pGrid | Number | Power + from grid, - to grid | +| pLoad | Number | Power + generator, - consumer | +| pAkku | Number | Power + charge, - discharge | + +## Full Example + +demo.things: + +``` +Bridge fronius:bridge:mybridge [hostname="192.168.66.148",refreshInterval=5] { + Thing powerinverter myinverter [ deviceId=1 ] +} +``` + +demo.items: + +``` +Number AC_Powery { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelpac" } +Number Day_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneldayenergy" } +Number Total_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneltotal" } +Number Year_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelyear" } +Number FAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelfac" } +Number IAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneliac" } +Number IDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelidc" } +Number UAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneluac" } +Number UDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneludc" } +Number Grid_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpgrid" } +Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } +Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } +Number Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" } +Number Battery_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpakku" } +``` + Tested with a Fronius Symo 8.2-3-M diff --git a/_addons_bindings/homematic/readme.md b/_addons_bindings/homematic/readme.md index 9a7cdf471..bcb397644 100644 --- a/_addons_bindings/homematic/readme.md +++ b/_addons_bindings/homematic/readme.md @@ -134,6 +134,9 @@ Think in hours when configuring (one hour = 3600) - **timeout** The timeout in seconds for connections to a Homematic gateway (default = 15) +- **discoveryTimeToLive** +The time to live in seconds for discovery results of a Homematic gateway (default = -1, which means infinite) + - **socketMaxAlive** The maximum lifetime of a pooled socket connection to the Homematic gateway in seconds (default = 900) diff --git a/_addons_bindings/homematic1/readme.md b/_addons_bindings/homematic1/readme.md index 7ac281118..e28524a19 100644 --- a/_addons_bindings/homematic1/readme.md +++ b/_addons_bindings/homematic1/readme.md @@ -407,7 +407,7 @@ rpc=bin -> No BinX signature rpc=xml -> BadRequestException: Binsystem.multicall ``` -The binding registers itself with the CCU at startup with the specified communication mode. If you shutdown openHAB (or kill it) and the binding can not unregister successfully from the CCU, the CCU still sends messages. It does this for about three minutes, if there is no answer, it gives up. If you start openHAB in this period of time with another communication mode, these exceptions occur. +The binding registers itself with the CCU at startup with the specified communication mode. If you shutdown openHAB (or kill it) and the binding cannot unregister successfully from the CCU, the CCU still sends messages. It does this for about three minutes, if there is no answer, it gives up. If you start openHAB in this period of time with another communication mode, these exceptions occur. Just wait untill the exceptions disappear and restart openHAB. This happens only after switching the communication mode. diff --git a/_addons_bindings/irtrans/readme.md b/_addons_bindings/irtrans/readme.md index 8883c94ca..4b91dc9c7 100644 --- a/_addons_bindings/irtrans/readme.md +++ b/_addons_bindings/irtrans/readme.md @@ -64,9 +64,9 @@ demo.things: Bridge irtrans:ethernet:kitchen [ ipAddress="192.168.0.56", portNumber=21000, bufferSize=1024, responseTimeOut=100, pingTimeOut=2000, reconnectInterval=10 ] { Channels: -Receiver : any [remote="*", command="*"] -Receiver : telenet_power [remote="telenet", command="power"] -Blaster : samsung [led="E", remote="samsung", command="*"] +Type receiver : any [remote="*", command="*"] +Type receiver : telenet_power [remote="telenet", command="power"] +Type blaster : samsung [led="E", remote="samsung", command="*"] } ``` @@ -76,10 +76,10 @@ In the above example, the first channel will be updated when any IR command from Bridge irtrans:ethernet:technicalfacilities [ ipAddress="192.168.0.58", portNumber=21000, bufferSize=1024, responseTimeOut=100, pingTimeOut=2000, reconnectInterval=10 ] { Channels: -Receiver : any [remote="*", command="*"] -Blaster : telenet1 [led="2", remote="telenet", command="*"] -Blaster : telenet2 [led="1", remote="telenet", command="*"] -Blaster : appletv [led="3", remote="appletv", command="*"] +Type receiver : any [remote="*", command="*"] +Type blaster : telenet1 [led="2", remote="telenet", command="*"] +Type blaster : telenet2 [led="1", remote="telenet", command="*"] +Type blaster : appletv [led="3", remote="appletv", command="*"] } ``` diff --git a/_addons_bindings/irtrans1/readme.md b/_addons_bindings/irtrans1/readme.md index be7bc7676..9d15e5b38 100644 --- a/_addons_bindings/irtrans1/readme.md +++ b/_addons_bindings/irtrans1/readme.md @@ -49,7 +49,7 @@ where It is possible to define wildcards for `` and ``: if either of them are equal to `**` then respectively, any device that defines the given ``, or any `` for the given ``, will match and trigger the status update of the item. If you would put `**` for both `` and `` then any infrared command received by the transceiver will cause the item to be updated. -> **Note:** the IRtrans device does not communicate which `` a command is received by, so that information can not be used to wildcard infrared commands received +> **Note:** the IRtrans device does not communicate which `` a command is received by, so that information cannot be used to wildcard infrared commands received > **Note:** If the item is of the type String, then any infrared command received by the transceiver will cause the Item to be updated with "``,``". Likewise, any string passed on by the OpenHAB runtime will simply be parsed using the "``,``" pattern. For such Items the `` element has to be omitted in the configuration string diff --git a/_addons_bindings/kodi/readme.md b/_addons_bindings/kodi/readme.md index 155780a38..c3bbf982f 100644 --- a/_addons_bindings/kodi/readme.md +++ b/_addons_bindings/kodi/readme.md @@ -66,6 +66,7 @@ The following configuration options are available for the Kodi binding: The Kodi thing requires the IP address of the device hosting your Kodi media center instance, the TCP port to access it (default: `9090`) and the HTTP port to build URLs to the Kodi webinterface for downloading thumbnail and fanart images (default: `8080`). You optionally can define a `httpUser` and a `httpPassword` parameter if the access to your Kodi webinterface is protected. The IP address will be found by the auto-discovery feature. +You can use the `notificationVolume` property for setting a default volume (in %) as well as a `notificationTimeout` (in s) to be used to play notifications. A manual setup through a `things/kodi.things` file could look like this: @@ -82,7 +83,7 @@ The Kodi thing supports the following channels: | mute | Switch | Mute/unmute your playback | | volume | Dimmer | Read or control the volume of your playback | | control | Player | Control the Kodi player, e.g. `PLAY`, `PAUSE`, `NEXT`, `PREVIOUS`, `FASTFORWARD`, `REWIND` | -| stop | Switch | Write `ON` to this channel: Stops the Kodi player. If this channel is `ON`, the player is stopped, otherwise kodi is in another state (see control channel) | +| stop | Switch | Write `ON` to this channel: Stops the Kodi player. If this channel is `ON`, the player is stopped, otherwise Kodi is in another state (see control channel) | | title | String | Title of the currently played song/movie/tv episode | | showtitle | String | Title of the currently played tv-show; empty for other types | | album | String | Album name of the currently played song | @@ -96,21 +97,32 @@ The Kodi thing supports the following channels: | input | String | Allows to control Kodi. Valid values are: `Up`, `Down`, `Left`, `Right`, `Select`, `Back`, `Home`, `ContextMenu`, `Info`, `ShowOSD`, `ShowPlayerProcessInfo`, `SendText` and `ExecuteAction` | | inputtext | String | This channel emulates a keyboard input | | inputaction | String | Send a predefined action to the Kodi Player to control the UI and/or perform other tasks. Valid values are: `left`, `right`, `up`, `down`, `pageup`, `pagedown`, `select`, `highlight`, `parentdir`, `parentfolder`, `back`, `menu`, `previousmenu`, `info`, `pause`, `stop`, `skipnext`, `skipprevious`, `fullscreen`, `aspectratio`, `stepforward`, `stepback`, `bigstepforward`, `bigstepback`, `chapterorbigstepforward`, `chapterorbigstepback`, `osd`, `showsubtitles`, `nextsubtitle`, `cyclesubtitle`, `playerdebug`, `codecinfo`, `playerprocessinfo`, `nextpicture`, `previouspicture`, `zoomout`, `zoomin`, `playlist`, `queue`, `zoomnormal`, `zoomlevel1`, `zoomlevel2`, `zoomlevel3`, `zoomlevel4`, `zoomlevel5`, `zoomlevel6`, `zoomlevel7`, `zoomlevel8`, `zoomlevel9`, `nextcalibration`, `resetcalibration`, `analogmove`, `analogmovex`, `analogmovey`, `rotate`, `rotateccw`, `close`, `subtitledelayminus`, `subtitledelay`, `subtitledelayplus`, `audiodelayminus`, `audiodelay`, `audiodelayplus`, `subtitleshiftup`, `subtitleshiftdown`, `subtitlealign`, `audionextlanguage`, `verticalshiftup`, `verticalshiftdown`, `nextresolution`, `audiotoggledigital`, `number0`, `number1`, `number2`, `number3`, `number4`, `number5`, `number6`, `number7`, `number8`, `number9`, `smallstepback`, `fastforward`, `rewind`, `play`, `playpause`, `switchplayer`, `delete`, `copy`, `move`, `screenshot`, `rename`, `togglewatched`, `scanitem`, `reloadkeymaps`, `volumeup`, `volumedown`, `mute`, `backspace`, `scrollup`, `scrolldown`, `analogfastforward`, `analogrewind`, `moveitemup`, `moveitemdown`, `contextmenu`, `shift`, `symbols`, `cursorleft`, `cursorright`, `showtime`, `analogseekforward`, `analogseekback`, `showpreset`, `nextpreset`, `previouspreset`, `lockpreset`, `randompreset`, `increasevisrating`, `decreasevisrating`, `showvideomenu`, `enter`, `increaserating`, `decreaserating`, `setrating`, `togglefullscreen`, `nextscene`, `previousscene`, `nextletter`, `prevletter`, `jumpsms2`, `jumpsms3`, `jumpsms4`, `jumpsms5`, `jumpsms6`, `jumpsms7`, `jumpsms8`, `jumpsms9`, `filter`, `filterclear`, `filtersms2`, `filtersms3`, `filtersms4`, `filtersms5`, `filtersms6`, `filtersms7`, `filtersms8`, `filtersms9`, `firstpage`, `lastpage`, `guiprofile`, `red`, `green`, `yellow`, `blue`, `increasepar`, `decreasepar`, `volampup`, `volampdown`, `volumeamplification`, `createbookmark`, `createepisodebookmark`, `settingsreset`, `settingslevelchange`, `stereomode`, `nextstereomode`, `previousstereomode`, `togglestereomode`, `stereomodetomono`, `channelup`, `channeldown`, `previouschannelgroup`, `nextchannelgroup`, `playpvr`, `playpvrtv`, `playpvrradio`, `record`, `togglecommskip`, `showtimerrule`, `leftclick`, `rightclick`, `middleclick`, `doubleclick`, `longclick`, `wheelup`, `wheeldown`, `mousedrag`, `mousemove`, `tap`, `longpress`, `pangesture`, `zoomgesture`, `rotategesture`, `swipeleft`, `swiperight`, `swipeup`, `swipedown`, `error`, `noop` | -| systemcommand | String | This channel allows to send commands to `shutdown`, `suspend`, `hibernate`, `reboot` kodi | +| systemcommand | String | This channel allows to send commands to `shutdown`, `suspend`, `hibernate`, `reboot` Kodi | | mediatype | String | The media type of the current file. Valid return values are: `unknown`, `channel`, `episode`, `movie`, `musicvideo`, `picture`, `radio`, `song`, `video` | | thumbnail | Image | The URL to the thumbnail of the current file | | fanart | Image | The URL to the fanart of the current file | +| playnotification | String | Plays the notification sound by a given URI | ### Channel Configuration **group** The PVR channels can be put into user-defined PVR channel groups. There are two default PVR channel groups. One for PVR TV channels and one for PVR radio channels. -The default labels are "All channels" (in german systems "Alle Kanäle"). +The default labels are "All channels" (in German systems "Alle Kanäle"). You have to adjust this configuration to use the `pvr-open-tv` and `pvr-open-radio` channels properly. You can optionally configure an user-defined PVR channel group. The PVR channels from Kodi will be populated during runtime into the state options of the `pvr-open-tv` and `pvr-open-radio` channels. +## Audio Support + +All Kodi instances are registered as an audio sink in the framework. +Audio streams are sent to the `playnotification` channel and will change the volume of the audio sink using the `notificationVolume` defined in the properties for the thing, not the `volume`. + +URL audio streams (e.g. an Internet radio stream) are an exception and do not get sent to the `playnotification` channel. +Instead, these will be sent to the `playuri` channel. + +## Full Example + A manual setup through a `things/kodi.things` file could look like this: ``` @@ -122,34 +134,35 @@ Thing kodi:kodi:myKodi "Kodi" @ "Living Room" [ipAddress="192.168.1.100", port=9 } ``` -## Item Configuration +### Item Configuration demo.items ``` -Switch myKodi_mute "Mute" { channel="kodi:kodi:myKodi:mute" } -Dimmer myKodi_volume "Volume [%d]" { channel="kodi:kodi:myKodi:volume" } -Player myKodi_control "Control" { channel="kodi:kodi:myKodi:control" } -Switch myKodi_stop "Stop" { channel="kodi:kodi:myKodi:stop" } -String myKodi_title "Title [%s]" { channel="kodi:kodi:myKodi:title" } -String myKodi_showtitle "Show title [%s]" { channel="kodi:kodi:myKodi:showtitle" } -String myKodi_album "Album [%s]" { channel="kodi:kodi:myKodi:album" } -String myKodi_artist "Artist [%s]" { channel="kodi:kodi:myKodi:artist" } -String myKodi_playuri "Play URI" { channel="kodi:kodi:myKodi:playuri" } -String myKodi_playfavorite "Play favorite" { channel="kodi:kodi:myKodi:playfavorite" } -String myKodi_pvropentv "Play PVR TV channel" { channel="kodi:kodi:myKodi:pvr-open-tv" } -String myKodi_pvropenradio "Play PVR Radio channel" { channel="kodi:kodi:myKodi:pvr-open-radio" } -String myKodi_pvrchannel "PVR channel [%s]" { channel="kodi:kodi:myKodi:pvr-channel" } -String myKodi_notification "Notification" { channel="kodi:kodi:myKodi:shownotification" } -String myKodi_input "Input" { channel="kodi:kodi:myKodi:input" } -String myKodi_inputtext "Inputtext" { channel="kodi:kodi:myKodi:inputtext" } -String myKodi_systemcommand "Systemcommand" { channel="kodi:kodi:myKodi:systemcommand" } -String myKodi_mediatype "Mediatype [%s]" { channel="kodi:kodi:myKodi:mediatype" } -Image myKodi_thumbnail { channel="kodi:kodi:myKodi:thumbnail" } -Image myKodi_fanart { channel="kodi:kodi:myKodi:fanart" } +Switch myKodi_mute "Mute" { channel="kodi:kodi:myKodi:mute" } +Dimmer myKodi_volume "Volume [%d]" { channel="kodi:kodi:myKodi:volume" } +Player myKodi_control "Control" { channel="kodi:kodi:myKodi:control" } +Switch myKodi_stop "Stop" { channel="kodi:kodi:myKodi:stop" } +String myKodi_title "Title [%s]" { channel="kodi:kodi:myKodi:title" } +String myKodi_showtitle "Show title [%s]" { channel="kodi:kodi:myKodi:showtitle" } +String myKodi_album "Album [%s]" { channel="kodi:kodi:myKodi:album" } +String myKodi_artist "Artist [%s]" { channel="kodi:kodi:myKodi:artist" } +String myKodi_playuri "Play URI" { channel="kodi:kodi:myKodi:playuri" } +String myKodi_playfavorite "Play favorite" { channel="kodi:kodi:myKodi:playfavorite" } +String myKodi_pvropentv "Play PVR TV channel" { channel="kodi:kodi:myKodi:pvr-open-tv" } +String myKodi_pvropenradio "Play PVR Radio channel" { channel="kodi:kodi:myKodi:pvr-open-radio" } +String myKodi_pvrchannel "PVR channel [%s]" { channel="kodi:kodi:myKodi:pvr-channel" } +String myKodi_notification "Notification" { channel="kodi:kodi:myKodi:shownotification" } +String myKodi_input "Input" { channel="kodi:kodi:myKodi:input" } +String myKodi_inputtext "Inputtext" { channel="kodi:kodi:myKodi:inputtext" } +String myKodi_systemcommand "Systemcommand" { channel="kodi:kodi:myKodi:systemcommand" } +String myKodi_mediatype "Mediatype [%s]" { channel="kodi:kodi:myKodi:mediatype" } +Image myKodi_thumbnail { channel="kodi:kodi:myKodi:thumbnail" } +Image myKodi_fanart { channel="kodi:kodi:myKodi:fanart" } +String myKodi_playnotification "Play notification URI" { channel="kodi:kodi:myKodi:playnotification" } ``` -## Sitemap Configuration +### Sitemap Configuration demo.sitemap @@ -177,8 +190,3 @@ sitemap demo label="myKodi" } } ``` - -## Audio Support - -All supported Kodi instances are registered as an audio sink in the framework. -Audio streams are sent to the `playuri` channel. diff --git a/_addons_bindings/lgwebos/readme.md b/_addons_bindings/lgwebos/readme.md index d64777932..5886d11ff 100644 --- a/_addons_bindings/lgwebos/readme.md +++ b/_addons_bindings/lgwebos/readme.md @@ -67,8 +67,18 @@ Please note that at least one channel must be bound to an item before the bindin ## Example -This example assumes your TV has ThingID lgwebos:WebOSTV:3aab9eea-953b-4272-bdbd-f0cd0ecf4a46. -You can find it in the discovery results in Paper UI. +Assuming your TV has device ID 3aab9eea-953b-4272-bdbd-f0cd0ecf4a46. +By default this binding will create ThingIDs for discovery results with prefix lgwebos:WebOSTV: and the device ID. e.g. lgwebos:WebOSTV:3aab9eea-953b-4272-bdbd-f0cd0ecf4a46. +Thus, you can find your TV's device ID by looking into discovery results in Paper UI. + +You could also specify an alternate ThingID using a .things file, specifying the deviceId as a mandatory configuration parameter: + +``` +Thing lgwebos:WebOSTV:tv1 [ deviceId="3aab9eea-953b-4272-bdbd-f0cd0ecf4a46" ] +``` + +However, for the next steps of this example we will assumes you are using automatic discovery and the default ThingID. + demo.items: @@ -102,8 +112,6 @@ sitemap demo label="Main Menu" Text item=LG_TV0_ChannelNo Switch item=LG_TV0_ChannelDummy icon="television" label="Kanal" mappings=[1="▲", 0="▼"] Text item=LG_TV0_Channel - Switch item=LG_TV0_ChannelDown - Switch item=LG_TV0_ChannelUp Default item=LG_TV0_Player Text item=LG_TV0_Application Selection item=LG_TV0_Application mappings=[ diff --git a/_addons_bindings/nest/readme.md b/_addons_bindings/nest/readme.md index 3573641e2..1c4c6b844 100644 --- a/_addons_bindings/nest/readme.md +++ b/_addons_bindings/nest/readme.md @@ -113,31 +113,31 @@ The account Thing Type does not have any channels. ### Thermostat Channels -| Channel Type ID | Item Type | Description | Read Write | -|-----------------------------|-----------|---------------------------------------------------------------------------------------------|:----------:| -| can_cool | Switch | If the thermostat can actually turn on cooling | R | -| can_heat | Switch | If the thermostat can actually turn on heating | R | -| fan_timer_active | Switch | If the fan timer is engaged | R/W | -| fan_timer_duration | Number | Length of time (in minutes) that the fan is set to run (15, 30, 45, 60, 120, 240, 480, 960) | R/W | -| fan_timer_timeout | DateTime | Timestamp when the fan stops running | R | -| has_fan | Switch | If the thermostat can control the fan | R | -| has_leaf | Switch | If the thermostat is currently in a leaf mode | R | -| humidity | Number | Indicates the current relative humidity | R | -| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R | -| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R | -| locked_max_set_point | Number | The locked range max set point in degrees Celsius | R/W | -| locked_min_set_point | Number | The locked range min set point in degrees Celsius | R/W | -| max_set_point | Number | The max set point in degrees Celsius | R/W | -| min_set_point | Number | The min set point in degrees Celsius | R/W | -| mode | String | Current mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R/W | -| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R | -| state | String | The active state of the Nest thermostat (HEATING, COOLING, OFF) | R | -| temperature | Number | Current temperature in degrees Celsius | R | -| time_to_target_mins | Number | Time left to the target temperature (mins) approximately | R | -| set_point | Number | The set point in degrees Celsius | R/W | -| sunlight_correction_active | Switch | If sunlight correction is active | R | -| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R | -| using_emergency_heat | Switch | If the system is currently using emergency heat | R | +| Channel Type ID | Item Type | Description | Read Write | +|-----------------------------|--------------------|---------------------------------------------------------------------------------------------|:----------:| +| can_cool | Switch | If the thermostat can actually turn on cooling | R | +| can_heat | Switch | If the thermostat can actually turn on heating | R | +| fan_timer_active | Switch | If the fan timer is engaged | R/W | +| fan_timer_duration | Number | Length of time (in minutes) that the fan is set to run (15, 30, 45, 60, 120, 240, 480, 960) | R/W | +| fan_timer_timeout | DateTime | Timestamp when the fan stops running | R | +| has_fan | Switch | If the thermostat can control the fan | R | +| has_leaf | Switch | If the thermostat is currently in a leaf mode | R | +| humidity | Number | Indicates the current relative humidity | R | +| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R | +| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R | +| locked_max_set_point | Number:Temperature | The locked range max set point temperature | R/W | +| locked_min_set_point | Number:Temperature | The locked range min set point temperature | R/W | +| max_set_point | Number:Temperature | The max set point temperature | R/W | +| min_set_point | Number:Temperature | The min set point temperature | R/W | +| mode | String | Current mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R/W | +| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R | +| state | String | The active state of the Nest thermostat (HEATING, COOLING, OFF) | R | +| temperature | Number:Temperature | Current temperature | R | +| time_to_target_mins | Number | Time left to the target temperature (mins) approximately | R | +| set_point | Number:Temperature | The set point temperature | R/W | +| sunlight_correction_active | Switch | If sunlight correction is active | R | +| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R | +| using_emergency_heat | Switch | If the system is currently using emergency heat | R | Note that the Nest API rounds Thermostat values so they will differ from what shows up in the Nest App. The Nest API applies the following rounding: @@ -199,17 +199,17 @@ Switch Thermostat_Has_Leaf "Has Leaf" Number Thermostat_Humidity "Humidity [%.1f %%]" { channel="nest:thermostat:demo_account:living_thermostat:humidity" } DateTime Thermostat_Last_Conn "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:last_connection" } Switch Thermostat_Locked "Locked" { channel="nest:thermostat:demo_account:living_thermostat:locked" } -Number Thermostat_LMaxSP "Locked Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_max_set_point" } -Number Thermostat_LMinSP "Locked Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_min_set_point" } -Number Thermostat_Max_SP "Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:max_set_point" } -Number Thermostat_Min_SP "Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:min_set_point" } +Number:Temperature Therm_LMaxSP "Locked Max Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:locked_max_set_point" } +Number:Temperature Therm_LMinSP "Locked Min Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:locked_min_set_point" } +Number:Temperature Therm_Max_SP "Max Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:max_set_point" } +Number:Temperature Therm_Min_SP "Min Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:min_set_point" } String Thermostat_Mode "Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:mode" } String Thermostat_Previous_Mode "Previous Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:previous_mode" } String Thermostat_State "State [%s]" { channel="nest:thermostat:demo_account:living_thermostat:state" } -Number Thermostat_Set_Point "Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:set_point" } +Number:Temperature Thermostat_SP "Set Point [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:set_point" } Switch Thermostat_Sunlight_CA "Sunlight Correction Active" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_active" } Switch Thermostat_Sunlight_CE "Sunlight Correction Enabled" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_enabled" } -Number Thermostat_Temperature "Temperature [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" } +Number:Temperature Therm_Temp "Temperature [%.1f %unit%]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" } Number Thermostat_Time_To_Target "Time To Target [%s]" { channel="nest:thermostat:demo_account:living_thermostat:time_to_target_mins" } Switch Thermostat_Using_Em_Heat "Using Emergency Heat" { channel="nest:thermostat:demo_account:living_thermostat:using_emergency_heat" } @@ -226,10 +226,6 @@ String Home_Smoke_Alarm_State "Smoke Alarm State [%s]" String Home_Time_Zone "Time Zone [%s]" { channel="nest:structure:demo_account:home:time_zone" } ``` -## Known Issues - -* The binding uses Celsius as unit for all Themostat temperature channels. - ## Attribution This documentation contains parts written by John Cocula which were copied from the 1.0 Nest binding. diff --git a/_addons_bindings/netatmo1/readme.md b/_addons_bindings/netatmo1/readme.md index 1425a1b7f..75f874eaa 100644 --- a/_addons_bindings/netatmo1/readme.md +++ b/_addons_bindings/netatmo1/readme.md @@ -57,7 +57,7 @@ The variables to fill in are: * `` Your client ID taken from your App at https://dev.netatmo.com/dev/listapps * `` A list of devices and capabilities. The full scope would be `read_station read_thermostat write_thermostat read_camera access_camera`, see the [Netatmo Scope Documentation](https://dev.netatmo.com/doc/authentication/scopes) for more info. Please ensure that the variable is [URL encoded](http://www.w3schools.com/tags/ref_urlencode.asp) if your browser doesn't do it automatically, e.g. the URL encoded complete list of scopes would be `read_station%20read_thermostat%20write_thermostat%20read_camera%20access_camera` -When entering the URL to your browser it will take you to the Netatmo Webpage asking you to authorize your application to access your Netatmo data. The page should look something like [this](https://dev.netatmo.com/images/dev/auth_app.jpg). After this step your Application should appear as an authorized application in your Netatmo profile. Please make sure it is there, the setup can not continue if your app is not authorized. +When entering the URL to your browser it will take you to the Netatmo Webpage asking you to authorize your application to access your Netatmo data. The page should look something like [this](https://dev.netatmo.com/images/dev/auth_app.jpg). After this step your Application should appear as an authorized application in your Netatmo profile. Please make sure it is there, the setup cannot continue if your app is not authorized. ### 3. Retrieve a refresh token [Retrieve a refresh token](https://dev.netatmo.com/doc/authentication/refreshtoken) from Netatmo API, using e.g. curl. diff --git a/_addons_bindings/network/readme.md b/_addons_bindings/network/readme.md index 544339ffe..1bc96181a 100644 --- a/_addons_bindings/network/readme.md +++ b/_addons_bindings/network/readme.md @@ -3,7 +3,7 @@ id: network label: Network title: Network - Bindings type: binding -description: "This binding allows to check, whether a device is currently available on the network." +description: "This binding allows checking whether a device is currently available on the network." since: 2x install: auto --- @@ -14,27 +14,30 @@ install: auto # Network Binding -This binding allows to check, whether a device is currently available on the network. -This happens by either using [ping](https://en.wikipedia.org/wiki/Ping_%28networking_utility%29) or by a successful TCP connection on a port of your choice. +This binding allows checking whether a device is currently available on the network. +This is either done using [ping](https://en.wikipedia.org/wiki/Ping_%28networking_utility%29) or by a successful TCP connection on a specified port. ## Binding configuration -You can use the following configuration options: +The binding has the following configuration options: -- **allowSystemPings:** Use the external ICMP ping program of the operating system, instead of the Java ping. Useful if the devices cannot be reached by Java ping. Default is true. -- **allowDHCPlisten:** If devices leave and reenter a network, they usually request their last IPv4 address by using DHCP requests. If we listen for those messages, we can make the status update more "real-time" and do not have to wait for the next refresh cycle. Default is true. -- **arpPingToolPath:** If your arp ping tool is not called arping and cannot be found in the PATH environment, you can configure the absolute path here. Default is "arping". +- **allowSystemPings:** Use the external ICMP ping program of the operating system instead of the Java ping. Useful if the devices cannot be reached by Java ping. Default is true. +- **allowDHCPlisten:** If devices leave and reenter a network, they usually request their last IPv4 address by using DHCP requests. By listening for those messages, the status update can be more "real-time" without having to wait for the next refresh cycle. Default is true. +- **arpPingToolPath:** If the arp ping tool is not called `arping` and cannot be found in the PATH environment variable, the absolute path can be configured here. Default is `arping`. - **cacheDeviceStateTimeInMS:** The result of a device presence detection is cached for a small amount of time. Set this time here in milliseconds. Be aware that no new pings will be issued within this time frame, even if explicitly requested. Default is 2000. -Create a file *org.openHAB.binding.network.cfg* in your openHAB/etc directory and use the above options like this: +Create a `/services/network.cfg` file and use the above options like this: ``` -allowSystemPings=false +binding.network:allowSystemPings=true +binding.network:allowDHCPlisten=false +binding.network:arpPingToolPath=arping +binding.network:cacheDeviceStateTimeInMS=2000 ``` ## Supported Things -- **pingdevice:** Detects device presence by using icmp pings, arp pings and dhcp packet sniffing. +- **pingdevice:** Detects device presence by using ICMP pings, arp pings and dhcp packet sniffing. - **servicedevice:** Detects device presence by scanning for a specific open tcp port. ## Discovery @@ -48,18 +51,16 @@ Please note: things discovered by the network binding will be provided with a ti ``` network:pingdevice:one_device [ hostname="192.168.0.64" ] - network:pingdevice:second_device [ hostname="192.168.0.65", retry=1, timeout=5000, refreshInterval=60000 ] - network:servicedevice:important_server [ hostname="192.168.0.62", port=1234 ] ``` Use the following options for a **network:pingdevice**: - **hostname:** IP address or hostname of the device -- **retry:** After how many refresh interval cycles shall the device be assumed as offline. Default is 1. -- **timeout:** How long shall the ping wait for an answer (in milliseconds. Default: `5000` = 5 seconds) -- **refreshInterval:** How often shall the device be checked (in milliseconds. Default: `60000` = one minute) +- **retry:** After how many refresh interval cycles the device will be assumed to be offline. Default is 1. +- **timeout:** How long the ping will wait for an answer, in milliseconds. Default: `5000` (5 seconds) +- **refreshInterval:** How often the device will be checked, in milliseconds. Default: `60000` (one minute) Use the following additional options for a **network:servicedevice**: @@ -67,35 +68,33 @@ Use the following additional options for a **network:servicedevice**: ## Presence detection - Configure target device -You may need to configure devices to be reachable. -A device may not answer ping requests by default. +Devices may need to be configured to be reachable, as a device may not answer ping requests by default. This is the case with Windows 10 equipped systems or Android and iOS devices in deep sleep mode. ### Respond to pings on Windows 10+ -Pings on windows 10 are usually blocked by the internal firewall. -You need to allow "Echo Request for ICMPv4" to allow your windows to respond to pings. +Pings on Windows 10 are usually blocked by the internal firewall. +Windows 10 must be configured to allow "Echo Request for ICMPv4" so that it can respond to pings. ### Android and iOS devices Because mobile devices put themselves in a deep sleep mode after some inactivity, they do not react to normal ICMP pings. Configure ARP ping to realize presence detection for those devices. -This only works if your devices have WIFI enabled, have been configured to use your home WIFI network, and have the option "Disable wifi in standby" disabled (default). -An almost immediate presence detection for phones and tables, if they (re)join the home Wifi network, is to use DHCP listen. +This only works if the devices have WIFI enabled, have been configured to use the WIFI network, and have the option "Disable wifi in standby" disabled (default). +Use DHCP listen for an almost immediate presence detection for phones and tablets when they (re)join the home Wifi network. ### iPhones, iPads Apple iOS devices are usually in a deep sleep mode and do not respond to ARP pings under all conditions, but to Bonjour service discovery messages (UDP port 5353). -Therefore first a Bonjour message is send, before the ARP presence detection is performed. +Therefore first a Bonjour message is sent, before the ARP presence detection is performed. The binding automatically figures out if the target device is an iOS device. -You can check if the binding has correctly recognised your device by having a look at the *uses_ios_wakeup* property of your thing. -An almost immediate presence detection for phones and tables, if they (re)join the home Wifi network, is to use DHCP listen. +To check if the binding has correctly recognised a device, have a look at the *uses_ios_wakeup* property of the THING. ### Use open TCP ports -Many devices provide services on TCP ports (web-frontends, streaming servers, ...), which you can use to confirm there presence in the network. +Many devices provide services on TCP ports (web-frontends, streaming servers, etc.), which can be used to confirm their presence in the network. Most operating systems have options to list open ports. -On a linux-based system, you may use *nmap* to discover all open TCP ports on the device with the specified IP address: +On a Linux-based system, *nmap* may be used to discover all open TCP ports on the device with the specified IP address: ``` $ sudo nmap -Pn -sT -p- 192.168.0.42 @@ -117,17 +116,16 @@ In this example, there are four suitable ports to use. The port 554 (Windows network file sharing service) is open on most Windows PCs and Windows compatible Linux systems. Port 1025 (MS RPC) is open on XBox systems. Port 548 (Apple Filing Protocol (AFP)) is open on Mac OS X systems. -Please don't forget to open the required ports in your firewall setup. - +Please don't forget to open the required ports in the system's firewall setup. ## Presence detection - Configure your openHAB installation -Because we use external tools for some of the presence detection mechanism or need elevated permissions for others, your OpenHAB installation needs to be altered. +Because external tools are used for some of the presence detection mechanism or need elevated permissions for others, the openHAB installation needs to be altered. ### Arping -For arp pings to work, you need a separate tool, called "arping". -On Linux there exists three different tools: +For arp pings to work, a separate tool called "arping" is used. +Linux has three different tools: * arp-scan (not yet supported by this binding) * arping of the ip-utils (Ubuntu/Debian: `apt-get install iputils-arping`) @@ -135,19 +133,16 @@ On Linux there exists three different tools: arping by Thomas Habets runs on Windows and MacOS as well. -Make sure the tool is available in $PATH (%PATH% respectively on Windows) or in the same path as the openHAB executable. +Make sure the tool is available in the PATH, or in the same path as the openHAB executable. -On Linux and MacOS you might need elevated access permissions, for instance by making the executable a suid executable (`chmod u+s /usr/sbin/arping`). -Just test the executable on the command line, if `sudo` is required, you need to grant elevated permissions. +On Linux and MacOS elevated access permissions may be needed, for instance by making the executable a suid executable (`chmod u+s /usr/sbin/arping`). +Just test the executable on the command line; if `sudo` is required, grant elevated permissions. ### DHCP Listen -If devices leave and reenter a network, they usually request their last IPv4 address by using DHCP requests. -If we listen for those messages, we can make the status update more "real-time" and do not have to wait for the next refresh cycle. - Some operating systems such as Linux restrict applications to only use ports >= 1024 without elevated privileges. -If the binding is not able to use port 67 (DHCP), because of such a restriction or because the same system is used as a DHCP server, port 6767 will be used instead. -Check the property *dhcp_state* on your thing for such a hint. You need to establish a port forwarding in this case: +If the binding is not able to use port 67 (DHCP) because of such a restriction, or because the same system is used as a DHCP server, port 6767 will be used instead. +Check the property *dhcp_state* on the THING for such a hint. In this case, establish port forwarding: ```shell sysctl -w net.ipv4.ip_forward=1 @@ -155,8 +150,7 @@ iptables -A INPUT -p udp --dport 6767 -j ACCEPT iptables -t nat -A PREROUTING -p udp --dport 67 -j REDIRECT --to-ports 6767 ``` -If you operate a DHCP server on port 67, you need to duplicate the received traffic and -forward it to port 6767: +If a DHCP server is operating on port 67, duplicate the received traffic and forward it to port 6767: ```shell iptables -A PREROUTING -t mangle -p udp ! -s 127.0.0.1 --dport 67 -j TEE --gateway 127.0.0.1 @@ -169,11 +163,11 @@ Things support the following channels: | Channel Type ID | Item Type | Description | |-----------------|-----------|--------------------------------------------------------------------------------------------| -| online | Switch | This channel indicates whether a device is online or not | -| lastseen | DateTime | The last seen date/time of the device in question. May be 1. Jan 1970 if no time is known. | -| latency | Number | This channel indicates the ping latency in milliseconds. May be 0 if no time is known. | +| online | Switch | This channel indicates whether a device is online | +| lastseen | DateTime | The last seen date/time of the device in question. May be 1. Jan 1970 if no time is known | +| latency | Number | This channel indicates the ping latency in milliseconds. May be 0 if no time is known | -## Example +## Examples demo.things: diff --git a/_addons_bindings/nibeheatpump/readme.md b/_addons_bindings/nibeheatpump/readme.md index 707ed845b..0ed186a66 100644 --- a/_addons_bindings/nibeheatpump/readme.md +++ b/_addons_bindings/nibeheatpump/readme.md @@ -119,6 +119,7 @@ Thing examples: ``` nibeheatpump:f1x45-udp:myPump [hostName="192.168.1.50", port=9999] ``` + ``` nibeheatpump:f1x45-udp:myPump [hostName="192.168.1.50", port=9999, readCommandsPort=10000, writeCommandsPort=10001, refreshInterval=30, enableReadCommands=true, enableWriteCommands=true, enableRegistersForWriteCommands="44266, 47004"] ``` diff --git a/_addons_bindings/nibeheatpump/utils/README.md b/_addons_bindings/nibeheatpump/utils/README.md index 1589c6cf7..19955b9a5 100644 --- a/_addons_bindings/nibeheatpump/utils/README.md +++ b/_addons_bindings/nibeheatpump/utils/README.md @@ -3,7 +3,7 @@ Command to convert Nibe CSV file character set to UTF-8: ```iconv -f iso-8859-1 -t utf-8 F1X45.csv > F1X45_utf8.csv``` -Command to create channel-types from CSV file: +Command to create channel-types from CSV file (all channels are marked as advanced, so remove it manually from desired channels): ```awk -f create_channel_types.awk F1X45_utf8.csv > F1X45.xml``` Command to create all channels from CSV file: diff --git a/_addons_bindings/novelanheatpump1/readme.md b/_addons_bindings/novelanheatpump1/readme.md index 16e048f7a..2ccdb68ea 100644 --- a/_addons_bindings/novelanheatpump1/readme.md +++ b/_addons_bindings/novelanheatpump1/readme.md @@ -60,7 +60,8 @@ where `` is one of the following values: | `temperature_supplay` | Number | the temperature sent to the floor heating | | `temperature_servicewater_reference` | Number | the reference temperature of the servicewater | | `temperature_servicewater` | Number | the temperature of the servicewater | -| `state` | String | contains the time of the state and the state; Possible states are error, running, stoped, defrosting | +| `state` | String | contains the time of the state and the state; Possible states are error, running, stopped, defrosting | +| `simple_state` | String | contains only the short statename; Possible states are error, running, stopped, defrosting | | `extended_state` | String | contains the time of the state and the state; Possible states are error, heating, standby, switch-on delay, switching cycle | blocked, provider lock time, service water, screed heat up, defrosting, pump flow, desinfection, cooling, pool water, heating ext., service water ext., | flow monitoring, ZWE operation | | `temperature_solar_collector` | Number | the temperature of the sensor in the solar collector | | `temperature_hot_gas` | Number | diff --git a/_addons_bindings/pioneeravr/readme.md b/_addons_bindings/pioneeravr/readme.md index 3247d5ab2..3ee109e2d 100644 --- a/_addons_bindings/pioneeravr/readme.md +++ b/_addons_bindings/pioneeravr/readme.md @@ -56,7 +56,7 @@ pioneeravr:serialAvr:vsx921Serial [ serialPort="COM9" ] ## Channels * power: power On/Off the AVR. Receive power events. -* volumeDimmer: Increase/Decrease the volume on the AVR or set the volume as %. Receive volume change events (in %). +* volumeDimmer: Increase/Decrease the volume on the AVR or set the volume as %. Receive volume change events (in %). * volumeDb: Set the volume of the AVR in dB (from -80.0 to 12 with 0.5 dB steps). Receive volume change events (in dB). * mute: Mute/Unmute the AVR. Receive mute events. * setInputSource: Set the input source of the AVR. See input source mapping for more details. Receive source input change events with the input source ID. @@ -64,30 +64,42 @@ pioneeravr:serialAvr:vsx921Serial [ serialPort="COM9" ] ## Input Source Mapping -Here after are the ID values of the input sources: +Here after are the ID values of the input sources (depending on you AVR input sources might not be available): -* 04: DVD -* 25: BD -* 05: TV/SAT -* 15: DVR/BDR -* 10: VIDEO 1(VIDEO) -* 14: VIDEO 2 -* 19: HDMI 1 -* 20: HDMI 2 -* 21: HDMI 3 -* 22: HDMI 4 -* 23: HDMI 5 -* 26: HOME MEDIA GALLERY(Internet Radio) -* 17: iPod/USB -* 18: XM RADIO -* 01: CD -* 03: CD-R/TAPE -* 02: TUNER -* 00: PHONO -* 12: MULTI CH IN -* 33: ADAPTER PORT -* 27: SIRIUS -* 31: HDMI (cyclic) +* 04: DVD +* 25: BD +* 05: TV/SAT +* 06: SAT/CBL +* 15: DVR/BDR +* 10: VIDEO 1(VIDEO) +* 14: VIDEO 2 +* 19: HDMI 1 +* 20: HDMI 2 +* 21: HDMI 3 +* 22: HDMI 4 +* 23: HDMI 5 +* 24: HDMI 6 +* 34: HDMI 7 +* 35: HDMI 8 +* 26: HOME MEDIA GALLERY(Internet Radio) +* 44: Media Server +* 38: Internet Radio +* 17: iPod/USB +* 48: MHL +* 01: CD +* 03: CD-R/TAPE +* 02: TUNER +* 00: PHONO +* 13: USB-DAC +* 12: MULTI CH IN +* 33: ADAPTER PORT (BT) +* 18: XM RADIO +* 27: SIRIUS +* 40: SiriusXM +* 41: PANDORA +* 45: Favourites +* 57: Spotify +* 31: HDMI (cyclic) ## Example @@ -101,12 +113,12 @@ pioneeravr:ipAvr:vsx921 [ address="192.168.188.89" ] ``` /* Pioneer AVR Items */ -Switch vsx921PowerSwitch "Power" (All) { channel="pioneeravr:ipAvr:vsx921:power" } -Switch vsx921MuteSwitch "Mute" (All) { channel="pioneeravr:ipAvr:vsx921:mute" } -Dimmer vsx921VolumeDimmer "Volume [%.1f] %" (All) { channel="pioneeravr:ipAvr:vsx921:volumeDimmer" } -Number vsx921VolumeNumber "Volume [%.1f] dB" (All) { channel="pioneeravr:ipAvr:vsx921:volumeDb" } -String vsx921InputSourceSet "Input" (All) { channel="pioneeravr:ipAvr:vsx921:setInputSource" } -String vsx921InformationDisplay "Information [%s]" (All) { channel="pioneeravr:ipAvr:vsx921:displayInformation" } +Switch vsx921PowerSwitch "Power" (All) { channel="pioneeravr:ipAvr:vsx921:power" } +Switch vsx921MuteSwitch "Mute" (All) { channel="pioneeravr:ipAvr:vsx921:mute" } +Dimmer vsx921VolumeDimmer "Volume [%.1f] %" (All) { channel="pioneeravr:ipAvr:vsx921:volumeDimmer" } +Number vsx921VolumeNumber "Volume [%.1f] dB" (All) { channel="pioneeravr:ipAvr:vsx921:volumeDb" } +String vsx921InputSourceSet "Input" (All) { channel="pioneeravr:ipAvr:vsx921:setInputSource" } +String vsx921InformationDisplay "Information [%s]" (All) { channel="pioneeravr:ipAvr:vsx921:displayInformation" } ``` *demo.sitemap: diff --git a/_addons_bindings/plugwise/readme.md b/_addons_bindings/plugwise/readme.md index 9287aeb88..303343a94 100644 --- a/_addons_bindings/plugwise/readme.md +++ b/_addons_bindings/plugwise/readme.md @@ -25,15 +25,15 @@ Currently only "V2" of the Plugwise protocol is supported. It is adviced that us The binding supports the following Plugwise devices: -| Device Type | Description | Thing Type | -|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|------------| -| [Circle](https://www.plugwise.com/products/appliances-and-lighting/energy-meters-and-switches/circle) | A power outlet plug that provides energy measurement and switching control of appliances | circle | -| [Circle+](https://www.plugwise.com/products/appliances-and-lighting/energy-meters-and-switches/circle) | A special Circle that coordinates the ZigBee network and acts as network gateway | circleplus | -| [Scan](https://www.plugwise.com/products/appliances-and-lighting/presence-and-light-sensor/scan) | A wireless motion (PIR) and light sensor | scan | -| [Sense](https://www.plugwise.com/products/indoor-climate/humidity-and-temperature-sensor/sense) | A wireless temperature and humidity sensor | sense | -| [Stealth](https://www.plugwise.com/products/appliances-and-lighting/energy-meters-and-switches/stealth) | A Circle with a more compact form factor that can be built-in | stealth | -| [Stick](https://www.plugwise.com/home-start) | A ZigBee USB controller that openHAB uses to communicate with the Circle+ | stick | -| [Switch](https://www.plugwise.com/products/appliances-and-lighting/energy-meters-and-switches/switch) | A wireless wall switch | switch | +| Device Type | Description | Thing Type | +|---------------------------------------------------------------|------------------------------------------------------------------------------------------|------------| +| [Circle](https://www.plugwise.com/en_US/products/circle) | A power outlet plug that provides energy measurement and switching control of appliances | circle | +| [Circle+](https://www.plugwise.com/en_US/products/circle) | A special Circle that coordinates the ZigBee network and acts as network gateway | circleplus | +| [Scan](https://www.plugwise.com/en_US/products/scan) | A wireless motion (PIR) and light sensor | scan | +| [Sense](https://www.plugwise.com/en_US/products/sense) | A wireless temperature and humidity sensor | sense | +| [Stealth](https://www.plugwise.com/en_US/products/stealth) | A Circle with a more compact form factor that can be built-in | stealth | +| [Stick](https://www.plugwise.com/en_US/products/start-source) | A ZigBee USB controller that openHAB uses to communicate with the Circle+ | stick | +| [Switch](https://www.plugwise.com/en_US/products/switch) | A wireless wall switch | switch | ## Discovery @@ -117,20 +117,20 @@ To access the serial port of the Stick on Linux, the user running openHAB needs ## Channels -| Channel Type ID | Item Type | Description | Thing Types | -|------------------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| -| clock | String | Time as indicated by the internal clock of the device | circle, circleplus, stealth | -| energy | Number | Energy consumption/production (kWh) during the last measurement interval | circle, circleplus, stealth | -| energystamp | DateTime | Timestamp of the start of the last energy measurement interval | circle, circleplus, stealth | -| humidity | Number | Current relative humidity (%) | sense | -| lastseen | DateTime | Timestamp of the last received message. Because there is no battery level indication this is a helpful value to determine if a battery powered device is still operating properly even when no state changes occur | circle, circleplus, scan, sense, stealth, switch | -| leftbuttonstate | Switch | Current state of the left button | switch | -| power | Number | Current power consumption (Watt), measured over 1 second interval | circle, circleplus, stealth | -| realtimeclock | DateTime | Time as indicated by the internal clock of the Circle+ | circleplus | -| rightbuttonstate | Switch | Current state of the right button | switch | -| state | Switch | Switches the power state on/off | circle, circleplus, stealth | -| temperature | Number | Current temperature (°C) | sense | -| triggered | Switch | Most recent switch action initiated by the device. When daylight override is disabled on a Scan this corresponds one to one with motion detection | scan, sense | +| Channel Type ID | Item Type | Description | Thing Types | +|------------------|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| +| clock | String | Time as indicated by the internal clock of the device | circle, circleplus, stealth | +| energy | Number:Energy | Energy consumption/production during the last measurement interval | circle, circleplus, stealth | +| energystamp | DateTime | Timestamp of the start of the last energy measurement interval | circle, circleplus, stealth | +| humidity | Number:Dimensionless | Current relative humidity | sense | +| lastseen | DateTime | Timestamp of the last received message. Because there is no battery level indication this is a helpful value to determine if a battery powered device is still operating properly even when no state changes occur | circle, circleplus, scan, sense, stealth, switch | +| leftbuttonstate | Switch | Current state of the left button | switch | +| power | Number:Power | Current power consumption, measured over 1 second interval | circle, circleplus, stealth | +| realtimeclock | DateTime | Time as indicated by the internal clock of the Circle+ | circleplus | +| rightbuttonstate | Switch | Current state of the right button | switch | +| state | Switch | Switches the power state on/off | circle, circleplus, stealth | +| temperature | Number:Temperature | Current temperature | sense | +| triggered | Switch | Most recent switch action initiated by the device. When daylight override is disabled on a Scan this corresponds one to one with motion detection | scan, sense | ## Example @@ -169,16 +169,16 @@ demo.items /* Circle */ Switch Fan_Switch "Switch" { channel="plugwise:circle:fan:state" } String Fan_Clock "Clock [%s]" { channel="plugwise:circle:fan:clock" } -Number Fan_Power "Power [%.1f W]" { channel="plugwise:circle:fan:power" } -Number Fan_Energy "Energy [%.3f kWh]" { channel="plugwise:circle:fan:energy" } +Number:Power Fan_Power "Power [%.1f %unit%]" { channel="plugwise:circle:fan:power" } +Number:Energy Fan_Energy "Energy [%.3f %unit%]" { channel="plugwise:circle:fan:energy" } DateTime Fan_Energy_Stamp "Energy stamp [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:circle:fan:energystamp" } DateTime Fan_Last_Seen "Last seen [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:circle:fan:lastseen" } /* Circle+ */ Switch Lamp_Switch "Switch" { channel="plugwise:circleplus:lamp:state" } String Lamp_Clock "Clock [%s]" { channel="plugwise:circleplus:lamp:clock" } -Number Lamp_Power "Power [%.1f W]" { channel="plugwise:circleplus:lamp:power" } -Number Lamp_Energy "Energy [%.3f kWh]" { channel="plugwise:circleplus:lamp:energy" } +Number:Power Lamp_Power "Power [%.1f %unit%]" { channel="plugwise:circleplus:lamp:power" } +Number:Energy Lamp_Energy "Energy [%.3f %unit%]" { channel="plugwise:circleplus:lamp:energy" } DateTime Lamp_Energy_Stamp "Energy stamp [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:circleplus:lamp:energystamp" } DateTime Lamp_Real_Time_Clock "Real time clock [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:circleplus:lamp:realtimeclock" } DateTime Lamp_Last_Seen "Last seen [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:circleplus:lamp:lastseen" } @@ -189,15 +189,15 @@ DateTime Motion_Sensor_Last_Seen "Last seen [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS /* Sense */ Switch Climate_Sensor_Switch "Triggered [%s]" { channel="plugwise:sense:climatesensor:triggered" } -Number Climate_Sensor_Humidity "Humidity [%.1f %%]" { channel="plugwise:sense:climatesensor:humidity" } -Number Climate_Sensor_Temperature "Temperature [%.1f °C]" { channel="plugwise:sense:climatesensor:temperature" } +Number:Dimensionless Climate_Sensor_Humidity "Humidity [%.1f %unit%]" { channel="plugwise:sense:climatesensor:humidity" } +Number:Temperature Climate_Sensor_Temperature "Temperature [%.1f %unit%]" { channel="plugwise:sense:climatesensor:temperature" } DateTime Climate_Sensor_Last_Seen "Last seen [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:sense:climatesensor:lastseen" } /* Stealth */ Switch Fridge_Switch "Switch" { channel="plugwise:stealth:fridge:state" } String Fridge_Clock "Clock [%s]" { channel="plugwise:stealth:fridge:clock" } -Number Fridge_Power "Power [%.1f W]" { channel="plugwise:stealth:fridge:power" } -Number Fridge_Energy "Energy [%.3f kWh]" { channel="plugwise:stealth:fridge:energy" } +Number:Power Fridge_Power "Power [%.1f %unit%]" { channel="plugwise:stealth:fridge:power" } +Number:Energy Fridge_Energy "Energy [%.3f %unit%]" { channel="plugwise:stealth:fridge:energy" } DateTime Fridge_Energy_Stamp "Energy stamp [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:stealth:fridge:energystamp" } DateTime Fridge_Last_Seen "Last seen [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="plugwise:stealth:fridge:lastseen" } diff --git a/_addons_bindings/regoheatpump/readme.md b/_addons_bindings/regoheatpump/readme.md index 6c5830726..dc49d2909 100644 --- a/_addons_bindings/regoheatpump/readme.md +++ b/_addons_bindings/regoheatpump/readme.md @@ -16,14 +16,15 @@ install: auto The Rego heat pump binding supports: -* Rego 6xx controllers family and -* Husdata interface. +* Rego 6xx controllers family and +* Husdata interface. ## The Rego 6xx family -The Rego 6xx controllers family is used in many heat pumps, like IVT/Bosch/Autotherm/Carrier and others. +The Rego 6xx controllers family is used in many heat pumps such as IVT/Bosch/Autotherm/Carrier and others. -Rego 6xx unit contain an interface marked as service. Header of this interface is close to the control unit. This is 5V (TTL) serial interface and is connected by a 9 pin can/d-sub connector. Pinout: +Rego 6xx unit contain an interface marked as service. +Header of this interface is close to the control unit. This is 5V (TTL) serial interface and is connected by a 9 pin can/d-sub connector. Pinout: 2 - RxD 3 - TxD @@ -36,12 +37,13 @@ Serial communication is using 19200 bps, 8 bit, no parity, 1 stop bit. Two connection types are supported: -* TCP/IP and -* serial (RS232). +* TCP/IP and +* serial (RS232). #### TCP/IP connection -A transparent bridge between the serial interface of the heat pump and network (i.e. wifi) is used. This way no additional wires are required between heat pump and computer, running openhab. +A transparent bridge between the serial interface of the heat pump and network (i.e. wifi) is used. +This way no additional wires are required between heat pump and computer, running openhab. There are many existing project providing such functionality, i.e. [ser2net](http://ser2net.sourceforge.net/). @@ -51,13 +53,14 @@ Board: ![board](doc/board.png) -The code running on the ESP module can be found [here](https://github.com/crnjan/esp8266-bridge). There are other projects providing ESP firmware with similar functionality, i.e. [ESP-LINK](https://github.com/jeelabs/esp-link), but did not test with those. +The code running on the ESP module can be found [here](https://github.com/crnjan/esp8266-bridge). +There are other projects providing ESP firmware with similar functionality, i.e. [ESP-LINK](https://github.com/jeelabs/esp-link), but did not test with those. Configuration of the TCP/IP thing: - - address: the hostname/IP address of the transparent bridge on the local network - mandatory, - - tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265, - - refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds. +- address: the hostname/IP address of the transparent bridge on the local network - mandatory, +- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265, +- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds. Example thing definition: @@ -71,8 +74,8 @@ In order to connect directly to the rego 6xx controller, one needs to adjust the Parameters: - - portName: the name of the serial port on your computer - mandatory, - - refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds. +- portName: the name of the serial port on your computer - mandatory, +- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds. Example thing definition: @@ -80,7 +83,6 @@ Example thing definition: regoheatpump:serialRego6xx:ivtSerial [ portName="COM3" ] ``` - ### Channels Below is the list of supported channels, all values are read only: @@ -161,8 +163,8 @@ Above list is informational, please consult with the Husdata interface provider Two connection types are supported: -* TCP/IP and -* serial (RS232). +* TCP/IP and +* serial (RS232). #### TCP/IP connection @@ -172,8 +174,8 @@ There are many existing project providing such functionality, i.e. [ser2net](htt Configuration of the TCP/IP thing: - - address: the hostname/IP address of the transparent bridge on the local network - mandatory, - - tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265. +- address: the hostname/IP address of the transparent bridge on the local network - mandatory, +- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265. Example thing definition: @@ -187,7 +189,7 @@ One can connect the Husdata interface directly to a computer that runs openHAB. Parameters: - - portName: the name of the serial port on your computer - mandatory. +- portName: the name of the serial port on your computer - mandatory. Example thing definition: @@ -195,7 +197,6 @@ Example thing definition: regoheatpump:serialHusdata:ivtSerial [ portName="COM3" ] ``` - ### Channels Below is the list of supported channels, all values are read only: diff --git a/_addons_bindings/rfxcom/readme.md b/_addons_bindings/rfxcom/readme.md index 0c48622cc..6c8f8d9fd 100644 --- a/_addons_bindings/rfxcom/readme.md +++ b/_addons_bindings/rfxcom/readme.md @@ -19,15 +19,15 @@ This binding integrates large number of sensors and actuators from several diffe RFXCOM transceivers support RF 433 Mhz protocols like: -* HomeEasy -* Cresta -* X10 -* La Crosse -* OWL -* CoCo (KlikAanKlikUit), -* PT2262 -* Oregon -* etc. +* HomeEasy +* Cresta +* X10 +* La Crosse +* OWL +* CoCo (KlikAanKlikUit), +* PT2262 +* Oregon +* etc. See the RFXtrx User Guide from [RFXCOM](http://www.rfxcom.com) for the complete list of supported sensors and devices as well as firmware update announcements. @@ -39,7 +39,8 @@ This binding supports the RFXtrx433E and RFXtrx315 transceivers and the RFXrec43 The transceivers/receivers may be automatically discovered by the JD2XX library and put in the Inbox or may be configured manually. -After the bridge is configured and the transceiver receives a message from any sensor or actuator, the device is put in the Inbox. Because RFXCOM communication is a one way protocol, receiver actuators can't be discovered automatically. +After the bridge is configured and the transceiver receives a message from any sensor or actuator, the device is put in the Inbox. +Because RFXCOM communication is a one way protocol, receiver actuators can't be discovered automatically. ### Note: Apple OS X @@ -61,21 +62,27 @@ sudo kextload -b com.apple.driver.AppleUSBFTDI Linux has built-in FTDI drivers, which need to be disabled for JD2XX to take over -FTDI drivers can be disabled by blacklisting the ftdi\_sio module in your modprobe config (/etc/modprobe.d/). However this will require ALL FTDI devices to then be accessed via something like JD2XX. If you have, or may acquire, other USB serial devices you will probably prefer to configure your RFXCOM manually. +FTDI drivers can be disabled by blacklisting the ftdi\_sio module in your modprobe config (/etc/modprobe.d/). +However this will require ALL FTDI devices to then be accessed via something like JD2XX. +If you have, or may acquire, other USB serial devices you will probably prefer to configure your RFXCOM manually. -If you configure the RFXCOM manually note that the serial port that is assigned to it may change if you have more than one USB serial device. On systems using udev (practically all modern Linux systems) you can add a rule to /etc/udev/rules.d/ such as: +If you configure the RFXCOM manually note that the serial port that is assigned to it may change if you have more than one USB serial device. +On systems using udev (practically all modern Linux systems) you can add a rule to /etc/udev/rules.d/ such as: ``` SUBSYSTEM=="tty", ATTRS{product}=="RFXtrx433", ATTRS{serial}=="A12LPLW", SYMLINK+="rfxtrx0" ``` -and then you will be able to use /dev/rfxtrx0 as the serial device regardless of what /dev/ttyUSB device has been assigned. (N.B. you can get the product and serial strings to use from the output of dmesg, lsusb or by looking in /sys/) +and then you will be able to use /dev/rfxtrx0 as the serial device regardless of what /dev/ttyUSB device has been assigned. +(N.B. you can get the product and serial strings to use from the output of dmesg, lsusb or by looking in /sys/) ### Manual Configuration If you have any problems with JD2XX or you don't want to disable FTDI driver on OS X or Linux, you can also configure RFXCOM transceivers/receivers manually. -To do that via the PaperUI, manually add the generic RFXCOM device named `RFXCOM USB Transceiver`, with the description "This is universal RFXCOM transceiver bridge for manual configuration purposes." You will need to specify at least the serial port which has been assigned to the RFXCOM (see notes above). You may also need to change permissions on the serial port to allow openhab to access it and you may need to tell the java libraries about it by adding a line to <openhab root>/conf/environment such as: +To do that via the PaperUI, manually add the generic RFXCOM device named `RFXCOM USB Transceiver`, with the description "This is universal RFXCOM transceiver bridge for manual configuration purposes". +You will need to specify at least the serial port which has been assigned to the RFXCOM (see notes above). +You may also need to change permissions on the serial port to allow openhab to access it and you may need to tell the java libraries about it by adding a line to <openhab root>/conf/environment such as: ``` EXTRA\_JAVA\_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/<device> @@ -91,7 +98,8 @@ Bridge rfxcom:bridge:usb0 [ serialPort="/dev/<device>" ] { #### RFXCOM over TCP/IP -You can also use an RFXCOM device over TCP/IP. To start a TCP server for an RFXCOM device, you can use socat: +You can also use an RFXCOM device over TCP/IP. +To start a TCP server for an RFXCOM device, you can use socat: ``` socat tcp-listen:10001,fork,reuseaddr file:/dev/ttyUSB0,raw @@ -205,7 +213,8 @@ The binding uses the following system channels: ### Thing files -Sensors/actuators are easy to configure through the PaperUI. However, if you used a thing file for your RFXCOM you can also configure them manually there as well, for example: +Sensors/actuators are easy to configure through the PaperUI. +However, if you used a thing file for your RFXCOM you can also configure them manually there as well, for example: ``` Bridge rfxcom:bridge:usb0 [ serialPort="/dev/<device>" ] { @@ -225,35 +234,35 @@ Switch Switch {channel="rfxcom:lighting2:usb0:100001_1:command"} This binding currently supports the following things / message types: - * [bbqtemperature - RFXCOM BBQ Temperature Sensor](#bbqtemperature---rfxcom-bbq-temperature-sensor) - * [blinds1 - RFXCOM Blinds1 Actuator](#blinds1---rfxcom-blinds1-actuator) - * [chime - RFXCOM Chime](#chime---rfxcom-chime) - * [currentenergy - RFXCOM CurrentEnergy Actuator](#currentenergy---rfxcom-currentenergy-actuator) - * [curtain1 - RFXCOM Curtain1 Actuator](#curtain1---rfxcom-curtain1-actuator) - * [datetime - RFXCOM Date/time sensor](#datetime---rfxcom-datetime-sensor) - * [energy - RFXCOM Energy Sensor](#energy---rfxcom-energy-sensor) - * [humidity - RFXCOM Humidity Sensor](#humidity---rfxcom-humidity-sensor) - * [lighting1 - RFXCOM Lighting1 Actuator](#lighting1---rfxcom-lighting1-actuator) - * [lighting2 - RFXCOM Lighting2 Actuator](#lighting2---rfxcom-lighting2-actuator) - * [lighting4 - RFXCOM Lighting4 Actuator](#lighting4---rfxcom-lighting4-actuator) - * [lighting5 - RFXCOM Lighting5 Actuator](#lighting5---rfxcom-lighting5-actuator) - * [lighting6 - RFXCOM Lighting6 Actuator](#lighting6---rfxcom-lighting6-actuator) - * [rain - RFXCOM Rain Sensor](#rain---rfxcom-rain-sensor) - * [rfy - RFXCOM Rfy Actuator](#rfy---rfxcom-rfy-actuator) - * [security1 - RFXCOM Security1 Sensor](#security1---rfxcom-security1-sensor) - * [temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor](#temperaturehumiditybarometric---rfxcom-temperature-humidity-barometric-sensor) - * [temperaturehumidity - RFXCOM Temperature-Humidity Sensor](#temperaturehumidity---rfxcom-temperature-humidity-sensor) - * [temperaturerain - RFXCOM Temperature-Rain Sensor](#temperaturerain---rfxcom-temperature-rain-sensor) - * [temperature - RFXCOM Temperature Sensor](#temperature---rfxcom-temperature-sensor) - * [thermostat1 - RFXCOM Thermostat1 Sensor](#thermostat1---rfxcom-thermostat1-sensor) - * [thermostat3 - RFXCOM Thermostat3 Sensor](#thermostat3---rfxcom-thermostat3-sensor) - * [undecoded - RFXCOM Undecoded RF Messages](#undecoded---rfxcom-undecoded-rf-messages) - * [uv - RFXCOM UV/Temperature Sensor](#uv---rfxcom-uvtemperature-sensor) - * [wind - RFXCOM Wind Sensor](#wind---rfxcom-wind-sensor) +* [bbqtemperature - RFXCOM BBQ Temperature Sensor](#bbqtemperature---rfxcom-bbq-temperature-sensor) +* [blinds1 - RFXCOM Blinds1 Actuator](#blinds1---rfxcom-blinds1-actuator) +* [chime - RFXCOM Chime](#chime---rfxcom-chime) +* [currentenergy - RFXCOM CurrentEnergy Actuator](#currentenergy---rfxcom-currentenergy-actuator) +* [curtain1 - RFXCOM Curtain1 Actuator](#curtain1---rfxcom-curtain1-actuator) +* [datetime - RFXCOM Date/time sensor](#datetime---rfxcom-datetime-sensor) +* [energy - RFXCOM Energy Sensor](#energy---rfxcom-energy-sensor) +* [humidity - RFXCOM Humidity Sensor](#humidity---rfxcom-humidity-sensor) +* [lighting1 - RFXCOM Lighting1 Actuator](#lighting1---rfxcom-lighting1-actuator) +* [lighting2 - RFXCOM Lighting2 Actuator](#lighting2---rfxcom-lighting2-actuator) +* [lighting4 - RFXCOM Lighting4 Actuator](#lighting4---rfxcom-lighting4-actuator) +* [lighting5 - RFXCOM Lighting5 Actuator](#lighting5---rfxcom-lighting5-actuator) +* [lighting6 - RFXCOM Lighting6 Actuator](#lighting6---rfxcom-lighting6-actuator) +* [rain - RFXCOM Rain Sensor](#rain---rfxcom-rain-sensor) +* [rfy - RFXCOM Rfy Actuator](#rfy---rfxcom-rfy-actuator) +* [security1 - RFXCOM Security1 Sensor](#security1---rfxcom-security1-sensor) +* [temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor](#temperaturehumiditybarometric---rfxcom-temperature-humidity-barometric-sensor) +* [temperaturehumidity - RFXCOM Temperature-Humidity Sensor](#temperaturehumidity---rfxcom-temperature-humidity-sensor) +* [temperaturerain - RFXCOM Temperature-Rain Sensor](#temperaturerain---rfxcom-temperature-rain-sensor) +* [temperature - RFXCOM Temperature Sensor](#temperature---rfxcom-temperature-sensor) +* [thermostat1 - RFXCOM Thermostat1 Sensor](#thermostat1---rfxcom-thermostat1-sensor) +* [thermostat3 - RFXCOM Thermostat3 Sensor](#thermostat3---rfxcom-thermostat3-sensor) +* [undecoded - RFXCOM Undecoded RF Messages](#undecoded---rfxcom-undecoded-rf-messages) +* [uv - RFXCOM UV/Temperature Sensor](#uv---rfxcom-uvtemperature-sensor) +* [wind - RFXCOM Wind Sensor](#wind---rfxcom-wind-sensor) ### bbqtemperature - RFXCOM BBQ Temperature Sensor -A BBQ Temperature device. +A BBQ Temperature device #### Channels @@ -267,13 +276,13 @@ A BBQ Temperature device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 ### blinds1 - RFXCOM Blinds1 Actuator -A Blinds1 device. +A Blinds1 device #### Channels @@ -288,26 +297,25 @@ A Blinds1 device. #### Configuration Options - * deviceId - Device Id - * Sensor Id + unit code, separated by dot. Example 23455.1 +* deviceId - Device Id + * Sensor Id + unit code, separated by dot. Example 23455.1 - * subType - Sub Type - * Specifies device sub type. - - * T0 - RollerTrol, Hasta new - * T1 - Hasta old - * T2 - A-OK RF01 - * T3 - A-OK AC114/AC123 - * T4 - Raex YR1326 - * T5 - Media Mount - * T6 - DC106/Rohrmotor24-RMF/Yooda - * T7 - Forest - * T8 - Chamberlain CS4330CN +* subType - Sub Type + * Specifies device sub type. + * T0 - RollerTrol, Hasta new + * T1 - Hasta old + * T2 - A-OK RF01 + * T3 - A-OK AC114/AC123 + * T4 - Raex YR1326 + * T5 - Media Mount + * T6 - DC106/Rohrmotor24-RMF/Yooda + * T7 - Forest + * T8 - Chamberlain CS4330CN ### chime - RFXCOM Chime -A Chime device. +A Chime device #### Channels @@ -319,17 +327,17 @@ A Chime device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 2983 +* deviceId - Device Id + * Sensor Id. Example 2983 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * BYRONSX - Byron SX - * BYRONMP001 - Byron MP001 - * SELECTPLUS - SelectPlus - * SELECTPLUS3 - SelectPlus3 - * ENVIVO - Envivo + * BYRONSX - Byron SX + * BYRONMP001 - Byron MP001 + * SELECTPLUS - SelectPlus + * SELECTPLUS3 - SelectPlus3 + * ENVIVO - Envivo ### current - RFXCOM Current Sensor @@ -359,7 +367,7 @@ A Current sensing device. ### currentenergy - RFXCOM CurrentEnergy Actuator -A CurrentEnergy device. +A CurrentEnergy device #### Channels @@ -375,18 +383,18 @@ A CurrentEnergy device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 47104 +* deviceId - Device Id + * Sensor Id. Example 47104 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * ELEC4 - OWL - CM180i + * ELEC4 - OWL - CM180i ### curtain1 - RFXCOM Curtain1 Actuator -A Curtain1 device. +A Curtain1 device #### Channels @@ -400,18 +408,18 @@ A Curtain1 device. #### Configuration Options - * deviceId - Device Id - * House code + unit code, separated by dot. Example A.1 +* deviceId - Device Id + * House code + unit code, separated by dot. Example A.1 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * HARRISON - Harrison Curtain + * HARRISON - Harrison Curtain ### datetime - RFXCOM Date/time sensor -A DateTime device. +A DateTime device #### Channels @@ -424,17 +432,17 @@ A DateTime device. #### Configuration Options - * deviceId - Device Id - * Device id, example 47360 +* deviceId - Device Id + * Device id, example 47360 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * RTGR328N - Oregon RTGR328N + * RTGR328N - Oregon RTGR328N ### energy - RFXCOM Energy Sensor -An Energy device. +An Energy device #### Channels @@ -450,19 +458,19 @@ An Energy device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 5693 +* deviceId - Device Id + * Sensor Id. Example 5693 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * ELEC2 - CM119/160 - * ELEC3 - CM180 + * ELEC2 - CM119/160 + * ELEC3 - CM180 ### humidity - RFXCOM Humidity Sensor -A Humidity device. +A Humidity device #### Channels @@ -476,19 +484,19 @@ A Humidity device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 5693 +* deviceId - Device Id + * Sensor Id. Example 5693 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * HUM1 - LaCrosse TX3 - * HUM2 - LaCrosse WS2300 + * HUM1 - LaCrosse TX3 + * HUM2 - LaCrosse WS2300 ### lighting1 - RFXCOM Lighting1 Actuator -A Lighting1 device. +A Lighting1 device #### Channels @@ -500,29 +508,29 @@ A Lighting1 device. #### Configuration Options - * deviceId - Device Id - * Device Id. House code + unit code, separated by dot. Example A.1 +* deviceId - Device Id + * Device Id. House code + unit code, separated by dot. Example A.1 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * X10 - X10 lighting - * ARC - ARC - * AB400D - ELRO AB400D (Flamingo) - * WAVEMAN - Waveman - * EMW200 - Chacon EMW200 - * IMPULS - IMPULS - * RISINGSUN - RisingSun - * PHILIPS - Philips SBC - * ENERGENIE - Energenie ENER010 - * ENERGENIE\_5 - Energenie 5-gang - * COCO - COCO GDR2-2000R - * HQ\_COCO20 - HQ COCO-20 + * X10 - X10 lighting + * ARC - ARC + * AB400D - ELRO AB400D (Flamingo) + * WAVEMAN - Waveman + * EMW200 - Chacon EMW200 + * IMPULS - IMPULS + * RISINGSUN - RisingSun + * PHILIPS - Philips SBC + * ENERGENIE - Energenie ENER010 + * ENERGENIE\_5 - Energenie 5-gang + * COCO - COCO GDR2-2000R + * HQ\_COCO20 - HQ COCO-20 ### lighting2 - RFXCOM Lighting2 Actuator -A Lighting2 device. +A Lighting2 device #### Channels @@ -535,21 +543,21 @@ A Lighting2 device. #### Configuration Options - * deviceId - Device Id - * Remote/switch/unit Id + unit code, separated by dot. Example 8773718.10 +* deviceId - Device Id + * Remote/switch/unit Id + unit code, separated by dot. Example 8773718.10 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * AC - AC - * HOME\_EASY\_EU - HomeEasy EU - * ANSLUT - ANSLUT - * KAMBROOK - Kambrook RF3672 + * AC - AC + * HOME\_EASY\_EU - HomeEasy EU + * ANSLUT - ANSLUT + * KAMBROOK - Kambrook RF3672 ### lighting4 - RFXCOM Lighting4 Actuator -A Lighting4 device. +A Lighting4 device #### Channels @@ -562,62 +570,64 @@ A Lighting4 device. #### Configuration Options - * deviceId - Device Id - * Device Id. Example 3456 +* deviceId - Device Id + * Device Id. Example 3456 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * PT2262 - PT2262 + * PT2262 - PT2262 - * pulse - Pulse length - * Pulse length of the device +* pulse - Pulse length + * Pulse length of the device - * onCommandId - On command - * Specifies command to be send when ON must be transmitted +* onCommandId - On command + * Specifies command to be send when ON must be transmitted - * 0 - OFF (value 0) - * 1 - ON (value 1) - * 2 - OFF (value 2) - * 3 - ON (value 3) - * 4 - OFF (value 4) - * 5 - ON (value 5) - * 6 - value 5 - * 7 - ON (value 7) - * 8 - value 8 - * 9 - ON (value 9) - * 10 - value 10 - * 11 - value 11 - * 12 - ON (value 12) - * 13 - value 13 - * 14 - value 14 - * 15 - value 15 + * 0 - OFF (value 0) + * 1 - ON (value 1) + * 2 - OFF (value 2) + * 3 - ON (value 3) + * 4 - OFF (value 4) + * 5 - ON (value 5) + * 6 - value 6 + * 7 - ON (value 7) + * 8 - value 8 + * 9 - ON (value 9) + * 10 - ON (value 10) + * 11 - ON (value 11) + * 12 - ON (value 12) + * 13 - value 13 + * 14 - OFF (value 14) + * 15 - value 15 - * offCommandId - Off command - * Specifies command to be send when OFF must be transmitted +* offCommandId - Off command + * Specifies command to be send when OFF must be transmitted - * 0 - OFF (value 0) - * 1 - ON (value 1) - * 2 - OFF (value 2) - * 3 - ON (value 3) - * 4 - OFF (value 4) - * 5 - ON (value 5) - * 6 - value 5 - * 7 - ON (value 7) - * 8 - value 8 - * 9 - ON (value 9) - * 10 - ON (value 10) - * 11 - ON (value 11) - * 12 - ON (value 12) - * 13 - value 13 - * 14 - OFF (value 14) - * 15 - value 15 + * 0 - OFF (value 0) + * 1 - ON (value 1) + * 2 - OFF (value 2) + * 3 - ON (value 3) + * 4 - OFF (value 4) + * 5 - ON (value 5) + * 6 - value 6 + * 7 - ON (value 7) + * 8 - value 8 + * 9 - ON (value 9) + * 10 - ON (value 10) + * 11 - ON (value 11) + * 12 - ON (value 12) + * 13 - value 13 + * 14 - OFF (value 14) + * 15 - value 15 #### Examples The support for lighting 4 in RFXCOM is less complete because a lot of different devices use the same chips and can not easily be distinguished. -So some extra configuration can be used for fine tuning the behavior of your Lighting4 devices. For configuration via the PaperUI three extra fields are available, being the the pulse length and a commmand id for on and off commands. If your item is auto-discovered normally the on or off command should be recognized properly. +So some extra configuration can be used for fine tuning the behavior of your Lighting4 devices. +For configuration via the PaperUI three extra fields are available, being the the pulse length and a commmand id for on and off commands. +If your item is auto-discovered normally the on or off command should be recognized properly. For a usb attached RFXCOM on Windows the configuration could look like this (note that the `onCommandId`, `offCommandId` and `pulse` are all optional): @@ -658,7 +668,7 @@ end ### lighting5 - RFXCOM Lighting5 Actuator -A Lighting5 device. +A Lighting5 device #### Channels @@ -672,33 +682,33 @@ A Lighting5 device. #### Configuration Options - * deviceId - Device Id - * Remote/switch/unit Id + unit code, separated by dot. Example 10001.1 +* deviceId - Device Id + * Remote/switch/unit Id + unit code, separated by dot. Example 10001.1 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * AOKE - Aoke Relay - * AVANTEK - Avantek - * BBSB\_NEW - BBSB new types - * CONRAD\_RSL2 - Conrad RSL2 - * EMW100 - EMW100 GAO/Everflourish - * EURODOMEST - Eurodomest - * IT - IT - * KANGTAI - Kangtai, Cotech - * LIGHTWAVERF - LightwaveRF, Siemens - * LIVOLO - Livolo Dimmer or On/Off 1-3 - * LIVOLO\_APPLIANCE - Livolo Appliance On/Off 1-10 - * MDREMOTE - MDREMOTE LED dimmer v106 - * MDREMOTE\_107 - MDREMOTE v107 - * MDREMOTE\_108 - MDREMOTE v108, EKAB-10KRF - * RGB\_TRC02 - RGB TRC02 (2 batt) - * RGB\_TRC02\_2 - RGB TRC02\_2 (3 batt) + * AOKE - Aoke Relay + * AVANTEK - Avantek + * BBSB\_NEW - BBSB new types + * CONRAD\_RSL2 - Conrad RSL2 + * EMW100 - EMW100 GAO/Everflourish + * EURODOMEST - Eurodomest + * IT - IT + * KANGTAI - Kangtai, Cotech + * LIGHTWAVERF - LightwaveRF, Siemens + * LIVOLO - Livolo Dimmer or On/Off 1-3 + * LIVOLO\_APPLIANCE - Livolo Appliance On/Off 1-10 + * MDREMOTE - MDREMOTE LED dimmer v106 + * MDREMOTE\_107 - MDREMOTE v107 + * MDREMOTE\_108 - MDREMOTE v108, EKAB-10KRF + * RGB\_TRC02 - RGB TRC02 (2 batt) + * RGB\_TRC02\_2 - RGB TRC02\_2 (3 batt) ### lighting6 - RFXCOM Lighting6 Actuator -A Lighting6 device. +A Lighting6 device #### Channels @@ -711,18 +721,18 @@ A Lighting6 device. #### Configuration Options - * deviceId - Device Id - * Remote/switch/unit Id + group code + unit code, separated by dot. Example 100.A.1 +* deviceId - Device Id + * Remote/switch/unit Id + group code + unit code, separated by dot. Example 100.A.1 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * BLYSS - Blyss + * BLYSS - Blyss ### rain - RFXCOM Rain Sensor -A Rain device. +A Rain device #### Channels @@ -736,23 +746,23 @@ A Rain device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * RAIN1 - RGR126/682/918/928 - * RAIN2 - PCR800 - * RAIN3 - TFA - * RAIN4 - UPM RG700 - * RAIN5 - WS2300 - * RAIN6 - La Crosse TX5 + * RAIN1 - RGR126/682/918/928 + * RAIN2 - PCR800 + * RAIN3 - TFA + * RAIN4 - UPM RG700 + * RAIN5 - WS2300 + * RAIN6 - La Crosse TX5 ### rfy - RFXCOM Rfy Actuator -A Rfy device. +A Rfy device #### Channels @@ -767,19 +777,19 @@ A Rfy device. #### Configuration Options - * deviceId - Device Id - * Unit Id + unit code, separated by dot. Example 100.1 +* deviceId - Device Id + * Unit Id + unit code, separated by dot. Example 100.1 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * RFY - RFY - * RFY\_EXT - RFY Ext + * RFY - RFY + * RFY\_EXT - RFY Ext ### security1 - RFXCOM Security1 Sensor -A Security1 device. +A Security1 device #### Channels @@ -795,27 +805,27 @@ A Security1 device. #### Configuration Options - * deviceId - Device Id - * Remote/sensor Id. Example 10001 +* deviceId - Device Id + * Remote/sensor Id. Example 10001 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * X10\_SECURITY - X10 security door/window sensor - * X10\_SECURITY\_MOTION - X10 security motion sensor - * X10\_SECURITY\_REMOTE - X10 security remote (no alive packets) - * KD101 - KD101 (no alive packets) - * VISONIC\_POWERCODE\_SENSOR\_PRIMARY\_CONTACT - Visonic PowerCode door/window sensor – primary contact (with alive packets) - * VISONIC\_POWERCODE\_MOTION - Visonic PowerCode motion sensor (with alive packets) - * VISONIC\_CODESECURE - Visonic CodeSecure (no alive packets) - * VISONIC\_POWERCODE\_SENSOR\_AUX\_CONTACT - Visonic PowerCode door/window sensor – auxiliary contact (no alive packets) - * MEIANTECH - Meiantech - * SA30 - SA30 (no alive packets) + * X10\_SECURITY - X10 security door/window sensor + * X10\_SECURITY\_MOTION - X10 security motion sensor + * X10\_SECURITY\_REMOTE - X10 security remote (no alive packets) + * KD101 - KD101 (no alive packets) + * VISONIC\_POWERCODE\_SENSOR\_PRIMARY\_CONTACT - Visonic PowerCode door/window sensor – primary contact (with alive packets) + * VISONIC\_POWERCODE\_MOTION - Visonic PowerCode motion sensor (with alive packets) + * VISONIC\_CODESECURE - Visonic CodeSecure (no alive packets) + * VISONIC\_POWERCODE\_SENSOR\_AUX\_CONTACT - Visonic PowerCode door/window sensor – auxiliary contact (no alive packets) + * MEIANTECH - Meiantech + * SA30 - SA30 (no alive packets) ### temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor -A Temperature-Humidity-Barometric device. +A Temperature-Humidity-Barometric device #### Channels @@ -833,19 +843,19 @@ A Temperature-Humidity-Barometric device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 59648 +* deviceId - Device Id + * Sensor Id. Example 59648 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * THB1 - BTHR918, BTHGN129 - * THB2 - BTHR918N, BTHR968 + * THB1 - BTHR918, BTHGN129 + * THB2 - BTHR918N, BTHR968 ### temperaturehumidity - RFXCOM Temperature-Humidity Sensor -A Temperature-Humidity device. +A Temperature-Humidity device #### Channels @@ -861,30 +871,30 @@ A Temperature-Humidity device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * TH1 - THGN122/123, THGN132, THGR122/228/238/268 - * TH2 - THGR810, THGN800 - * TH3 - RTGR328 - * TH4 - THGR328 - * TH5 - WTGR800 - * TH6 - THGR918/928, THGRN228, THGN500 - * TH7 - TFA TS34C, Cresta - * TH8 - WT260,WT260H,WT440H,WT450,WT450H - * TH9 - Viking 02035,02038 (02035 has no humidity), Proove TSS320, 311501 - * TH10 - Rubicson - * TH11 - EW109 - * TH12 - Imagintronix/Opus XT300 Soil sensor - * TH13 - Alecto WS1700 and compatibles + * TH1 - THGN122/123, THGN132, THGR122/228/238/268 + * TH2 - THGR810, THGN800 + * TH3 - RTGR328 + * TH4 - THGR328 + * TH5 - WTGR800 + * TH6 - THGR918/928, THGRN228, THGN500 + * TH7 - TFA TS34C, Cresta + * TH8 - WT260,WT260H,WT440H,WT450,WT450H + * TH9 - Viking 02035,02038 (02035 has no humidity), Proove TSS320, 311501 + * TH10 - Rubicson + * TH11 - EW109 + * TH12 - Imagintronix/Opus XT300 Soil sensor + * TH13 - Alecto WS1700 and compatibles ### temperaturerain - RFXCOM Temperature-Rain Sensor -A Temperature-Rain device. +A Temperature-Rain device #### Channels @@ -898,18 +908,18 @@ A Temperature-Rain device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * WS1200 - WS1200 + * WS1200 - WS1200 ### temperature - RFXCOM Temperature Sensor -A Temperature device. +A Temperature device #### Channels @@ -922,28 +932,28 @@ A Temperature device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * TEMP1 - THR128/138, THC138 - * TEMP2 - THC238/268,THN132,THWR288,THRN122,THN122,AW129/131 - * TEMP3 - THWR800 - * TEMP4 - RTHN318 - * TEMP5 - La Crosse TX2, TX3, TX4, TX17 - * TEMP6 - TS15C. UPM temp only - * TEMP7 - Viking 02811, Proove TSS330, 311346 - * TEMP8 - La Crosse WS2300 - * TEMP9 - Rubicson - * TEMP10 - TFA 30.3133 - * TEMP11 - WT0122 + * TEMP1 - THR128/138, THC138 + * TEMP2 - THC238/268,THN132,THWR288,THRN122,THN122,AW129/131 + * TEMP3 - THWR800 + * TEMP4 - RTHN318 + * TEMP5 - La Crosse TX2, TX3, TX4, TX17 + * TEMP6 - TS15C. UPM temp only + * TEMP7 - Viking 02811, Proove TSS330, 311346 + * TEMP8 - La Crosse WS2300 + * TEMP9 - Rubicson + * TEMP10 - TFA 30.3133 + * TEMP11 - WT0122 ### thermostat1 - RFXCOM Thermostat1 Sensor -A Thermostat1 device. +A Thermostat1 device #### Channels @@ -956,14 +966,14 @@ A Thermostat1 device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * DIGIMAX - Digimax, TLX7506 - * DIGIMAX\_SHORT - Digimax with short format (no set point) + * DIGIMAX - Digimax, TLX7506 + * DIGIMAX\_SHORT - Digimax with short format (no set point) @@ -980,16 +990,16 @@ A Thermostat3 device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 106411 + * deviceId - Device Id + * Sensor Id. Example 106411 - * subType - Sub Type - * Specifies device sub type. + * subType - Sub Type + * Specifies device sub type. - * MERTIK\_\_G6R\_H4T1 - Mertik (G6R H4T1) - * MERTIK\_\_G6R\_H4TB\_\_G6_H4T\_\_G6R\_H4T21\_Z22 - Mertik (G6R H4TB, G6R H4T, or G6R H4T21\-Z22) - * MERTIK\_\_G6R\_H4TD\_\_G6R\_H4T16 - Mertik (G6R H4TD or G6R H4T16) - * MERTIK\_\_G6R\_H4S\_TRANSMIT\_ONLY - Mertik (G6R H4S \- transmit only) + * MERTIK\_\_G6R\_H4T1 - Mertik (G6R H4T1) + * MERTIK\_\_G6R\_H4TB\_\_G6_H4T\_\_G6R\_H4T21\_Z22 - Mertik (G6R H4TB, G6R H4T, or G6R H4T21\-Z22) + * MERTIK\_\_G6R\_H4TD\_\_G6R\_H4T16 - Mertik (G6R H4TD or G6R H4T16) + * MERTIK\_\_G6R\_H4S\_TRANSMIT\_ONLY - Mertik (G6R H4S \- transmit only) ### undecoded - RFXCOM Undecoded RF Messages @@ -1005,40 +1015,40 @@ Any messages that RFXCOM can receive but not decode. #### Configuration Options - * deviceId - Device Id - * Undecoded items cannot provide a device ID, so this value is always UNDECODED. +* deviceId - Device Id + * Undecoded items cannot provide a device ID, so this value is always UNDECODED. - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * AC - AC - * ARC - ARC - * ATI - ATI - * HIDEKI\_UPM - Hideki, UPM - * LACROSSE\_VIKING - La Crosse, Viking - * AD - AD - * MERTIK - Mertik Maxitrol Fireplace controllers - * OREGON1 - Oregon Scientific 1 - * OREGON2 - Oregon Scientific 2 - * OREGON3 - Oregon Scientific 3 - * PROGUARD - ProGuard - * VISONIC - Visonic - * NEC - NEC - * FS20 - FS20 - * RESERVED - Reserved - * BLINDS - Blinds - * RUBICSON - Rubicson - * AE - AE - * FINE\_OFFSET - Fine Offset - * RGB - RGB - * RTS - RTS - * SELECT\_PLUS - Select Plus - * HOME\_CONFORT - Home Confort + * AC - AC + * ARC - ARC + * ATI - ATI + * HIDEKI\_UPM - Hideki, UPM + * LACROSSE\_VIKING - La Crosse, Viking + * AD - AD + * MERTIK - Mertik Maxitrol Fireplace controllers + * OREGON1 - Oregon Scientific 1 + * OREGON2 - Oregon Scientific 2 + * OREGON3 - Oregon Scientific 3 + * PROGUARD - ProGuard + * VISONIC - Visonic + * NEC - NEC + * FS20 - FS20 + * RESERVED - Reserved + * BLINDS - Blinds + * RUBICSON - Rubicson + * AE - AE + * FINE\_OFFSET - Fine Offset + * RGB - RGB + * RTS - RTS + * SELECT\_PLUS - Select Plus + * HOME\_CONFORT - Home Confort ### uv - RFXCOM UV/Temperature Sensor -A UV/Temperature device. +A UV/Temperature device #### Channels @@ -1053,20 +1063,20 @@ A UV/Temperature device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 56923 +* deviceId - Device Id + * Sensor Id. Example 56923 - * subType - Sub Type - * Specifies device sub type. +* subType - Sub Type + * Specifies device sub type. - * UV1 - UVN128, UV138 - * UV2 - UVN800 - * UV3 - TFA + * UV1 - UVN128, UV138 + * UV2 - UVN800 + * UV3 - TFA ### wind - RFXCOM Wind Sensor -A Wind device. +A Wind device #### Channels @@ -1084,17 +1094,16 @@ A Wind device. #### Configuration Options - * deviceId - Device Id - * Sensor Id. Example 2983 +* deviceId - Device Id + * Sensor Id. Example 2983 - * subType - Sub Type - * Specifies device sub type. - - * WIND1 - WTGR800 - * WIND2 - WGR800 - * WIND3 - STR918, WGR918, WGR928 - * WIND4 - TFA - * WIND5 - UPM WDS500 - * WIND6 - WS2300 - * WIND7 - Alecto WS4500, Auriol H13726, Hama EWS1500, Meteoscan W155/W160, Ventus WS155 +* subType - Sub Type + * Specifies device sub type. + * WIND1 - WTGR800 + * WIND2 - WGR800 + * WIND3 - STR918, WGR918, WGR928 + * WIND4 - TFA + * WIND5 - UPM WDS500 + * WIND6 - WS2300 + * WIND7 - Alecto WS4500, Auriol H13726, Hama EWS1500, Meteoscan W155/W160, Ventus WS155 diff --git a/_addons_bindings/rme/readme.md b/_addons_bindings/rme/readme.md index b50c02de1..88620a6d0 100644 --- a/_addons_bindings/rme/readme.md +++ b/_addons_bindings/rme/readme.md @@ -3,7 +3,7 @@ id: rme label: RME title: RME - Bindings type: binding -description: "This binding integrates the RME RainManager rain water pump and management system" +description: "This binding is for the RME RainManager rain water pump and management system" since: 2x install: auto --- @@ -14,7 +14,7 @@ install: auto # RME Binding -This binding integrates the RME RainManager rain water pump and management system +This binding is for the RME RainManager rain water pump and management system ## Supported Things @@ -22,21 +22,21 @@ Manager ## Thing Configuration -The Thing configuration requires the name of the serial port that is used to connect the ESH host with the RME unit +The Thing configuration requires the name of the serial port that is used to connect the host with the RME unit ## Channels All devices support some of the following channels: -| Channel Type ID | Item Type | Description | -|-----------------|------------------------|--------------|----------------- |------------- | -| waterlevel | Number | Indicates the % the cistern is filled with water | -| mode | String | Indicates the operation mode of the RME Rain Manager, Automatic or Manual | -| source | String | Indicates water source used to supply water, e.g cistern or city | -| exitpump | Switch | Indicates whether the exit pump is switched on | -| entrypump | Switch | Indicates whether the entry pump is switched on | +| Channel Type ID | Item Type | Description | | | +|-----------------|-----------|---------------------------------------------------------------------------|---|---| +| waterlevel | Number | Indicates the % the cistern is filled with water | | | +| mode | String | Indicates the operation mode of the RME Rain Manager, Automatic or Manual | | | +| source | String | Indicates water source used to supply water, e.g cistern or city | | | +| exitpump | Switch | Indicates whether the exit pump is switched on | | | +| entrypump | Switch | Indicates whether the entry pump is switched on | | | -## Full Example +## Example .things diff --git a/_addons_bindings/rotelra1x/readme.md b/_addons_bindings/rotelra1x/readme.md index fb30cda8e..d2a7baf5c 100644 --- a/_addons_bindings/rotelra1x/readme.md +++ b/_addons_bindings/rotelra1x/readme.md @@ -3,7 +3,7 @@ id: rotelra1x label: Rotel Amplifier title: Rotel Amplifier - Bindings type: binding -description: "Connects to a Rotel RA11 or RA12 integrated amplifier via a serial (RS232) interface. The Rotel amplifiers supported by this binding also include an integrated DAC unit. To use the binding, connect a serial cable between the amplifier and the computer running openHAB." +description: "Connects to a Rotel RA11 or RA12 integrated amplifier via a serial (RS232) interface." since: 2x install: auto --- @@ -14,60 +14,61 @@ install: auto # Rotel Amplifier Binding -Connects to a Rotel RA11 or RA12 integrated amplifier via a serial (RS232) interface. The Rotel amplifiers supported by this binding also include an integrated DAC unit. To use the binding, connect a serial cable between the amplifier and the computer running openHAB. +Connects to a Rotel RA11 or RA12 integrated amplifier via a serial (RS232) interface. +The Rotel amplifiers supported by this binding also include an integrated DAC unit. +To use the binding, connect a serial cable between the amplifier and the computer running openHAB. ## Overview -This binding implements the serial protocol specified by Rotel in their documentation. The protocol allows one to control the amplifier, to query its state, and to receive live updates of changed values. For example, when turning the volume knob, the unit sends updates as different volumes are set. - +This binding implements the serial protocol specified by Rotel in their documentation. +The protocol allows one to control the amplifier, to query its state, and to receive live updates of changed values. +For example, when turning the volume knob, the unit sends updates as different volumes are set. ## Supported things - * Rotel Amplifier. Each thing represent an amplifier unit, connected - over a RS232 connection. +* Rotel Amplifier. Each thing represent an amplifier unit, connected over an RS232 connection. ## Discovery -Auto-discovery is not supported -- things can be added manually. +Auto-discovery is not supported; things can be added manually. ## Thing configuration The thing has the following configuration parameter: -| Parameter | Parameter name | Description | -|----------------|-------------------------------------------------------------------------------------------------------------------| -| Serial port | port | Specifies the name of the serial port used to communicate with the device. (String) | -| Maximum volume | maximum-volume | This is the value to send to the amplifier when the volume channel is set to 100 % (1). (Integer)| +| Parameter | Parameter name | Description | +|----------------|--------------------------------------------------------------------------------------------------------------------| +| Serial port | port | Specifies the name of the serial port used to communicate with the device. (String) | +| Maximum volume | maximum-volume | This is the value to send to the amplifier when the volume channel is set to 100 % (1). (Integer) | (1) The RA11's max. volume is 96, but it is still supported to use 100 as the maximum volume, only the volume will not increase when going beyond 96 %. ## Channel summary -| Channel ID | Item Type | Description | -|------------|-----------|--------------------------------------------------------------------------------------------------| -| power | Switch | Controls and reports the power state (soft on/off) | -| volume | Dimmer | Volume control. | -| mute | Switch | Enable / disable mute. | -| source | String | Selects from a list of input sources (see options). | -| frequency | Number | Reports the current sampling frequency if playing from a digital input. | -| brightness | Dimmer | Sets the backlight level of the display. Maps from percentage to 6 levels (can't be turned off). | +| Channel ID | Item Type | Description | +|------------|-----------|-------------------------------------------------------------------------------------------------| +| power | Switch | Controls and reports the power state (soft on/off) | +| volume | Dimmer | Volume control | +| mute | Switch | Enable / disable mute | +| source | String | Selects from a list of input sources (see options) | +| frequency | Number | Reports the current sampling frequency if playing from a digital input | +| brightness | Dimmer | Sets the backlight level of the display. Maps from percentage to 6 levels (can't be turned off) | All channels are updated in real time if modified by other means, e.g. by the remote control. ## Configuration example -The following lines -can be added to the configuration files in order to set up an amplifier at serial port `/dev/ttyS0`. +The following lines can be added to the configuration files in order to set up an amplifier at serial port `/dev/ttyS0`. -*demo.things +demo.things ``` Thing rotelra1x:amp:living_room_amp [ port="/dev/ttyS0" ] ``` -*demo.items +demo.items ``` Switch Amp_Power "On/off" { channel="rotelra1x:amp:living_room_amp:power" } @@ -78,8 +79,7 @@ Number Amp_Frequency "Frequency" { channel="rotelra1x:amp:l Dimmer Amp_Brightness "Display brightness" { channel="rotelra1x:amp:living_room_amp:brightness" } ``` - -*demo.sitemap: +demo.sitemap: ``` sitemap demo label="Main Menu" @@ -97,6 +97,4 @@ sitemap demo label="Main Menu" ## References -Rotel serial protocol is available here: http://www.rotel.com/sites/default/files/product/rs232/RA12%20Protocol.pdf . - - +Rotel serial protocol is available here: . diff --git a/_addons_bindings/russound/readme.md b/_addons_bindings/russound/readme.md index 2508314ae..2ce62644e 100644 --- a/_addons_bindings/russound/readme.md +++ b/_addons_bindings/russound/readme.md @@ -3,7 +3,7 @@ id: russound label: Russound title: Russound - Bindings type: binding -description: "This binding provides integration with any Russound system that support the RIO protocol (all MCA systems, all X systems). This binding provides compatibility with RIO Protocol v1.10. The protocol document can be found in the Russound Portal ('RIO Protocol for 3rd Party Integrators.pdf'). Please update to the latest firmware to provide full compatibility with this binding. This binding does provide full feedback from the Russound system if events occur outside of openHAB (such as keypad usage)." +description: "This binding provides integration with any Russound system that support the RIO protocol (all MCA systems, all X systems)." since: 2x logo: images/addons/russound.png install: auto @@ -15,26 +15,39 @@ install: auto # Russound Binding -This binding provides integration with any Russound system that support the RIO protocol (all MCA systems, all X systems). This binding provides compatibility with RIO Protocol v1.10. The protocol document can be found in the Russound Portal ("RIO Protocol for 3rd Party Integrators.pdf"). Please update to the latest firmware to provide full compatibility with this binding. This binding does provide full feedback from the Russound system if events occur outside of openHAB (such as keypad usage). +This binding provides integration with any Russound system that support the RIO protocol (all MCA systems, all X systems). +This binding provides compatibility with RIO Protocol v1.10. +The protocol document can be found in the Russound Portal ("RIO Protocol for 3rd Party Integrators.pdf"). +Please update to the latest firmware to provide full compatibility with this binding. +This binding does provide full feedback from the Russound system if events occur outside of openHAB (such as keypad usage). -*Warning:* Russound becomes unstable if you have two IP based clients connected to the same system. Do NOT run multiple instances of this binding against the same system - this definitely causes unstability. Running this binding in addition to the MyRussound application seems to work fine however. +*Warning:* Russound becomes unstable if you have two IP based clients connected to the same system. +Do NOT run multiple instances of this binding against the same system - this definitely causes instability. +Running this binding in addition to the MyRussound application seems to work fine, however. -*Warning:* Try to avoid having multiple media management functions open in different clients (keypads, My Russound app, HABPanel, etc). Although it seems to work a majority of the times, there have been instances where the sessions become confused. +*Warning:* Try to avoid having multiple media management functions open in different clients (keypads, My Russound app, HABPanel, etc). +Although it seems to work a majority of the times, there have been instances where the sessions become confused. ## Supported Bridges/Things -* Bridge: Russound System (usually the main controller) -* Bridge: Russound Controller (1-6 controllers supported) -* Thing: Russound Source (1-8 sources supported) -* Thing: Russound Zone (1-8 [depending on the controller] zones supported for each controller) - +* Bridge: Russound System (usually the main controller) +* Bridge: Russound Controller (1-6 controllers supported) +* Thing: Russound Source (1-8 sources supported) +* Thing: Russound Zone (1-8 [depending on the controller] zones supported for each controller) + ## Device Discovery -The Russound binding does support devices discovery via the paperUI. When you start device discovery, the system will scan all network interfaces and **all IP Addresses in the subnet on each interface** looking for a Russound system device. If found, the device will be added to the inbox. Adding the device will then start a scan of the device to discover all the controllers, sources, and zones attached defined on the device. As these are found, they will be added to the inbox. +The Russound binding does support devices discovery via the paperUI. +When you start device discovery, the system will scan all network interfaces and **all IP Addresses in the subnet on each interface** looking for a Russound system device. +If found, the device will be added to the inbox. +Adding the device will then start a scan of the device to discover all the controllers, sources, and zones attached defined on the device. +As these are found, they will be added to the inbox. ## HABPANEL or other UI -All media management functions are supported to allow building of a dynamic UI for the various streaming sources. All media management channels begin with "mm". An example HABPanel implementation can be found in the HABPanel forum. +All media management functions are supported to allow building of a dynamic UI for the various streaming sources. +All media management channels begin with "mm". +An example HABPanel implementation can be found in the HABPanel forum. ## Thing Configuration @@ -51,22 +64,21 @@ The following configurations occur for each of the bridges/things: ### Russound Source -| Name | Type | Description | -|--------------|---------------|--------------------------------------------------------------------------| -| source | int | The source # (1-12) | +| Name | Type | Description | +|--------|------|---------------------| +| source | int | The source # (1-12) | ### Russound Controller -| Name | Type | Description | -|--------------|---------------|--------------------------------------------------------------------------| -| controller | int | The controller address # (1-6) | +| Name | Type | Description | +|------------|------|--------------------------------| +| controller | int | The controller address # (1-6) | ### Russound Zone -| Name | Type | Description | -|--------------|---------------|--------------------------------------------------------------------------| -| zone | int | The zone # (1-6) | - +| Name | Type | Description | +|------|------|------------------| +| zone | int | The zone # (1-6) | ## Channels @@ -74,111 +86,114 @@ The following channels are supported for each bridge/thing ### Russound System -| Channel Type ID | Read/Write | Item Type | Description | -|--------------------|------------|--------------|--------------------------------------------------------------------- | -| lang | RW | String | System language (english, chinese and russian are supported) | -| allon | RW | Switch | Turn on/off all zones | -| controller | R | String | JSON representation of all controllers in the system | -| sources | R | String | JSON representation of all sources in the system | +| Channel Type ID | Read/Write | Item Type | Description | +|-----------------|------------|-----------|--------------------------------------------------------------| +| lang | RW | String | System language (english, chinese and russian are supported) | +| allon | RW | Switch | Turn on/off all zones | +| controller | R | String | JSON representation of all controllers in the system | +| sources | R | String | JSON representation of all sources in the system | #### Notes -1. The JSON will look like: `[{"id":1, "name":"XXX"},...]`. The controller channel will contain up to 6 controllers and the sources will contain up to 8 sources (depending on how the system is configured). +- The JSON will look like: `[{"id":1, "name":"XXX"},...]`. +The controller channel will contain up to 6 controllers and the sources will contain up to 8 sources (depending on how the system is configured). ### Russound Source (please see source cross-reference below for what is supported by which sources) -| Channel Type ID | Read/Write | Item Type | Description | -|----------------------|------------|--------------|--------------------------------------------------------------------- | -| name | R | String | The name of the source | -| type | R | String | The type of source | -| channel | R | String | The currently playing channel (usually tuner frequency) | -| channelname | R | String | The currently playing channel name | -| composername | R | String | The currently playing composer name | -| genre | R | String | The currently playing genre | -| artistname | R | String | The currently playing artist name | -| albumname | R | String | The currently playing album name | -| coverarturl | R | String | The currently playing URL to the cover art | -| playlistname | R | String | The currently playing play list name | -| songname | R | String | The currently playing song name | -| rating | R | String | The rating for the currently played song (can be changed via zone) | -| mode | R | String | The provider mode or streaming service | -| shufflemode | R | String | The current shuffle mode | -| repeatmode | R | String | The current repeat mode | -| programservicename | R | String | The program service name (PSN) | -| radiotext | R | String | The radio text | -| radiotext2 | R | String | The radio text (line 2) | -| radiotext3 | R | String | The radio text (line 3) | -| radiotext4 | R | String | The radio text (line 4) | -| volume | R | String | The source's volume level (undocumented) | -| banks | RW | String | JSON representation of all banks in the system | -| mmscreen | R | String | The media management screen id | -| mmtitle | R | String | The media management screen title | -| mmmenu | R | String | The media management screen menu json | -| mmattr | R | String | The media management attribute | -| mmmenubuttonoktext | R | String | The media management OK button text | -| mmmenubuttonbacktext | R | String | The media management Cancel button text | -| mminfotext | R | String | The media management information text | -| mmhelptext | R | String | The media management help text | -| mmtextfield | R | String | The media management text field | +| Channel Type ID | Read/Write | Item Type | Description | +|----------------------|------------|-----------|--------------------------------------------------------------------| +| name | R | String | The name of the source | +| type | R | String | The type of source | +| channel | R | String | The currently playing channel (usually tuner frequency) | +| channelname | R | String | The currently playing channel name | +| composername | R | String | The currently playing composer name | +| genre | R | String | The currently playing genre | +| artistname | R | String | The currently playing artist name | +| albumname | R | String | The currently playing album name | +| coverarturl | R | String | The currently playing URL to the cover art | +| playlistname | R | String | The currently playing play list name | +| songname | R | String | The currently playing song name | +| rating | R | String | The rating for the currently played song (can be changed via zone) | +| mode | R | String | The provider mode or streaming service | +| shufflemode | R | String | The current shuffle mode | +| repeatmode | R | String | The current repeat mode | +| programservicename | R | String | The program service name (PSN) | +| radiotext | R | String | The radio text | +| radiotext2 | R | String | The radio text (line 2) | +| radiotext3 | R | String | The radio text (line 3) | +| radiotext4 | R | String | The radio text (line 4) | +| volume | R | String | The source's volume level (undocumented) | +| banks | RW | String | JSON representation of all banks in the system | +| mmscreen | R | String | The media management screen id | +| mmtitle | R | String | The media management screen title | +| mmmenu | R | String | The media management screen menu json | +| mmattr | R | String | The media management attribute | +| mmmenubuttonoktext | R | String | The media management OK button text | +| mmmenubuttonbacktext | R | String | The media management Cancel button text | +| mminfotext | R | String | The media management information text | +| mmhelptext | R | String | The media management help text | +| mmtextfield | R | String | The media management text field | #### Notes -1. Banks are only supported tuner sources and the JSON array will have exactly 6 banks in it (with IDs from 1 to 6). For non-tuner sources, an empty JSON array (`[]`) will be returned. For tuner sources, the JSON will look like: `[{"id":1, "name":"XXX"},...]`. A bank's name can be updated by sending the representation back to the channel. Example: `[{"id":1,"name":"FM1"},{"id":3,"name":"FM3"}]` will set the name of bank #1 to "FM1 and bank#3 to "FM3" (leaving all other bank names the same). After an update, the banks channel will be refreshed with the full JSON representation of all banks. If the name has not been changed in the refreshed value, the russound rejected the name change for some reason (generally too long of a name or a duplicate name). +1. Banks are only supported tuner sources and the JSON array will have exactly 6 banks in it (with IDs from 1 to 6). For non-tuner sources, an empty JSON array (`[]`) will be returned. For tuner sources, the JSON will look like: `[{"id":1, "name":"XXX"},...]`. A bank's name can be updated by sending the representation back to the channel. Example: `[{"id":1,"name":"FM1"},{"id":3,"name":"FM3"}]` will set the name of bank #1 to "FM1 and bank#3 to "FM3" (leaving all other bank names the same). After an update, the banks channel will be refreshed with the full JSON representation of all banks. If the name has not been changed in the refreshed value, the russound rejected the name change for some reason (generally too long of a name or a duplicate name). -2. All media management channels are ONLY valid on streaming sources (not tuners). All channels will return a JSON representation like `{"id":xxx, "value":"yyy"}` where 'xxx' will be a sequential identifier of the message and 'yyy' will be the payload. The payload will be a simple string in all cases. However, the mmmenu string will be a raw JSON string representing the menu structure. Please review the media management section in the RIO protocol document from russound for the specifications. +2. All media management channels are ONLY valid on streaming sources (not tuners). All channels will return a JSON representation like `{"id":xxx, "value":"yyy"}` where 'xxx' will be a sequential identifier of the message and 'yyy' will be the payload. The payload will be a simple string in all cases. However, the mmmenu string will be a raw JSON string representing the menu structure. Please review the media management section in the RIO protocol document from russound for the specifications. ### Russound Controller -| Channel Type ID | Read/Write | Item Type | Description | -|-----------------|------------|--------------|--------------------------------------------------------------------- | -| zones | R | String | The JSON representation of all zones in the controller | +| Channel Type ID | Read/Write | Item Type | Description | +|-----------------|------------|-----------|--------------------------------------------------------| +| zones | R | String | The JSON representation of all zones in the controller | + #### Notes -* The JSON will look like: `[{"id":1, "name":"XXX"},...]` +* The JSON will look like: `[{"id":1, "name":"XXX"},...]` ### Russound Zone - -| Channel Type ID | Read/Write | Item Type | Description | -|--------------------|------------|--------------|--------------------------------------------------------------------- | -| name | R | String | The name of the zone (changed by SCS-C5 software) | -| source | RW | Number | The (physical) number for the current source | -| bass | RW | Number | The bass setting (-10 to 10) | -| treble | RW | Number | The treble setting (-10 to 10) | -| balance | RW | Number | The balance setting (-10 [full left] to 10 [full right]) | -| loudness | RW | Switch | Set's the loudness on/off | -| turnonvolume | RW | Dimmer | The initial volume when turned on (0 to 100) | -| donotdisturb | RW | String | The do not disturb setting (on/off/slave) | -| partymode | RW | String | The party mode (on/off/master) | -| status | RW | Switch | Whether the zone is on or off | -| volume | RW | Dimmer | The current volume of the zone (0 to 100) | -| mute | RW | Switch | Whether the zone is muted or not | -| page | R | Switch | Whether the zone is in paging mode or not | -| sharedsource | R | Switch | Whether the zone's source is being shared or not | -| sleeptimeremaining | RW | Number | Sleep time, in minutes, remaining (0 to 60 in 5 step increments) | -| lasterror | R | String | The last error that occurred in the zone | -| enabled | R | Switch | Whether the zone is enabled or not | -| repeat | W | Switch | Toggle the repeat mode for the current source | -| shuffle | W | Switch | Toggle the shuffle mode for the current source | -| rating | W | Switch | Signal a like (ON) or dislike (OFF) to the current source | -| keypress | W | String | (Advanced) Send a keypress from the zone | -| keyrelease | W | String | (Advanced) Send a keyrelease from the zone | -| keyhold | W | String | (Advanced) Send a keyhold from the zone | -| keycode | W | String | (Advanced) Send a keycode from the zone | -| event | W | String | (Advanced) Send an event from the zone | -| systemfavorites | RW | String* | The JSON representation for system favorites | -| zonefavorites | RW | String** | The JSON representation for zone favorites | -| presets | RW | String*** | The JSON representation for zone presets | -| mminit | W | Switch**** | Whether to initial a media management session (ON) or close an existing one (OFF) | -| mmcontextmenu | W | Switch**** | Whether to initial a media management context session (ON) or close an existing one (OFF) | + +| Channel Type ID | Read/Write | Item Type | Description | +|--------------------|------------|------------|-------------------------------------------------------------------------------------------| +| name | R | String | The name of the zone (changed by SCS-C5 software) | +| source | RW | Number | The (physical) number for the current source | +| bass | RW | Number | The bass setting (-10 to 10) | +| treble | RW | Number | The treble setting (-10 to 10) | +| balance | RW | Number | The balance setting (-10 [full left] to 10 [full right]) | +| loudness | RW | Switch | Set's the loudness on/off | +| turnonvolume | RW | Dimmer | The initial volume when turned on (0 to 100) | +| donotdisturb | RW | String | The do not disturb setting (on/off/slave) | +| partymode | RW | String | The party mode (on/off/master) | +| status | RW | Switch | Whether the zone is on or off | +| volume | RW | Dimmer | The current volume of the zone (0 to 100) | +| mute | RW | Switch | Whether the zone is muted or not | +| page | R | Switch | Whether the zone is in paging mode or not | +| sharedsource | R | Switch | Whether the zone's source is being shared or not | +| sleeptimeremaining | RW | Number | Sleep time, in minutes, remaining (0 to 60 in 5 step increments) | +| lasterror | R | String | The last error that occurred in the zone | +| enabled | R | Switch | Whether the zone is enabled or not | +| repeat | W | Switch | Toggle the repeat mode for the current source | +| shuffle | W | Switch | Toggle the shuffle mode for the current source | +| rating | W | Switch | Signal a like (ON) or dislike (OFF) to the current source | +| keypress | W | String | (Advanced) Send a keypress from the zone | +| keyrelease | W | String | (Advanced) Send a keyrelease from the zone | +| keyhold | W | String | (Advanced) Send a keyhold from the zone | +| keycode | W | String | (Advanced) Send a keycode from the zone | +| event | W | String | (Advanced) Send an event from the zone | +| systemfavorites | RW | String* | The JSON representation for system favorites | +| zonefavorites | RW | String** | The JSON representation for zone favorites | +| presets | RW | String*** | The JSON representation for zone presets | +| mminit | W | Switch**** | Whether to initial a media management session (ON) or close an existing one (OFF) | +| mmcontextmenu | W | Switch**** | Whether to initial a media management context session (ON) or close an existing one (OFF) | + #### Notes: -1. As of the time of this document, rating ON (like) produced an error in the firmware from the related command. This has been reported to Russound. -2. keypress/keyrelease/keyhold/keycode/event are advanced commands that will pass the related event string to Russound (i.e. "EVENT C[x].Z[y]!KeyPress [stringtype]"). Please see the "RIO Protocol for 3rd Party Integrators.pdf" (found at the Russound Portal) for proper string forms. -3. If you send a OnOffType to the volume will have the same affect as turning the zone on/off (ie sending OnOffType to "status") -4. The volume PercentType will be scaled to Russound's volume of 0-50 (ie 50% = volume of 25, 100% = volume of 50) -5. Initialize a media management session by sending ON to the channel. The related source thing will then start sending out media management information in the MM channels. To close the session - simply send OFF to the channel. Sending OFF to the channel when a session has not been initialized does nothing. Likewise if the related source is a tuner, this command does nothing. +1. As of the time of this document, rating ON (like) produced an error in the firmware from the related command. This has been reported to Russound. +2. keypress/keyrelease/keyhold/keycode/event are advanced commands that will pass the related event string to Russound (i.e. `EVENT C[x].Z[y]!KeyPress [stringtype]`). Please see the "RIO Protocol for 3rd Party Integrators.pdf" (found at the Russound Portal) for proper string forms. +3. If you send a OnOffType to the volume will have the same affect as turning the zone on/off (ie sending OnOffType to "status") +4. The volume PercentType will be scaled to Russound's volume of 0-50 (ie 50% = volume of 25, 100% = volume of 50) +5. Initialize a media management session by sending ON to the channel. The related source thing will then start sending out media management information in the MM channels. To close the session - simply send OFF to the channel. Sending OFF to the channel when a session has not been initialized does nothing. Likewise if the related source is a tuner, this command does nothing. ##### System Favorites @@ -186,9 +201,9 @@ The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will h There are three different ways to use this channel: -1. Save a system favorite. Send a representation with "valid" set to true. Example: to set system favorite 3 to what is playing in the zone: `[{"id":3,"valid":true,"name":"80s Rock"}]`. If system favorite 3 was invalid, this would save what is currently playing and make it valid. If system favorite 3 was already valid, this would overlay the favorite with what is currently playing and change it's name. -2. Update the name of a system favorite. Send a representation of an existing ID with "valid" set to true and the new name. Example: we could update system favorite 3 (after the above statement) by sending: `[{"id":3,"valid":true,"name":"80s Rock Even More"}]`. Note this will ONLY change the name (this will NOT save what is currently playing to the system favorite). -3. Delete a system favorite. Send a representation with "valid" as false. Example: deleting system favorite 3 (after the above statements) by sending: `[{"id":3","valid":false"}]` +1. Save a system favorite. Send a representation with "valid" set to true. Example: to set system favorite 3 to what is playing in the zone: `[{"id":3,"valid":true,"name":"80s Rock"}]`. If system favorite 3 was invalid, this would save what is currently playing and make it valid. If system favorite 3 was already valid, this would overlay the favorite with what is currently playing and change it's name. +2. Update the name of a system favorite. Send a representation of an existing ID with "valid" set to true and the new name. Example: we could update system favorite 3 (after the above statement) by sending: `[{"id":3,"valid":true,"name":"80s Rock Even More"}]`. Note this will ONLY change the name (this will NOT save what is currently playing to the system favorite). +3. Delete a system favorite. Send a representation with "valid" as false. Example: deleting system favorite 3 (after the above statements) by sending: `[{"id":3","valid":false"}]` The channel will be refreshed with the new representation after processing. If the refreshed representation doesn't include the changes, the russound system rejected them for some reason (generally length of the name). @@ -198,8 +213,8 @@ The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will h There are two different ways to use this channel: -1. Save a zone favorite. Send a representation with "valid" set to true. Example: to set zone favorite 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"80s Rock"}]`. -2. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}] ` +1. Save a zone favorite. Send a representation with "valid" set to true. Example: to set zone favorite 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"80s Rock"}]`. +2. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}] ` There is no ability to change JUST the name. Sending a new name will save the new name AND set the favorite to what is currently playing. @@ -211,9 +226,9 @@ The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy", "bank": xxx, "ba There are two different ways to use this channel: -1. Save a preset. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`. -2. Save a preset with default name. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`. -2. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}]` +1. Save a preset. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`. +2. Save a preset with default name. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`. +3. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}]` There is no ability to change JUST the name. Sending a new name will save the new name AND set the favorite to what is currently playing. @@ -224,42 +239,42 @@ The channel will be refreshed with the new representation after processing. If | Channel Type ID | Sirius | XM | SMS3 | DMS 3.1 Media | DMS 3.1 AM/FM | iBridge | Internal AM/FM | Arcam T32 | Others | |--------------------|--------|----|------|---------------|---------------|---------|----------------|-----------|--------| | name | X | X | X | X | X | X | X | X | X | -| type | X | X | X | X | X | X | X | X | X | -| ipaddress | | | X | X | X | | | | | -| composername | X | | | | | | | | | -| channel | | | | | X | | X | | | -| channelname | X | X | | X | | | | X | | -| genre | X | X | | | | | | X | | -| artistname | X | X | X | X | | X | | | | -| albumname | | | X | X | | X | | | | -| coverarturl | 1 | | | X | | | | | | -| playlistname | | | X | X | | X | | | | -| songname | X | X | X | X | | X | | | | -| mode | | | | X | | | | | | -| shufflemode | | | | X | | X | | | | -| repeatmode | | | | X | | | | | | -| rating | | | | X | | | | | | -| programservicename | | | | | X | | X | | | -| radiotext | | | | | X | | X | X | | -| radiotext2 | | | | | | | | X | | -| radiotext3 | | | | | | | | X | | -| radiotext4 | | | | | | | | X | | +| type | X | X | X | X | X | X | X | X | X | +| ipaddress | | | X | X | X | | | | | +| composername | X | | | | | | | | | +| channel | | | | | X | | X | | | +| channelname | X | X | | X | | | | X | | +| genre | X | X | | | | | | X | | +| artistname | X | X | X | X | | X | | | | +| albumname | | | X | X | | X | | | | +| coverarturl | 1 | | | X | | | | | | +| playlistname | | | X | X | | X | | | | +| songname | X | X | X | X | | X | | | | +| mode | | | | X | | | | | | +| shufflemode | | | | X | | X | | | | +| repeatmode | | | | X | | | | | | +| rating | | | | X | | | | | | +| programservicename | | | | | X | | X | | | +| radiotext | | | | | X | | X | X | | +| radiotext2 | | | | | | | | X | | +| radiotext3 | | | | | | | | X | | +| radiotext4 | | | | | | | | X | | 1. Sirius Internal Radio Only -## Full Example +## Example -The following is an example of +The following is an example of -1. Main controller (#1) at ipaddress 192.168.1.24 -2. One Sources connected to it (#1 is the internal AM/FM) -3. Four zones on the controller (1-4 in various rooms) +1. Main controller (#1) at ipaddress 192.168.1.24 +2. One Sources connected to it (#1 is the internal AM/FM) +3. Four zones on the controller (1-4 in various rooms) .things ``` russound:rio:home [ ipAddress="192.168.1.24", ping=30, retryPolling=10 ] -russound:controller:1 (russound:rio:home) [ controller=1 ] +russound:controller:1 (russound:rio:home) [ controller=1 ] russound:source:1 (russound:rio:home) [ source=1 ] russound:zone:1 (russound:controller:1) [ zone=1 ] russound:zone:2 (russound:controller:1) [ zone=2 ] @@ -315,8 +330,6 @@ String Rio_Src_RadioText "Radio Text [%s]" { channel="russound:source:1:radiotex String Rio_Src_RadioText2 "Radio Text #2 [%s]" { channel="russound:source:1:radiotext2" } String Rio_Src_RadioText3 "Radio Text #3 [%s]" { channel="russound:source:1:radiotext3" } String Rio_Src_RadioText4 "Radio Text #4 [%s]" { channel="russound:source:1:radiotext4" } - - ``` .sitemap @@ -329,7 +342,7 @@ Frame label="Russound" { } Text label="Controller 1" { - + Text label="Zone 1" { Text item=Rio_Zone_Name Switch item=Rio_Zone_Status @@ -338,7 +351,7 @@ Frame label="Russound" { Setpoint item=Rio_Zone_Treble Setpoint item=Rio_Zone_Balance Switch item=Rio_Zone_Loudness - Setpoint item=Rio_Zone_TurnOnVolume + Setpoint item=Rio_Zone_TurnOnVolume Selection item=Rio_Zone_DoNotDisturb mappings=[ON="On", OFF="Off", SLAVE="Slave"] Selection item=Rio_Zone_PartyMode mappings=[ON="On", OFF="Off", MASTER="Master"] Slider item=Rio_Zone_Volume @@ -379,5 +392,3 @@ Frame label="Russound" { } } ``` - - diff --git a/_addons_bindings/serial1/readme.md b/_addons_bindings/serial1/readme.md index 416be13a1..303e417a3 100644 --- a/_addons_bindings/serial1/readme.md +++ b/_addons_bindings/serial1/readme.md @@ -13,91 +13,91 @@ install: auto {% include base.html %} -# Serial Binding - -The Serial binding allows openHAB to communicate in ASCII over serial ports attached to the openHAB server. - -| Item Type | Function | -|-----------|----------| -| Switch | the item will update its state to `ON` or `OFF` whenever data becomes available on the serial interface (or simply by short-cutting pins 2 and 7 on the RS-232 interface) | -| String | the item will update its state to a string that is the data received from the serial interface. Sending a command to the String item will be sent out as data through the serial interface. | -| Number | the item will receive the RegEx result and attempt to convert the string to a number. | - -## Port Configuration Notes - -In most cases you will not need to perform special steps to access your serial ports, but these notes might be helpful. - -### Linux Users - -* If you are using **non standard serial ports** you have to adapt start.sh to have the serial port included. The `java` command line should then include the following parameters: - -``` --Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 -``` - -where `/dev/ttyAMA0` is the path to your serial port. Please be aware to change all scripts you might use for startup (debug, automatic start in Linux, etc.). - -* Your Linux distro might require that you add the `openhab` user to the `dialout` group to grant permission to read/write to the serial port. - -``` -sudo usermod -a -G dialout openhab -``` - -The user will need to logout from all login instances and log back in to see their new group added. If you add your user to this group and still cannot get permission, rebooting the box to ensure the new group permission is attached to your user is suggested. - -* If you use more than one USB serial converter like FTDI or CP2102, it may happen that your /dev/ttyUSB0 device is named /dev/ttyUSB1 after a reboot. To prevent this problem you can assign alias names for your serial devices by adding them to `/etc/udev/rules.d/99-com.rules`. - -example: - -``` -SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AE01F0PD", SYMLINK+="ttyMySensors" -SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0001", SYMLINK+="ttyCulStick" -``` - -### Mac Users - -If you are working with a Mac, you might need to install a driver for your USB-RS232 converter (e.g. [osx-pl2303](http://osx-pl2303.sourceforge.net/) or [pl2303](http://mac.softpedia.com/get/Drivers/PL2303-OS-X-driver.shtml)) and create the /var/lock folder, see the [rxtx troubleshooting guide](http://rxtx.qbang.org/wiki/index.php/Trouble_shooting#Mac_OS_X_users). - -## Binding Configuration - -This binding does not have a configuration. - -## Item Configuration - -The format has the following variations: - -``` -serial="@" -serial="@,REGEX()" -serial="@,BASE64 -serial="@,ON(),OFF()" -serial="@,REGEX(), UP(),DOWN(), STOP()" -``` - -where: - -* `` is the identification of the serial port on the host system, e.g. `COM1` on Windows, `/dev/ttyS0` on Linux or `/dev/tty.PL2303-0000103D` on Mac. The same `` can be bound to multiple items. -* `` is the baud rate of the port. Backward compatibility is given; if no baud rate is specified the serial binding defaults to 9600 baud. -* `REGEX()` allows parsing for special strings or numbers in the serial stream. You can use a capture group (e.g. REGEX(Position:([0-9.]*)) to capture 12 in "Position:12" or substitution (e.g. REGEX(s/Position:100/ON/) or REGEX(s/Position:100/ON/g)) to replace (FIRST or ALL) "Position:100" strings in response with "ON". This is based on the [RegEx Service](https://github.com/openhab/openhab1-addons/wiki/Transformations#regex-transformation-service) and [ESH RegExTransformationService](https://github.com/eclipse/smarthome/tree/master/extensions/transform/org.eclipse.smarthome.transform.regex). This is optional. -* `BASE64` enables the Base64 mode. With this mode all data received on the serial port is saved in Base64 format. In this mode also all data that is sent to the serial port has to be Base64 encoded. (This was implemented because some serial devices are using bytes that are not supported by the REST interface). -* `ON(),OFF()` if used in conjunction with a Switch this mapping will send specific commands to serial port and also match a serial command to specific ON/OFF state. This way you don't have to use a rule to send a command to serial -* `UP(),DOWN(),STOP()` if used in conjunction with a Rollershutter this mapping will send specific commands to serial port. Use REGEX to parse Rollershutter postion (0-100%) comming as feedback over serial link - -Base64 can be decoded in the rules by importing `javax.xml.bind.DatatypeConverter` and then decoding the value like this: - -``` -DatatypeConverter::parseBase64Binary(ITEM.state.toString) -``` - -For encoding use the `printBase64Binary` method of the `DatatypeConverter`. This is optional. - -As a result, your lines in the items file might look like these: - -``` -Switch HardwareButton "Bell" (Entrance) { serial="/dev/ttyS0" } -String AVR "Surround System" (Multimedia) { serial="/dev/ttyS1@115200" } -Number Temperature "My Temp. Sensor" (Weather) { serial="/dev/ttyS1@115200,REGEX(ID:2.*,T:([0-9.]*))" } -Switch SerialRelay "Relay Q1" (Entrance) { serial="/dev/ttyS0,ON(Q1_ON\n),OFF(Q1_OFF\n)" } -Rollershutter SerialRollo "Entrance Rollo" (Entrance) { serial="/dev/ttyS0,REGEX(Position:([0-9.]*)),UP(Rollo_UP\n),DOWN(Rollo_Down\n),STOP(Rollo_Stop\n)" } -Switch RoloAt100 "Rolo at 100" (Entrance) { serial="/dev/ttyS0,REGEX(s/Position:100/ON/)" } -``` +# Serial Binding + +The Serial binding allows openHAB to communicate in ASCII over serial ports attached to the openHAB server. + +| Item Type | Function | +|-----------|----------| +| Switch | the item will update its state to `ON` or `OFF` whenever data becomes available on the serial interface (or simply by short-cutting pins 2 and 7 on the RS-232 interface) | +| String | the item will update its state to a string that is the data received from the serial interface. Sending a command to the String item will be sent out as data through the serial interface. | +| Number | the item will receive the RegEx result and attempt to convert the string to a number. | + +## Port Configuration Notes + +In most cases it will not be needed to perform special steps to access serial ports, but these notes might be helpful. + +### Linux Users + +* When using **non standard serial ports**, adapt start.sh to have the serial port included. The `java` command line should then include the following parameters: + +``` +-Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 +``` + +where `/dev/ttyAMA0` is the path to the serial port. Remember to change all scripts used for startup (debug, automatic start in Linux, etc.). + +* A Linux distro might require adding the `openhab` user to the `dialout` group to grant permission to read/write to the serial port. + +``` +sudo usermod -a -G dialout openhab +``` + +The user will need to logout from all login instances and log back in to see their new group added. If the user added to this group still cannot get permission, rebooting the box to ensure the new group permission is attached to the user is suggested. + +* When using more than one USB serial converter like FTDI or CP2102, it may happen that the /dev/ttyUSB0 device is named /dev/ttyUSB1 after a reboot. To prevent this problem, alias names can be assigned to serial devices by adding them to `/etc/udev/rules.d/99-com.rules`. + +example: + +``` +SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AE01F0PD", SYMLINK+="ttyMySensors" +SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0001", SYMLINK+="ttyCulStick" +``` + +### Mac Users + +When working with a Mac, it may be necessary to install a driver for the USB-RS232 converter (e.g. [osx-pl2303](http://osx-pl2303.sourceforge.net/) or [pl2303](http://mac.softpedia.com/get/Drivers/PL2303-OS-X-driver.shtml)) and create the /var/lock folder; see the [rxtx troubleshooting guide](http://rxtx.qbang.org/wiki/index.php/Trouble_shooting#Mac_OS_X_users). + +## Binding Configuration + +This binding does not have a configuration. + +## Item Configuration + +The format has the following variations: + +``` +serial="@" +serial="@,REGEX()" +serial="@,BASE64 +serial="@,ON(),OFF()" +serial="@,REGEX(), UP(),DOWN(), STOP()" +``` + +where: + +* `` is the identification of the serial port on the host system, e.g. `COM1` on Windows, `/dev/ttyS0` on Linux or `/dev/tty.PL2303-0000103D` on Mac. The same `` can be bound to multiple items. +* `` is the baud rate of the port. If no baud rate is specified, the binding defaults to 9600 baud. +* `REGEX()` allows parsing for special strings or numbers in the serial stream. A capture group (e.g. REGEX(Position:([0-9.]*)) can be used to capture "12" in `Position:12` or substitution (e.g. REGEX(s/Position:100/ON/) or REGEX(s/Position:100/ON/g)) to replace (FIRST or ALL) "Position:100" strings in response with "ON". This is based on the [RegEx Service](https://github.com/openhab/openhab1-addons/wiki/Transformations#regex-transformation-service) and [ESH RegExTransformationService](https://github.com/eclipse/smarthome/tree/master/extensions/transform/org.eclipse.smarthome.transform.regex). This is optional. +* `BASE64` enables the Base64 mode. With this mode all data received on the serial port is saved in Base64 format. All data that is sent to the serial port also has to be Base64 encoded. (This was implemented because some serial devices are using bytes that are not supported by the REST interface). +* `ON(),OFF()` used in conjunction with a Switch, this mapping will send specific commands to serial port and also match a serial command to specific ON/OFF state. This makes it unnecessary to use a rule to send a command to serial. +* `UP(),DOWN(),STOP()` used in conjunction with a Rollershutter, this mapping will send specific commands to serial port. Use REGEX to parse Rollershutter postion (0-100%) coming as feedback over serial link. + +Base64 can be decoded in the rules by importing `javax.xml.bind.DatatypeConverter` and then decoding the value like this: + +``` +DatatypeConverter::parseBase64Binary(ITEM.state.toString) +``` + +For encoding, use the `printBase64Binary` method of the `DatatypeConverter`. This is optional. + +As a result, lines in the items file might look like these: + +``` +Switch HardwareButton "Bell" (Entrance) { serial="/dev/ttyS0" } +String AVR "Surround System" (Multimedia) { serial="/dev/ttyS1@115200" } +Number Temperature "My Temp. Sensor" (Weather) { serial="/dev/ttyS1@115200,REGEX(ID:2.*,T:([0-9.]*))" } +Switch SerialRelay "Relay Q1" (Entrance) { serial="/dev/ttyS0,ON(Q1_ON\n),OFF(Q1_OFF\n)" } +Rollershutter SerialRollo "Entrance Rollo" (Entrance) { serial="/dev/ttyS0,REGEX(Position:([0-9.]*)),UP(Rollo_UP\n),DOWN(Rollo_Down\n),STOP(Rollo_Stop\n)" } +Switch RoloAt100 "Rolo at 100" (Entrance) { serial="/dev/ttyS0,REGEX(s/Position:100/ON/)" } +``` diff --git a/_addons_bindings/squeezebox/readme.md b/_addons_bindings/squeezebox/readme.md index 79e4217ef..5d474fcc5 100644 --- a/_addons_bindings/squeezebox/readme.md +++ b/_addons_bindings/squeezebox/readme.md @@ -50,8 +50,13 @@ The binding requires no special configuration The Squeeze Server bridge requires the ip address, web port, and cli port to access it on. If Squeeze Server authentication is enabled, the userId and password also are required. -Squeeze Players are identified by their MAC address. -In the thing file, this looks e.g. like + +Squeeze Players are identified by their MAC address, which is required. +In addition, the notification timeout can be specified. +If omitted, the default timeout value will be used. +A notification volume can be optionally specified, which, if provided, will override the player's current volume level when playing notifications. + +Here are some examples of how to define the Squeeze Server and Player things in a things file. ``` Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090 ] @@ -60,7 +65,7 @@ Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport= } ``` -Or, if Squeeze Server authentication is enabled: +If Squeeze Server authentication is enabled, the user ID and password can be specified for the Squeeze Server: ``` Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090, userId="yourid", password="yourpassword" ] @@ -69,6 +74,15 @@ Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport= } ``` +The notification timeout and/or notification volume can be specified for the Squeeze Player: + +``` +Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090 ] +{ + Thing squeezeboxplayer myplayer[ mac="00:f1:bb:00:00:f1", notificationTimeout=30, notificationVolume=35 ] +} +``` + ## Server Channels The Squeezebox server supports the following channel: @@ -103,7 +117,6 @@ All devices support some of the following channels: | coverartdata | Image | Image data of cover art of the current song | | ircode | String | Received IR code | | numberPlaylistTracks | Number | Number of playlist tracks | -| notificationSoundVolume | Dimmer | Volume for playing notifications | | playFavorite | String | ID of Favorite to play (channel's state options contains available favorites) | ## Playing Favorites @@ -114,6 +127,38 @@ The Selection widget in HABpanel can be used to present the favorites as a choic Selecting from that choice list will play the favorite on the SqueezeBox player. Currently, only favorites from the root level of the LMS favorites list are exposed on the **playFavorite** channel. +### How to Set Up Favorites + +- Add some favorites to your favorites list in LMS (local music playlists, Pandora, Slacker, Internet radio, etc.). +Keep all favorites at the root level (i.e. favorites in sub-folders will be ignored). + +- If you're on an older openHAB build, you may need to delete and readd your squeezebox server and player things to pick up the new channels. + +- Create a new item on each player + +``` +String YourPlayer_PlayFavorite "Play Favorite [%s]" { channel="squeezebox:squeezeboxplayer:736549a3:00042016e7a0:playFavorite" } +``` + +#### For HABpanel (do this for each player) + +- Add a Selection widget to your dashboard + +- In the Selection widget settings + + - Enter the **YourPlayer_PlayFavorite** item + + - Select *Choices source* of *Server-provided item options* + + - Modify other settings to suite your taste + +- When you load the dashboard and click on the selection widget, you should see the favorites. +Selecting a favorite from the list will play it. + +#### For Sitemap + +- Currently, the Selection widget in Basic UI doesn’t use the state options. + ## Notifications ### How To Set Up @@ -121,20 +166,9 @@ Currently, only favorites from the root level of the LMS favorites list are expo Squeeze Players can be set up as audio sinks in openHAB. Please follow the [openHAB multimedia documentation](http://docs.openhab.org/configuration/multimedia.html) for setup guidance. -You can create an item and sitemap entry in order to set the notification volume independently from the Squeeze Player's current volume setting. -If the notification volume is not specified, it will use the Player's current volume setting. +You can set the default notification volume in the player thing configuration. -Item for setting notification volume. - -``` -Dimmer NotificationVolume "Notification Volume [%d %%]" {channel="squeezebox:squeezeboxplayer:5919BEA2-764B-4590-BC70-D74DCC15491B:20cfbf221510:notificationSoundVolume"} -``` - -Sitemap entry for setting notification volume. - -``` -Slider item=NotificationVolume label="Notification Volume" -``` +You can override the default notification volume by supplying it as a parameter to `say` and `playSound`. You can play notifications from within rules. @@ -143,14 +177,14 @@ rule "Garage Door Open Notification" when Item GarageDoorOpenNotification received command ON then - // Play the notification on the default sink - say("The garage door is open!", "voicerss:enUS") + // Play the notification on the default sink at a specified volume level + say("The garage door is open!", "voicerss:enUS", 35) // Play the notification on a specific sink say("The garage door is open!", "voicerss:enUS", "squeezebox:squeezeboxplayer:5919BEA2-764B-4590-BC70-D74DCC15491B:20cfbf221510") end ``` -And, you can play sounds from the conf/sounds directory. +And, you can play sounds from the `conf/sounds` directory. ``` rule "Play Sounds" @@ -158,16 +192,23 @@ when Item PlaySounds received command ON then // Play the sound on the default sink - playsound("doorbell.mp3") - // Play the sound on a specific sink - playsound("squeezebox:squeezeboxplayer:5919BEA2-764B-4590-BC70-D74DCC15491B:20cfbf221510", "doorbell.mp3") + playSound("doorbell.mp3") + // Play the sound on a specific sink at a specified volume level + playSound("squeezebox:squeezeboxplayer:5919BEA2-764B-4590-BC70-D74DCC15491B:20cfbf221510", "doorbell.mp3", 45) end ``` ### Known Issues -- There are some versions of squeezelite that will not correctly play very short duration mp3 files. Versions of squeezelite after v1.7 and before v1.8.6 will not play very short duration mp3 files reliably. For example, if you're using piCorePlayer (which uses squeezelite), please check your version of squeezelite if you're having trouble playing notifications. This bug has been fixed in squeezelite version 1.8.6-985, which is included in piCorePlayer version 3.20. +- There are some versions of squeezelite that will not correctly play very short duration mp3 files. +Versions of squeezelite after v1.7 and before v1.8.6 will not play very short duration mp3 files reliably. +For example, if you're using piCorePlayer (which uses squeezelite), please check your version of squeezelite if you're having trouble playing notifications. +This bug has been fixed in squeezelite version 1.8.6-985, which is included in piCorePlayer version 3.20. - When streaming from a remote service (such as Pandora or Spotify), after the notification plays, the Squeezebox Server starts playing a new track, instead of picking up from where it left off on the currently playing track. -- There have been reports that notifications do not play reliably, or do not play at all, when using Logitech Media Server (LMS) version 7.7.5. Therefore, it is recommended that the LMS be on a more current version than 7.7.5. +- There have been reports that notifications do not play reliably, or do not play at all, when using Logitech Media Server (LMS) version 7.7.5. +Therefore, it is recommended that the LMS be on a more current version than 7.7.5. + +- There have been reports that the LMS does not play some WAV files reliably. +If you're using a TTS service that produces WAV files, and the notifications are not playing, try using an MP3-formatted TTS notification. diff --git a/_addons_bindings/tellstick/readme.md b/_addons_bindings/tellstick/readme.md index fb2803e7d..3a9677064 100644 --- a/_addons_bindings/tellstick/readme.md +++ b/_addons_bindings/tellstick/readme.md @@ -44,7 +44,7 @@ The attentive reader discovers that there is many missing sensor types; `UV`, `L Support have not been implemented on the openhab side yet, contributions are welcome. ***Switchbased sensors workaround***
-* Some 433MHz magnetic & PIR sensors for example magnetic door sensors are detected as a regular `switch` things instead of a separate type. There is technically no way of distinguish them apart from regulur `switch` things. +* Some 433MHz magnetic & PIR sensors, for example, magnetic door sensors, are detected as regular `switch` Things instead of type `contact`. There is technically no way of distinguish them apart from regulur `switch` Things. For using them as sensors only (not paired to a lamp) please consult the workaround in the channel section. ## Discovery @@ -57,16 +57,13 @@ If you want to use the *Telldus Live* its bridge, *Telldus Live bridge* need to ## Binding Configuration -***For USB connected tellsticks only, eg. Basic and DUO*** -First of all you need to make sure that your JVM is matching your installed Telldus Center. -This normally means openHab must run on a 32bit JVM for windows and a 64bit JVM for linux. -For windows the binding is hardcoded to look for Telldus Center in Programs Files ("C:/Program Files/Telldus/;C:/Program Files (x86)/Telldus/"). -If you have trouble getting the telldus core library to work you can modify the library path using +The binding itself requires no configuration. ## Thing Configuration Only the bridges require manual configuration. -The devices and sensors should not be added by hand, let the discovery/inbox initially configure these. +It is preferable that devices and sensors are discovered automatically; let the discovery/inbox initially configure them. +You can add them either with karaf: `inbox approve ` or by using the inbox of the Paper UI. ### Dimmers & switches @@ -80,10 +77,10 @@ The binding implements two different API: **1)** *Telldus Core* which is a local only interface supported by USB based device.
**2)** *Telldus Live* which is a REST based cloud service maintained by Telldus.
-> Not implemented yet but supported by some new devices:
+> Not implemented yet but supported by some new devices, contributions are welcome. [API documention.](http://api.telldus.net/localapi/api.html)
> **3)** *Local Rest API* is a local API which would work similar to Telldus Live but local. -Depending on your Tellstick model different API methods is available: +Depending on your Tellstick model, different bridge-types are available: @@ -93,18 +90,23 @@ Depending on your Tellstick model different API methods is available: -
Model Telldus Core Telldus Live Local REST API Verified working with openHAB
Tellstick Net v.2XX
Tellstick ZNet Lite v.1XXX
Tellstick ZNet Lite v.2XX
Tellstick ZNet Pro (Not released)XX
#### Telldus Core Bridge +> To enable communication between openhab and tellstick-core service (Telldus center) they must use same architecture, eg. 32-bit or 64-bit. The supplied version from Telldus is compiled against 32-bit architecture. Therefore, it is better to use 32-bit java for openHAB. To check which version of Java is currently in use, run: `java -d32 -version` +> +> *For changing architecture in linux check out: `dpkg --add-architecture`* + +The telldus-core bridge uses a library on the local computer which is a `.dll` file for Windows and a `.so` file for Linux. The default one is usually correct. + ``` -Bridge tellstick:telldus-core:1 "Tellstick Duo" [resendInterval=200] +Bridge tellstick:telldus-core:1 "Tellstick Duo" [resendInterval=200,libraryPath="C:/Program Files/Telldus/;C:/Program Files (x86)/Telldus/"] ``` Optional: -- **libraryPath:** The path to tellduscore.dll/so, +- **libraryPath:** The path to tellduscore.dll/so semicolon seperated list of folders. - **resendInterval:** The interval between each transmission of command in ms, default 100ms. #### Telldus Live Bridge @@ -129,7 +131,7 @@ Optional: ## Channels -Actuators ([dimmer]/[switch]) support the following channels: +Actuators (dimmer/switch) support the following channels: @@ -138,7 +140,7 @@ Actuators ([dimmer]/[switch]) support the following channels
Channel Type ID Item Type Description
timestampDateTimeThis channel reports the last time this device state changed.
-Sensors ([sensor]) support the following channels: +Sensors (sensor) support the following channels: @@ -183,20 +185,22 @@ end ### tellstick.things ``` -Bridge tellstick:telldus-core:1 "Tellstick Duo" [resendInterval=200] -Bridge tellstick:telldus-live:2 "Tellstick ZWave" [refreshInterval=10000, publicKey="XXXXXXXX", privateKey="YYYYYY", token= "ZZZZZZZZ", tokenSecret="UUUUUUUUUU"] +Bridge tellstick:telldus-core:1 "Tellstick Duo" [resendInterval=200] { + dimmer BedroomCeilingLamp1 [protocol="arctech",model="selflearning-dimmer",name="BedroomCeilingLamp1",deviceId="8"] + switch LivingTV [protocol="arctech",name="LivingTV",deviceId="5"] + sensor OutsideSensor1 [protocol="fineoffset",model="temperaturehumidity",name="temperaturehumidity:125",deviceId="125_temperaturehumidity_fineoffset"] +} +Bridge tellstick:telldus-live:2 "Tellstick ZWave" [refreshInterval=10000, publicKey="XXXXXXXX", privateKey="YYYYYY", token= "ZZZZZZZZ", tokenSecret="UUUUUUUUUU"] { + sensor OutsideSensor2 [protocol="fineoffset",model="temperaturehumidity",name="temperaturehumidity:120",deviceId="120_temperaturehumidity_fineoffset"] +} ``` -Devices are preferable discovered automatically. -Add them either with karaf: `inbox approve ` or in paperUI. The bridges can also be added with PaperUI. - ### tellstick.items -List available devices in karaf with `things` or get the channels in paperUI. +``` +Number OutsideSensor1_Temperture { channel="tellstick:sensor:tellstickgateway:OutsideSensor1:temperature"} +Number OutsideSensor1_Humidity { channel="tellstick:sensor:tellstickgateway:OutsideSensor1:humidity"} -``` -Slider living_room_ceiling "Living room ceiling" {channel="tellstick:dimmer:1:3:state"} -Switch living_room_table "Living room table" {channel="tellstick:switch:1:3:state"} -Number inside_temperature "Inside temperature [%.1f °C]" {channel="tellstick:sensor:1:47_temperaturehumidity_fineoffset:temperature"} -Number inside_humidity "Inside humidity [%.1f RH]" {channel="tellstick:sensor:1:47_temperaturehumidity_fineoffset:humidity"} +Switch LivingTV_Power { channel="tellstick:switch:tellstickgateway:LivingTV:switch"} +Dimmer BedroomCeilingLamp1_Brightness { channel="tellstick:dimmer:tellstickgateway:BedroomCeilingLamp1:dimmer"} ``` diff --git a/_addons_bindings/tinkerforge1/readme.md b/_addons_bindings/tinkerforge1/readme.md index a0eb34e7a..446602674 100644 --- a/_addons_bindings/tinkerforge1/readme.md +++ b/_addons_bindings/tinkerforge1/readme.md @@ -1542,7 +1542,7 @@ Technical description see [Tinkerforge Website](http://www.tinkerforge.com/en/do | property | description | values | |----------|--------------|--------| | uid | tinkerforge uid | same as bricklet | -| subid | openHAB subid of the device | in0, in2, in3, in4 | +| subid | openHAB subid of the device | in0, in1, in2, in3 | | type | openHAB type name | | ##### tinkerforge.cfg: @@ -1585,7 +1585,7 @@ Technical description see [Tinkerforge Website](http://www.tinkerforge.com/en/do | property | description | values | |----------|--------------|--------| | uid | tinkerforge uid | same as bricklet | -| subid | openHAB subid of the device | out0, out2, out3, out4 | +| subid | openHAB subid of the device | out0, out1, out2, out3 | | type | openHAB type name | | ##### tinkerforge.cfg: @@ -2076,7 +2076,7 @@ Technical description see [Tinkerforge Website](http://www.tinkerforge.com/en/do There are three sub devices: joystick_xposition, joystick_yposition and joystick_button. Callback period for xy position defaults to 10 milli seconds. CallbackPeriod must be configured -on bricklet_joystick device, because x and y position can not have +on bricklet_joystick device, because x and y position cannot have different callback periods. ##### Button diff --git a/_addons_bindings/vitotronic/readme.md b/_addons_bindings/vitotronic/readme.md index d5c15947b..6c9e76232 100644 --- a/_addons_bindings/vitotronic/readme.md +++ b/_addons_bindings/vitotronic/readme.md @@ -13,113 +13,113 @@ install: auto {% include base.html %} -# Vitotronic Binding - -Viessmann heating systems with Vitotronic has a optolink Interface for maintenance. -This interface can use for get/set data in the heating system. [see on openv](http://openv.wikispaces.com) - -The Vitotronic binding is a solution to bind this interface into openHAB2. -It supports the separation of the heating adaption from the integration in [openHAB2](http://www.openhab.org/). - -![Architectur](doc/architecture_vitotronic.jpg) - -The adapter transform the address oriented raw interface of the Vitotronic to a abstract format. -The adapter itself is not a part of the openhab2 binding. -[A alpha version is available here](https://github.com/steand/optolink) -[More Information about the adapter](https://github.com/steand/optolink/wiki) - -## Supported Things - -For easy using are the main things of a heating system are already define in this binding: - -* heating (Vitotronic core system) -* pelletburner (Pellet Fireplace, works for wood also) -* oilburner (Oil Fireplace) -* storagetank (Storage Tank, stores heat in a water tank on 3 levels: bottom, middle, top=hot water) -* circuit (Heating circuit controls the flow between the heating system and the radiators in the rooms) -* solar (Solar water heating (SWH): Convert sunlight into energy for water heating) - -For advanced used 3 basic things of a headingsystem define also. - -* temperaturesensor (Single temperature sensor) -* pump (Single pump) -* valve (Single valve) - -Note: The mapping of things and channels to the heating system addresses must be done in the adapter. - -## Discovery - -The binding discovers the adapter with broadcast and put the found `vitotronic:bridge` into the inbox. For automatic detection the adapter and **openHAB** must be on the same LAN. The discovery itself must be start in the Paper-UI. -If the bridge isn't on the same LAN the bridge can also add manually. In this case the `IP-Address` and the `adapterID` is required. -Íf the `vitotronic:bridge` added a second discovery will be start. It discovers all things, define in the adapter and put found things into the inbox. - -## Binding Configuration - -Binding itself has 4 configuration parameters: - -* ipAddress (The IP address of the Optolink adapter) -* port (Port of the LAN gateway. Default: 31113) -* adapterID (The ID/Name of the adapter) -* refreshInterval (Refresh time for data in seconds. Default: 600 seconds) - -If the adapter is automatic discovered the ipAddress, and adapterID will be set by discovery. -The rereshInterval can be set between 60 and 600 seconds. The minimal setting is dependent of the performance of the adapter. - - - -## Thing Configuration - -There is no configuration of Things necessary. Only some channels are set active by default. If this channels are defined in the adapter and will be used in **openHAB** it must set active manually. -Don't change the Thing Name. It is the reference to the name in the adapter. - -## Channels - -The follow channels are implemented: - -| Channel Type ID | Item Type | Description | -|------------------|-----------|-------------------------------------------------------| -| systemtime | DateTime | DateTime of the heating system | -| outside_temp | Number | Outside temperature sensor | -| boiler_temp | Number | Temperature sensor of boiler (fireplace) | -| flowuprating | Switch | Pump state of flow up rating | -| flame_temp | Number | Temperature of flame | -| airshutter_prim | Number | Position of the primary air shutter | -| airshutter_sec | Number | Position of the secondary air shutter | -| lambdasensor | Number | Oxygen content of the exhaust air | -| fanspeed | Number | Fan Speed in rpm | -| fanspeed_target | Number | Fan Speed in rpm | -| error | Switch | | -| starts | Number | Count of starts | -| ontime | Number | Ontime in hours | -| consumedpellets | Number | Consumed Pellets since start of heating in tons | -| power | Number | Power of the pellet burner | -| powerlevel | Number | Power of the oil burner | -| actualpower | Number | Actual power of the burner | -| ontimelevel1 | Number | Ontime in hours | -| ontimelevel2 | Number | Ontime in hours | -| consumedoil | Number | Consumed Oil since start of heating in Liter | -| hotwater_temp | Number | Temperature sensor of the hot water | -| middle_temp | Number | Temperature sensor in the middle of the storage tank | -| bottom_temp | Number | Temperature sensor at the bottom of the storage tank | -| circuitpump | Switch | Circuit pump state | -| flowtemperature | Number | Temperature sensor of the ciruit flow | -| pump | Switch | Pump state | -| operationmode | Number | Operationmode | -| savemode | Switch | Savemode on/off | -| partymode | Switch | Partymode on/off | -| party_temp | Number | Target temperature of party mode | -| room_temp | Number | Target temperature of rooms | -| save_temp | Number | Target temperature of save mode | -| gradient | Number | The gradient relativ to outside temperature | -| niveau | Number | The niveau relativ to outside temperature | -| collector_temp | Number | Actual temperature of the collector | -| storagetank_temp | Number | Actual temperature of the storage tank (solar sensor) | -| bufferload | Switch | State of the pump (on/off) | -| loadsuppression | Switch | State of the load suppression (on/off) | -| producedheat | Number | Produced heat since starting solar system | -| temperature | Number | Generic temperature sensor | -| valve | Number | Value of a generic valve | - -## Example - -t.b.d +# Vitotronic Binding + +Viessmann heating systems with Vitotronic has a optolink Interface for maintenance. +This interface can use for get/set data in the heating system. [see on openv](http://openv.wikispaces.com) + +The Vitotronic binding is a solution to bind this interface into openHAB2. +It supports the separation of the heating adaption from the integration in [openHAB2](http://www.openhab.org/). + +![Architectur](doc/architecture_vitotronic.jpg) + +The adapter transform the address oriented raw interface of the Vitotronic to a abstract format. +The adapter itself is not a part of the openhab2 binding. +[A alpha version is available here](https://github.com/steand/optolink) +[More Information about the adapter](https://github.com/steand/optolink/wiki) + +## Supported Things + +For easy using are the main things of a heating system are already define in this binding: + +* heating (Vitotronic core system) +* pelletburner (Pellet Fireplace, works for wood also) +* oilburner (Oil Fireplace) +* storagetank (Storage Tank, stores heat in a water tank on 3 levels: bottom, middle, top=hot water) +* circuit (Heating circuit controls the flow between the heating system and the radiators in the rooms) +* solar (Solar water heating (SWH): Convert sunlight into energy for water heating) + +For advanced used 3 basic things of a headingsystem define also. + +* temperaturesensor (Single temperature sensor) +* pump (Single pump) +* valve (Single valve) + +Note: The mapping of things and channels to the heating system addresses must be done in the adapter. + +## Discovery + +The binding discovers the adapter with broadcast and put the found `vitotronic:bridge` into the inbox. For automatic detection the adapter and **openHAB** must be on the same LAN. The discovery itself must be start in the Paper-UI. +If the bridge isn't on the same LAN the bridge can also add manually. In this case the `IP-Address` and the `adapterID` is required. +Íf the `vitotronic:bridge` added a second discovery will be start. It discovers all things, define in the adapter and put found things into the inbox. + +## Binding Configuration + +Binding itself has 4 configuration parameters: + +* ipAddress (The IP address of the Optolink adapter) +* port (Port of the LAN gateway. Default: 31113) +* adapterID (The ID/Name of the adapter) +* refreshInterval (Refresh time for data in seconds. Default: 600 seconds) + +If the adapter is automatic discovered the ipAddress, and adapterID will be set by discovery. +The rereshInterval can be set between 60 and 600 seconds. The minimal setting is dependent of the performance of the adapter. + + + +## Thing Configuration + +There is no configuration of Things necessary. Only some channels are set active by default. If this channels are defined in the adapter and will be used in **openHAB** it must set active manually. +Don't change the Thing Name. It is the reference to the name in the adapter. + +## Channels + +The follow channels are implemented: + +| Channel Type ID | Item Type | Description | +|------------------|-----------|-------------------------------------------------------| +| systemtime | DateTime | DateTime of the heating system | +| outside_temp | Number | Outside temperature sensor | +| boiler_temp | Number | Temperature sensor of boiler (fireplace) | +| flowuprating | Switch | Pump state of flow up rating | +| flame_temp | Number | Temperature of flame | +| airshutter_prim | Number | Position of the primary air shutter | +| airshutter_sec | Number | Position of the secondary air shutter | +| lambdasensor | Number | Oxygen content of the exhaust air | +| fanspeed | Number | Fan Speed in rpm | +| fanspeed_target | Number | Fan Speed in rpm | +| error | Switch | | +| starts | Number | Count of starts | +| ontime | Number | Ontime in hours | +| consumedpellets | Number | Consumed Pellets since start of heating in tons | +| power | Number | Power of the pellet burner | +| powerlevel | Number | Power of the oil burner | +| actualpower | Number | Actual power of the burner | +| ontimelevel1 | Number | Ontime in hours | +| ontimelevel2 | Number | Ontime in hours | +| consumedoil | Number | Consumed Oil since start of heating in Liter | +| hotwater_temp | Number | Temperature sensor of the hot water | +| middle_temp | Number | Temperature sensor in the middle of the storage tank | +| bottom_temp | Number | Temperature sensor at the bottom of the storage tank | +| circuitpump | Switch | Circuit pump state | +| flowtemperature | Number | Temperature sensor of the ciruit flow | +| pump | Switch | Pump state | +| operationmode | Number | Operationmode | +| savemode | Switch | Savemode on/off | +| partymode | Switch | Partymode on/off | +| party_temp | Number | Target temperature of party mode | +| room_temp | Number | Target temperature of rooms | +| save_temp | Number | Target temperature of save mode | +| gradient | Number | The gradient relativ to outside temperature | +| niveau | Number | The niveau relativ to outside temperature | +| collector_temp | Number | Actual temperature of the collector | +| storagetank_temp | Number | Actual temperature of the storage tank (solar sensor) | +| bufferload | Switch | State of the pump (on/off) | +| loadsuppression | Switch | State of the load suppression (on/off) | +| producedheat | Number | Produced heat since starting solar system | +| temperature | Number | Generic temperature sensor | +| valve | Number | Value of a generic valve | + +## Example + +t.b.d diff --git a/_addons_bindings/windcentrale/readme.md b/_addons_bindings/windcentrale/readme.md index 04ec81c62..1d4dbf7a9 100644 --- a/_addons_bindings/windcentrale/readme.md +++ b/_addons_bindings/windcentrale/readme.md @@ -31,34 +31,62 @@ No binding configuration required. ## Thing Configuration -The thing mandatory configuration is the selection of the mill. -Optional configuration is the number of wind shares ("Winddelen") and the refresh interval. +| Configuration Parameter | Required | Default | Description | +|-------------------------|----------|---------|-----------------------------------------------------| +| millId | X | 131 | Identifies the windmill (see table below) | +| wd | | 1 | Number of wind shares ("Winddelen") | +| refreshInterval | | 30 | Refresh interval for refreshing the data in seconds | + +| millId | Windmill name | +|--------|-------------------| +| 1 | De Grote Geert | +| 2 | De Jonge Held | +| 31 | Het Rode Hert | +| 41 | De Ranke Zwaan | +| 51 | De Witte Juffer | +| 111 | De Bonte Hen | +| 121 | De Trouwe Wachter | +| 131 | De Blauwe Reiger | +| 141 | De Vier Winden | +| 201 | De Boerenzwaluw | ## Channels -- **windSpeed** Measured current wind speed -- **windDirection** Current wind direction -- **powerAbsTot** Total power -- **powerAbsWd** Power provided for your wind shares -- **powerRel** Relative power -- **kwh** Current energy -- **kwhForecast** Energy forecast -- **runPercentage** Run percentage this year -- **timestamp** Timestamp of the last update - +| Channel Type ID | Item Type | Description | +|-----------------|----------------------|-------------------------------------| +| kwh | Number:Energy | Current energy | +| kwhForecast | Number:Energy | Energy forecast | +| powerAbsTot | Number:Power | Total power | +| powerAbsWd | Number:Power | Power provided for your wind shares | +| powerRel | Number:Dimensionless | Relative power | +| runPercentage | Number:Dimensionless | Run percentage this year | +| runTime | Number:Time | Run time this year | +| timestamp | DateTime | Timestamp of the last update | +| windDirection | String | Current wind direction | +| windSpeed | Number | Measured current wind speed (Bft) | ## Example -``` -Group gReiger "Windcentrale Reiger" +### demo.things -Number ReigerWindSpeed "Windsnelheid [%1.0f Bft]" (gReiger) {channel="windcentrale:mill:reiger:windSpeed") -String ReigerWindDirection "Windrichting [%s]" (gReiger) {channel="windcentrale:mill:reiger:windDirection") -Number ReigerPowerAbsTot "Productie molen [%1.0f kW]" (gReiger) {channel="windcentrale:mill:reiger:powerAbsTot") -Number ReigerPowerAbsWd "WD power [%1.0f W]" (gReiger) {channel="windcentrale:mill:reiger:powerAbsWd") -Number ReigerPowerRel "Productie vermogen [%1.0f %%]" (gReiger) {channel="windcentrale:mill:reiger:powerRel") -Number ReigerKwh "kwh [%1.0f]" (gReiger) {channel="windcentrale:mill:reiger:kwh") -Number ReigerKwhForecast "Productie forecast [%1.0f]" (gReiger) {channel="windcentrale:mill:reiger:kwhForecast") -Number ReigerRunPercentage "Run percentage [%1.0f %%]" (gReiger) {channel="windcentrale:mill:reiger:runPercentage") -Number ReigerTimestamp "Update timestamp [%1$ta %1$tR]" (gReiger) {channel="windcentrale:mill:reiger:timestamp") +``` +Thing windcentrale:mill:geert [ millId=1 ] +Thing windcentrale:mill:reiger [ millId=131, wd=3, refreshInterval=60 ] +``` + +### demo.items + +``` +Group gReiger "Windcentrale Reiger" + +Number ReigerWindSpeed "Wind speed [%d Bft]" (gReiger) { channel="windcentrale:mill:reiger:windSpeed" } +String ReigerWindDirection "Wind direction [%s]" (gReiger) { channel="windcentrale:mill:reiger:windDirection" } +Number:Power ReigerPowerAbsTot "Total mill power [%.1f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:powerAbsTot" } +Number:Power ReigerPowerAbsWd "Wind shares power [%.1f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:powerAbsWd" } +Number:Dimensionless ReigerPowerRel "Relative power [%.1f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:powerRel" } +Number:Energy ReigerKwh "Current energy [%.0f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:kwh" } +Number:Energy ReigerKwhForecast "Energy forecast [%.0f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:kwhForecast" } +Number:Dimensionless ReigerRunPercentage "Run percentage [%.1f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:runPercentage" } +Number:Time ReigerRunTime "Run time [%.0f %unit%]" (gReiger) { channel="windcentrale:mill:reiger:runTime" } +DateTime ReigerTimestamp "Update timestamp [%1$ta %1$tR]" (gReiger) { channel="windcentrale:mill:reiger:timestamp" } ``` diff --git a/_addons_bindings/zwave1/readme.md b/_addons_bindings/zwave1/readme.md index 01202a5c6..79b23d5d9 100644 --- a/_addons_bindings/zwave1/readme.md +++ b/_addons_bindings/zwave1/readme.md @@ -97,7 +97,7 @@ If you're not sure about endpoint numbering, look in the logs to see if sensor d This indicates that the binding can’t find an item linked to this sensor - often this is because the endpoint numbering is incorrect. If the warning above says endpoint = 0, then the binding string shouldn't include an endpoint number. -The `` is optional, but recommended if you have multiple items bound to the same device, or the device reports multiple bits of information. Without the command class, the binding can not unambiguously differentiate different data, so it is recommended to provide a command class. Z-Wave nodes support functionality through command classes. A specific command class can be specified to use that specific functionality of the node. A node can contain multiple supported command classes. If the command is omitted, the best suitable command class for the item / node combination is automatically chosen. +The `` is optional, but recommended if you have multiple items bound to the same device, or the device reports multiple bits of information. Without the command class, the binding cannot unambiguously differentiate different data, so it is recommended to provide a command class. Z-Wave nodes support functionality through command classes. A specific command class can be specified to use that specific functionality of the node. A node can contain multiple supported command classes. If the command is omitted, the best suitable command class for the item / node combination is automatically chosen. Command classes may support parameters. A parameter is a name=value pair that configures some aspect of the command class on the node or in the binding. diff --git a/_addons_bindings/zway/doc/GETTING_STARTED.md b/_addons_bindings/zway/doc/GETTING_STARTED.md index 2d38a0323..6dc499fbd 100644 --- a/_addons_bindings/zway/doc/GETTING_STARTED.md +++ b/_addons_bindings/zway/doc/GETTING_STARTED.md @@ -3,17 +3,6 @@ # Prepare Z-Way Server 1. [Download](https://razberry.z-wave.me/z-way-server/) Z-Way v2.2.3 or newer (further information about installing Z-Way you can find [here](http://razberry.z-wave.me/index.php?id=24)) -2. Install openHAB Connector - - via "ZWave.Me App Store" - - via Git - - ```shell - cd /opt/z-way-server/automation/userModules - git clone https://github.com/pathec/ZWay-OpenHABConnector.git OpenHABConnector - service z-way-server restart - ``` - -3. Instantiate the app once (under Configuration - Apps - Local Apps). Important: Change the selection from "Featured Apps" to "All Apps" to make the app visible. It is not necessary to make the configuration manually. # Prepare openHAB @@ -52,11 +41,6 @@ Open the *Configuration* - *Things* and select Z-Way Server Change configuration: In order for the Observer mechanism works, the IP address, port and protocol of both systems are required. -- **openHAB** - - **openHAB Alias** by default, the alias is generated - - **IP address** (default: localhost) - - **port** (default: 8080) - - **protocol** (default: http) - **Z-Way Server** - **IP address** (default: localhost) - **port** (default: 8083) @@ -65,8 +49,8 @@ Change configuration: In order for the Observer mechanism works, the IP address, - **password** must be set (no default value) - **options** - **polling interval** (default: 3600) in seconds - - **Observer mechanism** (default: active) +**The following picture is no longer up to date!** ![openHAB Thing settings](images/getting-started/06-Bridge-settings.png) ## Create and configure Z-Way Devices diff --git a/_addons_bindings/zway/readme.md b/_addons_bindings/zway/readme.md index 794e46b0a..b6f551558 100644 --- a/_addons_bindings/zway/readme.md +++ b/_addons_bindings/zway/readme.md @@ -77,27 +77,21 @@ But the configuration and properties of things are changed at runtime and channe ### Z-Way Server (Bridge) -The information about accessing openHAB are needed so that the Observer mechanism works. Besides the username and password all required Z-Way information are found during discovery. | Configuration Name | Mandatory | Default | Desciption | |--------------------------|-----------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| openHABAlias | | | By default, the alias is generated during initialization or configuration update of thing handler. | -| openHABIpAddress | | localhost | The IP address or hostname of the openHAB server. If Z-Way and openHAB are running on the same machine, the default value can be used. | -| openHABPort | | 8080 | The port of the openHAB server (0 to 65335) | -| openHABProtocol | | http | Protocol to connect to the openHAB server (http or https) | | zwayServerIpAddress | | localhost | The IP address or hostname of the Z-Way server. If Z-Way and openHAB are running on the same machine, the default value can be used. | | zwayServerPort | | 8083 | The port of the Z-Way server (0 to 65335) | | zwayServerProtocol | | http | Protocol to connect to the Z-Way server (http or https) | | zwayServerUsername | | admin | Username to access the Z-Way server. | | zwayServerPassword | X | | Password to access the Z-Way server. | | pollingInterval | | 3600 | Refresh device states and registration from Z-Way server in seconds (at least 60). | -| observerMechanismEnabled | | true | The observer functionality is responsible for the item registration as observer in Z-Way. Attention: if disable this option, you have to setup an other synchronization mechanism like MQTT. | -Only the Z-Way server can be configured textual (Attention! *openHABAlias* has to be set because the bridge configuration can not be changed at runtime): +Only the Z-Way server can be configured textual: ``` -Bridge zway:zwayServer:192_168_2_42 [ openHABAlias="development", openHABIpAddress="localhost", openHABPort=8080, openHABProtocol="http", zwayServerIpAddress="localhost", zwayServerPort=8083, zwayServerProtocol="http", zwayServerUsername="admin", zwayServerPassword="admin", pollingInterval=3600, observerMechanismEnabled=true ] { +Bridge zway:zwayServer:192_168_2_42 [ zwayServerIpAddress="localhost", zwayServerPort=8083, zwayServerProtocol="http", zwayServerUsername="admin", zwayServerPassword="admin", pollingInterval=3600 ] { // associated things have to be created with the Paper UI } ``` @@ -171,22 +165,12 @@ Unsupported Z-Way device types: Camera, SensorMultiline, Text. The integration o ### Channels for the Z-Way Server (Bridge) - -Markdown Table Formatter - -This tool formats basic MultiMarkdown style tables for easier plain text reading. -It adds padding to all the cells to line up the pipe separators when using a mono-space font. - -To see what it's all about, try one of these examples, or format your own. - -Load: Example 1 - Example 2 - Example 3 - -For more information: -I'm on Twitter as @TheIdOfAlan -I sometimes post on my personal site alanwsmith.com -This is an Open Source GitHub Project. -It has a Jasmine Test Suite. -What to show your appreciation? Buy me a book +-| Channel Type ID | Item Type | Category | Description | +-| --------------- | --------- | -------- | ----------- | +-| actions | String | - | It is currently possible to update all devices. | +-| secureInclusion | Switch | Switch | Change inclusion type for further inclusions. | +-| inclusion | Switch | Switch | Start inclusion mode (after a timeout the inclusion will be automatically finished). | +-| exclusion | Switch | Switch | Start exclusion mode (after a timeout the exclusion will be automatically finished). || ## Locations @@ -217,7 +201,7 @@ Because textual configuration isn't useful, follow the instructions in the [Gett - Z-Way device types (especially the probe types) supported by openHAB channels with detailed information (scale types and so on) are not complete. - Configuration of the Z-Wave network by the binding is currently not possible (physical device configuration) -- Z-Way App "openHAB Connector" is required. Further versions will contain other mechanisms under usage of the WebSocket implementation of Z-Way or MQTT. +- Only polling is available. Further versions will contain other mechanisms under usage of the WebSocket implementation of Z-Way or MQTT.
diff --git a/_addons_iconsets/classic/icons/lightbulb.svg b/_addons_iconsets/classic/icons/lightbulb.svg new file mode 100644 index 000000000..a2797c506 --- /dev/null +++ b/_addons_iconsets/classic/icons/lightbulb.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_addons_iconsets/classic/icons/whitegood.svg b/_addons_iconsets/classic/icons/whitegood.svg new file mode 100644 index 000000000..f06749ae8 --- /dev/null +++ b/_addons_iconsets/classic/icons/whitegood.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_addons_ios/homekit/readme.md b/_addons_ios/homekit/readme.md index fa1d40e5e..38dada780 100644 --- a/_addons_ios/homekit/readme.md +++ b/_addons_ios/homekit/readme.md @@ -30,7 +30,7 @@ Requirements beyond this are not clear, and Apple enforces limitations on eligib At the very least, you cannot use repeating (111-11-111) or sequential (123-45-678) pin codes. If your home network is secure, a good starting point is the pin code used in most sample applications: 031-45-154. -Other settings, such as using Fahrenheit temperatures, customizing the thermostat heat/cool/auto modes, and specifying the interface to advertise the Homekit bridge on are also illustrated in the following sample: +Other settings, such as using Fahrenheit temperatures, customizing the thermostat heat/cool/auto modes, and specifying the interface to advertise the Homekit bridge (which can be edited in PaperUI standard mode) are also illustrated in the following sample: ``` org.openhab.homekit:port=9124 @@ -41,8 +41,31 @@ org.openhab.homekit:thermostatHeatMode=HeatOn org.openhab.homekit:thermostatAutoMode=Auto org.openhab.homekit:thermostatOffMode=Off org.openhab.homekit:networkInterface=192.168.0.6 +``` + +The following additional settings can be added or edited in PaperUI after switching to expert mode: ``` +org.openhab.homekit:name=openHAB +org.openhab.homekit:minimumTemperature=-100 +org.openhab.homekit:maximumTemperature=100 +``` + +### Overview of all settings + +| Setting | Description | Default value | +|-------------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |--------------- | +| networkInterface | IP address or domain name under which the HomeKit bridge can be reached. If no value is configured, the addon tries to determine the IP address from the local hostname. | (none) | +| port | Port under which the HomeKit bridge can be reached. | 9123 | +| pin | Pin code used for pairing with iOS devices. Apparently, pin codes are provided by Apple and represent specific device types, so they cannot be chosen freely. The pin code 031-45-154 is used in sample applications and known to work. | 031-45-154 | +| useFahrenheitTemperature | Set to true to use Fahrenheit degrees, or false to use Celsius degrees. | false | +| thermostatCoolMode | Word used for activating the cooling mode of the device (if applicable). | CoolOn | +| thermostatHeatMode | Word used for activating the heating mode of the device (if applicable). | HeatOn | +| thermostatAutoMode | Word used for activating the automatic mode of the device (if applicable). | Auto | +| thermostatOffMode | Word used to set the thermostat mode of the device to off (if applicable). | Off | +| minimumTemperature | Lower bound of possible temperatures, used in the user interface of the iOS device to display the allowed temperature range. Note that this setting applies to all devices in HomeKit. | -100 | +| maximumTemperature | Upper bound of possible temperatures, used in the user interface of the iOS device to display the allowed temperature range. Note that this setting applies to all devices in HomeKit. | 100 | +| name | Name under which this HomeKit bridge is announced on the network. This is also the name displayed on the iOS device when searching for available bridges. | openHAB | ## Item Configuration @@ -55,62 +78,16 @@ Complex accessories require a tag on a Group indicating the accessory type, as w A full list of supported accessory types can be found in the table below. -
Channel Type ID Item Type Description
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tagchild tagsupported itemsdescription
Lighting Switch, Dimmer, ColorA lightbulb, switchable, dimmable or rgb
Switchable Switch, Dimmer, ColorAn accessory that can be turned off and on. While similar to a lightbulb, this will be presented differently in the Siri grammar and iOS apps
CurrentTemperature NumberAn accessory that provides a single read-only temperature value. The units default to celsius but can be overridden globally using the useFahrenheitTemperature global property
CurrentHumidity NumberAn accessory that provides a single read-only value indicating the relative humidity.
Thermostat GroupA thermostat requires all child tags defined below
 CurrentTemperatureNumberThe current temperature, same as above
 homekit:HeatingCoolingModeStringIndicates the current mode of the device: OFF, AUTO, HEAT, COOL. The string's value must match those defined in the thermostat*Mode properties. This is a homekit-specific term and therefore the tags needs to be prefixed with "homekit:"
 TargetTemperatureNumberA target temperature that will engage the thermostat's heating and cooling actions as necessary, depending on the heatingCoolingMode
+| Tag | Child tag | Supported items | Description | +|-------------------- |---------------------------- |----------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Lighting | | Switch, Dimmer, Color | A lightbulb, switchable, dimmable or rgb | +| Switchable | | Switch, Dimmer, Color | An accessory that can be turned off and on. While similar to a lightbulb, this will be presented differently in the Siri grammar and iOS apps | +| CurrentTemperature | | Number | An accessory that provides a single read-only temperature value. The units default to celsius but can be overridden globally using the useFahrenheitTemperature global property | +| CurrentHumidity | | Number | An accessory that provides a single read-only value indicating the relative humidity. | +| Thermostat | | Group | A thermostat requires all child tags defined below | +| | CurrentTemperature | Number | The current temperature, same as above | +| | homekit:HeatingCoolingMode | String | Indicates the current mode of the device: OFF, AUTO, HEAT, COOL. The string's value must match those defined in the thermostat*Mode properties. This is a homekit-specific term and therefore the tags needs to be prefixed with "homekit:" | +| | TargetTemperature | Number | A target temperature that will engage the thermostat's heating and cooling actions as necessary, depending on the heatingCoolingMode | See the sample below for example items: @@ -139,3 +116,4 @@ If you encounter any issues with the add-on and need support, it may be importan In order to get logs from the underlying library used to implement the HomeKit protocol, enable trace logging using the following command: ```openhab> log:set TRACE com.beowulfe.hap``` + diff --git a/_addons_transformations/scale/readme.md b/_addons_transformations/scale/readme.md index 86d2b5473..efc3e8551 100644 --- a/_addons_transformations/scale/readme.md +++ b/_addons_transformations/scale/readme.md @@ -63,4 +63,4 @@ The only condition here is that the received value has to be lower or equal than If **none** of the configured conditions matches the given value, the response will be empty. Please note that all ranges for values above **3** are opened with a `]`. -So the border values (3, 6, 8 and 10) are always transformed to the lower range, since the `]` excludes the given critera. \ No newline at end of file +So the border values (3, 6, 8 and 10) are always transformed to the lower range, since the `]` excludes the given critera. diff --git a/_addons_transformations/xpath/readme.md b/_addons_transformations/xpath/readme.md index 8016cbf44..844f425c4 100644 --- a/_addons_transformations/xpath/readme.md +++ b/_addons_transformations/xpath/readme.md @@ -115,4 +115,4 @@ Now the resulting Number can also be used in the label to [change the color](htt * An [introduction](https://www.w3schools.com/xml/xpath_intro.asp) to XPath at W3School * A informative explanation of [common mistakes](https://qxf2.com/blog/common-xpath-mistakes/). -* Online validation tools like [this](https://www.freeformatter.com/xpath-tester.html) to check the syntax. \ No newline at end of file +* Online validation tools like [this](https://www.freeformatter.com/xpath-tester.html) to check the syntax. diff --git a/_addons_uis/paper/readme.md b/_addons_uis/paper/readme.md index c83287b3e..163776721 100644 --- a/_addons_uis/paper/readme.md +++ b/_addons_uis/paper/readme.md @@ -41,4 +41,4 @@ Google's Material Design approach uses so called "cards", which looks like paper ### Why does it not support sitemaps? -Sitemaps require the Xtext DSL. The Paper UI aims to provide a full UI-only experience without any need for modifying configuration files. Thus the Paper UI can not make use of Sitemaps now, until it is refactored to have DSL support optional as it was done for items and things. \ No newline at end of file +Sitemaps require the Xtext DSL. The Paper UI aims to provide a full UI-only experience without any need for modifying configuration files. Thus the Paper UI can not make use of Sitemaps now, until it is refactored to have DSL support optional as it was done for items and things. diff --git a/addons/uis/apps/android.md b/addons/uis/apps/android.md index 9a48094e0..d947e0d95 100644 --- a/addons/uis/apps/android.md +++ b/addons/uis/apps/android.md @@ -16,6 +16,9 @@ The app follows the basic principles of the other openHAB UIs, like Basic UI, an Get it on Google Play + + Get it on F-Droid + ## Features diff --git a/addons/uis/apps/images/get-it-on-fdroid.png b/addons/uis/apps/images/get-it-on-fdroid.png new file mode 100644 index 000000000..23af0e408 Binary files /dev/null and b/addons/uis/apps/images/get-it-on-fdroid.png differ diff --git a/concepts/guidelines.md b/concepts/guidelines.md index 206ab989d..af73af3b4 100644 --- a/concepts/guidelines.md +++ b/concepts/guidelines.md @@ -26,20 +26,7 @@ To speed up the contribution process, we therefore advice to go through this che 1. For dependency injection, OSGi Declarative Services should be used. 1. OSGi Declarative Services should be declared using annotations. The IDE will take care of the service *.xml file creation. See the official OSGi documentation for an [example here](http://enroute.osgi.org/services/org.osgi.service.component.html). We always use `@Activate`, `@Deactivate` and `@Modified` if we define these methods, even if they exist in a super class, to make the code more readable. 1. Packages that contain classes that are not meant to be used by other bundles should have "internal" in their package name. -1. [Null annotations](https://wiki.eclipse.org/JDT_Core/Null_Analysis) are used from the Eclipse JDT project. Therefore every bundle should have an **optional** `Import-Package` dependency to `org.eclipse.jdt.annotation`. -Classes should be annotated by `@NonNullByDefault` and return types, parameter types, generic types etc. are annotated with `@Nullable` only. -Fields that get a static and mandatory reference injected through OSGi Declarative Services can be annotated with - -```java -@NonNullByDefault({}) -private MyService injectedService; -``` - -to skip the nullevaluation for these fields. -Fields within `ThingHandler` classes that are initialized within the `initialize()` method may also be annotated like this, because the framework ensures that `initialize()` will be called before any other method. However please watch the scenario where the initialization of the handler fails, because then fields might not have been initialized and using them should be prepended by a `null` check. -There is **no need** for a `@NonNull` annotation because it is set as default. -The transition of existing classes could be a longer process but if you want to use nullness annotation in a class / interface you need to set the default for the whole class and annotate all types that differ from the default. -Test classes do not have to be annotated. +1. [Null annotations](https://wiki.eclipse.org/JDT_Core/Null_Analysis) are used from the Eclipse JDT project. `@NonNullByDefault` and `@Nullable` should be used, for details see [Null annotation conventions](conventions.html#null-annotations). ## B. OSGi Bundles @@ -63,7 +50,7 @@ Test classes do not have to be annotated. 1. A few common utility libraries are available that every Eclipse SmartHome based solution has to provide and which can be used throughout the code (and which are made available in the target platform): - Apache Commons IO (v2.2) - Apache Commons Lang (v2.6) - - Google Guava (v10.0.1) + - ~~Google Guava (v10.0.1)~~ (historically allowed, to be avoided in new contributions) ## D. Runtime Behavior diff --git a/concepts/items.md b/concepts/items.md index 2cc20854c..9c29c3543 100644 --- a/concepts/items.md +++ b/concepts/items.md @@ -137,3 +137,23 @@ Here is a short table demonstrating conversions for the examples above: | Color | `HSBType` | • `OnOffType` - `OFF` if the brightness level in the `HSBType` equals 0, `ON` otherwise
• `PercentType` - the value for the brightness level in the `HSBType` | | Dimmer | `PercentType` | `OnOffType` - `OFF` if the brightness level indicated by the percent type equals 0, `ON` otherwise | | Rollershutter | `PercentType` | `UpDownType` - `UP` if the shutter level indicated by the percent type equals 0, `DOWN` if it equals 100, and `UnDefType.UNDEF` for any other value| + +## Item Metadata + +Sometimes additional information is required to be attached to items for certain use-cases. +This could be e.g. an application which needs some hints in order to render the items in a generic way or an integration with voice controlled assistants or any other services which access the items and need to understand their "meaning". + +For this purpose, such meta-information can be attached to items using disjunct namespaces so they won't conflict with each other. +Each metadata entry has a main value and optionally additional key/value pairs. +There can be metadata attached to an item for as many namespaces as desired, like in the following example: + + Switch "My Fan" { homekit="Fan.v2", alexa="Fan" [ type="oscillating", speedSteps=3 ] } + +The metadata can alternatively maintained via a dedicated REST endpoint and is included in the `EnrichedItemDTO` responses. + +Extensions which can infer some metadata automatically need to implement an register a `MetadataProvider` service in order to make them available to the system. +They may provision them from any source they like and also dynamically remove or add data. +They are also not restricted to a single namespace. + +The `MetadataRegistry` provides access for all extensions which need to read the item metadata programmatically. +It is the central place where additional information about items is kept. diff --git a/concepts/things.md b/concepts/things.md index 127bc1b0b..0953bf6e4 100644 --- a/concepts/things.md +++ b/concepts/things.md @@ -45,7 +45,6 @@ The following table provides an overview of the different statuses: | UNKNOWN | The handler is fully initialized but due to the nature of the represented device/service it cannot really tell yet whether the thing is ONLINE or OFFLINE. Therefore the thing potentially might be working correctly already and may or may not process commands. But the framework is allowed to send commands, because some radio-based devices may go ONLINE if a command is sent to them. The handler should take care to switch the thing to ONLINE or OFFLINE as soon as possible. | | ONLINE | The device/service represented by a thing is assumed to be working correctly and can process commands. | | OFFLINE | The device/service represented by a thing is assumed to be not working correctly and may not process commands. But the framework is allowed to send commands, because some radio-based devices may go back to ONLINE, if a command is sent to them. | -| GONE | The device has been removed from the bridge or the network to which it belongs and is no longer available for use. The user can now remove the thing from the system. | | REMOVING | The device/service represented by a thing should be removed, but the binding did not confirm the deletion yet. Some bindings need to communicate with the device to unpair it from the system. Thing is probably not working and commands can not be processed. | | REMOVED | This status indicates that the device/service represented by a thing was removed from the external system after the REMOVING was initiated by the framework. Usually this status is an intermediate status because the thing gets removed from the database after this status was assigned. | @@ -82,12 +81,13 @@ The following table lists the different status details for each status: UNKNOWN NONENo further status details available. ONLINE NONENo further status details available. CONFIGURATION_PENDINGThe thing is waiting to transfer configuration information to a device. Some bindings need to communicate with the device to make sure the configuration is accepted. -OFFLINE NONENo further status details available. +OFFLINE NONENo further status details available. COMMUNICATION_ERRORError in communication with the device. This may also be only a temporary error. CONFIGURATION_ERRORAn issue with the configuration of a thing prevents the communication with the represented device or service. This issue might be solved by reconfiguring the thing. BRIDGE_OFFLINEAssuming the thing to be offline because the corresponding bridge is offline. FIRMWARE_UPDATINGThe thing is currently operating a firmware update. DUTY_CYCLEThe thing is currently in DUTY_CYCLE state, which means it is blocked for further usage. + GONEThe thing has been removed from the bridge or the network to which it belongs and is no longer available for use. The user can now remove the thing from the system. REMOVING NONENo further status details available. REMOVED NONENo further status details available.