|
@ -19,8 +19,8 @@ This binding integrates devices compatible with [Qualcomm AllPlay](https://www.q
|
|||
The binding uses native libraries for the AllJoyn framework. Libraries for the following platforms are already included in the binding:
|
||||
|
||||
* Linux ARM
|
||||
* Linux x86 (32 bit)
|
||||
* Linux x86-64 (64 bit)
|
||||
* Linux x86 (32 bit, AllJoyn v16.04a)
|
||||
* Linux x86-64 (64 bit, AllJoyn v16.04a)
|
||||
* Windows x86 (32 bit, AllJoyn v16.04a)
|
||||
* Windows x86-64 (64 bit, AllJoyn v16.04a)
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ The binding integrates the AHA ( [AVM Home Automation](http://avm.de/ratgeber/sm
|
|||
|
||||
### FRITZ!Box
|
||||
|
||||
The well known FRITZ!Boxes are supported as bridge for accessing other AHA devices. It is planned to support some channels directly at the bridge like call monitoring and others - but these things are under current development by now. The Box has to run at least on firmware FRITZ!OS 6.00 and hast to support the "Smart Home" service.
|
||||
The well known FRITZ!Boxes are supported as bridge for accessing other AHA devices. It is planned to support some channels directly at the bridge like call monitoring and others - but these things are under current development by now. The Box has to run at least on firmware FRITZ!OS 6.00 and has to support the "Smart Home" service.
|
||||
|
||||
### FRITZ!DECT 200 / FRITZ!DECT 210
|
||||
|
||||
|
@ -36,6 +36,10 @@ This [DECT repeater](https://avm.de/produkte/fritzdect/fritzdect-repeater-100/)
|
|||
|
||||
This [powerline adapter](http://avm.de/produkte/fritzpowerline/fritzpowerline-546e/) can be used via the bridge or in standalone mode. It supports switching the outlet and current power and energy consumption readings. This device does not contain a temperature sensor.
|
||||
|
||||
### FRITZ!DECT 300 / Comet DECT
|
||||
|
||||
These two devices [FRITZ!DECT 300](https://avm.de/produkte/fritzdect/fritzdect-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.
|
||||
|
||||
## Discovery
|
||||
|
||||
The FRITZ!Box and the powerline adapter are discovered through UPNP in the local network. When added as things, a username/password has eventually to be set depending on your Box/Powerline security configuration. The credentials given in the settings must have HomeAuto permissions.
|
||||
|
@ -70,23 +74,33 @@ If correct credentials are set in the bridge configuration, connected AHA device
|
|||
|
||||
* AIN (mandatory), no default (AIN number of device)
|
||||
|
||||
## Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description | Available on thing |
|
||||
|-------------|--------|-----------------------------|------------------------------------|
|
||||
| temperature | Number | Actual measured temperature (in °C) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!DECT Repeater 100 |
|
||||
| energy | Number | Accumulated energy consumption (in Wh) | 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 |
|
||||
## Supported Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description | Available on thing |
|
||||
|-----------------|-----------|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
|
||||
| temperature | Number | Actual measured temperature (in °C) | FRITZ!DECT 210, FRITZ!DECT 200, FRITZ!DECT Repeater 100, 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 300, Comet DECT |
|
||||
| set_temp | Number | Set Temperature of heating thermostat (in °C) | FRITZ!DECT 300, Comet DECT |
|
||||
| eco_temp | Number | Eco Temperature of heating thermostat (in °C) | FRITZ!DECT 300, Comet DECT |
|
||||
| comfort_temp | Number | Comfort Temperature of heating thermostat (in °C) | 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 300, Comet DECT |
|
||||
| next_tmep | Number | Next Set Temperature if scheduler is activated in the FRITZ!Box settings (in °C) - FRITZ!OS 6.80 | FRITZ!DECT 300, Comet DECT |
|
||||
| battery_low | Switch | Battery Level Low (ON/OFF) - FRITZ!OS 6.80 | FRITZ!DECT 300, Comet DECT |
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
demo.Things:
|
||||
demo.things:
|
||||
|
||||
```
|
||||
Bridge avmfritz:fritzbox:1 [ ipAddress="192.168.xxx.xxx", password ="xxx", user="xxx" ] {
|
||||
FRITZ_DECT_200 DECT1 [ ain="xxxxxxxxxxx" ]
|
||||
FRITZ_Powerline_546E PL1 [ ain="yy:yy:yy:yy:yyy" ]
|
||||
Comet_DECT CD1 [ ain="aaaaaabbbbbb" ]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -99,6 +113,12 @@ Number Energy1 "Accumulated energy consumption [%.3f Wh]" { channel="avmfritz:FR
|
|||
Number Power1 "Current power consumption [%.2f W]" { channel="avmfritz:FRITZ_DECT_200:1:DECT1:power" }
|
||||
|
||||
Switch Outlet2 { channel="avmfritz:FRITZ_Powerline_546E:1:PL1:outlet" }
|
||||
|
||||
Group gCOMETDECT "Comet DECT heating thermostat" <temperature>
|
||||
|
||||
Number COMETDECTActualTemp "Actual measured temperature [%.1f °C]" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:CD1:actual_temp" }
|
||||
Number COMETDECTSetTemp "Thermostat temperature setpoint [%.1f °C]" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:CD1:set_temp" }
|
||||
Switch COMETDECTBattery "Battery low" (gCOMETDECT) { channel="avmfritz:Comet_DECT:1:CD1:battery_low" }
|
||||
```
|
||||
|
||||
demo.sitemap:
|
||||
|
@ -115,5 +135,10 @@ sitemap demo label="Main Menu"
|
|||
Frame label="FRITZ!Powerline 546E switchable outlet" {
|
||||
Switch item=Outlet2
|
||||
}
|
||||
Frame "Comet DECT heating thermostat" {
|
||||
Text item=COMETDECTActualTemp icon="temperature"
|
||||
Setpoint item=COMETDECTSetTemp minValue=8.0 maxValue=28.0 step=0.5 icon="temperature"
|
||||
Switch item=COMETDECTBattery icon="battery"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
---
|
||||
id: bigassfan
|
||||
label: BigAssFan
|
||||
title: BigAssFan - Bindings
|
||||
type: binding
|
||||
description: "The [BigAssFan](http://www.bigassfans.com/) binding is used to enable communication between openHAB and Big Ass Fans' Haiku family of residential fans that implement the SenseME technology."
|
||||
since: 2x
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# BigAssFan Binding
|
||||
|
||||
The [BigAssFan](http://www.bigassfans.com/) binding is used to enable communication between openHAB and Big Ass Fans' Haiku family of residential fans that implement the SenseME technology.
|
||||
|
||||
## Overview
|
||||
|
||||
Fans are discovered dynamically. There is a single thing created for each fan connected to the network. Each thing has channels that allow control of the fan and the optional LED light, as well as to monitor the status of the fan. When the fan is controlled from the remote control, Wall Controller, or smartphone app, the openHAB items linked to the fan's channels will be updated to reflect the fan's status.
|
||||
|
||||
|
||||
## Device Discovery
|
||||
|
||||
The BigAssFan binding discovers Haiku fans on the network, and creates an inbox entry for each discovered device. Once added as a thing, the user can control the fan and optional LED light kit, similarly to how the fan is controlled using the remote, Wall Controller, or smartphone app.
|
||||
|
||||
Background discovery polls the network every few minutes for fans. Background discovery is **enabled** by default. To **disable** background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
||||
|
||||
```
|
||||
org.openhab.binding.bigassfan.discovery.BigAssFanDiscoveryService:backgroundDiscovery.enabled=false
|
||||
```
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The fan's IP address, MAC address, and name is set at time of discovery. However, in the event that any of this information changes, the fan's configuration must be updated.
|
||||
|
||||
#### Manual Thing Creation
|
||||
|
||||
Fans can be manually created in the *PaperUI* or *HABmin*, or by placing a *.things* file in the *conf/things* directory. See example below.
|
||||
|
||||
## Channels
|
||||
|
||||
The following channels are supported:
|
||||
|
||||
All devices support some of the following channels:
|
||||
|
||||
| Channel Name | Item Type | Description |
|
||||
|-------------------------|--------------|-------------------------------------------------|
|
||||
| fan-power | Switch | Power on/off the fan |
|
||||
| fan-speed | Dimmer | Adjust the speed of the fan |
|
||||
| fan-direction | Switch | Change the direction in which the fan turns |
|
||||
| fan-auto | Switch | Enable/disable fan auto mode |
|
||||
| fan-whoosh | Switch | Enable/disable fan "whoosh" mode |
|
||||
| fan-smartmode | String | Set Smartmode to HEATING, COOLING, or OFF |
|
||||
| fan-speed-min | Dimmer | Set minimum fan speed for Smartmode COOLING |
|
||||
| fan-speed-max | Dimmer | Set maximum fan speed for Smartmode COOLING |
|
||||
| light-power | Switch | Power on/off the fan |
|
||||
| light-level | Dimmer | Adjust the brightness of the light from |
|
||||
| light-auto | Switch | Enable/disable light auto mode |
|
||||
| light-smarter | String | Enable/disable Smarter Lighting |
|
||||
| light-level-min | Dimmer | Set minimum light level for Smarter Lighting |
|
||||
| light-level-max | Dimmer | Set maximum light level for Smarter Lighting |
|
||||
| motion | Switch | Motion was detected |
|
||||
| time | DateTime | Fan's date and time |
|
||||
|
||||
|
||||
## Items
|
||||
|
||||
The following item definitions would be used to control the fan.
|
||||
|
||||
```
|
||||
Switch PorchFanPower { channel="bigassfan:fan:20F85EDAA56A:fan-power" }
|
||||
Dimmer PorchFanSpeed { channel="bigassfan:fan:20F85EDAA56A:fan-speed" }
|
||||
Switch PorchFanDirection { channel="bigassfan:fan:20F85EDAA56A:fan-direction" }
|
||||
Switch PorchFanAuto { channel="bigassfan:fan:20F85EDAA56A:fan-auto" }
|
||||
Switch PorchFanWhoosh { channel="bigassfan:fan:20F85EDAA56A:fan-whoosh" }
|
||||
String PorchFanSmartmode { channel="bigassfan:fan:20F85EDAA56A:fan-smartmode" }
|
||||
Dimmer PorchFanSpeedMin { channel="bigassfan:fan:20F85EDAA56A:fan-speed-min" }
|
||||
Dimmer PorchFanSpeedMax { channel="bigassfan:fan:20F85EDAA56A:fan-speed-max" }
|
||||
```
|
||||
|
||||
The following item definitions would be used to control the light.
|
||||
|
||||
```
|
||||
Switch PorchFanLightPower { channel="bigassfan:fan:20F85EDAA56A:light-power" }
|
||||
Dimmer PorchFanLightLevel { channel="bigassfan:fan:20F85EDAA56A:light-level" }
|
||||
Switch PorchFanLightAuto { channel="bigassfan:fan:20F85EDAA56A:light-auto" }
|
||||
Switch PorchFanLightSmarter { channel="bigassfan:fan:20F85EDAA56A:light-smarter" }
|
||||
Dimmer PorchFanLightLevelMin { channel="bigassfan:fan:20F85EDAA56A:light-level-min" }
|
||||
Dimmer PorchFanLightLevelMax { channel="bigassfan:fan:20F85EDAA56A:light-level-max" }
|
||||
```
|
||||
|
||||
The following readonly items are provided by the fan.
|
||||
|
||||
```
|
||||
Switch PorchFanMotionSensor { channel="bigassfan:fan:20F85EDAA56A:motion" }
|
||||
DateTime PorchFanTime { channel="bigassfan:fan:20F85EDAA56A:time" }
|
||||
```
|
||||
|
||||
### Sitemap
|
||||
|
||||
This is an example of how to set up your sitemap.
|
||||
|
||||
```
|
||||
Frame label="Control My BigAssFan" {
|
||||
Switch item=PorchFanPower label="Fan Power [%s]"
|
||||
Slider item=PorchFanSpeed label="Fan Speed [%s %%]"
|
||||
Switch item=PorchFanLightPower label="Light Power [%s]"
|
||||
Slider item=PorchFanLightSpeed label="Light Brightness [%s %%]"
|
||||
}
|
||||
```
|
||||
|
||||
### Manual Thing Creation
|
||||
|
||||
Place a file named *bigassfan.things* in the *conf/things* directory. The file should contain lines formatted like this.
|
||||
|
||||
```
|
||||
bigassfan:fan:20F85EDAA56A [ label="Porch Fan", ipAddress="192.168.12.62", macAddress="20:F8:5E:DA:A5:6A" ]
|
||||
```
|
||||
|
||||
#### Unsupported Features
|
||||
|
||||
Wall Controllers are not supported. Standalone lights are not supported.
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
id: dlinksmarthome
|
||||
label: D-Link Smart Home
|
||||
title: D-Link Smart Home - Bindings
|
||||
type: binding
|
||||
description: "A binding for D-Link Smart Home devices."
|
||||
since: 2x
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# D-Link Smart Home Binding
|
||||
|
||||
A binding for D-Link Smart Home devices.
|
||||
|
||||
## Supported Things
|
||||
|
||||
### DCH-S150 (WiFi motion sensor)
|
||||
|
||||
The binding has been tested with hardware revisions A1 and A2 running firmware version 1.22.
|
||||
|
||||
## Discovery
|
||||
|
||||
The binding can automatically discover devices that have already been added to the Wifi network. Please refer to your mydlink Home app for instructions on how to add your device to your Wifi network.
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
The binding does not require any special configuration.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
It is recommended to let the binding discover and add devices. Once added the configuration must be updated to specify the PIN code located on the back of the device.
|
||||
|
||||
### DCH-S150
|
||||
|
||||
* **ipAddress** - Hostname or IP of the device
|
||||
* **pin** - PIN code from the back of the device
|
||||
|
||||
To manually configure a DCH-S150 Thing you must specify its IP address and PIN code.
|
||||
|
||||
In the thing file, this looks like e.g.
|
||||
|
||||
```
|
||||
Thing dlinksmarthome:DCH-S150:mysensor [ ipAddress="192.168.2.132" pin="1234" ]
|
||||
```
|
||||
|
||||
## Channels
|
||||
|
||||
### DCH-S150
|
||||
|
||||
* **motion** - Triggered when the sensor detects motion.
|
||||
|
||||
## Example usage
|
||||
|
||||
### DCH-S150
|
||||
|
||||
```
|
||||
rule "Landing motion"
|
||||
when
|
||||
Channel "dlinksmarthome:DCH-S150:90-8D-78-XX-XX-XX:motion" triggered
|
||||
then
|
||||
println("Motion has been detected")
|
||||
end
|
||||
```
|
|
@ -3,7 +3,7 @@ id: dscalarm
|
|||
label: DSC Alarm
|
||||
title: DSC Alarm - Bindings
|
||||
type: binding
|
||||
description: "This is an openHAB binding for a DSC PowerSeries Alarm System utilizing the EyezOn Envisalink 3/2DS interface or the DSC IT-100 RS-232 interface."
|
||||
description: "The DSC PowerSeries Alarm System is a popular do-it-yourself home security system, which can be monitored and controlled remotely through a standard web-browser or mobile device."
|
||||
since: 2x
|
||||
logo: images/addons/dscalarm.png
|
||||
install: auto
|
||||
|
@ -15,11 +15,9 @@ install: auto
|
|||
|
||||
# DSC Alarm Binding
|
||||
|
||||
This is an openHAB binding for a DSC PowerSeries Alarm System utilizing the EyezOn Envisalink 3/2DS interface or the DSC IT-100 RS-232 interface.
|
||||
|
||||
The DSC PowerSeries Alarm System is a popular do-it-yourself home security system, which can be monitored and controlled remotely through a standard web-browser or mobile device.
|
||||
|
||||
The openHAB DSC Alarm binding provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface.
|
||||
This is the binding for the DSC PowerSeries Alarm System, utilizing either the EyezOn Envisalink 4/3/2DS interface or the DSC IT-100 RS-232 interface. It provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 4/3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface. Additionally, their is provision to connect to the DSC IT-100 interface through a TCP serial server.
|
||||
|
||||
## Supported Things
|
||||
|
||||
|
@ -42,7 +40,11 @@ There are essentially no overall binding configuration settings that need to be
|
|||
|
||||
## Discovery
|
||||
|
||||
The DSC Alarm binding incorporates several discovery modes in order to find DSC Alarm systems. First, there is the Envisalink bridge discovery mode which performs a network query for any Envisalink adapters and adds them to the discovery inbox. Second, there is The IT-100 bridge discovery mode which will search serial ports for any IT-100 adapters and add them to the discovery inbox. The bridge discovery modes are started manually through PaperUI. Third, after a bridge is discovered and available to openHAB, the binding will attempt to discover DSC Alarm devices and add them to the discovery inbox. The TCP Server bridge does not implement bridge discovery but will utilize device discovery once it is online.
|
||||
The DSC Alarm binding incorporates several discovery modes in order to find DSC Alarm systems. First, there is the Envisalink bridge discovery mode which performs a network query for any Envisalink adapters and adds them to the discovery inbox. Second, there is The IT-100 bridge discovery mode which will search serial ports for any IT-100 adapters and add them to the discovery inbox. The bridge discovery modes are started manually through PaperUI. Third, after a bridge is discovered and available to openHAB, the binding will attempt to discover DSC Alarm things and add them to the discovery inbox. The TCP Server bridge does not implement bridge discovery but will utilize thing discovery once it is online.
|
||||
|
||||
Note: The Envisalink Bridge discovery does a TCP scan across your local network to find the interface. This may create issues on the network so it is suggested that caution be used when trying this discovery. The recommended method would be to manually add and configure the bridge through the 'dscalarm.thing' file or the PaperUI. And then allow the binding to discover the DSC Alarm things.
|
||||
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -52,7 +54,7 @@ DSC Alarm things can be configured either through the online configuration utili
|
|||
<tr><td><b>Thing</b></td><td><b>Configuration Parameters</b></td></tr>
|
||||
<tr><td>envisalink</td><td><table><tr><td><b>ipAddress</b> - IP address for the Envisalink adapter - Required.</td></tr><tr><td><b>port</b> - TCP port for the Envisalink adapter - Not Required - default = 4025.</td></tr><tr><td><b>password</b> - Password to login to the Envisalink bridge - Not Required.</td></tr><tr><td><b>connectionTimeout</b> - TCP socket connection timeout in milliseconds - Not Required - default=5000.<br/></td></tr><tr><td><b>pollPeriod</b> - Period of time in minutes between the poll command being sent to the Envisalink bridge - Not Required - default=1.</td></tr></table></td></tr>
|
||||
<tr><td>it100</td><td><table><tr><td><b>serialPort</b> - Serial port for the IT-100s bridge - Required.</td></tr><tr><td><b>baud</b> - Baud rate of the IT-100 bridge - Not Required - default = 9600.</td></tr><tr><td><b>pollPeriod</b> - Period of time in minutes between the poll command being sent to the IT-100 bridge - Not Required - default=1.</td></tr></table></td></tr>
|
||||
<tr><td>tcpserver</td><td><table><tr><td><b>ipAddress</b> - IP address for the TCP Server - Required.</td></tr><tr><td><b>port</b> - TCP port for the TCP Server - Required.</td></tr><tr><td><b>connectionTimeout</b> - TCP socket connection timeout in milliseconds - Not Required - default=5000.<br/></td></tr><tr><td><b>pollPeriod</b> - Period of time in minutes between the poll command being sent to the TCP Server bridge - Not Required - default=1.</td></tr></table></td></tr>
|
||||
<tr><td>tcpserver</td><td><table><tr><td><b>ipAddress</b> - IP address for the TCP Server - Required.</td></tr><tr><td><b>port</b> - TCP port for the TCP Server - Required.</td></tr><tr><td><b>connectionTimeout</b> - TCP socket connection timeout in milliseconds - Not Required - default=5000.<br/></td></tr><tr><td><b>pollPeriod</b> - Period of time in minutes between the poll command being sent to the TCP Server bridge - Not Required - default=1.</td></tr><tr><td><b>protocol</b> - The protocol used to interact with the DSC Alarm. Valid values are 1 for IT100 API or 2 for Envisalink TPI. The default is 1. - Not Required.</td></tr></table></td></tr>
|
||||
<tr><td>panel</td><td><table><tr><td><b>userCode</b> - User code for the DSC alarm panel - Not Required.</td></tr><tr><td><b>suppressAcknowledgementMsgs</b> - Suppress the display of acknowledgement messages when received - Not Required - default = false.</td></tr></table></td></tr>
|
||||
<tr><td>partition</td><td><b>partitionNumber</b> - Partition number (1-8) - Required.</td></tr>
|
||||
<tr><td>zone</td><td><table><tr><td><b>partitionNumber</b> - Partition number (1-8) - Not Required - default=1.</td></tr><tr><td><b>zoneNumber</b> - Zone number (1-64) - Required.</td></tr></table></td></tr>
|
||||
|
@ -89,6 +91,7 @@ DSC Alarm things support a variety of channels as seen below in the following ta
|
|||
<table>
|
||||
<tr><td><b>Channel</b></td><td><b>Item Type</b></td><td><b>Description</b></td></tr>
|
||||
<tr><td>bridge_reset</td><td>Switch</td><td>Reset the bridge connection.</td></tr>
|
||||
<tr><td>send_command</td><td>Switch</td><td>Send a DSC Alarm command.</td></tr>
|
||||
<tr><td>panel_message</td><td>String</td><td>Event messages received from the DSC Alarm system.</td></tr>
|
||||
<tr><td>panel_system_error</td><td>String</td><td>DSC Alarm system error.</td></tr>
|
||||
<tr><td>panel_trouble_message</td><td>String</td><td>Displays any trouble messages the panel might send.</td></tr>
|
||||
|
@ -99,7 +102,7 @@ DSC Alarm things support a variety of channels as seen below in the following ta
|
|||
<tr><td>panel_ftc_trouble</td><td>Switch</td><td>Failure to communicate with monitoring station.</td></tr>
|
||||
<tr><td>panel_zone_fault</td><td>Switch</td><td>There is a fault condition on a zone/sensor.</td></tr>
|
||||
<tr><td>panel_zone_tamper</td><td>Switch</td><td>There is a tamper condition on a zone/sensor.</td></tr>
|
||||
<tr><td>panel_time_low_battery</td><td>Switch</td><td>There is a low battery condition on a zone/sensor.</td></tr>
|
||||
<tr><td>panel_zone_low_battery</td><td>Switch</td><td>There is a low battery condition on a zone/sensor.</td></tr>
|
||||
<tr><td>panel_time_loss</td><td>Switch</td><td>Loss of time on the panel.</td></tr>
|
||||
<tr><td>panel_time</td><td>DateTime</td><td>DSC Alarm system time and date.</td></tr>
|
||||
<tr><td>panel_time_stamp</td><td>Switch</td><td>Turn DSC Alarm message time stamping ON/OFF.</td></tr>
|
||||
|
@ -198,6 +201,7 @@ Group:Contact:OR(OPEN, CLOSED) DSCAlarmSmoke <smokeDetector>
|
|||
/* DSC Alarm Items */
|
||||
|
||||
Switch BRIDGE_CONNECTION {channel="dscalarm:envisalink:MyBridgeName:bridge_reset"}
|
||||
String SEND_DSC_ALARM_COMMAND "Send a DSC Alarm Command" {channel="dscalarm:envisalink:MyBridgeName:send_command"}
|
||||
|
||||
/* DSC Alarm Panel Items */
|
||||
String PANEL_MESSAGE "Panel Message: [%s]" (DSCAlarmPanel) {channel="dscalarm:panel:MyBridgeName:panel:panel_message"}
|
||||
|
@ -394,20 +398,20 @@ Here is an example sitemap:
|
|||
|
||||
```
|
||||
Frame label="Alarm System" {
|
||||
Text label="DSC Alarm System" icon="DSC" {
|
||||
Text label="DSC Alarm System" {
|
||||
Frame label="Panel" {
|
||||
Switch item=BRIDGE_CONNECTION label="Panel Connection" mappings=[ON="Connected", OFF="Disconnected"]
|
||||
Text item=PANEL_MESSAGE icon="returnpipe"
|
||||
Selection item=PANEL_COMMAND icon="flowpipe" mappings=[0="Poll", 1="Status Report", 2="Labels Request (Serial Only)", 8="Dump Zone Timers (TCP Only)", 10="Set Time/Date", 200="Send User Code"]
|
||||
Text item=PANEL_MESSAGE
|
||||
Selection item=PANEL_COMMAND mappings=[0="Poll", 1="Status Report", 2="Labels Request (Serial Only)", 8="Dump Zone Timers (TCP Only)", 10="Set Time/Date", 200="Send User Code"]
|
||||
Text item=PANEL_TIME {
|
||||
Switch item=PANEL_TIME_STAMP label="Panel Time Stamp"
|
||||
Switch item=PANEL_TIME_BROADCAST label="Panel Time Broadcast"
|
||||
}
|
||||
|
||||
Text item=PANEL_SYSTEM_ERROR icon="systemError"
|
||||
Text item=PANEL_SYSTEM_ERROR
|
||||
|
||||
Text item=PANEL_TROUBLE_LED label="Panel Trouble Condition" {
|
||||
Text item=PANEL_TROUBLE_MESSAGE icon="shieldRed"
|
||||
Text item=PANEL_TROUBLE_MESSAGE
|
||||
Text item=PANEL_SERVICE_REQUIRED label="Service Required"
|
||||
Text item=PANEL_AC_TROUBLE label="AC Trouble"
|
||||
Text item=PANEL_TELEPHONE_TROUBLE label="Telephone Line Trouble"
|
||||
|
@ -420,14 +424,14 @@ Here is an example sitemap:
|
|||
}
|
||||
|
||||
Frame label="Partitions" {
|
||||
Text item=PARTITION1_STATUS icon="shieldGreen" {
|
||||
Switch item=PARTITION1_ARM_MODE label="Partition 1 Arm Options" icon="shieldGreen" mappings=[0="Disarm", 1="Away", 2="Stay", 3="No Entry Delay", 4="With User Code"]
|
||||
Text item=PARTITION1_OPENING_CLOSING_MODE icon="shieldGreen"
|
||||
Text item=PARTITION1_STATUS {
|
||||
Switch item=PARTITION1_ARM_MODE label="Partition 1 Arm Options" mappings=[0="Disarm", 1="Away", 2="Stay", 3="No Entry Delay", 4="With User Code"]
|
||||
Text item=PARTITION1_OPENING_CLOSING_MODE
|
||||
}
|
||||
}
|
||||
|
||||
Frame label="Keypad" {
|
||||
Text label="Keypad LED Status" icon="DSCKeypad" {
|
||||
Text label="Keypad LED Status" {
|
||||
Text item=KEYPAD_READY_LED label="Ready LED Status"
|
||||
Text item=KEYPAD_ARMED_LED label="Armed LED Status"
|
||||
Text item=KEYPAD_MEMORY_LED label="Memory LED Status"
|
||||
|
@ -441,150 +445,150 @@ Here is an example sitemap:
|
|||
}
|
||||
|
||||
Frame label="Zones" {
|
||||
Text label="All Zones" icon="ZoneAlarm" {
|
||||
Text label="All Zones" {
|
||||
Text item=ZONE1_STATUS {
|
||||
Switch item=ZONE1_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE1_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE1_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE1_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE1_FAULT icon="statusWarning"
|
||||
Switch item=ZONE1_IN_ALARM
|
||||
Switch item=ZONE1_TAMPER
|
||||
Switch item=ZONE1_FAULT
|
||||
}
|
||||
}
|
||||
|
||||
Text item=ZONE9_STATUS {
|
||||
Switch item=ZONE9_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE9_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE9_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE9_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE9_FAULT icon="statusWarning"
|
||||
Switch item=ZONE9_IN_ALARM
|
||||
Switch item=ZONE9_TAMPER
|
||||
Switch item=ZONE9_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE10_STATUS {
|
||||
Switch item=ZONE10_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE10_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE10_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE10_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE10_FAULT icon="statusWarning"
|
||||
Switch item=ZONE10_IN_ALARM
|
||||
Switch item=ZONE10_TAMPER
|
||||
Switch item=ZONE10_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE11_STATUS {
|
||||
Switch item=ZONE11_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE11_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE11_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE11_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE11_FAULT icon="statusWarning"
|
||||
Switch item=ZONE11_IN_ALARM
|
||||
Switch item=ZONE11_TAMPER
|
||||
Switch item=ZONE11_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE12_STATUS {
|
||||
Switch item=ZONE12_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE12_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE12_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE12_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE12_FAULT icon="statusWarning"
|
||||
Switch item=ZONE12_IN_ALARM
|
||||
Switch item=ZONE12_TAMPER
|
||||
Switch item=ZONE12_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE13_STATUS {
|
||||
Switch item=ZONE13_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE13_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE13_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE13_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE13_FAULT icon="statusWarning"
|
||||
Switch item=ZONE13_IN_ALARM
|
||||
Switch item=ZONE13_TAMPER
|
||||
Switch item=ZONE13_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE14_STATUS {
|
||||
Switch item=ZONE14_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE14_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE14_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE14_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE14_FAULT icon="statusWarning"
|
||||
Switch item=ZONE14_IN_ALARM
|
||||
Switch item=ZONE14_TAMPER
|
||||
Switch item=ZONE14_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE15_STATUS {
|
||||
Switch item=ZONE15_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE15_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE15_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE15_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE15_FAULT icon="statusWarning"
|
||||
Switch item=ZONE15_IN_ALARM
|
||||
Switch item=ZONE15_TAMPER
|
||||
Switch item=ZONE15_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE21_STATUS {
|
||||
Switch item=ZONE21_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE21_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE21_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE21_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE21_FAULT icon="statusWarning"
|
||||
Switch item=ZONE21_IN_ALARM
|
||||
Switch item=ZONE21_TAMPER
|
||||
Switch item=ZONE21_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE22_STATUS {
|
||||
Switch item=ZONE22_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE22_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE22_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE22_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE22_FAULT icon="statusWarning"
|
||||
Switch item=ZONE22_IN_ALARM
|
||||
Switch item=ZONE22_TAMPER
|
||||
Switch item=ZONE22_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE23_STATUS {
|
||||
Switch item=ZONE23_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE23_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE23_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE23_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE23_FAULT icon="statusWarning"
|
||||
Switch item=ZONE23_IN_ALARM
|
||||
Switch item=ZONE23_TAMPER
|
||||
Switch item=ZONE23_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE24_STATUS {
|
||||
Switch item=ZONE24_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE24_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE24_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE24_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE24_FAULT icon="statusWarning"
|
||||
Switch item=ZONE24_IN_ALARM
|
||||
Switch item=ZONE24_TAMPER
|
||||
Switch item=ZONE24_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE25_STATUS {
|
||||
Switch item=ZONE25_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE25_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE25_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE25_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE25_FAULT icon="statusWarning"
|
||||
Switch item=ZONE25_IN_ALARM
|
||||
Switch item=ZONE25_TAMPER
|
||||
Switch item=ZONE25_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE51_STATUS {
|
||||
Switch item=ZONE51_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE51_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE51_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE51_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE51_FAULT icon="statusWarning"
|
||||
Switch item=ZONE51_IN_ALARM
|
||||
Switch item=ZONE51_TAMPER
|
||||
Switch item=ZONE51_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE52_STATUS {
|
||||
Switch item=ZONE52_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE52_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE52_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE52_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE52_FAULT icon="statusWarning"
|
||||
Switch item=ZONE52_IN_ALARM
|
||||
Switch item=ZONE52_TAMPER
|
||||
Switch item=ZONE52_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE53_STATUS {
|
||||
Switch item=ZONE53_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE53_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE53_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE53_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE53_FAULT icon="statusWarning"
|
||||
Switch item=ZONE53_IN_ALARM
|
||||
Switch item=ZONE53_TAMPER
|
||||
Switch item=ZONE53_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE54_STATUS {
|
||||
Switch item=ZONE54_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE54_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE54_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE54_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE54_FAULT icon="statusWarning"
|
||||
Switch item=ZONE54_IN_ALARM
|
||||
Switch item=ZONE54_TAMPER
|
||||
Switch item=ZONE54_FAULT
|
||||
}
|
||||
}
|
||||
Text item=ZONE55_STATUS {
|
||||
Switch item=ZONE55_BYPASS_MODE icon="ZoneAlarm" mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Switch item=ZONE55_BYPASS_MODE mappings=[OFF="Armed", ON="Bypassed"]
|
||||
Frame label="Other Status:" {
|
||||
Switch item=ZONE55_IN_ALARM icon="statusWarning"
|
||||
Switch item=ZONE55_TAMPER icon="statusWarning"
|
||||
Switch item=ZONE55_FAULT icon="statusWarning"
|
||||
Switch item=ZONE55_IN_ALARM
|
||||
Switch item=ZONE55_TAMPER
|
||||
Switch item=ZONE55_FAULT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -598,18 +602,23 @@ Here is an example sitemap:
|
|||
}
|
||||
```
|
||||
|
||||
## Change Log
|
||||
Sample Rules for Sending a DSC Alarm Command
|
||||
|
||||
### openHAB 2.0.0 Beta 1
|
||||
```
|
||||
rule "SendKeystrokeStringCommand"
|
||||
when
|
||||
Item SwitchItemName received command ON
|
||||
then
|
||||
sendCommand(SEND_DSC_ALARM_COMMAND, "071,1*101#")
|
||||
end
|
||||
|
||||
* Initial commit of the DSC Alarm Binding. ([#324](https://github.com/openhab/openhab2-addons/pull/324))
|
||||
rule "SendPollingCommand"
|
||||
|
||||
### openHAB 2.0.0 Beta 3
|
||||
when
|
||||
Item SwitchItemName received command ON
|
||||
then
|
||||
sendCommand(SEND_DSC_ALARM_COMMAND, "000")
|
||||
end
|
||||
```
|
||||
|
||||
* Added support for the DSC Alarm binding to communicate with an IT-100 through a TCP/IP serial server. Also, fixed a bug where the IT-100 serial interface requires a 6 digit usercode but was only receiving 4 digits. The channel named `PANEL_COMMAND` was changed from type String to type Number. Fixed bug where the IT-100 bridge would not connect. ([#846](https://github.com/openhab/openhab2-addons/pull/846))
|
||||
|
||||
### openHAB 2.0.0 Beta 4
|
||||
|
||||
* Fixed bug where the binding would prematurely set the channel `PARTITION_ARM_MODE` when issuing a partition arm command.
|
||||
* Fixed issue where the binding stopped handling incoming messages from the DSC Alarm system.
|
||||
* Disabled background discovery of DSC Alarm bridges as this may create network issues. Manual discovery is still available.
|
||||
Notice the command variations in the examples. If a command has data, there needs to be a comma between the command and the data as seen above in the first example. If there is no data then it would only require the command itself as in the second example.
|
|
@ -53,10 +53,13 @@ where `<eventType>` is one of the following values:
|
|||
| Außentemperatur | temperature_outside | number | |
|
||||
| Außentemperatur gemittelt über 1h | temperature_outside_1h | number | |
|
||||
| Außentemperatur gemittelt über 24h | temperature_outside_24h | number | |
|
||||
| Quelleneintrittstemperatur | temperature_source_in | number | |
|
||||
| Quellenaustrittstemperatur | temperature_source_out | number | |
|
||||
| Quelleneintrittstemperatur | temperature_source_in | number | | Ai1 Geo only |
|
||||
| Quellenaustrittstemperatur | temperature_source_out | number | | Ai1 Geo only |
|
||||
| Umgebungstemperatur | temperature_surrounding | number | | Ai1 Air only |
|
||||
| Verdampfungstemperatur | temperature_evaporation | number | |
|
||||
| Sauggastemperatur | temperature_suction | number | |
|
||||
| Sauggastemperatur | temperature_suction | number | | Ai1 Geo only |
|
||||
| Sauggas | temperature_suction_air | number | | Ai1 Air only |
|
||||
| Ölsumpf | temperature_sump | number | | Ai1 Air only |
|
||||
| Verdampfungsdruck | pressure_evaporation | number | |
|
||||
| Temperatur Rücklauf Soll | temperature_return_set | number | |
|
||||
| Temperatur Rücklauf | temperature_return | number | |
|
||||
|
@ -114,7 +117,7 @@ where `<eventType>` is one of the following values:
|
|||
| Handabschaltung Kühlbetrieb | enable_cooling | switch | yes |
|
||||
| Handabschaltung Warmwasserbetrieb | enable_warmwater | switch | yes |
|
||||
| Handabschaltung Pool_Heizbetrieb | enable_pool | switch | yes |
|
||||
| Status der Wärmepumpenkomponenten | state | number | |
|
||||
| Status der Wärmepumpenkomponenten | state | number | | State as a number, see below for possible mapping. |
|
||||
| Status Quellenpumpe | state_sourcepump | switch | |
|
||||
| Status Heizungsumwälzpumpe | state_heatingpump | switch | |
|
||||
| Status Freigabe Regelung EDV / Magnetventil | state_evd | switch | |
|
||||
|
@ -139,6 +142,28 @@ where `<eventType>` is one of the following values:
|
|||
| Handschaltung Vierwegeventil | manual_4wayvalve | | yes | (H-0-A)
|
||||
| Handschaltung Multiausgang Ext. | manual_multiext | | yes | (H-0-A)
|
||||
|
||||
### Mappings
|
||||
|
||||
Heatpump event type "state" can be mapped to strings. Different heatpump models seem to have slightly different state values.
|
||||
Mappings for the Ai1 Geo have been copied from [here](http://www.haustechnikdialog.de/Forum/t/173357/Waterkotte-via-Ethernet-OpenHAB-und-Android-App?page=6).
|
||||
|
||||
| State | Ai1 Geo | Ai1 Air |
|
||||
| ----- | ----- | ----- |
|
||||
| 0 | aus | aus |
|
||||
| 1 | nur Solepumpe 1 | |
|
||||
| 2 | nur Heizkreispumpe 2 | Standby |
|
||||
| 3 | unbekannt | |
|
||||
| 7 | unbekannt | |
|
||||
| 10 | | Heizbetrieb |
|
||||
| 15 | Heizbetrieb | |
|
||||
| 131 | Naturkühlung | |
|
||||
| 256 | Vorlauf Warmwasser | Vorlauf Warmwasser |
|
||||
| 258 | Nachlauf Warmwasser | Nachlauf Warmwasser |
|
||||
| 259 | unbekannt 259 vor WW Bereitung | |
|
||||
| 263 | unbekannt 263 vor WW Bereitung | |
|
||||
| 266 | | Warmwasserbereitung |
|
||||
| 271 | Warmwasserbereitung | |
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -46,16 +46,16 @@ No binding configuration required.
|
|||
|
||||
The binding supports following channels
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|------------------|------------------------|--------------|----------------- |------------- |
|
||||
| latest-title | String | Contains the title of the last feed entry. |
|
||||
| latest-description | String | Contains the description of last feed entry. |
|
||||
| latest-date | DateTime | Contains the published date of the last feed entry. |
|
||||
| author | String | The name of the feed author, if author is present |
|
||||
| title | String | The title of the feed |
|
||||
| description | String | Description of the feed |
|
||||
| last-update | DateTime | The last update date of the feed |
|
||||
| number-of-entries | Number | Number of entries in the feed |
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|--------------------|-----------|-----------------------------------------------------|
|
||||
| latest-title | String | Contains the title of the last feed entry. |
|
||||
| latest-description | String | Contains the description of last feed entry. |
|
||||
| latest-date | DateTime | Contains the published date of the last feed entry. |
|
||||
| author | String | The name of the feed author, if author is present |
|
||||
| title | String | The title of the feed |
|
||||
| description | String | Description of the feed |
|
||||
| last-update | DateTime | The last update date of the feed |
|
||||
| number-of-entries | Number | Number of entries in the feed |
|
||||
|
||||
## Full Example
|
||||
|
||||
|
|
|
@ -27,14 +27,19 @@ This binding supports the following thing types:
|
|||
| phone | Thing | The phone wired to the Freebox Revolution. |
|
||||
| net_device | Thing | A network device on the local network. |
|
||||
| net_interface | Thing | A network interface from a device on the local network. |
|
||||
| airplay | Thing | An AirPlay device in the local network. |
|
||||
|
||||
## Discovery
|
||||
|
||||
The Freebox Revolution server is discovered automatically through mDNS in the local network. After a Freebox Revolution is discovered and available to openHAB, the binding will automatically discover phone and network devices / interfaces on the local network.
|
||||
The Freebox Revolution server is discovered automatically through mDNS in the local network. After a Freebox Revolution is discovered and available to openHAB, the binding will automatically discover phone, network devices / interfaces and AirPlay devices with video capability in the local network. Note that the discovered thing will be setup to use only HTTP API (and not HTTPS) because only an IP can be automatically determined while a domain name is required to use HTTPS with a valid certificate.
|
||||
|
||||
## Binding configuration
|
||||
|
||||
There are no overall binding configuration settings that need to be set. All settings are through thing configuration parameters.
|
||||
The binding has the following configuration options, which can be set for "binding:freebox":
|
||||
|
||||
| Parameter | Name | Description | Required |
|
||||
|-------------|--------------|--------------------------------------------------------------------------|----------|
|
||||
| callbackUrl | Callback URL | URL to use for playing notification sounds, e.g. http://192.168.0.2:8080 | no |
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -47,6 +52,7 @@ The _server_ bridge thing requires the following configuration parameters:
|
|||
| Freebox Network Address | fqdn | The IP address / FQDN of the Freebox Server (can include port number).| false | mafreebox.freebox.fr |
|
||||
| Application token | appToken | Token generated by the Freebox Server. | false | |
|
||||
| Refresh Interval | refreshInterval | The refresh interval in seconds which is used to poll given Freebox Server.| false | 30 |
|
||||
| Use only HTTP API | useOnlyHttp | Use HTTP API even if HTTPS is available. | false | false |
|
||||
|
||||
If the parameter _ipAddress_ is not set, the binding will use the default address used by Free to access your Freebox Server (mafreebox.freebox.fr). The bridge thing will initialize only if a valid application token (parameter _appToken_) is filled.
|
||||
|
||||
|
@ -75,6 +81,83 @@ The _net_interface_ thing requires the following configuration parameters:
|
|||
|------------------------------|--------------------------|----------------------------------------------------|----------|
|
||||
| IP Address | ipAddress | The IP address (v4 or v6) of the network interface.| true |
|
||||
|
||||
### AirPlay device
|
||||
|
||||
The _airplay_ thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required |
|
||||
|-----------------|--------------|-----------------------------|----------|
|
||||
| Name | name | Name of the AirPlay device | true |
|
||||
| Password | password | AirPlay password | false |
|
||||
| Accept all MP3 | acceptAllMp3 | Accept any bitrate for MP3 audio or only bitrates greater than 64 kbps | false |
|
||||
|
||||
## HTTPS Access
|
||||
|
||||
Each Freebox server is now automatically assigned a random domain name (in addition to mafreebox.freebox.fr that can be used inside the local network), and an associated TLS certificate to enable secure access to API. This certificate is also valid for the domain name mafreebox.freebox.fr too.
|
||||
You must validate the certificate chain, by using the following Freebox ECC Root CA and Freebox RSA Root CA:
|
||||
|
||||
```
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICWTCCAd+gAwIBAgIJAMaRcLnIgyukMAoGCCqGSM49BAMCMGExCzAJBgNVBAYT
|
||||
AkZSMQ8wDQYDVQQIDAZGcmFuY2UxDjAMBgNVBAcMBVBhcmlzMRMwEQYDVQQKDApG
|
||||
cmVlYm94IFNBMRwwGgYDVQQDDBNGcmVlYm94IEVDQyBSb290IENBMB4XDTE1MDkw
|
||||
MTE4MDIwN1oXDTM1MDgyNzE4MDIwN1owYTELMAkGA1UEBhMCRlIxDzANBgNVBAgM
|
||||
BkZyYW5jZTEOMAwGA1UEBwwFUGFyaXMxEzARBgNVBAoMCkZyZWVib3ggU0ExHDAa
|
||||
BgNVBAMME0ZyZWVib3ggRUNDIFJvb3QgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
|
||||
AASCjD6ZKn5ko6cU5Vxh8GA1KqRi6p2GQzndxHtuUmwY8RvBbhZ0GIL7bQ4f08ae
|
||||
JOv0ycWjEW0fyOnAw6AYdsN6y1eNvH2DVfoXQyGoCSvXQNAUxla+sJuLGICRYiZz
|
||||
mnijYzBhMB0GA1UdDgQWBBTIB3c2GlbV6EIh2ErEMJvFxMz/QTAfBgNVHSMEGDAW
|
||||
gBTIB3c2GlbV6EIh2ErEMJvFxMz/QTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
|
||||
/wQEAwIBhjAKBggqhkjOPQQDAgNoADBlAjA8tzEMRVX8vrFuOGDhvZr7OSJjbBr8
|
||||
gl2I70LeVNGEXZsAThUkqj5Rg9bV8xw3aSMCMQCDjB5CgsLH8EdZmiksdBRRKM2r
|
||||
vxo6c0dSSNrr7dDN+m2/dRvgoIpGL2GauOGqDFY=
|
||||
-----END CERTIFICATE-----
|
||||
```
|
||||
|
||||
```
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFmjCCA4KgAwIBAgIJAKLyz15lYOrYMA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV
|
||||
BAYTAkZSMQ8wDQYDVQQIDAZGcmFuY2UxDjAMBgNVBAcMBVBhcmlzMRAwDgYDVQQK
|
||||
DAdGcmVlYm94MRgwFgYDVQQDDA9GcmVlYm94IFJvb3QgQ0EwHhcNMTUwNzMwMTUw
|
||||
OTIwWhcNMzUwNzI1MTUwOTIwWjBaMQswCQYDVQQGEwJGUjEPMA0GA1UECAwGRnJh
|
||||
bmNlMQ4wDAYDVQQHDAVQYXJpczEQMA4GA1UECgwHRnJlZWJveDEYMBYGA1UEAwwP
|
||||
RnJlZWJveCBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
|
||||
xqYIvq8538SH6BJ99jDlOPoyDBrlwKEp879oYplicTC2/p0X66R/ft0en1uSQadC
|
||||
sL/JTyfgyJAgI1Dq2Y5EYVT/7G6GBtVH6Bxa713mM+I/v0JlTGFalgMqamMuIRDQ
|
||||
tdyvqEIs8DcfGB/1l2A8UhKOFbHQsMcigxOe9ZodMhtVNn0mUyG+9Zgu1e/YMhsS
|
||||
iG4Kqap6TGtk80yruS1mMWVSgLOq9F5BGD4rlNlWLo0C3R10mFCpqvsFU+g4kYoA
|
||||
dTxaIpi1pgng3CGLE0FXgwstJz8RBaZObYEslEYKDzmer5zrU1pVHiwkjsgwbnuy
|
||||
WtM1Xry3Jxc7N/i1rxFmN/4l/Tcb1F7x4yVZmrzbQVptKSmyTEvPvpzqzdxVWuYi
|
||||
qIFSe/njl8dX9v5hjbMo4CeLuXIRE4nSq2A7GBm4j9Zb6/l2WIBpnCKtwUVlroKw
|
||||
NBgB6zHg5WI9nWGuy3ozpP4zyxqXhaTgrQcDDIG/SQS1GOXKGdkCcSa+VkJ0jTf5
|
||||
od7PxBn9/TuN0yYdgQK3YDjD9F9+CLp8QZK1bnPdVGywPfL1iztngF9J6JohTyL/
|
||||
VMvpWfS/X6R4Y3p8/eSio4BNuPvm9r0xp6IMpW92V8SYL0N6TQQxzZYgkLV7TbQI
|
||||
Hw6v64yMbbF0YS9VjS0sFpZcFERVQiodRu7nYNC1jy8CAwEAAaNjMGEwHQYDVR0O
|
||||
BBYEFD2erMkECujilR0BuER09FdsYIebMB8GA1UdIwQYMBaAFD2erMkECujilR0B
|
||||
uER09FdsYIebMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqG
|
||||
SIb3DQEBCwUAA4ICAQAZ2Nx8mWIWckNY8X2t/ymmCbcKxGw8Hn3BfTDcUWQ7GLRf
|
||||
MGzTqxGSLBQ5tENaclbtTpNrqPv2k6LY0VjfrKoTSS8JfXkm6+FUtyXpsGK8MrLL
|
||||
hZ/YdADTfbbWOjjD0VaPUoglvo2N4n7rOuRxVYIij11fL/wl3OUZ7GHLgL3qXSz0
|
||||
+RGW+1oZo8HQ7pb6RwLfv42Gf+2gyNBckM7VVh9R19UkLCsHFqhFBbUmqwJgNA2/
|
||||
3twgV6Y26qlyHXXODUfV3arLCwFoNB+IIrde1E/JoOry9oKvF8DZTo/Qm6o2KsdZ
|
||||
dxs/YcIUsCvKX8WCKtH6la/kFCUcXIb8f1u+Y4pjj3PBmKI/1+Rs9GqB0kt1otyx
|
||||
Q6bqxqBSgsrkuhCfRxwjbfBgmXjIZ/a4muY5uMI0gbl9zbMFEJHDojhH6TUB5qd0
|
||||
JJlI61gldaT5Ci1aLbvVcJtdeGhElf7pOE9JrXINpP3NOJJaUSueAvxyj/WWoo0v
|
||||
4KO7njox8F6jCHALNDLdTsX0FTGmUZ/s/QfJry3VNwyjCyWDy1ra4KWoqt6U7SzM
|
||||
d5jENIZChM8TnDXJzqc+mu00cI3icn9bV9flYCXLTIsprB21wVSMh0XeBGylKxeB
|
||||
S27oDfFq04XSox7JM9HdTt2hLK96x1T7FpFrBTnALzb7vHv9MhXqAT90fPR/8A==
|
||||
-----END CERTIFICATE-----
|
||||
```
|
||||
|
||||
First copy and paste on your server running openHAB these two public certificates in 2 files named for example /freeboxECC.crt and /freeboxRSA.crt. Then you have to import these two certificate as trusted public certificate for your installed Java Runtime Environment. On Linux server, the command is:
|
||||
|
||||
```
|
||||
sudo keytool -import -trustcacerts -file /freeboxECC.crt -alias Freebox -keystore $JAVA_HOME/jre/lib/security/cacerts
|
||||
sudo keytool -import -trustcacerts -file /freeboxRSA.crt -alias Freebox -keystore $JAVA_HOME/jre/lib/security/cacerts
|
||||
sudo rm /freeboxECC.crt /freeboxRSA.crt
|
||||
```
|
||||
|
||||
|
||||
## Authentication
|
||||
|
||||
You'll have to authorise openHAB to connect to your Freebox. Here is the process described :
|
||||
|
@ -149,28 +232,32 @@ The following channels are supported:
|
|||
| phone | outgoing#call_name | String | R | Last outgoing call: called name |
|
||||
| net_device | reachable | Switch | R | Indicates whether the network device is reachable |
|
||||
| net_interface | reachable | Switch | R | Indicates whether the network interface is reachable |
|
||||
| airplay | playurl | String | W | Play an audio or video media from the given URL |
|
||||
| airplay | stop | Switch | W | Stop the media playback |
|
||||
|
||||
## Example
|
||||
|
||||
### Things
|
||||
|
||||
Here is an example with minimal configuration parameters (using default values):
|
||||
Here is an example with minimal configuration parameters (using default values). It will first connect to mafreebox.freebox.fr using HTTPS (and will failback to HTTP if HTTPS access is not available).
|
||||
|
||||
```
|
||||
Bridge freebox:server:fb "Freebox Revolution" [ appToken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] {
|
||||
Thing phone Phone "Phone"
|
||||
Thing net_device tv1 "TV living room" [ macAddress="XX:XX:XX:XX:XX:XX" ]
|
||||
Thing net_interface tv2 "TV bedroom" [ ipAddress="192.168.0.100" ]
|
||||
Thing airplay player "Freebox Player (AirPlay)" [ name="Freebox Player" ]
|
||||
}
|
||||
```
|
||||
|
||||
Here is another example overwritting default configuration parameters:
|
||||
|
||||
```
|
||||
Bridge freebox:server:fb "Freebox Revolution" [ fqdn="192.168.0.254", appToken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", refreshInterval=20 ] {
|
||||
Bridge freebox:server:fb "Freebox Revolution" [ fqdn="abcdefgh.fbxos.fr", appToken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", refreshInterval=20, useOnlyHttp=false ] {
|
||||
Thing phone Phone "Phone" [ refreshPhoneInterval=10, refreshPhoneCallsInterval=120 ]
|
||||
Thing net_device tv1 "TV living room" [ macAddress="XX:XX:XX:XX:XX:XX" ]
|
||||
Thing net_interface tv2 "TV bedroom" [ ipAddress="192.168.0.100" ]
|
||||
Thing airplay player "Freebox Player (AirPlay)" [ name="Freebox Player", password="1111", acceptAllMp3=false ]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -224,4 +311,7 @@ DateTime Freebox_outcall_ts "TimeStamp [%1$tA %1$td %1$tR]" <calendar> {channel=
|
|||
|
||||
Switch TVLivingRoom "TV living room" <television> {channel="freebox:net_device:fb:tv1:reachable"}
|
||||
Switch TVBedroom "TV bedroom" <television> {channel="freebox:net_interface:fb:tv2:reachable"}
|
||||
|
||||
String freebox_player_playurl "URL [%s]" { channel="freebox:airplay:fb:player:playurl" }
|
||||
Switch freebox_player_stop "Stop playback" { channel="freebox:airplay:fb:player:stop" }
|
||||
```
|
||||
|
|
|
@ -19,7 +19,12 @@ This binding integrates internet radios based on the [Frontier Silicon chipset](
|
|||
|
||||
## Supported Things
|
||||
|
||||
Successfully tested are internet radios [Hama IR100](https://de.hama.com/00054823/hama-internetradio-ir110), [Medion MD87180](http://internetradio.medion.com/), and [MEDION MD86988](http://internetradio.medion.com/).
|
||||
Successfully tested are internet radios
|
||||
* [Hama IR100](https://de.hama.com/00054823/hama-internetradio-ir110)
|
||||
* [Medion MD87180](http://internetradio.medion.com/)
|
||||
* [MEDION MD86988](http://internetradio.medion.com/)
|
||||
* [Roberts Stream 93i](https://www.robertsradio.com/uk/products/radio/smart-radio/stream-93i)
|
||||
* [auna Connect 150](http://www.auna.de/HiFi-Geraete/Radios/Internetradios/auna-Connect-150-BK-2-1-Internetradio-Mediaplayer-schwarz.html)
|
||||
|
||||
But in principle, all internet radios based on the [Frontier Silicon chipset](http://www.frontier-silicon.com/) should be supported because they share the same API.
|
||||
|
||||
|
|
|
@ -35,11 +35,12 @@ Currently supported devices include:
|
|||
* iTach Flex WiFi
|
||||
* GC-100-6
|
||||
* GC-100-12
|
||||
* ZMOTE Wi-Fi Universal Remote
|
||||
|
||||
|
||||
## Device Discovery
|
||||
|
||||
GlobalCache GC-100 and iTach devices emit an **announcement beacon** every 10-20 seconds on multicast address 239.255.250.250:9131. The GlobalCache binding will automatically detect those devices, then add them to the inbox.
|
||||
GlobalCache GC-100, iTach, and Zmote devices emit an **announcement beacon** every 10-20 seconds on multicast address 239.255.250.250:9131. The GlobalCache binding will automatically detect those devices, then add them to the inbox.
|
||||
|
||||
Background discovery is **enabled** by default. To disable background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
||||
|
||||
|
@ -52,7 +53,7 @@ Note that automatic device discovery **will not work** with GC-100's running fir
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
The iTach IR, iTach SL, and GC-100 devices require a MAP file in order to transform the openHAB command to an IR command or to a serial command. In the thing configuration, enter the name of the MAP file containing the IR and/or serial codes (). The MAP file should be placed in the *conf/transform* directory. See example below.
|
||||
The iTach IR, iTach SL, GC-100, and Zmote devices require a MAP file in order to transform the openHAB command to an IR command or to a serial command. In the thing configuration, enter the name of the MAP file containing the IR and/or serial codes (). The MAP file should be placed in the *conf/transform* directory. See example below.
|
||||
|
||||
For iTach SL and GC-100 devices that support serial connections, you must use the GlobalCache device web application to set the serial port parameters for **baud rate**, **flow control**, and **parity**. These settings must match the serial port settings of the AV device being controlled.
|
||||
|
||||
|
@ -152,7 +153,7 @@ String RS232ME "My RS232-controlled Device" { channel="globalcache:gc100_
|
|||
Serial commands strings are contained in a MAP file contained within the conf/transform directory. Serial command strings can contain URL-encoded characters in order to represent special characters such as spaces, tabs, carriage returns, line feeds, etc. See example below.
|
||||
|
||||
|
||||
## Serial Direct (SL) Channel
|
||||
## Serial (SL) Direct Channel
|
||||
|
||||
The Serial Direct channel type enables serial commands to be sent directly to the device without attempting to map the command using the transformation service. This is useful in rules where the serial command might be constructed "on the fly" in the body of the rule.
|
||||
|
||||
|
@ -162,6 +163,28 @@ For example, the following item links to the module 1 connector 1 channel on an
|
|||
String RUSSCAA66 "Russound CAA66" { channel="globalcache:itachFlex:000C45D530B9:sl-m1#c1-direct" }
|
||||
```
|
||||
|
||||
## Serial (SL) Receive Channel
|
||||
|
||||
The Serial Receive channel receives feedback from the device connected to the GlobalCache's serial port. You enable
|
||||
this functionality by setting the **Enable Two Way** switch to ON in the thing configuration. In addition, you must
|
||||
set the **End-of-Message Delimiter** in the thing configuration. The End-of-Message can be a single character,
|
||||
or a sequence of characters. Use URL encoding for non-printable characters.
|
||||
|
||||
For example, the following item links to the receive channel on module 1 connector 1 on a GC-100. A rule that looks for
|
||||
updates on this item will be able to process messages sent from the device connected to the GlobalCache's serial port.
|
||||
|
||||
```
|
||||
String RUSSCAA66_Receive "Russound CAA66 Receive" { channel="globalcache:gc100_06:000C1EFFF039:sl-m1#c1-receive" }
|
||||
```
|
||||
|
||||
Here are some examples of common **End-ofMessage** delimiters.
|
||||
|
||||
```
|
||||
%0D%0A Carriage return / Line feed
|
||||
%0D Carriage return
|
||||
%F7 Russound RNET message terminator
|
||||
```
|
||||
|
||||
## Example Configuration
|
||||
|
||||
### MAP File
|
||||
|
@ -215,6 +238,8 @@ String SAMSUNGHLS "Samsung HL-S DLP TV" { channel="globalcac
|
|||
String RS232ME "Preamp" { channel="globalcache:itachIR:000C7720B39F:sl-m1#c1" }
|
||||
|
||||
String RUSSCAA66 "Russound CAA66" { channel="globalcache:itachFlex:000C45D530B9:sl-m1#c1-direct" }
|
||||
|
||||
String ZSAMSUNGHLS "Samsung HL-S DLP TV" { channel="globalcache:zmote:CI00073306:ir-m1-c1#c1" }
|
||||
```
|
||||
|
||||
### Sitemap File
|
||||
|
@ -314,4 +339,5 @@ globalcache:itachFlex:000C07BA7E11 [ ipAddress="192.168.12.66", mapFilename="ser
|
|||
globalcache:itachFlex:000CED0B3402 [ ipAddress="192.168.12.67", activeCable="FLEX_RELAY"]
|
||||
globalcache:gc100_06:000C1065AE17 [ ipAddress="192.168.12.68", mapFilename="ir-serial-codes.map" ]
|
||||
globalcache:gc100_12:000C162D7902 [ ipAddress="192.168.12.69", mapFilename="ir-serial-codes.map" ]
|
||||
globalcache:zmote:CI00073306 [ ipAddress="192.168.12.142", mapFilename="ir-serial-codes.map" ]
|
||||
```
|
||||
|
|
|
@ -83,10 +83,10 @@ _NOTE: These options are optional, in most circumstances you don't have to speci
|
|||
Allowed item types are `Contact` and `Switch`. Type `Contact` is used for input pins, `Switch` - for output pins. The configuration string is following:
|
||||
|
||||
```
|
||||
gpio="pin:PIN_NUMBER [debounce:DEBOUNCE_INTERVAL] [activelow:yes|no] [force:yes|no]"
|
||||
gpio="pin:PIN_NUMBER [debounce:DEBOUNCE_INTERVAL] [activelow:yes|no] [force:yes|no] [initialValue:high|low]"
|
||||
```
|
||||
|
||||
Key-value pairs are separated by space; their order isn't important. Character's case is also insignificant. Key-value pair `pin` is mandatory, `debounce` and `activelow` are optional. If omitted `activelow` is set to `no`, `debounce` - to global option in configuration file (`debounce`) or 0 (zero) if neither is specified.
|
||||
Key-value pairs are separated by space; their order isn't important. Character's case is also insignificant. Key-value pair `pin` is mandatory, `debounce`, `activelow` and `initialValue` are optional. If omitted `activelow` is set to `no`, `debounce` - to global option in configuration file (`debounce`) or 0 (zero) if neither is specified, initialValue is set to LOW.
|
||||
|
||||
`PIN_NUMBER` is the number of the GPIO pin as seen by the kernel (not necessarily the same as the physical pin number).
|
||||
|
||||
|
@ -94,13 +94,15 @@ Key-value pairs are separated by space; their order isn't important. Character's
|
|||
|
||||
When `activelow` is set to `no` (or omitted) the pins behaves normally: output pins will be set `high` on `ON` command and `low` on `OFF`, input pins will generate `OPEN` event when they are `high` and `CLOSED` when are `low`. However, if `activelow` is set to `yes` the logic is inverted: when `ON` command is sent to output pin it will be set to `low`, on `OFF` command - to `high`. Input pins will generate `OPEN` event when they are `low` and `CLOSED` event on `high`.
|
||||
|
||||
`initialValue` is the state of the pin which is set during initialization. It is applicable only for oputput pins (item Switch) and can be HIGH or LOW.
|
||||
|
||||
The "force" option can be used to forcefully get hold of the configured pin even if it is currently in use, so it automatically gets unexported and exported again.
|
||||
|
||||
Examples:
|
||||
|
||||
```
|
||||
Switch LED "LED" { gpio="pin:1" }
|
||||
Switch NormallyClosedRelay "Normally Closed Relay" { gpio="pin:2 activelow:yes" }
|
||||
Switch NormallyClosedRelay "Normally Closed Relay" { gpio="pin:2 activelow:yes initialValue:high" }
|
||||
Contact NormallyOpenPushButton "Normally Open Push Button" { gpio="pin:3 debounce:10" }
|
||||
Contact PIR "PIR" { gpio="pin:4 activelow:yes" }
|
||||
Contact NormallyClosedPushButton "Normally Closed Push Button" { gpio="pin:5 debounce:10 activelow:yes" }
|
||||
|
|
|
@ -74,7 +74,7 @@ There are several settings for a bridge:
|
|||
Network address of the Homematic gateway
|
||||
|
||||
- **gatewayType**
|
||||
Hint for the binding to identify the gateway type (auto|ccu) (default = auto)
|
||||
Hint for the binding to identify the gateway type (auto|ccu|noccu) (default = auto).
|
||||
|
||||
- **callbackHost**
|
||||
Callback network address of the openHAB server, default is auto-discovery
|
||||
|
|
|
@ -117,14 +117,16 @@ Bridge hue:bridge:1 [ ipAddress="192.168.0.64" ] {
|
|||
```
|
||||
// Bulb1
|
||||
Switch Light1_Toggle { channel="hue:0210:1:bulb1:color" }
|
||||
Dimmer Light1_Dimmer { channel="hue:0210:1:bulb1:color" }
|
||||
Color Light1_Color { channel="hue:0210:1:bulb1:color" }
|
||||
Dimmer Light1_ColorTemp { channel="hue:0210:1:bulb1:color_temperature" }
|
||||
Dimmer Light1_Dimmer { channel="hue:0210:1:bulb1:color" }
|
||||
Color Light1_Color { channel="hue:0210:1:bulb1:color" }
|
||||
Dimmer Light1_ColorTemp { channel="hue:0210:1:bulb1:color_temperature" }
|
||||
String Light1_Alert { channel="hue:0210:1:bulb1:alert" }
|
||||
Switch Light1_Effect { channel="hue:0210:1:bulb1:effect" }
|
||||
|
||||
// Bulb2
|
||||
Switch Light2_Toggle {channel="hue:0220:1:bulb2:brightness"}
|
||||
Dimmer Light2_Dimm {channel="hue:0220:1:bulb2:brightness"}
|
||||
Dimmer Light2_ColorTemp {channel="hue:0220:1:bulb2:color_temperature"}
|
||||
Switch Light2_Toggle { channel="hue:0220:1:bulb2:brightness" }
|
||||
Dimmer Light2_Dimm { channel="hue:0220:1:bulb2:brightness" }
|
||||
Dimmer Light2_ColorTemp { channel="hue:0220:1:bulb2:color_temperature" }
|
||||
```
|
||||
|
||||
Note: The bridge ID is in this example **1** but can be different in each system.
|
||||
|
@ -136,15 +138,17 @@ sitemap demo label="Main Menu"
|
|||
{
|
||||
Frame {
|
||||
// Bulb1
|
||||
Switch item= Light1_Toggle
|
||||
Slider item= Light1_Dimmer
|
||||
Colorpicker item= Light1_Color
|
||||
Slider item= Light1_ColorTemp
|
||||
Switch item= Light1_Toggle
|
||||
Slider item= Light1_Dimmer
|
||||
Colorpicker item= Light1_Color
|
||||
Slider item= Light1_ColorTemp
|
||||
Switch item= Light1_Alert mappings=[NONE="None", SELECT="Alert", LSELECT="Long Alert"]
|
||||
Switch item= Light1_Effect
|
||||
|
||||
// Bulb2
|
||||
Switch item= Light2_Toggle
|
||||
Slider item= Light2_Dimmer
|
||||
Slider item= Light2_ColorTemp
|
||||
Switch item= Light2_Toggle
|
||||
Slider item= Light2_Dimmer
|
||||
Slider item= Light2_ColorTemp
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
---
|
||||
id: isy
|
||||
label: Description
|
||||
title: Description - Bindings
|
||||
type: binding
|
||||
description: "This is a openHAB binding for the Universal Devices ISY 994i router and PLM. Universal Devices offers a Java SDK for"
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.isy/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
## Description
|
||||
|
||||
This is a openHAB binding for the Universal Devices ISY 994i router and PLM. Universal Devices offers a Java SDK for
|
||||
external programs to communicate with the router. Alternatives include an extensive REST API. See details at
|
||||
https://www.universal-devices.com/isy-developers/.
|
||||
|
||||
## Items Configuration with ISY Binding Details
|
||||
|
||||
The following settings can be added to the Items definition.
|
||||
|
||||
* ctrl - Controller address in the format "x.y.z.w". This can be the address of a ISY Insteon Scene. Insteon addresses use the first three bytes and the last byte identified a particular capability of the device.
|
||||
* type - This can be used to select device types with special configuration needs. See the "Device Types" section below.
|
||||
* cmd - Specific ISY control to send to the ISY router as a command, **ST** is the default if left out
|
||||
* addr - The Insteon address to monitor for the change. A scene does not report a status change, only the devices in the scene do. Specify the controller of the scene here. Defaults to the controller address if left out
|
||||
|
||||
## Device Types
|
||||
|
||||
You can specify a specific device type to let the binding know that a device is a special type. This is done using the "type=" configuation item in the binding.
|
||||
|
||||
There are currently 3 types available:
|
||||
|
||||
* thermostat - required to perform temperature calculations properly
|
||||
* lock - locks use the security command instead of the normal off/on commands
|
||||
* heartbeat - several battery powered sensors send a heartbeat. This is just a ST (status) with value 255, and it means that the sensor is still alive. To make rules easier, you can define these as type=heartbeat with an item type of DateTime, and it will update with the current time every time the heartbeat is received. You can then check the item using a rule to see if the DateTime item is too old.
|
||||
|
||||
## OpenHAB Item Examples
|
||||
|
||||
/* Insteon-enabled thermostat. Note "type=thermostat" to ensure proper temp calculations, and cmd=CLISPH to use the ISY setpoint heat value instead of status */
|
||||
Number Temperature_Indoor "Inside [%.2f °F]" <temperature> (All) {isy="ctrl=29.24.98.1,type=thermostat,cmd=ST"}
|
||||
Number Temperature_Setpoint "Desired Temperature [%.2f °F]" <temperature> (All) {isy="ctrl=29.24.98.1,type=thermostat,cmd=CLISPH"}
|
||||
|
||||
/* Regular ISY scene id #12220, but look at device 30.CB.66.1 to get the scene status */
|
||||
Switch Light_Hallway2 "Hallway" <switch> (GroundFloor,Lights) {isy="ctrl=12220,addr=30.CB.66.1"}
|
||||
/* Regular ISY device, controlled directly (won't update scenes!)
|
||||
Switch K_DiningRoom_Light "Dining Room Light" (GroundFloor,Lights) {isy="ctrl=F.C3.7C.1"}
|
||||
|
||||
/* ZWave lock. Note type=lock (makes it use the security commands necessary). The second (Number) entry watches the BATLVL value, which battery-powered devices use to report battery level in percent */
|
||||
Switch BDoorLock "Back Door Lock" <lock> (Locks) {isy="ctrl=ZW004_1,type=lock"}
|
||||
Number BDoorLock_Battery "Back Door Lock Battery [%d]" <battery> (Locks,BattLevels) {isy="ctrl=ZW004_1,cmd=BATLVL"}
|
||||
|
||||
/* Insteon FanLinc, set up with a Keypadlinc. 4 scenes - Off, Low, Med, High */
|
||||
Switch LR_Fan_Off "LR Fan Off" (ISYScenes) {isy="ctrl=4622,addr=1c.e2.d1.3", autoupdate="false"}
|
||||
Switch LR_Fan_Low "LR Fan Low" (ISYScenes) {isy="ctrl=20771,addr=1c.e2.d1.4", autoupdate="false"}
|
||||
Switch LR_Fan_Med "LR Fan Med" (ISYScenes) {isy="ctrl=22031,addr=1c.e2.d1.5", autoupdate="false"}
|
||||
Switch LR_Fan_High "LR Fan High" (ISYScenes) {isy="ctrl=11187,addr=1c.e2.d1.6", autoupdate="false"}
|
||||
|
||||
/* Insteon water sensor - it has 3 subdevices: 1 = dry, 2 = wet, 4 = heartbeat
|
||||
The heartbeat device sends an "ON" (255) ST code as a heartbeat. With type=heartbeat, the binding
|
||||
sends a DateTime value. You can use a rule to check that DateTime to see if you have received
|
||||
a heartbeat recently */
|
||||
Contact Water_Heater_Dry "Water Heater Sensor [MAP(watersensor-en.map):%s]" (Sensors) {isy="addr=25.AD.4F.1"}
|
||||
DateTime Water_Heater_Heartbeat "Water Heater HB [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" (Sensors) {isy="addr=25.AD.4F.4", type=heartbeat}
|
||||
|
||||
The transform file (watersensor-en.map) for the water sensor is:
|
||||
|
||||
CLOSED=Wet
|
||||
OPEN=Dry
|
||||
undefined=Unknown
|
||||
-=Unknown
|
||||
|
||||
## ISY Binding Configuration
|
||||
|
||||
The following settings configure the ISY binding in the openhab.cfg file.
|
||||
|
||||
* isy:refresh=60000 # refresh interval in milliseconds (optional, defaults to 60000 [1 minute])
|
||||
* isy:upnp=true # if true, use UPNP to communicate with the ISY 994i
|
||||
* isy:uuid=uuid:%your_uudid% # UUID of the ISY router
|
||||
* isy:ip=192.168.x.x # the hostname of the ISY router
|
||||
* isy:port=80 # the port of the ISY router
|
||||
* isy:user=user # the user of the ISY router
|
||||
* isy:password=password # the password of the ISY router
|
||||
|
||||
|
||||
## Disclaimer
|
||||
|
||||
There is no guarantee for the function of the binding or its correctness. Use at your own risk.
|
||||
|
||||
## Development Upgrade Instructions
|
||||
|
||||
To build and install the isy binding, you need to first download the Java SDK that corresponds with the firmware version
|
||||
of your ISY 994i.
|
||||
|
||||
|
||||
1. [Download](https://www.universal-devices.com/isy-developers/.) the latest Java SDK zip file, e.g. ISY-WSDK-4.2.21.zip
|
||||
1. Unzip it to some local folder
|
||||
1. Copy the isy_inst.jar file into the org.openhab.binding.isy/lib folder
|
||||
1. Provided that the API and the file name have not changed, there should not be a need to change the source code. Watch for
|
||||
compilation errors and adjust accordingly.
|
||||
|
||||
|
||||
The Lib is pushed with the binding, if you are using a older firmware version than the bundled version you may have issues. The SDK used should work with all newer version.
|
|
@ -57,7 +57,7 @@ The following configuration options are available for the Kodi binding:
|
|||
| `callbackUrl` | Callback URL | URL to use for playing notification sounds, e.g. `http://192.168.0.2:8080` | no |
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
### Thing Configuration
|
||||
|
||||
The Kodi thing requires the IP address of the device hosting your Kodi media center instance and the TCP port to access it on (default: `9090`).
|
||||
These parameters will be found by the auto-discovery feature.
|
||||
|
@ -83,11 +83,29 @@ The Kodi thing supports the following channels:
|
|||
| album | String | Album name of the currently played song |
|
||||
| artist | String | Artist name of the currently played song or director of the currently played movie|
|
||||
| playuri | String | Plays the file with the provided URI |
|
||||
| pvr-open-tv | String | Opens the PVR TV channel with the provided name |
|
||||
| pvr-open-radio | String | Opens the PVR Radio channel with the provided name |
|
||||
| pvr-channel | String | Title of the currently played PVR channel |
|
||||
| shownotification | String | Shows the provided notification message on the screen |
|
||||
| input | String | Allows to control Kodi. Valid values are: `Up`, `Down`, `Left`, `Right`, `Select`, `Back`, `Home`, `ContextMenu`, `Info`, `ShowCodec`, `ShowOSD` |
|
||||
| inputtext | String | This channel emulates a keyboard input |
|
||||
| systemcommand | String | This channel allows to send commands to `shutdown`, `suspend`, `hibernate`, `reboot` kodi |
|
||||
| mediatype | String | The media type of the current file. e.g. song or movie |
|
||||
| mediatype | String | The media type of the current file. Valid return values are: `unknown`, `channel`, `episode`, `movie`, `musicvideo`, `picture`, `radio`, `song`, `video` |
|
||||
|
||||
### 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"). 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.
|
||||
|
||||
A manual setup through a `things/kodi.things` file could look like this:
|
||||
|
||||
```
|
||||
kodi:kodi:myKodi [ipAddress="192.168.1.100", port="9090"] {
|
||||
Channels:
|
||||
Type pvropentv : pvr-open-tv [
|
||||
group="All channels"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Item Configuration
|
||||
|
||||
|
@ -102,8 +120,11 @@ String myKodi_title "Title [%s]" { channel="kodi:kodi:myKodi:
|
|||
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 "PlayerURI [%s]" { channel="kodi:kodi:myKodi:playuri" }
|
||||
String myKodi_notification "Notification [%s]" { channel="kodi:kodi:myKodi:shownotification" }
|
||||
String myKodi_playuri "PlayerURI" { channel="kodi:kodi:myKodi:playuri" }
|
||||
String myKodi_pvropentv "PVR TV channel" { channel="kodi:kodi:myKodi:pvr-open-tv" }
|
||||
String myKodi_pvropenradio "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" }
|
||||
|
@ -127,7 +148,9 @@ sitemap demo label="myKodi"
|
|||
Text item=myKodi_showtitle
|
||||
Text item=myKodi_album
|
||||
Text item=myKodi_artist
|
||||
Text item=myKodi_playuri
|
||||
Selection item=myKodi_pvropentv mappings=[Add your PVR TV channels here ...]
|
||||
Selection item=myKodi_pvropenchannel mappings=[Add your PVR radio channels here ...]
|
||||
Text item=myKodi_pvrchannel
|
||||
Selection item=myKodi_input mappings=[Up='Up', Down='Down', Left='Left', Right='Right', Select='Select', Back='Back', Home='Home', ContextMenu='ContextMenu', Info='Info', ShowCodec='ShowCodec', ShowOSD='ShowOSD']
|
||||
Selection item=myKodi_systemcommand mappings=[Shutdown='Herunterfahren', Suspend='Bereitschaft', Reboot='Neustart']
|
||||
Text item=myKodi_mediatype
|
||||
|
|
|
@ -31,22 +31,24 @@ The following table lists the thing types of the supported LIFX devices:
|
|||
| Color 1000 BR30 | colorlight |
|
||||
| LIFX A19 | colorlight |
|
||||
| LIFX BR30 | colorlight |
|
||||
| LIFX Z | colorlight |
|
||||
| | |
|
||||
| LIFX+ A19 | colorirlight |
|
||||
| LIFX+ BR30 | colorirlight |
|
||||
| | |
|
||||
| LIFX Z | colormzlight |
|
||||
| | |
|
||||
| White 800 (Low Voltage) | whitelight |
|
||||
| White 800 (High Voltage) | whitelight |
|
||||
| White 900 BR30 (Low Voltage) | whitelight |
|
||||
|
||||
The thing type determines the capability of a device and with that the possible ways of interacting with it. The following matrix lists the capabilities (channels) for each type:
|
||||
|
||||
| Thing Type | On/Off | Brightness | Color | Color Temperature | Infrared |
|
||||
|--------------|:------:|:----------:|:-----:|:-----------------:|:--------:|
|
||||
| colorlight | X | | X | X | |
|
||||
| colorirlight | X | | X | X | X |
|
||||
| whitelight | X | X | | X | |
|
||||
| Thing Type | On/Off | Brightness | Color | Color Zone | Color Temperature | Color Temperature Zone | Infrared |
|
||||
|--------------|:------:|:----------:|:-----:|:----------:|:-----------------:|:----------------------:|:--------:|
|
||||
| colorlight | X | | X | | X | | |
|
||||
| colorirlight | X | | X | | X | | X |
|
||||
| colormzlight | X | | X | X | X | X | |
|
||||
| whitelight | X | X | | | X | | |
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -71,21 +73,29 @@ The *fadetime* is an optional thing configuration parameter which configures the
|
|||
|
||||
All devices support some of the following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Description | Thing Types |
|
||||
|-----------------|-----------|--------------------------------------------------------------------------------------|--------------------------------------|
|
||||
| brightness | Dimmer | This channel supports adjusting the brightness value. | whitelight |
|
||||
| color | Color | This channel supports full color control with hue, saturation and brightness values. | colorlight, colorirlight |
|
||||
| Channel Type ID | Item Type | Description | Thing Types |
|
||||
|-----------------|-----------|--------------------------------------------------------------------------------------|----------------------------------------|
|
||||
| brightness | Dimmer | This channel supports adjusting the brightness value. | whitelight |
|
||||
| color | Color | This channel supports full color control with hue, saturation and brightness values. | colorlight, colorirlight, colormzlight |
|
||||
| colorzone | Color | This channel supports full zone color control with hue, saturation and brightness values. | colormzlight |
|
||||
| infrared | Dimmer | This channel supports adjusting the infrared value. *Note:* IR capable lights only activate their infrared LEDs when the brightness drops below a certain level. | colorirlight |
|
||||
| temperature | Dimmer | This channel supports adjusting the color temperature from cold (0%) to warm (100%). | colorlight, colorirlight, whitelight |
|
||||
| signalstrength | Number | This channel represents signal strength with values 0, 1, 2, 3 or 4; 0 being worst strength and 4 being best strength. | colorlight, colorirlight, colormzlight, whitelight |
|
||||
| temperature | Dimmer | This channel supports adjusting the color temperature from cold (0%) to warm (100%). | colorlight, colorirlight, colormzlight, whitelight |
|
||||
| temperaturezone | Dimmer | This channel supports adjusting the zone color temperature from cold (0%) to warm (100%). | colormzlight |
|
||||
|
||||
The *color* and *brightness* channels have a "Power on brightness" configuration option that is used to determine the brightness when a light is switched on. When it is left empty, the brightness of a light remains unchanged when a light is switched on or off.
|
||||
|
||||
MultiZone lights (*colormzlight*) have serveral channels (e.g. *colorzone0*, *temperaturezone0*, etc.) that allow for controlling specific zones of the light. Changing the *color* and *temperature* channels will update the states of all zones. The *color* and *temperature* channels of MultiZone lights always return the same state as *colorzone0*, *temperaturezone0*.
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
In this example **living** is a Color 1000 light that has a *colorlight* thing type which supports *color* and *temperature* channels.
|
||||
|
||||
The **porch** light is a LIFX+ BR30 that has a *colorirlight* thing type which supports *color*, *temperature* and *infrared* channels.
|
||||
|
||||
The **ceiling** light is a LIFX Z with 2 strips (16 zones) that has a *colormzlight* thing type which supports *color*, *colorzone*, *temperature* and *temperaturezone* channels.
|
||||
|
||||
Finally, **kitchen** is a White 800 (Low Voltage) light that has a *whitelight* thing type which supports *brightness* and *temperature* channels.
|
||||
|
||||
Either create a single *Color* item linked to the *color* channel and define *Switch*, *Slider* and *Colorpicker* entries with this item in the sitemap.
|
||||
|
@ -96,22 +106,23 @@ Or create items for each type (*Color*, *Switch*, *Dimmer*) and define the corre
|
|||
|
||||
```
|
||||
Thing lifx:colorlight:living [ deviceId="D073D5A1A1A1" ] {
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness= ]
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness= ]
|
||||
}
|
||||
|
||||
Thing lifx:colorlight:living2 [ deviceId="D073D5A2A2A2" ] {
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness= ]
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness= ]
|
||||
}
|
||||
|
||||
Thing lifx:colorirlight:porch [ deviceId="D073D5B2B2B2", fadetime=0 ] {
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness=75 ]
|
||||
Channels:
|
||||
Type color : color [ powerOnBrightness=75 ]
|
||||
}
|
||||
|
||||
Thing lifx:whitelight:kitchen [ deviceId="D073D5C3C3C3", fadetime=150 ]
|
||||
Thing lifx:colormzlight:ceiling [ deviceId="D073D5C3C3C3" ]
|
||||
|
||||
Thing lifx:whitelight:kitchen [ deviceId="D073D5D4D4D4", fadetime=150 ]
|
||||
```
|
||||
|
||||
### demo.items:
|
||||
|
@ -131,12 +142,20 @@ Dimmer Living2_Temperature { channel="lifx:colorlight:living2:temperature" }
|
|||
Color Porch_Color { channel="lifx:colorirlight:porch:color" }
|
||||
Dimmer Porch_Infrared { channel="lifx:colorirlight:porch:infrared" }
|
||||
Dimmer Porch_Temperature { channel="lifx:colorirlight:porch:temperature" }
|
||||
Number Porch_Signal_Strength { channel="lifx:colorirlight:porch:signalstrength" }
|
||||
|
||||
// Ceiling
|
||||
Color Ceiling_Color { channel="lifx:colormzlight:ceiling:color" }
|
||||
Dimmer Ceiling_Temperature { channel="lifx:colormzlight:ceiling:temperature" }
|
||||
Color Ceiling_Color_Zone_0 { channel="lifx:colormzlight:ceiling:colorzone0" }
|
||||
Dimmer Ceiling_Temperature_Zone_0 { channel="lifx:colormzlight:ceiling:temperaturezone0" }
|
||||
Color Ceiling_Color_Zone_15 { channel="lifx:colormzlight:ceiling:colorzone15" }
|
||||
Dimmer Ceiling_Temperature_Zone_15 { channel="lifx:colormzlight:ceiling:colorzone15" }
|
||||
|
||||
// Kitchen
|
||||
Switch Kitchen_Toggle { channel="lifx:whitelight:kichen:brightness" }
|
||||
Dimmer Kitchen_Brightness { channel="lifx:whitelight:kitchen:brightness" }
|
||||
Dimmer Kitchen_Temperature { channel="lifx:whitelight:kitchen:temperature" }
|
||||
|
||||
```
|
||||
|
||||
### demo.sitemap:
|
||||
|
@ -144,32 +163,44 @@ Dimmer Kitchen_Temperature { channel="lifx:whitelight:kitchen:temperature" }
|
|||
```
|
||||
sitemap demo label="Main Menu"
|
||||
{
|
||||
Frame label="Living" {
|
||||
Switch item=Living_Color
|
||||
Slider item=Living_Color
|
||||
Colorpicker item=Living_Color
|
||||
Slider item=Living_Temperature
|
||||
}
|
||||
|
||||
Frame label="Living2" {
|
||||
Switch item=Living2_Toggle
|
||||
Slider item=Living2_Dimmer
|
||||
Colorpicker item=Living2_Color
|
||||
Slider item=Living2_Temperature
|
||||
Frame label="Living" {
|
||||
Switch item=Living_Color
|
||||
Slider item=Living_Color
|
||||
Colorpicker item=Living_Color
|
||||
Slider item=Living_Temperature
|
||||
}
|
||||
|
||||
Frame label="Porch" {
|
||||
Switch item=Porch_Color
|
||||
Slider item=Porch_Color
|
||||
Colorpicker item=Porch_Color
|
||||
Slider item=Porch_Temperature
|
||||
Slider item=Porch_Infrared
|
||||
}
|
||||
Frame label="Living2" {
|
||||
Switch item=Living2_Toggle
|
||||
Slider item=Living2_Dimmer
|
||||
Colorpicker item=Living2_Color
|
||||
Slider item=Living2_Temperature
|
||||
}
|
||||
|
||||
Frame label="Kitchen" {
|
||||
Switch item=Kitchen_Toggle
|
||||
Slider item=Kitchen_Brightness
|
||||
Slider item=Kitchen_Temperature
|
||||
}
|
||||
Frame label="Porch" {
|
||||
Switch item=Porch_Color
|
||||
Slider item=Porch_Color
|
||||
Colorpicker item=Porch_Color
|
||||
Slider item=Porch_Temperature
|
||||
Slider item=Porch_Infrared
|
||||
Text item=Porch_Signal_Strength
|
||||
}
|
||||
|
||||
Frame label="Ceiling" {
|
||||
Switch item=Ceiling_Color
|
||||
Slider item=Ceiling_Color
|
||||
Colorpicker item=Ceiling_Color
|
||||
Slider item=Ceiling_Temperature
|
||||
Colorpicker item=Ceiling_Color_Zone_0
|
||||
Slider item=Ceiling_Temperature_Zone_0
|
||||
Colorpicker item=Ceiling_Color_Zone_15
|
||||
Slider item=Ceiling_Temperature_Zone_15
|
||||
}
|
||||
|
||||
Frame label="Kitchen" {
|
||||
Switch item=Kitchen_Toggle
|
||||
Slider item=Kitchen_Brightness
|
||||
Slider item=Kitchen_Temperature
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -22,14 +22,14 @@ This binding allows you to integrate, view and control the MAX! Thermostats in t
|
|||
|
||||
This binding support 6 different things types
|
||||
|
||||
| Thing | Type | Description |
|
||||
|----------------|---------|-----------------------------------|
|
||||
| bridge | Bridge | This is the MAX! Cube LAN gateway |
|
||||
| thermostat | Thing | This is for the MAX! Heating Thermostat. This is also used for the powerplug switch "Zwischenstecker-Schaltaktor". |
|
||||
| thermostatplus | Thing | This is for the MAX! Heating Thermostat+. This is the type that can hold the program by itself |
|
||||
| wallthermostat | Thing | MAX! Wall Thermostat. |
|
||||
| ecoswitch | Thing | MAX! Ecoswitch. |
|
||||
| shuttercontact | Thing | MAX! Shuttercontact / Window Contact. |
|
||||
| Thing | Type | Description |
|
||||
|----------------|--------|--------------------------------------------------------------------------------------------------------------------|
|
||||
| bridge | Bridge | This is the MAX! Cube LAN gateway. |
|
||||
| thermostat | Thing | This is for the MAX! Heating Thermostat. This is also used for the powerplug switch "Zwischenstecker-Schaltaktor". |
|
||||
| thermostatplus | Thing | This is for the MAX! Heating Thermostat+. This is the type that can hold the program by itself. |
|
||||
| wallthermostat | Thing | MAX! Wall Thermostat. |
|
||||
| ecoswitch | Thing | MAX! Ecoswitch. |
|
||||
| shuttercontact | Thing | MAX! Shuttercontact / Window Contact. |
|
||||
|
||||
Generally one does not have to worry about the thing types as they are automatically defined.
|
||||
If for any reason you need to manually define the Things and you are not exactly sure what type of thermostat you have, you can choose `thermostat` for both the thermostat and thermostat+, this will not affect their working.
|
||||
|
@ -37,7 +37,7 @@ If for any reason you need to manually define the Things and you are not exactly
|
|||
## Discovery
|
||||
|
||||
The discovery process for the MAX! binding works in 2 steps.
|
||||
When the binding is started or when manually triggered, the network is queried for the existence of a MAX! Cube lan gateway. When the Cube is found, it will become available in the discovery inbox. Periodically the network is queried again for a Cube.
|
||||
When the binding is started or when manually triggered, the network is queried for the existence of a MAX! Cube LAN gateway. When the Cube is found, it will become available in the discovery inbox. Periodically the network is queried again for a Cube.
|
||||
|
||||
Once the Cube is available in openHAB, all the devices connected to it are discovered and added to the discovery inbox. No scan is needed to trigger this.
|
||||
|
||||
|
@ -48,9 +48,9 @@ All the configuration settings are now per MAX! Cube, hence in case you have mul
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
All the things are identified by their Serial number, hence this is mandatory.
|
||||
The Cube (`bridge` thing) also requires the IP address to be defined.
|
||||
All other configuration is optional.
|
||||
All the things are identified by their serial number, hence this is mandatory.
|
||||
The Cube (`bridge` thing) also requires the IP address to be defined.
|
||||
All other configuration is optional.
|
||||
|
||||
Note that several configuration options are automatically populated. Later versions of the binding may allow you to update this information. These properties can be found in the `Device Settings` section of parameters.
|
||||
|
||||
|
@ -59,22 +59,22 @@ Note that several configuration options are automatically populated. Later versi
|
|||
|
||||
Depending on the thing it supports different Channels
|
||||
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|------------------|------------------------|--------------|----------------- |------------- |
|
||||
| mode | String | This channel indicates the mode of a thermostat |
|
||||
| battery_low | Switch | This channel indicates if the device battery is low |
|
||||
| set_temp | Number | This channel indicates the sets temperature of a thermostat. |
|
||||
| actual_temp | Number | This channel indicates the measured temperature of a thermostat. see below for more details|
|
||||
| valve | Number | This channel indicates the valve opening in %. Note this is an advaned setting, normally not visible |
|
||||
| contact_state | Contact | This channel indicates the contact state for a shutterswitch |
|
||||
| free_mem | Number |This channel indicates the free available memory on the cube to hold send commands. Note this is an advanced setting, normally not visible |
|
||||
| duty_cycle | Number | This channel indicates the duty cycle (due to regulatory compliance reasons the cube is allowed only to send for a limited time. Duty cycle indicates how much of the available time is consumed) Note this is an advanced setting, normally not visible. |
|
||||
| Channel Type ID | Item Type | Description | Available on thing |
|
||||
|-----------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
|
||||
| mode | String | This channel indicates the mode of a thermostat (AUTOMATIC/MANUAL/BOOST/VACATION). | thermostat, thermostatplus, wallthermostat |
|
||||
| battery_low | Switch | This channel indicates if the device battery is low (ON/OFF). | thermostat, thermostatplus, wallthermostat, ecoswitch, shuttercontact |
|
||||
| set_temp | Number | This channel indicates the sets temperature (in °C) of a thermostat. | thermostat, thermostatplus, wallthermostat |
|
||||
| actual_temp | Number | This channel indicates the measured temperature (in °C) of a thermostat (see below for more details). | thermostat, thermostatplus, wallthermostat |
|
||||
| valve | Number | This channel indicates the valve opening in %. Note this is an advanced setting, normally not visible. | thermostat, thermostatplus, wallthermostat |
|
||||
| locked | Contact | This channel indicates if the thermostat is locked for adjustments (OPEN/CLOSED). Note this is an advanced setting, normally not visible. | thermostat, thermostatplus, wallthermostat |
|
||||
| contact_state | Contact | This channel indicates the contact state for a shutterswitch (OPEN/CLOSED). | shuttercontact |
|
||||
| free_mem | Number | This channel indicates the free available memory on the cube to hold send commands. Note this is an advanced setting, normally not visible. | bridge |
|
||||
| duty_cycle | Number | This channel indicates the duty cycle (due to regulatory compliance reasons the cube is allowed only to send for a limited time. Duty cycle indicates how much of the available time is consumed) Note this is an advanced setting, normally not visible. | bridge |
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
In most cases no Things need to be defined manually. In case your Cube can't be discovered you need a `max:bridge` definition incl the right IP address of the Cube. Only in exceptional cases you would need to define the thermostats etc.
|
||||
In most cases no Things need to be defined manually. In case your Cube can't be discovered you need a `max:bridge` definition incl. the right IP address of the Cube. Only in exceptional cases you would need to define the thermostats etc.
|
||||
|
||||
max.things:
|
||||
|
||||
|
@ -91,8 +91,8 @@ Group gMAX "MAX Heating" <temperature> [ "home-group" ]
|
|||
|
||||
Switch maxBattery "Battery Low" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:battery_low"}
|
||||
String maxMode "Thermostat Mode Setting" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:mode"}
|
||||
Number maxActual "Actual measured room temperature [%.1f <EFBFBD>C]" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:actual_temp"}
|
||||
Number maxSetTemp "Thermostat temperature setpoint [%.1f <EFBFBD>C]" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:set_temp"}
|
||||
Number maxActual "Actual measured room temperature [%.1f °C]" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:actual_temp"}
|
||||
Number maxSetTemp "Thermostat temperature setpoint [%.1f °C]" (gMAX) {channel="max:thermostat:KEQ0565026:KEQ0648949:set_temp"}
|
||||
|
||||
|
||||
```
|
||||
|
@ -115,24 +115,27 @@ sitemap demo label="Main Menu"
|
|||
## Actual Temperature Update
|
||||
|
||||
Please be aware that the actual temperature measure for thermostats is only updated after the valve moved position or the thermostats mode has changed. Hence the temperature you see may be hours old. In that case you can update the temperature by changing the mode, wait approx. 2 minutes and change the mode back.
|
||||
There is an experimental mode that does this automatically. This can be enabled by showing the "advanced settings"(e.g. in Habmin UI. Than the "Actual Temperature Refresh Rate" can be set. Minimum refresh rate once/10 minutes, recommended 60min to avoid excessive battery drain.
|
||||
There is an experimental mode that does this automatically. This can be enabled by showing the "advanced settings" (e.g. in HABmin UI. Than the "Actual Temperature Refresh Rate" can be set. Minimum refresh rate once/10 minutes, recommended 60min to avoid excessive battery drain.
|
||||
|
||||
|
||||
## New Device Inclusion
|
||||
|
||||
When clicking the discovery button for MAX! devices manually in the UI, you will start New Device Inclusion mode for 60s. During this time holding the _boost_ button on your device will link it to the Cube.
|
||||
|
||||
## Device configuration
|
||||
|
||||
In the _Configuration Parameters_ section of the device things you can update some of the device configuration parameters. Currently the following parameters can be updated:
|
||||
|
||||
* _name_ Name of the thermostat stored in the Cube (also used by the eq3 software).
|
||||
* _name_ Name of the thermostat stored in the Cube (also used by the eQ-3 software).
|
||||
|
||||
_Cube device configurable parameters_
|
||||
|
||||
* _ntpServer1_ The hostname for NTP Server 1 used by the Cube to get the time
|
||||
* _ntpServer2_ The hostname for NTP Server 2 used by the Cube to get the time
|
||||
|
||||
## Action Buttons (visible in Habmin)
|
||||
In the Habmin thing configuration screen several action buttons are available to trigger special actions on the Cube
|
||||
## Action Buttons (visible in HABmin)
|
||||
|
||||
In the HABmin thing configuration screen several action buttons are available to trigger special actions on the Cube
|
||||
|
||||
* _Reset Cube Configuration_. This resets the MAX! Cube room and device information. Devices will need to be included again! To use this button you need to enable 'Advanced settings'
|
||||
|
||||
|
@ -142,4 +145,4 @@ On the MAX! devices you can trigger the following action
|
|||
|
||||
* _Delete Device from Cube_. Deletes the device from the MAX! Cube. Device will need to be included again! To use this button you need to enable 'Advanced settings'
|
||||
|
||||
Note: In PaperUI there are no action buttons. You can trigger these actions changing from 'No Action' in the dropdown to the action value.
|
||||
Note: In Paper UI there are no action buttons. You can trigger these actions changing from 'No Action' in the dropdown to the action value.
|
|
@ -6,7 +6,7 @@ type: binding
|
|||
description: "The Milight binding allows openHAB to send commands to multiple Milight bridges."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.milight/README.md
|
||||
since: 1x
|
||||
install: auto
|
||||
install: legacy
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
|
|
@ -175,7 +175,7 @@ The extended format looks like:
|
|||
(for write)
|
||||
|
||||
```ini
|
||||
[slaveName:writeIndex:trigger=TRIGGER, transformation=TRANSFORMATION, valueType=VALUETYPE]
|
||||
>[slaveName:writeIndex:trigger=TRIGGER, transformation=TRANSFORMATION, valueType=VALUETYPE]
|
||||
```
|
||||
|
||||
Read and write entries can be combined, and there can be zero or more read/write entries. All the keyword arguments after index are optional. Defaults are such that they correspond to binding behaviour currently. Multiple read/write definitions can be specified with commas (whitespace allowed as well).
|
||||
|
|
|
@ -3,7 +3,7 @@ id: mqtt
|
|||
label: MQTT
|
||||
title: MQTT - Bindings
|
||||
type: binding
|
||||
description: "This binding allows openHAB to act as an MQTT client, so that openHAB items can send and receive [MQTT](http://mqtt.org/) messages to/from an MQTT broker. It does not provide MQTT broker functionality, for this you may want to have a look at [Mosquitto](http://mosquitto.org/) or others. There are test servers available at m2m.eclipse.org and test.mosquitto.org."
|
||||
description: "This binding allows openHAB to act as an MQTT client, so that openHAB items"
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.mqtt/README.md
|
||||
since: 1x
|
||||
logo: images/addons/mqtt.png
|
||||
|
@ -16,9 +16,13 @@ install: auto
|
|||
|
||||
# MQTT Binding
|
||||
|
||||
This binding allows openHAB to act as an MQTT client, so that openHAB items can send and receive [MQTT](http://mqtt.org/) messages to/from an MQTT broker. It does not provide MQTT broker functionality, for this you may want to have a look at [Mosquitto](http://mosquitto.org/) or others. There are test servers available at m2m.eclipse.org and test.mosquitto.org.
|
||||
This binding allows openHAB to act as an MQTT client, so that openHAB items
|
||||
can send and receive [MQTT](http://mqtt.org/) messages to/from an MQTT broker.
|
||||
It does not provide MQTT broker functionality, for this you may want to have a
|
||||
look at [Mosquitto](http://mosquitto.org/) or others. There are test servers
|
||||
available at m2m.eclipse.org and test.mosquitto.org.
|
||||
|
||||
OpenHAB provides MQTT support on different levels. The table below gives a quick overview:
|
||||
openHAB provides MQTT support on different levels. The table below gives a quick overview:
|
||||
|
||||
| Level | Description | Usage | Configuration |
|
||||
|-------|-------------|-------|--------|
|
||||
|
@ -33,18 +37,20 @@ The OwnTracks (formerly Mqttitude) binding is also available, which is an extens
|
|||
|
||||
In order to consume or publish messages to an MQTT broker, you need to define all the brokers which you want to connect to, in your `services/mqtt.cfg` file.
|
||||
|
||||
| Property | Default | Description |
|
||||
|----------|------------|-------------|
|
||||
| `<broker>`.url | | Required. URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883 |
|
||||
| `<broker>`.clientId | | Client id (max 23 chars) to use when connecting to the broker. If not provided a default one is generated. |
|
||||
| `<broker>`.user | | User ID to authenticate with the broker. |
|
||||
| `<broker>`.pwd | | Password to authenticate with the broker. |
|
||||
| `<broker>`.qos | 0 | Set the quality of service level for sending messages to this broker. Possible values are 0 (Deliver at most once),1 (Deliver at least once) or 2 (Deliver exactly once). |
|
||||
| `<broker>`.retain | false | true or false. Defines if the broker should retain the messages sent to it. |
|
||||
| `<broker>`.async | true | true or false. Defines if messages are published asynchronously or synchronously. |
|
||||
| `<broker>`.keepAlive | 60 | Integer. Defines the keep alive interval in seconds. |
|
||||
| Property | Default | Required | Description |
|
||||
|----------------------|---------|:--------:|-------------------------------------------------------------|
|
||||
| `<broker>`.url | | Yes | URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883 |
|
||||
| `<broker>`.clientId | random | No* | Client ID to use when connecting to the broker. If not provided a random default is generated. Usually restricted to 23 characters in length. (see the `allowLongerClientIds` setting) |
|
||||
| `<broker>`.user | | Yes | User ID to authenticate with the broker. |
|
||||
| `<broker>`.pwd | | Yes | Password to authenticate with the broker. |
|
||||
| `<broker>`.qos | 0 | No | Set the quality of service level for sending messages to this broker. Possible values are 0 (Deliver at most once), 1 (Deliver at least once) or 2 (Deliver exactly once). |
|
||||
| `<broker>`.retain | false | No | True or false. Defines if the broker should retain the messages sent to it. |
|
||||
| `<broker>`.async | true | No | True or false. Defines if messages are published asynchronously or synchronously. |
|
||||
| `<broker>`.keepAlive | 60 | No | Integer. Defines the keep alive interval in seconds. |
|
||||
| `<broker>`.allowLongerClientIds | false | No | True or false. If set to true, allows the use of clientId values up to 65535 characters long. NOTE: clientId values longer than 23 characters may not be supported by all MQTT servers. Check the server documentation. |
|
||||
|
||||
where `<broker>` is an alias name for the MQTT broker. This is the name you can use in the item binding configurations afterwards.
|
||||
`<broker>` is an alias name for the MQTT broker. This is the name you can use in the item binding configurations afterwards.<br>
|
||||
\* `<broker>`.clientId is not required to be provided because a random value will be generated if a value is not provided.
|
||||
|
||||
### Example Configurations
|
||||
|
||||
|
@ -54,7 +60,7 @@ Example configuration of a simple broker connection:
|
|||
m2m-eclipse.url=tcp://m2m.eclipse.org:1883
|
||||
```
|
||||
|
||||
Example configuration of a encrypted broker connection with authentication:
|
||||
Example configuration of an encrypted broker connection with authentication:
|
||||
|
||||
```
|
||||
mosquitto.url=ssl://test.mosquitto.org:8883
|
||||
|
@ -67,14 +73,16 @@ mosquitto.async=false
|
|||
|
||||
## Item Configuration for Inbound Messages
|
||||
|
||||
Below you can see the structure of the inbound mqtt configuration string. Inbound configurations allow you to receive MQTT messages into an openHAB item.
|
||||
Every item is allowed to have multiple inbound (or outbound) configurations.
|
||||
Below you can see the structure of the inbound MQTT configuration string.
|
||||
Inbound configurations allow you to receive MQTT messages into an openHAB
|
||||
item. Every item is allowed to have multiple inbound (or outbound)
|
||||
configurations.
|
||||
|
||||
```
|
||||
Item myItem {mqtt="<direction>[<broker>:<topic>:<type>:<transformer>], <direction>[<broker>:<topic>:<type>:<transformation>], ..."}
|
||||
```
|
||||
|
||||
Since 1.6 it is possible to add an optional 5th configuration like:
|
||||
Since 1.6 it is possible to add an optional fifth configuration like:
|
||||
|
||||
```
|
||||
Item myItem {mqtt="<direction>[<broker>:<topic>:<type>:<transformer>:<regex_filter>], <direction>[<broker>:<topic>:<type>:<transformation>], ..."}
|
||||
|
@ -83,11 +91,11 @@ Item myItem {mqtt="<direction>[<broker>:<topic>:<type>:<transformer>:<regex_filt
|
|||
| Property | Description |
|
||||
|----------|-------------|
|
||||
| direction | This is always "<" for inbound messages. |
|
||||
| broker | The broker alias as it is defined in the openHab configuration. |
|
||||
| broker | The broker alias as it is defined in the openHAB configuration. |
|
||||
| topic | The MQTT Topic to subscribe to. |
|
||||
| type | Describes what the message content contains: a status update or command. Allowed values are 'state' or 'command'. |
|
||||
| transformation | Rule defining how to transform the received message content into something openHab recognizes. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are 'default' or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any other value than the above types will be interpreted as static text, in which case the actual content of the message is ignored. |
|
||||
| regex_filter(optional, since 1.6) | A string representing a regular expression. Only messages that match this expression will be further processed. All other messages will be dropped. Use Case: If multiple different data is sent over one topic (for example multiple sensors of one device), it is possible to distinguish the messages for different items. Example ".*" (excluding the quotes) will match every message, ".*\"type\"=2\n.*" (excluding the quotes) will match every message including type=2. |
|
||||
| transformation | Rule defining how to transform the received message content into something openHAB recognizes. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are 'default' or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any value other than the above types will be interpreted as static text, in which case the actual content of the message is ignored. |
|
||||
| regex_filter (optional, since 1.6) | A string representing a regular expression. Only messages that match this expression will be further processed. All other messages will be dropped. Use Case: If multiple different data is sent over one topic (for example multiple sensors of one device), it is possible to distinguish the messages for different items. Example ".*" (excluding the quotes) will match every message, ".*\"type\"=2\n.*" (excluding the quotes) will match every message including type=2. |
|
||||
|
||||
### Example Inbound Configurations
|
||||
|
||||
|
@ -101,7 +109,11 @@ Number humidity "humidity [%.1f%%] {mqtt="<[broker:weatherstation/readings:state
|
|||
|
||||
## Item Configuration for Outbound Messages
|
||||
|
||||
Below you can see the structure of the outbound mqtt configuration string. Outbound configurations allow you to publish (send) an MQTT message to the MQTT broker when an item receives a command or state update, and other MQTT clients that are subscribed to the given topic on the same broker, like Arduino devices for example, will receive those messages.
|
||||
Below you can see the structure of the outbound MQTT configuration string.
|
||||
Outbound configurations allow you to publish (send) an MQTT message to the
|
||||
MQTT broker when an item receives a command or state update, and other MQTT
|
||||
clients that are subscribed to the given topic on the same broker, like
|
||||
Arduino devices for example, will receive those messages.
|
||||
|
||||
```
|
||||
Item itemName { mqtt="<direction>[<broker>:<topic>:<type>:<trigger>:<transformation>]" }
|
||||
|
@ -113,11 +125,11 @@ Item itemName { mqtt="<direction>[<broker>:<topic>:<type>:<trigger>:<transformat
|
|||
| broker | The broker alias as it was defined in the openHAB configuration. |
|
||||
| topic | The MQTT Topic to publish messages to. |
|
||||
| type | 'state' or 'command'. Indicates whether the receiving of a status update or command triggers the sending of an outbound message. |
|
||||
| trigger | Specifies a specific OpenHAB command or state (e.g. ON, OFF, a DecimalType, ..) which triggers the sending of an outbound message. Use `*` to indicate that any command or state should trigger the sending. |
|
||||
| transformation | Rule defining how to create the message content. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are 'default' or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any other value than the above types will be interpreted as static text, in which case this text is used as the message content. |
|
||||
| trigger | Specifies an openHAB command or state (e.g. ON, OFF, a DecimalType, ..) which triggers the sending of an outbound message. Use `*` to indicate that any command or state should trigger the sending. |
|
||||
| transformation | Rule defining how to create the message content. Transformations are defined in the format of TRANSFORMATION_NAME(transformation_function). Allowed values are 'default' or any of the transformers provided in the org.openhab.core.transform bundle. Custom transformations can be contributed directly to the transform bundle by making the Transformation available through Declarative Services. Any value other than the above types will be interpreted as static text, in which case this text is used as the message content. |
|
||||
|
||||
|
||||
When the message content for an outbound message is created, the following variables are replaced with their respective value:
|
||||
When the message content for an outbound message is created, the following variables are replaced with their respective values:
|
||||
|
||||
- ${itemName} : name of the item which triggered the sending
|
||||
- ${state} : current state of the item (only for type 'state')
|
||||
|
@ -132,9 +144,13 @@ Switch mySwitch {mqtt=">[mybroker:myhouse/office/light:command:ON:1],>[mybroker:
|
|||
|
||||
## Event Bus Binding Configuration
|
||||
|
||||
In addition to configuring MQTT publish/subscribe options for specific openHAB items, you can also define a generic configuration in the `services/mqtt-eventbus.cfg` file which will act on **ALL** status updates or commands on the openHAB event bus.
|
||||
In addition to configuring MQTT publish/subscribe options for specific openHAB
|
||||
items, you can also define a generic configuration in the `services/mqtt-eventbus.cfg`
|
||||
file which will act on **ALL** status updates or commands on the openHAB event
|
||||
bus.
|
||||
|
||||
The following properties can be used to configure MQTT for the openHAB event bus in the file `services/mqtt-eventbus.cfg`:
|
||||
The following properties can be used to configure MQTT for the openHAB event
|
||||
bus in the file `services/mqtt-eventbus.cfg`:
|
||||
|
||||
```
|
||||
broker=<broker>
|
||||
|
@ -144,7 +160,8 @@ stateSubscribeTopic=<stateSubscribeTopic>
|
|||
commandSubscribeTopic=<commandSubscribeTopic>
|
||||
```
|
||||
|
||||
The properties indicated by `<...>` need to be replaced with an actual value. The table below lists the meaning of the different properties.
|
||||
The properties indicated by `<...>` need to be replaced with an actual value.
|
||||
The table below lists the meaning of the different properties.
|
||||
|
||||
| Property | Description |
|
||||
|----------|-------------|
|
||||
|
@ -156,8 +173,12 @@ The properties indicated by `<...>` need to be replaced with an actual value. T
|
|||
|
||||
### Example Configurations
|
||||
|
||||
Example configuration for a event bus binding, which sends all commands to an MQTT broker and receives status updates from that broker.
|
||||
This scenario could be used for example to link 2 openHAB instances together where the master instance sends all commands to the slave instance and the slave instance sends all status updates back to the master. The example below shows an example configuration for the master node.
|
||||
Example configuration for an event bus binding, which sends all commands to an
|
||||
MQTT broker and receives status updates from that broker. This scenario could
|
||||
be used, for example, to link 2 openHAB instances together where the master
|
||||
instance sends all commands to the slave instance and the slave instance sends
|
||||
all status updates back to the master. The example below shows an example
|
||||
configuration for the master node.
|
||||
|
||||
```
|
||||
broker=m2m-eclipse
|
||||
|
@ -167,12 +188,22 @@ stateSubscribeTopic=/openHAB/in/${item}/state
|
|||
|
||||
## Using the transport (org.openhab.io.transport.mqtt) bundle
|
||||
|
||||
When the default MQTT binding configuration options are not sufficient for your needs, you can also use the MQTT transport bundle directly from within your own binding.
|
||||
When the default MQTT binding configuration options are not sufficient for
|
||||
your needs, you can also use the MQTT transport bundle directly from within
|
||||
your own binding.
|
||||
|
||||
## MqttService
|
||||
|
||||
Using the MqttService, your binding can add custom message consumers and publishers to any of the defined MQTT brokers. You don't have to worry about (re)connection issues, all of this is done by the transport.mqtt bundle. The MqttService class is available to your binding through Declarative Services. A good example on how to use the MqttService can be found in the persistence (org.openhab.persistence.mqtt) bundle.
|
||||
Using the MqttService, your binding can add custom message consumers and
|
||||
publishers to any of the defined MQTT brokers. You don't have to worry about
|
||||
(re)connection issues; all of this is done by the transport.mqtt bundle. The
|
||||
MqttService class is available to your binding through Declarative Services.
|
||||
A good example on how to use the MqttService can be found in the org.openhab.persistence.mqtt
|
||||
bundle.
|
||||
|
||||
## Eclipse Paho
|
||||
|
||||
If the above service doesn't provide all the flexibility you need, you can also use the Eclipse Paho library directly in your binding. To make the library available, it's sufficient to add a dependency to the org.openhab.io.transport.mqtt bundle and to add org.eclipse.paho.client.mqtttv3 to your list of imported packages.
|
||||
If the above service doesn't provide all the flexibility you need, you can
|
||||
also use the Eclipse Paho library directly in your binding. To make the
|
||||
library available, it's sufficient to add a dependency to the org.openhab.io.transport.mqtt
|
||||
bundle and to add org.eclipse.paho.client.mqtttv3 to your list of imported packages.
|
||||
|
|
|
@ -30,7 +30,7 @@ For this reason, the binding does not do an automatic background discovery, but
|
|||
## Thing Configuration
|
||||
|
||||
```
|
||||
network:device:devicename [ hostname="192.168.0.64", port="0", retry="1", timeout="5000", refresh_interval="60000", use_system_ping="false", dhcplisten="true" ]
|
||||
network:device:devicename [ hostname="192.168.0.64", port=0, retry=1, timeout=5000, refresh_interval=60000, use_system_ping="false", dhcplisten="true" ]
|
||||
```
|
||||
|
||||
- **hostname:** IP address or hostname of the device
|
||||
|
@ -102,7 +102,7 @@ All devices support some of the following channels:
|
|||
demo.Things:
|
||||
|
||||
```xtend
|
||||
network:device:devicename [ hostname="192.168.0.42", port="0", retry="1", timeout="5000", refresh_interval="60000", use_system_ping="false", dhcplisten="true" ]
|
||||
network:device:devicename [ hostname="192.168.0.42", port=0, retry=1, timeout=5000, refresh_interval=60000, use_system_ping="false", dhcplisten="true" ]
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
|
|
@ -66,13 +66,13 @@ Apple provides build-in FTDI drivers for OS X, which need to be disabled to get
|
|||
FTDI driver disabling can be done by the following command
|
||||
|
||||
```
|
||||
sudo kextload -b com.apple.driver.AppleUSBFTDI
|
||||
sudo kextunload -b com.apple.driver.AppleUSBFTDI
|
||||
```
|
||||
|
||||
FTDI driver can be enabled by the following command
|
||||
|
||||
```
|
||||
sudo kextunload -b com.apple.driver.AppleUSBFTDI
|
||||
sudo kextload -b com.apple.driver.AppleUSBFTDI
|
||||
```
|
||||
|
||||
If you have any problems with JD2XX or you don't want to disable FTDI driver on OS X, you can also configure RFXCOM transceivers/receivers manually.
|
||||
|
@ -100,32 +100,69 @@ Bridge rfxcom:tcpbridge:sunflower [ host="sunflower", port=10001 ] {
|
|||
}
|
||||
```
|
||||
|
||||
## Protocol specific details
|
||||
|
||||
### Lighting 4
|
||||
|
||||
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.
|
||||
|
||||
For a usb attached RFXCOM on Windows the configuration could look like this (note that the `onCommandId`, `offCommandId` and `pulse` are all optional):
|
||||
|
||||
```
|
||||
Bridge rfxcom:bridge:238adf67 [ serialPort="COM4" ] {
|
||||
Thing lighting4 17745 [deviceId="17745", subType="PT2262", onCommandId=7, offCommandId=4, pulse=800]
|
||||
Thing lighting4 motion [deviceId="286169", subType="PT2262", onCommandId=9, pulse=392]
|
||||
}
|
||||
```
|
||||
|
||||
Your items file could look like this:
|
||||
|
||||
```
|
||||
Switch Switch {channel="rfxcom:lighting4:238adf67:17745:command"}
|
||||
Number SwitchCommandId "Command ID [%d]" {channel="rfxcom:lighting4:238adf67:17745:commandId"}
|
||||
```
|
||||
|
||||
And if you want random actions on your relay you could for example do like this:
|
||||
|
||||
```
|
||||
rule "Set random relay variations"
|
||||
when
|
||||
System started or
|
||||
Time cron "/20 * * * * ?"
|
||||
then
|
||||
SwitchCommandId.sendCommand((Math::random * 15.9).intValue)
|
||||
end
|
||||
```
|
||||
|
||||
## Channels
|
||||
|
||||
This binding currently supports following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|------------------------|--------------|
|
||||
| batteryLevel | Number | Battery level. |
|
||||
| command | Switch | Command channel. |
|
||||
| contact | Contact | Contact channel. |
|
||||
| dimmingLevel | Dimmer | Dimming level channel. |
|
||||
| humidity | Number | Relative humidity level in percentages. |
|
||||
| humidityStatus | String | Current humidity status. |
|
||||
| instantamp | Number | Instant current in Amperes. |
|
||||
| instantpower | Number | Instant power consumption in Watts. |
|
||||
| status | String | Status channel. |
|
||||
| setpoint | Number | Requested temperature. |
|
||||
| mood | Number | Mood channel. |
|
||||
| motion | Switch | Motion detection sensor state. |
|
||||
| rainRate | Number | Rain fall rate in millimeters per hour. |
|
||||
| rainTotal | Number | Total rain in millimeters. |
|
||||
| rawMessage | String | Hexadecimal string of the raw RF message. |
|
||||
| rawPayload | String | Hexadecimal string of the message payload, without header. |
|
||||
| shutter | Rollershutter | Shutter channel. |
|
||||
| signalLevel | Number | Received signal strength level. |
|
||||
| temperature | Number | Current temperature in degree Celsius. |
|
||||
| totalUsage | Number | Used energy in Watt hours. |
|
||||
| totalAmpHour | Number | Used "energy" in ampere-hours. |
|
||||
| windDirection | Number | Wind direction in degrees. |
|
||||
| windSpeed | Number | Average wind speed in meters per second. |
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|---------------|------------------------------------------------------------|
|
||||
| batteryLevel | Number | Battery level. |
|
||||
| command | Switch | Command channel. |
|
||||
| commandId | String | Id of the command. |
|
||||
| contact | Contact | Contact channel. |
|
||||
| dimmingLevel | Dimmer | Dimming level channel. |
|
||||
| humidity | Number | Relative humidity level in percentages. |
|
||||
| humidityStatus | String | Current humidity status. |
|
||||
| instantamp | Number | Instant current in Amperes. |
|
||||
| instantpower | Number | Instant power consumption in Watts. |
|
||||
| status | String | Status channel. |
|
||||
| setpoint | Number | Requested temperature. |
|
||||
| mood | Number | Mood channel. |
|
||||
| motion | Switch | Motion detection sensor state. |
|
||||
| rainRate | Number | Rain fall rate in millimeters per hour. |
|
||||
| rainTotal | Number | Total rain in millimeters. |
|
||||
| rawMessage | String | Hexadecimal string of the raw RF message. |
|
||||
| rawPayload | String | Hexadecimal string of the message payload, without header. |
|
||||
| shutter | Rollershutter | Shutter channel. |
|
||||
| signalLevel | Number | Received signal strength level. |
|
||||
| temperature | Number | Current temperature in degree Celsius. |
|
||||
| totalUsage | Number | Used energy in Watt hours. |
|
||||
| totalAmpHour | Number | Used "energy" in ampere-hours. |
|
||||
| windDirection | Number | Wind direction in degrees. |
|
||||
| windSpeed | Number | Average wind speed in meters per second. |
|
||||
|
|
|
@ -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.7 (everything but the Media Managment functionality). 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). 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)."
|
||||
since: 2x
|
||||
logo: images/addons/russound.png
|
||||
install: auto
|
||||
|
@ -15,20 +15,27 @@ 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.7 (everything but the Media Managment functionality). 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:* 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)
|
||||
* Bridge: Russound Source (1-12 sources supported)
|
||||
* Bridge: Russound Bank (1-6 banks supported for any tuner source)
|
||||
* Thing: Russound Bank Preset (1-6 presets supported for each bank)
|
||||
* Thing: Russound System Favorite (1-32 favorites supported)
|
||||
* Bridge: Russound Zone (1-6 zones supported for each controller)
|
||||
* Thing: Russound Zone Favorite (1-2 zone favorites for each zone)
|
||||
* Thing: Russound Zone Presets (1-36 presets for each zone [corresponds to banks 1-6, presets 1-6 for each bank])
|
||||
* 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.
|
||||
|
||||
## 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.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The following configurations occur for each of the bridges/things:
|
||||
|
@ -40,12 +47,7 @@ The following configurations occur for each of the bridges/things:
|
|||
| ipAddress | string | IP Address or host name of the russound system (usually main controller) |
|
||||
| ping | int | Interval, in seconds, to ping the system to keep connection alive |
|
||||
| retryPolling | int | Interval, in seconds, to retry a failed connection attempt |
|
||||
|
||||
### Russound System Favorite
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| favorite | int | The favorite # (1-32) |
|
||||
| scanDevice | boolean | Whether to scan device at startup and discover controllers/sources/zones |
|
||||
|
||||
### Russound Source
|
||||
|
||||
|
@ -53,18 +55,6 @@ The following configurations occur for each of the bridges/things:
|
|||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| source | int | The source # (1-12) |
|
||||
|
||||
### Russound Bank
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| bank | int | The bank # (1-6) |
|
||||
|
||||
### Russound Bank Preset
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| preset | int | The preset # (1-6) |
|
||||
|
||||
### Russound Controller
|
||||
|
||||
| Name | Type | Description |
|
||||
|
@ -77,18 +67,6 @@ The following configurations occur for each of the bridges/things:
|
|||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| zone | int | The zone # (1-6) |
|
||||
|
||||
### Russound Zone Favorite
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| favorite | int | The zone favorite # (1-2) |
|
||||
|
||||
### Russound Zone Preset Commands
|
||||
|
||||
| Name | Type | Description |
|
||||
|--------------|---------------|--------------------------------------------------------------------------|
|
||||
| preset | int | The zone preset # (1-36 - corresponds to bank 1-6, preset 1-6) |
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
|
@ -98,82 +76,83 @@ The following channels are supported for each bridge/thing
|
|||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| version | R | String | The firmware version of the system |
|
||||
| status | R | Switch | Whether any controller/zone is on (or if all are off) |
|
||||
| language | RW | String | System language (english, chinese and russian are supported) |
|
||||
| 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 |
|
||||
|
||||
### Russound System Favorite
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| name | R | String | The name of the system favorite (changed by zone favorites) |
|
||||
| valid | R | Switch | If system favorite is valid or not (changed by zone favorites) |
|
||||
#### 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).
|
||||
|
||||
### 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 |
|
||||
| ipaddress | R | String | The IP Address of the source |
|
||||
| composername | R | String | The currently playing composer name |
|
||||
| channel | R | String | The currently playing channel (usually tuner frequency) |
|
||||
| channelname | R | String | The currently playing channel 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 |
|
||||
| coverart | R | Image | The currently playing cover art image |
|
||||
| playlistname | R | String | The currently playing play list name |
|
||||
| songname | R | String | The currently playing song name |
|
||||
| mode | R | String | The provider mode or streaming service |
|
||||
| shufflemode | R | String | The current shuffle mode |
|
||||
| repeatmode | R | String | The current repeat mode |
|
||||
| rating | R | String | The rating for the currently played song (can be changed via zone) |
|
||||
| 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) |
|
||||
| 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 |
|
||||
|
||||
### Russound Bank
|
||||
#### Notes
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| name | R | String | The name of the bank (changed by SCS-C5 software) |
|
||||
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).
|
||||
|
||||
### Russound Preset
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| name | R | String | The name of the Preset (changed by zone preset commands) |
|
||||
| valid | R | Switch | If preset is valid or not (changed by zone preset commands) |
|
||||
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 |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| type | R | String | The model type of the controller (i.e. "MCA-C5") |
|
||||
| ipaddress | R | String | The IPAddress of the controller (only if it's the main controller) |
|
||||
| macaddress | R | String | The MAC Address of the controller (only if it's the main 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"},...]`
|
||||
|
||||
### Russound Zone
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|--------------------------------------------------------------------- |
|
||||
| status | RW | Switch | Whether the zone is on or off |
|
||||
| name | R | String | The name of the zone (changed by SCS-C5 software) |
|
||||
| source | RW | Number | The (physical) number for the current source |
|
||||
| volume | RW | Number | The current volume of the zone (0 to 50) |
|
||||
| mute | RW | Switch | Whether the zone is muted or not |
|
||||
| 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 | Number | The initial volume when turned on (0 to 50) |
|
||||
| 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) |
|
||||
|
@ -187,47 +166,57 @@ The following channels are supported for each bridge/thing
|
|||
| 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) |
|
||||
|
||||
* 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.
|
||||
* 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.
|
||||
* If you send a OnOffType to the volume will have the same affect as turning the zone on/off (ie sending OnOffType to "status")
|
||||
* The volume PercentType will be scaled to Russound's volume of 0-50 (ie 50% = volume of 25, 100% = volume of 50)
|
||||
#### 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.
|
||||
|
||||
### Russound Zone Favorite
|
||||
##### System Favorites
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|----------------------------------------------------------------------------- |
|
||||
| name | RW | String | The name of the zone favorite (only saved when the 'savexxx' cmd is issued) |
|
||||
| valid | R | Switch | If favorite is valid or not ('on' when favorite is saved, 'off' when deleted |
|
||||
| cmd | W | String | The favorite command (see note below) |
|
||||
The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will have a representation for each VALID favorite on the system (ie where "valid" is true). You will have up to 32 system favorites in the JSON array (the ID field will be between 1 and 32). System favorites will be the same on ALL zones (because they are system level). This channel appears on the zone because when you send a system favorite representation to zone channel, it sets the system favorite to what is playing in the zone.
|
||||
|
||||
The favorite command channel ("cmd") supports the following
|
||||
There are three different ways to use this channel:
|
||||
|
||||
| Command Text | Description |
|
||||
|--------------|-----------------------------------------------------|
|
||||
| savesys | Save the associated zone as the a system favorite |
|
||||
| restoresys | Restores the system favorite to the associated zone |
|
||||
| deletesys | Deletes the system favorite |
|
||||
| savezone | Save the associated zone as the a zone favorite |
|
||||
| restorezone | Restores the zone favorite to the associated zone |
|
||||
| deletezone | Deletes the zone favorite |
|
||||
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"}]`
|
||||
|
||||
### Russound Zone Preset Commands
|
||||
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).
|
||||
|
||||
| Channel Type ID | Read/Write | Item Type | Description |
|
||||
|--------------------|------------|--------------|-----------------------------------------------------------------------------------------|
|
||||
| name | RW | String | The name of the preset (only saved when the 'save' preset cmd is issued) |
|
||||
| valid | R | Switch | If favorite is valid or not ('on' when a preset is saved, 'off' when preset is deleted) |
|
||||
| cmd | W | String | The preset command (see note below) |
|
||||
##### Zone Favorites
|
||||
|
||||
The preset command channel ("cmd") supports the following
|
||||
The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will have a representation for each VALID favorite in the zone (ie where "valid" is true). You will have up to 2 zone favorites in the JSON array (the ID field will be between 1 and 2).
|
||||
|
||||
| Command Text | Description |
|
||||
|--------------|--------------------------------------------|
|
||||
| save | Save the associated zone as the preset |
|
||||
| restore | Restores the preset to the associated zone |
|
||||
| delete | Deletes the preset |
|
||||
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"}] `
|
||||
|
||||
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.
|
||||
|
||||
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).
|
||||
|
||||
##### Zone Presets
|
||||
|
||||
The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy", "bank": xxx, "bankPreset":yyyy},...]` and will have a representation for each VALID preset in the zone (ie where "valid" is true). Please note that this channel is only valid if the related source is a tuner. If not a tuner, an empty json array will be returned. You will have up to 36 presets to choose from (ID from 1 to 36). The "bank" and "bankPreset" are readonly (will be ignored if sent) and are informational only (i.e. specify the bank and the preset within the bank for convenience).
|
||||
|
||||
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"}]`
|
||||
|
||||
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.
|
||||
|
||||
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).
|
||||
|
||||
### Source channel support cross reference
|
||||
|
||||
|
@ -262,49 +251,28 @@ The preset command channel ("cmd") supports the following
|
|||
The following is an example of
|
||||
|
||||
1. Main controller (#1) at ipaddress 192.168.1.24
|
||||
2. Two Sources connected to it (#1 is the internal AM/FM and #2 is a DMS 3.1)
|
||||
3. Two System favorites (#1 FM 102.9, #2 Pandora on DMS)
|
||||
4. One bank (called "FM-1")
|
||||
5. Two presets within the bank (#1 FM 100.7, #2 FM 105.1)
|
||||
6. Four zones on the controller (1-4 in various rooms)
|
||||
7. Zone 1 has two favorites (#1 Spotify on DMS, #2 Airplay on DMS)
|
||||
8. Zone 2 has two presets (#1 corresponds to bank 1/preset 1 [102.9], #2 corresponds to bank1/preset 2 [Pandora])
|
||||
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:sysfavorite:1 (russound:rio:home) [ favorite=1 ]
|
||||
russound:sysfavorite:2 (russound:rio:home) [ favorite=2 ]
|
||||
russound:controller:1 (russound:rio:home) [ controller=1 ]
|
||||
russound:source:1 (russound:rio:home) [ source=1 ]
|
||||
russound:source:2 (russound:rio:home) [ source=2 ]
|
||||
russound:bank:1 (russound:source:1) [ bank=1 ]
|
||||
russound:bankpreset:1 (russound:bank:1) [ preset=1 ]
|
||||
russound:bankpreset:2 (russound:bank:1) [ preset=2 ]
|
||||
russound:zone:1 (russound:controller:1) [ zone=1 ]
|
||||
russound:zone:2 (russound:controller:1) [ zone=2 ]
|
||||
russound:zone:3 (russound:controller:1) [ zone=3 ]
|
||||
russound:zone:4 (russound:controller:1) [ zone=4 ]
|
||||
russound:zonefavorite:1 (russound:zone:1) [ favorite=1 ]
|
||||
russound:zonefavorite:2 (russound:zone:1) [ favorite=2 ]
|
||||
russound:zonepreset:1 (russound:zone:2) [ preset=1 ]
|
||||
russound:zonepreset:2 (russound:zone:2) [ preset=2 ]
|
||||
```
|
||||
|
||||
This is an example of all the items that can be included (regardless of the above setup)
|
||||
.items
|
||||
|
||||
```
|
||||
String Rio_Version "Version [%s]" { channel="russound:rio:home:version" }
|
||||
String Rio_Lang "Language [%s]" { channel="russound:rio:home:lang" }
|
||||
Switch Rio_Status "Status [%s]" { channel="russound:rio:home:status" }
|
||||
Switch Rio_AllOn "All Zones" { channel="russound:rio:home:allon" }
|
||||
|
||||
String Rio_Ctl_Type "Model [%s]" { channel="russound:controller:1:type" }
|
||||
String Rio_Ctl_IPAddress "IP Address [%s]" { channel="russound:controller:1:ipaddress" }
|
||||
String Rio_Ctl_MacAddress "MAC [%s]" { channel="russound:controller:1:macaddress" }
|
||||
|
||||
String Rio_Zone_Name "Name [%s]" { channel="russound:zone:1:name" }
|
||||
Switch Rio_Zone_Status "Status" { channel="russound:zone:1:status" }
|
||||
Number Rio_Zone_Source "Source [%s]" { channel="russound:zone:1:source" }
|
||||
|
@ -328,7 +296,6 @@ Switch Rio_Zone_Rating "Rating" { channel="russound:zone:1:rating", autoupdate="
|
|||
|
||||
String Rio_Src_Name "Name [%s]" { channel="russound:source:1:name" }
|
||||
String Rio_Src_Type "Type [%s]" { channel="russound:source:1:type" }
|
||||
String Rio_Src_IP "IPAddress [%s]" { channel="russound:source:1:ipaddress" }
|
||||
String Rio_Src_Composer "Composer [%s]" { channel="russound:source:1:composername" }
|
||||
String Rio_Src_Channel "Channel [%s]" { channel="russound:source:1:channel" }
|
||||
String Rio_Src_ChannelName "Channel Name [%s]" { channel="russound:source:1:channelname" }
|
||||
|
@ -348,27 +315,7 @@ String Rio_Src_RadioText2 "Radio Text #2 [%s]" { channel="russound:source:1:radi
|
|||
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" }
|
||||
|
||||
String Rio_Sys_Favorite_Name "Name1 [%s]" { channel="russound:sysfavorite:1:name" }
|
||||
Switch Rio_Sys_Favorite_Valid "Valid1 [%s]" { channel="russound:sysfavorite:1:valid" }
|
||||
String Rio_Sys_Favorite_Name2 "Name2 [%s]" { channel="russound:sysfavorite:2:name" }
|
||||
Switch Rio_Sys_Favorite_Valid2 "Valid2 [%s]" { channel="russound:sysfavorite:2:valid" }
|
||||
|
||||
String Rio_Zone_Favorite_Name "Name [%s]" { channel="russound:zonefavorite:1:name" }
|
||||
Switch Rio_Zone_Favorite_Valid "Valid [%s]" { channel="russound:zonefavorite:1:valid", autoupdate="false" }
|
||||
String Rio_Zone_Favorite_Cmd "Command" { channel="russound:zonefavorite:1:cmd" }
|
||||
String Rio_Zone_Favorite_Name2 "Name2 [%s]" { channel="russound:zonefavorite:2:name" }
|
||||
Switch Rio_Zone_Favorite_Valid2 "Valid2 [%s]" { channel="russound:zonefavorite:2:valid", autoupdate="false" }
|
||||
String Rio_Zone_Favorite_Cmd2 "Command2" { channel="russound:zonefavorite:2:cmd" }
|
||||
|
||||
String Rio_Src_Bank_Name "Name [%s]" { channel="russound:bank:1:name" }
|
||||
|
||||
String Rio_Bank_Preset_Name "Name [%s]" { channel="russound:bankpreset:1:name" }
|
||||
Switch Rio_Bank_Preset_Valid "Valid [%s]" { channel="russound:bankpreset:1:valid" }
|
||||
String Rio_Bank_Preset_Name2 "Name2 [%s]" { channel="russound:bankpreset:2:name" }
|
||||
Switch Rio_Bank_Preset_Valid2 "Valid2 [%s]" { channel="russound:bankpreset:2:valid" }
|
||||
|
||||
String Rio_Zone_Preset_Cmd "Command" { channel="russound:zonepreset:1:cmd" }
|
||||
String Rio_Zone_Preset_Cmd2 "Command2" { channel="russound:zonepreset:2:cmd" }
|
||||
```
|
||||
|
||||
.sitemap
|
||||
|
@ -376,38 +323,16 @@ String Rio_Zone_Preset_Cmd2 "Command2" { channel="russound:zonepreset:2:cmd" }
|
|||
```
|
||||
Frame label="Russound" {
|
||||
Text label="System" {
|
||||
Text item=Rio_Version
|
||||
Text item=Rio_Status
|
||||
Selection item=Rio_Lang mappings=[ENGLISH="English", RUSSIAN="Russian", CHINESE="Chinese"]
|
||||
Switch item=Rio_AllOn
|
||||
Text label="Favorites" {
|
||||
Text item=Rio_Sys_Favorite_Name
|
||||
Text item=Rio_Sys_Favorite_Valid
|
||||
Text item=Rio_Sys_Favorite_Name2
|
||||
Text item=Rio_Sys_Favorite_Valid2
|
||||
}
|
||||
}
|
||||
Text label="Source 1" {
|
||||
Text label="Bank 1" {
|
||||
Text item=Rio_Src_Bank_Name
|
||||
Text label="Presets" {
|
||||
Text item=Rio_Bank_Preset_Name
|
||||
Text item=Rio_Bank_Preset_Valid
|
||||
Text item=Rio_Bank_Preset_Name2
|
||||
Text item=Rio_Bank_Preset_Valid2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Text label="Controller 1" {
|
||||
Text item=Rio_Ctl_Type
|
||||
Text item=Rio_Ctl_IPAddress
|
||||
Text item=Rio_Ctl_MacAddress
|
||||
|
||||
Text label="Zone 1" {
|
||||
Text item=Rio_Zone_Name
|
||||
Switch item=Rio_Zone_Status
|
||||
Selection item=Rio_Zone_Source mappings=[1="Room1", 2="Room2", 3="Room3", 4="Room4"]
|
||||
Selection item=Rio_Zone_Source mappings=[1="AM/FM", 2="Stream #1", 3="Stream #2", 4="Stream #3"]
|
||||
Setpoint item=Rio_Zone_Bass
|
||||
Setpoint item=Rio_Zone_Treble
|
||||
Setpoint item=Rio_Zone_Balance
|
||||
|
@ -437,7 +362,6 @@ Frame label="Russound" {
|
|||
Text item= Rio_Src_ArtistName
|
||||
Text item= Rio_Src_AlbumName
|
||||
Text item= Rio_Src_Cover
|
||||
Image item= Rio_Src_Cover
|
||||
Text item= Rio_Src_PlaylistName
|
||||
Text item= Rio_Src_SongName
|
||||
Text item= Rio_Src_Mode
|
||||
|
@ -449,21 +373,7 @@ Frame label="Russound" {
|
|||
Text item= Rio_Src_RadioText2
|
||||
Text item= Rio_Src_RadioText3
|
||||
Text item= Rio_Src_RadioText4
|
||||
}
|
||||
|
||||
Text label="Favorite" {
|
||||
Text item=Rio_Zone_Favorite_Name
|
||||
Text item=Rio_Zone_Favorite_Valid
|
||||
Selection item=Rio_Zone_Favorite_Cmd mappings=[savezone="Save Zone", restorezone="Restore Zone", deletezone="Delete Zone", savesys="Save System", restoresys="Restore System", deletesys="Delete System"]
|
||||
Text item=Rio_Zone_Favorite_Name2
|
||||
Text item=Rio_Zone_Favorite_Valid2
|
||||
Selection item=Rio_Zone_Favorite_Cmd2 mappings=[savezone="Save Zone", restorezone="Restore Zone", deletezone="Delete Zone", savesys="Save System", restoresys="Restore System", deletesys="Delete System"]
|
||||
}
|
||||
|
||||
Text label="Preset" {
|
||||
Selection item=Rio_Zone_Preset_Cmd mappings=[save="Save", restore="Restore", delete="Delete"]
|
||||
Selection item=Rio_Zone_Preset_Cmd2 mappings=[save="Save", restore="Restore", delete="Delete"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,6 +63,8 @@ Number items can be used only if `<object_number>` is not given, and the number
|
|||
| doors | defines doors |
|
||||
| status | defines a status item |
|
||||
| module | defines connection status item |
|
||||
| trouble | defines a trouble |
|
||||
| trouble_memory | defines memory of a trouble |
|
||||
|
||||
|
||||
### Valid state_type values for "zone" objects
|
||||
|
@ -111,7 +113,7 @@ Number items can be used only if `<object_number>` is not given, and the number
|
|||
|
||||
| Type | Notes |
|
||||
|-------------|-------|
|
||||
| opened | ON command opens the doors. |
|
||||
| opened | ON command opens the door. |
|
||||
| opened_long | |
|
||||
|
||||
|
||||
|
@ -137,6 +139,118 @@ Number items can be used only if `<object_number>` is not given, and the number
|
|||
| connection_errors | number of consecutive connection errors; clears on successful connection |
|
||||
|
||||
|
||||
### Valid `state_type` values for "trouble" objects
|
||||
|
||||
| Type | Notes |
|
||||
|------|-------|
|
||||
| technical_zone | object number range: 1-128 |
|
||||
| expander_ac | object number range: 1-64 |
|
||||
| expander_batt | object number range: 1-64 |
|
||||
| expander_nobatt | object number range: 1-64 |
|
||||
| system | object number range: 1-24, see table below |
|
||||
| ptsa_ac | AC trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ptsa_batt | BATT trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ptsa_nobatt | NO BATT trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ethm1 | object number range: 1-8 |
|
||||
| proximity_a | object number range: 1-64 |
|
||||
| proximity_b | object number range: 1-64 |
|
||||
| expander_overload | object number range: 1-64 |
|
||||
| jammed_acu100 | object number range: 1-16 |
|
||||
| device_lobatt | object number range: 1-120 |
|
||||
| device_nocomm | object number range: 1-120 |
|
||||
| output_nocomm | object number range: 1-120 |
|
||||
| expander_nocomm | object number range: 1-64 |
|
||||
| expander_switcherooed | object number range: 1-64 |
|
||||
| keypad_nocomm | object number range: 1-8 |
|
||||
| keypad_switcherooed | object number range: 1-8 |
|
||||
| ethm1_nolan | object number range: 1-8 |
|
||||
| expander_tamper | object number range: 1-64 |
|
||||
| keypad_tamper | object number range: 1-8 |
|
||||
| keypad_init | object number range: 1-8 |
|
||||
| auxiliary_stm | object number range: 1-8 |
|
||||
| master_keyfob | object number range: 1-8 |
|
||||
| user_keyfob | object number range: 1-240 |
|
||||
| device_lobatt1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| device_nocomm1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| output_nocomm1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| technical_zone1 | for Integra 256 Plus - zones 129..256, object number range: 1-128 |
|
||||
|
||||
|
||||
### Valid `state_type` values for "trouble_memory" objects
|
||||
|
||||
| Type | Notes |
|
||||
|------|-------|
|
||||
| technical_zone | object number range: 1-128 |
|
||||
| expander_ac | object number range: 1-64 |
|
||||
| expander_batt | object number range: 1-64 |
|
||||
| expander_nobatt | object number range: 1-64 |
|
||||
| system | object number range: 1-24, see table below |
|
||||
| ptsa_ac | AC trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ptsa_batt | BATT trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ptsa_nobatt | NO BATT trouble of CA-64 PTSA modules, object number range: 1-8 |
|
||||
| ethm1 | object number range: 1-8 |
|
||||
| proximity_a | object number range: 1-64 |
|
||||
| proximity_b | object number range: 1-64 |
|
||||
| expander_overload | object number range: 1-64 |
|
||||
| jammed_acu100 | object number range: 1-16 |
|
||||
| lcd_restart | object number range: 1-8 |
|
||||
| expander_restart | object number range: 1-64 |
|
||||
| device_lobatt | object number range: 1-120 |
|
||||
| device_nocomm | object number range: 1-120 |
|
||||
| output_nocomm | object number range: 1-120 |
|
||||
| expander_nocomm | object number range: 1-64 |
|
||||
| expander_switcherooed | object number range: 1-64 |
|
||||
| keypad_nocomm | object number range: 1-8 |
|
||||
| keypad_switcherooed | object number range: 1-8 |
|
||||
| ethm1_nolan | object number range: 1-8 |
|
||||
| expander_tamper | object number range: 1-64 |
|
||||
| keypad_tamper | object number range: 1-8 |
|
||||
| keypad_init | object number range: 1-8 |
|
||||
| auxiliary_stm | object number range: 1-8 |
|
||||
| long_violation | object number range: 1-128 |
|
||||
| no_violation | object number range: 1-128 |
|
||||
| zone_tamper | object number range: 1-128 |
|
||||
| technical_zone1 | for Integra 256 Plus - zones 129..256, object number range: 1-128 |
|
||||
| user_keyfob | object number range: 1-240 |
|
||||
| device_lobatt1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| device_nocomm1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| output_nocomm1 | for Integra 256 Plus - last 120 devices, object number range: 1-120 |
|
||||
| long_violation1 | for Integra 256 Plus - zones 129..256, object number range: 1-128 |
|
||||
| no_violation1 | for Integra 256 Plus - zones 129..256, object number range: 1-128 |
|
||||
| zone_tamper1 | for Integra 256 Plus - zones 129..256, object number range: 1-128 |
|
||||
|
||||
|
||||
### System troubles
|
||||
|
||||
| Number | Description |
|
||||
|------|-------------|
|
||||
| 1 | OUT1 trouble |
|
||||
| 2 | OUT2 trouble |
|
||||
| 3 | OUT3 trouble |
|
||||
| 4 | OUT4 trouble |
|
||||
| 5 | +KPD trouble |
|
||||
| 6 | +EX1 or +EX2 trouble |
|
||||
| 7 | BATT trouble |
|
||||
| 8 | AC trouble |
|
||||
| 9 | DT1 trouble |
|
||||
| 10 | DT2 trouble |
|
||||
| 11 | DTM trouble |
|
||||
| 12 | RTC trouble |
|
||||
| 13 | no DTR signal |
|
||||
| 14 | no BATT present |
|
||||
| 15 | external modem initialization trouble |
|
||||
| 16 | external model command (ATE0V1Q0H0S0=0) trouble |
|
||||
| 17 | no voltage on telephone line (INTEGRA 24, 32, 64 and 128) |
|
||||
| 17 | auxiliary ST processor trouble (INTEGRA 128-WRL) |
|
||||
| 18 | bad signal on telephone line |
|
||||
| 19 | no signal on telephone line |
|
||||
| 20 | monitoring to station 1 trouble |
|
||||
| 21 | monitoring to station 2 trouble |
|
||||
| 22 | EEPROM or access to RTC trouble |
|
||||
| 23 | RAM memory trouble |
|
||||
| 24 | INTEGRA main panel restart memory |
|
||||
|
||||
|
||||
### Valid options
|
||||
|
||||
| Name | Description |
|
||||
|
@ -415,7 +529,7 @@ To control Integra partitions and outputs, you need to provide security code of
|
|||
|
||||
### Disarming and clearing alarms
|
||||
|
||||
Although this binding allows you to configure disarming a partition and clearing alarms for a partion, this should be used only in cases when security is not the priority. Don't forget both these operations can be executed in openHAB without specifying a user code, which is required to disarm or clear alarms using Integra panel. Consider adding a keypad in your sitemap to temporarily change user code to execute sensitive operations. You can find such keypad in the [examples](#examples) section.
|
||||
Although this binding allows you to configure disarming a partition and clearing alarms for a partition, this should be used only in cases when security is not the priority. Don't forget both these operations can be executed in openHAB without specifying a user code, which is required to disarm or clear alarms using Integra panel. Consider adding a keypad in your sitemap to temporarily change user code to execute sensitive operations. You can find such keypad in the [examples](#examples) section.
|
||||
|
||||
## Media
|
||||
|
||||
|
@ -423,4 +537,4 @@ Although this binding allows you to configure disarming a partition and clearing
|
|||
|
||||
## Future
|
||||
|
||||
* troubles support (detailed)
|
||||
* OH2 version
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
---
|
||||
id: sensebox
|
||||
label: senseBox
|
||||
title: senseBox - Bindings
|
||||
type: binding
|
||||
description: "The senseBox binding integrates environment data from the [senseBox](https://sensebox.de/)"
|
||||
since: 2x
|
||||
logo: images/addons/sensebox.png
|
||||
install: manual
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# senseBox Binding
|
||||
|
||||
The senseBox binding integrates environment data from the [senseBox](https://sensebox.de/)
|
||||
Citizen Science Toolkit.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The API server uses Letsencrypt certificates. Therefore, one needs to either import the Letsencrypt
|
||||
root certificates into the local keystore (see the description in the
|
||||
[netatmo addon](http://docs.openhab.org/addons/bindings/netatmo/readme.html)).
|
||||
Another way would be to simply update the JDK to at least JDK 1.8.0_111
|
||||
|
||||
## Supported Things
|
||||
|
||||
This binding supports a generic "senseBox" API endpoint which is a representation of the physical box.
|
||||
|
||||
## Discovery
|
||||
|
||||
This binding provides no discovery. The desired senseBox must be configured manually or via a things file.
|
||||
|
||||
## Binding configuration
|
||||
|
||||
The binding has no configuration options itself, all configuration is done at 'Things' level.
|
||||
|
||||
## Thing configuration
|
||||
|
||||
The senseBox thing requires the box Id (which can be obtained on the map) and an interval in seconds
|
||||
for the API polling. The senseBox support team wrote in an email that polling even every five minutes
|
||||
is still o.k., therefore the minimum is hardcoded to be 300 seconds.
|
||||
|
||||
```
|
||||
Thing sensebox:box:home [ senseBoxId = "foothesmurfingbar", refreshInterval = 600 ]
|
||||
```
|
||||
|
||||
## Channels
|
||||
|
||||
In the table is shown more detailed information about each Channel type.
|
||||
The binding introduces the following channels:
|
||||
|
||||
| Channel ID | Channel Description | Supported item type | Advanced |
|
||||
|-------------------------------------------------|--------------------------------------------------------------|---------------------|----------|
|
||||
| descriptors#location | Location of the box | Point | False |
|
||||
| measurements#uvIntensity | Intensity of Ultraviolet radiation | Number | False |
|
||||
| measurements#luminance | Illuminance | Number | False |
|
||||
| measurements#pressure | Air pressure | Number | False |
|
||||
| measurements#humidity | Humidity | Number | False |
|
||||
| measurements#temperature | Temperature | Number | False |
|
||||
| measurements#particulateMatter2dot5 | Particulate Matter 2.5 µm in diameter | Number | False |
|
||||
| measurements#particulateMatter10 | Temperature Matter 10 µm in diameter | Number | False |
|
||||
| lastReported#uvIntensityLastReported | The timestamp when uv radiation intensity was last reported | DateTime | True |
|
||||
| lastReported#luminanceLastReported | The timestamp when illuminance was last reported | DateTime | True |
|
||||
| lastReported#pressureLastReported | The timestamp when pressure was last reported | DateTime | True |
|
||||
| lastReported#humidityLastReported | The timestamp when humidity was last reported | DateTime | True |
|
||||
| lastReported#temperatureLastReported | The timestamp when temperature was last reported | DateTime | True |
|
||||
| lastReported#particulateMatter2dot5LastReported | The timestamp when particulate matter 2.5 was last reported | DateTime | True |
|
||||
| lastReported#particulateMatter10LastReported | The timestamp when particulate matter 10 was last reported | DateTime | True |
|
||||
|
||||
The channels starting with "descriptors" are defined on the API server.
|
||||
|
||||
## Full example
|
||||
|
||||
sensebox.things:
|
||||
|
||||
```
|
||||
Thing sensebox:box:zugspitze [ senseBoxId = "578cf2ccccff9d1000bd9198", refreshInterval = 900 ]
|
||||
```
|
||||
|
||||
sensebox.items:
|
||||
|
||||
```
|
||||
Location Zugspitze_Location (Zugspitze) { channel="sensebox:box:zugspitze:descriptors#location" }
|
||||
|
||||
Number Zugspitze_Humidity "Zugspitze Humidity [%.1f %%]" <humidity> (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#humidity" }
|
||||
Number Zugspitze_Luminance "Zugspitze Light Level [%.1f lx]" <light> (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#luminance" }
|
||||
Number Zugspitze_Pressure "Zugspitze Pressure [%.1f hPa]" <pressure> (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#pressure" }
|
||||
Number Zugspitze_Temperature "Zugspitze Temperature [%.1f °C]" <temperature> (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#temperature" }
|
||||
Number Zugspitze_UVIntensity "Zugspitze UvIntensity [%.1f μW/cm²]" <light> (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#uvIntensity" }
|
||||
Number Zugspitze_PM2dot5 "Zugspitze PM2.5 [%.1f µg/m³]" (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#particulateMatter2dot5" }
|
||||
Number Zugspitze_PM10 "Zugspitze PM10 [%.1f µg/m³]" (Zugspitze, Weather) { channel="sensebox:box:zugspitze:measurements#particulateMatter10" }
|
||||
|
||||
```
|
||||
|
||||
sensebox.sitemap:
|
||||
|
||||
```
|
||||
sitemap sensebox label="SenseBox Zugspitze" {
|
||||
Text item=Zugspitze_Temperature
|
||||
Text item=Zugspitze_Pressure
|
||||
Text item=Zugspitze_Humidity
|
||||
Text item=Zugspitze_Luminance
|
||||
Text item=Zugspitze_UVIntensity
|
||||
Text item=Zugspitze_PM2dot5
|
||||
Text item=Zugspitze_PM10
|
||||
Mapview item=Zugspitze_Location height=10
|
||||
}
|
||||
```
|
||||
|
||||
## senseBox API
|
||||
|
||||
* https://docs.opensensemap.org/
|
||||
* https://docs.opensensemap.org/#api-Boxes-findBox
|
||||
* https://docs.opensensemap.org/#api-Measurements-getMeasurements
|
||||
|
||||
* https://api.opensensemap.org/boxes/:boxId
|
||||
* https://api.opensensemap.org/boxes/:senseBoxId/sensors
|
|
@ -64,20 +64,24 @@ This binding does not have a configuration.
|
|||
|
||||
## Item Configuration
|
||||
|
||||
The format has three variations:
|
||||
The format has the following variations:
|
||||
|
||||
```
|
||||
serial="<port>@<baudrate>"
|
||||
serial="<port>@<baudrate>,REGEX(<regular expression>)"
|
||||
serial="<port>@<baudrate>,BASE64
|
||||
serial="<port>@<baudrate>,ON(<On string>),OFF(<Off string>)"
|
||||
serial="<port>@<baudrate>,REGEX(<regular expression>), UP(<Up string>),DOWN(<Down string>), STOP(<Stop string>)"
|
||||
```
|
||||
|
||||
where:
|
||||
|
||||
* `<port>` 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 `<port>` can be bound to multiple items.
|
||||
* `<baudrate>` 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(<regular expression>)` allows parsing for special strings or numbers in the serial stream. This is based on the [RegEx Service](https://github.com/openhab/openhab1-addons/wiki/Transformations#regex-transformation-service). This is optional.
|
||||
* `REGEX(<regular expression>)` 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(<On string>),OFF(<Off string>)` 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(<Up string>),DOWN(<Down string>),STOP(<Stop string>)` 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:
|
||||
|
||||
|
@ -90,7 +94,10 @@ For encoding use the `printBase64Binary` method of the `DatatypeConverter`. This
|
|||
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 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/)" }
|
||||
```
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: synopanalyzer
|
||||
label: Synop Analyzer
|
||||
title: Synop Analyzer - Bindings
|
||||
type: binding
|
||||
description: "This binding integrates the possibility to download and interpret Synop messages."
|
||||
since: 2x
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# Synop Analyzer Binding
|
||||
|
||||
This binding integrates the possibility to download and interpret Synop messages.
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
The binding has no configuration options itself, all configuration is done at 'Things' level.
|
||||
|
||||
## Supported Things
|
||||
|
||||
There is exactly one supported thing, which represents a Synop message. It has the id `synopanalyzer`.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
Besides the Synop Station Number (as ```synopID``` as a [StationID](http://www.ogimet.com/gsynop_nav.phtml.en) string), the second configuration parameter is ```refreshInterval``` which defines the refresh interval in minutes. Synop message are typically updated every hour.
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
The weather information that is retrieved is available as these channels:
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|---------------------|-----------|--------------------------------------------|
|
||||
| temperature | Number | The current temperature in degrees Celsius |
|
||||
| pressure | Number | The current pressure in millibar (mb) |
|
||||
| wind-angle | Number | Wind angle in degrees |
|
||||
| wind-direction | String | Wind direction |
|
||||
| wind-speed-ms | Number | Wind speed in m/s |
|
||||
| wind-speed-knots | Number | Wind speed in knots |
|
||||
| wind-speed-beaufort | Number | Wind speed according to Beaufort scale |
|
||||
| overcast | String | Appreciation of the cloud cover |
|
||||
| octa | Number | Part of the sky covered by clouds (in 8th) |
|
||||
| time-utc | DateTime | Observation time of the Synop message |
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
### Things
|
||||
|
||||
Here is an example of thing definition :
|
||||
|
||||
```
|
||||
synopanalyzer:synopanalyzer:orly [ stationId="07149"]
|
||||
```
|
||||
|
||||
### Items
|
||||
|
||||
```
|
||||
Number Synop_Temperature "Temperature [%.1f °C]" <temperature> { channel = "synopanalyzer:synopanalyzer:trappes:temperature" }
|
||||
Number Synop_Pressure "Pressure [%.1f mb]" <pressure> { channel = "synopanalyzer:synopanalyzer:trappes:pressure" }
|
||||
Number Synop_Wind_Angle "Wind Angle [%d°]" <wind> { channel = "synopanalyzer:synopanalyzer:trappes:wind-angle"}
|
||||
String Synop_Wind_Direction "Direction [%s]" { channel = "synopanalyzer:synopanalyzer:trappes:wind-direction"}
|
||||
Number Synop_Wind_Speed "Wind Speed [%.2f m/s]" <wind> { channel = "synopanalyzer:synopanalyzer:trappes:wind-speed-ms"}
|
||||
Number Synop_Octa "Octa [%d]/8" { channel = "synopanalyzer:synopanalyzer:trappes:octa"}
|
||||
DateTime Synop_time "Observation Time [%1$ta %1$tR]" <clock> { channel = "synopanalyzer:synopanalyzer:trappes:time-utc"}
|
||||
```
|
||||
|
|
@ -25,7 +25,7 @@ System information Binding provides operating system and hardware information in
|
|||
- Battery information - estimated remaining time, capacity, name;
|
||||
- Sensors information - CPU voltage and temperature, fan speeds;
|
||||
- Display information;
|
||||
- Network IP,name and adapter name, mac, data sent and received, packages sent and received;
|
||||
- Network IP,name and adapter name, mac, data sent and received, packets sent and received;
|
||||
- Process information - size of RAM memory used, CPU load, process name, path, number of threads.
|
||||
|
||||
The binding uses [OSHI](https://github.com/oshi/oshi) API to access this information regardless of the underlying platform and does not need any native parts.
|
||||
|
@ -77,11 +77,11 @@ The binding support several channel group. Each channel group, contains one or m
|
|||
|
||||
**thing** `computer`
|
||||
* **group** `memory`
|
||||
**channel** `available, total, used, available_percent`
|
||||
**channel** `available, total, used, availablePercent, usedPercent`
|
||||
* **group** `swap`
|
||||
**channel** `available, total, used, available_percent`
|
||||
**channel** `available, total, used, availablePercent, usedPercent`
|
||||
* **group** `storage` (deviceIndex)
|
||||
**channel** `available, total, used, available_percent, name, description, type`
|
||||
**channel** `available, total, used, availablePercent, usedPercent, name, description, type`
|
||||
* **group** `drive` (deviceIndex)
|
||||
**channel** `name, model, serial`
|
||||
* **group** `display` (deviceIndex)
|
||||
|
@ -93,7 +93,7 @@ The binding support several channel group. Each channel group, contains one or m
|
|||
* **group** `sensors`
|
||||
**channel** `cpuTemp, cpuVoltage, fanSpeed`
|
||||
* **group** `network` (deviceIndex)
|
||||
**channel** `ip, mac, networkDisplayName, networkName, packagesSent, packagesReceived, dataSent, dataReceived`
|
||||
**channel** `ip, mac, networkDisplayName, networkName, packetsSent, packetsReceived, dataSent, dataReceived`
|
||||
* **group** `process` (pid)
|
||||
**channel** `load, used, name, threads, path`
|
||||
|
||||
|
@ -107,6 +107,8 @@ The groups marked with "deviceIndex" may have device index attached to the Chann
|
|||
|
||||
The binding uses this index to get information about a specific device from a list of devices.
|
||||
(e.g on a single computer could be installed several local disks with names C:\, D:\, E:\ - the first will have deviceIndex=0, the second deviceIndex=1 ant etc). If device with this index is not existing, the binding will display an error message on the console.
|
||||
|
||||
Unfortunately this feature can't be used at the moment without manually adding these new channel groups to the thing description (located in ESH-INF/thing/computer.xml).
|
||||
|
||||
In the table is shown more detailed information about each Channel type.
|
||||
The binding introduces the following channels:
|
||||
|
@ -124,6 +126,7 @@ The binding introduces the following channels:
|
|||
| used | Used size in MB | Number | High | False |
|
||||
| total | Total size in MB | Number | Low | False |
|
||||
| availablePercent | Available size in % | Number | High | False |
|
||||
| usedPercent | Used size in % | Number | High | False |
|
||||
| model | The model of the device | String | Low | True |
|
||||
| serial | The serial number of the device | String | Low | True |
|
||||
| description | Description of the device | String | Low | True |
|
||||
|
@ -138,8 +141,8 @@ The binding introduces the following channels:
|
|||
| mac | MAC address | String | Low | True |
|
||||
| networkName | The name of the network | String | Low | False |
|
||||
| networkDisplayName | The display name of the network | String | Low | False |
|
||||
| packagesSent | Number of packages sent | Number | Medium | True |
|
||||
| packagesReceived | Number of packages received | Number | Medium | True |
|
||||
| packetsSent | Number of packets sent | Number | Medium | True |
|
||||
| packetsReceived | Number of packets received | Number | Medium | True |
|
||||
| dataSent | Data sent in MB | Number | Medium | True |
|
||||
| dataReceived | Data received in MB | Number | Medium | True |
|
||||
|
||||
|
@ -198,8 +201,8 @@ String Network_IP { channel="systeminfo:computer:work:network#
|
|||
String Network_Mac { channel="systeminfo:computer:work:network#mac" }
|
||||
Number Network_DataSent { channel="systeminfo:computer:work:network#dataSent" }
|
||||
Number Network_DataRecevied { channel="systeminfo:computer:work:network#dataReceived" }
|
||||
Number Network_PackagesSent { channel="systeminfo:computer:work:network#packagesSent" }
|
||||
Number Network_PackagesRecevied { channel="systeminfo:computer:work:network#packagesReceived" }
|
||||
Number Network_PacketsSent { channel="systeminfo:computer:work:network#packetsSent" }
|
||||
Number Network_PacketsRecevied { channel="systeminfo:computer:work:network#packetsReceived" }
|
||||
|
||||
/* CPU information*/
|
||||
String CPU_Name { channel="systeminfo:computer:work:cpu#name" }
|
||||
|
@ -224,18 +227,21 @@ Number Storage_Available { channel="systeminfo:computer:work:storage
|
|||
Number Storage_Used { channel="systeminfo:computer:work:storage#used" }
|
||||
Number Storage_Total { channel="systeminfo:computer:work:storage#total" }
|
||||
Number Storage_Available_Percent { channel="systeminfo:computer:work:storage#availablePercent" }
|
||||
Number Storage_Used_Percent { channel="systeminfo:computer:work:storage#usedPercent" }
|
||||
|
||||
/* Memory information*/
|
||||
Number Memory_Available { channel="systeminfo:computer:work:memory#available" }
|
||||
Number Memory_Used { channel="systeminfo:computer:work:memory#used" }
|
||||
Number Memory_Total { channel="systeminfo:computer:work:memory#total" }
|
||||
Number Memory_Available_Percent { channel="systeminfo:computer:work:memory#availablePercent" }
|
||||
Number Memory_Used_Percent { channel="systeminfo:computer:work:memory#usedPercent" }
|
||||
|
||||
/* Swap memory information*/
|
||||
Number Swap_Available { channel="systeminfo:computer:work:swap#available" }
|
||||
Number Swap_Used { channel="systeminfo:computer:work:swap#used" }
|
||||
Number Swap_Total { channel="systeminfo:computer:work:swap#total" }
|
||||
Number Swap_Available_Percent { channel="systeminfo:computer:work:swap#availablePercent" }
|
||||
Number Swap_Used_Percent { channel="systeminfo:computer:work:swap#usedPercent" }
|
||||
|
||||
/* Battery information*/
|
||||
String Battery_Name { channel="systeminfo:computer:work:battery#name" }
|
||||
|
@ -251,9 +257,9 @@ Number Sensor_CPUVoltage { channel="systeminfo:computer:work:sensors
|
|||
Number Sensor_FanSpeed { channel="systeminfo:computer:work:sensors#fanSpeed" }
|
||||
|
||||
/* Process information*/
|
||||
Number Process_load { channel="systeminfo:computer:SvilenV-L540:process#load" }
|
||||
Number Process_used { channel="systeminfo:computer:SvilenV-L540:process#used" }
|
||||
String Process_name { channel="systeminfo:computer:SvilenV-L540:process#name" }
|
||||
Number Process_threads { channel="systeminfo:computer:SvilenV-L540:process#threads" }
|
||||
String Process_path { channel="systeminfo:computer:SvilenV-L540:process#path" }
|
||||
Number Process_load { channel="systeminfo:computer:work:process#load" }
|
||||
Number Process_used { channel="systeminfo:computer:work:process#used" }
|
||||
String Process_name { channel="systeminfo:computer:work:process#name" }
|
||||
Number Process_threads { channel="systeminfo:computer:work:process#threads" }
|
||||
String Process_path { channel="systeminfo:computer:work:process#path" }
|
||||
```
|
||||
|
|
|
@ -144,10 +144,11 @@ The following channels represent universial channels if no further device inform
|
|||
| switchBinary | Switch | Switch | SwitchBinary |
|
||||
| switchMultilevel | Dimmer | - | SwitchMultilevel |
|
||||
| switchColor | Color | ColorLight | SwitchRGBW |
|
||||
| switchControl | Switch | Switch | SwitchControl |
|
||||
| switchControl | Switch | Switch | SwitchControl, ToggleButton, SwitchToggle |
|
||||
| thermostat | Number | Temperature | Thermostat |
|
||||
| sensorDiscrete | Number | - | SensorDiscrete |
|
||||
|
||||
Currently unsupported Z-Way device types: SwitchToggle, ToggleButton.
|
||||
Unsupported Z-Way device types: Camera, SensorMultiline, Text. The integration of these types isn't planned.
|
||||
|
||||
### Channels for the Z-Way Server (Bridge)
|
||||
|
||||
|
@ -185,7 +186,7 @@ Because textual configuration isn't useful, follow the instructions in the [Gett
|
|||
### Restrictions
|
||||
|
||||
- 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 (device inclusion or physical device configuration)
|
||||
- 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.
|
||||
|
||||
<br>
|
||||
|
|
After Width: | Height: | Size: 314 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
|
||||
<path d="m57 39.5c-.3 0-.5-.2-.5-.5v-14c0-.3.2-.5.5-.5h5c.8 0 1.5.7 1.5 1.5v12c0 .8-.7 1.5-1.5 1.5h-5" style="fill:#bebec8"/>
|
||||
<path d="m62 25c.6 0 1 .4 1 1v12c0 .6-.4 1-1 1h-5v-14h5m0-1h-5c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h5c1.1 0 2-.9 2-2v-12c0-1.1-.9-2-2-2z" style="fill:#34383f"/>
|
||||
<path d="m3 46.5c-1.4 0-2.5-1.1-2.5-2.5v-24c0-1.4 1.1-2.5 2.5-2.5h51c1.4 0 2.5 1.1 2.5 2.5v24c0 1.4-1.1 2.5-2.5 2.5h-51" style="fill:#f0f0f0"/>
|
||||
<path d="m54 18c1.1 0 2 .9 2 2v24c0 1.1-.9 2-2 2h-51c-1.1 0-2-.9-2-2v-24c0-1.1.9-2 2-2h51m0-1h-51c-1.7 0-3 1.3-3 3v24c0 1.7 1.3 3 3 3h51c1.7 0 3-1.3 3-3v-24c0-1.7-1.3-3-3-3z" style="fill:#34383f"/>
|
||||
<path d="m50 46h-47c-1.1 0-2-.9-2-2v-24c0-1.1.9-2 2-2h47v28" style="fill:#00c83c"/>
|
||||
<path d="m49 18h1v28h-1z" style="fill:#00b22a"/>
|
||||
</svg>
|
After Width: | Height: | Size: 898 B |
After Width: | Height: | Size: 314 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
|
||||
<path d="m57 39.5c-.3 0-.5-.2-.5-.5v-14c0-.3.2-.5.5-.5h5c.8 0 1.5.7 1.5 1.5v12c0 .8-.7 1.5-1.5 1.5h-5" style="fill:#bebec8"/>
|
||||
<path d="m62 25c.6 0 1 .4 1 1v12c0 .6-.4 1-1 1h-5v-14h5m0-1h-5c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h5c1.1 0 2-.9 2-2v-12c0-1.1-.9-2-2-2z" style="fill:#34383f"/>
|
||||
<path d="m3 46.5c-1.4 0-2.5-1.1-2.5-2.5v-24c0-1.4 1.1-2.5 2.5-2.5h51c1.4 0 2.5 1.1 2.5 2.5v24c0 1.4-1.1 2.5-2.5 2.5h-51" style="fill:#f0f0f0"/>
|
||||
<path d="m54 18c1.1 0 2 .9 2 2v24c0 1.1-.9 2-2 2h-51c-1.1 0-2-.9-2-2v-24c0-1.1.9-2 2-2h51m0-1h-51c-1.7 0-3 1.3-3 3v24c0 1.7 1.3 3 3 3h51c1.7 0 3-1.3 3-3v-24c0-1.7-1.3-3-3-3z" style="fill:#34383f"/>
|
||||
<path d="m9 46h-6c-1.1 0-2-.9-2-2v-24c0-1.1.9-2 2-2h6v28" style="fill:#f00014"/>
|
||||
<path d="m8 18h1v28h-1z" style="fill:#d6001a"/>
|
||||
</svg>
|
After Width: | Height: | Size: 894 B |
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
|
||||
<path d="m1.14 40.27c1.52 5.68 4.11 10.17 8.27 14.32l11.28-11.28c-1.96-1.96-3.39-4.42-4.13-7.18l-15.42 4.14" style="fill:#3d01a4"/>
|
||||
<path d="m62.86 23.73l-15.42 4.13c.35 1.32.56 2.71.56 4.14s-.21 2.82-.56 4.14l15.42 4.13c1.52-5.68 1.52-10.86 0-16.54" style="fill:#fefe33"/>
|
||||
<path d="m20.69 20.69l-11.28-11.28c-4.16 4.16-6.75 8.64-8.27 14.32l15.42 4.13c.74-2.75 2.17-5.22 4.13-7.17" style="fill:#a7194b"/>
|
||||
<path d="m16 32c0-1.43.21-2.82.56-4.14l-15.42-4.13c-1.52 5.68-1.52 10.86 0 16.54l15.42-4.13c-.35-1.32-.56-2.71-.56-4.14" style="fill:#8601af"/>
|
||||
<path d="m32 48c-1.43 0-2.82-.21-4.14-.56l-4.13 15.42c5.68 1.52 10.86 1.52 16.54 0l-4.13-15.42c-1.32.35-2.71.56-4.14.56" style="fill:#0391ce"/>
|
||||
<path d="m47.44 36.14c-.74 2.75-2.17 5.22-4.13 7.18l11.28 11.28c4.16-4.16 6.75-8.64 8.27-14.32l-15.42-4.14" style="fill:#d0ea2b"/>
|
||||
<path d="m43.31 43.31c-1.96 1.96-4.42 3.39-7.18 4.13l4.13 15.42c5.68-1.52 10.17-4.11 14.32-8.27l-11.27-11.28" style="fill:#66b032"/>
|
||||
<path d="m20.69 43.31l-11.28 11.28c4.16 4.16 8.64 6.75 14.32 8.27l4.13-15.42c-2.75-.74-5.22-2.17-7.17-4.13" style="fill:#0247fe"/>
|
||||
<path d="m32 16c1.43 0 2.82.21 4.14.56l4.13-15.42c-5.68-1.52-10.86-1.52-16.54 0l4.13 15.42c1.32-.35 2.71-.56 4.14-.56" style="fill:#fd5308"/>
|
||||
<path d="m27.86 16.56l-4.13-15.42c-5.68 1.52-10.16 4.11-14.32 8.27l11.28 11.28c1.95-1.96 4.42-3.39 7.17-4.13" style="fill:#fe2712"/>
|
||||
<path d="m43.31 20.69l11.28-11.28c-4.16-4.16-8.64-6.75-14.32-8.27l-4.13 15.42c2.75.74 5.22 2.17 7.17 4.13" style="fill:#fb9902"/>
|
||||
<path d="m62.86 23.73c-1.52-5.68-4.11-10.17-8.27-14.32l-11.28 11.28c1.96 1.96 3.39 4.42 4.13 7.18l15.42-4.14" style="fill:#fabc02"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 893 B After Width: | Height: | Size: 893 B |
Before Width: | Height: | Size: 993 B After Width: | Height: | Size: 993 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B |
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 695 B |
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 716 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -54,9 +54,8 @@ ImperiHome must be configured to connect to your openHAB instance.
|
|||
Start ImperiHome, open the menu and go to My Systems. Add a new system (+) and choose 'ImperiHome Standard System' as the object type. Now enter the URL to your openHAB instance
|
||||
as Local URL, followed by _/imperihome/iss_. For example, if your openHAB instance is running at _http://192.168.1.10:8080/_, the Local URL would be _http://192.168.1.10:8080/imperihome/iss_.
|
||||
|
||||
If you have port forwarding or similar set up to access your OH form the internet, you can also fill the Remote URL in the same way. For example:
|
||||
_http://my-openhab-url.dyndns.org:8080/imperihome/iss_. Please be aware that this service provides no authentication mechanism, so anyone could use the API to control your
|
||||
system when accessible from the internet.
|
||||
If you have port forwarding or similar set up to access your openHAB from the internet, you can also fill the Remote URL in the same way. For example:
|
||||
_http://my-openhab-url.dyndns.org:8080/imperihome/iss_. <b>Warning</b>: this service provides no authentication mechanism, so anyone could use the API to control your system when accessible from the internet. Add a secure proxy or use the openHAB Cloud proxy to protect your system ([more information](http://docs.openhab.org/installation/security.html)).
|
||||
|
||||
Click Next to let ImperiHome validate the URL. After validation succeeded the system is added and you can continue to configure your Items for use in ImperiHome.
|
||||
|
||||
|
@ -225,7 +224,7 @@ the Item types you can use them on are listed.
|
|||
<td>DevDimmer</td>
|
||||
<td>Dimmable light</td>
|
||||
<td>Yes</td>
|
||||
<td>Dimmer</td>
|
||||
<td>Dimmer, Number</td>
|
||||
<td>energy</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -343,8 +342,8 @@ the Item types you can use them on are listed.
|
|||
<tr>
|
||||
<td>DevShutter</td>
|
||||
<td>Shutter actuator</td>
|
||||
<td>No</td>
|
||||
<td></td>
|
||||
<td>Yes</td>
|
||||
<td>Dimmer, Number</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -377,10 +376,10 @@ the Item types you can use them on are listed.
|
|||
</tr>
|
||||
<tr>
|
||||
<td>DevThermostat</td>
|
||||
<td>Thermostat</td>
|
||||
<td>No</td>
|
||||
<td></td>
|
||||
<td>-</td>
|
||||
<td>Thermostat <sup>(2)</sup></td>
|
||||
<td>Yes</td>
|
||||
<td>Number</td>
|
||||
<td>curmode, curtemp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>DevUV</td>
|
||||
|
@ -398,7 +397,9 @@ the Item types you can use them on are listed.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
<sup>(1)</sup> When using a String Item for trippable devices, any non-empty value other than 'ok' will set the device to tripped. This makes it compatible with the Nest Protect binding.
|
||||
<sup>(1)</sup> When using a String Item for trippable devices, any non-empty value other than 'ok' will set the device to tripped. This makes it compatible with the Nest Protect binding.
|
||||
|
||||
<sup>(2)</sup> Thermostat devices require additional tags. See [Thermostat](#thermostat) for details.
|
||||
|
||||
<a name="deviceLinks"></a>
|
||||
|
||||
|
@ -411,8 +412,7 @@ The _link_ tag refers to the name of the Item it should link to. The item must b
|
|||
### Switch energy consumption
|
||||
|
||||
ImperiHome allows you to show the current energy consumption for a _DevDimmer_, _DevRGBLight_ and _DevSwitch_.
|
||||
This example links the _MyLightEnergy_ Number Item to the _MyLight_ Switch Item,
|
||||
so the _DevSwitch_ device will also report the energy consumption value to ImperiHome:
|
||||
This example links the _MyLightEnergy_ Number Item to the _MyLight_ Switch Item, so the _DevSwitch_ device will also report the energy consumption value to ImperiHome:
|
||||
|
||||
```
|
||||
Switch MyLight "My Light" ["iss:type:DevSwitch", "iss:link:energy:MyLight_Energy"] { channel="zwave:device:1:node14:switch_binary1" }
|
||||
|
@ -421,8 +421,7 @@ Number MyLightEnergy "My Light Usage [%.1f W]" ["iss:type:DevElectricity"]
|
|||
|
||||
### Total energy consumption
|
||||
|
||||
The _DevElectricity_ devices main value is the current consumption in Watts. To add the total consumption in KWh, link your electricity device to
|
||||
a generic sensor device containing the total energy consumption value:
|
||||
The _DevElectricity_ devices main value is the current consumption in Watts. To add the total consumption in KWh, link your electricity device to a generic sensor device containing the total energy consumption value:
|
||||
|
||||
```
|
||||
Number MyLight_Energy "My Light Usage [%.1f W]" ["iss:type:DevElectricity", "iss:link:kwh:MyLight_Total_Energy"] { channel="zwave:device:1:node14:meter_watts1" }
|
||||
|
@ -447,8 +446,7 @@ Number MyHum "Humidity [%d%%]" ["iss:type:DevTempHygro", "iss:link:temp
|
|||
|
||||
### Rain accumulation
|
||||
|
||||
The _DevRain_ devices main value is the current instant rain value (default in mm per hour). To add the total rain accumulation value, link your rain device to
|
||||
a generic sensor device:
|
||||
The _DevRain_ devices main value is the current instant rain value (default in mm per hour). To add the total rain accumulation value, link your rain device to a generic sensor device:
|
||||
|
||||
```
|
||||
Number RainCurrent "Rain current [%.1f mm/h]" ["iss:type:DevRain", "iss:link:accum:RainAccumulation"] { channel="..." }
|
||||
|
@ -457,14 +455,27 @@ Number RainAccumulation "Rain accumulation [%.1f mm]" ["iss:type:DevGenericSe
|
|||
|
||||
### Wind direction
|
||||
|
||||
The _DevWind_ devices main value is the current wind speed (default in km per hour). To add the wind direction value (default in degrees), link your wind device to
|
||||
a generic sensor device:
|
||||
The _DevWind_ devices main value is the current wind speed (default in km per hour). To add the wind direction value (default in degrees), link your wind device to a generic sensor device:
|
||||
|
||||
```
|
||||
Number WindSpeed "Wind speed [%.1f km/h]" ["iss:type:DevWind", "iss:link:direction:WindDirection"] { channel="..." }
|
||||
Number WindDirection "Wind direction [%d deg]" ["iss:type:DevGenericSensor", "iss:unit:deg"] { channel="..." }
|
||||
```
|
||||
|
||||
<a name="thermostat"></a>
|
||||
|
||||
### Thermostat
|
||||
|
||||
The _DevThermostat_ combines a setpoint, current temperature and mode in one ImperiHome device. To accomplish this using openHAB items, it uses a _curtemp_ and _curmode_ link and a few additional tags.
|
||||
|
||||
```
|
||||
Number Thermos_Setpoint "Thermostat" ["iss:room:Test", "iss:type:DevThermostat", "iss:step:0.5", "iss:minVal:15", "iss:maxVal:24", "iss:modes:Home,Away,Comfort,Sleeping", "iss:link:curmode:Thermos_Mode", "iss:link:curtemp:Thermos_Temp"] { channel="..." }
|
||||
Number Thermos_Temp "Thermos temp" ["iss:room:Test", "iss:type:DevTemperature", "iss:unit:K"] { channel="..." }
|
||||
String Thermos_Mode "Thermos mode" ["iss:room:Test", "iss:type:DevGenericSensor"] { channel="..." }
|
||||
```
|
||||
|
||||
The main _DevThermostat_ device must be the Item holding the setpoint. Using tags, this device specifies the minimum and maximum setpoint value, the setpoint step and the available modes. The two links specify what Items contain the current temperature and current mode. If you want to use a custom unit, set the _unit_ tag on the current temperature device.
|
||||
|
||||
## Items example
|
||||
|
||||
```
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit d16d4a02a30e1dedb36874d8bb8847d4602c84e5
|
||||
Subproject commit 4ed5f59a5783b099accbf7256a628e891077a771
|
|
@ -1 +1 @@
|
|||
Subproject commit 5b4477181f86efd252138227019d3497316fb2df
|
||||
Subproject commit eba0094465c37d42089c26ada127e734a4ba0e56
|
|
@ -1 +1 @@
|
|||
Subproject commit c6fc306e9f4fab0fb9a1540f0589720e94a44b28
|
||||
Subproject commit c4abbeecb9810bff01ed2b96fba7733672e2ef35
|
|
@ -1 +1 @@
|
|||
Subproject commit 8b94f811511e0a62bc9973612c8dbfb3860e99f4
|
||||
Subproject commit 7b76fc69415a4d478aa0e0016ba49a5bc9fd6a64
|
|
@ -1 +1 @@
|
|||
Subproject commit 463e6601ef9c744a15f461e8192d776d16da37f9
|
||||
Subproject commit 3d7f34d40d79e7cc9666bf477a03e40eb68f7001
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 72 KiB |
|
@ -0,0 +1,270 @@
|
|||
# Designing dashboard interfaces with HABPanel
|
||||
|
||||
The [HABPanel]({{base}}/addons/ui/habpanel/readme.html) user interface is installed by default when choosing any initial setup package, and allows the creation of user-friendly dashboards, particularly suited for (e.g. wall-mounted) tablets. These dashboards can be designed interactively in the embedded designer, rather than using configuration files.
|
||||
|
||||
Despite being similar, HABPanel's dashboards and [sitemaps]({{base}}/configuration/sitemaps.html) are separate concepts, and can be designed independently as they aren't related to each other; however, they rely and act on [items]({{base}}/concepts/items.html) which must therefore be [defined]({{base}}/configuration/items.html) first. The [demo setup package]({{base}}/configuration/packages.html#demo-package-sample-setup), available for installation when starting openHAB for the first time, defines a series of sample items and configures HABPanel with a comprehensive set of dashboards to showcase a possible end result. It's the same as the one installed on the [openHAB Demo Server](https://demo.openhab.org/){:target="_blank"}, and it may be modified without risk of breaking anything: it's the best playground to discover HABPanel's features.
|
||||
|
||||
## Concepts
|
||||
|
||||
HABPanel has its own terminology of entities presented below:
|
||||
|
||||

|
||||
|
||||
- The **Panel Registry** is the central storage used by HABPanel on a given openHAB instance, it contains several **Panel Configurations**;
|
||||
- A **Panel Configuration** is a container holding a **Panel** along with its **Settings** and the definition of **Custom Widgets**. Each device HABPanel runs on (desktop browser, tablet...) has an active panel configuration and displays the panel associated with it;
|
||||
- A **Panel** is a set of **Dashboards** (or pages) which can be presented to end users, who can also easily switch between them using the menu.
|
||||
- A **Dashboard** is comprised of discrete **Widgets** positioned on the dashboard's surface at design time. There are several types of built-in *standard widgets*, configured separately, and the administrator can also develop (or import) *custom widgets*.
|
||||
|
||||
## About data persistence
|
||||
|
||||
By default, when running HABPanel on a new browser or device, a tutorial will be displayed allowing the user to start from scratch, or switch to an previously defined panel configuration. **Until a panel configuration is created (or chosen), HABPanel will run in "local storage" mode for this device: the settings will be retained in the browser's local storage only and nothing will be persisted on the server.** By contrast, when an active panel configuration is set, each change performed on the device will update the panel configuration on the server. This allows the sharing of panel configuration among devices, because other browsers and devices using this panel configuration will pick up the changes with a page refresh - this is useful for instance to design a panel comfortably on a computer, then use it on a tablet.
|
||||
|
||||
To switch from the local storage to a server-hosted panel configuration, go to the Settings page from the main menu or the side drawer (see below). A list of panel configurations will be presented in the _Current storage configuration_ section; if only the _"Local storage"_ option is available, click on the **Save the current configuration to a new panel configuration** link, give it a name to identify it (avoid spaces or special characters), and it should be added to the list. The radio button is also automatically checked, meaning it is now the active panel configuration.
|
||||
|
||||
Even when there is an active panel configuration, HABPanel uses the browser's storage to sync a locally-managed copy. With the **Edit the local panel configuration (experts only)** link under the _"Local storage"_ storage configuration option in the settings screen, the raw structure of the panel configuration can be inspected, modified, and exported or imported from/to a .json file. It is also an alternative way to backup, restore and share the configuration.
|
||||
|
||||
HABPanel uses service configuration variables to store its data on the openHAB server. They can be accessed using Paper UI (_Configuration > Services > UI > HABPanel > Configure_) or in the openHAB Karaf console:
|
||||
|
||||
```
|
||||
openhab> config:edit org.openhab.habpanel
|
||||
openhab> config:property-get <property>
|
||||
```
|
||||
The following properties are defined:
|
||||
|
||||
- `panelsRegistry`: contains the entire registry serialized in JSON, it is maintained by the application and shouldn't be modified directly (editing it by hand, while possible, is strongly discouraged);
|
||||
- `lockEditing`: when enabled, all HABPanel instances will hide their editing features (a page refresh is necessary). When panels are complete and stable, it is advisable to turn on this setting so they cannot be easily modified by end users;
|
||||
- `initialPanelConfig`: if this option is unset and no prior local configuration is detected, the tutorial will be displayed until some dashboards are added or a panel configuration is selected. This setting allows to bypass the tutorial and switch directly to the existing panel configuration with the given name.
|
||||
|
||||
## Major interface elements and features
|
||||
|
||||
### The main menu
|
||||
|
||||
The main menu is HABPanel's home page. It contains tiles linking to the panel's dashboards, and an icon to switch between the run mode and the edit mode (if available).
|
||||
|
||||

|
||||
|
||||
Use the gears icon in the top-right corner to switch between the two modes.
|
||||
|
||||

|
||||
|
||||
When in edit mode, several features are available:
|
||||
* Add a new empty dashboard with the **Add new dashboard** link;
|
||||
* Go to the settings screen (for instance, to switch from local storage to a server-managed panel configuration) by clicking on the **Advanced settings** link;
|
||||
* Adjust the number of columns for the grid of main menu tiles with the slider, from 1 (the default) to 6;
|
||||
* Drag the arrow icons in the top-left corner of each tile to move it;
|
||||
* Resize tiles with the chevron (triangle) in the bottom-right corner of each tile;
|
||||
* Configure the tiles and the dashboards themselves with the gears icons in the top-right corner of each tile;
|
||||
* Enter the dashboard designer by clicking inside a tile.
|
||||
|
||||
The configuration dialog when clicking on a tile's gear icon contains the following settings:
|
||||
|
||||
| Setting | Description
|
||||
|---------|-------------|
|
||||
| Name | The name of the dashboard, also displayed on the tile
|
||||
| Background URL | The URL of a background image *for the main menu tile*
|
||||
| Backdrop Icon | Iconset and icon displayed on the tile as a Backdrop
|
||||
| Center backdrop horizontally | When unchecked, the backdrop is aligned to the right of the tile; when checked, it is centered
|
||||
| Icon | Icon associated with the dashboard, currently only used in the side drawer
|
||||
| Size (icon) | _(currently unused)_
|
||||
| Title Text Color | Color for the name of the dashboard on the tile
|
||||
| Advanced tab | Contains settings currently unstable or buggy, for advanced users only
|
||||
|
||||
It also contains a **Delete** button which will delete the entire dashboard and its contents - this happens immediately and cannot be undone!
|
||||
|
||||
### The side drawer
|
||||
|
||||

|
||||
|
||||
The side drawer can be accessed from any screen by a swipe or drag to the right (on most elements where there isn't a conflict with this gesture), or with the "hamburger icon" ☰ in the top-left corner.
|
||||
|
||||
It is comprised of three parts:
|
||||
|
||||
1. A **header** - clicking on it returns to the main menu. Note: if defined, the title of the panel is displayed instead of the default "HABPanel" label, it is configured in the settings (see below);
|
||||
2. A **list of dashboards** for quick switching bettween dashboards without going back to the main menu - they are presented in the order of the menu (sorted by row, then by column);
|
||||
3. A **footer** displaying the current date & time and featuring a link to the settings screen (if available).
|
||||
|
||||
### The dashboard designer
|
||||
|
||||

|
||||
|
||||
The dashboard designer is where widgets can be added, positioned, resized and configured. Placeholders are displayed where actual widgets would be on the running dashboard.
|
||||
|
||||
To add a widget, use the **Add widget** button and choose among the list of standard widgets, or eventual custom widgets in the panel configuration.
|
||||
See below for a description of the standard widgets.
|
||||
|
||||

|
||||
|
||||
Use the header of a widget placeholder (with the four-arrow icon and the widget type) to move the widget. Moving a widget over other widgets do not push them away to make room (contrary to the main menu tiles), so ensure there is sufficient room for your widget before moving it.
|
||||
|
||||

|
||||
|
||||
When hovering over a placeholder (or tapping inside it if on a touch interface), a chevron appears in the bottom-right corner allowing to resize it.
|
||||
|
||||
Use the ellipsis icon **⁝** to bring up the widget's contextual menu, offering the following options:
|
||||
|
||||
- **Edit...:** Displays the configuration dialog for the widget. The options available in the dialog depend on the type of the widget and are detailed in the Widgets section;
|
||||
- **Copy/move to...**: Displays a dialog allowing to clone the widget with its configuration, to the current dashboard or another, or move it to another dashboard (the target widget will retain its size of the source widget but it will be placed where there is available room, use the target dashboard's designer to find it and reposition it);
|
||||
- **Delete**: Deletes the widget.
|
||||
|
||||
Modifications to the dashboard are not saved automatically, use the **Save** button in the header to commit the changes to the panel configuration (or local storage). The **Run** button also saves, then runs the dashboard.
|
||||
|
||||
### Running dashboards
|
||||
|
||||

|
||||
|
||||
When a dashboard is running, widgets can be interacted with, and server-sent events are received when items' states are updated, so widgets update automatically in HABPanel.
|
||||
|
||||
The icons in the top-right corner perform the following:
|
||||
- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([currently only in Chrome on desktops and Android](http://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen;
|
||||
- the **refresh** button forces HABPanel to retrieve the current state of all items;
|
||||
- the **fullscreen** button tells the browser to go fullscreen, if supported.
|
||||
|
||||
## Additional features and settings
|
||||
|
||||
Apart from the storage configuration discussed above, the settings screen contains several settings kept as part of the panel configuration (meaning they are set separately):
|
||||
|
||||
|
||||
| Setting | Description
|
||||
|---------|-------------|
|
||||
| Panel name | An user-friendly name for the panel. It will be displayed in the header of the side drawer.
|
||||
| Theme | HABPanel comes with a number of built-in themes, with this setting a different theme may applied to the panel. Themes are not user-modifiable.
|
||||
| Background image | Sets the specified URL as background image for the whole panel. *Tip: the background image works best with the 'translucent' theme!*
|
||||
| No clock on the home menu | _(Deprecated)_
|
||||
| Prevent scrolling (when not editing) | When enabled, it is impossible to scroll the dashboard on a tablet (and it prevents the "elastic" bouncing effect on iOS/Safari)
|
||||
| Manage > | Goes to the list of custom widget definitions for the active panel configuration
|
||||
| Voice | Selects a voice from the detected list for text-to-speech*
|
||||
| Speak the new value of the following item when it changes | When the selected String item change to a new text, HABPanel will use the browser's text-to-speech engine and the selected voice to read it aloud*
|
||||
| Display a floating speech button at the bottom of the screen | Use an alternative style for the Speak (voice input) button in dashboards
|
||||
| When this item changes to a dashboard's name, switch to it | This allows controlling the currently displayed dashboard by an openHAB item (useful with rules and as a side-effect to commands)
|
||||
|
||||
*Note: the text-to-speech functionality featured in HABPanel is unrelated to the [TTS services]({{base}}/configuration/multimedia.html#text-to-speech) defined on the openHAB server, and they are not compatible (this is why a String item is required and the `say()` function cannot be used). However, HABPanel will play audio streamed through the ['webaudio' sink]({{base}}/configuration/multimedia.html#audio), including spoken text.
|
||||
|
||||
|
||||
## Widgets
|
||||
|
||||
### Standard widgets
|
||||
|
||||
The following built-in widgets are available:
|
||||
|
||||
#### Dummy (dummy)
|
||||
|
||||

|
||||
|
||||
The so-called dummy widget (whose name is explained by historical reasons - it evolved from the first developed widget) displays the current state of an item without any interactivity, along with a label and an optional icon.
|
||||
|
||||
#### Switch (switch)
|
||||
|
||||

|
||||
|
||||
The switch widget is a simple widget to control a Switch item as defined in openHAB - it reports its state and is able to toggle it between ON and OFF.
|
||||
|
||||
#### Label (label)
|
||||
|
||||

|
||||
|
||||
The label widget is straightforward: it simply displays a fixed text and has a few appeareance options (color, font). It can for example be used as a header for a group of widgets below it.
|
||||
|
||||
#### Button (button)
|
||||
|
||||

|
||||
|
||||
The button widget can be clicked (or tapped) and will perform an action, like sending commands to an item or navigating to another dashboard. It can also adjust its colors depending on the state of the underlying item.
|
||||
|
||||
Multiple buttons are often used together to present different options for an item.
|
||||
|
||||
#### Slider (slider)
|
||||
|
||||

|
||||
|
||||
The slider widget can reflect the state of, and update, numerical items within a range of values. Several options are available to alter its appearance and behavior.
|
||||
|
||||
#### Knob (knob)
|
||||
|
||||

|
||||
|
||||
The knob widget is similar in essence to the slider, but in a rotary fashion. It also offers extensive configurability over its appearance and behavior.
|
||||
|
||||
#### Color picker (colorpicker)
|
||||
|
||||

|
||||
|
||||
The color picker widget offers several ways of displaying and updating the state of an openHAB Color item (or group).
|
||||
|
||||
#### Image (image)
|
||||
|
||||

|
||||
|
||||
The image widget can display an image, directly or via an openHAB String item, and can refresh it at regular intervals.
|
||||
|
||||
#### Frame (frame)
|
||||
|
||||

|
||||
|
||||
The frame widget displays an external web page in a HTML `<iframe>`.
|
||||
|
||||
#### Clock (clock)
|
||||
|
||||

|
||||
|
||||
The clock widget displays an analog or digital clock. It can also be used to display the current date.
|
||||
|
||||
#### Chart (chart)
|
||||
|
||||

|
||||
|
||||
The chart widget can leverage openHAB persistence services to plot numerical series over a time period. It can also display server-generated chart images (default or rrd4j variants).
|
||||
|
||||
#### Timeline (timeline)
|
||||
|
||||

|
||||
|
||||
The timeline widget is the chart widget's counterpart for non-numerical items. It can display multiple "swimlanes" of items with color-coded slices representing their state changes during the selected period. Hovering or tapping inside a color slice displays details on the state of the item at the time.
|
||||
|
||||
#### Template (template)
|
||||
|
||||
The template widget allows an user-configured AngularJS HTML template to be rendered and hosted inside the widget boundaries; it exposes several helper functions and other facilities to retrieve and update openHAB's items from the template's markup.
|
||||
|
||||
Refer to the _Developing templates and custom widgets_ section below for more information on template development.
|
||||
|
||||
Templates are defined inline, for each particular instance, and thus are not optimized for sharing and re-use. For those cases, developing a _custom widget_ is more appropriate.
|
||||
|
||||
### Custom widgets
|
||||
|
||||
Custom widgets are similar to (and based on) the template widget but are designed to be reused, shared, and configured. A custom widget is an AngularJS template with an associated set of configuration settings. It can be added to dashboards and configured individually, like a built-in widget. Definitions of custom widgets are stored in the registry at the panel configuration level; this means they are specific to a panel configuration and each panel configuration has its own custom widgets (see the _Concepts_ section above).
|
||||
|
||||
#### Managing custom widgets
|
||||
|
||||
([Community thread about this feature](https://community.openhab.org/t/custom-widgets-feature-walkthrough/16670/1))
|
||||
|
||||
The list of custom widgets either via the dashboard designer (click/tap the gears icon in the _Add Widget_ dropdown menu), or with the "Manage" button in the settings screen.
|
||||
|
||||
From the list, custom widgets can be created from scratch, or imported from a previously exported .json file. Members of the openHAB community present their custom widgets on the forum. The _Get widgets from the openHAB community_ link brings up a filtered lists of custom widgets from the community.
|
||||
|
||||
Once they are created, custom widgets can be exported to a .json file or deleted from the list using the context menu accessed with the ellipsis icon **⁝** on the tiles.
|
||||
|
||||

|
||||
|
||||
#### The widget designer
|
||||
|
||||
Upon clicking on a custom widget definition, the widget designer opens. It contains three tabs:
|
||||
|
||||
- **Code:** This tab is an editor for the template's code. You can use the Ctrl-S (or Cmd-S) keyboard shortcut to save the widget while editing the code;
|
||||
|
||||
- **Settings:** This tab hosts the widget's general settings and configuration settings structure to be defined.
|
||||
Click on the **Add setting** to add a new configuration setting. Each configuration setting must have a type, a technical ID, and other optional attributes. Each type of setting determines the UI element presented in the dashboard designer when configuring instances of the custom widget.
|
||||
Use the arrow buttons to move configuration settings up or down, and the trash bin icon to remove them.
|
||||
When instantiated, the value of configuration settings are set in the template's scope as `config.<setting_id>` (except those of type Icon which define an additional value, the iconset name, as `config.<setting_id>_iconset`);
|
||||
|
||||
- **Preview:** Upon switching to this tab, a test instance of the widget is rendered in an otherwise blank testbed dashboard. Use the sliders to resize the widget in order to preview it at different sizes. If it defines configuration settings, they must likely be set for this preview using the gears icon: this will bring up the widget instance's configuration dialog as it would appear in the dashboard designer.
|
||||
|
||||
Don't forget to save the changes with the **Save** button.
|
||||
|
||||
|
||||
## Developing templates and custom widgets
|
||||
|
||||
_This chapter will cover in detail how to write templates to build custom widgets. It is not yet written, in the meantime use the resources below:_
|
||||
|
||||
|
||||
[Main thread in the community forums](https://community.openhab.org/t/template-widget-tutorial-examples-make-your-own-widget/14211/1)
|
||||
|
||||
[Seek community help in the HABPanel category](https://community.openhab.org/c/apps-services/habpanel)
|
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 703 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 286 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 23 KiB |
|
@ -37,7 +37,9 @@ Note that this list also serves as a checklist for code reviews on pull requests
|
|||
|
||||
## C. Language Levels and Libraries
|
||||
|
||||
1. Eclipse SmartHome requires at least JavaSE 7. Hence no features of Java 8 must be used within the code. To allow optimized JavaSE 8 runtimes, the set of Java packages to be used is furthermore restricted to [Compact Profile 2](http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html).
|
||||
1. Eclipse SmartHome generally targets JavaSE 8 with the following restrictions:
|
||||
* To allow optimized JavaSE 8 runtimes, the set of Java packages to be used is furthermore restricted to [Compact Profile 2](http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html)
|
||||
* Java 5 for org.eclipse.smarthome.protocols.enocean.*
|
||||
1. The minimum OSGi framework version supported is [OSGi R4.2](http://www.osgi.org/Download/Release4V42), no newer features must be used.
|
||||
1. For logging, slf4j (v1.7.2) is used.
|
||||
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):
|
||||
|
|
|
@ -69,3 +69,15 @@ HSB string values consist of three comma-separated values for hue (0-360°), sat
|
|||
| StopMoveType | `STOP`, `MOVE` |
|
||||
| UpDownType | `UP`, `DOWN` |
|
||||
|
||||
## A note on items which accept multiple state data types
|
||||
|
||||
There are a number of items which accept multiple state data types, for example `DimmerItem`, which accepts `OnOffType` and `PercentType`, `RollershutterItem`, which accepts `PercentType` and `UpDownType`, or `ColorItem`, which accepts `HSBType`, `OnOffType` and `PercentType`. Since an item has a SINGLE state, these multiple data types can be considered different views to this state.
|
||||
The data type carrying the most information about the state is usually used to keep the internal state for the item, and other datatypes are converted from this main data type. This main data type is normally the first element in the list returned by `Item.getAcceptedDataTypes()`.
|
||||
|
||||
Here is a short table demonstrating conversions for the examples above:
|
||||
|
||||
| Itemname | Main data type | Additional data types conversions |
|
||||
| --- | --- | --- |
|
||||
| Color | `HSBType` | <ul><li>`OnOffType` - `OFF` if the brightness level in the `HSBType` equals 0, `ON` otherwise</li><li>`PercentType` - the value for the brightness level in the `HSBType`</li></ul> |
|
||||
| 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|
|
||||
|
|
|
@ -24,13 +24,15 @@ Each thing has a status object, which helps to identify possible problems with t
|
|||
|---------------|-------------|
|
||||
| UNINITIALIZED | This is the initial status of a thing, when it is added or the framework is being started. This status is also assigned, if the initializing process failed or the binding is not available. Commands, which are sent to channels will not be processed. |
|
||||
| INITIALIZING | This state is assigned while the binding initializes the thing. It depends on the binding how long the initializing process takes. Commands, which are sent to channels will not be processed. |
|
||||
| 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 and then must not switch back to UNKNOWN. |
|
||||
| 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. |
|
||||
| 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. Usually this status is an intermediate status, because the thing is removed from the database after this status is assigned. |
|
||||
| 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. |
|
||||
|
||||
The statuses UNINITIALIZED, INITIALIZING and REMOVING are set by the framework, where as the statuses UNKNOWN, ONLINE, OFFLINE and REMOVED are assigned from a binding.
|
||||
The statuses UNINITIALIZED, INITIALIZING and REMOVING are set by the framework, where as the statuses UNKNOWN, ONLINE and OFFLINE are assigned from a binding.
|
||||
|
||||
Additionally, the REMOVED state is set by the binding to indicate that the removal process has been completed, i.e. the thing must have been in REMOVING state before.
|
||||
|
||||
### Status Transitions
|
||||
|
||||
|
|