mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[Documentation] Markdown improvements for bindings a to e (#13859)
Signed-off-by: Jerome Luckenbach <github@luckenba.ch>
This commit is contained in:
parent
72efc1cfed
commit
caf71f72e6
@ -75,7 +75,7 @@ For this example to run on an openHAB version older than 2.5 Bedroom 1's Slider
|
|||||||
|
|
||||||
## demo.things
|
## demo.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge adorne:hub:home "Adorne Hub" [host="192.160.1.111", port=2113] {
|
Bridge adorne:hub:home "Adorne Hub" [host="192.160.1.111", port=2113] {
|
||||||
switch bathroom "Bathroom" [zoneId=0]
|
switch bathroom "Bathroom" [zoneId=0]
|
||||||
dimmer bedroom1 "Bedroom1" [zoneId=1]
|
dimmer bedroom1 "Bedroom1" [zoneId=1]
|
||||||
@ -85,7 +85,7 @@ Bridge adorne:hub:home "Adorne Hub" [host="192.160.1.111", port=2113] {
|
|||||||
|
|
||||||
## demo.items
|
## demo.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch LightBathroom {channel="adorne:switch:home:bathroom:power"}
|
Switch LightBathroom {channel="adorne:switch:home:bathroom:power"}
|
||||||
Switch LightBedroomSwitch1 {channel="adorne:dimmer:home:bedroom1:power"}
|
Switch LightBedroomSwitch1 {channel="adorne:dimmer:home:bedroom1:power"}
|
||||||
Dimmer LightBedroomDimmer1 {channel="adorne:dimmer:home:bedroom1:brightness"}
|
Dimmer LightBedroomDimmer1 {channel="adorne:dimmer:home:bedroom1:brightness"}
|
||||||
@ -95,7 +95,7 @@ Dimmer LightBedroomDimmer2 {channel="adorne:dimmer:home:bedroom2:brightness"}
|
|||||||
|
|
||||||
## demo.sitemap
|
## demo.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Adorne Binding Demo"
|
sitemap demo label="Adorne Binding Demo"
|
||||||
{
|
{
|
||||||
Frame label="Adorne Switch" {
|
Frame label="Adorne Switch" {
|
||||||
|
@ -14,21 +14,20 @@ Discovery is not possible, due some form input values from the website above are
|
|||||||
|
|
||||||
For configuration of the **collectionSchedule** thing, you need the form inputs from the aha collections schedule web page. Follow the steps below to get the required configuration parameters from the form input values.
|
For configuration of the **collectionSchedule** thing, you need the form inputs from the aha collections schedule web page. Follow the steps below to get the required configuration parameters from the form input values.
|
||||||
|
|
||||||
|
|
||||||
1. Open [aha Abfuhrkalender](https://www.aha-region.de/abholtermine/abfuhrkalender) in your favorite brower with developer-console.
|
1. Open [aha Abfuhrkalender](https://www.aha-region.de/abholtermine/abfuhrkalender) in your favorite brower with developer-console.
|
||||||
2. Open the developer console and switch to network tab (for example press F12 in chrome / edge / firefox).
|
1. Open the developer console and switch to network tab (for example press F12 in chrome / edge / firefox).
|
||||||
3. Fill in the form: Select your commune, Street and house number and hit "Suchen".
|
1. Fill in the form: Select your commune, Street and house number and hit "Suchen".
|
||||||
4. Select the first request to https://www.aha-region.de/abholtermine/abfuhrkalender (see first screenshot below)
|
1. Select the first request to [https://www.aha-region.de/abholtermine/abfuhrkalender](https://www.aha-region.de/abholtermine/abfuhrkalender) (see first screenshot below)
|
||||||
5. Check the form data at the end of the request for the form values (see second screenshot below)
|
1. Check the form data at the end of the request for the form values (see second screenshot below)
|
||||||
5. Fill in the values from the form input in thing configuration (see examples below)
|
1. Fill in the values from the form input in thing configuration (see examples below)
|
||||||
|
|
||||||
![Chrome Developer Console Top](doc/images/ChromeDevconsoleTop.png "Chrome Developer Console showing request URL")
|
![Chrome Developer Console Top](doc/images/ChromeDevconsoleTop.png "Chrome Developer Console showing request URL")
|
||||||
|
|
||||||
*Check if you've selected the correct request, that contains the form data*
|
Check if you've selected the correct request, that contains the form data
|
||||||
|
|
||||||
![Chrome Developer Console Bottom](doc/images/ChromeDevconsoleBottom.png "Chrome Developer Console showing form inputs")
|
![Chrome Developer Console Bottom](doc/images/ChromeDevconsoleBottom.png "Chrome Developer Console showing form inputs")
|
||||||
|
|
||||||
*Grab the values for the configuration parameters from the form data section at the end of the request*
|
Grab the values for the configuration parameters from the form data section at the end of the request
|
||||||
|
|
||||||
**collectionSchedule** parameters:
|
**collectionSchedule** parameters:
|
||||||
|
|
||||||
@ -44,7 +43,6 @@ For configuration of the **collectionSchedule** thing, you need the form inputs
|
|||||||
|
|
||||||
The thing **aha Waste Collection Schedule** provides four channels for the upcoming day of waste collection for the different waste types.
|
The thing **aha Waste Collection Schedule** provides four channels for the upcoming day of waste collection for the different waste types.
|
||||||
|
|
||||||
|
|
||||||
| channel | type | description |
|
| channel | type | description |
|
||||||
|----------|--------|------------------------------|
|
|----------|--------|------------------------------|
|
||||||
| generalWaste | DateTime | Next collection day for general waste |
|
| generalWaste | DateTime | Next collection day for general waste |
|
||||||
@ -52,28 +50,26 @@ The thing **aha Waste Collection Schedule** provides four channels for the upcom
|
|||||||
| bioWaste | DateTime | Next collection day for bio waste |
|
| bioWaste | DateTime | Next collection day for bio waste |
|
||||||
| paper | DateTime | Next collection day for paper |
|
| paper | DateTime | Next collection day for paper |
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
wasteCollection.things
|
wasteCollection.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing ahawastecollection:collectionSchedule:wasteCollectionSchedule "aha Abfuhrkalender" [ commune="Isernhagen", street="67269@Rosmarinweg+/+Kirchhorst@Kirchhorst", houseNumber="10", houseNumberAddon="", collectionPlace="67269-0010+" ]
|
Thing ahawastecollection:collectionSchedule:wasteCollectionSchedule "aha Abfuhrkalender" [ commune="Isernhagen", street="67269@Rosmarinweg+/+Kirchhorst@Kirchhorst", houseNumber="10", houseNumberAddon="", collectionPlace="67269-0010+" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
wasteCollection.items
|
wasteCollection.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
DateTime collectionDay_generalWaste "Next general waste collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:generalWaste"}
|
DateTime collectionDay_generalWaste "Next general waste collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:generalWaste"}
|
||||||
DateTime collectionDay_leightweightPackaging "Next lightweight packaging collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:leightweightPackaging"}
|
DateTime collectionDay_leightweightPackaging "Next lightweight packaging collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:leightweightPackaging"}
|
||||||
DateTime collectionDay_bioWaste "Next bio waste collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:bioWaste"}
|
DateTime collectionDay_bioWaste "Next bio waste collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:bioWaste"}
|
||||||
DateTime collectionDay_paper "Next paper collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:paper"}
|
DateTime collectionDay_paper "Next paper collection" {channel="ahawastecollection:collectionSchedule:wasteCollectionSchedule:paper"}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Example for rule that sends a notification with collected waste types on day before collection
|
Example for rule that sends a notification with collected waste types on day before collection
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
triggers:
|
triggers:
|
||||||
- id: "1"
|
- id: "1"
|
||||||
configuration:
|
configuration:
|
||||||
|
@ -120,13 +120,13 @@ The rw column is empty if the channel is only readable, w if the channel can be
|
|||||||
|
|
||||||
### air-Q.things
|
### air-Q.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing airq:airq:1 "air-Q" [ ipAddress="192.168.0.68", password="myAirQPassword" ]
|
Thing airq:airq:1 "air-Q" [ ipAddress="192.168.0.68", password="myAirQPassword" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
### air-Q.items
|
### air-Q.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
String airQ_status "Status of Sensors" {channel="airq:airq:1:status"}
|
String airQ_status "Status of Sensors" {channel="airq:airq:1:status"}
|
||||||
Number:Length airQ_avgFineDustSize "Average Size of Fine Dust" {channel="airq:airq:1:avgFineDustSize"}
|
Number:Length airQ_avgFineDustSize "Average Size of Fine Dust" {channel="airq:airq:1:avgFineDustSize"}
|
||||||
Number:Dimensionless airQ_fineDustCnt00_3 "Fine Dust >0,3 µm" {channel="airq:airq:1:fineDustCnt00_3"}
|
Number:Dimensionless airQ_fineDustCnt00_3 "Fine Dust >0,3 µm" {channel="airq:airq:1:fineDustCnt00_3"}
|
||||||
|
@ -30,7 +30,6 @@ The bridge configuration only holds the api key :
|
|||||||
|-----------|-------------------------------------------------------------------------|
|
|-----------|-------------------------------------------------------------------------|
|
||||||
| apiKey | Data-platform token to access the AQIcn.org service. Mandatory. |
|
| apiKey | Data-platform token to access the AQIcn.org service. Mandatory. |
|
||||||
|
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
The 'Station' thing has a few configuration parameters:
|
The 'Station' thing has a few configuration parameters:
|
||||||
@ -51,7 +50,7 @@ For the location parameter, the following syntax is allowed (comma separated lat
|
|||||||
If you always want to receive data from specific station and you know its unique ID, you can enter it instead of the coordinates.
|
If you always want to receive data from specific station and you know its unique ID, you can enter it instead of the coordinates.
|
||||||
|
|
||||||
This `stationId` can be found by using the following link:
|
This `stationId` can be found by using the following link:
|
||||||
https://api.waqi.info/search/?token=TOKEN&keyword=NAME, replacing TOKEN by your apiKey and NAME by the station you are looking for.
|
`https://api.waqi.info/search/?token=TOKEN&keyword=NAME`, replacing TOKEN by your apiKey and NAME by the station you are looking for.
|
||||||
|
|
||||||
### Thing properties
|
### Thing properties
|
||||||
|
|
||||||
@ -61,7 +60,6 @@ Once created, at first execution, the station's properties will be filled with i
|
|||||||
- Measuring station ID
|
- Measuring station ID
|
||||||
- Latitude/longitude of measuring station
|
- Latitude/longitude of measuring station
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
The AirQuality information that is retrieved for a given is available as these channels:
|
The AirQuality information that is retrieved for a given is available as these channels:
|
||||||
@ -98,7 +96,6 @@ you will be provided with the following informations
|
|||||||
| index | Number | AQI Index of the single pollutant |
|
| index | Number | AQI Index of the single pollutant |
|
||||||
| alert-level | Number | Alert level associate to the index |
|
| alert-level | Number | Alert level associate to the index |
|
||||||
|
|
||||||
|
|
||||||
(*) The alert level is described by a color :
|
(*) The alert level is described by a color :
|
||||||
|
|
||||||
| Code | Color | Description |
|
| Code | Color | Description |
|
||||||
@ -110,10 +107,8 @@ you will be provided with the following informations
|
|||||||
| 4 | Purple | Very Unhealthy |
|
| 4 | Purple | Very Unhealthy |
|
||||||
| 5 | Maroon | Hazardous |
|
| 5 | Maroon | Hazardous |
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
|
|
||||||
airquality.things:
|
airquality.things:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
@ -8,7 +8,7 @@ There is one supported Thing, the "avnode".
|
|||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Binding will do autodiscovery for AirVisual Node by searching for a host advertised with the NetBIOS name 'AVISUAL-<SerialNumber>'.
|
Binding will do autodiscovery for AirVisual Node by searching for a host advertised with the NetBIOS name `AVISUAL-<SerialNumber>`.
|
||||||
|
|
||||||
All discovered devices will be added to the inbox. Please note you will need to set the Node username and password in the configuration
|
All discovered devices will be added to the inbox. Please note you will need to set the Node username and password in the configuration
|
||||||
of the newly discovered thing before a connection can be made.
|
of the newly discovered thing before a connection can be made.
|
||||||
@ -56,7 +56,7 @@ The Node updates measurements data every 5 minutes in active mode and every 15 m
|
|||||||
The preferred way to add AirVisual Node to the openHAB installation is autodiscovery,
|
The preferred way to add AirVisual Node to the openHAB installation is autodiscovery,
|
||||||
but the AirVisual Node also can be configured using `.things` file:
|
but the AirVisual Node also can be configured using `.things` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
airvisualnode:avnode:1a2b3c4 [ address="192.168.1.32", username="airvisual", password="12345", share="airvisual", refresh=60 ]
|
airvisualnode:avnode:1a2b3c4 [ address="192.168.1.32", username="airvisual", password="12345", share="airvisual", refresh=60 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ airvisualnode:avnode:1a2b3c4 [ address="192.168.1.32", username="airvisual", pas
|
|||||||
|
|
||||||
Here is an example of items for the AirVisual Node:
|
Here is an example of items for the AirVisual Node:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature Livingroom_Temperature "Temperature [%.1f %unit%]" <temperature> {channel="airvisualnode:avnode:1a2b3c4:temperature"}
|
Number:Temperature Livingroom_Temperature "Temperature [%.1f %unit%]" <temperature> {channel="airvisualnode:avnode:1a2b3c4:temperature"}
|
||||||
Number:Dimensionless Livingroom_Humidity "Humidity [%d %unit%]" <humidity> {channel="airvisualnode:avnode:1a2b3c4:humidity"}
|
Number:Dimensionless Livingroom_Humidity "Humidity [%d %unit%]" <humidity> {channel="airvisualnode:avnode:1a2b3c4:humidity"}
|
||||||
Number:Dimensionless Livingroom_CO2_Level "CO₂" {channel="airvisualnode:avnode:1a2b3c4:co2"}
|
Number:Dimensionless Livingroom_CO2_Level "CO₂" {channel="airvisualnode:avnode:1a2b3c4:co2"}
|
||||||
@ -77,7 +77,7 @@ DateTime Livingroom_Aqi_Timestamp "AQI Timestamp [%1$tH:%1$tM]" { channel="airvi
|
|||||||
|
|
||||||
Example rules:
|
Example rules:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "AirVisual Node Temperature Rule"
|
rule "AirVisual Node Temperature Rule"
|
||||||
when
|
when
|
||||||
Item Livingroom_Temperature changed
|
Item Livingroom_Temperature changed
|
||||||
@ -119,7 +119,7 @@ end
|
|||||||
|
|
||||||
Example sitemap:
|
Example sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap home label="Home" {
|
sitemap home label="Home" {
|
||||||
Frame label="Living Room" {
|
Frame label="Living Room" {
|
||||||
Text item=Livingroom_Temperature
|
Text item=Livingroom_Temperature
|
||||||
|
@ -5,9 +5,9 @@ It acts essentially like a keypad, reading and writing messages on the serial bu
|
|||||||
|
|
||||||
There are several versions of the adapter available:
|
There are several versions of the adapter available:
|
||||||
|
|
||||||
* *AD2PI* or *AD2PHAT* - A board that plugs into a Raspberry Pi and offers network-based TCP connectivity
|
- _AD2PI_ or _AD2PHAT_ - A board that plugs into a Raspberry Pi and offers network-based TCP connectivity
|
||||||
* *AD2SERIAL* - Attaches to a host via a serial port
|
- _AD2SERIAL_ - Attaches to a host via a serial port
|
||||||
* *AD2USB* - Attaches to a host via USB
|
- _AD2USB_ - Attaches to a host via USB
|
||||||
|
|
||||||
This binding allows openHAB to access the state of wired or wireless contacts and motion detectors connected to supported alarm panels, as well as the state of attached keypads and the messages send to attached LRR devices.
|
This binding allows openHAB to access the state of wired or wireless contacts and motion detectors connected to supported alarm panels, as well as the state of attached keypads and the messages send to attached LRR devices.
|
||||||
Support is also available for sending keypad commands, including special/programmable keys supported by your panel.
|
Support is also available for sending keypad commands, including special/programmable keys supported by your panel.
|
||||||
@ -16,19 +16,19 @@ Support is also available for sending keypad commands, including special/program
|
|||||||
|
|
||||||
The binding supports the following thing types:
|
The binding supports the following thing types:
|
||||||
|
|
||||||
* `ipbridge` - Supports TCP connection to the AD.
|
- `ipbridge` - Supports TCP connection to the AD.
|
||||||
* `serialbridge` - Supports serial/USB connection to the AD.
|
- `serialbridge` - Supports serial/USB connection to the AD.
|
||||||
* `keypad` - Reports keypad status and optionally sends keypad messages.
|
- `keypad` - Reports keypad status and optionally sends keypad messages.
|
||||||
* `zone` - Reports status from zone expanders and relay expanders, and also from built-in zones via emulation.
|
- `zone` - Reports status from zone expanders and relay expanders, and also from built-in zones via emulation.
|
||||||
* `rfzone` - Reports status from RF zones.
|
- `rfzone` - Reports status from RF zones.
|
||||||
* `vzone` - Sends commands to virtual zones.
|
- `vzone` - Sends commands to virtual zones.
|
||||||
* `lrr` - Reports messages sent from the panel to a Long Range Radio (LRR) or emulated LRR device.
|
- `lrr` - Reports messages sent from the panel to a Long Range Radio (LRR) or emulated LRR device.
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Background discovery is currently supported for `zone` and `rfzone` things.
|
Background discovery is currently supported for `zone` and `rfzone` things.
|
||||||
If the bridge `discovery` parameter is set to *true*, the first time a status message is seen from each zone or RF zone a corresponding thing will appear in the inbox.
|
If the bridge `discovery` parameter is set to _true_, the first time a status message is seen from each zone or RF zone a corresponding thing will appear in the inbox.
|
||||||
Leaving the `discovery` parameter set to *false* during normal operation is recommended, as it will slightly reduce resource consumption by the binding.
|
Leaving the `discovery` parameter set to _false_ during normal operation is recommended, as it will slightly reduce resource consumption by the binding.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
@ -45,21 +45,21 @@ Although not mentioned in the Quick Start guide, configuring virtual relay board
|
|||||||
|
|
||||||
Alarm Decoder things can be configured through openHAB's management UI, or manually via configuration files.
|
Alarm Decoder things can be configured through openHAB's management UI, or manually via configuration files.
|
||||||
When first configuring the binding it is probably easiest to configure it via the management UI, even if you plan to use configuration files later.
|
When first configuring the binding it is probably easiest to configure it via the management UI, even if you plan to use configuration files later.
|
||||||
If you enable the *discovery* option on the bridge, as you fault zones (e.g. open doors and windows, trigger motion detectors, etc.) they should appear in the discovery inbox.
|
If you enable the _discovery_ option on the bridge, as you fault zones (e.g. open doors and windows, trigger motion detectors, etc.) they should appear in the discovery inbox.
|
||||||
|
|
||||||
### ipbridge
|
### ipbridge
|
||||||
|
|
||||||
The `ipbridge` thing supports a TCP/IP connection to an Alarm Decoder device such as *AD2PI* or *AD2PHAT*.
|
The `ipbridge` thing supports a TCP/IP connection to an Alarm Decoder device such as _AD2PI_ or _AD2PHAT_.
|
||||||
|
|
||||||
* `hostname` (required) The hostname or IP address of the Alarm Decoder device
|
- `hostname` (required) The hostname or IP address of the Alarm Decoder device
|
||||||
* `tcpPort` (default = 10000) TCP port number for the Alarm Decoder connection
|
- `tcpPort` (default = 10000) TCP port number for the Alarm Decoder connection
|
||||||
* `discovery` (default = false) Enable automatic discovery of zones and RF zones
|
- `discovery` (default = false) Enable automatic discovery of zones and RF zones
|
||||||
* `reconnect` (1-60, default = 2) The period in minutes that the handler will wait between connection checks and connection attempts
|
- `reconnect` (1-60, default = 2) The period in minutes that the handler will wait between connection checks and connection attempts
|
||||||
* `timeout` (0-60, default = 5) The period in minutes after which the connection will be reset if no valid messages have been received. Set to 0 to disable.
|
- `timeout` (0-60, default = 5) The period in minutes after which the connection will be reset if no valid messages have been received. Set to 0 to disable.
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, discovery=true ] {
|
Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, discovery=true ] {
|
||||||
Thing ...
|
Thing ...
|
||||||
Thing ...
|
Thing ...
|
||||||
@ -68,17 +68,17 @@ Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, disc
|
|||||||
|
|
||||||
### serialbridge
|
### serialbridge
|
||||||
|
|
||||||
The `serialbridge` thing supports a serial or USB connection to an Alarm Decoder device such as *AD2SERIAL* or *AD2USB*.
|
The `serialbridge` thing supports a serial or USB connection to an Alarm Decoder device such as _AD2SERIAL_ or _AD2USB_.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
* `serialPort` (required) The name of the serial port used to connect to the Alarm Decoder device
|
- `serialPort` (required) The name of the serial port used to connect to the Alarm Decoder device
|
||||||
* `bitrate` Speed of the serial connection
|
- `bitrate` Speed of the serial connection
|
||||||
* `discovery` (default=false) Enable automatic discovery of zones and RF zones
|
- `discovery` (default=false) Enable automatic discovery of zones and RF zones
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge alarmdecoder:serialbridge:ad1 [ serialPort="/dev/ttyS1", bitrate=115200, discovery=true ] {
|
Bridge alarmdecoder:serialbridge:ad1 [ serialPort="/dev/ttyS1", bitrate=115200, discovery=true ] {
|
||||||
Thing ...
|
Thing ...
|
||||||
Thing ...
|
Thing ...
|
||||||
@ -98,10 +98,10 @@ Command strings containing invalid characters will be ignored.
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
* `addressMask` (default = 0) String containing the mask in hex of addresses for which the keypad thing will receive messages (0 = all addresses).
|
- `addressMask` (default = 0) String containing the mask in hex of addresses for which the keypad thing will receive messages (0 = all addresses).
|
||||||
* `sendCommands` (default = false) Allow keypad commands to be sent to the alarm system from openHAB. Enabling this means the alarm system will be only as secure as your openHAB system.
|
- `sendCommands` (default = false) Allow keypad commands to be sent to the alarm system from openHAB. Enabling this means the alarm system will be only as secure as your openHAB system.
|
||||||
* `sendStar` (default = false) When disarmed/faulted, automatically send the * character to obtain zone fault information.
|
- `sendStar` (default = false) When disarmed/faulted, automatically send the * character to obtain zone fault information.
|
||||||
* `commandMapping` (optional) Comma separated list of key/value pairs mapping integers to command strings for `intcommand` channel.
|
- `commandMapping` (optional) Comma separated list of key/value pairs mapping integers to command strings for `intcommand` channel.
|
||||||
|
|
||||||
Address masks
|
Address masks
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ The first byte (left to right) represents devices 0-7, the second 8-15, the thir
|
|||||||
The mask itself is represented as a string containing a hexadecimal number.
|
The mask itself is represented as a string containing a hexadecimal number.
|
||||||
For example, a mask of 03000000 would indicate devices 0 and 1 as follows:
|
For example, a mask of 03000000 would indicate devices 0 and 1 as follows:
|
||||||
|
|
||||||
```
|
```text
|
||||||
Mask: 03000000
|
Mask: 03000000
|
||||||
Bytes: 03 00 00 00
|
Bytes: 03 00 00 00
|
||||||
Bits: 00000011 00000000 00000000 00000000
|
Bits: 00000011 00000000 00000000 00000000
|
||||||
@ -121,7 +121,7 @@ Device# 111111 22221111 33222222
|
|||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing keypad keypad1 [ addressMask=0, sendCommands=true ]
|
Thing keypad keypad1 [ addressMask=0, sendCommands=true ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -131,12 +131,12 @@ The `zone` thing reports status from zone expanders and relay expanders, and als
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
* `address` (required) Zone address
|
- `address` (required) Zone address
|
||||||
* `channel` (required) Zone channel
|
- `channel` (required) Zone channel
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing zone frontdoor [ address=10, channel=1 ]
|
Thing zone frontdoor [ address=10, channel=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -146,11 +146,11 @@ The `rfzone` thing reports status from wireless zones, such as 5800 series RF de
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
* `serial` (required) Serial number of the RF zone
|
- `serial` (required) Serial number of the RF zone
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing rfzone motion1 [ serial=0180010 ]
|
Thing rfzone motion1 [ serial=0180010 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -163,11 +163,11 @@ The `state` channel is a switch type channel that reflects the current state of
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
* `address` (required) Virtual zone number (0-99)
|
- `address` (required) Virtual zone number (0-99)
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing vzone watersensor [ address=41 ]
|
Thing vzone watersensor [ address=41 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -178,11 +178,11 @@ These are normally specifically formatted messages as described in the [SIA DC-0
|
|||||||
They can also, depending on configuration, be other types of messages as described [here](https://www.alarmdecoder.com/wiki/index.php/LRR_Support).
|
They can also, depending on configuration, be other types of messages as described [here](https://www.alarmdecoder.com/wiki/index.php/LRR_Support).
|
||||||
For panels that support multiple partitions, the partition for which a given lrr thing will receive messages can be defined.
|
For panels that support multiple partitions, the partition for which a given lrr thing will receive messages can be defined.
|
||||||
|
|
||||||
* `partition` (default = 0) Partition for which to receive LRR events (0 = All)
|
- `partition` (default = 0) Partition for which to receive LRR events (0 = All)
|
||||||
|
|
||||||
Thing config file example:
|
Thing config file example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing lrr lrr [ partition=0 ]
|
Thing lrr lrr [ partition=0 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -190,13 +190,13 @@ Thing config file example:
|
|||||||
|
|
||||||
The alarmdecoder things expose the following channels:
|
The alarmdecoder things expose the following channels:
|
||||||
|
|
||||||
**zone**
|
### zone
|
||||||
|
|
||||||
| channel | type |RO/RW| description |
|
| channel | type |RO/RW| description |
|
||||||
|--------------|---------|-----|------------------------------|
|
|--------------|---------|-----|------------------------------|
|
||||||
| contact | Contact |RO |Zone contact state |
|
| contact | Contact |RO |Zone contact state |
|
||||||
|
|
||||||
**rfzone**
|
### rfzone
|
||||||
|
|
||||||
| channel | type |RO/RW| description |
|
| channel | type |RO/RW| description |
|
||||||
|--------------|---------|-----|------------------------------|
|
|--------------|---------|-----|------------------------------|
|
||||||
@ -207,14 +207,14 @@ The alarmdecoder things expose the following channels:
|
|||||||
| loop3 | Contact | RO |Loop 3 state |
|
| loop3 | Contact | RO |Loop 3 state |
|
||||||
| loop4 | Contact | RO |Loop 4 state |
|
| loop4 | Contact | RO |Loop 4 state |
|
||||||
|
|
||||||
**vzone**
|
### vzone
|
||||||
|
|
||||||
| channel | type |RO/RW| description |
|
| channel | type |RO/RW| description |
|
||||||
|--------------|---------|-----|------------------------------|
|
|--------------|---------|-----|------------------------------|
|
||||||
| command | String | WO |"OPEN" or "CLOSED" command |
|
| command | String | WO |"OPEN" or "CLOSED" command |
|
||||||
| state | Switch | RW |Zone state (ON = closed) |
|
| state | Switch | RW |Zone state (ON = closed) |
|
||||||
|
|
||||||
**keypad**
|
### keypad
|
||||||
|
|
||||||
| channel | type |RO/RW| description |
|
| channel | type |RO/RW| description |
|
||||||
|--------------|---------|-----|------------------------------|
|
|--------------|---------|-----|------------------------------|
|
||||||
@ -239,11 +239,11 @@ The alarmdecoder things expose the following channels:
|
|||||||
| command | String | RW |Keypad command |
|
| command | String | RW |Keypad command |
|
||||||
| intcommand | Number | RW |Integer keypad command |
|
| intcommand | Number | RW |Integer keypad command |
|
||||||
|
|
||||||
*Note* - The `intcommand` channel is provided for backward compatibility with the OH1 version of the binding.
|
_Note_ - The `intcommand` channel is provided for backward compatibility with the OH1 version of the binding.
|
||||||
The integer to command string mappings are provided by the optional keypad `commandMapping` parameter.
|
The integer to command string mappings are provided by the optional keypad `commandMapping` parameter.
|
||||||
The default mapping is "0=0,1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,10=*,11=#".
|
The default mapping is "0=0,1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,10=*,11=#".
|
||||||
|
|
||||||
**lrr**
|
### lrr
|
||||||
|
|
||||||
| channel | type |RO/RW| description |
|
| channel | type |RO/RW| description |
|
||||||
|--------------|---------|-----|------------------------------|
|
|--------------|---------|-----|------------------------------|
|
||||||
@ -256,7 +256,7 @@ The default mapping is "0=0,1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,10=*,11=#".
|
|||||||
|
|
||||||
Example ad.things file:
|
Example ad.things file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, discovery=true ] {
|
Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, discovery=true ] {
|
||||||
Thing zone frontdoor [ address=10, channel=1 ]
|
Thing zone frontdoor [ address=10, channel=1 ]
|
||||||
Thing zone backdoor [ address=11, channel=1 ]
|
Thing zone backdoor [ address=11, channel=1 ]
|
||||||
@ -269,7 +269,7 @@ Bridge alarmdecoder:ipbridge:ad1 [ hostname="cerberus.home", tcpPort=10000, disc
|
|||||||
|
|
||||||
Example ad.items file:
|
Example ad.items file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number KeypadZone "Zone [%d]" {channel="alarmdecoder:keypad:ad1:keypad1:zone"}
|
Number KeypadZone "Zone [%d]" {channel="alarmdecoder:keypad:ad1:keypad1:zone"}
|
||||||
String KeypadText "Message" {channel="alarmdecoder:keypad:ad1:keypad1:text"}
|
String KeypadText "Message" {channel="alarmdecoder:keypad:ad1:keypad1:text"}
|
||||||
Switch KeypadArmedAway "Armed Away" {channel="alarmdecoder:keypad:ad1:keypad1:armedaway"}
|
Switch KeypadArmedAway "Armed Away" {channel="alarmdecoder:keypad:ad1:keypad1:armedaway"}
|
||||||
@ -295,18 +295,18 @@ String LrrMessage "CID Message" {channel="alarmdecoder:lrr:ad1:lrr:cidmessage"}
|
|||||||
String LrrReportCode "CID Report Code" {channel="alarmdecoder:lrr:ad1:lrr:reportcode"}
|
String LrrReportCode "CID Report Code" {channel="alarmdecoder:lrr:ad1:lrr:reportcode"}
|
||||||
```
|
```
|
||||||
|
|
||||||
*Note: For brevity, not every possible keypad channel is linked to an item in the above example.*
|
_Note: For brevity, not every possible keypad channel is linked to an item in the above example._
|
||||||
|
|
||||||
## Thing Actions
|
## Thing Actions
|
||||||
|
|
||||||
The `ipbridge` and `serialbridge` things expose the following action to the automation engine:
|
The `ipbridge` and `serialbridge` things expose the following action to the automation engine:
|
||||||
|
|
||||||
*reboot* - Send command to reboot the Alarm Decoder device. Accepts no parameters.
|
_reboot_ - Send command to reboot the Alarm Decoder device. Accepts no parameters.
|
||||||
|
|
||||||
## Quirks
|
## Quirks
|
||||||
|
|
||||||
The alarmdecoder device cannot query the panel for the state of individual zones.
|
The alarmdecoder device cannot query the panel for the state of individual zones.
|
||||||
For this reason, the binding puts contacts into the "unknown" state (UNDEF), *until the panel goes into the READY state*.
|
For this reason, the binding puts contacts into the "unknown" state (UNDEF), _until the panel goes into the READY state_.
|
||||||
At that point, all contacts for which no update messages have arrived are presumed to be in the CLOSED state.
|
At that point, all contacts for which no update messages have arrived are presumed to be in the CLOSED state.
|
||||||
In other words: to get to a clean slate after an openHAB restart, close all doors/windows such that the panel is READY.
|
In other words: to get to a clean slate after an openHAB restart, close all doors/windows such that the panel is READY.
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ The Binding code is inspired by [hortinstein/node-dash-button](https://github.co
|
|||||||
**Warning:**
|
**Warning:**
|
||||||
The Dash Button will try to contact the Amazon servers every time the button is pressed.
|
The Dash Button will try to contact the Amazon servers every time the button is pressed.
|
||||||
This might not be in line with your privacy preferences but can be prevented.
|
This might not be in line with your privacy preferences but can be prevented.
|
||||||
Please refer to the ["Preventing Communication with Amazon Servers"](#no-phonehome) section for details.
|
Please refer to the ["Preventing Communication with Amazon Servers"](#preventing-communication-with-amazon-servers) section for details.
|
||||||
|
|
||||||
**Response Time:**
|
**Response Time:**
|
||||||
Please be aware, that due to the operation method of this binding, the response time for a button press can be rather high (up to five seconds).
|
Please be aware, that due to the operation method of this binding, the response time for a button press can be rather high (up to five seconds).
|
||||||
@ -61,7 +61,7 @@ You need to restart openHAB for the capabilities change to take effect.
|
|||||||
On a Windows system there are two options to go with.
|
On a Windows system there are two options to go with.
|
||||||
|
|
||||||
1. The preferred solution is [WinPcap](https://www.winpcap.org) if your network interface is supported.
|
1. The preferred solution is [WinPcap](https://www.winpcap.org) if your network interface is supported.
|
||||||
2. An alternative option is [npcap](https://github.com/nmap/npcap) with the settings "WinPcap 4.1.3 compatibility" and "Raw 802.11 Packet Capture"
|
1. An alternative option is [npcap](https://github.com/nmap/npcap) with the settings "WinPcap 4.1.3 compatibility" and "Raw 802.11 Packet Capture"
|
||||||
|
|
||||||
### Installing libpcap on Other Operating Systems
|
### Installing libpcap on Other Operating Systems
|
||||||
|
|
||||||
@ -76,10 +76,9 @@ A few known operating systems are:
|
|||||||
## Setup Dash Button
|
## Setup Dash Button
|
||||||
|
|
||||||
Amazon itself doesn't support Dash Buttons anymore.
|
Amazon itself doesn't support Dash Buttons anymore.
|
||||||
Instructions how to use them without having to rely on Amazon's servers can be found at https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/ - at least for some firmware versions.
|
Instructions how to use them without having to rely on Amazon's servers can be found at [https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/](https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/) - at least for some firmware versions.
|
||||||
Take care to block internet access for the button or it will be bricked.
|
Take care to block internet access for the button or it will be bricked.
|
||||||
|
|
||||||
{: #no-phonehome}
|
|
||||||
## Preventing Communication with Amazon Servers
|
## Preventing Communication with Amazon Servers
|
||||||
|
|
||||||
Every time a Dash Button is pressed a request will be sent to the Amazon servers.
|
Every time a Dash Button is pressed a request will be sent to the Amazon servers.
|
||||||
|
@ -76,10 +76,10 @@ The configuration of your amazon account must be done in the 'Amazon Account' de
|
|||||||
|
|
||||||
## First Steps
|
## First Steps
|
||||||
|
|
||||||
1) Create an 'Amazon Account' thing
|
1. Create an 'Amazon Account' thing
|
||||||
2) open the url YOUR_OPENHAB/amazonechocontrol in your browser (e.g. http://openhab:8080/amazonechocontrol/), click the link for your account thing and login.
|
1. open the url YOUR_OPENHAB/amazonechocontrol in your browser (e.g. `http://openhab:8080/amazonechocontrol/`), click the link for your account thing and login.
|
||||||
3) You should see now a message that the login was successful
|
1. You should see now a message that the login was successful
|
||||||
4) If you encounter redirect/page refresh issues, enable two-factor authentication (2FA) on your Amazon account.
|
1. If you encounter redirect/page refresh issues, enable two-factor authentication (2FA) on your Amazon account.
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ You will find the required serial number in settings of the device in the Alexa
|
|||||||
|
|
||||||
If you want to discover your smart home devices you need to activate it in the 'Amazon Account' thing.
|
If you want to discover your smart home devices you need to activate it in the 'Amazon Account' thing.
|
||||||
Devices from other skills can be discovered too.
|
Devices from other skills can be discovered too.
|
||||||
See section *Smart Home Devices* below for more information.
|
See section _Smart Home Devices_ below for more information.
|
||||||
|
|
||||||
## Account
|
## Account
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ The configuration of your Amazon account must be done in the 'Amazon Account' de
|
|||||||
|--------------------------|----------------------------------------------------|
|
|--------------------------|----------------------------------------------------|
|
||||||
| serialNumber | Serial number of the Amazon Echo in the Alexa app |
|
| serialNumber | Serial number of the Amazon Echo in the Alexa app |
|
||||||
|
|
||||||
You will find the serial number in the Alexa app or on the webpage YOUR_OPENHAB/amazonechocontrol/YOUR_ACCOUNT (e.g. http://openhab:8080/amazonechocontrol/account1).
|
You will find the serial number in the Alexa app or on the webpage YOUR_OPENHAB/amazonechocontrol/YOUR_ACCOUNT (e.g. `http://openhab:8080/amazonechocontrol/account1`).
|
||||||
|
|
||||||
### Flash Briefing Profile
|
### Flash Briefing Profile
|
||||||
|
|
||||||
@ -201,13 +201,13 @@ This can be used to call Alexa API from rules.
|
|||||||
|
|
||||||
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
||||||
|
|
||||||
http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1
|
`http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1`
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
#### echo.things
|
#### echo.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2, pollingIntervalSmartHomeAlexa=30, pollingIntervalSmartSkills=120]
|
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2, pollingIntervalSmartHomeAlexa=30, pollingIntervalSmartSkills=120]
|
||||||
{
|
{
|
||||||
Thing echo echo1 "Alexa" @ "Living Room" [serialNumber="SERIAL_NUMBER"]
|
Thing echo echo1 "Alexa" @ "Living Room" [serialNumber="SERIAL_NUMBER"]
|
||||||
@ -222,7 +222,7 @@ Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discove
|
|||||||
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
||||||
Take a look in the channel description above to know, which channels are supported by your thing type.
|
Take a look in the channel description above to know, which channels are supported by your thing type.
|
||||||
|
|
||||||
```
|
```java
|
||||||
// Account
|
// Account
|
||||||
String Echo_Living_Room_SendMessage "SendMessage" {channel="amazonechocontrol:account:account1:sendMessage"}
|
String Echo_Living_Room_SendMessage "SendMessage" {channel="amazonechocontrol:account:account1:sendMessage"}
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ String FlashBriefing_LifeStyle_Play "Play (Write only)"
|
|||||||
|
|
||||||
#### echo.sitemap:
|
#### echo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap amazonechocontrol label="Echo Devices"
|
sitemap amazonechocontrol label="Echo Devices"
|
||||||
{
|
{
|
||||||
Frame label="Alexa" {
|
Frame label="Alexa" {
|
||||||
@ -349,13 +349,13 @@ sitemap amazonechocontrol label="Echo Devices"
|
|||||||
|
|
||||||
## Flash Briefing
|
## Flash Briefing
|
||||||
|
|
||||||
#### Supported Things
|
### Supported Things
|
||||||
|
|
||||||
| Thing type id | Name |
|
| Thing type id | Name |
|
||||||
|----------------------|---------------------------------------|
|
|----------------------|---------------------------------------|
|
||||||
| flashbriefingprofile | Flash briefing profile |
|
| flashbriefingprofile | Flash briefing profile |
|
||||||
|
|
||||||
#### Channels
|
### Channels
|
||||||
|
|
||||||
The flashbriefingprofile thing has no configuration parameters.
|
The flashbriefingprofile thing has no configuration parameters.
|
||||||
It will be configured at runtime by using the save channel to store the current flash briefing configuration which is set in the alexa app in the thing. Create a flashbriefingprofile Thing for each set you need.
|
It will be configured at runtime by using the save channel to store the current flash briefing configuration which is set in the alexa app in the thing. Create a flashbriefingprofile Thing for each set you need.
|
||||||
@ -367,11 +367,11 @@ E.g. One Flashbriefing profile with technical news and wheater, one for playing
|
|||||||
| active | Switch | R/W | flashbriefingprofile | Active the profile
|
| active | Switch | R/W | flashbriefingprofile | Active the profile
|
||||||
| playOnDevice | String | W | flashbriefingprofile | Specify the echo serial number or name to start the flash briefing.
|
| playOnDevice | String | W | flashbriefingprofile | Specify the echo serial number or name to start the flash briefing.
|
||||||
|
|
||||||
#### Example
|
### Example
|
||||||
|
|
||||||
#### flashbriefings.things
|
#### flashbriefings.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2]
|
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2]
|
||||||
{
|
{
|
||||||
Thing flashbriefingprofile flashbriefing1 "Flash Briefing Technical" @ "Flash Briefings"
|
Thing flashbriefingprofile flashbriefing1 "Flash Briefing Technical" @ "Flash Briefings"
|
||||||
@ -384,7 +384,7 @@ Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discove
|
|||||||
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
||||||
Take a look in the channel description above to know, which channels are supported by your thing type.
|
Take a look in the channel description above to know, which channels are supported by your thing type.
|
||||||
|
|
||||||
```
|
```java
|
||||||
// Flashbriefings
|
// Flashbriefings
|
||||||
Switch FlashBriefing_Technical_Save "Save (Write only)" {channel="amazonechocontrol:flashbriefingprofile:account1:flashbriefing1:save"}
|
Switch FlashBriefing_Technical_Save "Save (Write only)" {channel="amazonechocontrol:flashbriefingprofile:account1:flashbriefing1:save"}
|
||||||
Switch FlashBriefing_Technical_Active "Active" {channel="amazonechocontrol:flashbriefingprofile:account1:flashbriefing1:active"}
|
Switch FlashBriefing_Technical_Active "Active" {channel="amazonechocontrol:flashbriefingprofile:account1:flashbriefing1:active"}
|
||||||
@ -397,7 +397,7 @@ String FlashBriefing_LifeStyle_Play "Play (Write only)" {channel="amazonechoco
|
|||||||
|
|
||||||
#### flashbriefings.sitemap:
|
#### flashbriefings.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap flashbriefings label="Flash Briefings"
|
sitemap flashbriefings label="Flash Briefings"
|
||||||
{
|
{
|
||||||
Frame label="Flash Briefing Technical" {
|
Frame label="Flash Briefing Technical" {
|
||||||
@ -419,15 +419,14 @@ sitemap flashbriefings label="Flash Briefings"
|
|||||||
Note: the channels of smartHomeDevices and smartHomeDeviceGroup will be created dynamically based on the capabilities reported by the amazon server. This can take a little bit of time.
|
Note: the channels of smartHomeDevices and smartHomeDeviceGroup will be created dynamically based on the capabilities reported by the amazon server. This can take a little bit of time.
|
||||||
The polling interval configured in the Account Thing to get the state is specified in minutes and has a minimum of 10. This means it takes up to 10 minutes to see the state of a channel. The reason for this low interval is, that the polling causes a big server load for the Smart Home Skills.
|
The polling interval configured in the Account Thing to get the state is specified in minutes and has a minimum of 10. This means it takes up to 10 minutes to see the state of a channel. The reason for this low interval is, that the polling causes a big server load for the Smart Home Skills.
|
||||||
|
|
||||||
#### Supported Things
|
### Supported Things
|
||||||
|
|
||||||
| Thing type id | Name |
|
| Thing type id | Name |
|
||||||
|----------------------|---------------------------------------|
|
|----------------------|---------------------------------------|
|
||||||
| smartHomeDevice | Smart Home Device |
|
| smartHomeDevice | Smart Home Device |
|
||||||
| smartHomeDeviceGroup | Smart Home Device group |
|
| smartHomeDeviceGroup | Smart Home Device group |
|
||||||
|
|
||||||
|
### Thing configuration of smartHomeDevice, smartHomeDeviceGroup
|
||||||
#### Thing configuration of smartHomeDevice, smartHomeDeviceGroup
|
|
||||||
|
|
||||||
| Configuration name | Description |
|
| Configuration name | Description |
|
||||||
|--------------------------|---------------------------------------------------------------------------|
|
|--------------------------|---------------------------------------------------------------------------|
|
||||||
@ -435,7 +434,7 @@ The polling interval configured in the Account Thing to get the state is specifi
|
|||||||
|
|
||||||
The only possibility to find out the id is by using the discover function in the UI. You can use then the id, if you want define the Thing in a file.
|
The only possibility to find out the id is by using the discover function in the UI. You can use then the id, if you want define the Thing in a file.
|
||||||
|
|
||||||
#### Channels
|
### Channels
|
||||||
|
|
||||||
The channels of the smarthome devices will be generated at runtime. Check in the UI thing configurations, which channels are created.
|
The channels of the smarthome devices will be generated at runtime. Check in the UI thing configurations, which channels are created.
|
||||||
|
|
||||||
@ -464,7 +463,7 @@ The channels of the smarthome devices will be generated at runtime. Check in the
|
|||||||
|
|
||||||
#### smarthome.things
|
#### smarthome.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2, pollingIntervalSmartHomeAlexa=30, pollingIntervalSmartSkills=120]
|
Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discoverSmartHome=2, pollingIntervalSmartHomeAlexa=30, pollingIntervalSmartSkills=120]
|
||||||
{
|
{
|
||||||
Thing smartHomeDevice smartHomeDevice1 "Smart Home Device 1" @ "Living Room" [id="ID"]
|
Thing smartHomeDevice smartHomeDevice1 "Smart Home Device 1" @ "Living Room" [id="ID"]
|
||||||
@ -479,7 +478,7 @@ Bridge amazonechocontrol:account:account1 "Amazon Account" @ "Accounts" [discove
|
|||||||
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
Sample for the Thing echo1 only. But it will work in the same way for the other things, only replace the thing name in the channel link.
|
||||||
Take a look in the channel description above to know which channels are supported by your thing type.
|
Take a look in the channel description above to know which channels are supported by your thing type.
|
||||||
|
|
||||||
```
|
```java
|
||||||
// Lights and lightgroups
|
// Lights and lightgroups
|
||||||
Switch Light_State "On/Off" {channel="amazonechocontrol:smartHomeDevice:account1:smartHomeDevice1:powerState"}
|
Switch Light_State "On/Off" {channel="amazonechocontrol:smartHomeDevice:account1:smartHomeDevice1:powerState"}
|
||||||
Dimmer Light_Brightness "Brightness" {channel="amazonechocontrol:smartHomeDevice:account1:smartHomeDevice1:brightness"}
|
Dimmer Light_Brightness "Brightness" {channel="amazonechocontrol:smartHomeDevice:account1:smartHomeDevice1:brightness"}
|
||||||
@ -501,7 +500,7 @@ The only possibility to find out the id for the smartHomeDevice and smartHomeDev
|
|||||||
|
|
||||||
#### smarthome.sitemap:
|
#### smarthome.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap smarthome label="Smart Home Devices"
|
sitemap smarthome label="Smart Home Devices"
|
||||||
{
|
{
|
||||||
Frame label="Lights and light groups" {
|
Frame label="Lights and light groups" {
|
||||||
@ -519,18 +518,18 @@ sitemap smarthome label="Smart Home Devices"
|
|||||||
|
|
||||||
## How To Get IDs
|
## How To Get IDs
|
||||||
|
|
||||||
1) Open the url YOUR_OPENHAB/amazonechocontrol in your browser (e.g. http://openhab:8080/amazonechocontrol/)
|
1. Open the url YOUR_OPENHAB/amazonechocontrol in your browser (e.g. `http://openhab:8080/amazonechocontrol/`)
|
||||||
2) Click on the name of the account thing
|
1. Click on the name of the account thing
|
||||||
3) Click on the name of the echo thing
|
1. Click on the name of the echo thing
|
||||||
4) Scroll to the channel and copy the required ID
|
1. Scroll to the channel and copy the required ID
|
||||||
|
|
||||||
## Advanced Feature Technically Experienced Users
|
### Advanced Feature Technically Experienced Users
|
||||||
|
|
||||||
The url <YOUR_OPENHAB>/amazonechocontrol/<YOUR_ACCOUNT>/PROXY/<API_URL> provides a proxy server with an authenticated connection to the amazon alexa server. This can be used to call alexa api from rules.
|
The url <YOUR_OPENHAB>/amazonechocontrol/<YOUR_ACCOUNT>/PROXY/<API_URL> provides a proxy server with an authenticated connection to the amazon alexa server. This can be used to call alexa api from rules.
|
||||||
|
|
||||||
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
||||||
|
|
||||||
http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1
|
`http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1`
|
||||||
|
|
||||||
## Tutorials
|
## Tutorials
|
||||||
|
|
||||||
@ -589,8 +588,7 @@ No specification uses the volume from the `textToSpeechVolume` channel.
|
|||||||
|
|
||||||
Note: If you turn off the sound and Alexa is playing music, it will anyway turn down the volume for a moment. This behavior can not be changed.
|
Note: If you turn off the sound and Alexa is playing music, it will anyway turn down the volume for a moment. This behavior can not be changed.
|
||||||
|
|
||||||
|
```java
|
||||||
```php
|
|
||||||
rule "Say welcome if the door opens"
|
rule "Say welcome if the door opens"
|
||||||
when
|
when
|
||||||
Item Door_Contact changed to OPEN
|
Item Door_Contact changed to OPEN
|
||||||
@ -601,11 +599,11 @@ end
|
|||||||
|
|
||||||
## Playing an alarm sound for 15 seconds with an openHAB rule if a door contact was opened:
|
## Playing an alarm sound for 15 seconds with an openHAB rule if a door contact was opened:
|
||||||
|
|
||||||
1) Do get the ID of your sound, follow the steps in "How To Get IDs"
|
1. Do get the ID of your sound, follow the steps in "How To Get IDs"
|
||||||
2) Write down the text in the square brackets. e.g. ECHO:system_alerts_repetitive01 for the nightstand sound
|
1. Write down the text in the square brackets. e.g. ECHO:system_alerts_repetitive01 for the nightstand sound
|
||||||
3) Create a rule for start playing the sound:
|
1. Create a rule for start playing the sound:
|
||||||
|
|
||||||
```php
|
```java
|
||||||
var Timer stopAlarmTimer = null
|
var Timer stopAlarmTimer = null
|
||||||
|
|
||||||
rule "Turn on alarm sound for 15 seconds if door opens"
|
rule "Turn on alarm sound for 15 seconds if door opens"
|
||||||
@ -631,11 +629,11 @@ Note 2: The rule have no effect for your default alarm sound used in the Alexa a
|
|||||||
|
|
||||||
### Play a spotify playlist if a switch was changed to on:
|
### Play a spotify playlist if a switch was changed to on:
|
||||||
|
|
||||||
1) Do get the ID of your sound, follow the steps in "How To Get IDs"
|
1. Do get the ID of your sound, follow the steps in "How To Get IDs"
|
||||||
2) Write down the text in the square brackets. e.g. SPOTIFY for the spotify music provider
|
1. Write down the text in the square brackets. e.g. SPOTIFY for the spotify music provider
|
||||||
3) Create a rule for start playing a song or playlist:
|
1. Create a rule for start playing a song or playlist:
|
||||||
|
|
||||||
```php
|
```java
|
||||||
rule "Play a playlist on spotify if a switch was changed"
|
rule "Play a playlist on spotify if a switch was changed"
|
||||||
when
|
when
|
||||||
Item Spotify_Playlist_Switch changed to ON
|
Item Spotify_Playlist_Switch changed to ON
|
||||||
@ -649,10 +647,10 @@ Note: It is recommended to test the command send to play music command first wit
|
|||||||
|
|
||||||
### Start playing weather/traffic/etc:
|
### Start playing weather/traffic/etc:
|
||||||
|
|
||||||
1) Pick up one of the available commands: Weather, Traffic, GoodMorning, SingASong, TellStory, FlashBriefing
|
1. Pick up one of the available commands: Weather, Traffic, GoodMorning, SingASong, TellStory, FlashBriefing
|
||||||
2) Create a rule for start playing the information where you provide the command as string:
|
1. Create a rule for start playing the information where you provide the command as string:
|
||||||
|
|
||||||
```php
|
```java
|
||||||
rule "Start wheater info"
|
rule "Start wheater info"
|
||||||
when
|
when
|
||||||
Item Spotify_Start_Wheater_Switch changed to ON
|
Item Spotify_Start_Wheater_Switch changed to ON
|
||||||
@ -663,11 +661,11 @@ end
|
|||||||
|
|
||||||
### Start playing a custom flashbriefing on a device:
|
### Start playing a custom flashbriefing on a device:
|
||||||
|
|
||||||
1) Do get the ID of your sound, follow the steps in "How To Get IDs"
|
1. Do get the ID of your sound, follow the steps in "How To Get IDs"
|
||||||
2) Write down the text in the square brackets. e.g. flashbriefing.flashbriefing1
|
1. Write down the text in the square brackets. e.g. flashbriefing.flashbriefing1
|
||||||
2) Create a rule for start playing the information where you provide the command as string:
|
1. Create a rule for start playing the information where you provide the command as string:
|
||||||
|
|
||||||
```php
|
```java
|
||||||
rule "Start wheater info"
|
rule "Start wheater info"
|
||||||
when
|
when
|
||||||
Item Spotify_Start_Wheater_Switch changed to ON
|
Item Spotify_Start_Wheater_Switch changed to ON
|
||||||
@ -676,14 +674,14 @@ then
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
## Advanced Feature Technically Experienced Users
|
### Advanced Feature Technically Experienced Users
|
||||||
|
|
||||||
The url <YOUR_OPENHAB>/amazonechocontrol/<YOUR_ACCOUNT>/PROXY/<API_URL> provides a proxy server with an authenticated connection to the Amazon Alexa server.
|
The url <YOUR_OPENHAB>/amazonechocontrol/<YOUR_ACCOUNT>/PROXY/<API_URL> provides a proxy server with an authenticated connection to the Amazon Alexa server.
|
||||||
This can be used to call Alexa API from rules.
|
This can be used to call Alexa API from rules.
|
||||||
|
|
||||||
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
E.g. to read out the history call from an installation on openhab:8080 with an account named account1:
|
||||||
|
|
||||||
http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1
|
`http://openhab:8080/amazonechocontrol/account1/PROXY/api/activities?startTime=&size=50&offset=1`
|
||||||
|
|
||||||
To resolve login problems the connection settings of an `account` thing can be reset via the karaf console.
|
To resolve login problems the connection settings of an `account` thing can be reset via the karaf console.
|
||||||
The command `amazonechocontrol listAccounts` shows a list of all available `account` things.
|
The command `amazonechocontrol listAccounts` shows a list of all available `account` things.
|
||||||
@ -700,9 +698,9 @@ The binding is tested with amazon.de, amazon.fr, amazon.it, amazon.com and amazo
|
|||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
The idea for writing this binding came from this blog: https://blog.loetzimmer.de/2017/10/amazon-alexa-hort-auf-die-shell-echo.html (German).
|
The idea for writing this binding came from this blog: [https://blog.loetzimmer.de/2017/10/amazon-alexa-hort-auf-die-shell-echo.html](https://blog.loetzimmer.de/2017/10/amazon-alexa-hort-auf-die-shell-echo.html) (German).
|
||||||
Thank you Alex!
|
Thank you Alex!
|
||||||
The technical information for the web socket connection to get live Alexa state updates cames from Ingo. He has done the Alexa ioBroker implementation https://github.com/Apollon77
|
The technical information for the web socket connection to get live Alexa state updates cames from Ingo. He has done the Alexa ioBroker implementation [https://github.com/Apollon77](https://github.com/Apollon77)
|
||||||
Thank you Ingo!
|
Thank you Ingo!
|
||||||
|
|
||||||
## Trademark Disclaimer
|
## Trademark Disclaimer
|
||||||
|
@ -29,8 +29,8 @@ Automatic discovery is currently not supported due to the lack of weather statio
|
|||||||
|
|
||||||
| Parameter | Parameter ID | Required/Optional | Description |
|
| Parameter | Parameter ID | Required/Optional | Description |
|
||||||
|------------------|-------------------|-------------------|-------------|
|
|------------------|-------------------|-------------------|-------------|
|
||||||
| API Key | apiKey | Required | Obtain the API key on the *My Account* page of your `ambientweather.net` dashboard. |
|
| API Key | apiKey | Required | Obtain the API key on the _My Account_ page of your `ambientweather.net` dashboard. |
|
||||||
| Application Key | apiKey | Required | Obtain the Application key on the *My Account* page of your `ambientweather.net` dashboard. |
|
| Application Key | apiKey | Required | Obtain the Application key on the _My Account_ page of your `ambientweather.net` dashboard. |
|
||||||
|
|
||||||
### Weather Station
|
### Weather Station
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ The following channels are supported by the binding. Note that specific weather
|
|||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge ambientweather:bridge:account "Ambient Weather Account" [ applicationKey="bd7eb3fe87f74e9.....", apiKey="efe88d6202be43e6a40....." ] {
|
Bridge ambientweather:bridge:account "Ambient Weather Account" [ applicationKey="bd7eb3fe87f74e9.....", apiKey="efe88d6202be43e6a40....." ] {
|
||||||
Thing ws1400ip 1400 "Ambient Weather WS-1400-IP" [ macAddress="00:ab:cd:00:00:01" ]
|
Thing ws1400ip 1400 "Ambient Weather WS-1400-IP" [ macAddress="00:ab:cd:00:00:01" ]
|
||||||
Thing ws8482 8482 "Ambient Weather WS-8482" [ macAddress="00:ab:cd:00:00:02" ]
|
Thing ws8482 8482 "Ambient Weather WS-8482" [ macAddress="00:ab:cd:00:00:02" ]
|
||||||
@ -107,7 +107,7 @@ Bridge ambientweather:bridge:account "Ambient Weather Account" [ applicationKey=
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
// WS-1400-IP Weather Station
|
// WS-1400-IP Weather Station
|
||||||
String WS1400IP_StationName "Station Name [%s]" { channel="ambientweather:ws1400ip:account:1400:station#name" }
|
String WS1400IP_StationName "Station Name [%s]" { channel="ambientweather:ws1400ip:account:1400:station#name" }
|
||||||
String WS1400IP_StationLocation "Station Location [%s]" { channel="ambientweather:ws1400ip:account:1400:station#location" }
|
String WS1400IP_StationLocation "Station Location [%s]" { channel="ambientweather:ws1400ip:account:1400:station#location" }
|
||||||
@ -173,7 +173,7 @@ String WS8482_SoilSensorBattery "Remote Battery [MAP(ambient-battery.map):%s]" {
|
|||||||
|
|
||||||
#### File ambient-battery.map
|
#### File ambient-battery.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
-=UNKNOWN
|
-=UNKNOWN
|
||||||
NULL=UNKNOWN
|
NULL=UNKNOWN
|
||||||
1=GOOD
|
1=GOOD
|
||||||
@ -182,7 +182,7 @@ NULL=UNKNOWN
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Text label="Weather Station" icon="sun_clouds" {
|
Text label="Weather Station" icon="sun_clouds" {
|
||||||
Frame {
|
Frame {
|
||||||
Text item=WS1400IP_ObservationTime label="Observation Time [%1$tm/%1$td %1$tl:%1$tM %1$tp]"
|
Text item=WS1400IP_ObservationTime label="Observation Time [%1$tm/%1$td %1$tl:%1$tM %1$tp]"
|
||||||
@ -231,19 +231,19 @@ Text label="Weather Station" icon="sun_clouds" {
|
|||||||
|
|
||||||
Adding support for a new weather station type involves changes to the source code in just a few places.
|
Adding support for a new weather station type involves changes to the source code in just a few places.
|
||||||
|
|
||||||
#### Add a New Thing Type in AmbientWeatherBindingConstants.java
|
### Add a New Thing Type in AmbientWeatherBindingConstants.java
|
||||||
|
|
||||||
Define a new `ThingTypeUID` for the new station and add it to the `SUPPORTED_THING_TYPES_UIDS` Collection.
|
Define a new `ThingTypeUID` for the new station and add it to the `SUPPORTED_THING_TYPES_UIDS` Collection.
|
||||||
|
|
||||||
Add a channel group for the new station.
|
Add a channel group for the new station.
|
||||||
|
|
||||||
#### Create OH-INF/thing/\<station-model\>.xml
|
### Create OH-INF/thing/\<station-model\>.xml
|
||||||
|
|
||||||
Add thing type and channel group specific to the data elements supported by this weather station.
|
Add thing type and channel group specific to the data elements supported by this weather station.
|
||||||
Modeling this after an existing thing type that shares many of the channels is the easiest starting point.
|
Modeling this after an existing thing type that shares many of the channels is the easiest starting point.
|
||||||
You can determine the weather data elements returned for the weather station by putting the binding into debug mode and reviewing the JSON object returned by the Ambient Weather API.
|
You can determine the weather data elements returned for the weather station by putting the binding into debug mode and reviewing the JSON object returned by the Ambient Weather API.
|
||||||
|
|
||||||
#### Create Processor Class <StationModel>Processor
|
### Create Processor Class <StationModel>Processor
|
||||||
|
|
||||||
Add a class in `org.openhab.binding.ambientweather.internal.processor` that defines the channels supported by this station type.
|
Add a class in `org.openhab.binding.ambientweather.internal.processor` that defines the channels supported by this station type.
|
||||||
|
|
||||||
@ -251,14 +251,14 @@ Add the following two methods.
|
|||||||
|
|
||||||
Again, the easiest approach is to model this class after a class for a similar weather station type.
|
Again, the easiest approach is to model this class after a class for a similar weather station type.
|
||||||
|
|
||||||
##### Method: processInfoUpdate
|
#### Method: processInfoUpdate
|
||||||
|
|
||||||
Updates the channels for station name and location.
|
Updates the channels for station name and location.
|
||||||
|
|
||||||
##### Method: processWeatherData
|
#### Method: processWeatherData
|
||||||
|
|
||||||
Updates channels for weather data.
|
Updates channels for weather data.
|
||||||
|
|
||||||
#### Update ProcessorFactory.java
|
### Update ProcessorFactory.java
|
||||||
|
|
||||||
Add new Processor class definition to `ProcessorFactory.java`, and add a new case to the switch statement to return the new processor.
|
Add new Processor class definition to `ProcessorFactory.java`, and add a new case to the switch statement to return the new processor.
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
This binding supports the multi-room audio system [AmpliPi](http://www.amplipi.com/) from [MicroNova](http://www.micro-nova.com/).
|
This binding supports the multi-room audio system [AmpliPi](http://www.amplipi.com/) from [MicroNova](http://www.micro-nova.com/).
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
The AmpliPi itself is modeled as a Bridge of type `controller`.
|
The AmpliPi itself is modeled as a Bridge of type `controller`.
|
||||||
@ -56,7 +55,7 @@ If no volume value is passed, the current volume of each zone is used, otherwise
|
|||||||
|
|
||||||
amplipi.things:
|
amplipi.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge amplipi:controller:1 "My AmpliPi" [ hostname="amplipi.local" ] {
|
Bridge amplipi:controller:1 "My AmpliPi" [ hostname="amplipi.local" ] {
|
||||||
zone zone2 "Living Room" [ id=1 ]
|
zone zone2 "Living Room" [ id=1 ]
|
||||||
}
|
}
|
||||||
@ -64,7 +63,7 @@ Bridge amplipi:controller:1 "My AmpliPi" [ hostname="amplipi.local" ] {
|
|||||||
|
|
||||||
amplipi.items:
|
amplipi.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Preset "Preset" { channel="amplipi:controller:1:preset" }
|
Number Preset "Preset" { channel="amplipi:controller:1:preset" }
|
||||||
String Input1 "Input 1" { channel="amplipi:controller:1:input1" }
|
String Input1 "Input 1" { channel="amplipi:controller:1:input1" }
|
||||||
String Input2 "Input 2" { channel="amplipi:controller:1:input2" }
|
String Input2 "Input 2" { channel="amplipi:controller:1:input2" }
|
||||||
@ -78,7 +77,7 @@ Number SourceZ2 "Source Zone2" { channel="amplipi:zone:1:zone2:
|
|||||||
|
|
||||||
amplipi.sitemap:
|
amplipi.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap amplipi label="Main Menu"
|
sitemap amplipi label="Main Menu"
|
||||||
{
|
{
|
||||||
Frame label="AmpliPi" {
|
Frame label="AmpliPi" {
|
||||||
|
@ -60,10 +60,10 @@ You can configure different modes to detect when the device is playing media dep
|
|||||||
|
|
||||||
The available modes are:
|
The available modes are:
|
||||||
|
|
||||||
* idle: assert not playing, avoid command execution.
|
- idle: assert not playing, avoid command execution.
|
||||||
* media_state: detect play status by dumping the media_session service. This is the default for not configured apps
|
- media_state: detect play status by dumping the media_session service. This is the default for not configured apps
|
||||||
* audio: detect play status by dumping the audio service.
|
- audio: detect play status by dumping the audio service.
|
||||||
* wake_lock: detect play status by comparing the power wake lock state with the values provided in 'wakeLockPlayStates'
|
- wake_lock: detect play status by comparing the power wake lock state with the values provided in 'wakeLockPlayStates'
|
||||||
|
|
||||||
The configuration depends on the application, device and version used.
|
The configuration depends on the application, device and version used.
|
||||||
|
|
||||||
@ -79,8 +79,8 @@ They are pretty device specific, so you should use the record-input and recorded
|
|||||||
|
|
||||||
An example of what you can do:
|
An example of what you can do:
|
||||||
|
|
||||||
* You can send the command `UP` to the `record-input` channel the binding will then capture the events you send through your remote for the defined recordDuration config for the thing, so press once the UP key on your remote and wait a while.
|
- You can send the command `UP` to the `record-input` channel the binding will then capture the events you send through your remote for the defined recordDuration config for the thing, so press once the UP key on your remote and wait a while.
|
||||||
* Now that you have recorded your input, you can send the `UP` command to the `recorded-input` event and it will send the recorded event to the android device.
|
- Now that you have recorded your input, you can send the `UP` command to the `recorded-input` event and it will send the recorded event to the android device.
|
||||||
|
|
||||||
Please note that events could fail if the input method is removed, for example it could fail if you clone the events of a bluetooth controller and the remote goes offline. This is happening for me when recording the Fire TV remote events but not for my Xiaomi TV which also has a bt remote controller.
|
Please note that events could fail if the input method is removed, for example it could fail if you clone the events of a bluetooth controller and the remote goes offline. This is happening for me when recording the Fire TV remote events but not for my Xiaomi TV which also has a bt remote controller.
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ Please note that events could fail if the input method is removed, for example i
|
|||||||
| wake-lock | Number | Power wake lock value |
|
| wake-lock | Number | Power wake lock value |
|
||||||
| screen-state | Switch | Screen power state |
|
| screen-state | Switch | Screen power state |
|
||||||
|
|
||||||
#### Start Intent
|
### Start Intent
|
||||||
|
|
||||||
This channel allows to invoke the 'am start' command, the syntax for it is:
|
This channel allows to invoke the 'am start' command, the syntax for it is:
|
||||||
<package/activity>||<<arg name>> <arg value>||...
|
<package/activity>||<<arg name>> <arg value>||...
|
||||||
@ -114,311 +114,311 @@ This channel allows to invoke the 'am start' command, the syntax for it is:
|
|||||||
This is a sample:
|
This is a sample:
|
||||||
com.netflix.ninja/.MainActivity||<a>android.intent.action.VIEW||<d>netflix://title/80025384||<f>0x10000020||<es>amzn_deeplink_data 80025384
|
com.netflix.ninja/.MainActivity||<a>android.intent.action.VIEW||<d>netflix://title/80025384||<f>0x10000020||<es>amzn_deeplink_data 80025384
|
||||||
|
|
||||||
Not all the (arguments)[https://developer.android.com/studio/command-line/adb#IntentSpec] are supported. Please open an issue or pull request if you need more.
|
Not all the [arguments](https://developer.android.com/studio/command-line/adb#IntentSpec) are supported. Please open an issue or pull request if you need more.
|
||||||
|
|
||||||
#### Available key-event values:
|
### Available key-event values:
|
||||||
|
|
||||||
* KEYCODE_0
|
- KEYCODE_0
|
||||||
* KEYCODE_1
|
- KEYCODE_1
|
||||||
* KEYCODE_11
|
- KEYCODE_11
|
||||||
* KEYCODE_12
|
- KEYCODE_12
|
||||||
* KEYCODE_2
|
- KEYCODE_2
|
||||||
* KEYCODE_3
|
- KEYCODE_3
|
||||||
* KEYCODE_3D_MODE
|
- KEYCODE_3D_MODE
|
||||||
* KEYCODE_4
|
- KEYCODE_4
|
||||||
* KEYCODE_5
|
- KEYCODE_5
|
||||||
* KEYCODE_6
|
- KEYCODE_6
|
||||||
* KEYCODE_7
|
- KEYCODE_7
|
||||||
* KEYCODE_8
|
- KEYCODE_8
|
||||||
* KEYCODE_9
|
- KEYCODE_9
|
||||||
* KEYCODE_A
|
- KEYCODE_A
|
||||||
* KEYCODE_ALL_APPS
|
- KEYCODE_ALL_APPS
|
||||||
* KEYCODE_ALT_LEFT
|
- KEYCODE_ALT_LEFT
|
||||||
* KEYCODE_ALT_RIGHT
|
- KEYCODE_ALT_RIGHT
|
||||||
* KEYCODE_APOSTROPHE
|
- KEYCODE_APOSTROPHE
|
||||||
* KEYCODE_APP_SWITCH
|
- KEYCODE_APP_SWITCH
|
||||||
* KEYCODE_ASSIST
|
- KEYCODE_ASSIST
|
||||||
* KEYCODE_AT
|
- KEYCODE_AT
|
||||||
* KEYCODE_AVR_INPUT
|
- KEYCODE_AVR_INPUT
|
||||||
* KEYCODE_AVR_POWER
|
- KEYCODE_AVR_POWER
|
||||||
* KEYCODE_B
|
- KEYCODE_B
|
||||||
* KEYCODE_BACK
|
- KEYCODE_BACK
|
||||||
* KEYCODE_BACKSLASH
|
- KEYCODE_BACKSLASH
|
||||||
* KEYCODE_BOOKMARK
|
- KEYCODE_BOOKMARK
|
||||||
* KEYCODE_BREAK
|
- KEYCODE_BREAK
|
||||||
* KEYCODE_BRIGHTNESS_DOWN
|
- KEYCODE_BRIGHTNESS_DOWN
|
||||||
* KEYCODE_BRIGHTNESS_UP
|
- KEYCODE_BRIGHTNESS_UP
|
||||||
* KEYCODE_BUTTON_1
|
- KEYCODE_BUTTON_1
|
||||||
* KEYCODE_BUTTON_10
|
- KEYCODE_BUTTON_10
|
||||||
* KEYCODE_BUTTON_11
|
- KEYCODE_BUTTON_11
|
||||||
* KEYCODE_BUTTON_12
|
- KEYCODE_BUTTON_12
|
||||||
* KEYCODE_BUTTON_13
|
- KEYCODE_BUTTON_13
|
||||||
* KEYCODE_BUTTON_14
|
- KEYCODE_BUTTON_14
|
||||||
* KEYCODE_BUTTON_15
|
- KEYCODE_BUTTON_15
|
||||||
* KEYCODE_BUTTON_16
|
- KEYCODE_BUTTON_16
|
||||||
* KEYCODE_BUTTON_2
|
- KEYCODE_BUTTON_2
|
||||||
* KEYCODE_BUTTON_3
|
- KEYCODE_BUTTON_3
|
||||||
* KEYCODE_BUTTON_4
|
- KEYCODE_BUTTON_4
|
||||||
* KEYCODE_BUTTON_5
|
- KEYCODE_BUTTON_5
|
||||||
* KEYCODE_BUTTON_6
|
- KEYCODE_BUTTON_6
|
||||||
* KEYCODE_BUTTON_7
|
- KEYCODE_BUTTON_7
|
||||||
* KEYCODE_BUTTON_8
|
- KEYCODE_BUTTON_8
|
||||||
* KEYCODE_BUTTON_9
|
- KEYCODE_BUTTON_9
|
||||||
* KEYCODE_BUTTON_A
|
- KEYCODE_BUTTON_A
|
||||||
* KEYCODE_BUTTON_B
|
- KEYCODE_BUTTON_B
|
||||||
* KEYCODE_BUTTON_C
|
- KEYCODE_BUTTON_C
|
||||||
* KEYCODE_BUTTON_L1
|
- KEYCODE_BUTTON_L1
|
||||||
* KEYCODE_BUTTON_L2
|
- KEYCODE_BUTTON_L2
|
||||||
* KEYCODE_BUTTON_MODE
|
- KEYCODE_BUTTON_MODE
|
||||||
* KEYCODE_BUTTON_R1
|
- KEYCODE_BUTTON_R1
|
||||||
* KEYCODE_BUTTON_R2
|
- KEYCODE_BUTTON_R2
|
||||||
* KEYCODE_BUTTON_SELECT
|
- KEYCODE_BUTTON_SELECT
|
||||||
* KEYCODE_BUTTON_START
|
- KEYCODE_BUTTON_START
|
||||||
* KEYCODE_BUTTON_THUMBL
|
- KEYCODE_BUTTON_THUMBL
|
||||||
* KEYCODE_BUTTON_THUMBR
|
- KEYCODE_BUTTON_THUMBR
|
||||||
* KEYCODE_BUTTON_X
|
- KEYCODE_BUTTON_X
|
||||||
* KEYCODE_BUTTON_Y
|
- KEYCODE_BUTTON_Y
|
||||||
* KEYCODE_BUTTON_Z
|
- KEYCODE_BUTTON_Z
|
||||||
* KEYCODE_C
|
- KEYCODE_C
|
||||||
* KEYCODE_CALCULATOR
|
- KEYCODE_CALCULATOR
|
||||||
* KEYCODE_CALENDAR
|
- KEYCODE_CALENDAR
|
||||||
* KEYCODE_CALL
|
- KEYCODE_CALL
|
||||||
* KEYCODE_CAMERA
|
- KEYCODE_CAMERA
|
||||||
* KEYCODE_CAPS_LOCK
|
- KEYCODE_CAPS_LOCK
|
||||||
* KEYCODE_CAPTIONS
|
- KEYCODE_CAPTIONS
|
||||||
* KEYCODE_CHANNEL_DOWN
|
- KEYCODE_CHANNEL_DOWN
|
||||||
* KEYCODE_CHANNEL_UP
|
- KEYCODE_CHANNEL_UP
|
||||||
* KEYCODE_CLEAR
|
- KEYCODE_CLEAR
|
||||||
* KEYCODE_COMMA
|
- KEYCODE_COMMA
|
||||||
* KEYCODE_CONTACTS
|
- KEYCODE_CONTACTS
|
||||||
* KEYCODE_COPY
|
- KEYCODE_COPY
|
||||||
* KEYCODE_CTRL_LEFT
|
- KEYCODE_CTRL_LEFT
|
||||||
* KEYCODE_CTRL_RIGHT
|
- KEYCODE_CTRL_RIGHT
|
||||||
* KEYCODE_CUT
|
- KEYCODE_CUT
|
||||||
* KEYCODE_D
|
- KEYCODE_D
|
||||||
* KEYCODE_DEL
|
- KEYCODE_DEL
|
||||||
* KEYCODE_DPAD_CENTER
|
- KEYCODE_DPAD_CENTER
|
||||||
* KEYCODE_DPAD_DOWN
|
- KEYCODE_DPAD_DOWN
|
||||||
* KEYCODE_DPAD_DOWN_LEFT
|
- KEYCODE_DPAD_DOWN_LEFT
|
||||||
* KEYCODE_DPAD_DOWN_RIGHT
|
- KEYCODE_DPAD_DOWN_RIGHT
|
||||||
* KEYCODE_DPAD_LEFT
|
- KEYCODE_DPAD_LEFT
|
||||||
* KEYCODE_DPAD_RIGHT
|
- KEYCODE_DPAD_RIGHT
|
||||||
* KEYCODE_DPAD_UP
|
- KEYCODE_DPAD_UP
|
||||||
* KEYCODE_DPAD_UP_LEFT
|
- KEYCODE_DPAD_UP_LEFT
|
||||||
* KEYCODE_DPAD_UP_RIGHT
|
- KEYCODE_DPAD_UP_RIGHT
|
||||||
* KEYCODE_DVR
|
- KEYCODE_DVR
|
||||||
* KEYCODE_E
|
- KEYCODE_E
|
||||||
* KEYCODE_EISU
|
- KEYCODE_EISU
|
||||||
* KEYCODE_ENDCALL
|
- KEYCODE_ENDCALL
|
||||||
* KEYCODE_ENTER
|
- KEYCODE_ENTER
|
||||||
* KEYCODE_ENVELOPE
|
- KEYCODE_ENVELOPE
|
||||||
* KEYCODE_EQUALS
|
- KEYCODE_EQUALS
|
||||||
* KEYCODE_ESCAPE
|
- KEYCODE_ESCAPE
|
||||||
* KEYCODE_EXPLORER
|
- KEYCODE_EXPLORER
|
||||||
* KEYCODE_F
|
- KEYCODE_F
|
||||||
* KEYCODE_F1
|
- KEYCODE_F1
|
||||||
* KEYCODE_F10
|
- KEYCODE_F10
|
||||||
* KEYCODE_F11
|
- KEYCODE_F11
|
||||||
* KEYCODE_F12
|
- KEYCODE_F12
|
||||||
* KEYCODE_F2
|
- KEYCODE_F2
|
||||||
* KEYCODE_F3
|
- KEYCODE_F3
|
||||||
* KEYCODE_F4
|
- KEYCODE_F4
|
||||||
* KEYCODE_F5
|
- KEYCODE_F5
|
||||||
* KEYCODE_F6
|
- KEYCODE_F6
|
||||||
* KEYCODE_F7
|
- KEYCODE_F7
|
||||||
* KEYCODE_F8
|
- KEYCODE_F8
|
||||||
* KEYCODE_F9
|
- KEYCODE_F9
|
||||||
* KEYCODE_FOCUS
|
- KEYCODE_FOCUS
|
||||||
* KEYCODE_FORWARD
|
- KEYCODE_FORWARD
|
||||||
* KEYCODE_FORWARD_DEL
|
- KEYCODE_FORWARD_DEL
|
||||||
* KEYCODE_FUNCTION
|
- KEYCODE_FUNCTION
|
||||||
* KEYCODE_G
|
- KEYCODE_G
|
||||||
* KEYCODE_GRAVE
|
- KEYCODE_GRAVE
|
||||||
* KEYCODE_GUIDE
|
- KEYCODE_GUIDE
|
||||||
* KEYCODE_H
|
- KEYCODE_H
|
||||||
* KEYCODE_HEADSETHOOK
|
- KEYCODE_HEADSETHOOK
|
||||||
* KEYCODE_HELP
|
- KEYCODE_HELP
|
||||||
* KEYCODE_HENKAN
|
- KEYCODE_HENKAN
|
||||||
* KEYCODE_HOME
|
- KEYCODE_HOME
|
||||||
* KEYCODE_I
|
- KEYCODE_I
|
||||||
* KEYCODE_INFO
|
- KEYCODE_INFO
|
||||||
* KEYCODE_INSERT
|
- KEYCODE_INSERT
|
||||||
* KEYCODE_J
|
- KEYCODE_J
|
||||||
* KEYCODE_K
|
- KEYCODE_K
|
||||||
* KEYCODE_KANA
|
- KEYCODE_KANA
|
||||||
* KEYCODE_KATAKANA_HIRAGANA
|
- KEYCODE_KATAKANA_HIRAGANA
|
||||||
* KEYCODE_L
|
- KEYCODE_L
|
||||||
* KEYCODE_LANGUAGE_SWITCH
|
- KEYCODE_LANGUAGE_SWITCH
|
||||||
* KEYCODE_LAST_CHANNEL
|
- KEYCODE_LAST_CHANNEL
|
||||||
* KEYCODE_LEFT_BRACKET
|
- KEYCODE_LEFT_BRACKET
|
||||||
* KEYCODE_M
|
- KEYCODE_M
|
||||||
* KEYCODE_MANNER_MODE
|
- KEYCODE_MANNER_MODE
|
||||||
* KEYCODE_MEDIA_AUDIO_TRACK
|
- KEYCODE_MEDIA_AUDIO_TRACK
|
||||||
* KEYCODE_MEDIA_CLOSE
|
- KEYCODE_MEDIA_CLOSE
|
||||||
* KEYCODE_MEDIA_EJECT
|
- KEYCODE_MEDIA_EJECT
|
||||||
* KEYCODE_MEDIA_FAST_FORWARD
|
- KEYCODE_MEDIA_FAST_FORWARD
|
||||||
* KEYCODE_MEDIA_NEXT
|
- KEYCODE_MEDIA_NEXT
|
||||||
* KEYCODE_MEDIA_PAUSE
|
- KEYCODE_MEDIA_PAUSE
|
||||||
* KEYCODE_MEDIA_PLAY
|
- KEYCODE_MEDIA_PLAY
|
||||||
* KEYCODE_MEDIA_PLAY_PAUSE
|
- KEYCODE_MEDIA_PLAY_PAUSE
|
||||||
* KEYCODE_MEDIA_PREVIOUS
|
- KEYCODE_MEDIA_PREVIOUS
|
||||||
* KEYCODE_MEDIA_RECORD
|
- KEYCODE_MEDIA_RECORD
|
||||||
* KEYCODE_MEDIA_REWIND
|
- KEYCODE_MEDIA_REWIND
|
||||||
* KEYCODE_MEDIA_SKIP_BACKWARD
|
- KEYCODE_MEDIA_SKIP_BACKWARD
|
||||||
* KEYCODE_MEDIA_SKIP_FORWARD
|
- KEYCODE_MEDIA_SKIP_FORWARD
|
||||||
* KEYCODE_MEDIA_STEP_BACKWARD
|
- KEYCODE_MEDIA_STEP_BACKWARD
|
||||||
* KEYCODE_MEDIA_STEP_FORWARD
|
- KEYCODE_MEDIA_STEP_FORWARD
|
||||||
* KEYCODE_MEDIA_STOP
|
- KEYCODE_MEDIA_STOP
|
||||||
* KEYCODE_MEDIA_TOP_MENU
|
- KEYCODE_MEDIA_TOP_MENU
|
||||||
* KEYCODE_MENU
|
- KEYCODE_MENU
|
||||||
* KEYCODE_META_LEFT
|
- KEYCODE_META_LEFT
|
||||||
* KEYCODE_META_RIGHT
|
- KEYCODE_META_RIGHT
|
||||||
* KEYCODE_MINUS
|
- KEYCODE_MINUS
|
||||||
* KEYCODE_MOVE_END
|
- KEYCODE_MOVE_END
|
||||||
* KEYCODE_MOVE_HOME
|
- KEYCODE_MOVE_HOME
|
||||||
* KEYCODE_MUHENKAN
|
- KEYCODE_MUHENKAN
|
||||||
* KEYCODE_MUSIC
|
- KEYCODE_MUSIC
|
||||||
* KEYCODE_MUTE
|
- KEYCODE_MUTE
|
||||||
* KEYCODE_N
|
- KEYCODE_N
|
||||||
* KEYCODE_NAVIGATE_IN
|
- KEYCODE_NAVIGATE_IN
|
||||||
* KEYCODE_NAVIGATE_NEXT
|
- KEYCODE_NAVIGATE_NEXT
|
||||||
* KEYCODE_NAVIGATE_OUT
|
- KEYCODE_NAVIGATE_OUT
|
||||||
* KEYCODE_NAVIGATE_PREVIOUS
|
- KEYCODE_NAVIGATE_PREVIOUS
|
||||||
* KEYCODE_NOTIFICATION
|
- KEYCODE_NOTIFICATION
|
||||||
* KEYCODE_NUM
|
- KEYCODE_NUM
|
||||||
* KEYCODE_NUMPAD_0
|
- KEYCODE_NUMPAD_0
|
||||||
* KEYCODE_NUMPAD_1
|
- KEYCODE_NUMPAD_1
|
||||||
* KEYCODE_NUMPAD_2
|
- KEYCODE_NUMPAD_2
|
||||||
* KEYCODE_NUMPAD_3
|
- KEYCODE_NUMPAD_3
|
||||||
* KEYCODE_NUMPAD_4
|
- KEYCODE_NUMPAD_4
|
||||||
* KEYCODE_NUMPAD_5
|
- KEYCODE_NUMPAD_5
|
||||||
* KEYCODE_NUMPAD_6
|
- KEYCODE_NUMPAD_6
|
||||||
* KEYCODE_NUMPAD_7
|
- KEYCODE_NUMPAD_7
|
||||||
* KEYCODE_NUMPAD_8
|
- KEYCODE_NUMPAD_8
|
||||||
* KEYCODE_NUMPAD_9
|
- KEYCODE_NUMPAD_9
|
||||||
* KEYCODE_NUMPAD_ADD
|
- KEYCODE_NUMPAD_ADD
|
||||||
* KEYCODE_NUMPAD_COMMA
|
- KEYCODE_NUMPAD_COMMA
|
||||||
* KEYCODE_NUMPAD_DIVIDE
|
- KEYCODE_NUMPAD_DIVIDE
|
||||||
* KEYCODE_NUMPAD_DOT
|
- KEYCODE_NUMPAD_DOT
|
||||||
* KEYCODE_NUMPAD_ENTER
|
- KEYCODE_NUMPAD_ENTER
|
||||||
* KEYCODE_NUMPAD_EQUALS
|
- KEYCODE_NUMPAD_EQUALS
|
||||||
* KEYCODE_NUMPAD_LEFT_PAREN
|
- KEYCODE_NUMPAD_LEFT_PAREN
|
||||||
* KEYCODE_NUMPAD_MULTIPLY
|
- KEYCODE_NUMPAD_MULTIPLY
|
||||||
* KEYCODE_NUMPAD_RIGHT_PAREN
|
- KEYCODE_NUMPAD_RIGHT_PAREN
|
||||||
* KEYCODE_NUMPAD_SUBTRACT
|
- KEYCODE_NUMPAD_SUBTRACT
|
||||||
* KEYCODE_NUM_LOCK
|
- KEYCODE_NUM_LOCK
|
||||||
* KEYCODE_O
|
- KEYCODE_O
|
||||||
* KEYCODE_P
|
- KEYCODE_P
|
||||||
* KEYCODE_PAGE_DOWN
|
- KEYCODE_PAGE_DOWN
|
||||||
* KEYCODE_PAGE_UP
|
- KEYCODE_PAGE_UP
|
||||||
* KEYCODE_PAIRING
|
- KEYCODE_PAIRING
|
||||||
* KEYCODE_PASTE
|
- KEYCODE_PASTE
|
||||||
* KEYCODE_PERIOD
|
- KEYCODE_PERIOD
|
||||||
* KEYCODE_PICTSYMBOLS
|
- KEYCODE_PICTSYMBOLS
|
||||||
* KEYCODE_PLUS
|
- KEYCODE_PLUS
|
||||||
* KEYCODE_POUND
|
- KEYCODE_POUND
|
||||||
* KEYCODE_POWER
|
- KEYCODE_POWER
|
||||||
* KEYCODE_PROFILE_SWITCH
|
- KEYCODE_PROFILE_SWITCH
|
||||||
* KEYCODE_PROG_BLUE
|
- KEYCODE_PROG_BLUE
|
||||||
* KEYCODE_PROG_GREEN
|
- KEYCODE_PROG_GREEN
|
||||||
* KEYCODE_PROG_RED
|
- KEYCODE_PROG_RED
|
||||||
* KEYCODE_PROG_YELLOW
|
- KEYCODE_PROG_YELLOW
|
||||||
* KEYCODE_Q
|
- KEYCODE_Q
|
||||||
* KEYCODE_R
|
- KEYCODE_R
|
||||||
* KEYCODE_REFRESH
|
- KEYCODE_REFRESH
|
||||||
* KEYCODE_RIGHT_BRACKET
|
- KEYCODE_RIGHT_BRACKET
|
||||||
* KEYCODE_RO
|
- KEYCODE_RO
|
||||||
* KEYCODE_S
|
- KEYCODE_S
|
||||||
* KEYCODE_SCROLL_LOCK
|
- KEYCODE_SCROLL_LOCK
|
||||||
* KEYCODE_SEARCH
|
- KEYCODE_SEARCH
|
||||||
* KEYCODE_SEMICOLON
|
- KEYCODE_SEMICOLON
|
||||||
* KEYCODE_SETTINGS
|
- KEYCODE_SETTINGS
|
||||||
* KEYCODE_SHIFT_LEFT
|
- KEYCODE_SHIFT_LEFT
|
||||||
* KEYCODE_SHIFT_RIGHT
|
- KEYCODE_SHIFT_RIGHT
|
||||||
* KEYCODE_SLASH
|
- KEYCODE_SLASH
|
||||||
* KEYCODE_SLEEP
|
- KEYCODE_SLEEP
|
||||||
* KEYCODE_SOFT_LEFT
|
- KEYCODE_SOFT_LEFT
|
||||||
* KEYCODE_SOFT_RIGHT
|
- KEYCODE_SOFT_RIGHT
|
||||||
* KEYCODE_SOFT_SLEEP
|
- KEYCODE_SOFT_SLEEP
|
||||||
* KEYCODE_SPACE
|
- KEYCODE_SPACE
|
||||||
* KEYCODE_STAR
|
- KEYCODE_STAR
|
||||||
* KEYCODE_STB_INPUT
|
- KEYCODE_STB_INPUT
|
||||||
* KEYCODE_STB_POWER
|
- KEYCODE_STB_POWER
|
||||||
* KEYCODE_STEM_1
|
- KEYCODE_STEM_1
|
||||||
* KEYCODE_STEM_2
|
- KEYCODE_STEM_2
|
||||||
* KEYCODE_STEM_3
|
- KEYCODE_STEM_3
|
||||||
* KEYCODE_STEM_PRIMARY
|
- KEYCODE_STEM_PRIMARY
|
||||||
* KEYCODE_SWITCH_CHARSET
|
- KEYCODE_SWITCH_CHARSET
|
||||||
* KEYCODE_SYM
|
- KEYCODE_SYM
|
||||||
* KEYCODE_SYSRQ
|
- KEYCODE_SYSRQ
|
||||||
* KEYCODE_SYSTEM_NAVIGATION_DOWN
|
- KEYCODE_SYSTEM_NAVIGATION_DOWN
|
||||||
* KEYCODE_SYSTEM_NAVIGATION_LEFT
|
- KEYCODE_SYSTEM_NAVIGATION_LEFT
|
||||||
* KEYCODE_SYSTEM_NAVIGATION_RIGHT
|
- KEYCODE_SYSTEM_NAVIGATION_RIGHT
|
||||||
* KEYCODE_SYSTEM_NAVIGATION_UP
|
- KEYCODE_SYSTEM_NAVIGATION_UP
|
||||||
* KEYCODE_T
|
- KEYCODE_T
|
||||||
* KEYCODE_TAB
|
- KEYCODE_TAB
|
||||||
* KEYCODE_THUMBS_DOWN
|
- KEYCODE_THUMBS_DOWN
|
||||||
* KEYCODE_THUMBS_UP
|
- KEYCODE_THUMBS_UP
|
||||||
* KEYCODE_TV
|
- KEYCODE_TV
|
||||||
* KEYCODE_TV_ANTENNA_CABLE
|
- KEYCODE_TV_ANTENNA_CABLE
|
||||||
* KEYCODE_TV_AUDIO_DESCRIPTION
|
- KEYCODE_TV_AUDIO_DESCRIPTION
|
||||||
* KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN
|
- KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN
|
||||||
* KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP
|
- KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP
|
||||||
* KEYCODE_TV_CONTENTS_MENU
|
- KEYCODE_TV_CONTENTS_MENU
|
||||||
* KEYCODE_TV_DATA_SERVICE
|
- KEYCODE_TV_DATA_SERVICE
|
||||||
* KEYCODE_TV_INPUT
|
- KEYCODE_TV_INPUT
|
||||||
* KEYCODE_TV_INPUT_COMPONENT_1
|
- KEYCODE_TV_INPUT_COMPONENT_1
|
||||||
* KEYCODE_TV_INPUT_COMPONENT_2
|
- KEYCODE_TV_INPUT_COMPONENT_2
|
||||||
* KEYCODE_TV_INPUT_COMPOSITE_1
|
- KEYCODE_TV_INPUT_COMPOSITE_1
|
||||||
* KEYCODE_TV_INPUT_COMPOSITE_2
|
- KEYCODE_TV_INPUT_COMPOSITE_2
|
||||||
* KEYCODE_TV_INPUT_HDMI_1
|
- KEYCODE_TV_INPUT_HDMI_1
|
||||||
* KEYCODE_TV_INPUT_HDMI_2
|
- KEYCODE_TV_INPUT_HDMI_2
|
||||||
* KEYCODE_TV_INPUT_HDMI_3
|
- KEYCODE_TV_INPUT_HDMI_3
|
||||||
* KEYCODE_TV_INPUT_HDMI_4
|
- KEYCODE_TV_INPUT_HDMI_4
|
||||||
* KEYCODE_TV_INPUT_VGA_1
|
- KEYCODE_TV_INPUT_VGA_1
|
||||||
* KEYCODE_TV_MEDIA_CONTEXT_MENU
|
- KEYCODE_TV_MEDIA_CONTEXT_MENU
|
||||||
* KEYCODE_TV_NETWORK
|
- KEYCODE_TV_NETWORK
|
||||||
* KEYCODE_TV_NUMBER_ENTRY
|
- KEYCODE_TV_NUMBER_ENTRY
|
||||||
* KEYCODE_TV_POWER
|
- KEYCODE_TV_POWER
|
||||||
* KEYCODE_TV_RADIO_SERVICE
|
- KEYCODE_TV_RADIO_SERVICE
|
||||||
* KEYCODE_TV_SATELLITE
|
- KEYCODE_TV_SATELLITE
|
||||||
* KEYCODE_TV_SATELLITE_BS
|
- KEYCODE_TV_SATELLITE_BS
|
||||||
* KEYCODE_TV_SATELLITE_CS
|
- KEYCODE_TV_SATELLITE_CS
|
||||||
* KEYCODE_TV_SATELLITE_SERVICE
|
- KEYCODE_TV_SATELLITE_SERVICE
|
||||||
* KEYCODE_TV_TELETEXT
|
- KEYCODE_TV_TELETEXT
|
||||||
* KEYCODE_TV_TERRESTRIAL_ANALOG
|
- KEYCODE_TV_TERRESTRIAL_ANALOG
|
||||||
* KEYCODE_TV_TERRESTRIAL_DIGITAL
|
- KEYCODE_TV_TERRESTRIAL_DIGITAL
|
||||||
* KEYCODE_TV_TIMER_PROGRAMMING
|
- KEYCODE_TV_TIMER_PROGRAMMING
|
||||||
* KEYCODE_TV_ZOOM_MODE
|
- KEYCODE_TV_ZOOM_MODE
|
||||||
* KEYCODE_U
|
- KEYCODE_U
|
||||||
* KEYCODE_UNKNOWN
|
- KEYCODE_UNKNOWN
|
||||||
* KEYCODE_V
|
- KEYCODE_V
|
||||||
* KEYCODE_VOICE_ASSIST
|
- KEYCODE_VOICE_ASSIST
|
||||||
* KEYCODE_VOLUME_DOWN
|
- KEYCODE_VOLUME_DOWN
|
||||||
* KEYCODE_VOLUME_MUTE
|
- KEYCODE_VOLUME_MUTE
|
||||||
* KEYCODE_VOLUME_UP
|
- KEYCODE_VOLUME_UP
|
||||||
* KEYCODE_W
|
- KEYCODE_W
|
||||||
* KEYCODE_WAKEUP
|
- KEYCODE_WAKEUP
|
||||||
* KEYCODE_WINDOW
|
- KEYCODE_WINDOW
|
||||||
* KEYCODE_X
|
- KEYCODE_X
|
||||||
* KEYCODE_Y
|
- KEYCODE_Y
|
||||||
* KEYCODE_YEN
|
- KEYCODE_YEN
|
||||||
* KEYCODE_Z
|
- KEYCODE_Z
|
||||||
* KEYCODE_ZENKAKU_HANKAKU
|
- KEYCODE_ZENKAKU_HANKAKU
|
||||||
* KEYCODE_ZOOM_IN
|
- KEYCODE_ZOOM_IN
|
||||||
* KEYCODE_ZOOM_OUT
|
- KEYCODE_ZOOM_OUT
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Sample Thing
|
### Sample Thing
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing androiddebugbridge:android:xxxxxxxxxxxx "xxxxxxxxxxxx" [ ip="192.168.1.10", port=5555, refreshTime=30 ]
|
Thing androiddebugbridge:android:xxxxxxxxxxxx "xxxxxxxxxxxx" [ ip="192.168.1.10", port=5555, refreshTime=30 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Sample Items
|
### Sample Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Group androidDevice "Android TV"
|
Group androidDevice "Android TV"
|
||||||
String device_SendKey "Send Key" (androidDevice) { channel="androiddebugbridge:android:xxxxxxxxxxxx:key-event" }
|
String device_SendKey "Send Key" (androidDevice) { channel="androiddebugbridge:android:xxxxxxxxxxxx:key-event" }
|
||||||
String device_CurrentApp "Current App" (androidDevice) { channel="androiddebugbridge:android:xxxxxxxxxxxx:current-package" }
|
String device_CurrentApp "Current App" (androidDevice) { channel="androiddebugbridge:android:xxxxxxxxxxxx:current-package" }
|
||||||
|
@ -5,7 +5,6 @@ Monitor and control Anel NET-PwrCtrl devices.
|
|||||||
NET-PwrCtrl devices are power sockets / relays that can be configured via browser but they can also be controlled over the network, e.g. with an Android or iPhone app - and also with openHAB via this binding.
|
NET-PwrCtrl devices are power sockets / relays that can be configured via browser but they can also be controlled over the network, e.g. with an Android or iPhone app - and also with openHAB via this binding.
|
||||||
Some NET-PwrCtrl devices also have 8 I/O ports which can either be used to directly switch the sockets / relays, or they can be used as general input / output switches in openHAB.
|
Some NET-PwrCtrl devices also have 8 I/O ports which can either be used to directly switch the sockets / relays, or they can be used as general input / output switches in openHAB.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
There are three kinds of devices ([overview on manufacturer's homepage](https://en.anel.eu/?src=/produkte/produkte.htm)):
|
There are three kinds of devices ([overview on manufacturer's homepage](https://en.anel.eu/?src=/produkte/produkte.htm)):
|
||||||
@ -16,29 +15,27 @@ There are three kinds of devices ([overview on manufacturer's homepage](https://
|
|||||||
|
|
||||||
Thing type IDs:
|
Thing type IDs:
|
||||||
|
|
||||||
* *home*: The smallest device, the _HOME_, is the only one with only three power sockets and only available in Germany.
|
- _home_: The smallest device, the _HOME_, is the only one with only three power sockets and only available in Germany.
|
||||||
* *simple-firmware*: The _PRO_ and _REDUNDANT_ have eight power sockets and a similar (simplified) firmware as the _HOME_.
|
- _simple-firmware_: The _PRO_ and _REDUNDANT_ have eight power sockets and a similar (simplified) firmware as the _HOME_.
|
||||||
* *advanced-firmware*: All others (_ADV_, _IO_, and the different _HUT_ variants) have eight power sockets / relays, eight IO ports, and an advanced firmware.
|
- _advanced-firmware_: All others (_ADV_, _IO_, and the different _HUT_ variants) have eight power sockets / relays, eight IO ports, and an advanced firmware.
|
||||||
|
|
||||||
An [additional sensor](https://en.anel.eu/?src=/produkte/sensor_1/sensor_1.htm) may be used for monitoring temperature, humidity, and brightness.
|
An [additional sensor](https://en.anel.eu/?src=/produkte/sensor_1/sensor_1.htm) may be used for monitoring temperature, humidity, and brightness.
|
||||||
The sensor can be attached to a _HUT_ device via an Ethernet cable (max length is 50m).
|
The sensor can be attached to a _HUT_ device via an Ethernet cable (max length is 50m).
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Devices can be discovered automatically if their UDP ports are configured as follows:
|
Devices can be discovered automatically if their UDP ports are configured as follows:
|
||||||
|
|
||||||
* 75 / 77 (default)
|
- 75 / 77 (default)
|
||||||
* 750 / 770
|
- 750 / 770
|
||||||
* 7500 / 7700
|
- 7500 / 7700
|
||||||
* 7750 / 7770
|
- 7750 / 7770
|
||||||
|
|
||||||
If a device is found for a specific port (excluding the default port), the subsequent port is also scanned, e.g. 7500/7700 → 7501/7701 → 7502/7702 → etc.
|
If a device is found for a specific port (excluding the default port), the subsequent port is also scanned, e.g. 7500/7700 → 7501/7701 → 7502/7702 → etc.
|
||||||
|
|
||||||
Depending on the network switch and router devices, discovery may or may not work on wireless networks.
|
Depending on the network switch and router devices, discovery may or may not work on wireless networks.
|
||||||
It should work reliably though on local wired networks.
|
It should work reliably though on local wired networks.
|
||||||
|
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
Each Thing requires the following configuration parameters.
|
Each Thing requires the following configuration parameters.
|
||||||
@ -56,14 +53,13 @@ Ports above 1024 are recommended because they are outside the range of system po
|
|||||||
|
|
||||||
Possible entries in your thing file could be (thing types _home_, _simple-firmware_, and _advanced-firmware_ are explained above in _Supported Things_):
|
Possible entries in your thing file could be (thing types _home_, _simple-firmware_, and _advanced-firmware_ are explained above in _Supported Things_):
|
||||||
|
|
||||||
```
|
```java
|
||||||
anel:home:mydevice1 [hostname="192.168.0.101", udpSendPort=7500, udpReceivePort=7700, user="user7", password="anel"]
|
anel:home:mydevice1 [hostname="192.168.0.101", udpSendPort=7500, udpReceivePort=7700, user="user7", password="anel"]
|
||||||
anel:simple-firmware:mydevice2 [hostname="192.168.0.102", udpSendPort=7501, udpReceivePort=7701, user="user7", password="anel"]
|
anel:simple-firmware:mydevice2 [hostname="192.168.0.102", udpSendPort=7501, udpReceivePort=7701, user="user7", password="anel"]
|
||||||
anel:advanced-firmware:mydevice3 [hostname="192.168.0.103", udpSendPort=7502, udpReceivePort=7702, user="user7", password="anel"]
|
anel:advanced-firmware:mydevice3 [hostname="192.168.0.103", udpSendPort=7502, udpReceivePort=7702, user="user7", password="anel"]
|
||||||
anel:advanced-firmware:mydevice4 [hostname="192.168.0.104", udpSendPort=7503, udpReceivePort=7703, user="user7", password="anel"]
|
anel:advanced-firmware:mydevice4 [hostname="192.168.0.104", udpSendPort=7503, udpReceivePort=7703, user="user7", password="anel"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
Depending on the thing type, the following channels are available.
|
Depending on the thing type, the following channels are available.
|
||||||
@ -127,18 +123,17 @@ Depending on the thing type, the following channels are available.
|
|||||||
\* Relay / socket state is read-only if it is locked; otherwise it is changeable.<br/>
|
\* Relay / socket state is read-only if it is locked; otherwise it is changeable.<br/>
|
||||||
\** IO port state is read-only if its mode is _input_, it is changeable if its mode is _output_.
|
\** IO port state is read-only if its mode is _input_, it is changeable if its mode is _output_.
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
`.things` file:
|
`.things` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing anel:advanced-firmware:anel1 "Anel1" [hostname="192.168.0.100", udpSendPort=7500, udpReceivePort=7700, user="user7", password="anel"]
|
Thing anel:advanced-firmware:anel1 "Anel1" [hostname="192.168.0.100", udpSendPort=7500, udpReceivePort=7700, user="user7", password="anel"]
|
||||||
```
|
```
|
||||||
|
|
||||||
`.items` file:
|
`.items` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// device properties
|
// device properties
|
||||||
String anel1name "Anel1 Name" {channel="anel:advanced-firmware:anel1:prop#name"}
|
String anel1name "Anel1 Name" {channel="anel:advanced-firmware:anel1:prop#name"}
|
||||||
Number:Temperature anel1temperature "Anel1 Temperature" {channel="anel:advanced-firmware:anel1:prop#temperature"}
|
Number:Temperature anel1temperature "Anel1 Temperature" {channel="anel:advanced-firmware:anel1:prop#temperature"}
|
||||||
@ -175,7 +170,7 @@ Switch anel1io8state "Reed Contact Door" {channel="anel:advanced-firmware:ane
|
|||||||
|
|
||||||
`.sitemap` file:
|
`.sitemap` file:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap anel label="Anel NET-PwrCtrl" {
|
sitemap anel label="Anel NET-PwrCtrl" {
|
||||||
Frame label="Device and Sensor" {
|
Frame label="Device and Sensor" {
|
||||||
Text item=anel1name label="Anel1 Name"
|
Text item=anel1name label="Anel1 Name"
|
||||||
@ -214,7 +209,7 @@ The locked state / IO mode is also rarely relevant in practice, because it typic
|
|||||||
|
|
||||||
`.rules` file:
|
`.rules` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "doorbell only at daytime"
|
rule "doorbell only at daytime"
|
||||||
when Item anel1io6state changed then
|
when Item anel1io6state changed then
|
||||||
if (now.getHoursOfDay >= 6 && now.getHoursOfDay <= 22) {
|
if (now.getHoursOfDay >= 6 && now.getHoursOfDay <= 22) {
|
||||||
@ -224,8 +219,6 @@ when Item anel1io6state changed then
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Reference Documentation
|
## Reference Documentation
|
||||||
|
|
||||||
The UDP protocol of Anel devices is explained [here](https://forum.anel.eu/viewtopic.php?f=16&t=207).
|
The UDP protocol of Anel devices is explained [here](https://forum.anel.eu/viewtopic.php?f=16&t=207).
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
The Astro binding is used for calculating
|
The Astro binding is used for calculating
|
||||||
|
|
||||||
* many DateTime and positional values for sun and moon.
|
- many DateTime and positional values for sun and moon.
|
||||||
* Radiation levels (direct, diffuse and total) of the sun during the day
|
- Radiation levels (direct, diffuse and total) of the sun during the day
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
@ -30,88 +30,88 @@ This is done by setting `useMeteorologicalSeason` to true in the advanced settin
|
|||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
* **thing** `sun`
|
- **thing** `sun`
|
||||||
* **group** `rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight`
|
- **group** `rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `start, end` (DateTime)
|
- `start, end` (DateTime)
|
||||||
* `duration` (Number:Time)
|
- `duration` (Number:Time)
|
||||||
* **group** `position`
|
- **group** `position`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `azimuth, elevation` (Number:Angle)
|
- `azimuth, elevation` (Number:Angle)
|
||||||
* `shadeLength` (Number)
|
- `shadeLength` (Number)
|
||||||
* **group** `radiation`
|
- **group** `radiation`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `direct, diffuse, total` (Number:Intensity)
|
- `direct, diffuse, total` (Number:Intensity)
|
||||||
* **group** `zodiac`
|
- **group** `zodiac`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `start, end` (DateTime)
|
- `start, end` (DateTime)
|
||||||
* `sign` (String), values: `ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES`
|
- `sign` (String), values: `ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES`
|
||||||
* **group** `season`
|
- **group** `season`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `spring, summer, autumn, winter` (DateTime)
|
- `spring, summer, autumn, winter` (DateTime)
|
||||||
* `name`,`nextName` (String), values `SPRING, SUMMER, AUTUMN, WINTER`
|
- `name`,`nextName` (String), values `SPRING, SUMMER, AUTUMN, WINTER`
|
||||||
* `timeLeft` (Number:Time)
|
- `timeLeft` (Number:Time)
|
||||||
* **group** `eclipse`
|
- **group** `eclipse`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `total, partial, ring` (DateTime)
|
- `total, partial, ring` (DateTime)
|
||||||
* `totalElevation, partialElevation, ringElevation` (Number:Angle)
|
- `totalElevation, partialElevation, ringElevation` (Number:Angle)
|
||||||
* **group** `phase`
|
- **group** `phase`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `name` (String), values: `SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT`
|
- `name` (String), values: `SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT`
|
||||||
* **thing** `moon`
|
- **thing** `moon`
|
||||||
* **group** `rise, set`
|
- **group** `rise, set`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `start, end` (DateTime)
|
- `start, end` (DateTime)
|
||||||
* **group** `phase`
|
- **group** `phase`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `firstQuarter, thirdQuarter, full, new` (DateTime)
|
- `firstQuarter, thirdQuarter, full, new` (DateTime)
|
||||||
* `age` (Number:Time)
|
- `age` (Number:Time)
|
||||||
* `ageDegree` (Number:Angle)
|
- `ageDegree` (Number:Angle)
|
||||||
* `agePercent, illumination` (Number:Dimensionless)
|
- `agePercent, illumination` (Number:Dimensionless)
|
||||||
* `name` (String), values: `NEW, WAXING_CRESCENT, FIRST_QUARTER, WAXING_GIBBOUS, FULL, WANING_GIBBOUS, THIRD_QUARTER, WANING_CRESCENT`
|
- `name` (String), values: `NEW, WAXING_CRESCENT, FIRST_QUARTER, WAXING_GIBBOUS, FULL, WANING_GIBBOUS, THIRD_QUARTER, WANING_CRESCENT`
|
||||||
* **group** `eclipse`
|
- **group** `eclipse`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `total, partial` (DateTime)
|
- `total, partial` (DateTime)
|
||||||
* `totalElevation, partialElevation` (Number:Angle)
|
- `totalElevation, partialElevation` (Number:Angle)
|
||||||
* **group** `distance`
|
- **group** `distance`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `date` (DateTime)
|
- `date` (DateTime)
|
||||||
* `distance` (Number:Length)
|
- `distance` (Number:Length)
|
||||||
* **group** `perigee`
|
- **group** `perigee`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `date` (DateTime),
|
- `date` (DateTime),
|
||||||
* `distance` (Number:Length)
|
- `distance` (Number:Length)
|
||||||
* **group** `apogee`
|
- **group** `apogee`
|
||||||
* **channel**:
|
- **channel**:
|
||||||
* `date` (DateTime)
|
- `date` (DateTime)
|
||||||
* `distance` (Number:Length)
|
- `distance` (Number:Length)
|
||||||
* **group** `zodiac`
|
- **group** `zodiac`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `sign` (String), values: `ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES`
|
- `sign` (String), values: `ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES`
|
||||||
* **group** `position`
|
- **group** `position`
|
||||||
* **channel**
|
- **channel**
|
||||||
* `azimuth, elevation` (Number:Angle)
|
- `azimuth, elevation` (Number:Angle)
|
||||||
|
|
||||||
### Trigger Channels
|
### Trigger Channels
|
||||||
|
|
||||||
* **thing** `sun`
|
- **thing** `sun`
|
||||||
* **group** `rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight`
|
- **group** `rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight`
|
||||||
* **event** `START, END`
|
- **event** `START, END`
|
||||||
* **group** `eclipse`
|
- **group** `eclipse`
|
||||||
* **event**: `TOTAL, PARTIAL, RING`
|
- **event**: `TOTAL, PARTIAL, RING`
|
||||||
* **thing** `moon`
|
- **thing** `moon`
|
||||||
* **group** `rise`
|
- **group** `rise`
|
||||||
* **event** `START`
|
- **event** `START`
|
||||||
* **group** `set`
|
- **group** `set`
|
||||||
* **event** `END`
|
- **event** `END`
|
||||||
* **group** `phase`
|
- **group** `phase`
|
||||||
* **event**: `FIRST_QUARTER, THIRD_QUARTER, FULL, NEW`
|
- **event**: `FIRST_QUARTER, THIRD_QUARTER, FULL, NEW`
|
||||||
* **group** `eclipse`
|
- **group** `eclipse`
|
||||||
* **event**: `TOTAL, PARTIAL`
|
- **event**: `TOTAL, PARTIAL`
|
||||||
* **group** `perigee`
|
- **group** `perigee`
|
||||||
* **event**: `PERIGEE`
|
- **event**: `PERIGEE`
|
||||||
* **group** `apogee`
|
- **group** `apogee`
|
||||||
* **event**: `APOGEE`
|
- **event**: `APOGEE`
|
||||||
|
|
||||||
### Channel config
|
### Channel config
|
||||||
|
|
||||||
@ -134,14 +134,14 @@ sunset is 22:10 but `latest` is set to 20:00 so the event/datetime value is move
|
|||||||
|
|
||||||
Things:
|
Things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ]
|
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ]
|
||||||
astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
|
astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
or optionally with an event offset
|
or optionally with an event offset
|
||||||
|
|
||||||
```
|
```java
|
||||||
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
||||||
Channels:
|
Channels:
|
||||||
Type rangeEvent : rise#event [
|
Type rangeEvent : rise#event [
|
||||||
@ -153,7 +153,7 @@ astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
|
|||||||
|
|
||||||
or a datetime offset
|
or a datetime offset
|
||||||
|
|
||||||
```
|
```java
|
||||||
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
||||||
Channels:
|
Channels:
|
||||||
Type start : rise#start [
|
Type start : rise#start [
|
||||||
@ -167,7 +167,7 @@ astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
|||||||
|
|
||||||
or an offset and latest
|
or an offset and latest
|
||||||
|
|
||||||
```
|
```java
|
||||||
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
||||||
Channels:
|
Channels:
|
||||||
Type rangeEvent : rise#event [
|
Type rangeEvent : rise#event [
|
||||||
@ -179,7 +179,7 @@ astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
|
|||||||
|
|
||||||
Items:
|
Items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
DateTime Sunrise_Time "Sunrise [%1$tH:%1$tM]" { channel="astro:sun:home:rise#start" }
|
DateTime Sunrise_Time "Sunrise [%1$tH:%1$tM]" { channel="astro:sun:home:rise#start" }
|
||||||
DateTime Sunset_Time "Sunset [%1$tH:%1$tM]" { channel="astro:sun:home:set#start" }
|
DateTime Sunset_Time "Sunset [%1$tH:%1$tM]" { channel="astro:sun:home:set#start" }
|
||||||
Number:Angle Azimuth "Azimuth" { channel="astro:sun:home:position#azimuth" }
|
Number:Angle Azimuth "Azimuth" { channel="astro:sun:home:position#azimuth" }
|
||||||
@ -192,7 +192,7 @@ Number:Intensity Diffuse_Radiation "Diffuse Radiation [%.2f %unit%]" {
|
|||||||
|
|
||||||
Events:
|
Events:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "example trigger rule"
|
rule "example trigger rule"
|
||||||
when
|
when
|
||||||
Channel 'astro:sun:home:rise#event' triggered START
|
Channel 'astro:sun:home:rise#event' triggered START
|
||||||
@ -207,7 +207,7 @@ Multiple actions are supported by this binding. In classic rules these are acces
|
|||||||
|
|
||||||
Getting sunActions variable in scripts
|
Getting sunActions variable in scripts
|
||||||
|
|
||||||
```
|
```java
|
||||||
val sunActions = getActions("astro","astro:sun:local")
|
val sunActions = getActions("astro","astro:sun:local")
|
||||||
if(null === sunActions) {
|
if(null === sunActions) {
|
||||||
logInfo("actions", "sunActions not found, check thing ID")
|
logInfo("actions", "sunActions not found, check thing ID")
|
||||||
@ -222,15 +222,15 @@ Getting sunActions variable in scripts
|
|||||||
Retrieves date and time (ZonedDateTime) of the requested phase name.
|
Retrieves date and time (ZonedDateTime) of the requested phase name.
|
||||||
Thing method only applies to Sun thing type.
|
Thing method only applies to Sun thing type.
|
||||||
|
|
||||||
* `phaseName` (String), values: `SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT`. Mandatory.
|
- `phaseName` (String), values: `SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT`. Mandatory.
|
||||||
|
|
||||||
* `date` (ZonedDateTime), only the date part of this parameter will be considered - defaulted to now() if null.
|
- `date` (ZonedDateTime), only the date part of this parameter will be considered - defaulted to now() if null.
|
||||||
|
|
||||||
* `moment` (String), values: `START, END` - defaulted to `START` if null.
|
- `moment` (String), values: `START, END` - defaulted to `START` if null.
|
||||||
|
|
||||||
Example :
|
Example :
|
||||||
|
|
||||||
```
|
```java
|
||||||
val sunEvent = "SUN_SET"
|
val sunEvent = "SUN_SET"
|
||||||
val today = ZonedDateTime.now;
|
val today = ZonedDateTime.now;
|
||||||
val sunEventTime = sunActions.getEventTime(sunEvent,today,"START")
|
val sunEventTime = sunActions.getEventTime(sunEvent,today,"START")
|
||||||
@ -242,25 +242,23 @@ Example :
|
|||||||
Retrieves the elevation (QuantityType<Angle>) of the sun at the requested instant.
|
Retrieves the elevation (QuantityType<Angle>) of the sun at the requested instant.
|
||||||
Thing method applies to Sun and Moon.
|
Thing method applies to Sun and Moon.
|
||||||
|
|
||||||
* `timeStamp` (ZonedDateTime) - defaulted to now() if null.
|
- `timeStamp` (ZonedDateTime) - defaulted to now() if null.
|
||||||
|
|
||||||
|
|
||||||
### getAzimuth(timeStamp)
|
### getAzimuth(timeStamp)
|
||||||
|
|
||||||
Retrieves the azimuth (QuantityType<Angle>) of the sun at the requested instant.
|
Retrieves the azimuth (QuantityType<Angle>) of the sun at the requested instant.
|
||||||
Thing method applies to Sun and Moon.
|
Thing method applies to Sun and Moon.
|
||||||
|
|
||||||
* `timeStamp` (ZonedDateTime) - defaulted to now() if null.
|
- `timeStamp` (ZonedDateTime) - defaulted to now() if null.
|
||||||
|
|
||||||
Example :
|
Example :
|
||||||
|
|
||||||
```
|
```java
|
||||||
val azimuth = sunActions.getAzimuth(sunEventTime)
|
val azimuth = sunActions.getAzimuth(sunEventTime)
|
||||||
val elevation = sunActions.getElevation(sunEventTime)
|
val elevation = sunActions.getElevation(sunEventTime)
|
||||||
logInfo("AstroActions", "{} will be positioned at elevation {} - azimuth {}",sunEvent, elevation.toString,azimuth.toString)
|
logInfo("AstroActions", "{} will be positioned at elevation {} - azimuth {}",sunEvent, elevation.toString,azimuth.toString)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Tips
|
## Tips
|
||||||
|
|
||||||
Do not worry if for example the "astro dawn" is undefined at your location.
|
Do not worry if for example the "astro dawn" is undefined at your location.
|
||||||
|
@ -211,19 +211,19 @@ As of firmware 1.6.8 (rev 14),
|
|||||||
|
|
||||||
Here is an example with minimal configuration parameters (using default values with no telnet login):
|
Here is an example with minimal configuration parameters (using default values with no telnet login):
|
||||||
|
|
||||||
```
|
```java
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30" ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Here is another example with minimal configuration parameters (using default values with telnet login):
|
Here is another example with minimal configuration parameters (using default values with telnet login):
|
||||||
|
|
||||||
```
|
```java
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345" ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Here is a full configuration example:
|
Here is a full configuration example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345"
|
|||||||
|
|
||||||
Here is an example of items for the AT-UHD-PRO33-88M:
|
Here is an example of items for the AT-UHD-PRO33-88M:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Atlona_Power "Power" { channel = "atlona:pro3-88m:home:primary#power" }
|
Switch Atlona_Power "Power" { channel = "atlona:pro3-88m:home:primary#power" }
|
||||||
Switch Atlona_PanelLock "Panel Lock" { channel = "atlona:pro3-88m:home:primary#panellock" }
|
Switch Atlona_PanelLock "Panel Lock" { channel = "atlona:pro3-88m:home:primary#panellock" }
|
||||||
Switch Atlona_Presets "Preset Command" { channel = "atlona:pro3-88m:home:primary#presetcmd" }
|
Switch Atlona_Presets "Preset Command" { channel = "atlona:pro3-88m:home:primary#presetcmd" }
|
||||||
@ -274,7 +274,7 @@ Switch Atlona_VolumeMute6 "Mute 6" { channel = "atlona:pro3-88m:home:volume1#vol
|
|||||||
|
|
||||||
### SiteMap
|
### SiteMap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu" {
|
sitemap demo label="Main Menu" {
|
||||||
Frame label="Atlona" {
|
Frame label="Atlona" {
|
||||||
Text label="Device" {
|
Text label="Device" {
|
||||||
@ -332,7 +332,7 @@ Be sure they are in sync with the mappings above.
|
|||||||
|
|
||||||
### atlonainputports.map
|
### atlonainputports.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
1=CableBox
|
1=CableBox
|
||||||
2=BluRay Player
|
2=BluRay Player
|
||||||
3=Roku
|
3=Roku
|
||||||
@ -347,7 +347,7 @@ NULL=-
|
|||||||
|
|
||||||
### atlonaoutputports.map
|
### atlonaoutputports.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
1=Living Room
|
1=Living Room
|
||||||
2=Master Bed
|
2=Master Bed
|
||||||
3=Kitchen
|
3=Kitchen
|
||||||
|
@ -5,10 +5,9 @@ See [the Autelis website](https://www.autelis.com) and the [Autelis Command Prot
|
|||||||
|
|
||||||
This binding supports:
|
This binding supports:
|
||||||
|
|
||||||
* Jandy and Pentair models
|
- Jandy and Pentair models
|
||||||
* Read circuit, auxiliary, temperature, pump, chemistry and system values
|
- Read circuit, auxiliary, temperature, pump, chemistry and system values
|
||||||
* Control circuit, auxiliary lighting scenes, and temperature set points
|
- Control circuit, auxiliary lighting scenes, and temperature set points
|
||||||
|
|
||||||
|
|
||||||
## Auto Discovery
|
## Auto Discovery
|
||||||
|
|
||||||
@ -25,13 +24,13 @@ The Autelis binding requires the host, port, username and password
|
|||||||
|
|
||||||
In the thing file, this looks e.g. like
|
In the thing file, this looks e.g. like
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing autelis:pentair:myPool [ host="192.168.1.10", port="80", user="admin", password="admin"]
|
Thing autelis:pentair:myPool [ host="192.168.1.10", port="80", user="admin", password="admin"]
|
||||||
```
|
```
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing autelis:jandy:myPool [ host="192.168.1.10", port="80", user="admin", password="admin"]
|
Thing autelis:jandy:myPool [ host="192.168.1.10", port="80", user="admin", password="admin"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ This binding allows you to integrate, view and control Automower lawn mowers in
|
|||||||
|
|
||||||
All Husqvarna Automower models with "Automower Connect" should be supported. It was tested only with a Husqvarna Automower 430X and 450X.
|
All Husqvarna Automower models with "Automower Connect" should be supported. It was tested only with a Husqvarna Automower 430X and 450X.
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Once the bridge is created and configured, OpenHab will automatically discover all Automowers registered on your account.
|
Once the bridge is created and configured, OpenHab will automatically discover all Automowers registered on your account.
|
||||||
@ -125,7 +124,6 @@ Channel `last-position` is always identical with channel `position01` and thus p
|
|||||||
| position50 | Location | R | GPS Position 50 |
|
| position50 | Location | R | GPS Position 50 |
|
||||||
| last-position | Location | R | Last GPS Position (identical with positions#position01) |
|
| last-position | Location | R | Last GPS Position (identical with positions#position01) |
|
||||||
|
|
||||||
|
|
||||||
## Actions
|
## Actions
|
||||||
|
|
||||||
The following actions are available for `automower`things:
|
The following actions are available for `automower`things:
|
||||||
@ -139,19 +137,20 @@ The following actions are available for `automower`things:
|
|||||||
| park | duration (int) | Parks the automower for the given duration (minutes), overriding the schedule |
|
| park | duration (int) | Parks the automower for the given duration (minutes), overriding the schedule |
|
||||||
| resumeSchedule | - | Resumes the schedule for the automower |
|
| resumeSchedule | - | Resumes the schedule for the automower |
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### automower.thing
|
### automower.thing
|
||||||
|
|
||||||
|
```java
|
||||||
Bridge automower:bridge:mybridge [ appKey="<your_private_application_key>", userName="<your_username>", password="<your_password>" ] {
|
Bridge automower:bridge:mybridge [ appKey="<your_private_application_key>", userName="<your_username>", password="<your_password>" ] {
|
||||||
Thing automower myAutomower [ mowerId="<your_id_received_from_discovery>", pollingInterval=3600] {
|
Thing automower myAutomower [ mowerId="<your_id_received_from_discovery>", pollingInterval=3600] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### automower.items
|
### automower.items
|
||||||
|
|
||||||
|
```java
|
||||||
String Automower_Mode "Mode [%s]" { channel="automower:automower:mybridge:myAutomower:mode" }
|
String Automower_Mode "Mode [%s]" { channel="automower:automower:mybridge:myAutomower:mode" }
|
||||||
String Automower_Activity "Activity [%s]" { channel="automower:automower:mybridge:myAutomower:activity" }
|
String Automower_Activity "Activity [%s]" { channel="automower:automower:mybridge:myAutomower:activity" }
|
||||||
String Automower_State "State [%s]" { channel="automower:automower:mybridge:myAutomower:state" }
|
String Automower_State "State [%s]" { channel="automower:automower:mybridge:myAutomower:state" }
|
||||||
@ -171,12 +170,11 @@ The following actions are available for `automower`things:
|
|||||||
Switch Automower_Command_Park_Notice "Park until further notice" { channel="automower:automower:mybridge:myAutomower:park_until_further_notice" }
|
Switch Automower_Command_Park_Notice "Park until further notice" { channel="automower:automower:mybridge:myAutomower:park_until_further_notice" }
|
||||||
|
|
||||||
Location Automower_Last_Position "Last Position" { channel="automower:automower:mybridge:myAutomower:last-position" }
|
Location Automower_Last_Position "Last Position" { channel="automower:automower:mybridge:myAutomower:last-position" }
|
||||||
|
```
|
||||||
|
|
||||||
### automower.sitemap
|
### automower.sitemap
|
||||||
|
|
||||||
|
```perl
|
||||||
```
|
|
||||||
sitemap demo label="Automower"
|
sitemap demo label="Automower"
|
||||||
{
|
{
|
||||||
Frame {
|
Frame {
|
||||||
@ -198,7 +196,7 @@ sitemap demo label="Automower"
|
|||||||
|
|
||||||
Example rule that triggers an automower action
|
Example rule that triggers an automower action
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "AutomowerParkUntilFurtherNotice"
|
rule "AutomowerParkUntilFurtherNotice"
|
||||||
when
|
when
|
||||||
Item Some_Item changed to ON
|
Item Some_Item changed to ON
|
||||||
|
@ -15,13 +15,13 @@ This procedure opens TCP/IP port 1012 on your FRITZ!Box.
|
|||||||
(It can be deactivated again by dialing `#96*4*`.)
|
(It can be deactivated again by dialing `#96*4*`.)
|
||||||
You can test if everything is working with the Telnet program from your openHAB server:
|
You can test if everything is working with the Telnet program from your openHAB server:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
telnet fritz.box 1012
|
telnet fritz.box 1012
|
||||||
```
|
```
|
||||||
|
|
||||||
If you see an output like this:
|
If you see an output like this:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
Trying 192.168.178.1...
|
Trying 192.168.178.1...
|
||||||
Connected to fritz.box.
|
Connected to fritz.box.
|
||||||
Escape character is '^]'.
|
Escape character is '^]'.
|
||||||
@ -126,7 +126,7 @@ To do so
|
|||||||
Auto-discovery is enabled by default.
|
Auto-discovery is enabled by default.
|
||||||
To disable it, you can add the following line to `<openHAB-conf>/services/runtime.cfg`:
|
To disable it, you can add the following line to `<openHAB-conf>/services/runtime.cfg`:
|
||||||
|
|
||||||
```
|
```text
|
||||||
discovery.avmfritz:background=false
|
discovery.avmfritz:background=false
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -217,13 +217,13 @@ The trigger channel `press` for a FRITZ!DECT 400 device is of type `system.butto
|
|||||||
With the new [templates feature](https://en.avm.de/guide/smart-home/meet-the-smart-home-templates-from-fritz/) in FRITZ!OS 7, you can now save the settings of your Smart Home devices and groups as a template for certain occasions e.g. holidays or vacation.
|
With the new [templates feature](https://en.avm.de/guide/smart-home/meet-the-smart-home-templates-from-fritz/) in FRITZ!OS 7, you can now save the settings of your Smart Home devices and groups as a template for certain occasions e.g. holidays or vacation.
|
||||||
Unfortunately it is not that simple to find out the unique identifier (AIN) for a template needed for sending it as command to the `apply_template` channel.
|
Unfortunately it is not that simple to find out the unique identifier (AIN) for a template needed for sending it as command to the `apply_template` channel.
|
||||||
Here is a work-around:
|
Here is a work-around:
|
||||||
To retrieve the list of AINs assigned by FRITZ! for your templates, go to the FRITZ!Box' Support page at http://fritz.box/html/support.html within your local network and login.
|
To retrieve the list of AINs assigned by FRITZ! for your templates, go to the FRITZ!Box' Support page at [http://fritz.box/html/support.html](http://fritz.box/html/support.html) within your local network and login.
|
||||||
Then in the section "Support Data" ("Support-Daten") press the button "Create Support Data" ("Support-Daten erstellen") and save the generated text file.
|
Then in the section "Support Data" ("Support-Daten") press the button "Create Support Data" ("Support-Daten erstellen") and save the generated text file.
|
||||||
Open the file in a text editor and search for the term "avm_home_device_type_template".
|
Open the file in a text editor and search for the term "avm_home_device_type_template".
|
||||||
You will find entries like the attached one.
|
You will find entries like the attached one.
|
||||||
The `identifyer 'tmpFC0F2C-3960B7EE6'` contains the templates AINs you need for using them in rules.
|
The `identifyer 'tmpFC0F2C-3960B7EE6'` contains the templates AINs you need for using them in rules.
|
||||||
|
|
||||||
```
|
```text
|
||||||
Name 'Demo Template', identifyer 'tmpFC0F2C-3960B7EE6', firmware version '0.1'
|
Name 'Demo Template', identifyer 'tmpFC0F2C-3960B7EE6', firmware version '0.1'
|
||||||
[aktive] ID 60013, emc 0x0, model 0x0, grouphash=0x0, devicetype 'avm_home_device_type_template', functionbitmask 0x4000, sortid 0, batt perc 255 low 255, pollinterval 0, polltimeout 0, validchangetime: 0
|
[aktive] ID 60013, emc 0x0, model 0x0, grouphash=0x0, devicetype 'avm_home_device_type_template', functionbitmask 0x4000, sortid 0, batt perc 255 low 255, pollinterval 0, polltimeout 0, validchangetime: 0
|
||||||
--------------------
|
--------------------
|
||||||
@ -245,8 +245,7 @@ end
|
|||||||
For heating devices and heating groups there are two actions available to set Boost or Window Open mode for a given duration: `setBoostMode(long)` and `setWindowOpenMode(long)`.
|
For heating devices and heating groups there are two actions available to set Boost or Window Open mode for a given duration: `setBoostMode(long)` and `setWindowOpenMode(long)`.
|
||||||
The duration has to be given in seconds, min. 1, max. 86400, 0 for deactivation.
|
The duration has to be given in seconds, min. 1, max. 86400, 0 for deactivation.
|
||||||
|
|
||||||
|
```java
|
||||||
```
|
|
||||||
val actions = getActions("avmfritz","avmfritz:Comet_DECT:1:aaaaaabbbbbb")
|
val actions = getActions("avmfritz","avmfritz:Comet_DECT:1:aaaaaabbbbbb")
|
||||||
|
|
||||||
// set Boost mode for 5 min
|
// set Boost mode for 5 min
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
This binding provides access to the hourly prices for electricity for the German and Austrian provider aWATTar.
|
This binding provides access to the hourly prices for electricity for the German and Austrian provider aWATTar.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
There are three supported things.
|
There are three supported things.
|
||||||
@ -27,7 +26,6 @@ Auto discovery is not supported.
|
|||||||
|
|
||||||
### aWATTar Bridge
|
### aWATTar Bridge
|
||||||
|
|
||||||
|
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
|-------------|-------------------------------------------------------------------------------------------------------------------------------|
|
|-------------|-------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| vatPercent | Percentage of the value added tax to apply to net prices. Optional, defaults to 19. |
|
| vatPercent | Percentage of the value added tax to apply to net prices. Optional, defaults to 19. |
|
||||||
@ -68,17 +66,14 @@ For every hour, the `prices` thing provides the following prices:
|
|||||||
| total-net | Number | Sum of net market price and configured base price |
|
| total-net | Number | Sum of net market price and configured base price |
|
||||||
| total-gross | Number | Sum of market and base price with VAT applied. Most probably this is the final price you will have to pay for one kWh in a certain hour |
|
| total-gross | Number | Sum of market and base price with VAT applied. Most probably this is the final price you will have to pay for one kWh in a certain hour |
|
||||||
|
|
||||||
|
|
||||||
All prices are available in each of the following channel groups:
|
All prices are available in each of the following channel groups:
|
||||||
|
|
||||||
|
|
||||||
| channel group | description |
|
| channel group | description |
|
||||||
|----------|--------------------------------|
|
|----------|--------------------------------|
|
||||||
| current | The prices for the current hour |
|
| current | The prices for the current hour |
|
||||||
| today00, today01, today02 ... today23 | Hourly prices for today. `today00` provides the price from 0:00 to 1:00, `today01` from 1:00 to 02:00 and so on. As long as the API is working, this data should always be available |
|
| today00, today01, today02 ... today23 | Hourly prices for today. `today00` provides the price from 0:00 to 1:00, `today01` from 1:00 to 02:00 and so on. As long as the API is working, this data should always be available |
|
||||||
| tomorrow00, tomorrow01, ... tomorrow23 | Hourly prices for the next day. They should be available starting at 14:00. |
|
| tomorrow00, tomorrow01, ... tomorrow23 | Hourly prices for the next day. They should be available starting at 14:00. |
|
||||||
|
|
||||||
|
|
||||||
### Bestprice Thing
|
### Bestprice Thing
|
||||||
|
|
||||||
| channel | type | description |
|
| channel | type | description |
|
||||||
@ -90,16 +85,13 @@ All prices are available in each of the following channel groups:
|
|||||||
| remaining | Number:Time | The time in minutes until end of the bestprice range. If start time passed. the channel will be set to `UNDEFINED` until the values for the next day are available. |
|
| remaining | Number:Time | The time in minutes until end of the bestprice range. If start time passed. the channel will be set to `UNDEFINED` until the values for the next day are available. |
|
||||||
| hours | String | A comma separated list of hours this bestprice period contains. |
|
| hours | String | A comma separated list of hours this bestprice period contains. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
awattar.things:
|
awattar.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge awattar:bridge:bridge1 "aWATTar Bridge" [ country="DE", vatPercent="19", basePrice="17.22"] {
|
Bridge awattar:bridge:bridge1 "aWATTar Bridge" [ country="DE", vatPercent="19", basePrice="17.22"] {
|
||||||
Thing prices price1 "aWATTar Price" []
|
Thing prices price1 "aWATTar Price" []
|
||||||
// The car should be loaded for 4 hours during the night
|
// The car should be loaded for 4 hours during the night
|
||||||
@ -115,7 +107,7 @@ Bridge awattar:bridge:bridge1 "aWATTar Bridge" [ country="DE", vatPercent="19",
|
|||||||
|
|
||||||
awattar.items:
|
awattar.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Dimensionless currentnet "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#market-net" }
|
Number:Dimensionless currentnet "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#market-net" }
|
||||||
Number:Dimensionless currentgross "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#market-gross" }
|
Number:Dimensionless currentgross "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#market-gross" }
|
||||||
Number:Dimensionless totalnet "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#total-net" }
|
Number:Dimensionless totalnet "Current price [%2.2f ct/kWh]" { channel="awattar:prices:bridge1:price1:current#total-net" }
|
||||||
@ -184,7 +176,7 @@ Switch HeatpumpActive { channel="awattar:bestprice:bridge1:heatpump:active" }
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap default label="aWATTar Sitemap"
|
sitemap default label="aWATTar Sitemap"
|
||||||
{
|
{
|
||||||
Frame label="Car Loader" {
|
Frame label="Car Loader" {
|
||||||
|
@ -38,18 +38,18 @@ The `projector-tcp` thing has the following configuration parameters:
|
|||||||
|
|
||||||
Some notes:
|
Some notes:
|
||||||
|
|
||||||
* If using a serial port connection, the baud rate in the projector OSD menu must be set to 9600 bps.
|
- If using a serial port connection, the baud rate in the projector OSD menu must be set to 9600 bps.
|
||||||
* The _source_, _picturemode_ and _aspectratio_ channels include a dropdown with the most commonly used settings.
|
- The _source_, _picturemode_ and _aspectratio_ channels include a dropdown with the most commonly used settings.
|
||||||
* Not all pre-defined dropdown options will be usable if your particular projector does support a given option.
|
- Not all pre-defined dropdown options will be usable if your particular projector does support a given option.
|
||||||
* If your projector has an option that is not in the dropdown, the string code to access that option will be displayed by the channel when that option is selected by the remote control.
|
- If your projector has an option that is not in the dropdown, the string code to access that option will be displayed by the channel when that option is selected by the remote control.
|
||||||
* By using the sitemap mapping or a rule to send that code back to the channel, any options that are missing in the binding can be accessed.
|
- By using the sitemap mapping or a rule to send that code back to the channel, any options that are missing in the binding can be accessed.
|
||||||
|
|
||||||
* On Linux, you may get an error stating the serial port cannot be opened when the benqprojector binding tries to load.
|
- On Linux, you may get an error stating the serial port cannot be opened when the benqprojector binding tries to load.
|
||||||
* You can get around this by adding the `openhab` user to the `dialout` group like this: `usermod -a -G dialout openhab`.
|
- You can get around this by adding the `openhab` user to the `dialout` group like this: `usermod -a -G dialout openhab`.
|
||||||
* Also on Linux you may have issues with the USB if using two serial USB devices e.g. benqprojector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
|
- Also on Linux you may have issues with the USB if using two serial USB devices e.g. benqprojector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
|
||||||
* Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the BenQ projector):
|
- Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the BenQ projector):
|
||||||
|
|
||||||
```
|
```text
|
||||||
4444:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT LOCAL
|
4444:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT LOCAL
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ Some notes:
|
|||||||
|
|
||||||
things/benq.things:
|
things/benq.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// serial port connection
|
// serial port connection
|
||||||
benqprojector:projector-serial:hometheater "Projector" [ serialPort="COM5", pollingInterval=10 ]
|
benqprojector:projector-serial:hometheater "Projector" [ serialPort="COM5", pollingInterval=10 ]
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ benqprojector:projector-tcp:hometheater "Projector" [ host="192.168.0.10", port=
|
|||||||
|
|
||||||
items/benq.items
|
items/benq.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch benqPower { channel="benqprojector:projector-serial:hometheater:power" }
|
Switch benqPower { channel="benqprojector:projector-serial:hometheater:power" }
|
||||||
String benqSource "Source [%s]" { channel="benqprojector:projector-serial:hometheater:source" }
|
String benqSource "Source [%s]" { channel="benqprojector:projector-serial:hometheater:source" }
|
||||||
String benqPictureMode "Picture Mode [%s]" { channel="benqprojector:projector-serial:hometheater:picturemode" }
|
String benqPictureMode "Picture Mode [%s]" { channel="benqprojector:projector-serial:hometheater:picturemode" }
|
||||||
@ -94,7 +94,7 @@ Number benqLampTime "Lamp Time [%d h]" <switch> { channel="benqprojector:p
|
|||||||
|
|
||||||
sitemaps/benq.sitemap
|
sitemaps/benq.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap benq label="BenQ Projector" {
|
sitemap benq label="BenQ Projector" {
|
||||||
Frame label="Controls" {
|
Frame label="Controls" {
|
||||||
Switch item=benqPower label="Power"
|
Switch item=benqPower label="Power"
|
||||||
|
@ -36,7 +36,7 @@ In the event that any of this information is changed on the device, the thing co
|
|||||||
|
|
||||||
### Manual Thing Creation
|
### Manual Thing Creation
|
||||||
|
|
||||||
Fan and light things can be manually created using the *UI*, or by placing a *.things* file in the *conf/things* directory.
|
Fan and light things can be manually created using the _UI_, or by placing a _.things_ file in the _conf/things_ directory.
|
||||||
See example below.
|
See example below.
|
||||||
|
|
||||||
## Device Discovery
|
## Device Discovery
|
||||||
@ -46,7 +46,7 @@ Once added as a thing, the user can control the fan and light, similarly to how
|
|||||||
|
|
||||||
Background discovery polls the network every few minutes for devices.
|
Background discovery polls the network every few minutes for devices.
|
||||||
Background discovery is **enabled** by default.
|
Background discovery is **enabled** by default.
|
||||||
To **disable** background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
To **disable** background discovery, add the following line to the _conf/services/runtime.cfg_ file:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
discovery.bigassfan:background=false
|
discovery.bigassfan:background=false
|
||||||
@ -179,7 +179,7 @@ Frame label="Control My Light" {
|
|||||||
|
|
||||||
### Manual Thing Creation
|
### Manual Thing Creation
|
||||||
|
|
||||||
Place a file named *bigassfan.things* in the *conf/things* directory.
|
Place a file named _bigassfan.things_ in the _conf/things_ directory.
|
||||||
The file should contain lines formatted like this.
|
The file should contain lines formatted like this.
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
@ -59,13 +59,13 @@ Note: For the `Airthings Wave Gen 1`, only one channel can be updated at each re
|
|||||||
|
|
||||||
airthings.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluegiga:adapter1`:
|
airthings.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluegiga:adapter1`:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:airthings_wave_plus:adapter1:sensor1 "Airthings Wave Plus Sensor 1" (bluetooth:bluegiga:adapter1) [ address="12:34:56:78:9A:BC", refreshInterval=300 ]
|
bluetooth:airthings_wave_plus:adapter1:sensor1 "Airthings Wave Plus Sensor 1" (bluetooth:bluegiga:adapter1) [ address="12:34:56:78:9A:BC", refreshInterval=300 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
airthings.items:
|
airthings.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature temperature "Temperature [%.1f %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:temperature" }
|
Number:Temperature temperature "Temperature [%.1f %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:temperature" }
|
||||||
Number:Dimensionless humidity "Humidity [%d %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:humidity" }
|
Number:Dimensionless humidity "Humidity [%d %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:humidity" }
|
||||||
Number:Pressure pressure "Air Pressure [%d %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:pressure" }
|
Number:Pressure pressure "Air Pressure [%d %unit%]" { channel="bluetooth:airthings_wave_plus:adapter1:sensor1:pressure" }
|
||||||
|
@ -10,7 +10,6 @@ Following thing types are supported by this extension:
|
|||||||
|---------------|-------------------------------|
|
|---------------|-------------------------------|
|
||||||
| am43 | AM43 Blind Drive Motor |
|
| am43 | AM43 Blind Drive Motor |
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
As any other Bluetooth device, AM43 Blind Drive Motors are discovered automatically by the corresponding bridge.
|
As any other Bluetooth device, AM43 Blind Drive Motors are discovered automatically by the corresponding bridge.
|
||||||
@ -48,13 +47,13 @@ Following channels are supported for `AM43 Blind Drive Motor` thing:
|
|||||||
|
|
||||||
am43.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluegiga:adapter1`:
|
am43.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluegiga:adapter1`:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:am43:adapter1:motor1 "AM43 Blind Drive Motor 1" (bluetooth:bluegiga:adapter1) [ address="12:34:56:78:9A:BC", refreshInterval=300, invertPosition=false ]
|
bluetooth:am43:adapter1:motor1 "AM43 Blind Drive Motor 1" (bluetooth:bluegiga:adapter1) [ address="12:34:56:78:9A:BC", refreshInterval=300, invertPosition=false ]
|
||||||
```
|
```
|
||||||
|
|
||||||
am43.items:
|
am43.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
String direction "Direction [%s]" { channel="bluetooth:am43:adapter1:motor1:direction" }
|
String direction "Direction [%s]" { channel="bluetooth:am43:adapter1:motor1:direction" }
|
||||||
Switch topLimitSet "Top Limit Set" { channel="bluetooth:am43:adapter1:motor1:topLimitSet" }
|
Switch topLimitSet "Top Limit Set" { channel="bluetooth:am43:adapter1:motor1:topLimitSet" }
|
||||||
Switch bottomLimitSet "Bottom Limit Set" { channel="bluetooth:am43:adapter1:motor1:bottomLimitSet" }
|
Switch bottomLimitSet "Bottom Limit Set" { channel="bluetooth:am43:adapter1:motor1:bottomLimitSet" }
|
||||||
@ -68,6 +67,3 @@ Number:Dimensionless type "Type [%.0f]" { channel="b
|
|||||||
Number:Dimensionless light_level "Light Level [%.0f]" { channel="bluetooth:am43:adapter1:motor1:lightLevel" }
|
Number:Dimensionless light_level "Light Level [%.0f]" { channel="bluetooth:am43:adapter1:motor1:lightLevel" }
|
||||||
Number:Dimensionless battery_level "Battery Level [%.0f %%]" { channel="bluetooth:am43:adapter1:motor1:electric" }
|
Number:Dimensionless battery_level "Battery Level [%.0f %%]" { channel="bluetooth:am43:adapter1:motor1:electric" }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ It defines the following bridge type:
|
|||||||
|----------------|---------------------------------------------------------------------------|
|
|----------------|---------------------------------------------------------------------------|
|
||||||
| bluegiga | A BlueGiga USB dongle using a BLED112 chip |
|
| bluegiga | A BlueGiga USB dongle using a BLED112 chip |
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
The adapter cannot be discovered; its serial port must be manually configured.
|
The adapter cannot be discovered; its serial port must be manually configured.
|
||||||
@ -24,6 +23,6 @@ Additionally, the parameter `backgroundDiscovery` can be set to true/false. When
|
|||||||
|
|
||||||
This is how a BlueGiga adapter can be configured textually in a *.things file:
|
This is how a BlueGiga adapter can be configured textually in a *.things file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bluetooth:bluegiga:1 [ port="/dev/ttyS0", backgroundDiscovery=false ]
|
Bridge bluetooth:bluegiga:1 [ port="/dev/ttyS0", backgroundDiscovery=false ]
|
||||||
```
|
```
|
||||||
|
@ -30,7 +30,7 @@ sudo adduser openhab bluetooth
|
|||||||
Also, in case you don't want to manually enable your bluetooth adapters with `bluetoothctl`, ensure that it's automatically enabled by setting the option `AutoEnable` in your `/etc/bluetooth/main.conf` to `true`.
|
Also, in case you don't want to manually enable your bluetooth adapters with `bluetoothctl`, ensure that it's automatically enabled by setting the option `AutoEnable` in your `/etc/bluetooth/main.conf` to `true`.
|
||||||
Restart running services for changes to take effect.
|
Restart running services for changes to take effect.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
systemctl restart dbus
|
systemctl restart dbus
|
||||||
systemctl restart bluetooth
|
systemctl restart bluetooth
|
||||||
systemctl restart openhab2
|
systemctl restart openhab2
|
||||||
@ -48,7 +48,6 @@ It defines the following bridge type:
|
|||||||
|
|
||||||
If BlueZ is enabled and can be accessed, all available adapters are automatically discovered.
|
If BlueZ is enabled and can be accessed, all available adapters are automatically discovered.
|
||||||
|
|
||||||
|
|
||||||
## Bridge Configuration
|
## Bridge Configuration
|
||||||
|
|
||||||
The bluez bridge requires the configuration parameter `address`, which corresponds to the Bluetooth address of the adapter (in format "XX:XX:XX:XX:XX:XX").
|
The bluez bridge requires the configuration parameter `address`, which corresponds to the Bluetooth address of the adapter (in format "XX:XX:XX:XX:XX:XX").
|
||||||
@ -59,6 +58,6 @@ Additionally, the parameter `backgroundDiscovery` can be set to true/false.When
|
|||||||
|
|
||||||
This is how a BlueZ adapter can be configured textually in a *.things file:
|
This is how a BlueZ adapter can be configured textually in a *.things file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bluetooth:bluez:hci0 [ address="12:34:56:78:90:AB", backgroundDiscovery=false ]
|
Bridge bluetooth:bluez:hci0 [ address="12:34:56:78:90:AB", backgroundDiscovery=false ]
|
||||||
```
|
```
|
||||||
|
@ -36,13 +36,13 @@ A Blukii Smart Beacon has the following channels:
|
|||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:blukii:hci0:beacon "Blukii Sensor Beacon" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
bluetooth:blukii:hci0:beacon "Blukii Sensor Beacon" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:blukii:hci0:beacon:temperature" }
|
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:blukii:hci0:beacon:temperature" }
|
||||||
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:blukii:hci0:beacon:humidity" }
|
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:blukii:hci0:beacon:humidity" }
|
||||||
Number:Pressure pressure "Air Pressure [%.0f %unit%]" { channel="bluetooth:blukii:hci0:beacon:pressure" }
|
Number:Pressure pressure "Air Pressure [%.0f %unit%]" { channel="bluetooth:blukii:hci0:beacon:pressure" }
|
||||||
|
@ -7,34 +7,28 @@ The device uses an UART over BLE serial communication protocol over BLE WriteWit
|
|||||||
|
|
||||||
[BRC1H on Daikin website (EN)](https://www.daikin.eu/en_us/product-group/control-systems/BRC1H.html)
|
[BRC1H on Daikin website (EN)](https://www.daikin.eu/en_us/product-group/control-systems/BRC1H.html)
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
|
|
||||||
| Thing Type ID | Description |
|
| Thing Type ID | Description |
|
||||||
| ------------- | ----------- |
|
| ------------- | ----------- |
|
||||||
| brc1h | BRC1H BLE Thermostat |
|
| brc1h | BRC1H BLE Thermostat |
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
As a pairing of the Thermostat is necessary (Bluetooth), no automatic discovery is implemented.
|
As a pairing of the Thermostat is necessary (Bluetooth), no automatic discovery is implemented.
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
* address: The Bluetooth MAC Address of the BRC1H controller
|
- address: The Bluetooth MAC Address of the BRC1H controller
|
||||||
|
|
||||||
Example with a DBusBlueZ Bluetooth Bridge:
|
Example with a DBusBlueZ Bluetooth Bridge:
|
||||||
|
|
||||||
```
|
```java
|
||||||
|
|
||||||
Bridge bluetooth:dbusbluez:hci0 [ address="00:1A:7D:DA:71:13" ]
|
Bridge bluetooth:dbusbluez:hci0 [ address="00:1A:7D:DA:71:13" ]
|
||||||
|
|
||||||
Thing bluetooth:brc1h:hci0:salon (bluetooth:dbusbluez:hci0) [ address="00:CC:3F:B2:80:CA" ]
|
Thing bluetooth:brc1h:hci0:salon (bluetooth:dbusbluez:hci0) [ address="00:CC:3F:B2:80:CA" ]
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
_Here you should provide information about available channel types, what their meaning is and how they can be used._
|
_Here you should provide information about available channel types, what their meaning is and how they can be used._
|
||||||
@ -64,8 +58,7 @@ _Note that it is planned to generate some part of this based on the XML files wi
|
|||||||
|
|
||||||
### daikinmadoka.things:
|
### daikinmadoka.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
|
|
||||||
Bridge bluetooth:dbusbluez:hci0 [ address="00:1A:7D:DA:71:13" ]
|
Bridge bluetooth:dbusbluez:hci0 [ address="00:1A:7D:DA:71:13" ]
|
||||||
|
|
||||||
Thing bluetooth:brc1h:hci0:salon (bluetooth:dbusbluez:hci0) [ address="00:CC:3F:B2:80:CA" ]
|
Thing bluetooth:brc1h:hci0:salon (bluetooth:dbusbluez:hci0) [ address="00:CC:3F:B2:80:CA" ]
|
||||||
@ -74,8 +67,7 @@ Thing bluetooth:brc1h:hci0:salon (bluetooth:dbusbluez:hci0) [ address="00:CC
|
|||||||
|
|
||||||
### daikinmadoka.items:
|
### daikinmadoka.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
|
|
||||||
Group g_climSalon "Salon" [ "Thermostat" ]
|
Group g_climSalon "Salon" [ "Thermostat" ]
|
||||||
|
|
||||||
Switch climSalon_onOff "Climatisation Salon" (g_climSalon) { channel="bluetooth:brc1h:hci0:salon:onOffStatus" }
|
Switch climSalon_onOff "Climatisation Salon" (g_climSalon) { channel="bluetooth:brc1h:hci0:salon:onOffStatus" }
|
||||||
@ -104,12 +96,12 @@ This pairing process can be a bit challenging, as it seems the timing is very im
|
|||||||
We suggest that the Bluetooth adapter is not being used by another component during the pairing phase.
|
We suggest that the Bluetooth adapter is not being used by another component during the pairing phase.
|
||||||
As such, if you have other Bluetooth Things in your OpenHAB, it is suggested to stop the openHAB service before doing the pairing.
|
As such, if you have other Bluetooth Things in your OpenHAB, it is suggested to stop the openHAB service before doing the pairing.
|
||||||
|
|
||||||
* Ensure that your BRC1H has Bluetooth enabled in the menu
|
- Ensure that your BRC1H has Bluetooth enabled in the menu
|
||||||
* Open `bluetoothctl` on your openHAB server - preferably as `root`
|
- Open `bluetoothctl` on your openHAB server - preferably as `root`
|
||||||
* start scanning by typing `scan on`
|
- start scanning by typing `scan on`
|
||||||
* After few seconds, stop scanning `scan off`
|
- After few seconds, stop scanning `scan off`
|
||||||
* Start the pairing process by typing `pair <mac address of your brc1h>`
|
- Start the pairing process by typing `pair <mac address of your brc1h>`
|
||||||
* On the BRC1H, confirm the pairing request, and quickly confirm as well on your server by typing `yes`
|
- On the BRC1H, confirm the pairing request, and quickly confirm as well on your server by typing `yes`
|
||||||
|
|
||||||
A successful pairing ends with `pairing successful`.
|
A successful pairing ends with `pairing successful`.
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@ Only a single thing type is added by this extension:
|
|||||||
| --------------- | ------------------------- |
|
| --------------- | ------------------------- |
|
||||||
| ptm215b | The EnOcean PTM 215B Rocker |
|
| ptm215b | The EnOcean PTM 215B Rocker |
|
||||||
|
|
||||||
|
|
||||||
These rockers are battery-less, the necessary energy for the BLE transmission is generated by the button click itself
|
These rockers are battery-less, the necessary energy for the BLE transmission is generated by the button click itself
|
||||||
and completely depleted after 3 attempts of a "fire & forget" (unidirectional) BLE transmission.
|
and completely depleted after 3 attempts of a "fire & forget" (unidirectional) BLE transmission.
|
||||||
This means, the rockers are only "on" during the button click, so there is no possibility for openHAB to actively
|
This means, the rockers are only "on" during the button click, so there is no possibility for openHAB to actively
|
||||||
@ -45,7 +44,7 @@ An EnOcean PTM 215B Rocker has the following channels:
|
|||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bluetooth:bluegiga:bluegiga0 "Bluegiga Adapter" [ port="/dev/ttyBLUEGIGA", discovery=false ] {
|
Bridge bluetooth:bluegiga:bluegiga0 "Bluegiga Adapter" [ port="/dev/ttyBLUEGIGA", discovery=false ] {
|
||||||
Thing ptm215b rocker_livingroom "Rocker Living Room" [ address = "E2:15:00:00:53:F9" ]
|
Thing ptm215b rocker_livingroom "Rocker Living Room" [ address = "E2:15:00:00:53:F9" ]
|
||||||
Thing ptm215b rocker_kitchen "Rocker Kitchen" [ address = "E2:15:00:00:53:98" ]
|
Thing ptm215b rocker_kitchen "Rocker Kitchen" [ address = "E2:15:00:00:53:98" ]
|
||||||
@ -54,7 +53,7 @@ Bridge bluetooth:bluegiga:bluegiga0 "Bluegiga Adapter" [ port="/dev/ttyBLUEGIGA"
|
|||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen
|
Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen
|
||||||
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
|
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
|
||||||
```
|
```
|
||||||
|
@ -33,8 +33,8 @@ Govee things have the following configuration parameters:
|
|||||||
| goveeHygrometerMonitor | humidityWarningMax | | 0 | The upper safe humidity threshold <sup>3</sup> |
|
| goveeHygrometerMonitor | humidityWarningMax | | 0 | The upper safe humidity threshold <sup>3</sup> |
|
||||||
|
|
||||||
1. Available to both `goveeHygrometer` and `goveeHygrometerMonitor` thing types.
|
1. Available to both `goveeHygrometer` and `goveeHygrometerMonitor` thing types.
|
||||||
2. In °C
|
1. In °C
|
||||||
3. Only applies if alarm feature is enabled
|
1. Only applies if alarm feature is enabled
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
@ -49,19 +49,19 @@ Govee things have the following channels in addition to the default bluetooth ch
|
|||||||
| goveeHygrometerMonitor | humidityAlarm | Switch | Indicates if current humidity is out of range. <sup>2</sup> |
|
| goveeHygrometerMonitor | humidityAlarm | Switch | Indicates if current humidity is out of range. <sup>2</sup> |
|
||||||
|
|
||||||
1. Available to both `goveeHygrometer` and `goveeHygrometerMonitor` thing types.
|
1. Available to both `goveeHygrometer` and `goveeHygrometerMonitor` thing types.
|
||||||
2. Only applies if warning alarms are enabled in the configuration.
|
1. Only applies if warning alarms are enabled in the configuration.
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:goveeHygrometer:hci0:beacon "Govee Temperature Humidity Monitor" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
bluetooth:goveeHygrometer:hci0:beacon "Govee Temperature Humidity Monitor" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:temperature" }
|
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:temperature" }
|
||||||
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:humidity" }
|
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:humidity" }
|
||||||
Number:Dimensionless battery "Battery [%.0f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:battery" }
|
Number:Dimensionless battery "Battery [%.0f %unit%]" { channel="bluetooth:goveeHygrometer:hci0:beacon:battery" }
|
||||||
|
@ -37,7 +37,7 @@ The `backgroundDiscovery` parameter is true by default.
|
|||||||
|
|
||||||
This is how a Roaming adapter can be configured textually in a *.things file:
|
This is how a Roaming adapter can be configured textually in a *.things file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bluetooth:roaming:ctrl "BLE Roaming Adapter" [ backgroundDiscovery=true]
|
Bridge bluetooth:roaming:ctrl "BLE Roaming Adapter" [ backgroundDiscovery=true]
|
||||||
Bridge bluetooth:roaming:other "BLE Roaming Adapter" [ backgroundDiscovery=true, groupUIDs="bluetooth:bluez:hci0,bluetooth:bluez:hci1"]
|
Bridge bluetooth:roaming:other "BLE Roaming Adapter" [ backgroundDiscovery=true, groupUIDs="bluetooth:bluez:hci0,bluetooth:bluez:hci1"]
|
||||||
```
|
```
|
||||||
|
@ -10,7 +10,6 @@ Only a single thing type is added by this extension:
|
|||||||
| --------------- | ------------------------- |
|
| --------------- | ------------------------- |
|
||||||
| ruuvitag_beacon | A Ruuvi Tag Sensor Beacon |
|
| ruuvitag_beacon | A Ruuvi Tag Sensor Beacon |
|
||||||
|
|
||||||
|
|
||||||
Under normal conditions the ruuvitag should submit data every 10 seconds.
|
Under normal conditions the ruuvitag should submit data every 10 seconds.
|
||||||
However, if no data has been retrieved after 1 minute the ruuvitag is set to OFFLINE and the state of channels is set to UNDEF.
|
However, if no data has been retrieved after 1 minute the ruuvitag is set to OFFLINE and the state of channels is set to UNDEF.
|
||||||
When new data is retrieved when OFFLINE the ruuvtag is set ONLINE again.
|
When new data is retrieved when OFFLINE the ruuvtag is set ONLINE again.
|
||||||
@ -47,13 +46,13 @@ Note: not all channels are always available. Available fields depends on [Ruuvi
|
|||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:ruuvitag:hci0:beacon "RuuviTag Sensor Beacon" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
bluetooth:ruuvitag:hci0:beacon "RuuviTag Sensor Beacon" (bluetooth:bluez:hci0) [ address="12:34:56:78:9A:BC" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:temperature" }
|
Number:Temperature temperature "Room Temperature [%.1f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:temperature" }
|
||||||
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:humidity" }
|
Number:Dimensionless humidity "Humidity [%.0f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:humidity" }
|
||||||
Number:Pressure pressure "Air Pressure [%.0f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:pressure" }
|
Number:Pressure pressure "Air Pressure [%.0f %unit%]" { channel="bluetooth:ruuvitag:hci0:beacon:pressure" }
|
||||||
|
@ -6,12 +6,12 @@ This architecture means that such extension bundles must utilise the binding nam
|
|||||||
A base class structure is defined in the `org.openhab.binding.bluetooth` bundle.
|
A base class structure is defined in the `org.openhab.binding.bluetooth` bundle.
|
||||||
This includes the main classes required to implement Bluetooth:
|
This includes the main classes required to implement Bluetooth:
|
||||||
|
|
||||||
* `BluetoothAdapter`. This interface defines the main functionality required to be implemented by a Bluetooth adapter, including device discovery. Typically, this interface is implemented by a BridgeHandler and then registered as an OSGi service
|
- `BluetoothAdapter`. This interface defines the main functionality required to be implemented by a Bluetooth adapter, including device discovery. Typically, this interface is implemented by a BridgeHandler and then registered as an OSGi service
|
||||||
* `BluetoothDiscoveryParticipant`. An interface to be implemented by services that can identify specific Bluetooth devices.
|
- `BluetoothDiscoveryParticipant`. An interface to be implemented by services that can identify specific Bluetooth devices.
|
||||||
* `BluetoothDevice`. This implements a Bluetooth device. It manages the notifications of device notifications, Bluetooth service and characteristic management, and provides the main interface to communicate to a Bluetooth device.
|
- `BluetoothDevice`. This implements a Bluetooth device. It manages the notifications of device notifications, Bluetooth service and characteristic management, and provides the main interface to communicate to a Bluetooth device.
|
||||||
* `BluetoothService`. Implements the Bluetooth service. A service holds a number of characteristics.
|
- `BluetoothService`. Implements the Bluetooth service. A service holds a number of characteristics.
|
||||||
* `BluetoothCharacteristic`. Implements the Bluetooth characteristic. This is the basic component for communicating data to and from a Bluetooth device.
|
- `BluetoothCharacteristic`. Implements the Bluetooth characteristic. This is the basic component for communicating data to and from a Bluetooth device.
|
||||||
* `BluetoothDescriptor`. Implements the Bluetooth descriptors for each characteristic.
|
- `BluetoothDescriptor`. Implements the Bluetooth descriptors for each characteristic.
|
||||||
|
|
||||||
## Implementing a new Bluetooth Adapter bundle
|
## Implementing a new Bluetooth Adapter bundle
|
||||||
|
|
||||||
@ -41,21 +41,22 @@ This should use the bundle name and the thing name, separated with an underscore
|
|||||||
### Connected Mode Implementation
|
### Connected Mode Implementation
|
||||||
|
|
||||||
The connected mode `BluetoothThingHandler` needs to handle the following functionality
|
The connected mode `BluetoothThingHandler` needs to handle the following functionality
|
||||||
* Extend the connected bluetooth thing handler. This holds the `adapter` through which all communication is done.
|
|
||||||
* Call the `adapter.getDevice()` method to get the `BluetoothDevice` class for the requested device. The `getDevice()` method will return a `BluetoothDevice` class even if the device is not currently known.
|
- Extend the connected bluetooth thing handler. This holds the `adapter` through which all communication is done.
|
||||||
* Implement the `BluetoothDeviceListener` methods. These provide callbacks for various notifications regarding device updates – e.g. when the connection state of a device changes, when the device discovery is complete, when a read and write completes, and when beacon messages are received.
|
- Call the `adapter.getDevice()` method to get the `BluetoothDevice` class for the requested device. The `getDevice()` method will return a `BluetoothDevice` class even if the device is not currently known.
|
||||||
* The parent class calls the `device.connect()` method to connect to the device. Once the device is connected, the `BluetoothDeviceListener.onConnectionStateChange()` callback will be called.
|
- Implement the `BluetoothDeviceListener` methods. These provide callbacks for various notifications regarding device updates – e.g. when the connection state of a device changes, when the device discovery is complete, when a read and write completes, and when beacon messages are received.
|
||||||
* The parent class calls the `device.discoverServices()` method to discover all the BluetoothServices and `BluetoothCharacteristic`s implemented by the device. Once this is complete, the `BluetoothDeviceListener.onServicesDiscovered()` callback will be called.
|
- The parent class calls the `device.connect()` method to connect to the device. Once the device is connected, the `BluetoothDeviceListener.onConnectionStateChange()` callback will be called.
|
||||||
* Call the `readCharacteristic` or `writeCharacteristic` methods to interact with the device. The `BluetoothDeviceListener.onCharacteristicReadComplete()` and `BluetoothDeviceListener.onCharacteristicWriteComplete()` methods will be called on completion.
|
- The parent class calls the `device.discoverServices()` method to discover all the BluetoothServices and `BluetoothCharacteristic`s implemented by the device. Once this is complete, the `BluetoothDeviceListener.onServicesDiscovered()` callback will be called.
|
||||||
* Implement the `BluetoothDeviceListener.onCharacteristicUpdate()` method to process any read responses or unsolicited updates of a characteristic value.
|
- Call the `readCharacteristic` or `writeCharacteristic` methods to interact with the device. The `BluetoothDeviceListener.onCharacteristicReadComplete()` and `BluetoothDeviceListener.onCharacteristicWriteComplete()` methods will be called on completion.
|
||||||
|
- Implement the `BluetoothDeviceListener.onCharacteristicUpdate()` method to process any read responses or unsolicited updates of a characteristic value.
|
||||||
|
|
||||||
### Beacon Mode Implementation
|
### Beacon Mode Implementation
|
||||||
|
|
||||||
The beacon mode thing handler needs to handle the following functionality:
|
The beacon mode thing handler needs to handle the following functionality:
|
||||||
|
|
||||||
* Extend the beacon Bluetooth thing handler. This holds the `adapter` through which all communication is done.
|
- Extend the beacon Bluetooth thing handler. This holds the `adapter` through which all communication is done.
|
||||||
* Call the `adapter.getDevice()` method to get the `BluetoothDevice` class for the requested device. The `getDevice()` method will return a `BluetoothDevice` class even if the device is not currently known.
|
- Call the `adapter.getDevice()` method to get the `BluetoothDevice` class for the requested device. The `getDevice()` method will return a `BluetoothDevice` class even if the device is not currently known.
|
||||||
* Implement the `BluetoothDeviceListener.onScanRecordReceived()` method to process the beacons. The notification will provide the current receive signal strength (RSSI), the raw beacon data, and various elements of generally useful beacon data is provided separately.
|
- Implement the `BluetoothDeviceListener.onScanRecordReceived()` method to process the beacons. The notification will provide the current receive signal strength (RSSI), the raw beacon data, and various elements of generally useful beacon data is provided separately.
|
||||||
|
|
||||||
### Generic Bluetooth Device Support
|
### Generic Bluetooth Device Support
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ Additional thing types are available through bluetooth extensions.
|
|||||||
|---------------|---------------------------------------------------------------------------------------------------------|
|
|---------------|---------------------------------------------------------------------------------------------------------|
|
||||||
| beacon | A Bluetooth device that is not connected, but only broadcasts announcements. |
|
| beacon | A Bluetooth device that is not connected, but only broadcasts announcements. |
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Discovery is performed through the Bluetooth bridge.
|
Discovery is performed through the Bluetooth bridge.
|
||||||
@ -36,7 +35,6 @@ As this might lead to a huge list of devices, bridges usually disable this behav
|
|||||||
All bluetooth thing types require a configuration parameter `address`, which corresponds to the Bluetooth address of the device (in format "XX:XX:XX:XX:XX:XX").
|
All bluetooth thing types require a configuration parameter `address`, which corresponds to the Bluetooth address of the device (in format "XX:XX:XX:XX:XX:XX").
|
||||||
Other configuration parameters may be required depending on the bluetooth thing type, look at the documentation for that thing type for details.
|
Other configuration parameters may be required depending on the bluetooth thing type, look at the documentation for that thing type for details.
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
Every Bluetooth thing has the following channel:
|
Every Bluetooth thing has the following channel:
|
||||||
@ -49,19 +47,19 @@ Every Bluetooth thing has the following channel:
|
|||||||
|
|
||||||
demo.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluez:hci0`):
|
demo.things (assuming you have a Bluetooth bridge with the ID `bluetooth:bluez:hci0`):
|
||||||
|
|
||||||
```
|
```java
|
||||||
bluetooth:beacon:hci0:b1 "BLE Beacon" (bluetooth:bluez:hci0) [ address="68:64:4C:14:FC:C4" ]
|
bluetooth:beacon:hci0:b1 "BLE Beacon" (bluetooth:bluez:hci0) [ address="68:64:4C:14:FC:C4" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Beacon_RSSI "My Beacon [%.0f]" { channel="bluetooth:beacon:hci0:b1:rssi" }
|
Number Beacon_RSSI "My Beacon [%.0f]" { channel="bluetooth:beacon:hci0:b1:rssi" }
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.sitemap:
|
demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu"
|
sitemap demo label="Main Menu"
|
||||||
{
|
{
|
||||||
Frame {
|
Frame {
|
||||||
|
@ -90,14 +90,14 @@ Available commands:
|
|||||||
|
|
||||||
### `bond.things` File
|
### `bond.things` File
|
||||||
|
|
||||||
```
|
```java
|
||||||
bondhome:bondBridge:BD123456 "Bond Bridge" [ ipAddress="192.168.0.10", localToken="abc123", serialNumber="BD123456" ]
|
bondhome:bondBridge:BD123456 "Bond Bridge" [ ipAddress="192.168.0.10", localToken="abc123", serialNumber="BD123456" ]
|
||||||
bondhome:bondFan:BD123456:0d11f00 "Living Room Fan" (bondhome:bondBridge:BD123456) [ deviceId="0d11f00" ]
|
bondhome:bondFan:BD123456:0d11f00 "Living Room Fan" (bondhome:bondBridge:BD123456) [ deviceId="0d11f00" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
### `bond.items` File
|
### `bond.items` File
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch GreatFan_Switch "Great Room Fan" { channel="bondhome:bondFan:BD123456:0d11f00:common#power" }
|
Switch GreatFan_Switch "Great Room Fan" { channel="bondhome:bondFan:BD123456:0d11f00:common#power" }
|
||||||
Dimmer GreatFan_Dimmer "Great Room Fan" { channel="bondhome:bondFan:BD123456:0d11f00:fan#speed" }
|
Dimmer GreatFan_Dimmer "Great Room Fan" { channel="bondhome:bondFan:BD123456:0d11f00:fan#speed" }
|
||||||
String GreatFan_Rotation "Great Room Fan Rotation" { channel="bondhome:bondFan:BD123456:0d11f00:fan#direction" }
|
String GreatFan_Rotation "Great Room Fan Rotation" { channel="bondhome:bondFan:BD123456:0d11f00:fan#direction" }
|
||||||
|
@ -6,7 +6,7 @@ His [Java Library](https://github.com/zazaz-de/iot-device-bosch-indego-controlle
|
|||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
Currently the binding supports ***indego*** mowers as a thing type with these configuration parameters:
|
Currently the binding supports _**indego**_ mowers as a thing type with these configuration parameters:
|
||||||
|
|
||||||
| Parameter | Description | Default |
|
| Parameter | Description | Default |
|
||||||
|--------------------|-------------------------------------------------------------------|---------|
|
|--------------------|-------------------------------------------------------------------|---------|
|
||||||
@ -79,13 +79,13 @@ Currently the binding supports ***indego*** mowers as a thing type with these
|
|||||||
|
|
||||||
### `indego.things` File
|
### `indego.things` File
|
||||||
|
|
||||||
```
|
```java
|
||||||
boschindego:indego:lawnmower [username="mail@example.com", password="idontneedtocutthelawnagain", refresh=120]
|
boschindego:indego:lawnmower [username="mail@example.com", password="idontneedtocutthelawnagain", refresh=120]
|
||||||
```
|
```
|
||||||
|
|
||||||
### `indego.items` File
|
### `indego.items` File
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Indego_State { channel="boschindego:indego:lawnmower:state" }
|
Number Indego_State { channel="boschindego:indego:lawnmower:state" }
|
||||||
Number Indego_ErrorCode { channel="boschindego:indego:lawnmower:errorcode" }
|
Number Indego_ErrorCode { channel="boschindego:indego:lawnmower:errorcode" }
|
||||||
Number Indego_StateCode { channel="boschindego:indego:lawnmower:statecode" }
|
Number Indego_StateCode { channel="boschindego:indego:lawnmower:statecode" }
|
||||||
@ -104,6 +104,6 @@ Image Indego_GardenMap { channel="boschindego:indego:lawnmower:gardenMap" }
|
|||||||
|
|
||||||
### `indego.sitemap` File
|
### `indego.sitemap` File
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Switch item=Indego_State mappings=[1="Mow", 2="Return",3="Pause"]
|
Switch item=Indego_State mappings=[1="Mow", 2="Return",3="Pause"]
|
||||||
```
|
```
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
To only build the Bosch Smart Home binding code execute
|
To only build the Bosch Smart Home binding code execute
|
||||||
|
|
||||||
|
```shell
|
||||||
mvn -pl :org.openhab.binding.boschshc install
|
mvn -pl :org.openhab.binding.boschshc install
|
||||||
|
```
|
||||||
|
|
||||||
## Execute
|
## Execute
|
||||||
|
|
||||||
@ -17,26 +19,37 @@ It should also be reloaded automatically when the jar changed.
|
|||||||
|
|
||||||
To reload the bundle manually you need to execute in the openhab console:
|
To reload the bundle manually you need to execute in the openhab console:
|
||||||
|
|
||||||
|
```shell
|
||||||
bundle:update "openHAB Add-ons :: Bundles :: Bosch Smart Home Binding"
|
bundle:update "openHAB Add-ons :: Bundles :: Bosch Smart Home Binding"
|
||||||
|
```
|
||||||
|
|
||||||
or get the ID and update the bundle using the ID:
|
or get the ID and update the bundle using the ID:
|
||||||
|
|
||||||
|
```shell
|
||||||
bundle:list
|
bundle:list
|
||||||
-> Get ID for "openHAB Add-ons :: Bundles :: Bosch Smart Home Binding"
|
```
|
||||||
bundle:update <ID>
|
|
||||||
|
|
||||||
|
-> Get ID for "openHAB Add-ons :: Bundles :: Bosch Smart Home Binding"
|
||||||
|
|
||||||
|
```shell
|
||||||
|
bundle:update <ID>
|
||||||
|
```
|
||||||
|
|
||||||
## Debugging
|
## Debugging
|
||||||
|
|
||||||
To get debug output and traces of the Bosch Smart Home binding code
|
To get debug output and traces of the Bosch Smart Home binding code
|
||||||
add the following lines into ``userdata/etc/log4j2.xml`` Loggers XML section.
|
add the following lines into ``userdata/etc/log4j2.xml`` Loggers XML section.
|
||||||
|
|
||||||
|
```xml
|
||||||
<!-- Bosch SHC for debugging -->
|
<!-- Bosch SHC for debugging -->
|
||||||
<Logger level="TRACE" name="org.openhab.binding.boschshc"/>
|
<Logger level="TRACE" name="org.openhab.binding.boschshc"/>
|
||||||
|
```
|
||||||
|
|
||||||
or use the openhab console to change the log level
|
or use the openhab console to change the log level
|
||||||
|
|
||||||
|
```shell
|
||||||
log:set TRACE org.openhab.binding.boschshc
|
log:set TRACE org.openhab.binding.boschshc
|
||||||
|
```
|
||||||
|
|
||||||
## Pairing and Certificates
|
## Pairing and Certificates
|
||||||
|
|
||||||
@ -47,7 +60,7 @@ Read more about the pairing process in [register a new client to the bosch smart
|
|||||||
A precondition for the secured connection to the Bosch SHC is a self singed key + certificate.
|
A precondition for the secured connection to the Bosch SHC is a self singed key + certificate.
|
||||||
The key + certificate will be created and stored with the public Bosch SHC certificates in a Java Key store (jks).
|
The key + certificate will be created and stored with the public Bosch SHC certificates in a Java Key store (jks).
|
||||||
|
|
||||||
The public certificates files are from https://github.com/BoschSmartHome/bosch-shc-api-docs/tree/master/best_practice.
|
The public certificates files are from <https://github.com/BoschSmartHome/bosch-shc-api-docs/tree/master/best_practice>.
|
||||||
File copies stored in ``src/main/resource``.
|
File copies stored in ``src/main/resource``.
|
||||||
|
|
||||||
All three certificates and the key will be used for the HTTPS connection between
|
All three certificates and the key will be used for the HTTPS connection between
|
||||||
|
@ -7,7 +7,7 @@ Binding for the Bosch Smart Home.
|
|||||||
- [In-Wall Switch](#in-wall-switch)
|
- [In-Wall Switch](#in-wall-switch)
|
||||||
- [Compact Smart Plug](#compact-smart-plug)
|
- [Compact Smart Plug](#compact-smart-plug)
|
||||||
- [Twinguard Smoke Detector](#twinguard-smoke-detector)
|
- [Twinguard Smoke Detector](#twinguard-smoke-detector)
|
||||||
- [Door/Window Contact](#door-window-contact)
|
- [Door/Window Contact](#doorwindow-contact)
|
||||||
- [Motion Detector](#motion-detector)
|
- [Motion Detector](#motion-detector)
|
||||||
- [Shutter Control](#shutter-control)
|
- [Shutter Control](#shutter-control)
|
||||||
- [Thermostat](#thermostat)
|
- [Thermostat](#thermostat)
|
||||||
@ -209,7 +209,7 @@ The system password is set by you during your initial registration steps in the
|
|||||||
A keystore file with a self-signed certificate is created automatically.
|
A keystore file with a self-signed certificate is created automatically.
|
||||||
This certificate is used for pairing between the Bridge and the Bosch Smart Home Controller.
|
This certificate is used for pairing between the Bridge and the Bosch Smart Home Controller.
|
||||||
|
|
||||||
*Press and hold the Bosch Smart Home Controller Bridge button until the LED starts blinking after you save your settings for pairing*.
|
_Press and hold the Bosch Smart Home Controller Bridge button until the LED starts blinking after you save your settings for pairing_.
|
||||||
|
|
||||||
## Getting the device IDs
|
## Getting the device IDs
|
||||||
|
|
||||||
@ -217,15 +217,15 @@ Bosch IDs for found devices are displayed in the openHAB log on bootup (`OPENHAB
|
|||||||
|
|
||||||
The log can also be called using the following command.
|
The log can also be called using the following command.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
tail -f /var/log/openhab/openhab.log /var/log/openhab/events.log
|
tail -f /var/log/openhab/openhab.log /var/log/openhab/events.log
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, the log can be viewed using the OpenHab Log Viewer (frontail) via http://openhab:9001.
|
Alternatively, the log can be viewed using the OpenHab Log Viewer (frontail) via <http://openhab:9001>.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
2020-08-11 12:42:49.490 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=Heizung id=hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX
|
2020-08-11 12:42:49.490 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=Heizung id=hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX
|
||||||
2020-08-11 12:42:49.495 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=-RoomClimateControl- id=roomClimateControl_hz_1
|
2020-08-11 12:42:49.495 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=-RoomClimateControl- id=roomClimateControl_hz_1
|
||||||
2020-08-11 12:42:49.497 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=-VentilationService- id=ventilationService
|
2020-08-11 12:42:49.497 [INFO ] [chshc.internal.BoschSHCBridgeHandler] - Found device: name=-VentilationService- id=ventilationService
|
||||||
@ -245,7 +245,7 @@ Example:
|
|||||||
|
|
||||||
You define your Bosch devices by adding them either to a `.things` file in your `$OPENHAB_CONF/things` folder like this:
|
You define your Bosch devices by adding them either to a `.things` file in your `$OPENHAB_CONF/things` folder like this:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge boschshc:shc:1 [ ipAddress="192.168.x.y", password="XXXXXXXXXX" ] {
|
Bridge boschshc:shc:1 [ ipAddress="192.168.x.y", password="XXXXXXXXXX" ] {
|
||||||
Thing in-wall-switch bathroom "Bathroom" [ id="hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX" ]
|
Thing in-wall-switch bathroom "Bathroom" [ id="hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX" ]
|
||||||
Thing in-wall-switch bedroom "Bedroom" [ id="hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX" ]
|
Thing in-wall-switch bedroom "Bedroom" [ id="hdm:HomeMaticIP:3014F711A000XXXXXXXXXXXX" ]
|
||||||
@ -269,7 +269,7 @@ Or by adding them via UI: Settings -> Things -> "+" -> Bosch Smart Home Binding.
|
|||||||
|
|
||||||
You define the items which should be linked to your Bosch devices via a `.items` file in your `$OPENHAB_CONF/items` folder like this:
|
You define the items which should be linked to your Bosch devices via a `.items` file in your `$OPENHAB_CONF/items` folder like this:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Bosch_Bathroom "Bath Room" { channel="boschshc:in-wall-switch:1:bathroom:power-switch" }
|
Switch Bosch_Bathroom "Bath Room" { channel="boschshc:in-wall-switch:1:bathroom:power-switch" }
|
||||||
Switch Bosch_Bedroom "Bed Room" { channel="boschshc:in-wall-switch:1:bedroom:power-switch" }
|
Switch Bosch_Bedroom "Bed Room" { channel="boschshc:in-wall-switch:1:bedroom:power-switch" }
|
||||||
Switch Bosch_Kitchen "Kitchen" { channel="boschshc:in-wall-switch:1:kitchen:power-switch" }
|
Switch Bosch_Kitchen "Kitchen" { channel="boschshc:in-wall-switch:1:kitchen:power-switch" }
|
||||||
|
@ -69,8 +69,7 @@ All devices share the same set of channels, while some of them might not be avai
|
|||||||
| volume | Dimmer | Set or get the volume |
|
| volume | Dimmer | Set or get the volume |
|
||||||
| bass | Number | Bass (-9 minimum, 0 maximum) |
|
| bass | Number | Bass (-9 minimum, 0 maximum) |
|
||||||
|
|
||||||
|
The _notificationsound_ channel has the following optional configuration parameters:
|
||||||
The *notificationsound* channel has the following optional configuration parameters:
|
|
||||||
|
|
||||||
- notificationVolume - Desired volume level while playing the notification, it must be between 10 and 70 (inclusive). A value outside this range will result in an error and not play the notification.
|
- notificationVolume - Desired volume level while playing the notification, it must be between 10 and 70 (inclusive). A value outside this range will result in an error and not play the notification.
|
||||||
- notificationService - The service providing the notification
|
- notificationService - The service providing the notification
|
||||||
@ -84,13 +83,13 @@ Upon completion of the notification, the speaker volume returns to its original
|
|||||||
|
|
||||||
Things:
|
Things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
bosesoundtouch:device:demo @ "Living" [ host="192.168.1.2", macAddress="123456789ABC" ]
|
bosesoundtouch:device:demo @ "Living" [ host="192.168.1.2", macAddress="123456789ABC" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Items:
|
Items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Bose1_Power "Power: [%s]" <switch> { channel="bosesoundtouch:device:demo:power" }
|
Switch Bose1_Power "Power: [%s]" <switch> { channel="bosesoundtouch:device:demo:power" }
|
||||||
Dimmer Bose1_Volume "Volume: [%d %%]" <volume> { channel="bosesoundtouch:device:demo:volume" }
|
Dimmer Bose1_Volume "Volume: [%d %%]" <volume> { channel="bosesoundtouch:device:demo:volume" }
|
||||||
Number Bose1_Bass "Bass: [%d %%]" <volume> { channel="bosesoundtouch:device:demo:bass" }
|
Number Bose1_Bass "Bass: [%d %%]" <volume> { channel="bosesoundtouch:device:demo:bass" }
|
||||||
@ -116,7 +115,7 @@ String Bose1_nowPlayingTrack "Track: [%s]" <text> {
|
|||||||
|
|
||||||
Sitemap:
|
Sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Bose Test Items"
|
sitemap demo label="Bose Test Items"
|
||||||
{
|
{
|
||||||
Frame label="Bose 1" {
|
Frame label="Bose 1" {
|
||||||
|
@ -5,7 +5,7 @@ As the binding uses the [broadlink-java-api](https://github.com/mob41/broadlink-
|
|||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
*Note:* So far only the Floureon Thermostat and Rm Mini 3 devices has been tested! The other things are "best guess" implementations.
|
_Note:_ So far only the Floureon Thermostat and Rm Mini 3 devices has been tested! The other things are "best guess" implementations.
|
||||||
|
|
||||||
| Things | Description | Thing Type |
|
| Things | Description | Thing Type |
|
||||||
|-------------------------|---------------------------------------------------------------------|----------------------|
|
|-------------------------|---------------------------------------------------------------------|----------------------|
|
||||||
@ -56,13 +56,13 @@ The autodiscovery process finds both parts automatically.
|
|||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing broadlinkthermostat:floureonthermostat:bathroomthermostat "Bathroom Thermostat" [ host="192.168.0.23", macAddress="00:10:FA:6E:38:4A"]
|
Thing broadlinkthermostat:floureonthermostat:bathroomthermostat "Bathroom Thermostat" [ host="192.168.0.23", macAddress="00:10:FA:6E:38:4A"]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature Bathroom_Thermostat_Temperature "Room temperature [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:roomtemperature"}
|
Number:Temperature Bathroom_Thermostat_Temperature "Room temperature [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:roomtemperature"}
|
||||||
Number:Temperature Bathroom_Thermostat_Temperature_Ext "Room temperature (ext) [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:roomtemperature"}
|
Number:Temperature Bathroom_Thermostat_Temperature_Ext "Room temperature (ext) [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:roomtemperature"}
|
||||||
Number:Temperature Bathroom_Thermostat_Setpoint "Setpoint [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:setpoint"}
|
Number:Temperature Bathroom_Thermostat_Setpoint "Setpoint [%.1f %unit%]" <temperature> { channel="broadlinkthermostat:floureonthermostat:bathroomthermostat:setpoint"}
|
||||||
|
@ -60,7 +60,7 @@ Note: If you would also like to use the binding to set parameter values, ensure
|
|||||||
|
|
||||||
bsblan.things:
|
bsblan.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bsblan:bridge:heating [host="192.168.1.100", refreshInterval=30, username="atari", password="800xl"] {
|
Bridge bsblan:bridge:heating [host="192.168.1.100", refreshInterval=30, username="atari", password="800xl"] {
|
||||||
Thing parameter p700 [id=700]
|
Thing parameter p700 [id=700]
|
||||||
Thing parameter p710 [id=710]
|
Thing parameter p710 [id=710]
|
||||||
@ -70,7 +70,7 @@ Bridge bsblan:bridge:heating [host="192.168.1.100", refreshInterval=30, username
|
|||||||
|
|
||||||
bsblan.items:
|
bsblan.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number BsbParameter700NumberValue { channel="bsblan:parameter:heating:p700:number-value" }
|
Number BsbParameter700NumberValue { channel="bsblan:parameter:heating:p700:number-value" }
|
||||||
Number BsbParameter710NumberValue { channel="bsblan:parameter:heating:p710:number-value" }
|
Number BsbParameter710NumberValue { channel="bsblan:parameter:heating:p710:number-value" }
|
||||||
String BsbParameter8730Description { channel="bsblan:parameter:heating:p8730:description" }
|
String BsbParameter8730Description { channel="bsblan:parameter:heating:p8730:description" }
|
||||||
@ -78,7 +78,7 @@ String BsbParameter8730Description { channel="bsblan:parameter:heating:p8730:des
|
|||||||
|
|
||||||
bsblan.sitemap:
|
bsblan.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap bsblan label="BSB-LAN" {
|
sitemap bsblan label="BSB-LAN" {
|
||||||
Selection item=BsbParameter700NumberValue label="Operating Mode" mappings=[0="Protection", 1="Automatic", 2="Reduced", 3="Comfort"] icon="heating"
|
Selection item=BsbParameter700NumberValue label="Operating Mode" mappings=[0="Protection", 1="Automatic", 2="Reduced", 3="Comfort"] icon="heating"
|
||||||
Setpoint item=BsbParameter710NumberValue label="Room Temperature Comfort Setpoint [%.1f °C]" icon="temperature" minValue=22.0 maxValue=25.0 step=0.5
|
Setpoint item=BsbParameter710NumberValue label="Room Temperature Comfort Setpoint [%.1f °C]" icon="temperature" minValue=22.0 maxValue=25.0 step=0.5
|
||||||
|
@ -8,8 +8,8 @@ Smarther chronothermostat is produced by [BTicino](https://www.bticino.com/produ
|
|||||||
|
|
||||||
All BTicino Smarther Chronothermostat device models should be discoverable through this binding:
|
All BTicino Smarther Chronothermostat device models should be discoverable through this binding:
|
||||||
|
|
||||||
* Flush mounting installation item (X8000)
|
- Flush mounting installation item (X8000)
|
||||||
* Wall installation item (X8000W)
|
- Wall installation item (X8000W)
|
||||||
|
|
||||||
If you can control them from BTicino Thermostat mobile app on your iPhone/Android you should be able to add it as a thing.
|
If you can control them from BTicino Thermostat mobile app on your iPhone/Android you should be able to add it as a thing.
|
||||||
|
|
||||||
@ -54,8 +54,8 @@ The following configuration options are available on the BTicino Smarther Chrono
|
|||||||
|
|
||||||
Follow the instructions in the tutorial [here](https://developer.legrand.com/tutorials/getting-started/), under:
|
Follow the instructions in the tutorial [here](https://developer.legrand.com/tutorials/getting-started/), under:
|
||||||
|
|
||||||
* Step 1 : Create an account
|
- Step 1 : Create an account
|
||||||
* Step 2 : Subscribe to a product and get subscription key
|
- Step 2 : Subscribe to a product and get subscription key
|
||||||
|
|
||||||
There's also a Step 3 in this tutorial, you can skip it as not needed to complete this process.
|
There's also a Step 3 in this tutorial, you can skip it as not needed to complete this process.
|
||||||
Simply write down your "Primary Key" as it will be needed later on in the bridge configuration phase.
|
Simply write down your "Primary Key" as it will be needed later on in the bridge configuration phase.
|
||||||
@ -64,14 +64,14 @@ Simply write down your "Primary Key" as it will be needed later on in the bridge
|
|||||||
|
|
||||||
Follow the instructions in the tutorial [here](https://developer.legrand.com/tutorials/create-an-application/), under:
|
Follow the instructions in the tutorial [here](https://developer.legrand.com/tutorials/create-an-application/), under:
|
||||||
|
|
||||||
* Step 1 : Register your application
|
- Step 1 : Register your application
|
||||||
* Step 2 : Check scopes
|
- Step 2 : Check scopes
|
||||||
* Step 3 : Getting application details
|
- Step 3 : Getting application details
|
||||||
|
|
||||||
When registering your new Legrand Application for openHAB BTicino Smarther Bridge you have to specify the allowed Reply URL, aka white-listed address.
|
When registering your new Legrand Application for openHAB BTicino Smarther Bridge you have to specify the allowed Reply URL, aka white-listed address.
|
||||||
Here you have to specify the URL to the Bridge Authorization page on your server.
|
Here you have to specify the URL to the Bridge Authorization page on your server.
|
||||||
|
|
||||||
For example if you run your openHAB server on http://openhabianpi:8080 you should set `http://openhabianpi:8080/bticinosmarther/connectsmarther` as the "First Reply URL" required field in Step 1.
|
For example if you run your openHAB server on `http://openhabianpi:8080` you should set `http://openhabianpi:8080/bticinosmarther/connectsmarther` as the "First Reply URL" required field in Step 1.
|
||||||
Other Reply URLs (second, third, etc.) you can leave them blank.
|
Other Reply URLs (second, third, etc.) you can leave them blank.
|
||||||
|
|
||||||
This is **very important** since the authorize process with Legrand takes place using your client web browser and Legrand will have to know the right URL to your openHAB server for the authorization to be completed.
|
This is **very important** since the authorize process with Legrand takes place using your client web browser and Legrand will have to know the right URL to your openHAB server for the authorization to be completed.
|
||||||
@ -92,19 +92,19 @@ If you want to later receive push notifications (device status) from Legrand for
|
|||||||
### Bridge Configuration
|
### Bridge Configuration
|
||||||
|
|
||||||
1. Install the binding and make sure the _BTicino Smarther Binding_ is listed on your server, if you have not already done so.
|
1. Install the binding and make sure the _BTicino Smarther Binding_ is listed on your server, if you have not already done so.
|
||||||
2. Complete the [Account Creation](#account-creation) and [Application Creation](#application-creation) steps, if you have not already done so.
|
1. Complete the [Account Creation](#account-creation) and [Application Creation](#application-creation) steps, if you have not already done so.
|
||||||
3. Make sure you have your Legrand account _Primary Key_ and your Legrand application _Client ID_ and _Client Secret_ identities available.
|
1. Make sure you have your Legrand account _Primary Key_ and your Legrand application _Client ID_ and _Client Secret_ identities available.
|
||||||
4. Go to your preferred openHAB admin UI and add a new Thing - select the **"BTicino Smarther Bridge"**.
|
1. Go to your preferred openHAB admin UI and add a new Thing - select the **"BTicino Smarther Bridge"**.
|
||||||
5. Choose new Id for the bridge, unless you like the generated one.
|
1. Choose new Id for the bridge, unless you like the generated one.
|
||||||
6. Put in your _Primary Key_ (in _Subscription Key_ field), _Client ID_ and _Cliend Secret_ in their respective fields of the bridge configuration.
|
1. Put in your _Primary Key_ (in _Subscription Key_ field), _Client ID_ and _Cliend Secret_ in their respective fields of the bridge configuration.
|
||||||
7. Set _Use Notifications_ to `ON` if your openHAB server is reachable from a public https URL (see [Note on notifications](#note-on-notifications)), set `OFF` otherwise.
|
1. Set _Use Notifications_ to `ON` if your openHAB server is reachable from a public https URL (see [Note on notifications](#note-on-notifications)), set `OFF` otherwise.
|
||||||
8. You can leave the _Bridge Status Refresh Period_ as is.
|
1. You can leave the _Bridge Status Refresh Period_ as is.
|
||||||
9. Save the bridge.
|
1. Save the bridge.
|
||||||
10. The bridge thing will stay in state _INITIALIZING_ and eventually go _OFFLINE_ - this is fine, as you now have to authorize this bridge with Legrand.
|
1. The bridge thing will stay in state _INITIALIZING_ and eventually go _OFFLINE_ - this is fine, as you now have to authorize this bridge with Legrand.
|
||||||
11. Go to the authorization page of your server (see [Application Creation](#application-creation)) `http://<your openHAB address>:<your openHAB port>/bticinosmarther/connectsmarther`; your newly added bridge should be listed there (along with the available locations).
|
1. Go to the authorization page of your server (see [Application Creation](#application-creation)) `http://<your openHAB address>:<your openHAB port>/bticinosmarther/connectsmarther`; your newly added bridge should be listed there (along with the available locations).
|
||||||
12. Press the _"Authorize Bridge"_ button; this will take you either to the login page of Legrand portal or directly to the authorization screen.
|
1. Press the _"Authorize Bridge"_ button; this will take you either to the login page of Legrand portal or directly to the authorization screen.
|
||||||
13. Login and/or authorize the application; if the Reply URL is correct you will be returned and the entry should show your bridge is authorized with your Client ID; otherwise, go back to your application configuration on Legrand portal and ensure you have set the right Reply URL (see [Troubleshooting](#troubleshooting) below).
|
1. Login and/or authorize the application; if the Reply URL is correct you will be returned and the entry should show your bridge is authorized with your Client ID; otherwise, go back to your application configuration on Legrand portal and ensure you have set the right Reply URL (see [Troubleshooting](#troubleshooting) below).
|
||||||
14. The bridge will be updated with a refresh token and go _ONLINE_ (the refresh token is used to re-authorize the bridge with Legrand Smarther API whenever required).
|
1. The bridge will be updated with a refresh token and go _ONLINE_ (the refresh token is used to re-authorize the bridge with Legrand Smarther API whenever required).
|
||||||
|
|
||||||
![Tutorial 1](doc/images/tutorial-1.png)
|
![Tutorial 1](doc/images/tutorial-1.png)
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ You can force reinitialization by authorizing again on the `/bticinosmarther/con
|
|||||||
|
|
||||||
When configuring the bridge (see step 13 [here](#thing-configuration)), you can receive the following error from Legrand portal:
|
When configuring the bridge (see step 13 [here](#thing-configuration)), you can receive the following error from Legrand portal:
|
||||||
|
|
||||||
```
|
```json
|
||||||
{
|
{
|
||||||
"error": "invalid_request",
|
"error": "invalid_request",
|
||||||
"error_description": "The reply url host xxxxx doesn't match with the ones configured on the application"
|
"error_description": "The reply url host xxxxx doesn't match with the ones configured on the application"
|
||||||
@ -136,8 +136,8 @@ Please remember these two strings must match for authentication process to work.
|
|||||||
|
|
||||||
To solve the issue, either:
|
To solve the issue, either:
|
||||||
|
|
||||||
* Correct the address you're accessing the `/bticinosmarther/connectsmarther` page from, to match the "Reply URL" attribute registered in your application, or
|
- Correct the address you're accessing the `/bticinosmarther/connectsmarther` page from, to match the "Reply URL" attribute registered in your application, or
|
||||||
* Should you have specified a wrong "Reply URL" attribute in your application, go to the Legrand portal and correct it accordingly then resubmit the application for approval.
|
- Should you have specified a wrong "Reply URL" attribute in your application, go to the Legrand portal and correct it accordingly then resubmit the application for approval.
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ In this example there is a bridge configured with Thing ID **mybridge**:
|
|||||||
|
|
||||||
bticinosmarther.things:
|
bticinosmarther.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge bticinosmarther:bridge:mybridge "BTicino Smarther Bridge" [subscriptionKey="<your primary key>" clientId="<your client id>", clientSecret="<your client secret>"] {
|
Bridge bticinosmarther:bridge:mybridge "BTicino Smarther Bridge" [subscriptionKey="<your primary key>" clientId="<your client id>", clientSecret="<your client secret>"] {
|
||||||
Thing module thermo1 "Thermo 1" [plantId="<location plant id>" moduleId="<chronothermostat module id>"]
|
Thing module thermo1 "Thermo 1" [plantId="<location plant id>" moduleId="<chronothermostat module id>"]
|
||||||
Thing module thermo2 "Thermo 2" [plantId="<location plant id>" moduleId="<chronothermostat module id>"]
|
Thing module thermo2 "Thermo 2" [plantId="<location plant id>" moduleId="<chronothermostat module id>"]
|
||||||
@ -229,7 +229,7 @@ Bridge bticinosmarther:bridge:mybridge "BTicino Smarther Bridge" [subscriptionKe
|
|||||||
|
|
||||||
bticinosmarther.items:
|
bticinosmarther.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// Measures items
|
// Measures items
|
||||||
Number:Temperature smaTemperature "In Temperature [%.1f %unit%]" { channel="bticinosmarther:module:mybridge:thermo1:measures#temperature" }
|
Number:Temperature smaTemperature "In Temperature [%.1f %unit%]" { channel="bticinosmarther:module:mybridge:thermo1:measures#temperature" }
|
||||||
Number:Dimensionless smaHumidity "In Humidity [%.1f %unit%]" { channel="bticinosmarther:module:mybridge:thermo1:measures#humidity" }
|
Number:Dimensionless smaHumidity "In Humidity [%.1f %unit%]" { channel="bticinosmarther:module:mybridge:thermo1:measures#humidity" }
|
||||||
@ -257,7 +257,7 @@ Switch smaDisplayTime
|
|||||||
|
|
||||||
bticinosmarther.sitemap:
|
bticinosmarther.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap bticinosmarther label="BTicino Smarther Sitemap" {
|
sitemap bticinosmarther label="BTicino Smarther Sitemap" {
|
||||||
|
|
||||||
Frame label="Smarther Measures" {
|
Frame label="Smarther Measures" {
|
||||||
@ -288,7 +288,7 @@ sitemap bticinosmarther label="BTicino Smarther Sitemap" {
|
|||||||
|
|
||||||
bticinosmarther.rules:
|
bticinosmarther.rules:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "BTicino Smarther - Set time visibility flag"
|
rule "BTicino Smarther - Set time visibility flag"
|
||||||
when
|
when
|
||||||
Item smaSetMode received update or Item smaSetDate received update
|
Item smaSetMode received update or Item smaSetDate received update
|
||||||
@ -309,9 +309,9 @@ All devices (chronothermostats modules) currently associated with the user accou
|
|||||||
|
|
||||||
Legrand/BTicino Smarther topology considers the following dimensions:
|
Legrand/BTicino Smarther topology considers the following dimensions:
|
||||||
|
|
||||||
* topology : is the whole network of devices associated with a user account
|
- topology : is the whole network of devices associated with a user account
|
||||||
* plant : is the location where a module is installed (0..N plants per topology)
|
- plant : is the location where a module is installed (0..N plants per topology)
|
||||||
* module : is the chronothermostat installed in a location (0..N modules per location)
|
- module : is the chronothermostat installed in a location (0..N modules per location)
|
||||||
|
|
||||||
You can add multiple bridges to allow controlling devices in the context of multiple Legrand user accounts.
|
You can add multiple bridges to allow controlling devices in the context of multiple Legrand user accounts.
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
# Buienradar Binding
|
# Buienradar Binding
|
||||||
|
|
||||||
The Buienradar Binding periodically (5 minute intervals) retrieves rainfall predictions from the Dutch
|
The Buienradar Binding periodically (5 minute intervals) retrieves rainfall predictions from the Dutch [buienradar.nl webservice API.](https://www.buienradar.nl/overbuienradar/gratis-weerdata).
|
||||||
[buienradar.nl webservice API.](https://www.buienradar.nl/overbuienradar/gratis-weerdata).
|
|
||||||
|
|
||||||
Using the binding, we can
|
Using the binding, we can
|
||||||
|
|
||||||
* warn of upcoming rainfall when there are open windows or doors
|
- warn of upcoming rainfall when there are open windows or doors
|
||||||
* prevent watering the outside plants needlessly,
|
- prevent watering the outside plants needlessly,
|
||||||
* warn when we are about to leave the house.
|
- warn when we are about to leave the house.
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
@ -21,13 +20,13 @@ No auto-discovery is currently possible.
|
|||||||
|
|
||||||
The configuration can be done by adding a Rain Forecast Thing using the UI, or by adding it to a `.things` file:
|
The configuration can be done by adding a Rain Forecast Thing using the UI, or by adding it to a `.things` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing buienradar:rain_forecast:home [ location="52.198864211111925,5.4192629660193585" ]
|
Thing buienradar:rain_forecast:home [ location="52.198864211111925,5.4192629660193585" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
and adding the relevant items as such in your `.items` file. Please note that the buienradar service only provides predictions in 5 minutes intervals with a maximum of two hours (120 minutes):
|
and adding the relevant items as such in your `.items` file. Please note that the buienradar service only provides predictions in 5 minutes intervals with a maximum of two hours (120 minutes):
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number RAIN_CURRENT "Current rain" (Rain) {channel="buienradar:rain_forecast:home:forecast_0" }
|
Number RAIN_CURRENT "Current rain" (Rain) {channel="buienradar:rain_forecast:home:forecast_0" }
|
||||||
Number RAIN_5MIN "Rain 5 min." (Rain) {channel="buienradar:rain_forecast:home:forecast_5" }
|
Number RAIN_5MIN "Rain 5 min." (Rain) {channel="buienradar:rain_forecast:home:forecast_5" }
|
||||||
Number RAIN_10MIN "Rain 10 min." (Rain) {channel="buienradar:rain_forecast:home:forecast_10" }
|
Number RAIN_10MIN "Rain 10 min." (Rain) {channel="buienradar:rain_forecast:home:forecast_10" }
|
||||||
@ -63,12 +62,10 @@ In this example we use the 'Discrete' plugin of Grafana to visualize the predict
|
|||||||
|
|
||||||
The mappings are as follows:
|
The mappings are as follows:
|
||||||
|
|
||||||
* 0 – 0.01: None (rgba(204, 204, 204, 0))
|
- 0 – 0.01: None (rgba(204, 204, 204, 0))
|
||||||
* 0.01 – 1: Very light (#badff4)
|
- 0.01 – 1: Very light (#badff4)
|
||||||
* 1 – 5: Light (#6ed0e0)
|
- 1 – 5: Light (#6ed0e0)
|
||||||
* 5 – 20: Medium (#1f78c1)
|
- 5 – 20: Medium (#1f78c1)
|
||||||
* 20 – 50: Heavy (#ef843c)
|
- 20 – 50: Heavy (#ef843c)
|
||||||
* 50 – 80: Very heavy (#e24d42)
|
- 50 – 80: Very heavy (#e24d42)
|
||||||
* 80 – 100: Extremely heavy (#890f02)
|
- 80 – 100: Extremely heavy (#890f02)
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ The binding supports the following actions on the respective things.
|
|||||||
|
|
||||||
The following is an example of a things file (caddx.things):
|
The following is an example of a things file (caddx.things):
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge caddx:bridge:thebridge "Bridge" [ protocol="Binary", serialPort="/dev/ttyUSB0", baud=38400, maxZoneNumber=18 ] {
|
Bridge caddx:bridge:thebridge "Bridge" [ protocol="Binary", serialPort="/dev/ttyUSB0", baud=38400, maxZoneNumber=18 ] {
|
||||||
Thing partition partition1 "Groundfloor alarm" [ partitionNumber=1 ]
|
Thing partition partition1 "Groundfloor alarm" [ partitionNumber=1 ]
|
||||||
Thing zone zone1 "Livingroom motion sensor" [ zoneNumber=1 ]
|
Thing zone zone1 "Livingroom motion sensor" [ zoneNumber=1 ]
|
||||||
@ -295,7 +295,7 @@ Bridge caddx:bridge:thebridge "Bridge" [ protocol="Binary", s
|
|||||||
|
|
||||||
The following is an example of an items file (caddx.items):
|
The following is an example of an items file (caddx.items):
|
||||||
|
|
||||||
```
|
```java
|
||||||
Group:Contact:OR(OPEN,CLOSED) MotionSensors "Motion Sensors [%s]" <motion>
|
Group:Contact:OR(OPEN,CLOSED) MotionSensors "Motion Sensors [%s]" <motion>
|
||||||
Group:Contact:OR(OPEN,CLOSED) Windows "Windows open [%s]" <window>
|
Group:Contact:OR(OPEN,CLOSED) Windows "Windows open [%s]" <window>
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ Switch Partition1_EntryGuard "Entry Guard [%s]" <groundfloor> { channe
|
|||||||
|
|
||||||
The following is an example of a sitemap file (home.sitemap):
|
The following is an example of a sitemap file (home.sitemap):
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap home label="Home" {
|
sitemap home label="Home" {
|
||||||
Frame label="Ground floor" {
|
Frame label="Ground floor" {
|
||||||
Text item=Partition1_Armed
|
Text item=Partition1_Armed
|
||||||
@ -337,7 +337,7 @@ sitemap home label="Home" {
|
|||||||
|
|
||||||
The following is a rule example with calling of an action on the binding
|
The following is a rule example with calling of an action on the binding
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Zone Bypass on Chime Off"
|
rule "Zone Bypass on Chime Off"
|
||||||
when
|
when
|
||||||
Item caddx_partition_thebridge_partition1_partition_chime_mode_on changed from ON to OFF
|
Item caddx_partition_thebridge_partition1_partition_chime_mode_on changed from ON to OFF
|
||||||
|
@ -15,7 +15,6 @@ Without that they will remain on the last value set and wont match what is shown
|
|||||||
First the CGate Connection bridge needs to be configured with the ip address of the computer running the C-Gate software.
|
First the CGate Connection bridge needs to be configured with the ip address of the computer running the C-Gate software.
|
||||||
After this a Bridge is creaed for each network configured on the CBus Network. The CBus Project Name and the network Id for that network
|
After this a Bridge is creaed for each network configured on the CBus Network. The CBus Project Name and the network Id for that network
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
This binding support 6 different things types
|
This binding support 6 different things types
|
||||||
@ -40,32 +39,32 @@ It is not possible to fetch the value of a Trigger Group so those values will on
|
|||||||
|
|
||||||
Light things have 2 channels which show the current state of the group on the cbus network and can also set the state of the group:-
|
Light things have 2 channels which show the current state of the group on the cbus network and can also set the state of the group:-
|
||||||
|
|
||||||
* **state** - On/Off state of the light
|
- **state** - On/Off state of the light
|
||||||
* **level** - The level of the channel between 0 and 100
|
- **level** - The level of the channel between 0 and 100
|
||||||
|
|
||||||
### Temperature
|
### Temperature
|
||||||
|
|
||||||
Temperature things have 1 channel which shows the current value. This is read-only and will not set the value on the CBus Network.
|
Temperature things have 1 channel which shows the current value. This is read-only and will not set the value on the CBus Network.
|
||||||
|
|
||||||
* **temp** - Temperature value
|
- **temp** - Temperature value
|
||||||
|
|
||||||
### Trigger
|
### Trigger
|
||||||
|
|
||||||
Trigger things have 1 channel which shows the current trigger value on the cbus network and can be used to set a trigger value on the CBus Network.
|
Trigger things have 1 channel which shows the current trigger value on the cbus network and can be used to set a trigger value on the CBus Network.
|
||||||
|
|
||||||
* **value** - CBus Trigger value
|
- **value** - CBus Trigger value
|
||||||
|
|
||||||
### Dali
|
### Dali
|
||||||
|
|
||||||
Dali things have 1 channel which shows the current value on the cbus network and can be used to set a value on the CBus Network.
|
Dali things have 1 channel which shows the current value on the cbus network and can be used to set a value on the CBus Network.
|
||||||
|
|
||||||
* **level** - Value from the DALI node
|
- **level** - Value from the DALI node
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
### cbus.things
|
### cbus.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
|
|
||||||
/* Need a cgate bridge to connect to cgate and then 1 network bridge for each network on that system */
|
/* Need a cgate bridge to connect to cgate and then 1 network bridge for each network on that system */
|
||||||
Bridge cbus:cgate:cgatenetwork "file - cgate" [ ipAddress="127.0.0.1"] {
|
Bridge cbus:cgate:cgatenetwork "file - cgate" [ ipAddress="127.0.0.1"] {
|
||||||
@ -84,7 +83,7 @@ Thing cbus:dali:cgatenetwork:cbusnetwork:dali3 "dali 3 value" (cbus:network:cgat
|
|||||||
|
|
||||||
### cbus.items
|
### cbus.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Dimmer light31Dimmer { channel="cbus:light:cgatenetwork:cbusnetwork:light31:level"}
|
Dimmer light31Dimmer { channel="cbus:light:cgatenetwork:cbusnetwork:light31:level"}
|
||||||
Switch light31Switch { channel="cbus:light:cgatenetwork:cbusnetwork:light31:state"}
|
Switch light31Switch { channel="cbus:light:cgatenetwork:cbusnetwork:light31:state"}
|
||||||
Number trigger1Value { channel="cbus:trigger:cgatenetwork:cbusnetwork:trigger1:value"}
|
Number trigger1Value { channel="cbus:trigger:cgatenetwork:cbusnetwork:trigger1:value"}
|
||||||
@ -94,7 +93,7 @@ Dimmer dali3 { channel="cbus:dali:cgatenetwork:cbusnetwork:dali3:level"}
|
|||||||
|
|
||||||
### cbusdemo.sitemap
|
### cbusdemo.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap cbusdemo label="CBus Binding Demo"
|
sitemap cbusdemo label="CBus Binding Demo"
|
||||||
{
|
{
|
||||||
Frame label="light" {
|
Frame label="light" {
|
||||||
|
@ -15,8 +15,8 @@ This can be configured on the binding level:
|
|||||||
|
|
||||||
Configure a Callback URL when the Chromecast cannot connect using the Primary Address or Port, e.g. when:
|
Configure a Callback URL when the Chromecast cannot connect using the Primary Address or Port, e.g. when:
|
||||||
|
|
||||||
* proxying HTTP (port 80/443) using Apache/NGINX to openHAB (port 8080)
|
- proxying HTTP (port 80/443) using Apache/NGINX to openHAB (port 8080)
|
||||||
* openHAB is running inside a Docker container that has its own IP Address
|
- openHAB is running inside a Docker container that has its own IP Address
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ No authentication is required for accessing the devices on the network.
|
|||||||
Auto-discovery is enabled by default.
|
Auto-discovery is enabled by default.
|
||||||
To disable it, you can add the following line to `<openHAB-conf>/services/runtime.cfg`:
|
To disable it, you can add the following line to `<openHAB-conf>/services/runtime.cfg`:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
discovery.chromecast:background=false
|
discovery.chromecast:background=false
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -155,14 +155,13 @@ sitemap chromecast label="Chromecasts" {
|
|||||||
|
|
||||||
This binding includes rule actions for casting media.
|
This binding includes rule actions for casting media.
|
||||||
|
|
||||||
* `playURL(String url)`
|
- `playURL(String url)`
|
||||||
* `playURL(String url, String mimeType)`
|
- `playURL(String url, String mimeType)`
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```
|
```java
|
||||||
val castActions = getActions("chromecast","chromecast:chromecast:29fcf535da")
|
val castActions = getActions("chromecast","chromecast:chromecast:29fcf535da")
|
||||||
val success = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg")
|
val success = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg")
|
||||||
val success2 = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg", "image/jpeg")
|
val success2 = castActions.playURL("http://192.168.1.160:81/mjpg/front1/video.mjpg", "image/jpeg")
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -64,9 +64,9 @@ Each attached thing must specify the `houseUnitCode` set in the device (i.e. A1)
|
|||||||
| switch | switchState | Switch | An On/Off switch |
|
| switch | switchState | Switch | An On/Off switch |
|
||||||
| dimmer | lightDimmer | Dimmer | A dimmable device |
|
| dimmer | lightDimmer | Dimmer | A dimmable device |
|
||||||
|
|
||||||
**Example**
|
### Example
|
||||||
|
|
||||||
### Things
|
#### Things
|
||||||
|
|
||||||
```perl
|
```perl
|
||||||
Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
|
Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
|
||||||
@ -75,7 +75,7 @@ Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Items
|
#### Items
|
||||||
|
|
||||||
```java
|
```java
|
||||||
SwitchA1 "Kitchen Plug" <light> (someGroup) { channel="cm11a:switch:MyCm11a:SwitchA1:switchstatus" }
|
SwitchA1 "Kitchen Plug" <light> (someGroup) { channel="cm11a:switch:MyCm11a:SwitchA1:switchstatus" }
|
||||||
@ -85,10 +85,10 @@ DimmerA2 "Porch lights" <slider> (someGroup) { channel="cm11a:dimmer:MyCm11a
|
|||||||
## Known issues
|
## Known issues
|
||||||
|
|
||||||
1. When openHAB starts up it doesn't restore the last state of each module. And, the cm11a does not provide a discovery service. Therefore it assumes everything off.
|
1. When openHAB starts up it doesn't restore the last state of each module. And, the cm11a does not provide a discovery service. Therefore it assumes everything off.
|
||||||
2. The dimmer slider can get out of sync with the actual light because of the way X10 works. On some switches if you turn them on they will go to full bright and some switches will return to the previous dim level.
|
1. The dimmer slider can get out of sync with the actual light because of the way X10 works. On some switches if you turn them on they will go to full bright and some switches will return to the previous dim level.
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
1. [CM11A (X10) Protocol Document](https://wanderingsamurai.net/electronics/cm11a-x10-protocol-document)
|
1. [CM11A (X10) Protocol Document](https://wanderingsamurai.net/electronics/cm11a-x10-protocol-document)
|
||||||
2. [Heyu - control software for the cm11a](https://www.heyu.org/)
|
1. [Heyu - control software for the cm11a](https://www.heyu.org/)
|
||||||
3. cm11a Controllers are available for purchase from several sites on the internet
|
1. cm11a Controllers are available for purchase from several sites on the internet
|
||||||
|
@ -6,30 +6,30 @@ It was also successfully tested on a Wernig G90-160.
|
|||||||
|
|
||||||
**NOTE:** This binding does not work with the ComfoAir Q-series (e.g. Q350 or Q450). These ventilation units use a CAN bus for communication and a different protocol.
|
**NOTE:** This binding does not work with the ComfoAir Q-series (e.g. Q350 or Q450). These ventilation units use a CAN bus for communication and a different protocol.
|
||||||
|
|
||||||
### Limitations
|
## Limitations
|
||||||
|
|
||||||
* Either the ComfoAir binding or the CCEase Comfocontrol can be active, but not together.
|
- Either the ComfoAir binding or the CCEase Comfocontrol can be active, but not together.
|
||||||
* You must implement auto mode by yourself with rules, but it is more powerful.
|
- You must implement auto mode by yourself with rules, but it is more powerful.
|
||||||
|
|
||||||
### Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Computer communication between ComfoAir device and openHAB via RS232 connection has to be set up.
|
Computer communication between ComfoAir device and openHAB via RS232 connection has to be set up.
|
||||||
The connection should be made with a 3-wire cable connecting pins: GND, TX, RX of RS232 sockets, but RX and TX pins should be crossed (TX of ComfoAir to RX of PC, RX of ComfoAir to TX of PC).
|
The connection should be made with a 3-wire cable connecting pins: GND, TX, RX of RS232 sockets, but RX and TX pins should be crossed (TX of ComfoAir to RX of PC, RX of ComfoAir to TX of PC).
|
||||||
|
|
||||||
### Serial Port Access Rights
|
## Serial Port Access Rights
|
||||||
|
|
||||||
* Take care that the user that runs openHAB has rights to access the serial port
|
- Take care that the user that runs openHAB has rights to access the serial port
|
||||||
* On Ubuntu/Debian based systems (incl. openHABian) that usually means adding the user (e.g. openhab) to the group "dialout", i.e.
|
- On Ubuntu/Debian based systems (incl. openHABian) that usually means adding the user (e.g. openhab) to the group "dialout", i.e.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
sudo usermod -a -G dialout openhab
|
sudo usermod -a -G dialout openhab
|
||||||
```
|
```
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
The binding supports thing types for different device types.
|
The binding supports thing types for different device types.
|
||||||
They only differ in the available channels, where the generic *comfoair* thing type supports all available channels.
|
They only differ in the available channels, where the generic _comfoair_ thing type supports all available channels.
|
||||||
If there is no thing type that matches your specific device you can safely choose the *comfoair* type.
|
If there is no thing type that matches your specific device you can safely choose the _comfoair_ type.
|
||||||
|
|
||||||
|Thing Type ID |Description |
|
|Thing Type ID |Description |
|
||||||
|--------------|-----------------------------------------------------------------------------|
|
|--------------|-----------------------------------------------------------------------------|
|
||||||
@ -200,13 +200,13 @@ The ComfoAir binding supports the following channels.
|
|||||||
|
|
||||||
`.things` file:
|
`.things` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing comfoair:comfoair:myComfoAir "ComfoAir" [serialPort="/dev/ttyUSB0", refreshInterval="60"]
|
Thing comfoair:comfoair:myComfoAir "ComfoAir" [serialPort="/dev/ttyUSB0", refreshInterval="60"]
|
||||||
```
|
```
|
||||||
|
|
||||||
`.items` file:
|
`.items` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch comfoairControl "Activate" <computer> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:bindingControl#activate"}
|
Switch comfoairControl "Activate" <computer> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:bindingControl#activate"}
|
||||||
Number comfoairFanLevel "Ventilation level [%d]" <chart> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:ventilation#fanLevel"}
|
Number comfoairFanLevel "Ventilation level [%d]" <chart> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:ventilation#fanLevel"}
|
||||||
Number comfoairErrorReset "Error reset" <service> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:resets#errorReset"}
|
Number comfoairErrorReset "Error reset" <service> (ComfoAir) {channel="comfoair:comfoair:myComfoAir:resets#errorReset"}
|
||||||
@ -238,7 +238,7 @@ Switch comfoairFreezeMode "Freeze [MAP(comfoair_freeze.map):%s]" <climate> (C
|
|||||||
|
|
||||||
`.sitemap` file:
|
`.sitemap` file:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap comfoair label="ComfoAir" {
|
sitemap comfoair label="ComfoAir" {
|
||||||
Frame label="Main" {
|
Frame label="Main" {
|
||||||
Text item=comfoairError labelcolor=[!="No Errors"="red"] valuecolor=[!="No Errors"="red"]
|
Text item=comfoairError labelcolor=[!="No Errors"="red"] valuecolor=[!="No Errors"="red"]
|
||||||
@ -271,7 +271,7 @@ sitemap comfoair label="ComfoAir" {
|
|||||||
|
|
||||||
`comfoair_bypass.map` file:
|
`comfoair_bypass.map` file:
|
||||||
|
|
||||||
```
|
```text
|
||||||
ON=Opened
|
ON=Opened
|
||||||
OFF=Closed
|
OFF=Closed
|
||||||
undefined=unknown
|
undefined=unknown
|
||||||
@ -280,7 +280,7 @@ undefined=unknown
|
|||||||
|
|
||||||
`comfoair_on-off.map` file:
|
`comfoair_on-off.map` file:
|
||||||
|
|
||||||
```
|
```text
|
||||||
ON=active
|
ON=active
|
||||||
OFF=inactive
|
OFF=inactive
|
||||||
undefined=unknown
|
undefined=unknown
|
||||||
@ -289,7 +289,7 @@ undefined=unknown
|
|||||||
|
|
||||||
`comfoair_freeze.map` file:
|
`comfoair_freeze.map` file:
|
||||||
|
|
||||||
```
|
```text
|
||||||
ON=frozen
|
ON=frozen
|
||||||
OFF=OK
|
OFF=OK
|
||||||
undefined=unknown
|
undefined=unknown
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# CoronaStats Binding
|
# CoronaStats Binding
|
||||||
|
|
||||||
This binding provides the statistic about cases of COVID-19 from the website https://corona-stats.online/.
|
This binding provides the statistic about cases of COVID-19 from the website [https://corona-stats.online/](https://corona-stats.online/).
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
@ -27,7 +26,7 @@ This can be used as bridge for country things you may add manually.
|
|||||||
| ------------- | :-----: | :------: | ------------------------------------------------- |
|
| ------------- | :-----: | :------: | ------------------------------------------------- |
|
||||||
| `countryCode` | - | yes | 2-letter code for the country you want to display |
|
| `countryCode` | - | yes | 2-letter code for the country you want to display |
|
||||||
|
|
||||||
For the correct 2-letter country code have a look at the website https://corona-stats.online/
|
For the correct 2-letter country code have a look at the website [https://corona-stats.online/](https://corona-stats.online/)
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
@ -49,7 +48,7 @@ For the correct 2-letter country code have a look at the website https://corona-
|
|||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge coronastats:world:stats "Corona Stats World" @ "Corona" [refresh=15] {
|
Bridge coronastats:world:stats "Corona Stats World" @ "Corona" [refresh=15] {
|
||||||
Thing country usa "Corona Stats USA" @ "Corona" [countryCode="US"]
|
Thing country usa "Corona Stats USA" @ "Corona" [countryCode="US"]
|
||||||
Thing country germany "Corona Stats Germany" @ "Corona" [countryCode="DE"]
|
Thing country germany "Corona Stats Germany" @ "Corona" [countryCode="DE"]
|
||||||
@ -62,7 +61,7 @@ Bridge coronastats:world:stats "Corona Stats World" @ "Corona" [refresh=15] {
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Dimensionless coronaCasesWorld "Total Cases World [%,d]"
|
Number:Dimensionless coronaCasesWorld "Total Cases World [%,d]"
|
||||||
{channel="coronastats:world:stats:cases"}
|
{channel="coronastats:world:stats:cases"}
|
||||||
|
|
||||||
@ -102,7 +101,7 @@ DateTime coronaUpdatedUSA "Updated USA [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Text label="Corona" {
|
Text label="Corona" {
|
||||||
Frame label="World" {
|
Frame label="World" {
|
||||||
Text item=coronaCasesWorld
|
Text item=coronaCasesWorld
|
||||||
|
@ -15,7 +15,7 @@ You can also manually add a new item if you know the IP address.
|
|||||||
|
|
||||||
Background discovery polls the network every minute for devices.
|
Background discovery polls the network every minute for devices.
|
||||||
Background discovery is **enabled** by default.
|
Background discovery is **enabled** by default.
|
||||||
To **disable** background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
To **disable** background discovery, add the following line to the _conf/services/runtime.cfg_ file:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
discovery.daikin:background=false
|
discovery.daikin:background=false
|
||||||
@ -27,14 +27,14 @@ A BRP072C42 adapter requires a registered UUID to authenticate. Upon discovery,
|
|||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
* `host` - The hostname of the Daikin air conditioner. Typically you'd use an IP address such as `192.168.0.5` for this field.
|
- `host` - The hostname of the Daikin air conditioner. Typically you'd use an IP address such as `192.168.0.5` for this field.
|
||||||
* `refresh` - The frequency with which to refresh information from the Daikin air conditioner specified in seconds. Defaults to 60 seconds.
|
- `refresh` - The frequency with which to refresh information from the Daikin air conditioner specified in seconds. Defaults to 60 seconds.
|
||||||
|
|
||||||
### Additional Thing configurations for BRP072C42 adapter
|
### Additional Thing configurations for BRP072C42 adapter
|
||||||
|
|
||||||
* `secure` - Must be set to true for BRP072C42 to access it through https.
|
- `secure` - Must be set to true for BRP072C42 to access it through https.
|
||||||
* `uuid` - A UUID used to access the BRP072C42 adapter. A handy UUID generator can be found at <https://www.uuidgenerator.net/>.
|
- `uuid` - A UUID used to access the BRP072C42 adapter. A handy UUID generator can be found at <https://www.uuidgenerator.net/>.
|
||||||
* `key` - The 13-digit key from the Daikin adapter.
|
- `key` - The 13-digit key from the Daikin adapter.
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ For the BRP15B61:
|
|||||||
|
|
||||||
daikin.things:
|
daikin.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// for BRP069B41 or BRP072A42
|
// for BRP069B41 or BRP072A42
|
||||||
daikin:ac_unit:living_room_ac [ host="192.168.0.5" ]
|
daikin:ac_unit:living_room_ac [ host="192.168.0.5" ]
|
||||||
// for BRP072C42
|
// for BRP072C42
|
||||||
@ -121,7 +121,7 @@ daikin:airbase_ac_unit:living_room_ac [ host="192.168.0.5" ]
|
|||||||
|
|
||||||
daikin.items:
|
daikin.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// for BRP069B41, BRP072A42 or BRP072C42
|
// for BRP069B41, BRP072A42 or BRP072C42
|
||||||
Switch DaikinACUnit_Power { channel="daikin:ac_unit:living_room_ac:power" }
|
Switch DaikinACUnit_Power { channel="daikin:ac_unit:living_room_ac:power" }
|
||||||
Number:Temperature DaikinACUnit_SetPoint { channel="daikin:ac_unit:living_room_ac:settemp" }
|
Number:Temperature DaikinACUnit_SetPoint { channel="daikin:ac_unit:living_room_ac:settemp" }
|
||||||
@ -154,7 +154,7 @@ Switch DaikinACUnit_Zone8 { channel="daikin:airbase_ac_unit:living_room_ac:zone8
|
|||||||
|
|
||||||
daikin.sitemap:
|
daikin.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
// for BRP069B41, BRP072A42 or BRP072C42
|
// for BRP069B41, BRP072A42 or BRP072C42
|
||||||
Switch item=DaikinACUnit_Power
|
Switch item=DaikinACUnit_Power
|
||||||
Setpoint item=DaikinACUnit_SetPoint visibility=[DaikinACUnit_Power==ON]
|
Setpoint item=DaikinACUnit_SetPoint visibility=[DaikinACUnit_Power==ON]
|
||||||
|
@ -69,7 +69,7 @@ Automatic device discovery is not yet implemented.
|
|||||||
|
|
||||||
.things file
|
.things file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dali:daliserver:237dbae7 "Daliserver" [ host="localhost", port=55825] {
|
Bridge dali:daliserver:237dbae7 "Daliserver" [ host="localhost", port=55825] {
|
||||||
Thing rgb 87bf0403-a45d-4037-b874-28f4ece30004 "RGB Lights" [ targetIdR=0, targetIdG=1, targetIdB=2 ]
|
Thing rgb 87bf0403-a45d-4037-b874-28f4ece30004 "RGB Lights" [ targetIdR=0, targetIdG=1, targetIdB=2 ]
|
||||||
Thing device 995e16ca-07c4-4111-9cda-504cb5120f82 "Warm White" [ targetId=3 ]
|
Thing device 995e16ca-07c4-4111-9cda-504cb5120f82 "Warm White" [ targetId=3 ]
|
||||||
@ -77,10 +77,9 @@ Bridge dali:daliserver:237dbae7 "Daliserver" [ host="localhost", port=55825] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
.items file
|
.items file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Dimmer WarmWhiteLivingRoom "Warm White Living Room" {channel="dali:device:237dbae7:995e16ca-07c4-4111-9cda-504cb5120f82:dimImmediately"}
|
Dimmer WarmWhiteLivingRoom "Warm White Living Room" {channel="dali:device:237dbae7:995e16ca-07c4-4111-9cda-504cb5120f82:dimImmediately"}
|
||||||
Color ColorLivingRoom "Light Color Living Room" {channel="dali:device:237dbae7:87bf0403-a45d-4037-b874-28f4ece30004:color"}
|
Color ColorLivingRoom "Light Color Living Room" {channel="dali:device:237dbae7:87bf0403-a45d-4037-b874-28f4ece30004:color"}
|
||||||
Switch LightsLivingRoom "Lights Living Room On/Off" {channel="dali:device:237dbae7:31da8dac-8e09-455a-bc7a-6ed70f740001:dimImmediately"}
|
Switch LightsLivingRoom "Lights Living Room On/Off" {channel="dali:device:237dbae7:31da8dac-8e09-455a-bc7a-6ed70f740001:dimImmediately"}
|
||||||
|
@ -43,7 +43,6 @@ These are the available configuration parameters:
|
|||||||
| filter_life | service | Number | RO | Remaining life of filter until exchange is necessary (percentage) |
|
| filter_life | service | Number | RO | Remaining life of filter until exchange is necessary (percentage) |
|
||||||
| filter_period | service | Number | RW | Number of months between filter replacements (between 3 and 12). This value affects calculation of filter_life by the unit, and might get overwritten by Air Dial or Link CC Controller. |
|
| filter_period | service | Number | RW | Number of months between filter replacements (between 3 and 12). This value affects calculation of filter_life by the unit, and might get overwritten by Air Dial or Link CC Controller. |
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Things
|
### Things
|
||||||
@ -55,7 +54,7 @@ You can also manually configure your air unit in case you don't want to use auto
|
|||||||
(e. g. if you want to have a portable configuration):
|
(e. g. if you want to have a portable configuration):
|
||||||
Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder:
|
Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing danfossairunit:airunit:myairunit [host="192.168.0.7",
|
Thing danfossairunit:airunit:myairunit [host="192.168.0.7",
|
||||||
refreshInterval=5,
|
refreshInterval=5,
|
||||||
updateUnchangedValuesEveryMillis=30000]
|
updateUnchangedValuesEveryMillis=30000]
|
||||||
@ -63,7 +62,7 @@ updateUnchangedValuesEveryMillis=30000]
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Dimmer DanfossHRV_ManualFanStep "Manual Fan Step [%s]" {channel = "danfossairunit:airunit:myairunit:main#manual_fan_step"}
|
Dimmer DanfossHRV_ManualFanStep "Manual Fan Step [%s]" {channel = "danfossairunit:airunit:myairunit:main#manual_fan_step"}
|
||||||
Number DanfossHRV_SupplyFanSpeed "Supply Fan Speed" {channel = "danfossairunit:airunit:myairunit:main#supply_fan_speed"}
|
Number DanfossHRV_SupplyFanSpeed "Supply Fan Speed" {channel = "danfossairunit:airunit:myairunit:main#supply_fan_speed"}
|
||||||
Number DanfossHRV_ExtractFanSpeed "Extract Fan Speed" {channel = "danfossairunit:airunit:myairunit:main#extract_fan_speed"}
|
Number DanfossHRV_ExtractFanSpeed "Extract Fan Speed" {channel = "danfossairunit:airunit:myairunit:main#extract_fan_speed"}
|
||||||
@ -82,7 +81,7 @@ Number DanfossHRV_FilterPeriod "Filter period" { channel = "danfossairunit:airun
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap danfoss label="Danfoss" {
|
sitemap danfoss label="Danfoss" {
|
||||||
Frame label="Control" {
|
Frame label="Control" {
|
||||||
Selection item=DanfossHRV_Mode mappings=[DEMAND="Demand", OFF="Off", PROGRAM="Program", MANUAL="Manual"]
|
Selection item=DanfossHRV_Mode mappings=[DEMAND="Demand", OFF="Off", PROGRAM="Program", MANUAL="Manual"]
|
||||||
|
@ -100,6 +100,7 @@ last previous executed query.
|
|||||||
|
|
||||||
The `resultString` channel is the only valid one if `scalarResult=false`, and in that case it contains the query result serialized to JSON in that format:
|
The `resultString` channel is the only valid one if `scalarResult=false`, and in that case it contains the query result serialized to JSON in that format:
|
||||||
|
|
||||||
|
```json
|
||||||
{
|
{
|
||||||
correct : true,
|
correct : true,
|
||||||
data : [
|
data : [
|
||||||
@ -111,6 +112,7 @@ The `resultString` channel is the only valid one if `scalarResult=false`, and in
|
|||||||
{ ... } //row3
|
{ ... } //row3
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Channel Triggers
|
### Channel Triggers
|
||||||
|
|
||||||
@ -143,16 +145,16 @@ And it returns an `ActionQueryResult` that has the following properties:
|
|||||||
- isScalarResult: It returns if the result is scalar one (only one row with one column)
|
- isScalarResult: It returns if the result is scalar one (only one row with one column)
|
||||||
- resultAsScalar: It returns the result as a scalar if possible, if not returns null
|
- resultAsScalar: It returns the result as a scalar if possible, if not returns null
|
||||||
|
|
||||||
|
|
||||||
Example (using Jython script):
|
Example (using Jython script):
|
||||||
|
|
||||||
|
```python
|
||||||
from core.log import logging, LOG_PREFIX
|
from core.log import logging, LOG_PREFIX
|
||||||
log = logging.getLogger("{}.action_example".format(LOG_PREFIX))
|
log = logging.getLogger("{}.action_example".format(LOG_PREFIX))
|
||||||
map = {"time" : "-2h"}
|
map = {"time" : "-2h"}
|
||||||
influxdb = actions.get("dbquery","dbquery:influxdb2:sampleQuery") //Get bridge thing
|
influxdb = actions.get("dbquery","dbquery:influxdb2:sampleQuery") //Get bridge thing
|
||||||
result = influxdb.executeQuery("from(bucket: \"default\") |> range(start:-2h) |> filter(fn: (r) => r[\"_measurement\"] == \"go_memstats_frees_total\") |> filter(fn: (r) => r[\"_field\"] == \"counter\") |> mean()",{},5)
|
result = influxdb.executeQuery("from(bucket: \"default\") |> range(start:-2h) |> filter(fn: (r) => r[\"_measurement\"] == \"go_memstats_frees_total\") |> filter(fn: (r) => r[\"_field\"] == \"counter\") |> mean()",{},5)
|
||||||
log.info("execute query result is "+str(result.data))
|
log.info("execute query result is "+str(result.data))
|
||||||
|
```
|
||||||
|
|
||||||
Use this action with care, because as the query is executed synchronously, it is not good to execute long-running queries that can block script execution.
|
Use this action with care, because as the query is executed synchronously, it is not good to execute long-running queries that can block script execution.
|
||||||
|
|
||||||
@ -165,9 +167,11 @@ To execute the action you need to pass the parameters as a Map.
|
|||||||
|
|
||||||
Example (using Jython script):
|
Example (using Jython script):
|
||||||
|
|
||||||
|
```python
|
||||||
params = {"time" : "-2h"}
|
params = {"time" : "-2h"}
|
||||||
dbquery = actions.get("dbquery","dbquery:query:queryWithParams") //Get query thing
|
dbquery = actions.get("dbquery","dbquery:query:queryWithParams") //Get query thing
|
||||||
dbquery.setQueryParameters(params)
|
dbquery.setQueryParameters(params)
|
||||||
|
```
|
||||||
|
|
||||||
#### getLastQueryResult
|
#### getLastQueryResult
|
||||||
|
|
||||||
@ -176,9 +180,10 @@ It doesn't have any parameters and returns an `ActionQueryResult` as defined in
|
|||||||
|
|
||||||
Example (using Jython script):
|
Example (using Jython script):
|
||||||
|
|
||||||
|
```python
|
||||||
dbquery = actions.get("dbquery","dbquery:query:queryWithParams") //Get query thing
|
dbquery = actions.get("dbquery","dbquery:query:queryWithParams") //Get query thing
|
||||||
result = dbquery.getLastQueryResult()
|
result = dbquery.getLastQueryResult()
|
||||||
|
```
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
@ -187,6 +192,7 @@ Example (using Jython script):
|
|||||||
Define an InfluxDB2 database thing and a query with an interval execution.
|
Define an InfluxDB2 database thing and a query with an interval execution.
|
||||||
That executes the query every 15 seconds and punts the result in `myItem`.
|
That executes the query every 15 seconds and punts the result in `myItem`.
|
||||||
|
|
||||||
|
```java
|
||||||
# Bridge Thing definition
|
# Bridge Thing definition
|
||||||
Bridge dbquery:influxdb2:mydatabase "InfluxDB2 Bridge" [ bucket="default", user="admin", url="http://localhost:8086", organization="openhab", token="*******" ]
|
Bridge dbquery:influxdb2:mydatabase "InfluxDB2 Bridge" [ bucket="default", user="admin", url="http://localhost:8086", organization="openhab", token="*******" ]
|
||||||
|
|
||||||
@ -195,6 +201,7 @@ That executes the query every 15 seconds and punts the result in `myItem`.
|
|||||||
|
|
||||||
# Item definition
|
# Item definition
|
||||||
Number myItem "QueryResult" {channel="dbquery:query:myquery:resultNumber"}
|
Number myItem "QueryResult" {channel="dbquery:query:myquery:resultNumber"}
|
||||||
|
```
|
||||||
|
|
||||||
### A query with parameters
|
### A query with parameters
|
||||||
|
|
||||||
@ -205,6 +212,8 @@ Create a rule that is fired
|
|||||||
- **When** `calculateParameters` is triggered in `myquery`
|
- **When** `calculateParameters` is triggered in `myquery`
|
||||||
- **Then** executes the following script action (in that example Jython):
|
- **Then** executes the following script action (in that example Jython):
|
||||||
|
|
||||||
|
```text
|
||||||
map = {"time" : "-2h"}
|
map = {"time" : "-2h"}
|
||||||
dbquery = actions.get("dbquery","dbquery:query:myquery")
|
dbquery = actions.get("dbquery","dbquery:query:myquery")
|
||||||
dbquery.setQueryParameters(map)
|
dbquery.setQueryParameters(map)
|
||||||
|
```
|
||||||
|
@ -29,7 +29,6 @@ These sensors are supported:
|
|||||||
| Air quality Sensor | ZHAAirQuality | `airqualitysensor` |
|
| Air quality Sensor | ZHAAirQuality | `airqualitysensor` |
|
||||||
| Color Controller | ZBT-Remote-ALL-RGBW | `colorcontrol` |
|
| Color Controller | ZBT-Remote-ALL-RGBW | `colorcontrol` |
|
||||||
|
|
||||||
|
|
||||||
Additionally lights, window coverings (blinds), door locks and thermostats are supported:
|
Additionally lights, window coverings (blinds), door locks and thermostats are supported:
|
||||||
|
|
||||||
| Device type | Resource Type | Thing type |
|
| Device type | Resource Type | Thing type |
|
||||||
@ -98,7 +97,7 @@ If this fails, the advanced `colormode` parameter can be set to `xy` or `hs`.
|
|||||||
|
|
||||||
If you use the textual configuration, the thing file without an API key will look like this, for example:
|
If you use the textual configuration, the thing file without an API key will look like this, for example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge deconz:deconz:homeserver [ host="192.168.0.10" ]
|
Bridge deconz:deconz:homeserver [ host="192.168.0.10" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -107,13 +106,13 @@ Please note that the generated key cannot be written automatically to the `.thin
|
|||||||
The generated key can be queried from the configuration using the openHAB console.
|
The generated key can be queried from the configuration using the openHAB console.
|
||||||
To do this log into the [console](https://www.openhab.org/docs/administration/console.html) and use the command `things show` to display the configuration parameters, e.g:
|
To do this log into the [console](https://www.openhab.org/docs/administration/console.html) and use the command `things show` to display the configuration parameters, e.g:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
things show deconz:deconz:homeserver
|
things show deconz:deconz:homeserver
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwards the API key has to be inserted in the `.thing` file as `apikey` configuration value, e.g.:
|
Afterwards the API key has to be inserted in the `.thing` file as `apikey` configuration value, e.g.:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ]
|
Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -214,9 +213,9 @@ Both will be added during runtime if supported by the switch.
|
|||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Things file ###
|
### Things file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ] {
|
Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ] {
|
||||||
presencesensor livingroom-presence "Livingroom Presence" [ id="1" ]
|
presencesensor livingroom-presence "Livingroom Presence" [ id="1" ]
|
||||||
temperaturesensor livingroom-temperature "Livingroom Temperature" [ id="2" ]
|
temperaturesensor livingroom-temperature "Livingroom Temperature" [ id="2" ]
|
||||||
@ -233,9 +232,9 @@ Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ] {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Items file ###
|
### Items file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Livingroom_Presence "Presence Livingroom [%s]" <motion> { channel="deconz:presencesensor:homeserver:livingroom-presence:presence" }
|
Switch Livingroom_Presence "Presence Livingroom [%s]" <motion> { channel="deconz:presencesensor:homeserver:livingroom-presence:presence" }
|
||||||
Number:Temperature Livingroom_Temperature "Temperature Livingroom [%.1f °C]" <temperature> { channel="deconz:temperaturesensor:homeserver:livingroom-temperature:temperature" }
|
Number:Temperature Livingroom_Temperature "Temperature Livingroom [%.1f °C]" <temperature> { channel="deconz:temperaturesensor:homeserver:livingroom-temperature:temperature" }
|
||||||
Number:Dimensionless Livingroom_Humidity "Humidity Livingroom [%.1f %%]" <humidity> { channel="deconz:humiditysensor:homeserver:livingroom-humidity:humidity" }
|
Number:Dimensionless Livingroom_Humidity "Humidity Livingroom [%.1f %%]" <humidity> { channel="deconz:humiditysensor:homeserver:livingroom-humidity:humidity" }
|
||||||
@ -252,7 +251,7 @@ Switch Entrance_Door "Doorlock"
|
|||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
```php
|
```java
|
||||||
rule "example trigger rule"
|
rule "example trigger rule"
|
||||||
when
|
when
|
||||||
Channel "deconz:switch:homeserver:livingroom-hue-tap:buttonevent" triggered 34 // Hue Tap Button 1 pressed
|
Channel "deconz:switch:homeserver:livingroom-hue-tap:buttonevent" triggered 34 // Hue Tap Button 1 pressed
|
||||||
|
@ -42,32 +42,32 @@ The DenonMarantz AVR supports the following channels (some channels are model sp
|
|||||||
|
|
||||||
| Channel Type ID | Item Type | Description |
|
| Channel Type ID | Item Type | Description |
|
||||||
|-------------------------|--------------|--------------|
|
|-------------------------|--------------|--------------|
|
||||||
| *General* | |
|
| _General_ | |
|
||||||
| general#power | Switch (RW) | Power on/off
|
| general#power | Switch (RW) | Power on/off
|
||||||
| general#surroundProgram | String (R) | current surround program (e.g. STEREO)
|
| general#surroundProgram | String (R) | current surround program (e.g. STEREO)
|
||||||
| general#artist | String (R) | artist of current track
|
| general#artist | String (R) | artist of current track
|
||||||
| general#album | String (R) | album of current track
|
| general#album | String (R) | album of current track
|
||||||
| general#track | String (R) | title of current track
|
| general#track | String (R) | title of current track
|
||||||
| general#command | String (W) | Command to send to the AVR (for use in Rules)
|
| general#command | String (W) | Command to send to the AVR (for use in Rules)
|
||||||
| *Main zone* | |
|
| _Main zone_ | |
|
||||||
| mainZone#power | Switch (RW) | Main zone power on/off
|
| mainZone#power | Switch (RW) | Main zone power on/off
|
||||||
| mainZone#volume | Dimmer (RW) | Main zone volume
|
| mainZone#volume | Dimmer (RW) | Main zone volume
|
||||||
| mainZone#volumeDB | Number (RW) | Main zone volume in dB (-80 offset)
|
| mainZone#volumeDB | Number (RW) | Main zone volume in dB (-80 offset)
|
||||||
| mainZone#mute | Switch (RW) | Main zone mute
|
| mainZone#mute | Switch (RW) | Main zone mute
|
||||||
| mainZone#input | String (RW) | Main zone input (e.g. TV, TUNER, ..)
|
| mainZone#input | String (RW) | Main zone input (e.g. TV, TUNER, ..)
|
||||||
| *Zone 2* | |
|
| _Zone 2_ | |
|
||||||
| zone2#power | Switch (RW) | Zone 2 power on/off
|
| zone2#power | Switch (RW) | Zone 2 power on/off
|
||||||
| zone2#volume | Dimmer (RW) | Zone 2 volume
|
| zone2#volume | Dimmer (RW) | Zone 2 volume
|
||||||
| zone2#volumeDB | Number (RW) | Zone 2 volume in dB (-80 offset)
|
| zone2#volumeDB | Number (RW) | Zone 2 volume in dB (-80 offset)
|
||||||
| zone2#mute | Switch (RW) | Zone 2 mute
|
| zone2#mute | Switch (RW) | Zone 2 mute
|
||||||
| zone2#input | String (RW) | Zone 2 input
|
| zone2#input | String (RW) | Zone 2 input
|
||||||
| *Zone 3* | |
|
| _Zone 3_ | |
|
||||||
| zone3#power | Switch (RW) | Zone 3 power on/off
|
| zone3#power | Switch (RW) | Zone 3 power on/off
|
||||||
| zone3#volume | Dimmer (RW) | Zone 3 volume
|
| zone3#volume | Dimmer (RW) | Zone 3 volume
|
||||||
| zone3#volumeDB | Number (RW) | Zone 3 volume in dB (-80 offset)
|
| zone3#volumeDB | Number (RW) | Zone 3 volume in dB (-80 offset)
|
||||||
| zone3#mute | Switch (RW) | Zone 3 mute
|
| zone3#mute | Switch (RW) | Zone 3 mute
|
||||||
| zone3#input | String (RW) | Zone 3 input
|
| zone3#input | String (RW) | Zone 3 input
|
||||||
| *Zone 4* | |
|
| _Zone 4_ | |
|
||||||
| zone4#power | Switch (RW) | Zone 4 power on/off
|
| zone4#power | Switch (RW) | Zone 4 power on/off
|
||||||
| zone4#volume | Dimmer (RW) | Zone 4 volume
|
| zone4#volume | Dimmer (RW) | Zone 4 volume
|
||||||
| zone4#volumeDB | Number (RW) | Zone 4 volume in dB (-80 offset)
|
| zone4#volumeDB | Number (RW) | Zone 4 volume in dB (-80 offset)
|
||||||
@ -82,13 +82,13 @@ The DenonMarantz AVR supports the following channels (some channels are model sp
|
|||||||
|
|
||||||
`.things` file:
|
`.things` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing denonmarantz:avr:1 "Receiver" @ "Living room" [host="192.168.1.100"]
|
Thing denonmarantz:avr:1 "Receiver" @ "Living room" [host="192.168.1.100"]
|
||||||
```
|
```
|
||||||
|
|
||||||
`.items` file:
|
`.items` file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch marantz_power "Receiver" <switch> {channel="denonmarantz:avr:1:general#power"}
|
Switch marantz_power "Receiver" <switch> {channel="denonmarantz:avr:1:general#power"}
|
||||||
Dimmer marantz_volume "Volume" <soundvolume> {channel="denonmarantz:avr:1:mainZone#volume"}
|
Dimmer marantz_volume "Volume" <soundvolume> {channel="denonmarantz:avr:1:mainZone#volume"}
|
||||||
Number marantz_volumeDB "Volume [%.1f dB]" {channel="denonmarantz:avr:1:mainzone#volume"}
|
Number marantz_volumeDB "Volume [%.1f dB]" {channel="denonmarantz:avr:1:mainzone#volume"}
|
||||||
@ -101,7 +101,7 @@ String marantz_command {channel="denonmarantz:avr:1
|
|||||||
|
|
||||||
`.sitemap` file:
|
`.sitemap` file:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
...
|
...
|
||||||
Group item=marantz_input label="Receiver" icon="receiver" {
|
Group item=marantz_input label="Receiver" icon="receiver" {
|
||||||
Default item=marantz_power
|
Default item=marantz_power
|
||||||
|
@ -15,17 +15,17 @@ The information are requested from the timetable api of Deutsche Bahn developer
|
|||||||
To configure a timetable you first need to register at Deutsche Bahn developer portal and register for timetable API to get an access key.
|
To configure a timetable you first need to register at Deutsche Bahn developer portal and register for timetable API to get an access key.
|
||||||
|
|
||||||
1. Go to [DB API Marketplace](https://developers.deutschebahn.com/)
|
1. Go to [DB API Marketplace](https://developers.deutschebahn.com/)
|
||||||
2. Register new account or login with an existing one
|
1. Register new account or login with an existing one
|
||||||
3. If no application is configured yet (check Tab "Anwendungen" at top) create a new application. Only the name is required, for example openHAB, any other fields can be left blank.
|
1. If no application is configured yet (check Tab "Anwendungen" at top) create a new application. Only the name is required, for example openHAB, any other fields can be left blank.
|
||||||
4. Remember the shown **Client ID** and **Client Secret**.
|
1. Remember the shown **Client ID** and **Client Secret**.
|
||||||
5. Go to **Katalog** and search for **Timetables** api.
|
1. Go to **Katalog** and search for **Timetables** api.
|
||||||
6. Within **Zugehörige APIs** select the Timetables api.
|
1. Within **Zugehörige APIs** select the Timetables api.
|
||||||
7. Select **Abonnieren** at top left of the page.
|
1. Select **Abonnieren** at top left of the page.
|
||||||
8. Select the Nutzungsplan **Free** by clicking **Abonnieren**.
|
1. Select the Nutzungsplan **Free** by clicking **Abonnieren**.
|
||||||
9. Select the previously created application.
|
1. Select the previously created application.
|
||||||
10. Click **Next**.
|
1. Click **Next**.
|
||||||
11. Click **Fertig**.
|
1. Click **Fertig**.
|
||||||
12. Now you have successfully registered the api within an application. The **Client ID** and **Client Secret** can now be used during bridge configuration.
|
1. Now you have successfully registered the api within an application. The **Client ID** and **Client Secret** can now be used during bridge configuration.
|
||||||
|
|
||||||
### Determine the EVA-No of your station
|
### Determine the EVA-No of your station
|
||||||
|
|
||||||
@ -83,7 +83,6 @@ train things, the channels of these trains will be undefined.
|
|||||||
|-|-|-|-|
|
|-|-|-|-|
|
||||||
| `position` | | Yes | The position of the train within the timetable. |
|
| `position` | | Yes | The position of the train within the timetable. |
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
Each train has a set of channels, that provides access to any information served by the timetable API. A detailed description of the values and their meaning can be found within
|
Each train has a set of channels, that provides access to any information served by the timetable API. A detailed description of the values and their meaning can be found within
|
||||||
@ -98,8 +97,8 @@ Channels will have a 'NULL' channel value, when the corresponding attribute is n
|
|||||||
|
|
||||||
Basically most information are available as planned and changed value. This allows to easy display changed values (for example the delay or changed platform).
|
Basically most information are available as planned and changed value. This allows to easy display changed values (for example the delay or changed platform).
|
||||||
|
|
||||||
|
### Channels for trip information
|
||||||
|
|
||||||
**Channels for trip information**
|
|
||||||
| channel | type | description |
|
| channel | type | description |
|
||||||
|----------|--------|------------------------------|
|
|----------|--------|------------------------------|
|
||||||
| category | String | Provides the category of the trip, e.g. "ICE" or "RE". |
|
| category | String | Provides the category of the trip, e.g. "ICE" or "RE". |
|
||||||
@ -108,8 +107,8 @@ Basically most information are available as planned and changed value. This allo
|
|||||||
| trip-type | String | Provides the type of the trip. |
|
| trip-type | String | Provides the type of the trip. |
|
||||||
| owner | String | Provides the owner of the train. A unique short-form and only intended to map a trip to specific evu (EisenbahnVerkehrsUnternehmen). |
|
| owner | String | Provides the owner of the train. A unique short-form and only intended to map a trip to specific evu (EisenbahnVerkehrsUnternehmen). |
|
||||||
|
|
||||||
|
### Channels for arrival / departure
|
||||||
|
|
||||||
**Channels for arrival / departure**
|
|
||||||
| channel | type | description |
|
| channel | type | description |
|
||||||
|----------|--------|------------------------------|
|
|----------|--------|------------------------------|
|
||||||
| planned-path | String | Provides the planned path of a train. |
|
| planned-path | String | Provides the planned path of a train. |
|
||||||
@ -138,7 +137,7 @@ Basically most information are available as planned and changed value. This allo
|
|||||||
|
|
||||||
timetable.things
|
timetable.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge deutschebahn:timetable:timetableLehrte "Fahrplan Lehrte" [ accessToken="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", trainFilter="departures", evaNo="8000226" ] {
|
Bridge deutschebahn:timetable:timetableLehrte "Fahrplan Lehrte" [ accessToken="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", trainFilter="departures", evaNo="8000226" ] {
|
||||||
Thing deutschebahn:train:timetableLehrte:lehrteZug1 "Zug 1" [ position="1" ]
|
Thing deutschebahn:train:timetableLehrte:lehrteZug1 "Zug 1" [ position="1" ]
|
||||||
Thing deutschebahn:train:timetableLehrte:lehrteZug2 "Zug 2" [ position="2" ]
|
Thing deutschebahn:train:timetableLehrte:lehrteZug2 "Zug 2" [ position="2" ]
|
||||||
@ -147,7 +146,7 @@ Bridge deutschebahn:timetable:timetableLehrte "Fahrplan Lehrte" [ accessToken="X
|
|||||||
|
|
||||||
timetable.items
|
timetable.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
// Groups
|
// Groups
|
||||||
Group zug1 "Zug 1"
|
Group zug1 "Zug 1"
|
||||||
Group zug1Fahrt "Zug 1 Fahrt" (zug1)
|
Group zug1Fahrt "Zug 1 Fahrt" (zug1)
|
||||||
@ -216,7 +215,7 @@ String Zug1_Departure_Wings "Wings" (zug1Abfahrt) {channel="deutschebahn:train:t
|
|||||||
|
|
||||||
Example widget for displaying train details
|
Example widget for displaying train details
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
uid: timetable_train_details
|
uid: timetable_train_details
|
||||||
tags:
|
tags:
|
||||||
- card
|
- card
|
||||||
@ -364,7 +363,6 @@ slots:
|
|||||||
text-align: right
|
text-align: right
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Using the widget for displaying the next four departures:
|
Using the widget for displaying the next four departures:
|
||||||
|
|
||||||
![Departures Hannover HBF](doc/Abfahrten_HannoverHBF.png "openHAB page with four widgets displaying the next departures at Hannover HBF")
|
![Departures Hannover HBF](doc/Abfahrten_HannoverHBF.png "openHAB page with four widgets displaying the next departures at Hannover HBF")
|
||||||
|
@ -14,7 +14,6 @@ Please refer to PRT3 module manual for instructions how to modify baudrate (defa
|
|||||||
|
|
||||||
Once `PRT3 Module` is added and communication with the alarm system confirmed by its `online` status, please start discovery process to automatically discover (and add as new Things) all zones and areas defined in the alarm system.
|
Once `PRT3 Module` is added and communication with the alarm system confirmed by its `online` status, please start discovery process to automatically discover (and add as new Things) all zones and areas defined in the alarm system.
|
||||||
|
|
||||||
|
|
||||||
## Binding Configuration
|
## Binding Configuration
|
||||||
|
|
||||||
There is no binding level configuration required.
|
There is no binding level configuration required.
|
||||||
@ -105,6 +104,6 @@ Message format is as follows:
|
|||||||
|
|
||||||
For example, the following sitemap item can be used to send commands to the area and receive response status as modified color of a label:
|
For example, the following sitemap item can be used to send commands to the area and receive response status as modified color of a label:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch item=areaControl label="Actions[]" mappings=[QA="Regular Quick Arm",QS="Stay Quick Arm",D1111="Disarm"] labelcolor=[Ok="green",Fail="red"]
|
Switch item=areaControl label="Actions[]" mappings=[QA="Regular Quick Arm",QS="Stay Quick Arm",D1111="Disarm"] labelcolor=[Ok="green",Fail="red"]
|
||||||
```
|
```
|
||||||
|
@ -12,15 +12,15 @@ The digitalSTROM-Server communicates through the digitalSTROM-Meters with the di
|
|||||||
|
|
||||||
### digitalSTROM-Server
|
### digitalSTROM-Server
|
||||||
|
|
||||||
The digitalSTROM-Server is required for accessing any other digitalSTROM-Devices. It acts like a *"bridge"*.
|
The digitalSTROM-Server is required for accessing any other digitalSTROM-Devices. It acts like a _"bridge"_.
|
||||||
|
|
||||||
### digitalSTROM-Devices
|
### digitalSTROM-Devices
|
||||||
|
|
||||||
At this point almost all available **GE**, **SW**, **GR** and **BL** digitalSTROM-Devices with a set output-mode, unequal *disabled*, are supported by this binding.
|
At this point almost all available **GE**, **SW**, **GR** and **BL** digitalSTROM-Devices with a set output-mode, unequal _disabled_, are supported by this binding.
|
||||||
Furthermore sensor devices like the **dS-iSens200** and **SW-devices** with binary-inputs are supported.
|
Furthermore sensor devices like the **dS-iSens200** and **SW-devices** with binary-inputs are supported.
|
||||||
Last but not least the **circuit** (dS-Meter) is supported, too. They will provide the power consumption and electric meter as channels.
|
Last but not least the **circuit** (dS-Meter) is supported, too. They will provide the power consumption and electric meter as channels.
|
||||||
|
|
||||||
For that there are identically named thing types. Only the *GR* type has a channel (shade), which cannot be changed.
|
For that there are identically named thing types. Only the _GR_ type has a channel (shade), which cannot be changed.
|
||||||
The other types add their channels dynamically affected by the set color-group and output-mode.
|
The other types add their channels dynamically affected by the set color-group and output-mode.
|
||||||
They also automatically change or add the channels, if the color-group or output-mode has changed through the dSS-web-configuration or the configured sensor priorities of the thing has changed.
|
They also automatically change or add the channels, if the color-group or output-mode has changed through the dSS-web-configuration or the configured sensor priorities of the thing has changed.
|
||||||
|
|
||||||
@ -60,15 +60,15 @@ The different scene thing types are listed in the following table.
|
|||||||
### digitalSTROM-Zone-Temperature-Control
|
### digitalSTROM-Zone-Temperature-Control
|
||||||
|
|
||||||
Last but not least, the digitalSTROM-Zone-Temperature-Control is also supported, if a zone-temerature-control is configured, as thing-type **zone_temperature_control**.
|
Last but not least, the digitalSTROM-Zone-Temperature-Control is also supported, if a zone-temerature-control is configured, as thing-type **zone_temperature_control**.
|
||||||
The difference between the digitalSTROM-heating-control-app is, that there are no operation-modes, like *comfort* or *eco*.
|
The difference between the digitalSTROM-heating-control-app is, that there are no operation-modes, like _comfort_ or _eco_.
|
||||||
You can directly set the target temperature, in case *pid-control* is configured, otherwise you can set the value in percent of heating valves at the zone.
|
You can directly set the target temperature, in case _pid-control_ is configured, otherwise you can set the value in percent of heating valves at the zone.
|
||||||
The needed channels will be added automatically, as it is also the case for the devices.
|
The needed channels will be added automatically, as it is also the case for the devices.
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
The digitalSTROM-Server is discovered by mDNS or *dss.local.* at the local network.
|
The digitalSTROM-Server is discovered by mDNS or _dss.local._ at the local network.
|
||||||
Once the server is added as a thing, you have to set a user name and password or insert a valid application-token to authenticate with the server.
|
Once the server is added as a thing, you have to set a user name and password or insert a valid application-token to authenticate with the server.
|
||||||
If the binding is authorized, it automatically reads all supported devices, the dS-Meters and temperature controlled configured zones, that are set up on the digitalSTROM-System, and puts them into the *inbox*.
|
If the binding is authorized, it automatically reads all supported devices, the dS-Meters and temperature controlled configured zones, that are set up on the digitalSTROM-System, and puts them into the _inbox_.
|
||||||
|
|
||||||
digitalSTROM-Scenes can be discovered, too.
|
digitalSTROM-Scenes can be discovered, too.
|
||||||
The background scene-discovery is deactivated by default to not flood the inbox.
|
The background scene-discovery is deactivated by default to not flood the inbox.
|
||||||
@ -76,7 +76,7 @@ Otherwise it will discover so many scenes, that it can be difficult to find the
|
|||||||
|
|
||||||
Discoverable scenes are all user named scenes, group scenes that are reachable by local push-buttons, zone scenes and apartment scenes.
|
Discoverable scenes are all user named scenes, group scenes that are reachable by local push-buttons, zone scenes and apartment scenes.
|
||||||
The discovery also will discover all called scenes, if they aren't automatically discovered yet.
|
The discovery also will discover all called scenes, if they aren't automatically discovered yet.
|
||||||
Temperature control scenes, like *eco* will be ignored, so they cannot be discovered.
|
Temperature control scenes, like _eco_ will be ignored, so they cannot be discovered.
|
||||||
|
|
||||||
If you only want to discover one of the thing types, you can start a discovery scan on the thing type you want to have discovered.
|
If you only want to discover one of the thing types, you can start a discovery scan on the thing type you want to have discovered.
|
||||||
You can use the command line command, e.g.: ``openhab:discovery start digitalstrom:namedScene`` to start the scan.
|
You can use the command line command, e.g.: ``openhab:discovery start digitalstrom:namedScene`` to start the scan.
|
||||||
@ -86,7 +86,7 @@ Which thing types this binding supports, please have a look at **Supported Thing
|
|||||||
|
|
||||||
### digitalSTROM-Server
|
### digitalSTROM-Server
|
||||||
|
|
||||||
The digitalSTROM-Server thing has the following configuration parameter groups: *Connection configuration*, *Server information* and *General configurations*.
|
The digitalSTROM-Server thing has the following configuration parameter groups: _Connection configuration_, _Server information_ and _General configurations_.
|
||||||
|
|
||||||
#### Connection configuration
|
#### Connection configuration
|
||||||
|
|
||||||
@ -102,8 +102,7 @@ If you use your user name and password for authentication and there is already a
|
|||||||
|
|
||||||
#### Server information
|
#### Server information
|
||||||
|
|
||||||
The parameter group *Server information* only includes informative parameters, which have no special functionality.
|
The parameter group _Server information_ only includes informative parameters, which have no special functionality.
|
||||||
|
|
||||||
|
|
||||||
| Parameter Label | Parameter ID | Description | Required | Advanced
|
| Parameter Label | Parameter ID | Description | Required | Advanced
|
||||||
|-----------------|-------------|--------------------------|---------- |------------- |
|
|-----------------|-------------|--------------------------|---------- |------------- |
|
||||||
@ -122,7 +121,7 @@ Here you can set general binding configuration parameters, which are shown in fo
|
|||||||
|
|
||||||
At the thing file, a manual configuration looks e.g. like
|
At the thing file, a manual configuration looks e.g. like
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge digitalstrom:dssBridge:dssBridge1 [ dSSAddress="dss.local.", userName="dssadmin", password="dssadmin", sensorDataUpdateInterval=180]
|
Bridge digitalstrom:dssBridge:dssBridge1 [ dSSAddress="dss.local.", userName="dssadmin", password="dssadmin", sensorDataUpdateInterval=180]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -145,7 +144,7 @@ In addition to the configuration the digitalSTROM-Server has the following prope
|
|||||||
|
|
||||||
### digitalSTROM-Devices
|
### digitalSTROM-Devices
|
||||||
|
|
||||||
The digitalSTROM-Device things have the following configuration parameter groups *Device information* and *Sensor setup*.
|
The digitalSTROM-Device things have the following configuration parameter groups _Device information_ and _Sensor setup_.
|
||||||
|
|
||||||
#### Device information
|
#### Device information
|
||||||
|
|
||||||
@ -192,7 +191,7 @@ The device scene configurations will also be persisted in the properties. There
|
|||||||
|
|
||||||
### digitalSTROM-Meter
|
### digitalSTROM-Meter
|
||||||
|
|
||||||
A digitalSTROM-Meter needs, like the digitalSTROM-Devices, only the unique digitalSTROM device ID named dSID as configuration parameter, which has the same parameters, so please have a look at the point *Device information*.
|
A digitalSTROM-Meter needs, like the digitalSTROM-Devices, only the unique digitalSTROM device ID named dSID as configuration parameter, which has the same parameters, so please have a look at the point _Device information_.
|
||||||
|
|
||||||
#### Properties
|
#### Properties
|
||||||
|
|
||||||
@ -236,9 +235,8 @@ The digitalSTROM-Scenes can be defined with following parameters.
|
|||||||
| Group ID or name | groupID | The group ID or group name of the called scene. 0 or empty is broadcast to all. | false | false |
|
| Group ID or name | groupID | The group ID or group name of the called scene. 0 or empty is broadcast to all. | false | false |
|
||||||
| Scene ID or name | sceneID |The call scene ID or scene name, e.g. preset 1 for scene ID 5. Callable scenes are from 0 to 126. | false | false |
|
| Scene ID or name | sceneID |The call scene ID or scene name, e.g. preset 1 for scene ID 5. Callable scenes are from 0 to 126. | false | false |
|
||||||
|
|
||||||
The Scene-Thing-Type *Named-Scene* and *Group-Scene* have all parameters.
|
The Scene-Thing-Type _Named-Scene_ and _Group-Scene_ have all parameters.
|
||||||
The *Apartment-Scene* only has the parameters *Scene name* and *Scene ID* an the *Zone-Scene* has all parameters without *Group ID or name*.
|
The _Apartment-Scene_ only has the parameters _Scene name_ and _Scene ID_ an the _Zone-Scene_ has all parameters without _Group ID or name_.
|
||||||
|
|
||||||
|
|
||||||
### Textual configuration examples
|
### Textual configuration examples
|
||||||
|
|
||||||
@ -248,26 +246,26 @@ However, at the thing file, a manual configuration looks e.g. like
|
|||||||
|
|
||||||
#### digitalSTROM-Devices
|
#### digitalSTROM-Devices
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing digitalstrom:GE:GE-KM200 (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d4", activePowerRefreshPriority="low", electricMeterRefreshPriority=“medium", outputCurrentRefreshPriority="high"]
|
Thing digitalstrom:GE:GE-KM200 (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d4", activePowerRefreshPriority="low", electricMeterRefreshPriority=“medium", outputCurrentRefreshPriority="high"]
|
||||||
Thing digitalstrom:GR:GR-KL200 (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d5"]
|
Thing digitalstrom:GR:GR-KL200 (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d5"]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### digitalSTROM-Meters
|
#### digitalSTROM-Meters
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing digitalstrom:circuit:circuit (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d5"]
|
Thing digitalstrom:circuit:circuit (digitalstrom:dssBridge:myDssBridge) [ dSID="3504175fe0000000000043d5"]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### digitalSTROM-Zone-Temperature-Control
|
#### digitalSTROM-Zone-Temperature-Control
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing digitalstrom:zone_temperature_control:zone_temperature_control3 (digitalstrom:dssBridge:myDssBridge) [ zoneID="3"]
|
Thing digitalstrom:zone_temperature_control:zone_temperature_control3 (digitalstrom:dssBridge:myDssBridge) [ zoneID="3"]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### digitalSTROM-Group-Scene
|
#### digitalSTROM-Group-Scene
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing digitalstrom:groupScene:preset1 (digitalstrom:dssBridge:myDssBridge) [ zoneID="3", groupID="1", sceneID="5"]
|
Thing digitalstrom:groupScene:preset1 (digitalstrom:dssBridge:myDssBridge) [ zoneID="3", groupID="1", sceneID="5"]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -281,25 +279,25 @@ digitalSTROM-Devices with an activated output mode.
|
|||||||
|
|
||||||
| Channel Type ID | Item Type | Description | supported device type |
|
| Channel Type ID | Item Type | Description | supported device type |
|
||||||
|-------|---------|------------------------------------|----------------- |
|
|-------|---------|------------------------------------|----------------- |
|
||||||
| light_dimmer | Dimmer | The *light_dimm* channel allows to dimm a light device. | GE, SW |
|
| light_dimmer | Dimmer | The _light_dimm_ channel allows to dimm a light device. | GE, SW |
|
||||||
| light_switch | Switch | The *light_switch* channel allows to turn a light device on or off. | GE, SW |
|
| light_switch | Switch | The _light_switch_ channel allows to turn a light device on or off. | GE, SW |
|
||||||
| light_2_stage | String| The *light_2_stage* channel allows to turn both light devices on or off or switch only 1 of the both light device on or off. | SW-UMR200 |
|
| light_2_stage | String| The _light_2_stage_ channel allows to turn both light devices on or off or switch only 1 of the both light device on or off. | SW-UMR200 |
|
||||||
| light_3_stage | String | The *light_3_stage* channel allows to turn both light devices on or off or switch both light devices separated from each other on or off. | SW-UMR200 |
|
| light_3_stage | String | The _light_3_stage_ channel allows to turn both light devices on or off or switch both light devices separated from each other on or off. | SW-UMR200 |
|
||||||
| shade | Rollershutter | The *shade* channel allows to control shade device e.g. a roller shutter or awnings. | GR |
|
| shade | Rollershutter | The _shade_ channel allows to control shade device e.g. a roller shutter or awnings. | GR |
|
||||||
| shade_angle | Dimmer | The *shade_angle* channel allows to control the relative slat position in percent of blinds. | GR |
|
| shade_angle | Dimmer | The _shade_angle_ channel allows to control the relative slat position in percent of blinds. | GR |
|
||||||
| general_dimmer | Dimmer | The *general_dimmer* channel allows to control the power of a device e.g. a ceiling fan. | SW |
|
| general_dimmer | Dimmer | The _general_dimmer_ channel allows to control the power of a device e.g. a ceiling fan. | SW |
|
||||||
| general_switch | Switch | The *general_switch* channel allows to turn a device on or off e.g. a HIFI-System. | SW |
|
| general_switch | Switch | The _general_switch_ channel allows to turn a device on or off e.g. a HIFI-System. | SW |
|
||||||
| general_2_stage | String | The *general_2_stage* channel allows to turn both relais of the device on or off or switch only 1 of the both relais on or off. | SW-UMR200 |
|
| general_2_stage | String | The _general_2_stage_ channel allows to turn both relais of the device on or off or switch only 1 of the both relais on or off. | SW-UMR200 |
|
||||||
| general_3_stage | String | The *general_3_stage* channel allows to turn both relais of the device on or off or switch both relais of the device separated from each other on or off. | SW-UMR200 |
|
| general_3_stage | String | The _general_3_stage_ channel allows to turn both relais of the device on or off or switch both relais of the device separated from each other on or off. | SW-UMR200 |
|
||||||
| heating_switch | Switch | The *heating_switch* channel allows to turn a heating device on or off. | BL |
|
| heating_switch | Switch | The _heating_switch_ channel allows to turn a heating device on or off. | BL |
|
||||||
| heating_dimmer | Dimmer | The *heating_switch* channel allows to control the value in percent of heating valve. | BL |
|
| heating_dimmer | Dimmer | The _heating_switch_ channel allows to control the value in percent of heating valve. | BL |
|
||||||
|
|
||||||
digitalSTROM-Zone-Temperature-Controlled
|
digitalSTROM-Zone-Temperature-Controlled
|
||||||
|
|
||||||
| Channel Type ID | Item Type | Description |
|
| Channel Type ID | Item Type | Description |
|
||||||
|-------|---------|------------------------------------|
|
|-------|---------|------------------------------------|
|
||||||
| heating_temperature_controled | Number | The *heating_temperature_controled* channel allows to set a target temperature of a zone. |
|
| heating_temperature_controled | Number | The _heating_temperature_controled_ channel allows to set a target temperature of a zone. |
|
||||||
| heating_dimmer | Dimmer | The *heating_switch* channel allows to control the value in percent of heating valve. |
|
| heating_dimmer | Dimmer | The _heating_switch_ channel allows to control the value in percent of heating valve. |
|
||||||
|
|
||||||
### Sensor-Channels
|
### Sensor-Channels
|
||||||
|
|
||||||
@ -360,15 +358,15 @@ The digitalSTROM-Meters
|
|||||||
|
|
||||||
| Channel Type ID | Item Type | Description | supported device type |
|
| Channel Type ID | Item Type | Description | supported device type |
|
||||||
|-------|---------|------------------------------------|----------------- |
|
|-------|---------|------------------------------------|----------------- |
|
||||||
| consumption_Wh | Number | The *consumption_Wh* channel indicates the current power consumption in watt (W) of the circuit. | circuit |
|
| consumption_Wh | Number | The _consumption_Wh_ channel indicates the current power consumption in watt (W) of the circuit. | circuit |
|
||||||
| energy_Wh | Number | The *energy_Wh* channel indicates the current electric meter value in killowatt hours of the circuit. | circuit |
|
| energy_Wh | Number | The _energy_Wh_ channel indicates the current electric meter value in killowatt hours of the circuit. | circuit |
|
||||||
|
|
||||||
The digitalSTROM-Server
|
The digitalSTROM-Server
|
||||||
|
|
||||||
| Channel Type ID | Item Type | Description | supported device type |
|
| Channel Type ID | Item Type | Description | supported device type |
|
||||||
|-------|---------|------------------------------------|----------------- |
|
|-------|---------|------------------------------------|----------------- |
|
||||||
| total_consumption_Wh | Number | The *total_consumption_Wh* channel indicates the current consumption power in watt (W) of all connected circuits to the digitalSTROM-System. | dssBridge |
|
| total_consumption_Wh | Number | The _total_consumption_Wh_ channel indicates the current consumption power in watt (W) of all connected circuits to the digitalSTROM-System. | dssBridge |
|
||||||
| total_energy_Wh | Number | The *total_energy_Wh* channel indicates the current electric meter value in killowatt hours of all connected circuits to the digitalSTROM-System. | dssBridge |
|
| total_energy_Wh | Number | The _total_energy_Wh_ channel indicates the current electric meter value in killowatt hours of all connected circuits to the digitalSTROM-System. | dssBridge |
|
||||||
|
|
||||||
### Scenes
|
### Scenes
|
||||||
|
|
||||||
@ -378,27 +376,27 @@ The digitalSTROM-Server
|
|||||||
|
|
||||||
**Notes:**
|
**Notes:**
|
||||||
|
|
||||||
*Generally:*
|
_Generally:_
|
||||||
|
|
||||||
* The digitalSTROM-Server only informs the binding about scene-commands. So if you set the output value of devices e.g. through the dSS-App, the binding will not be informed about the changes and you have to send a "refresh-command" to update the channel.
|
- The digitalSTROM-Server only informs the binding about scene-commands. So if you set the output value of devices e.g. through the dSS-App, the binding will not be informed about the changes and you have to send a "refresh-command" to update the channel.
|
||||||
* If you press a physical switch at your digitalSTROM-installation and the called scene-value is not red out yet, it can take a bit time to read it out and change the state of the channel.
|
- If you press a physical switch at your digitalSTROM-installation and the called scene-value is not red out yet, it can take a bit time to read it out and change the state of the channel.
|
||||||
It the scene-value is red out, the state will change immediately.
|
It the scene-value is red out, the state will change immediately.
|
||||||
See also *General-Informations/digitalSTROM-Scenes*.
|
See also _General-Informations/digitalSTROM-Scenes_.
|
||||||
|
|
||||||
*Channels with accepted command type increase and decrease:*
|
_Channels with accepted command type increase and decrease:_
|
||||||
|
|
||||||
* digitalSTROM will only evaluate increase and decrease commands, if a scene was called before which turn the device on.
|
- digitalSTROM will only evaluate increase and decrease commands, if a scene was called before which turn the device on.
|
||||||
|
|
||||||
*Blinds:*
|
_Blinds:_
|
||||||
|
|
||||||
* Increase, decrease and up, down commands of the shade channel changes the angle in digitalSTROM, too. If you want to set only the position, you have to set the value directly.
|
- Increase, decrease and up, down commands of the shade channel changes the angle in digitalSTROM, too. If you want to set only the position, you have to set the value directly.
|
||||||
* To protect the slats digitalSTROM changes the position by setting the angle, too, if the position is very high or low. So if you want to see the correct position, you have to send a refresh or stop command, if the blind is ready.
|
- To protect the slats digitalSTROM changes the position by setting the angle, too, if the position is very high or low. So if you want to see the correct position, you have to send a refresh or stop command, if the blind is ready.
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### demo.things:
|
### demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge digitalstrom:dssBridge:dSS [ dSSAddress="urlOfMyDss", userName="dssadmin", password="mySecretPassword", sensorDataUpdateInterval=180] {
|
Bridge digitalstrom:dssBridge:dSS [ dSSAddress="urlOfMyDss", userName="dssadmin", password="mySecretPassword", sensorDataUpdateInterval=180] {
|
||||||
GE GE-KM-200 [ dSID="3504175fe000000000010db9", activePowerRefreshPriority="low", electricMeterRefreshPriority="medium", outputCurrentRefreshPriority="high"]
|
GE GE-KM-200 [ dSID="3504175fe000000000010db9", activePowerRefreshPriority="low", electricMeterRefreshPriority="medium", outputCurrentRefreshPriority="high"]
|
||||||
SW SW-ZWS-200 [ dSID="3504175fe0000000000651c0"]
|
SW SW-ZWS-200 [ dSID="3504175fe0000000000651c0"]
|
||||||
@ -414,7 +412,7 @@ Bridge digitalstrom:dssBridge:dSS [ dSSAddress="urlOfMyDss", userName="dssadmin
|
|||||||
|
|
||||||
### demo.items:
|
### demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
//dSS
|
//dSS
|
||||||
Number TotalActivePower { channel="digitalstrom:dssBridge:dSS:total_consumption_wh" }
|
Number TotalActivePower { channel="digitalstrom:dssBridge:dSS:total_consumption_wh" }
|
||||||
Number TotalElectricMeter { channel="digitalstrom:dssBridge:dSS:total_energy_wh" }
|
Number TotalElectricMeter { channel="digitalstrom:dssBridge:dSS:total_energy_wh" }
|
||||||
@ -455,7 +453,7 @@ Number Temperature { channel="digitalstrom:zoneTemperatureControl:dSS:zoneTemper
|
|||||||
|
|
||||||
### demo.sitemap:
|
### demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu"
|
sitemap demo label="Main Menu"
|
||||||
{
|
{
|
||||||
Frame label="System" {
|
Frame label="System" {
|
||||||
@ -533,8 +531,8 @@ Because the digitalSTROM-Server can't inform the binding about save scene events
|
|||||||
The current troubleshooting to read out the new scene configuration after a save scene action at the digitalSTROM-Server is the following:
|
The current troubleshooting to read out the new scene configuration after a save scene action at the digitalSTROM-Server is the following:
|
||||||
|
|
||||||
1. delete the thing to delete the persistently saved scene configuration
|
1. delete the thing to delete the persistently saved scene configuration
|
||||||
2. restart the server to delete the temporary saved scene configuration
|
1. restart the server to delete the temporary saved scene configuration
|
||||||
3. add the thing again to read out the scene configuration again.
|
1. add the thing again to read out the scene configuration again.
|
||||||
|
|
||||||
### Initial state of digitalSTROM-Scenes and devices
|
### Initial state of digitalSTROM-Scenes and devices
|
||||||
|
|
||||||
@ -542,17 +540,17 @@ To get the device and scene state after a server start or restart, the binding u
|
|||||||
Because of that there are two things to be observed:
|
Because of that there are two things to be observed:
|
||||||
|
|
||||||
1. If a device status has changed through a device scene or a directly set output value, the status is maybe not correct.
|
1. If a device status has changed through a device scene or a directly set output value, the status is maybe not correct.
|
||||||
2. If the last called group scene was not read out yet, it can takes some time until the status will be updated.
|
1. If the last called group scene was not read out yet, it can takes some time until the status will be updated.
|
||||||
|
|
||||||
### Textual configuration notice
|
### Textual configuration notice
|
||||||
|
|
||||||
If you configure your system with textual configuration files, like *\*.thing*, there is one things you have to consider.
|
If you configure your system with textual configuration files, like _\*.thing_, there is one things you have to consider.
|
||||||
|
|
||||||
* The feature of the persisting of scene-configurations, to get the scene-configurations after a restart faster (see *digitalSTROM-Scenes* above), will not support textural configured things, because the properties cannot be persist in this case.
|
- The feature of the persisting of scene-configurations, to get the scene-configurations after a restart faster (see _digitalSTROM-Scenes_ above), will not support textural configured things, because the properties cannot be persist in this case.
|
||||||
|
|
||||||
### Rule specific notice
|
### Rule specific notice
|
||||||
|
|
||||||
If you want to create a rule, which uses things of the digitalSTROM-Binding, there are also two things you have to consider.
|
If you want to create a rule, which uses things of the digitalSTROM-Binding, there are also two things you have to consider.
|
||||||
|
|
||||||
1. If the rule contains several digitalSTROM-Devices, which can be summarized in a digitalSTROM-Scene, e.g. some lights in a zone, please use an equivalent supported scene. That will significantly reduce the communication to the digitalSTROM-Server, increases performance and does not bypass the digitalSTROM state-machine.
|
1. If the rule contains several digitalSTROM-Devices, which can be summarized in a digitalSTROM-Scene, e.g. some lights in a zone, please use an equivalent supported scene. That will significantly reduce the communication to the digitalSTROM-Server, increases performance and does not bypass the digitalSTROM state-machine.
|
||||||
2. If you implement your own temperature control algorithm for a zone/room, e.g. because you want to use other temperature sensors, and call more than one digitalSTROM-BL-KM200, please use the *zone_temperature_control* for valve value control. The *zone_temperature_control* for valve value control will call all digitalSTROM-BL-KM200 with one command and increases the performance. To get the needed channel at the *zone_temperature_control* you have to choose a control mode unequal to *pid-controlled* for the affected zone at the digitalSTROM-heating-control-app.
|
1. If you implement your own temperature control algorithm for a zone/room, e.g. because you want to use other temperature sensors, and call more than one digitalSTROM-BL-KM200, please use the _zone_temperature_control_ for valve value control. The _zone_temperature_control_ for valve value control will call all digitalSTROM-BL-KM200 with one command and increases the performance. To get the needed channel at the _zone_temperature_control_ you have to choose a control mode unequal to _pid-controlled_ for the affected zone at the digitalSTROM-heating-control-app.
|
||||||
|
@ -188,7 +188,6 @@ The `dynamicturnonvalue` can be set to `true` or `false` (default).
|
|||||||
If enabled, thing overwrites the previous turn-on value with the current channel values.
|
If enabled, thing overwrites the previous turn-on value with the current channel values.
|
||||||
The next `ON` command uses these values instead of the default (or configuration supplied) values.
|
The next `ON` command uses these values instead of the default (or configuration supplied) values.
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
| Type-ID | Thing | Item | Description |
|
| Type-ID | Thing | Item | Description |
|
||||||
@ -205,7 +204,7 @@ The next `ON` command uses these values instead of the default (or configuration
|
|||||||
|switch |chaser |Switch | turns the chaser ON or OFF |
|
|switch |chaser |Switch | turns the chaser ON or OFF |
|
||||||
|mute |(all bridges) |Switch | mutes the DMX output of the bridge |
|
|mute |(all bridges) |Switch | mutes the DMX output of the bridge |
|
||||||
|
|
||||||
*Note:* the string send to the control channel of chaser things has to be formatted like the `steps` configuration of the chaser thing.
|
_Note:_ the string send to the control channel of chaser things has to be formatted like the `steps` configuration of the chaser thing.
|
||||||
If the new string is invalid, the old configuration will be used.
|
If the new string is invalid, the old configuration will be used.
|
||||||
|
|
||||||
## Rule Actions
|
## Rule Actions
|
||||||
@ -254,7 +253,7 @@ This example defines a sACN/E1.31 bridge in unicast mode which transmits univers
|
|||||||
|
|
||||||
### demo.things:
|
### demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dmx:sacn-bridge:mybridge [ mode="unicast", address="192.168.0.60", universe=2 ] {
|
Bridge dmx:sacn-bridge:mybridge [ mode="unicast", address="192.168.0.60", universe=2 ] {
|
||||||
color rgb [dmxid="5/3", fadetime=1000, dimtime=10000 ]
|
color rgb [dmxid="5/3", fadetime=1000, dimtime=10000 ]
|
||||||
dimmer single [dmxid="50", fadetime=1000, turnonvalue="230", turnoffvalue="25" ]
|
dimmer single [dmxid="50", fadetime=1000, turnonvalue="230", turnoffvalue="25" ]
|
||||||
@ -264,7 +263,7 @@ Bridge dmx:sacn-bridge:mybridge [ mode="unicast", address="192.168.0.60", univer
|
|||||||
|
|
||||||
### demo.items:
|
### demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Color MyColorItem "My Color Item" { channel="dmx:color:mybridge:rgb:color" }
|
Color MyColorItem "My Color Item" { channel="dmx:color:mybridge:rgb:color" }
|
||||||
Dimmer MyDimmerItem "My Dimmer Item" { channel="dmx:dimmer:mybridge:single:brightness" }
|
Dimmer MyDimmerItem "My Dimmer Item" { channel="dmx:dimmer:mybridge:single:brightness" }
|
||||||
Switch MyChaserItem "My Chaser Item" { channel="dmx:chaser:mybridge:ampel:switch" }
|
Switch MyChaserItem "My Chaser Item" { channel="dmx:chaser:mybridge:ampel:switch" }
|
||||||
@ -272,7 +271,7 @@ Switch MyChaserItem "My Chaser Item" { channel="dmx:chaser:mybridge:ampel:switch
|
|||||||
|
|
||||||
### demo.sitemap:
|
### demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu"
|
sitemap demo label="Main Menu"
|
||||||
{
|
{
|
||||||
Frame {
|
Frame {
|
||||||
|
@ -2,22 +2,18 @@
|
|||||||
|
|
||||||
This binding allows the control of rollershutters, using an eGate as gateway and Dominoswiss radio receivers.
|
This binding allows the control of rollershutters, using an eGate as gateway and Dominoswiss radio receivers.
|
||||||
The eGate-gateway is connected via ethernet to openHAB and sends its commands via radio to all rollershutters.
|
The eGate-gateway is connected via ethernet to openHAB and sends its commands via radio to all rollershutters.
|
||||||
See https://www.brelag.com/ for more information.
|
See <https://www.brelag.com/> for more information.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
eGate: Dominoswiss eGate Server. The eGate is the gateway which sends the commands to the connected rollershutters. The bridge-type ID is egate.
|
eGate: Dominoswiss eGate Server. The eGate is the gateway which sends the commands to the connected rollershutters. The bridge-type ID is egate.
|
||||||
Blind: represents one rollershutter, that can be controlled via eGate. The thing-type ID is blind.
|
Blind: represents one rollershutter, that can be controlled via eGate. The thing-type ID is blind.
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
Unfortunately no automatic discovery is possible due to protocol restrictions.
|
Unfortunately no automatic discovery is possible due to protocol restrictions.
|
||||||
Every rollershutter must be known by eGate and can be called by it's number of storage-place on eGate gateway.
|
Every rollershutter must be known by eGate and can be called by it's number of storage-place on eGate gateway.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
The bridge "eGate" has one channel "getconfig" which returns the config of this bridge.
|
The bridge "eGate" has one channel "getconfig" which returns the config of this bridge.
|
||||||
@ -28,14 +24,13 @@ The eGate is configured with both an `ipAddress` and a port.
|
|||||||
|ipAddress|none|Yes|The IP or host name of the Dominoswiss EGate Serve|
|
|ipAddress|none|Yes|The IP or host name of the Dominoswiss EGate Serve|
|
||||||
|port|1318|Yes|Port interface of the Dominoswiss EGate Server|
|
|port|1318|Yes|Port interface of the Dominoswiss EGate Server|
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhost", port=5700 ]
|
Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhost", port=5700 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
The thing blind represents one blind on the eGate. Each blind is represented by an id set on your eGate.
|
The thing blind represents one blind on the eGate. Each blind is represented by an id set on your eGate.
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing blind officeBlind "Office" @ "1stFloor" [ id="1"]
|
Thing blind officeBlind "Office" @ "1stFloor" [ id="1"]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -57,7 +52,7 @@ The blind-Thing has the following channels:
|
|||||||
|
|
||||||
Sample things file:
|
Sample things file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhost", port="5500" ]
|
Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhost", port="5500" ]
|
||||||
{
|
{
|
||||||
Thing blind officeBlind "Office" @ "1stFloor" [ id="1"]
|
Thing blind officeBlind "Office" @ "1stFloor" [ id="1"]
|
||||||
@ -68,7 +63,7 @@ Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhos
|
|||||||
|
|
||||||
Sample items file:
|
Sample items file:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Rollershutter OfficeBlindShutter "Office blind" <rollershutter> (g_blinds) { channel="dominoswiss:blind:myeGate:officeBlind:shutter"}
|
Rollershutter OfficeBlindShutter "Office blind" <rollershutter> (g_blinds) { channel="dominoswiss:blind:myeGate:officeBlind:shutter"}
|
||||||
|
|
||||||
Rollershutter OfficeBlindShutterTilt "Tilt Office" <rollershutter> (g_blinds_tilt) { channel="dominoswiss:blind:meGgate:bueroBlind:tilt"}
|
Rollershutter OfficeBlindShutterTilt "Tilt Office" <rollershutter> (g_blinds_tilt) { channel="dominoswiss:blind:meGgate:bueroBlind:tilt"}
|
||||||
@ -77,7 +72,7 @@ Rollershutter OfficeBlindShutterTilt "Tilt Office" <rollershutter> (g_blinds_ti
|
|||||||
|
|
||||||
Sample sitemap file
|
Sample sitemap file
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Switch item=OfficeBlindShutter
|
Switch item=OfficeBlindShutter
|
||||||
Switch item=OfficeBlindShutterTilt
|
Switch item=OfficeBlindShutterTilt
|
||||||
```
|
```
|
||||||
@ -86,7 +81,7 @@ Sample rule file
|
|||||||
|
|
||||||
This example moves the blind of the office up as the sun passed 110 azimuth (so the sun is no longer shining directly into the office).
|
This example moves the blind of the office up as the sun passed 110 azimuth (so the sun is no longer shining directly into the office).
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "OneSide up"
|
rule "OneSide up"
|
||||||
when
|
when
|
||||||
Item Azimuth changed
|
Item Azimuth changed
|
||||||
|
@ -80,9 +80,9 @@ The following channels are supported by the binding for the Doorbird A1081 Contr
|
|||||||
|
|
||||||
## Profiles
|
## Profiles
|
||||||
|
|
||||||
Using the system default switch profile *rawbutton-on-off-switch* in a *doorbell* channel item definition will cause ON/OFF
|
Using the system default switch profile _rawbutton-on-off-switch_ in a _doorbell_ channel item definition will cause ON/OFF
|
||||||
states to be set when the doorbell is pressed and released.
|
states to be set when the doorbell is pressed and released.
|
||||||
See *Items* example below.
|
See _Items_ example below.
|
||||||
|
|
||||||
## Rule Actions
|
## Rule Actions
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ Get the value of the SIP status parameter LASTERRORTEXT.
|
|||||||
|
|
||||||
Example
|
Example
|
||||||
|
|
||||||
```
|
```java
|
||||||
val actions = getActions("doorbird","doorbird:d101:doorbell")
|
val actions = getActions("doorbird","doorbird:d101:doorbell")
|
||||||
if(actions === null) {
|
if(actions === null) {
|
||||||
logInfo("actions", "Actions not found, check thing ID")
|
logInfo("actions", "Actions not found, check thing ID")
|
||||||
@ -137,7 +137,7 @@ Either put the Doorbird and openHAB on the same subnet/VLAN, or set up your netw
|
|||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing doorbird:d101:doorbell "Doorbird D101 Doorbell" [doorbirdHost="192.168.1.100",userId="dtfubb0004",userPassword="HG7afc5TvN",imageRefreshRate=60,doorbellOffDelay=3,motionOffDelay=30,montageNumImages=3,montageScaleFactor=35]
|
Thing doorbird:d101:doorbell "Doorbird D101 Doorbell" [doorbirdHost="192.168.1.100",userId="dtfubb0004",userPassword="HG7afc5TvN",imageRefreshRate=60,doorbellOffDelay=3,motionOffDelay=30,montageNumImages=3,montageScaleFactor=35]
|
||||||
|
|
||||||
Thing doorbird:a1081:controller "Doorbird A1081 Controller" [doorbirdHost="192.168.1.100",userId="dtfubb0004",userPassword="HG7afc5TvN"]
|
Thing doorbird:a1081:controller "Doorbird A1081 Controller" [doorbirdHost="192.168.1.100",userId="dtfubb0004",userPassword="HG7afc5TvN"]
|
||||||
@ -145,7 +145,7 @@ Thing doorbird:a1081:controller "Doorbird A1081 Controller" [doorbirdHost="192.1
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Doorbell_Pressed "Doorbell Pressed [%s]" <switch> ["Switch"] { channel="doorbird:d101:doorbell:doorbell" [profile="rawbutton-on-off-switch"] }
|
Switch Doorbell_Pressed "Doorbell Pressed [%s]" <switch> ["Switch"] { channel="doorbird:d101:doorbell:doorbell" [profile="rawbutton-on-off-switch"] }
|
||||||
DateTime Doorbell_PressedTimestamp "Doorbell Pressed Timestamp [%1$tA, %1$tm/%1$td/%1$tY %1$tl:%1$tM %1$tp]" <time> { channel="doorbird:d101:doorbell:doorbellTimestamp" }
|
DateTime Doorbell_PressedTimestamp "Doorbell Pressed Timestamp [%1$tA, %1$tm/%1$td/%1$tY %1$tl:%1$tM %1$tp]" <time> { channel="doorbird:d101:doorbell:doorbellTimestamp" }
|
||||||
Image Doorbell_PressedImage "Doorbell Pressed Image [%s]" { channel="doorbird:d101:doorbell:doorbellImage" }
|
Image Doorbell_PressedImage "Doorbell Pressed Image [%s]" { channel="doorbird:d101:doorbell:doorbellImage" }
|
||||||
@ -167,7 +167,7 @@ Image Doorbell_MotionMontage "Motion History Montage [%s]" { channel="doorbird:d
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Frame {
|
Frame {
|
||||||
Text label="Doorbird" {
|
Text label="Doorbird" {
|
||||||
Frame label="Image" {
|
Frame label="Image" {
|
||||||
@ -209,7 +209,7 @@ Frame {
|
|||||||
|
|
||||||
Using the doorbell trigger channel to detect if the doorbell has been pressed:
|
Using the doorbell trigger channel to detect if the doorbell has been pressed:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Doorbell Button Pressed"
|
rule "Doorbell Button Pressed"
|
||||||
when
|
when
|
||||||
Channel "doorbird:d101:doorbell:doorbell" triggered PRESSED
|
Channel "doorbird:d101:doorbell:doorbell" triggered PRESSED
|
||||||
@ -218,9 +218,9 @@ then
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, detecting a doorbell press using an item that references the *rawbutton-on-off-switch* profile:
|
Alternatively, detecting a doorbell press using an item that references the _rawbutton-on-off-switch_ profile:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Doorbell Button Pressed"
|
rule "Doorbell Button Pressed"
|
||||||
when
|
when
|
||||||
Item Doorbell_Pressed received command ON
|
Item Doorbell_Pressed received command ON
|
||||||
@ -231,7 +231,7 @@ end
|
|||||||
|
|
||||||
Using the doorbell motion channel to detect motion:
|
Using the doorbell motion channel to detect motion:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Motion Detected"
|
rule "Motion Detected"
|
||||||
when
|
when
|
||||||
Item Doorbell_Motion received command ON
|
Item Doorbell_Motion received command ON
|
||||||
|
@ -33,7 +33,7 @@ Once discovered, the HeatHub `secret` needs to be configured.
|
|||||||
There are a few ways to obtain this, assuming you have already configured the system using the Wiser App.
|
There are a few ways to obtain this, assuming you have already configured the system using the Wiser App.
|
||||||
|
|
||||||
1. Temporarily install a packet sniffing tool on your mobile device. Every request made includes the `secret` in the header.
|
1. Temporarily install a packet sniffing tool on your mobile device. Every request made includes the `secret` in the header.
|
||||||
2. Enable setup mode on the HeatHub. Connect a machine temporarily to the `WiserHeat_XXXXX` network and browse to `http://192.168.8.1/secret` to obtain the `secret`.
|
1. Enable setup mode on the HeatHub. Connect a machine temporarily to the `WiserHeat_XXXXX` network and browse to `http://192.168.8.1/secret` to obtain the `secret`.
|
||||||
|
|
||||||
The `refresh` interval defines in seconds, how often the binding will poll the controller for updates.
|
The `refresh` interval defines in seconds, how often the binding will poll the controller for updates.
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ The `awaySetPoint` defines the temperature in degrees Celsius that will be sent
|
|||||||
|
|
||||||
### .things file
|
### .things file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge draytonwiser:heathub:HeatHub [ networkAddress="192.168.1.X", refresh=60, secret="secret from hub", awaySetPoint=10 ] {
|
Bridge draytonwiser:heathub:HeatHub [ networkAddress="192.168.1.X", refresh=60, secret="secret from hub", awaySetPoint=10 ] {
|
||||||
boiler-controller controller "Controller"
|
boiler-controller controller "Controller"
|
||||||
room livingroom "Living Room" [ name="Living Room" ]
|
room livingroom "Living Room" [ name="Living Room" ]
|
||||||
@ -197,7 +197,7 @@ The `serialNumber` corresponds to the device serial number which can be found on
|
|||||||
|
|
||||||
### .items file
|
### .items file
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Heating_Override "Heating Override" <fire> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatingOverride" }
|
Switch Heating_Override "Heating Override" <fire> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatingOverride" }
|
||||||
Number Heating_Demand "Heating Demand [%.0f %%]" <heating> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatChannel1Demand" }
|
Number Heating_Demand "Heating Demand [%.0f %%]" <heating> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatChannel1Demand" }
|
||||||
Switch Heating_Requesting_Heat "Heating On" <fire> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatChannel1DemandState" }
|
Switch Heating_Requesting_Heat "Heating On" <fire> (gHouse) { channel="draytonwiser:boiler-controller:HeatHub:controller:heatChannel1DemandState" }
|
||||||
@ -236,7 +236,7 @@ Number:Humidity livingroom_humidity "Humidity [%.0f %%]" <humidity> (GF_Living)
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Text label="Living Room" icon="sofa" {
|
Text label="Living Room" icon="sofa" {
|
||||||
Text item=livingroom_temperature
|
Text item=livingroom_temperature
|
||||||
Setpoint item=livingroom_setpoint step=0.5
|
Setpoint item=livingroom_setpoint step=0.5
|
||||||
|
@ -6,10 +6,10 @@ When connecting this port from a serial port the data can be read out.
|
|||||||
|
|
||||||
This binding reads the P1-port of:
|
This binding reads the P1-port of:
|
||||||
|
|
||||||
* Dutch Smart Meters that comply to NTA8130, DSMR v2.1, DSMR v2.2, DSMR v3.0, DSMR v4.0, DSMR v4.04, and DSMR 5.0.
|
- Dutch Smart Meters that comply to NTA8130, DSMR v2.1, DSMR v2.2, DSMR v3.0, DSMR v4.0, DSMR v4.04, and DSMR 5.0.
|
||||||
* Belgium Smart Meters that comply to e-MUCS v1.0.
|
- Belgium Smart Meters that comply to e-MUCS v1.0.
|
||||||
* Luxembourg’s electricity meter "Smarty" that comply to V1.0.
|
- Luxembourg’s electricity meter "Smarty" that comply to V1.0.
|
||||||
* Austrian electricity meters.
|
- Austrian electricity meters.
|
||||||
|
|
||||||
Although DSMR v4.2 is not an official specification, the binding has support for this version.
|
Although DSMR v4.2 is not an official specification, the binding has support for this version.
|
||||||
|
|
||||||
@ -75,8 +75,7 @@ The configuration for the `smartyBridge` consists of the following parameters:
|
|||||||
| additionalKey | Additional key for meters that require a secondary key. Some meters in Austria require this |
|
| additionalKey | Additional key for meters that require a secondary key. Some meters in Austria require this |
|
||||||
| receivedTimeout | The time out period in which messages are expected to arrive, default is 120 seconds |
|
| receivedTimeout | The time out period in which messages are expected to arrive, default is 120 seconds |
|
||||||
|
|
||||||
|
**Note:** _The manual configuration is only needed if the DSMR-device requires non DSMR-standard Serial Port parameters (i.e. something different then `115200 8N1` or `9600 7E1`)_
|
||||||
**Note:** *The manual configuration is only needed if the DSMR-device requires non DSMR-standard Serial Port parameters (i.e. something different then `115200 8N1` or `9600 7E1`)*
|
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
@ -110,30 +109,30 @@ Supported meters:
|
|||||||
| ACE4000 GTMM Mk3 Gas meter | `gas_ace4000` | 3 | 1 hour |
|
| ACE4000 GTMM Mk3 Gas meter | `gas_ace4000` | 3 | 1 hour |
|
||||||
| DSMR V2.1 Gas meter | `gas_v2_1` | 0 | 24 hours |
|
| DSMR V2.1 Gas meter | `gas_v2_1` | 0 | 24 hours |
|
||||||
| DSMR V2.2 Gas meter | `gas_v2_2` | 0 | 24 hours |
|
| DSMR V2.2 Gas meter | `gas_v2_2` | 0 | 24 hours |
|
||||||
| DSMR V3.0 Gas meter | `gas_v3_0` | *note 1* | 1 hour |
|
| DSMR V3.0 Gas meter | `gas_v3_0` | _note 1_ | 1 hour |
|
||||||
| e-MUCS V1.0 Gas meter | `gas_emucs_v1_0` | *note 1* | ? |
|
| e-MUCS V1.0 Gas meter | `gas_emucs_v1_0` | _note 1_ | ? |
|
||||||
| ACE4000 GTMM Mk3 Cooling meter | `cooling_ace4000` | 6 | 1 hour |
|
| ACE4000 GTMM Mk3 Cooling meter | `cooling_ace4000` | 6 | 1 hour |
|
||||||
| DSMR V2.2 Cooling meter | `cooling_v2_2` | 0 | 1 hour |
|
| DSMR V2.2 Cooling meter | `cooling_v2_2` | 0 | 1 hour |
|
||||||
| ACE4000 GTMM Mk3 Heating meter | `heating_ace4000` | 4 | 1 hour |
|
| ACE4000 GTMM Mk3 Heating meter | `heating_ace4000` | 4 | 1 hour |
|
||||||
| DSMR V2.2 Heating meter | `heating_v2_2` | 0 | 1 hour |
|
| DSMR V2.2 Heating meter | `heating_v2_2` | 0 | 1 hour |
|
||||||
| ACE4000 GTMM Mk3 Water meter | `water_ace4000` | 5 | 1 hour |
|
| ACE4000 GTMM Mk3 Water meter | `water_ace4000` | 5 | 1 hour |
|
||||||
| DSMR V2.2 Water meter | `water_v2_2` | 0 | 1 hour |
|
| DSMR V2.2 Water meter | `water_v2_2` | 0 | 1 hour |
|
||||||
| DSMR V3.0 Water meter | `water_v3_0` | *note 1* | 1 hour |
|
| DSMR V3.0 Water meter | `water_v3_0` | _note 1_ | 1 hour |
|
||||||
| ACE4000 GTMM Mk3 1st Slave Electricity meter | `slave_electricity1_ace4000` | 1 | 1 hour |
|
| ACE4000 GTMM Mk3 1st Slave Electricity meter | `slave_electricity1_ace4000` | 1 | 1 hour |
|
||||||
| ACE4000 GTMM Mk3 2nd Slave Electricity meter | `slave_electricity2_ace4000` | 2 | 1 hour |
|
| ACE4000 GTMM Mk3 2nd Slave Electricity meter | `slave_electricity2_ace4000` | 2 | 1 hour |
|
||||||
| DSMR V4.x Slave Electricity meter | `slave_electricity_v4` | *note 1* | 1 hour |
|
| DSMR V4.x Slave Electricity meter | `slave_electricity_v4` | _note 1_ | 1 hour |
|
||||||
| DSMR V5 Slave Electricity meter | `slave_electricity_v5` | *note 1* | 5 minutes |
|
| DSMR V5 Slave Electricity meter | `slave_electricity_v5` | _note 1_ | 5 minutes |
|
||||||
| DSMR V3.0 Generic meter | `generic_v3_0` | *note 1* | 1 hour |
|
| DSMR V3.0 Generic meter | `generic_v3_0` | _note 1_ | 1 hour |
|
||||||
| DSMR V3.0 Giga Joule meter (heating or cooling) | `gj_v3_0` | *note 1* | 1 hour |
|
| DSMR V3.0 Giga Joule meter (heating or cooling) | `gj_v3_0` | _note 1_ | 1 hour |
|
||||||
| DSMR V4.x Giga Joule meter (heating or cooling) | `gj_v4` | *note 1* | 1 hour |
|
| DSMR V4.x Giga Joule meter (heating or cooling) | `gj_v4` | _note 1_ | 1 hour |
|
||||||
| DSMR V5 Giga Joule meter (heating or cooling) | `gj_v5_0` | *note 1* | 5 minutes |
|
| DSMR V5 Giga Joule meter (heating or cooling) | `gj_v5_0` | _note 1_ | 5 minutes |
|
||||||
| DSMR V4.x m3 meter (gas or water) | `m3_v4` | *note 1* | 1 hour |
|
| DSMR V4.x m3 meter (gas or water) | `m3_v4` | _note 1_ | 1 hour |
|
||||||
| DSMR V5 m3 meter (gas or water) | `m3_v5_0` | *note 1* | 5 minutes |
|
| DSMR V5 m3 meter (gas or water) | `m3_v5_0` | _note 1_ | 5 minutes |
|
||||||
|
|
||||||
*note 1*. The channel of these meters is dependent on the physical installation and corresponds to the M-Bus channel.
|
_note 1_. The channel of these meters is dependent on the physical installation and corresponds to the M-Bus channel.
|
||||||
You can ask your supplier / installer for this information or you can retrieve it from the logfiles (see *Determine M-Bus channel*).
|
You can ask your supplier / installer for this information or you can retrieve it from the logfiles (see _Determine M-Bus channel_).
|
||||||
|
|
||||||
#### Configuration
|
### Configuration
|
||||||
|
|
||||||
The configuration for the meters consists of the following parameters:
|
The configuration for the meters consists of the following parameters:
|
||||||
|
|
||||||
@ -142,10 +141,9 @@ The configuration for the meters consists of the following parameters:
|
|||||||
| refresh | Time in seconds with which the state of the device is updated. Default is 60 seconds |
|
| refresh | Time in seconds with which the state of the device is updated. Default is 60 seconds |
|
||||||
| channel | M-Bus channel. See the table above |
|
| channel | M-Bus channel. See the table above |
|
||||||
|
|
||||||
|
#### Examples
|
||||||
|
|
||||||
**Examples**
|
```java
|
||||||
|
|
||||||
```
|
|
||||||
Bridge dsmr:dsmrBridge:myDSMRDevice [serialPort="/dev/ttyUSB0"] {
|
Bridge dsmr:dsmrBridge:myDSMRDevice [serialPort="/dev/ttyUSB0"] {
|
||||||
Things:
|
Things:
|
||||||
device_v5 dsmrDeviceV5 [channel=-1]
|
device_v5 dsmrDeviceV5 [channel=-1]
|
||||||
@ -166,7 +164,6 @@ The following channels are supported:
|
|||||||
- \- channel is not supported
|
- \- channel is not supported
|
||||||
- O channel is supported only if the device has this functionality
|
- O channel is supported only if the device has this functionality
|
||||||
|
|
||||||
|
|
||||||
| Channel Type ID | Item Type | Description | Ace4000 | DSMR V2.1 | DSMR V2.2 | DSMR V3.0 | DSMR V4.0 | DSMR V4.0.4 | DSMR V4.2 | DSMR V5 | SMARTY V1.0 | e-MUCS V1.0 | Austian |
|
| Channel Type ID | Item Type | Description | Ace4000 | DSMR V2.1 | DSMR V2.2 | DSMR V3.0 | DSMR V4.0 | DSMR V4.0.4 | DSMR V4.2 | DSMR V5 | SMARTY V1.0 | e-MUCS V1.0 | Austian |
|
||||||
|--------------------------------------------------|--------------------------|------------------------------------------------------------------------|---------|-----------|-----------|-----------|-----------|-------------|-----------|---------|-------------|-------------|---------|
|
|--------------------------------------------------|--------------------------|------------------------------------------------------------------------|---------|-----------|-----------|-----------|-----------|-------------|-----------|---------|-------------|-------------|---------|
|
||||||
| | | **Channels for the generic device** | | | | | | | | | | | |
|
| | | **Channels for the generic device** | | | | | | | | | | | |
|
||||||
@ -214,8 +211,8 @@ The following channels are supported:
|
|||||||
| `emeter_power_failures` | Number | Number of power failures | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
| `emeter_power_failures` | Number | Number of power failures | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
||||||
| `emeter_long_power_failures` | Number | Number of long power failures | - | - | - | - | Y | Y | Y | Y | - | - | - |
|
| `emeter_long_power_failures` | Number | Number of long power failures | - | - | - | - | Y | Y | Y | Y | - | - | - |
|
||||||
| `emeter_power_failure_log_entries` | Number | Number of entries in the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
| `emeter_power_failure_log_entries` | Number | Number of entries in the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
||||||
| `emeter_power_failure_log_timestamp[x]` *note 2* | DateTime | Timestamp for entry [x] in the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
| `emeter_power_failure_log_timestamp[x]` _note 2_ | DateTime | Timestamp for entry [x] in the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
||||||
| `emeter_power_failure_log_duration[x]` *note 2* | Number:Time | Duration for entry [x] the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
| `emeter_power_failure_log_duration[x]` _note 2_ | Number:Time | Duration for entry [x] the power failure log | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
||||||
| `emeter_voltage_sags_l1` | Number | Number of voltage sags L1 | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
| `emeter_voltage_sags_l1` | Number | Number of voltage sags L1 | - | - | - | - | Y | Y | Y | Y | Y | - | - |
|
||||||
| `emeter_voltage_sags_l2` | Number | Number of voltage sags L2 | - | - | - | - | O | O | O | O | O | - | - |
|
| `emeter_voltage_sags_l2` | Number | Number of voltage sags L2 | - | - | - | - | O | O | O | O | O | - | - |
|
||||||
| `emeter_voltage_sags_l3` | Number | Number of voltage sags L3 | - | - | - | - | O | O | O | O | O | - | - |
|
| `emeter_voltage_sags_l3` | Number | Number of voltage sags L3 | - | - | - | - | O | O | O | O | O | - | - |
|
||||||
@ -301,7 +298,7 @@ The following channels are supported:
|
|||||||
| `wmeter_value_v3` | Number:Volume | Water Delivery past period | - | - | - | Y | - | - | - | - | - | - | - |
|
| `wmeter_value_v3` | Number:Volume | Water Delivery past period | - | - | - | Y | - | - | - | - | - | - | - |
|
||||||
| `meter_valve_switch_position` | Number | Water Meter Valve position | - | - | - | Y | - | - | - | - | - | - | - |
|
| `meter_valve_switch_position` | Number | Water Meter Valve position | - | - | - | Y | - | - | - | - | - | - | - |
|
||||||
|
|
||||||
*note 2*. The power failure log has a dynamic number of entries starting at `0`.
|
_note 2_. The power failure log has a dynamic number of entries starting at `0`.
|
||||||
So `emeter_power_failure_log_timestamp0`, `emeter_power_failure_log_duration0` refers to the first entry,
|
So `emeter_power_failure_log_timestamp0`, `emeter_power_failure_log_duration0` refers to the first entry,
|
||||||
`emeter_power_failure_log_timestamp1`, `emeter_power_failure_log_duration1` refers to the second entry, etc.
|
`emeter_power_failure_log_timestamp1`, `emeter_power_failure_log_duration1` refers to the second entry, etc.
|
||||||
|
|
||||||
@ -314,13 +311,13 @@ Channel identifier: `dsmr:<ThingTypeID>:<bridge id>:<id>:<channel type id>`
|
|||||||
|
|
||||||
The following configuration must to be added to an item configuration file. E.g. `things/dsmr.items`
|
The following configuration must to be added to an item configuration file. E.g. `things/dsmr.items`
|
||||||
|
|
||||||
```
|
```java
|
||||||
ItemType <name> "<description>" (<Group>) {channel="<Channel identifier>"}
|
ItemType <name> "<description>" (<Group>) {channel="<Channel identifier>"}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Examples**
|
##### Examples
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Energy MeterDeliveryTariff0 "Delivered Low Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff1}
|
Number:Energy MeterDeliveryTariff0 "Delivered Low Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff1}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -328,7 +325,7 @@ Number:Energy MeterDeliveryTariff0 "Delivered Low Tariff [%.3f kWh]" {channel="d
|
|||||||
|
|
||||||
`things/dsmr.things`
|
`things/dsmr.things`
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dsmr:dsmrBridge:mysmartmeter [serialPort="/dev/ttyUSB0"] {
|
Bridge dsmr:dsmrBridge:mysmartmeter [serialPort="/dev/ttyUSB0"] {
|
||||||
Things:
|
Things:
|
||||||
device_v5 dsmrV5Device [channel=-1]
|
device_v5 dsmrV5Device [channel=-1]
|
||||||
@ -338,7 +335,7 @@ Bridge dsmr:dsmrBridge:mysmartmeter [serialPort="/dev/ttyUSB0"] {
|
|||||||
|
|
||||||
`things/dsmr.items`
|
`things/dsmr.items`
|
||||||
|
|
||||||
```
|
```java
|
||||||
String P1Version "P1 Version output" {channel="dsmr:device_v5:mysmartmeter:dsmrV5Device:p1_version_output"}
|
String P1Version "P1 Version output" {channel="dsmr:device_v5:mysmartmeter:dsmrV5Device:p1_version_output"}
|
||||||
Number:Energy MeterDeliveryTariff0 "Delivered Low Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff1"}
|
Number:Energy MeterDeliveryTariff0 "Delivered Low Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff1"}
|
||||||
Number:Energy MeterDeliveryTariff1 "Delivered High Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff2"}
|
Number:Energy MeterDeliveryTariff1 "Delivered High Tariff [%.3f kWh]" {channel="dsmr:electricity_v5_0:mysmartmeter:electricityV5:emeter_delivery_tariff2"}
|
||||||
@ -351,7 +348,7 @@ By manually trigger the discovery process, you can use the logging to find out a
|
|||||||
|
|
||||||
Here you find the ThingTypeID (it is stated only in capitals) and the M-Bus channel. The above example would lead to the following Thing definition
|
Here you find the ThingTypeID (it is stated only in capitals) and the M-Bus channel. The above example would lead to the following Thing definition
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge definition {
|
Bridge definition {
|
||||||
Things:
|
Things:
|
||||||
m3_v5_0 mygasmeter [channel=1]
|
m3_v5_0 mygasmeter [channel=1]
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# DWD Pollenflug Binding
|
# DWD Pollenflug Binding
|
||||||
|
|
||||||
The "Deutsche Wetterdienst" (DWD) reports the current pollen count index for Germany on a daily base and a forecast for tomorrow and the day after tomorrow.
|
The "Deutsche Wetterdienst" (DWD) reports the current pollen count index for Germany on a daily base and a forecast for tomorrow and the day after tomorrow.
|
||||||
This binding allows you to retrieve this data for your region or partregion. You can find a map of the data here:
|
This binding allows you to retrieve this data for your region or partregion.
|
||||||
|
You can find a map of the data [here](https://isabel.dwd.de/DE/leistungen/gefahrenindizespollen/gefahrenindexpollen.html)
|
||||||
https://isabel.dwd.de/DE/leistungen/gefahrenindizespollen/gefahrenindexpollen.html
|
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
@ -30,7 +28,7 @@ This can be used for `region` things you may add manually.
|
|||||||
| ---------- | :-----: | :------: | ------------------------------------------------------------------- |
|
| ---------- | :-----: | :------: | ------------------------------------------------------------------- |
|
||||||
| `regionID` | - | yes | The id of the region. The available options are in the table below. |
|
| `regionID` | - | yes | The id of the region. The available options are in the table below. |
|
||||||
|
|
||||||
#### Manual region or partregion selection ####
|
#### Manual region or partregion selection
|
||||||
|
|
||||||
The region ID is the partregion_id or if there is no partregion the region_id from this [json](https://opendata.dwd.de/climate_environment/health/alerts/s31fg.json) of DWD.
|
The region ID is the partregion_id or if there is no partregion the region_id from this [json](https://opendata.dwd.de/climate_environment/health/alerts/s31fg.json) of DWD.
|
||||||
You can refer to the following table.
|
You can refer to the following table.
|
||||||
@ -119,18 +117,18 @@ There are the following possible string values:
|
|||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Things file for region "Brandenburg und Berlin" and partregion "Bayern - Mainfranken" ###
|
### Things file for region "Brandenburg und Berlin" and partregion "Bayern - Mainfranken"
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge dwdpollenflug:bridge:dwd "DWD pollen count Bridge" [refresh="15"] {
|
Bridge dwdpollenflug:bridge:dwd "DWD pollen count Bridge" [refresh="15"] {
|
||||||
Thing region region50 "DWD pollen count region" @ "APIS" [regionID="50"]
|
Thing region region50 "DWD pollen count region" @ "APIS" [regionID="50"]
|
||||||
Thing region partregion124 "DWD pollen count partregion" @ "APIS" [regionID="124"]
|
Thing region partregion124 "DWD pollen count partregion" @ "APIS" [regionID="124"]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Items example for region "Brandenburg und Berlin" and pollen type ash-tree ###
|
### Items example for region "Brandenburg und Berlin" and pollen type ash-tree
|
||||||
|
|
||||||
```
|
```java
|
||||||
String pollenTodayEsche
|
String pollenTodayEsche
|
||||||
"Esche [MAP(pollen.map):%s]"
|
"Esche [MAP(pollen.map):%s]"
|
||||||
{channel="dwdpollenflug:region:dwd:region50:ash#today"}
|
{channel="dwdpollenflug:region:dwd:region50:ash#today"}
|
||||||
@ -145,9 +143,9 @@ String pollenDayAfterTomorrowEsche
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Transform map file pollen.map ###
|
### Transform map file pollen.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
0=keine (0)
|
0=keine (0)
|
||||||
0-1=keine bis gering (0-1)
|
0-1=keine bis gering (0-1)
|
||||||
1=gering (1)
|
1=gering (1)
|
||||||
@ -160,9 +158,9 @@ String pollenDayAfterTomorrowEsche
|
|||||||
NULL=keine Daten
|
NULL=keine Daten
|
||||||
```
|
```
|
||||||
|
|
||||||
### Sitemap example for region "Brandenburg und Berlin" and pollen type ash-tree ###
|
### Sitemap example for region "Brandenburg und Berlin" and pollen type ash-tree
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Text label="Pollenflugindex" {
|
Text label="Pollenflugindex" {
|
||||||
Frame {
|
Frame {
|
||||||
Text item=pollenTodayEsche
|
Text item=pollenTodayEsche
|
||||||
|
@ -4,13 +4,11 @@ Binding to retrieve the Weather Warnings of the "Deutscher Wetterdienstes" from
|
|||||||
The DWD provides weather warnings for Germany.
|
The DWD provides weather warnings for Germany.
|
||||||
Regions outside of Germany are not supported.
|
Regions outside of Germany are not supported.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
This binding supports one thing, the Weather Warning.
|
This binding supports one thing, the Weather Warning.
|
||||||
Each Thing provides one or more warnings for a city.
|
Each Thing provides one or more warnings for a city.
|
||||||
|
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
| Property | Default | Required | Description |
|
| Property | Default | Required | Description |
|
||||||
@ -19,7 +17,6 @@ Each Thing provides one or more warnings for a city.
|
|||||||
| refresh | 30 | No | Time between API requests in minutes. Minimum 15 minutes. |
|
| refresh | 30 | No | Time between API requests in minutes. Minimum 15 minutes. |
|
||||||
| warningCount | 1 | No | Number of warnings to provide. |
|
| warningCount | 1 | No | Number of warnings to provide. |
|
||||||
|
|
||||||
|
|
||||||
### Cell ID
|
### Cell ID
|
||||||
<!-- See page 10-13 (in German) of https://www.dwd.de/DE/wetter/warnungen_aktuell/objekt_einbindung/einbindung_karten_geodienste.pdf?__blob=publicationFile&v=14 for Cell ID documentation. -->
|
<!-- See page 10-13 (in German) of https://www.dwd.de/DE/wetter/warnungen_aktuell/objekt_einbindung/einbindung_karten_geodienste.pdf?__blob=publicationFile&v=14 for Cell ID documentation. -->
|
||||||
Use [this list](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv) of valid IDs, please notice that **only IDs starting with an eight (8) and nine digits are supported** by this binding.
|
Use [this list](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv) of valid IDs, please notice that **only IDs starting with an eight (8) and nine digits are supported** by this binding.
|
||||||
@ -35,11 +32,10 @@ This can only happen if you select too many cell IDs (more than about 300) with
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=1 ]
|
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
The are multiple channels for every weather warning.
|
The are multiple channels for every weather warning.
|
||||||
@ -75,13 +71,13 @@ That trigger channel fires an event whenever a warning is sent for the first tim
|
|||||||
It also triggers if a warning is replaced by another.
|
It also triggers if a warning is replaced by another.
|
||||||
|
|
||||||
More explanations about the specific values of the channels can be found in the PDF documentation of the DWD at: [CAP DWD Profile 1.2](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_en_pdf_1_12.html).
|
More explanations about the specific values of the channels can be found in the PDF documentation of the DWD at: [CAP DWD Profile 1.2](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_en_pdf_1_12.html).
|
||||||
Please note that this binding only supports *Gemeinden* (COMMUNE) for *WarncellID*.
|
Please note that this binding only supports _Gemeinden_ (COMMUNE) for _WarncellID_.
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
dwdunwetter.things:
|
dwdunwetter.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=1 ]
|
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -89,13 +85,13 @@ e.g.
|
|||||||
|
|
||||||
to get two warnings like in the item example, set `warningCount=2` in things file
|
to get two warnings like in the item example, set `warningCount=2` in things file
|
||||||
|
|
||||||
```
|
```java
|
||||||
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=2 ]
|
dwdunwetter:dwdwarnings:cologne "Warnings Cologne" [ cellId="805315000", refresh=15, warningCount=2 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
dwdunwetter.items:
|
dwdunwetter.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch WarningCologne_1 "Weather warning [MAP(dwdunwetter_de.map):%s]" { channel="dwdunwetter:dwdwarnings:cologne:warning1" }
|
Switch WarningCologne_1 "Weather warning [MAP(dwdunwetter_de.map):%s]" { channel="dwdunwetter:dwdwarnings:cologne:warning1" }
|
||||||
String WarningCologneServerity_1 "Severity [MAP(dwdunwetter_severity_de.map):%s]" { channel="dwdunwetter:dwdwarnings:cologne:severity1" }
|
String WarningCologneServerity_1 "Severity [MAP(dwdunwetter_severity_de.map):%s]" { channel="dwdunwetter:dwdwarnings:cologne:severity1" }
|
||||||
String WarningCologneBeschreibung_1 "[%s]" { channel="dwdunwetter:dwdwarnings:cologne:description1" }
|
String WarningCologneBeschreibung_1 "[%s]" { channel="dwdunwetter:dwdwarnings:cologne:description1" }
|
||||||
@ -118,7 +114,7 @@ DateTime WarningCologneAusgabedatum_2 "Issued at [%s]"
|
|||||||
|
|
||||||
demo.sitemap:
|
demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu" {
|
sitemap demo label="Main Menu" {
|
||||||
Frame {
|
Frame {
|
||||||
Text item=WarningCologneTitel visibility=[WarningCologne==ON]
|
Text item=WarningCologneTitel visibility=[WarningCologne==ON]
|
||||||
@ -129,7 +125,7 @@ sitemap demo label="Main Menu" {
|
|||||||
|
|
||||||
dwdunwetter.rules
|
dwdunwetter.rules
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "New Warnung"
|
rule "New Warnung"
|
||||||
when
|
when
|
||||||
Channel 'dwdunwetter:dwdwarnings:cologne:updated1' triggered NEW
|
Channel 'dwdunwetter:dwdwarnings:cologne:updated1' triggered NEW
|
||||||
@ -141,7 +137,7 @@ end
|
|||||||
|
|
||||||
dwdunwetter_de.map
|
dwdunwetter_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
ON=aktiv
|
ON=aktiv
|
||||||
OFF=inaktiv
|
OFF=inaktiv
|
||||||
NULL=undefiniert
|
NULL=undefiniert
|
||||||
@ -150,7 +146,7 @@ UNDEF=undefiniert
|
|||||||
|
|
||||||
dwdunwetter_severity_de.map
|
dwdunwetter_severity_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
Minor=Wetterwarnung
|
Minor=Wetterwarnung
|
||||||
Moderate=Markante Wetterwarnung
|
Moderate=Markante Wetterwarnung
|
||||||
Severe=Unwetterwarnung
|
Severe=Unwetterwarnung
|
||||||
@ -161,11 +157,11 @@ UNDEF=undefiniert
|
|||||||
|
|
||||||
dwdunwetter_urgency_de.map
|
dwdunwetter_urgency_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
Immediate=Warnung
|
Immediate=Warnung
|
||||||
Future=Vorabinformation
|
Future=Vorabinformation
|
||||||
NULL=undefiniert
|
NULL=undefiniert
|
||||||
UNDEF=undefiniert
|
UNDEF=undefiniert
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're unsure if the binding is working correctly, you can access the data directly by visiting https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID%20LIKE%20%27CELL_ID%27 (replace `CELL_ID` with your Cell ID), allowing the download and opening the downloaded `.xml` file.
|
If you're unsure if the binding is working correctly, you can access the data directly by visiting `https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID%20LIKE%20%27CELL_ID%27` (replace `CELL_ID` with your Cell ID), allowing the download and opening the downloaded `.xml` file.
|
||||||
|
@ -7,7 +7,6 @@ Binding zur Abfrage von aktuellen Unwetterwarnungen des Deutschen Wetterdienstes
|
|||||||
Das Binding unterstützt genau ein Thing - Unwetterwarnungen.
|
Das Binding unterstützt genau ein Thing - Unwetterwarnungen.
|
||||||
Ein Thing stellt dabei eine oder mehrere Warnungen für eine Gemeinde bereit.
|
Ein Thing stellt dabei eine oder mehrere Warnungen für eine Gemeinde bereit.
|
||||||
|
|
||||||
|
|
||||||
## Thing Konfiguration
|
## Thing Konfiguration
|
||||||
|
|
||||||
| Property | Standard | Erforderlich | Beschreibung |
|
| Property | Standard | Erforderlich | Beschreibung |
|
||||||
@ -32,7 +31,7 @@ Dies ist bei ca. 300+ Warnungen der Fall.
|
|||||||
|
|
||||||
Beispiel:
|
Beispiel:
|
||||||
|
|
||||||
```
|
```java
|
||||||
dwdunwetter:dwdwarnings:koeln "Warnungen Köln" [ cellId="805315000", refresh=15, warningCount=1 ]
|
dwdunwetter:dwdwarnings:koeln "Warnungen Köln" [ cellId="805315000", refresh=15, warningCount=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -70,19 +69,19 @@ Der feuert immer dann, wenn eine Warnung das erste mal gesendet wird.
|
|||||||
Das heißt, der feuert auch dann, wenn eine Warnung durch eine neue Warnung ersetzt wird.
|
Das heißt, der feuert auch dann, wenn eine Warnung durch eine neue Warnung ersetzt wird.
|
||||||
|
|
||||||
Weitere Erläuterungen der Bedeutungen finden sich in der Dokumentation des DWDs unter [CAP DWD Profile 1.2](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_de_pdf.pdf?__blob=publicationFile&v=7).
|
Weitere Erläuterungen der Bedeutungen finden sich in der Dokumentation des DWDs unter [CAP DWD Profile 1.2](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_dwd_profile_de_pdf.pdf?__blob=publicationFile&v=7).
|
||||||
Bitte bedenke, dass dieses Binding nur *Gemeinden* unterstützt.
|
Bitte bedenke, dass dieses Binding nur _Gemeinden_ unterstützt.
|
||||||
|
|
||||||
## Vollständiges Beispiel
|
## Vollständiges Beispiel
|
||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
dwdunwetter:dwdwarnings:koeln "Warnungen Köln" [ cellId="805315000", refresh=15, warningCount=1 ]
|
dwdunwetter:dwdwarnings:koeln "Warnungen Köln" [ cellId="805315000", refresh=15, warningCount=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch WarnungKoeln "Warnung vorhanden" { channel="dwdunwetter:dwdwarnings:koeln:warning1" }
|
Switch WarnungKoeln "Warnung vorhanden" { channel="dwdunwetter:dwdwarnings:koeln:warning1" }
|
||||||
String WarnungKoelnServerity "Warnstufe [%s]" { channel="dwdunwetter:dwdwarnings:koeln:severity1" }
|
String WarnungKoelnServerity "Warnstufe [%s]" { channel="dwdunwetter:dwdwarnings:koeln:severity1" }
|
||||||
String WarnungKoelnBeschreibung "[%s]" { channel="dwdunwetter:dwdwarnings:koeln:description1" }
|
String WarnungKoelnBeschreibung "[%s]" { channel="dwdunwetter:dwdwarnings:koeln:description1" }
|
||||||
@ -99,7 +98,7 @@ String WarningCologneInstruction "Zusatzinformationen: [%s]" { channel="dwdunwet
|
|||||||
|
|
||||||
demo.sitemap:
|
demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Main Menu" {
|
sitemap demo label="Main Menu" {
|
||||||
Frame {
|
Frame {
|
||||||
Text item=WarnungKoelnTitel visibility=[WarnungKoeln==ON]
|
Text item=WarnungKoelnTitel visibility=[WarnungKoeln==ON]
|
||||||
@ -110,7 +109,7 @@ sitemap demo label="Main Menu" {
|
|||||||
|
|
||||||
demo.rules
|
demo.rules
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Neue Warnung"
|
rule "Neue Warnung"
|
||||||
when
|
when
|
||||||
Channel 'dwdunwetter:dwdwarnings:koeln:updated1' triggered NEW
|
Channel 'dwdunwetter:dwdwarnings:koeln:updated1' triggered NEW
|
||||||
@ -119,9 +118,10 @@ then
|
|||||||
end
|
end
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
dwdunwetter_de.map
|
dwdunwetter_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
ON=aktiv
|
ON=aktiv
|
||||||
OFF=inaktiv
|
OFF=inaktiv
|
||||||
NULL=undefiniert
|
NULL=undefiniert
|
||||||
@ -130,7 +130,7 @@ UNDEF=undefiniert
|
|||||||
|
|
||||||
dwdunwetter_severity_de.map
|
dwdunwetter_severity_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
Minor=Wetterwarnung
|
Minor=Wetterwarnung
|
||||||
Moderate=Markante Wetterwarnung
|
Moderate=Markante Wetterwarnung
|
||||||
Severe=Unwetterwarnung
|
Severe=Unwetterwarnung
|
||||||
@ -141,11 +141,11 @@ UNDEF=undefiniert
|
|||||||
|
|
||||||
dwdunwetter_urgency_de.map
|
dwdunwetter_urgency_de.map
|
||||||
|
|
||||||
```
|
```text
|
||||||
Immediate=Warnung
|
Immediate=Warnung
|
||||||
Future=Vorabinformation
|
Future=Vorabinformation
|
||||||
NULL=undefiniert
|
NULL=undefiniert
|
||||||
UNDEF=undefiniert
|
UNDEF=undefiniert
|
||||||
```
|
```
|
||||||
|
|
||||||
Wenn du unsicher bist, ob das Binding korrekt funktioniert, kannst du die Wetterdaten direkt mit deinem Browser abrufen, indem du https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID%20LIKE%20%27CELL_ID%27 (ersetze `CELL_ID` mit deiner Cell ID) besuchst, den Datei Download zulässt und die heruntergeladene `.xml` Datei öffnest.
|
Wenn du unsicher bist, ob das Binding korrekt funktioniert, kannst du die Wetterdaten direkt mit deinem Browser abrufen, indem du `https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&CQL_FILTER=WARNCELLID%20LIKE%20%27CELL_ID%27` (ersetze `CELL_ID` mit deiner Cell ID) besuchst, den Datei Download zulässt und die heruntergeladene `.xml` Datei öffnest.
|
||||||
|
@ -13,7 +13,6 @@ This binding provides three thing types:
|
|||||||
| thing | charger | the physical charger which is connected to a circuit within the given site |
|
| thing | charger | the physical charger which is connected to a circuit within the given site |
|
||||||
| thing | mastercharger | like the "normal" charger but with additional capability to control the circuit |
|
| thing | mastercharger | like the "normal" charger but with additional capability to control the circuit |
|
||||||
|
|
||||||
|
|
||||||
Basically any Easee wallbox that supports the Cloud API should automatically be supported by this binding.
|
Basically any Easee wallbox that supports the Cloud API should automatically be supported by this binding.
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
@ -28,7 +27,7 @@ The following configuration parameters are available for the binding/bridge:
|
|||||||
|-------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| username | yes | The username to login at Easee Cloud service. This should be an e-mail address or phone number. |
|
| username | yes | The username to login at Easee Cloud service. This should be an e-mail address or phone number. |
|
||||||
| passord | yes | Your password to login at Easee Cloud service. |
|
| passord | yes | Your password to login at Easee Cloud service. |
|
||||||
| siteId | yes | The ID of the site containing the wallbox(es) and circuit(s) that should be integrated into openHAB. The ID of your site can be found via the sites overview (https://easee.cloud/sites). You just need to click one of the sites listed there, the id will be part of the URL which is then opened. It will be a number with typically 6 digits. |
|
| siteId | yes | The ID of the site containing the wallbox(es) and circuit(s) that should be integrated into openHAB. The ID of your site can be found via the sites overview (<https://easee.cloud/sites>). You just need to click one of the sites listed there, the id will be part of the URL which is then opened. It will be a number with typically 6 digits. |
|
||||||
| dataPollingInterval | no | Interval (seconds) in which live data values are retrieved from the Easee Cloud API. (default = 120) |
|
| dataPollingInterval | no | Interval (seconds) in which live data values are retrieved from the Easee Cloud API. (default = 120) |
|
||||||
|
|
||||||
## Thing configuration
|
## Thing configuration
|
||||||
@ -117,23 +116,22 @@ The Master Charger is like the "normal" charger but has some extra channels to c
|
|||||||
|
|
||||||
#### Minimum configuration
|
#### Minimum configuration
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge easee:site:mysite1 [ username="abc@def.net", password="secret", siteId="123456" ]
|
Bridge easee:site:mysite1 [ username="abc@def.net", password="secret", siteId="123456" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Manual configuration with two chargers, pollingInterval set to 60 seconds.
|
#### Manual configuration with two chargers, pollingInterval set to 60 seconds.
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge easee:site:mysite1 [ username="abc@def.net", password="secret", siteId="471111", dataPollingInterval=60 ] {
|
Bridge easee:site:mysite1 [ username="abc@def.net", password="secret", siteId="471111", dataPollingInterval=60 ] {
|
||||||
Thing mastercharger myCharger1 [ id="EHXXXXX1", circuitId="1234567" ]
|
Thing mastercharger myCharger1 [ id="EHXXXXX1", circuitId="1234567" ]
|
||||||
Thing charger myCharger2 [ id="EHXXXXX2" ]
|
Thing charger myCharger2 [ id="EHXXXXX2" ]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:ElectricCurrent Easee_Circuit_Phase1 "Phase 1" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase1" }
|
Number:ElectricCurrent Easee_Circuit_Phase1 "Phase 1" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase1" }
|
||||||
Number:ElectricCurrent Easee_Circuit_Phase2 "Phase 2" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase2" }
|
Number:ElectricCurrent Easee_Circuit_Phase2 "Phase 2" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase2" }
|
||||||
Number:ElectricCurrent Easee_Circuit_Phase3 "Phase 3" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase3" }
|
Number:ElectricCurrent Easee_Circuit_Phase3 "Phase 3" { channel="easee:mastercharger:mysite1:myCharger1:dynamicCurrent#phase3" }
|
||||||
@ -143,7 +141,7 @@ Switch Easee_Charger_Start_Stop "Start / Stop"
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch item=Easee_Circuit_Dynamic_Phases mappings=["0;0;0"="0.00 kW", "6;0;0"="1.44 kW", "7;0;0"="1.68 kW", "8;0;0"="1.92 kW", "9;0;0"="2.16 kW", "10;0;0"="2.40 kW", "16;0;0"="3.72 kW", "16;16;16"="11.1 kW"] icon="energy"
|
Switch item=Easee_Circuit_Dynamic_Phases mappings=["0;0;0"="0.00 kW", "6;0;0"="1.44 kW", "7;0;0"="1.68 kW", "8;0;0"="1.92 kW", "9;0;0"="2.16 kW", "10;0;0"="2.40 kW", "16;0;0"="3.72 kW", "16;16;16"="11.1 kW"] icon="energy"
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -151,7 +149,7 @@ Switch Easee_Charger_Start_Stop "Start / Stop"
|
|||||||
|
|
||||||
easeePhases.map will make the phase setting more readable.
|
easeePhases.map will make the phase setting more readable.
|
||||||
|
|
||||||
```
|
```text
|
||||||
0;0;0=0.00 kW
|
0;0;0=0.00 kW
|
||||||
6;0;0=1.44 kW
|
6;0;0=1.44 kW
|
||||||
7;0;0=1.68 kW
|
7;0;0=1.68 kW
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# EchonetLite Binding
|
# EchonetLite Binding
|
||||||
|
|
||||||
This binding supports devices that make use of the Echonet Lite specification (https://echonet.jp/spec_v113_lite_en/).
|
This binding supports devices that make use of the [Echonet Lite specification](https://echonet.jp/spec_v113_lite_en/).
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
* Mitsubishi Electric MAC-568IF-E Wi-Fi interface (common on most Mitsubishi Heat Pumps).
|
- Mitsubishi Electric MAC-568IF-E Wi-Fi interface (common on most Mitsubishi Heat Pumps).
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
@ -19,22 +19,22 @@ It is unlikely that this configuration will require changing.
|
|||||||
The bridge configuration defaults should be applicable in most scenarios.
|
The bridge configuration defaults should be applicable in most scenarios.
|
||||||
If device discovery is not working, this is most likely caused by the inability to receive multicast traffic from the device nodes.
|
If device discovery is not working, this is most likely caused by the inability to receive multicast traffic from the device nodes.
|
||||||
|
|
||||||
* __port__: Port used for messaging both to and from device nodes, defaults to 3610.
|
- **port**: Port used for messaging both to and from device nodes, defaults to 3610.
|
||||||
* __multicastAddress__: Multicast address used to discover device nodes and to receive asynchronous notifications from devices.
|
- **multicastAddress**: Multicast address used to discover device nodes and to receive asynchronous notifications from devices.
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
* __hostname__: Hostname or IP address of the device node.
|
- **hostname**: Hostname or IP address of the device node.
|
||||||
* __port__: Port used to communicate with the device.
|
- **port**: Port used to communicate with the device.
|
||||||
* __groupCode__: Group code as specified in "APPENDIX Detailed Requirements for ECHONET Device objects" (https://echonet.jp/spec_object_rp1_en/).
|
- **groupCode**: Group code as specified in "APPENDIX Detailed Requirements for ECHONET Device objects" (<https://echonet.jp/spec_object_rp1_en/>).
|
||||||
For Air Conditioners the value is '1'.
|
For Air Conditioners the value is '1'.
|
||||||
* __classCode__: Class code for the device, see __groupCode__ for reference information.
|
- **classCode**: Class code for the device, see **groupCode** for reference information.
|
||||||
The value for Home Air Conditioners is '48' (0x30).
|
The value for Home Air Conditioners is '48' (0x30).
|
||||||
* __instance__: Instance identifier if multiple instances are running on the same IP address.
|
- **instance**: Instance identifier if multiple instances are running on the same IP address.
|
||||||
Typically, this value will be '1'.
|
Typically, this value will be '1'.
|
||||||
* __pollIntervalMs__: Interval between polls of the device for its current status.
|
- **pollIntervalMs**: Interval between polls of the device for its current status.
|
||||||
If multicast is not working this will determine the latency at which changes made directly on the device will be propagated back to openHAB, default is 30 000ms.
|
If multicast is not working this will determine the latency at which changes made directly on the device will be propagated back to openHAB, default is 30 000ms.
|
||||||
* __retryTimeoutMs__: Length of time the bridge will wait before resubmitting a request, default is 2 000ms.
|
- **retryTimeoutMs**: Length of time the bridge will wait before resubmitting a request, default is 2 000ms.
|
||||||
|
|
||||||
Because the binding uses UDP, packets can be lost on the network, so retries are necessary.
|
Because the binding uses UDP, packets can be lost on the network, so retries are necessary.
|
||||||
Testing has shown that 2 000ms is a reasonable default that allows for timely retries without rejecting slow, but legitimate responses.
|
Testing has shown that 2 000ms is a reasonable default that allows for timely retries without rejecting slow, but legitimate responses.
|
||||||
@ -42,7 +42,7 @@ Testing has shown that 2 000ms is a reasonable default that allows for timely re
|
|||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
Channels are derived from the Echonet Lite specification and vary from device to device depending on capabilities.
|
Channels are derived from the Echonet Lite specification and vary from device to device depending on capabilities.
|
||||||
The full set of potential channels is available from "APPENDIX Detailed Requirements for ECHONET Device objects" (https://echonet.jp/spec_object_rp1_en/)
|
The full set of potential channels is available from "APPENDIX Detailed Requirements for ECHONET Device objects" (<https://echonet.jp/spec_object_rp1_en/>)
|
||||||
|
|
||||||
The channels currently implemented are:
|
The channels currently implemented are:
|
||||||
|
|
||||||
@ -71,10 +71,9 @@ The channels currently implemented are:
|
|||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge echonetlite:bridge:1 [port="3610", multicastAddress="224.0.23.0"] {
|
Bridge echonetlite:bridge:1 [port="3610", multicastAddress="224.0.23.0"] {
|
||||||
Thing device HeatPump_Bedroom1 "HeatPump Bedroom 1" @ "Bedroom 1" [hostname="192.168.0.55", port="3610", groupCode="1", classCode="48", instance="1", pollIntervalMs="30000", retryTimeoutMs="2000"]
|
Thing device HeatPump_Bedroom1 "HeatPump Bedroom 1" @ "Bedroom 1" [hostname="192.168.0.55", port="3610", groupCode="1", classCode="48", instance="1", pollIntervalMs="30000", retryTimeoutMs="2000"]
|
||||||
}
|
}
|
||||||
@ -82,6 +81,6 @@ Bridge echonetlite:bridge:1 [port="3610", multicastAddress="224.0.23.0"] {
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch HeatPumpBedroom1_OperationStatus "HeatPump Bedroom1 Operation Status" {channel="echonetlite:device:1:HeatPump_Bedroom1:operationStatus"}
|
Switch HeatPumpBedroom1_OperationStatus "HeatPump Bedroom1 Operation Status" {channel="echonetlite:device:1:HeatPump_Bedroom1:operationStatus"}
|
||||||
```
|
```
|
||||||
|
@ -39,14 +39,14 @@ The following steps describe what you need to do.
|
|||||||
1. First you need to register your thermostat(s) with Ecobee.
|
1. First you need to register your thermostat(s) with Ecobee.
|
||||||
To complete this step, follow the directions in your Ecobee set up documentation.
|
To complete this step, follow the directions in your Ecobee set up documentation.
|
||||||
|
|
||||||
2. Once the thermostats are registered, the next step is to sign up as a developer.
|
1. Once the thermostats are registered, the next step is to sign up as a developer.
|
||||||
Do this from the Ecobee [developer portal](https://www.ecobee.com/developers/).
|
Do this from the Ecobee [developer portal](https://www.ecobee.com/developers/).
|
||||||
|
|
||||||
3. Now that you are set up as an Ecobee developer, login to your Ecobee [web portal](https://www.ecobee.com/).
|
1. Now that you are set up as an Ecobee developer, login to your Ecobee [web portal](https://www.ecobee.com/).
|
||||||
Once logged in, select the **Developer** option from the menu.
|
Once logged in, select the **Developer** option from the menu.
|
||||||
If you don't see the **Developer** option on the menu, then something went wrong with the previous step.
|
If you don't see the **Developer** option on the menu, then something went wrong with the previous step.
|
||||||
|
|
||||||
4. Finally, create a new application.
|
1. Finally, create a new application.
|
||||||
|
|
||||||
Give the application a name and fill in the application summary.
|
Give the application a name and fill in the application summary.
|
||||||
Select the **Ecobee PIN** Authorization Method, then press **Create**.
|
Select the **Ecobee PIN** Authorization Method, then press **Create**.
|
||||||
@ -64,7 +64,7 @@ PIN code needed to complete the authorization.
|
|||||||
The PIN code will be valid for several minutes.
|
The PIN code will be valid for several minutes.
|
||||||
The status message will look something like this.
|
The status message will look something like this.
|
||||||
|
|
||||||
```
|
```text
|
||||||
Enter PIN 'JULO-RVLA' in MyApps. PIN expires in 257 minutes.
|
Enter PIN 'JULO-RVLA' in MyApps. PIN expires in 257 minutes.
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -425,20 +425,19 @@ Some or all of the following Remote Sensor channels will be added dynamically de
|
|||||||
| dryContact | String | | Dry contact status reported by the sensor |
|
| dryContact | String | | Dry contact status reported by the sensor |
|
||||||
| vocPPM | String | | Volatile organic compounds (VOC) reported by the sensor (low-high) |
|
| vocPPM | String | | Volatile organic compounds (VOC) reported by the sensor (low-high) |
|
||||||
|
|
||||||
|
|
||||||
## Thing Actions
|
## Thing Actions
|
||||||
|
|
||||||
### Acknowledge
|
### Acknowledge
|
||||||
|
|
||||||
The acknowledge function allows an alert to be acknowledged by specifying the alert's acknowledgement ref.
|
The acknowledge function allows an alert to be acknowledged by specifying the alert's acknowledgement ref.
|
||||||
|
|
||||||
##### acknowledge - acknowledge an alert
|
#### acknowledge - acknowledge an alert
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean acknowledge(String ackRef, String ackType, Boolean remindMeLater)
|
boolean acknowledge(String ackRef, String ackType, Boolean remindMeLater)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
ackRef - The acknowledge ref of alert.
|
ackRef - The acknowledge ref of alert.
|
||||||
ackType - The type of acknowledgement. Valid values: accept, decline, defer, unacknowledged.
|
ackType - The type of acknowledgement. Valid values: accept, decline, defer, unacknowledged.
|
||||||
@ -453,13 +452,13 @@ Control the on/off state of a plug by setting a hold on the plug.
|
|||||||
Creates a hold for the on or off state of the plug for the specified duration.
|
Creates a hold for the on or off state of the plug for the specified duration.
|
||||||
Note that an event is created regardless of whether the program is in the same state as the requested state.
|
Note that an event is created regardless of whether the program is in the same state as the requested state.
|
||||||
|
|
||||||
##### controlPlug - Control the on/off state of a plug
|
#### controlPlug - Control the on/off state of a plug
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean controlPlug(String plugName, String plugState, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
boolean controlPlug(String plugName, String plugState, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
plugName - Name of plug to be controlled.
|
plugName - Name of plug to be controlled.
|
||||||
plugState - State to which plug should be set (on, off, resume).
|
plugState - State to which plug should be set (on, off, resume).
|
||||||
@ -479,13 +478,13 @@ If both the coolHoldTemp and heatHoldTemp parameters provided to this function h
|
|||||||
and the Thermostat is in auto mode, then the two values will be adjusted during processing to be
|
and the Thermostat is in auto mode, then the two values will be adjusted during processing to be
|
||||||
separated by the value stored in thermostat.settings.heatCoolMinDelta.
|
separated by the value stored in thermostat.settings.heatCoolMinDelta.
|
||||||
|
|
||||||
##### createVacation - Create a vacation event on the thermostat
|
#### createVacation - Create a vacation event on the thermostat
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean createVacation(String name, QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, Date startDateTime, Date endDateTime, String fan, Number fanMinOnTime)
|
boolean createVacation(String name, QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, Date startDateTime, Date endDateTime, String fan, Number fanMinOnTime)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
name - The vacation event name. It must be unique.
|
name - The vacation event name. It must be unique.
|
||||||
coolHoldTemp - The temperature to set the cool vacation hold at.
|
coolHoldTemp - The temperature to set the cool vacation hold at.
|
||||||
@ -504,13 +503,13 @@ The delete vacation function deletes a vacation event from a thermostat.
|
|||||||
This is the only way to cancel a vacation event.
|
This is the only way to cancel a vacation event.
|
||||||
This method is able to remove vacation events not yet started and scheduled in the future.
|
This method is able to remove vacation events not yet started and scheduled in the future.
|
||||||
|
|
||||||
##### deleteVacation - delete a vacation event from a thermostat
|
#### deleteVacation - delete a vacation event from a thermostat
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean deleteVacation(String name)
|
boolean deleteVacation(String name)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
name - Name of vacation to be deleted.
|
name - Name of vacation to be deleted.
|
||||||
|
|
||||||
@ -527,13 +526,11 @@ fields of the thermostat.settings and thermostat.program objects.
|
|||||||
Note that this does not reset all values.
|
Note that this does not reset all values.
|
||||||
For example, the installer settings and wifi details remain untouched.
|
For example, the installer settings and wifi details remain untouched.
|
||||||
|
|
||||||
##### resetPreferences - Sets all user configurable settings back to factory defaults
|
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean resetPreferences()
|
boolean resetPreferences()
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Returns - true if the operation was successful, false otherwise
|
Returns - true if the operation was successful, false otherwise
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -545,13 +542,13 @@ If resumeAll parameter is not set, top active event is removed from the stack an
|
|||||||
the thermostat resumes its program, or enters the next event in the stack if one exists.
|
the thermostat resumes its program, or enters the next event in the stack if one exists.
|
||||||
If resumeAll parameter set to true, the function resumes all events and returns the thermostat to its program.
|
If resumeAll parameter set to true, the function resumes all events and returns the thermostat to its program.
|
||||||
|
|
||||||
##### resumeProgram - Remove the currently running event
|
#### resumeProgram - Remove the currently running event
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean resumeProgram(Boolean resumeAll)
|
boolean resumeProgram(Boolean resumeAll)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
resumeAll - Indicates if the thermostat should be resumed to next event (false) or to its program (true).
|
resumeAll - Indicates if the thermostat should be resumed to next event (false) or to its program (true).
|
||||||
|
|
||||||
@ -563,13 +560,13 @@ Returns - true if the operation was successful, false otherwise
|
|||||||
The send message function allows an alert message to be sent to the thermostat.
|
The send message function allows an alert message to be sent to the thermostat.
|
||||||
The message properties are same as those of the Alert Object.
|
The message properties are same as those of the Alert Object.
|
||||||
|
|
||||||
##### - sendMessage - Send a message to a thermostat
|
#### - sendMessage - Send a message to a thermostat
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean sendMessage(String text)
|
boolean sendMessage(String text)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
text - Text of message to be sent to the thermostat.
|
text - Text of message to be sent to the thermostat.
|
||||||
|
|
||||||
@ -590,13 +587,13 @@ parameters passed into this function separately.
|
|||||||
|
|
||||||
To resume from a hold and return to the program, use the `resumeProgram` function.
|
To resume from a hold and return to the program, use the `resumeProgram` function.
|
||||||
|
|
||||||
##### setHold - Set an indefinite hold using the supplied coolHoldTemp and heatHoldTemp
|
#### setHold - Set an indefinite hold using the supplied coolHoldTemp and heatHoldTemp
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp)
|
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
coolHoldTemp - The temperature to set the cool hold at.
|
coolHoldTemp - The temperature to set the cool hold at.
|
||||||
heatHoldTemp - The temperature to set the heat hold at.
|
heatHoldTemp - The temperature to set the heat hold at.
|
||||||
@ -610,7 +607,7 @@ Returns - true if the operation was successful, false otherwise
|
|||||||
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, Number holdHours)
|
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, Number holdHours)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
coolHoldTemp - The temperature to set the cool hold at.
|
coolHoldTemp - The temperature to set the cool hold at.
|
||||||
heatHoldTemp - The temperature to set the heat hold at.
|
heatHoldTemp - The temperature to set the heat hold at.
|
||||||
@ -625,7 +622,7 @@ Returns - true if the operation was successful, false otherwise
|
|||||||
boolean setHold(String climateRef)
|
boolean setHold(String climateRef)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
climateRef - Climate to be applied to thermostat (e.g. home, away).
|
climateRef - Climate to be applied to thermostat (e.g. home, away).
|
||||||
|
|
||||||
@ -638,7 +635,7 @@ Returns - true if the operation was successful, false otherwise
|
|||||||
boolean setHold(String climateRef, Number holdHours)
|
boolean setHold(String climateRef, Number holdHours)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
climateRef - Climate to be applied to thermostat (e.g. home, away).
|
climateRef - Climate to be applied to thermostat (e.g. home, away).
|
||||||
holdHours - Duration of hold.
|
holdHours - Duration of hold.
|
||||||
@ -646,13 +643,13 @@ holdHours - Duration of hold.
|
|||||||
Returns - true if the operation was successful, false otherwise
|
Returns - true if the operation was successful, false otherwise
|
||||||
```
|
```
|
||||||
|
|
||||||
##### setHold
|
##### setHold - Quantity Type
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, String holdClimateRef, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
boolean setHold(QuantityType<Temperature> coolHoldTemp, QuantityType<Temperature> heatHoldTemp, String holdClimateRef, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
coolHoldTemp - The temperature to set the cool hold at.
|
coolHoldTemp - The temperature to set the cool hold at.
|
||||||
heatHoldTemp - The temperature to set the heat hold at.
|
heatHoldTemp - The temperature to set the heat hold at.
|
||||||
@ -665,7 +662,7 @@ holdHours - Duration of hold.
|
|||||||
Returns - true if the operation was successful, false otherwise
|
Returns - true if the operation was successful, false otherwise
|
||||||
```
|
```
|
||||||
|
|
||||||
##### setHold
|
##### setHold - Map
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean setHold(Map<String,Object> params, String holdType, Number holdHours, Date startDateTime, Date endDateTime)
|
boolean setHold(Map<String,Object> params, String holdType, Number holdHours, Date startDateTime, Date endDateTime)
|
||||||
@ -693,13 +690,13 @@ For example, if the program is currently unoccupied and you set occupied=false,
|
|||||||
will be created using the heat/cool settings of the unoccupied program climate.
|
will be created using the heat/cool settings of the unoccupied program climate.
|
||||||
If your intent is to go back to the program and remove the occupancy event, use resumeProgram instead.
|
If your intent is to go back to the program and remove the occupancy event, use resumeProgram instead.
|
||||||
|
|
||||||
##### setOccupied -
|
#### setOccupied -
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean setOccupied(Boolean occupied, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
boolean setOccupied(Boolean occupied, Date startDateTime, Date endDateTime, String holdType, Number holdHours)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
occupied - The climate to use for the temperature, occupied (true) or unoccupied (false).
|
occupied - The climate to use for the temperature, occupied (true) or unoccupied (false).
|
||||||
holdType - The hold duration type. Valid values: dateTime, nextTransition, indefinite, holdHours.
|
holdType - The hold duration type. Valid values: dateTime, nextTransition, indefinite, holdHours.
|
||||||
@ -720,13 +717,13 @@ Both of the sensors' names will be updated to ensure consistency as they are par
|
|||||||
same remote sensor enclosure.
|
same remote sensor enclosure.
|
||||||
This also reflects accurately what happens on the Thermostat itself.
|
This also reflects accurately what happens on the Thermostat itself.
|
||||||
|
|
||||||
##### updateSensor - Update the name of a sensor
|
#### updateSensor - Update the name of a sensor
|
||||||
|
|
||||||
```java
|
```java
|
||||||
boolean updateSensor(String name, String deviceId, String sensorId)
|
boolean updateSensor(String name, String deviceId, String sensorId)
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Parameters:
|
Parameters:
|
||||||
name - The updated name to give the sensor. Has a max length of 32, but shorter is recommended.
|
name - The updated name to give the sensor. Has a max length of 32, but shorter is recommended.
|
||||||
deviceId - The deviceId for the sensor, typically this indicates the enclosure and corresponds to the ThermostatRemoteSensor.id field. For example: rs:100
|
deviceId - The deviceId for the sensor, typically this indicates the enclosure and corresponds to the ThermostatRemoteSensor.id field. For example: rs:100
|
||||||
@ -737,37 +734,37 @@ Returns - true if the operation was successful, false otherwise
|
|||||||
|
|
||||||
### Get Alerts
|
### Get Alerts
|
||||||
|
|
||||||
##### getAlerts - Get the list of alerts
|
#### getAlerts - Get the list of alerts
|
||||||
|
|
||||||
```java
|
```java
|
||||||
String getAlerts()
|
String getAlerts()
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Returns - A JSON string representing the array of alerts for the thermostat, or null if there are no alerts.
|
Returns - A JSON string representing the array of alerts for the thermostat, or null if there are no alerts.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Get Events
|
### Get Events
|
||||||
|
|
||||||
##### getEvents - Get the list of events
|
#### getEvents - Get the list of events
|
||||||
|
|
||||||
```java
|
```java
|
||||||
String getEvents()
|
String getEvents()
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Returns - A JSON string representing the array of events for the thermostat, or null if there are no events.
|
Returns - A JSON string representing the array of events for the thermostat, or null if there are no events.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Get Climates
|
### Get Climates
|
||||||
|
|
||||||
##### getClimates - Get the list of climates configured on this thermostat
|
#### getClimates - Get the list of climates configured on this thermostat
|
||||||
|
|
||||||
```java
|
```java
|
||||||
String getClimates()
|
String getClimates()
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```text
|
||||||
Returns - A JSON string representing the array of climates for the thermostat.
|
Returns - A JSON string representing the array of climates for the thermostat.
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -775,7 +772,7 @@ Returns - A JSON string representing the array of climates for the thermostat.
|
|||||||
|
|
||||||
### Things
|
### Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge ecobee:account:account "Ecobee Account" [ apiKey="kjafhd4YTiucye48yn498n94c8ufn49", refreshIntervalNormal=30, refreshIntervalQuick=5, apiTimeout=20, discoveryEnabled=false ] {
|
Bridge ecobee:account:account "Ecobee Account" [ apiKey="kjafhd4YTiucye48yn498n94c8ufn49", refreshIntervalNormal=30, refreshIntervalQuick=5, apiTimeout=20, discoveryEnabled=false ] {
|
||||||
Bridge thermostat 32122305166 "Ecobee First Floor Thermostat" [ thermostatId="32122305166" ] {
|
Bridge thermostat 32122305166 "Ecobee First Floor Thermostat" [ thermostatId="32122305166" ] {
|
||||||
Thing sensor ei-0 "Ecobee Sensor Thermostat" [ sensorId="ei:0" ] {
|
Thing sensor ei-0 "Ecobee Sensor Thermostat" [ sensorId="ei:0" ] {
|
||||||
@ -802,7 +799,7 @@ Bridge ecobee:account:account "Ecobee Account" [ apiKey="kjafhd4YTiucye48yn498n9
|
|||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Group gInfo "Information"
|
Group gInfo "Information"
|
||||||
Group gRuntime "Runtime"
|
Group gRuntime "Runtime"
|
||||||
Group gEquipmentStatus "Equipment Status"
|
Group gEquipmentStatus "Equipment Status"
|
||||||
@ -1149,7 +1146,7 @@ Switch S2_Occupancy "Occupancy [%s]" <none> (gRoom2Sensor) { channel="ecobee:sen
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Frame label="Ecobee Thermostat" {
|
Frame label="Ecobee Thermostat" {
|
||||||
Group item=gInfo
|
Group item=gInfo
|
||||||
Group item=gEquipmentStatus
|
Group item=gEquipmentStatus
|
||||||
@ -1172,9 +1169,9 @@ Frame label="Ecobee Thermostat" {
|
|||||||
|
|
||||||
### Rules
|
### Rules
|
||||||
|
|
||||||
Some of the example rules below depend on the following *proxy* items.
|
Some of the example rules below depend on the following _proxy_ items.
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch SetTemperatureHold "Set Temperature Hold [%s]"
|
Switch SetTemperatureHold "Set Temperature Hold [%s]"
|
||||||
Number:Temperature UserCool "User Selected Heat [%.1f %unit%]"
|
Number:Temperature UserCool "User Selected Heat [%.1f %unit%]"
|
||||||
Number:Temperature UserHeat "User Selected Cool [%.1f %unit%]"
|
Number:Temperature UserHeat "User Selected Cool [%.1f %unit%]"
|
||||||
@ -1186,7 +1183,7 @@ Switch GetEvents "Get All Events [%s]"
|
|||||||
Switch GetClimates "Get All Climates [%s]"
|
Switch GetClimates "Get All Climates [%s]"
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Set Temperature Hold"
|
rule "Set Temperature Hold"
|
||||||
when
|
when
|
||||||
Item SetTemperatureHold received command
|
Item SetTemperatureHold received command
|
||||||
|
@ -162,13 +162,13 @@ The air heatpump has the following additional channels:
|
|||||||
|
|
||||||
### ecotouch.things
|
### ecotouch.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing ecotouch:geo:heatpump "Waterkotte Heatpump" @ "basement" [ ip="192.168.1.100", username="admin", password="wtkadmin", refresh=120 ]
|
Thing ecotouch:geo:heatpump "Waterkotte Heatpump" @ "basement" [ ip="192.168.1.100", username="admin", password="wtkadmin", refresh=120 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
### ecotouch.items
|
### ecotouch.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Temperature HeatPump_Temp_Aussen { channel="ecotouch:geo:heatpump:temperature_outside" }
|
Number:Temperature HeatPump_Temp_Aussen { channel="ecotouch:geo:heatpump:temperature_outside" }
|
||||||
Number:Temperature HeatPump_Temp_Aussen_1d { channel="ecotouch:geo:heatpump:temperature_outside_24h" }
|
Number:Temperature HeatPump_Temp_Aussen_1d { channel="ecotouch:geo:heatpump:temperature_outside_24h" }
|
||||||
Number:Temperature HeatPump_Temp_Quelle_in { channel="ecotouch:geo:heatpump:temperature_source_in" }
|
Number:Temperature HeatPump_Temp_Quelle_in { channel="ecotouch:geo:heatpump:temperature_source_in" }
|
||||||
@ -184,7 +184,7 @@ Switch HeatPump_state_sourcepump { channel="ecotouch:geo:heatpump:sta
|
|||||||
|
|
||||||
### ecotouch.sitemap
|
### ecotouch.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap ecotouch label="Waterkotte EcoTouch"
|
sitemap ecotouch label="Waterkotte EcoTouch"
|
||||||
{
|
{
|
||||||
Text item=HeatPump_Temp_Aussen
|
Text item=HeatPump_Temp_Aussen
|
||||||
@ -202,7 +202,7 @@ sitemap ecotouch label="Waterkotte EcoTouch"
|
|||||||
|
|
||||||
A snippet to show the current state of the heatpump (you need to have the corresponding items in your .items-file):
|
A snippet to show the current state of the heatpump (you need to have the corresponding items in your .items-file):
|
||||||
|
|
||||||
```
|
```java
|
||||||
Text label="State" icon="settings" {
|
Text label="State" icon="settings" {
|
||||||
Text item=HeatPump_state_sourcepump label="State Source Pump [%s]" valuecolor=[==ON="green", ==OFF="red"]
|
Text item=HeatPump_state_sourcepump label="State Source Pump [%s]" valuecolor=[==ON="green", ==OFF="red"]
|
||||||
Text item=HeatPump_state_heatingpump label="State Heating Pump [%s]" valuecolor=[==ON="green", ==OFF="red"]
|
Text item=HeatPump_state_heatingpump label="State Heating Pump [%s]" valuecolor=[==ON="green", ==OFF="red"]
|
||||||
|
@ -18,9 +18,9 @@ You have to add the thing manually.
|
|||||||
You must create an account and an application on the RTE portal to obtain the OAuth2 credentials required to access the API.
|
You must create an account and an application on the RTE portal to obtain the OAuth2 credentials required to access the API.
|
||||||
|
|
||||||
1. Open this [page](https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0), find the "Ecowatt" tile and click on the "Abonnez-vous à l'API" button.
|
1. Open this [page](https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0), find the "Ecowatt" tile and click on the "Abonnez-vous à l'API" button.
|
||||||
2. Create an account by following the instructions (you will receive an email to validate your new account).
|
1. Create an account by following the instructions (you will receive an email to validate your new account).
|
||||||
3. Once logged in, create an application by entering a name (for example "openHAB Integration"), choosing "Web Server" as type, entering any description of your choice and finally clicking on the "Valider" button.
|
1. Once logged in, create an application by entering a name (for example "openHAB Integration"), choosing "Web Server" as type, entering any description of your choice and finally clicking on the "Valider" button.
|
||||||
4. You will then see your application details, in particular the "ID client" and "ID Secret" information which you will need later to set up your binding thing.
|
1. You will then see your application details, in particular the "ID client" and "ID Secret" information which you will need later to set up your binding thing.
|
||||||
|
|
||||||
## Binding Configuration
|
## Binding Configuration
|
||||||
|
|
||||||
@ -48,13 +48,13 @@ All channels are read-only.
|
|||||||
|
|
||||||
example.things:
|
example.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing ecowatt:signals:signals "Ecowatt Signals" [ idClient="xxxxx", idSecret="yyyyy"]
|
Thing ecowatt:signals:signals "Ecowatt Signals" [ idClient="xxxxx", idSecret="yyyyy"]
|
||||||
```
|
```
|
||||||
|
|
||||||
example.items:
|
example.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number TodaySignal "Today [%s]" { channel="ecowatt:signals:signals:todaySignal" }
|
Number TodaySignal "Today [%s]" { channel="ecowatt:signals:signals:todaySignal" }
|
||||||
Number TomorrowSignal "Tomorrow [%s]" { channel="ecowatt:signals:signals:tomorrowSignal" }
|
Number TomorrowSignal "Tomorrow [%s]" { channel="ecowatt:signals:signals:tomorrowSignal" }
|
||||||
Number CurrentHourSignal "Current hour [%s]" { channel="ecowatt:signals:signals:currentHourSignal" }
|
Number CurrentHourSignal "Current hour [%s]" { channel="ecowatt:signals:signals:currentHourSignal" }
|
||||||
@ -62,7 +62,7 @@ Number CurrentHourSignal "Current hour [%s]" { channel="ecowatt:signals:signals:
|
|||||||
|
|
||||||
example.sitemap:
|
example.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Frame label="Ecowatt" {
|
Frame label="Ecowatt" {
|
||||||
Default item=TodaySignal
|
Default item=TodaySignal
|
||||||
Default item=TomorrowSignal
|
Default item=TomorrowSignal
|
||||||
|
@ -41,13 +41,13 @@ The binding uses the following configuration parameters.
|
|||||||
|
|
||||||
example.things
|
example.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing ekey:cvlan:de3b8db06e "Ekey Udp Converter" @ "Control Panel" [ ipAddress="xxx.xxx.xxx.xxx", port="56000", protocol="RARE", delimiter="_" ]
|
Thing ekey:cvlan:de3b8db06e "Ekey Udp Converter" @ "Control Panel" [ ipAddress="xxx.xxx.xxx.xxx", port="56000", protocol="RARE", delimiter="_" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
rare.items
|
rare.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
||||||
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
||||||
Number RelayID "Last relay that has been swiched [%d]" { channel="ekey:cvlan:de3b8db06e:relayId" }
|
Number RelayID "Last relay that has been swiched [%d]" { channel="ekey:cvlan:de3b8db06e:relayId" }
|
||||||
@ -58,7 +58,7 @@ Number UserID "Last user that accessed the house was [MAP(ekey_names.map):%d]" {
|
|||||||
|
|
||||||
multi.items
|
multi.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
||||||
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
||||||
String FsName "Name of Scanner [%s] { channel="ekey:cvlan:de3b8db06e:fsName" }
|
String FsName "Name of Scanner [%s] { channel="ekey:cvlan:de3b8db06e:fsName" }
|
||||||
@ -72,7 +72,7 @@ Number UserStatus "Last user that accessed the house was [MAP(ekey_names.map):%d
|
|||||||
|
|
||||||
home.items
|
home.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
Number Action "Last action [MAP(ekey_action.map):%d]" { channel="ekey:cvlan:de3b8db06e:action" }
|
||||||
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
Number FingerID "User used finger [MAP(ekey_finger.map):%d]" { channel="ekey:cvlan:de3b8db06e:fingerId" }
|
||||||
Number RelayID "Last relay that has been swiched [%d]" { channel="ekey:cvlan:de3b8db06e:relayId" }
|
Number RelayID "Last relay that has been swiched [%d]" { channel="ekey:cvlan:de3b8db06e:relayId" }
|
||||||
@ -82,7 +82,7 @@ Number UserID "Last user that accessed the house was [MAP(ekey_names.map):%d]" {
|
|||||||
|
|
||||||
transform/ekey_finger.map [This is just an example, as there is no strict rule what finger belongs to what number]
|
transform/ekey_finger.map [This is just an example, as there is no strict rule what finger belongs to what number]
|
||||||
|
|
||||||
```javascript
|
```text
|
||||||
0=leftlittle
|
0=leftlittle
|
||||||
1=leftring
|
1=leftring
|
||||||
2=leftmiddle
|
2=leftmiddle
|
||||||
@ -98,7 +98,7 @@ transform/ekey_finger.map [This is just an example, as there is no strict rule w
|
|||||||
|
|
||||||
transform/ekey_names.map [NO spaces allowed]
|
transform/ekey_names.map [NO spaces allowed]
|
||||||
|
|
||||||
```javascript
|
```text
|
||||||
-1=Unspecified
|
-1=Unspecified
|
||||||
1=JohnDoe
|
1=JohnDoe
|
||||||
2=JaneDoe
|
2=JaneDoe
|
||||||
@ -106,14 +106,14 @@ transform/ekey_names.map [NO spaces allowed]
|
|||||||
|
|
||||||
transform/ekey_terminal.map
|
transform/ekey_terminal.map
|
||||||
|
|
||||||
```javascript
|
```text
|
||||||
80156839130911=Front
|
80156839130911=Front
|
||||||
80156839130914=Back
|
80156839130914=Back
|
||||||
```
|
```
|
||||||
|
|
||||||
transform/ekey_multi_action.map
|
transform/ekey_multi_action.map
|
||||||
|
|
||||||
```javascript
|
```text
|
||||||
0=granted
|
0=granted
|
||||||
-1=rejected
|
-1=rejected
|
||||||
1=timeoutA
|
1=timeoutA
|
||||||
@ -126,10 +126,7 @@ transform/ekey_multi_action.map
|
|||||||
|
|
||||||
transform/ekey_rare_action.map
|
transform/ekey_rare_action.map
|
||||||
|
|
||||||
```javascript
|
```text
|
||||||
136=granted
|
136=granted
|
||||||
137=rejected
|
137=rejected
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,19 +12,16 @@ This binding supports the following thing types:
|
|||||||
|
|
||||||
- api: Bridge - Implements the API that is used to communicate with the Air Purifier
|
- api: Bridge - Implements the API that is used to communicate with the Air Purifier
|
||||||
|
|
||||||
|
|
||||||
- electroluxpurea9: The Pure A9 Air Purifier
|
- electroluxpurea9: The Pure A9 Air Purifier
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
After the configuration of the Bridge, your Electrolux Pure A9 device will be automatically discovered and placed as a thing in the inbox.
|
After the configuration of the Bridge, your Electrolux Pure A9 device will be automatically discovered and placed as a thing in the inbox.
|
||||||
|
|
||||||
|
|
||||||
### Configuration Options
|
### Configuration Options
|
||||||
|
|
||||||
Only the bridge require manual configuration. The Electrolux Pure A9 thing can be added by hand, or you can let the discovery mechanism automatically find it.
|
Only the bridge require manual configuration. The Electrolux Pure A9 thing can be added by hand, or you can let the discovery mechanism automatically find it.
|
||||||
|
|
||||||
|
|
||||||
#### Bridge
|
#### Bridge
|
||||||
|
|
||||||
| Parameter | Description | Type | Default | Required |
|
| Parameter | Description | Type | Default | Required |
|
||||||
@ -39,7 +36,6 @@ Only the bridge require manual configuration. The Electrolux Pure A9 thing can b
|
|||||||
|-----------|-------------------------------------------------------------------------|--------|----------|----------|
|
|-----------|-------------------------------------------------------------------------|--------|----------|----------|
|
||||||
| deviceId | Product ID of your Electrolux Pure A9 found in Electrolux Wellbeing app | Number | NA | yes |
|
| deviceId | Product ID of your Electrolux Pure A9 found in Electrolux Wellbeing app | Number | NA | yes |
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
### Electrolux Pure A9
|
### Electrolux Pure A9
|
||||||
@ -61,23 +57,22 @@ The following channels are supported:
|
|||||||
| doorOpen | Contact | This channel reports the status of door (Opened/Closed). |
|
| doorOpen | Contact | This channel reports the status of door (Opened/Closed). |
|
||||||
| workMode | String | This channel sets and reports the current work mode (Auto, Manual, PowerOff.)|
|
| workMode | String | This channel sets and reports the current work mode (Auto, Manual, PowerOff.)|
|
||||||
|
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### Things-file
|
### Things-file
|
||||||
|
|
||||||
````
|
```java
|
||||||
// Bridge configuration
|
// Bridge configuration
|
||||||
Bridge electroluxair:api:myAPI "Electrolux Delta API" [username="user@password.com", password="12345", refresh="300"] {
|
Bridge electroluxair:api:myAPI "Electrolux Delta API" [username="user@password.com", password="12345", refresh="300"] {
|
||||||
|
|
||||||
Thing electroluxpurea9 myElectroluxPureA9 "Electrolux Pure A9" [ deviceId="123456789" ]
|
Thing electroluxpurea9 myElectroluxPureA9 "Electrolux Pure A9" [ deviceId="123456789" ]
|
||||||
|
|
||||||
}
|
}
|
||||||
````
|
```
|
||||||
|
|
||||||
## Items-file
|
## Items-file
|
||||||
|
|
||||||
````
|
```java
|
||||||
// CO2
|
// CO2
|
||||||
Number ElectroluxAirCO2 "Electrolux Air CO2 [%d ppm]" {channel="electroluxair:electroluxpurea9:myAPI:MyElectroluxPureA9:co2"}
|
Number ElectroluxAirCO2 "Electrolux Air CO2 [%d ppm]" {channel="electroluxair:electroluxpurea9:myAPI:MyElectroluxPureA9:co2"}
|
||||||
// Temperature
|
// Temperature
|
||||||
@ -88,5 +83,4 @@ Contact ElectroluxAirDoor "Electrolux Air Door Status" {channel="electroluxair:e
|
|||||||
String ElectroluxAirWorkModeSetting "ElectroluxAir Work Mode Setting" {channel="electroluxair:electroluxpurea9:myAPI:myElectroluxPureA9:workMode"}
|
String ElectroluxAirWorkModeSetting "ElectroluxAir Work Mode Setting" {channel="electroluxair:electroluxpurea9:myAPI:myElectroluxPureA9:workMode"}
|
||||||
// Fan speed
|
// Fan speed
|
||||||
Number ElectroluxAirFanSpeed "Electrolux Air Fan Speed Setting" {channel="electroluxair:electroluxpurea9:myAPI:myElectroluxPureA9:fanSpeed"}
|
Number ElectroluxAirFanSpeed "Electrolux Air Fan Speed Setting" {channel="electroluxair:electroluxpurea9:myAPI:myElectroluxPureA9:fanSpeed"}
|
||||||
````
|
```
|
||||||
|
|
||||||
|
@ -77,20 +77,20 @@ SWITCHED_ON | 50 |
|
|||||||
|
|
||||||
A typical thing configuration looks like this:
|
A typical thing configuration looks like this:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge elerotransmitterstick:elerostick:0a0a0a0a [ portName="/dev/ttyElero2", updateInterval=5000 ]
|
Bridge elerotransmitterstick:elerostick:0a0a0a0a [ portName="/dev/ttyElero2", updateInterval=5000 ]
|
||||||
Thing elerotransmitterstick:elerochannel:0a0a0a0a:1 (elerotransmitterstick:elerostick:0a0a0a0a) [ channelId=1 ]
|
Thing elerotransmitterstick:elerochannel:0a0a0a0a:1 (elerotransmitterstick:elerostick:0a0a0a0a) [ channelId=1 ]
|
||||||
```
|
```
|
||||||
|
|
||||||
A typical item configuration for a rollershutter looks like this:
|
A typical item configuration for a rollershutter looks like this:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Rollershutter Rollershutter1 {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:control",autoupdate="false" }
|
Rollershutter Rollershutter1 {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:control",autoupdate="false" }
|
||||||
String Rollershutter1State {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:status" }
|
String Rollershutter1State {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:status" }
|
||||||
```
|
```
|
||||||
|
|
||||||
A sitemap entry looks like this:
|
A sitemap entry looks like this:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Selection item=Rollershutter1 label="Kitchen" mappings=[0="open", 100="closed", 25="shading"]
|
Selection item=Rollershutter1 label="Kitchen" mappings=[0="open", 100="closed", 25="shading"]
|
||||||
```
|
```
|
||||||
|
@ -18,16 +18,16 @@ Many of the sensor devices are battery powered.
|
|||||||
|
|
||||||
The ELRO Connects supported device types are:
|
The ELRO Connects supported device types are:
|
||||||
|
|
||||||
* Elro Connects account: `account`
|
- Elro Connects account: `account`
|
||||||
* K1 connector hub: `connector`
|
- K1 connector hub: `connector`
|
||||||
* Smoke detector: `smokealarm`
|
- Smoke detector: `smokealarm`
|
||||||
* Carbon monoxide detector: `coalarm`
|
- Carbon monoxide detector: `coalarm`
|
||||||
* Heat detector: `heatalarm`
|
- Heat detector: `heatalarm`
|
||||||
* Water detector: `wateralarm`
|
- Water detector: `wateralarm`
|
||||||
* Windows/door contact: `entrysensor`
|
- Windows/door contact: `entrysensor`
|
||||||
* Motion detector: `motionsensor`
|
- Motion detector: `motionsensor`
|
||||||
* Temperature and humidity monitor: `temperaturesensor`
|
- Temperature and humidity monitor: `temperaturesensor`
|
||||||
* Plug-in switch: `powersocket`
|
- Plug-in switch: `powersocket`
|
||||||
|
|
||||||
`account` is a bridge thing type that will allow automatic discovery and configuration of the available K1 connectors on the specified ELRO Connects account.
|
`account` is a bridge thing type that will allow automatic discovery and configuration of the available K1 connectors on the specified ELRO Connects account.
|
||||||
This bridge is optional.
|
This bridge is optional.
|
||||||
@ -172,7 +172,7 @@ The full syntax and help text is available in the console using the `elroconnect
|
|||||||
|
|
||||||
.things:
|
.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge elroconnects:connector:myhub [ connectorId="ST_aabbccddaabbccdd", refreshInterval=120 ] {
|
Bridge elroconnects:connector:myhub [ connectorId="ST_aabbccddaabbccdd", refreshInterval=120 ] {
|
||||||
smokealarm 1 "LivingRoom" [ deviceId="1" ]
|
smokealarm 1 "LivingRoom" [ deviceId="1" ]
|
||||||
coalarm 2 "Garage" [ deviceId="2" ]
|
coalarm 2 "Garage" [ deviceId="2" ]
|
||||||
@ -187,7 +187,7 @@ Bridge elroconnects:connector:myhub [ connectorId="ST_aabbccddaabbccdd", refresh
|
|||||||
|
|
||||||
.items:
|
.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
String Scene {channel="elroconnects:connector:myhub:scene"}
|
String Scene {channel="elroconnects:connector:myhub:scene"}
|
||||||
Number BatteryLevel {channel="elroconnects:smokealarm:myhub:1:battery"}
|
Number BatteryLevel {channel="elroconnects:smokealarm:myhub:1:battery"}
|
||||||
Switch AlarmTest {channel="elroconnects:smokealarm:myhub:1:test"}
|
Switch AlarmTest {channel="elroconnects:smokealarm:myhub:1:test"}
|
||||||
@ -195,7 +195,7 @@ Switch AlarmTest {channel="elroconnects:smokealarm:myhub:1:test"}
|
|||||||
|
|
||||||
.sitemap:
|
.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
Text item=Scene
|
Text item=Scene
|
||||||
Number item=BatteryLevel
|
Number item=BatteryLevel
|
||||||
Switch item=AlarmTest
|
Switch item=AlarmTest
|
||||||
@ -203,7 +203,7 @@ Switch item=AlarmTest
|
|||||||
|
|
||||||
Example trigger rule:
|
Example trigger rule:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "example trigger rule"
|
rule "example trigger rule"
|
||||||
when
|
when
|
||||||
Channel 'elroconnects:smokealarm:myhub:1:smokeAlarm' triggered
|
Channel 'elroconnects:smokealarm:myhub:1:smokeAlarm' triggered
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
This binding integrates the Gembird energenie range of power extenders by using the Energenie Data Exchange Protocol and power reading devices through HTTP interface.
|
This binding integrates the Gembird energenie range of power extenders by using the Energenie Data Exchange Protocol and power reading devices through HTTP interface.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
The Binding supports PM2-LAN, PMS-LAN, PMS2-LAN or PMS-WLAN power extenders as well as PWM-LAN power measurement devices.
|
The Binding supports PM2-LAN, PMS-LAN, PMS2-LAN or PMS-WLAN power extenders as well as PWM-LAN power measurement devices.
|
||||||
@ -48,7 +47,7 @@ PWM-LAN devices support the following channels
|
|||||||
|
|
||||||
Things
|
Things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing energenie:pm2lan:pm2lan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
Thing energenie:pm2lan:pm2lan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
||||||
Thing energenie:pmslan:pmslan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
Thing energenie:pmslan:pmslan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
||||||
Thing energenie:pms2lan:pms2lan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
Thing energenie:pms2lan:pms2lan [ host="xxx.xxx.xxx.xxx", password="your password" ]
|
||||||
@ -58,7 +57,7 @@ Thing energenie:pwmlan:pwmlan [ host="xxx.xxx.xxx.xxx", password="your password"
|
|||||||
|
|
||||||
Items
|
Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
//Power extenders
|
//Power extenders
|
||||||
Switch Socket1 { channel="energenie:pm2lan:pm2lan:socket1" }
|
Switch Socket1 { channel="energenie:pm2lan:pm2lan:socket1" }
|
||||||
Switch Socket2 { channel="energenie:pm2lan:pm2lan:socket2" }
|
Switch Socket2 { channel="energenie:pm2lan:pm2lan:socket2" }
|
||||||
@ -74,7 +73,7 @@ Number Energy { channel="energenie:pwmlan:pwmlan:energy" }
|
|||||||
|
|
||||||
Sitemap
|
Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap energenie label="Energenie Devices"
|
sitemap energenie label="Energenie Devices"
|
||||||
{
|
{
|
||||||
Frame {
|
Frame {
|
||||||
|
@ -34,7 +34,7 @@ Enigma2 has the following configuration parameters:
|
|||||||
|
|
||||||
Set the parameters as in the following example:
|
Set the parameters as in the following example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5", timeout="5", user="usename" , password="***"]
|
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5", timeout="5", user="usename" , password="***"]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -56,13 +56,13 @@ Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5", timeo
|
|||||||
|
|
||||||
demo.things:
|
demo.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5"]
|
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5"]
|
||||||
```
|
```
|
||||||
|
|
||||||
demo.items:
|
demo.items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch Enigma2_Power "Power: [%s]" <switch> { channel="enigma2:device:192_168_0_3:power" }
|
Switch Enigma2_Power "Power: [%s]" <switch> { channel="enigma2:device:192_168_0_3:power" }
|
||||||
Dimmer Enigma2_Volume "Volume: [%d %%]" <soundvolume> { channel="enigma2:device:192_168_0_3:volume" }
|
Dimmer Enigma2_Volume "Volume: [%d %%]" <soundvolume> { channel="enigma2:device:192_168_0_3:volume" }
|
||||||
Switch Enigma2_Mute "Mute: [%s]" <soundvolume_mute> { channel="enigma2:device:192_168_0_3:mute" }
|
Switch Enigma2_Mute "Mute: [%s]" <soundvolume_mute> { channel="enigma2:device:192_168_0_3:mute" }
|
||||||
@ -80,7 +80,7 @@ String Enigma2_SendInfo "Info" <text> { a
|
|||||||
|
|
||||||
demo.sitemap:
|
demo.sitemap:
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap demo label="Enigma2 Demo"
|
sitemap demo label="Enigma2 Demo"
|
||||||
{
|
{
|
||||||
Frame label="Enigma2" {
|
Frame label="Enigma2" {
|
||||||
@ -122,10 +122,9 @@ sitemap demo label="Enigma2 Demo"
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
demo.rules:
|
demo.rules:
|
||||||
|
|
||||||
```
|
```java
|
||||||
rule "Enigma2_KeyS"
|
rule "Enigma2_KeyS"
|
||||||
when Item Enigma2_RemoteKeys received command
|
when Item Enigma2_RemoteKeys received command
|
||||||
then
|
then
|
||||||
@ -199,7 +198,7 @@ Multiple actions are supported by this binding. In classic rules these are acces
|
|||||||
|
|
||||||
Example
|
Example
|
||||||
|
|
||||||
```
|
```java
|
||||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||||
if(null === actions) {
|
if(null === actions) {
|
||||||
logInfo("actions", "Actions not found, check thing ID")
|
logInfo("actions", "Actions not found, check thing ID")
|
||||||
@ -219,7 +218,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendInfo("Hello World")
|
actions.sendInfo("Hello World")
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -236,7 +235,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendInfo("Hello World", 10)
|
actions.sendInfo("Hello World", 10)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -252,7 +251,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendWarning("Hello World")
|
actions.sendWarning("Hello World")
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -269,7 +268,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendWarning("Hello World", 10)
|
actions.sendWarning("Hello World", 10)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -285,7 +284,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendError("Hello World")
|
actions.sendError("Hello World")
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -302,7 +301,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendError("Hello World", 10)
|
actions.sendError("Hello World", 10)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -319,7 +318,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendQuestion("Say hello?")
|
actions.sendQuestion("Say hello?")
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -337,7 +336,7 @@ Parameters:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendQuestion("Say hello?", 10)
|
actions.sendQuestion("Say hello?", 10)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -351,7 +350,6 @@ Parameters:
|
|||||||
|---------|------------------------------------------------------------------------|
|
|---------|------------------------------------------------------------------------|
|
||||||
| button | see the supported buttons in chapter 'Remote Control Buttons' |
|
| button | see the supported buttons in chapter 'Remote Control Buttons' |
|
||||||
|
|
||||||
|
|
||||||
The button parameter has only been tested on a Vu+Solo2 and this is a list of button codes that are known to work with this device.
|
The button parameter has only been tested on a Vu+Solo2 and this is a list of button codes that are known to work with this device.
|
||||||
|
|
||||||
| Code String |
|
| Code String |
|
||||||
@ -403,7 +401,6 @@ The button parameter has only been tested on a Vu+Solo2 and this is a list of bu
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
actions.sendRcCommand("KEY_1")
|
actions.sendRcCommand("KEY_1")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -35,41 +35,41 @@ This number can be chosen manually or the next free/unused number can be determi
|
|||||||
|
|
||||||
This binding is developed on and tested with the following devices
|
This binding is developed on and tested with the following devices
|
||||||
|
|
||||||
* USB300 and EnOceanPi gateways
|
- USB300 and EnOceanPi gateways
|
||||||
* The following Eltako actuators:
|
- The following Eltako actuators:
|
||||||
* FSR14 (light switch)
|
- FSR14 (light switch)
|
||||||
* FSB14 (rollershutter)
|
- FSB14 (rollershutter)
|
||||||
* FUD14 (dimmer)
|
- FUD14 (dimmer)
|
||||||
* FSSA-230V (smart plug)
|
- FSSA-230V (smart plug)
|
||||||
* FWZ12-65A (energy meter)
|
- FWZ12-65A (energy meter)
|
||||||
* FTKE (window / door contact)
|
- FTKE (window / door contact)
|
||||||
* FPE-1 & FPE-2 (window / door contact)
|
- FPE-1 & FPE-2 (window / door contact)
|
||||||
* TF-FGB (window handle)
|
- TF-FGB (window handle)
|
||||||
* TF-FKB (window contact)
|
- TF-FKB (window contact)
|
||||||
* TF-AHDSB (outdoor brightness sensor)
|
- TF-AHDSB (outdoor brightness sensor)
|
||||||
* FAFT60 (outdoor temperature & humidity sensor)
|
- FAFT60 (outdoor temperature & humidity sensor)
|
||||||
* The following Opus actuators:
|
- The following Opus actuators:
|
||||||
* GN-A-R12V-SR-4 (light)
|
- GN-A-R12V-SR-4 (light)
|
||||||
* GN-A-R12V-MF-2 (light)
|
- GN-A-R12V-MF-2 (light)
|
||||||
* GN-A-R12V-LZ/UD (dimmer)
|
- GN-A-R12V-LZ/UD (dimmer)
|
||||||
* GN-A-R12V-JRG-2 (rollershutter)
|
- GN-A-R12V-JRG-2 (rollershutter)
|
||||||
* GN-A-U230V-JRG (rollershutter)
|
- GN-A-U230V-JRG (rollershutter)
|
||||||
* OPUS-FUNK PLUS Jalousieaktor 1fach UP (rollershutter)
|
- OPUS-FUNK PLUS Jalousieaktor 1fach UP (rollershutter)
|
||||||
* OPUS-Funk PLUS Steckdosenleiste (smart multiple socket)
|
- OPUS-Funk PLUS Steckdosenleiste (smart multiple socket)
|
||||||
* NodOn:
|
- NodOn:
|
||||||
* Smart Plug (ASP-2-1-10)
|
- Smart Plug (ASP-2-1-10)
|
||||||
* In Wall Switch (SIN-2-2-00, SIN-2-1-0x)
|
- In Wall Switch (SIN-2-2-00, SIN-2-1-0x)
|
||||||
* In Wall Rollershutter (SIN-2-RS-01)
|
- In Wall Rollershutter (SIN-2-RS-01)
|
||||||
* Temperature & humidity sensor (STPH-2-1-05)
|
- Temperature & humidity sensor (STPH-2-1-05)
|
||||||
* Permundo
|
- Permundo
|
||||||
* PSC234 (smart plug with metering) = Afriso APR234
|
- PSC234 (smart plug with metering) = Afriso APR234
|
||||||
* PSC132 (smart switch actor with metering)
|
- PSC132 (smart switch actor with metering)
|
||||||
* PSC152 (smart blinds control)
|
- PSC152 (smart blinds control)
|
||||||
* Thermokon SR04 room control
|
- Thermokon SR04 room control
|
||||||
* Hoppe SecuSignal window handles
|
- Hoppe SecuSignal window handles
|
||||||
* Rocker switches (NodOn, Eltako FT55 etc)
|
- Rocker switches (NodOn, Eltako FT55 etc)
|
||||||
* Siegenia Senso Secure window sensors
|
- Siegenia Senso Secure window sensors
|
||||||
* Soda window handles
|
- Soda window handles
|
||||||
|
|
||||||
However, because of the standardized EnOcean protocol it is more important which EEP this binding supports.
|
However, because of the standardized EnOcean protocol it is more important which EEP this binding supports.
|
||||||
Hence if your device supports one of the following EEPs the chances are good that your device is also supported by this binding.
|
Hence if your device supports one of the following EEPs the chances are good that your device is also supported by this binding.
|
||||||
@ -340,7 +340,6 @@ The channels of a thing are determined automatically based on the chosen EEP.
|
|||||||
| protectionPlusEvent | Trigger | Emits event 'ALARM' |
|
| protectionPlusEvent | Trigger | Emits event 'ALARM' |
|
||||||
| vacationModeToggleEvent | Trigger | Emits events 'ACTIVATED', 'DEACTIVATED' |
|
| vacationModeToggleEvent | Trigger | Emits events 'ACTIVATED', 'DEACTIVATED' |
|
||||||
|
|
||||||
|
|
||||||
Items linked to bi-directional actuators (actuator sends status messages back) should always disable the `autoupdate`.
|
Items linked to bi-directional actuators (actuator sends status messages back) should always disable the `autoupdate`.
|
||||||
This is especially true for Eltako rollershutter, as their position is calculated out of the current position and the moving time.
|
This is especially true for Eltako rollershutter, as their position is calculated out of the current position and the moving time.
|
||||||
|
|
||||||
@ -373,7 +372,7 @@ Thing centralCommand 11223344 "Light" @ "Living room" [ enoceanId="11223344", se
|
|||||||
## Rules and Profiles
|
## Rules and Profiles
|
||||||
|
|
||||||
The rockerSwitch things use _system:rawrocker_ channel types.
|
The rockerSwitch things use _system:rawrocker_ channel types.
|
||||||
So they trigger _DIR1[/2]_\__PRESSED_ and DIR1[/2]_\__RELEASED_ events.
|
So they trigger _DIR1[/2]\___PRESSED_ and _DIR1[/2]\___RELEASED_ events.
|
||||||
These channels can be directly linked to simple items like Switch, Dimmer or Player with the help of _profiles_.
|
These channels can be directly linked to simple items like Switch, Dimmer or Player with the help of _profiles_.
|
||||||
If you want to do more advanced stuff, you have to implement rules which react to these events
|
If you want to do more advanced stuff, you have to implement rules which react to these events
|
||||||
|
|
||||||
@ -454,7 +453,7 @@ For an inbound transformation (EnOcean message => openHAB state) you receive the
|
|||||||
Your transformation function has to return the openHAB State type and value separated by a pipe.
|
Your transformation function has to return the openHAB State type and value separated by a pipe.
|
||||||
If you want to use a mapping transformation, your mapping file has to look like this for a genericThing using EEP F6_FF_FF:
|
If you want to use a mapping transformation, your mapping file has to look like this for a genericThing using EEP F6_FF_FF:
|
||||||
|
|
||||||
```
|
```text
|
||||||
ChannelId|EnoceanData(Hex)=openHABState|Value
|
ChannelId|EnoceanData(Hex)=openHABState|Value
|
||||||
genericSwitch|70=OnOffType|ON
|
genericSwitch|70=OnOffType|ON
|
||||||
genericSwitch|50=OnOffType|OFF
|
genericSwitch|50=OnOffType|OFF
|
||||||
@ -467,7 +466,7 @@ Your transformation function has to return the payload of the EnOcean message.
|
|||||||
You do not have to worry about CRC and header data.
|
You do not have to worry about CRC and header data.
|
||||||
If you want to use a mapping transformation, your mapping file has to look like this for a genericThing using EEP A5_FF_FF:
|
If you want to use a mapping transformation, your mapping file has to look like this for a genericThing using EEP A5_FF_FF:
|
||||||
|
|
||||||
```
|
```text
|
||||||
ChannelId|openHABCommand=EnoceanData(Hex)
|
ChannelId|openHABCommand=EnoceanData(Hex)
|
||||||
genericSwitch|ON=01000009
|
genericSwitch|ON=01000009
|
||||||
genericSwitch|OFF=01000008
|
genericSwitch|OFF=01000008
|
||||||
|
@ -11,9 +11,9 @@ Therefore using a refresh rate shorter doesn't provide more information.
|
|||||||
|
|
||||||
The follow things are supported:
|
The follow things are supported:
|
||||||
|
|
||||||
* `envoy` The Envoy gateway thing, which is a bridge thing.
|
- `envoy` The Envoy gateway thing, which is a bridge thing.
|
||||||
* `inverter` An Enphase micro inverter connected to a solar panel.
|
- `inverter` An Enphase micro inverter connected to a solar panel.
|
||||||
* `relay` An Enphase relay.
|
- `relay` An Enphase relay.
|
||||||
|
|
||||||
Not all Envoy gateways support all channels and things.
|
Not all Envoy gateways support all channels and things.
|
||||||
Therefore some data on inverters and the relay may not be available.
|
Therefore some data on inverters and the relay may not be available.
|
||||||
@ -87,7 +87,7 @@ The `inverter` and `relay` have the following additional advanced channels:
|
|||||||
|
|
||||||
Things example:
|
Things example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge enphase:envoy:789012 "Envoy" [ serialNumber="12345789012" ] {
|
Bridge enphase:envoy:789012 "Envoy" [ serialNumber="12345789012" ] {
|
||||||
Things:
|
Things:
|
||||||
inverter 123456 "Enphase Inverter 123456" [ serialNumber="789012123456" ]
|
inverter 123456 "Enphase Inverter 123456" [ serialNumber="789012123456" ]
|
||||||
@ -97,7 +97,7 @@ Bridge enphase:envoy:789012 "Envoy" [ serialNumber="12345789012" ] {
|
|||||||
|
|
||||||
Items example:
|
Items example:
|
||||||
|
|
||||||
```
|
```java
|
||||||
Number:Power envoyWattsNow "Watts Now [%d %unit%]" { channel="enphase:envoy:789012:production#wattsNow" }
|
Number:Power envoyWattsNow "Watts Now [%d %unit%]" { channel="enphase:envoy:789012:production#wattsNow" }
|
||||||
Number:Energy envoyWattHoursToday "Watt Hours Today [%d %unit%]" { channel="enphase:envoy:789012:production#wattHoursToday" }
|
Number:Energy envoyWattHoursToday "Watt Hours Today [%d %unit%]" { channel="enphase:envoy:789012:production#wattHoursToday" }
|
||||||
Number:Energy envoyWattHours7Days "Watt Hours 7 Days [%.1f kWh]" { channel="enphase:envoy:789012:production#wattHoursSevenDays" }
|
Number:Energy envoyWattHours7Days "Watt Hours 7 Days [%.1f kWh]" { channel="enphase:envoy:789012:production#wattHoursSevenDays" }
|
||||||
|
@ -10,7 +10,7 @@ There are several possibilities to get and process data from endpoints that entu
|
|||||||
|
|
||||||
## GraphQL request example
|
## GraphQL request example
|
||||||
|
|
||||||
```
|
```json
|
||||||
{
|
{
|
||||||
stopPlace(id: "NSR:StopPlace:30848") {
|
stopPlace(id: "NSR:StopPlace:30848") {
|
||||||
id
|
id
|
||||||
|
@ -38,28 +38,28 @@ The `projector-tcp` thing has the following configuration parameters:
|
|||||||
|
|
||||||
Some notes:
|
Some notes:
|
||||||
|
|
||||||
* The binding should work on all Epson projectors that support the ESC/VP21 protocol, however not all binding channels will be useable on all projectors.
|
- The binding should work on all Epson projectors that support the ESC/VP21 protocol, however not all binding channels will be useable on all projectors.
|
||||||
* The _source_ channel includes a dropdown with the most common source inputs.
|
- The _source_ channel includes a dropdown with the most common source inputs.
|
||||||
* If your projector has a source input that is not in the dropdown, the two character hex code to access that input will be displayed by the _source_ channel when that input is selected by the remote control.
|
- If your projector has a source input that is not in the dropdown, the two character hex code to access that input will be displayed by the _source_ channel when that input is selected by the remote control.
|
||||||
* By using the sitemap mapping or a rule to send the input's code back to the _source_ channel, any source on the projector can be accessed by the binding.
|
- By using the sitemap mapping or a rule to send the input's code back to the _source_ channel, any source on the projector can be accessed by the binding.
|
||||||
* The following channels _aspectratio_, _colormode_, _luminance_, _gamma_ and _background_ are pre-populated with a full set of options but not every option will be useable on all projectors.
|
- The following channels _aspectratio_, _colormode_, _luminance_, _gamma_ and _background_ are pre-populated with a full set of options but not every option will be useable on all projectors.
|
||||||
* If your projector has an option in one of the above mentioned channels that is not recognized by the binding, the channel will display 'UNKNOWN' if that un-recognized option is selected by the remote control.
|
- If your projector has an option in one of the above mentioned channels that is not recognized by the binding, the channel will display 'UNKNOWN' if that un-recognized option is selected by the remote control.
|
||||||
* The volume channel is a dimmer (0-100%) that is scaled to the range on the projector, either 0-20 or 0-40 per the maxVolume configuration setting. If your projector uses a different range, then the volume channel will not work.
|
- The volume channel is a dimmer (0-100%) that is scaled to the range on the projector, either 0-20 or 0-40 per the maxVolume configuration setting. If your projector uses a different range, then the volume channel will not work.
|
||||||
* If the projector power is switched to off in the middle of a polling operation, some of the channel values may become undefined until the projector is switched on again.
|
- If the projector power is switched to off in the middle of a polling operation, some of the channel values may become undefined until the projector is switched on again.
|
||||||
* If the binding fails to connect to the projector using the direct IP connection, ensure that no password is configured on the projctor.
|
- If the binding fails to connect to the projector using the direct IP connection, ensure that no password is configured on the projctor.
|
||||||
|
|
||||||
* On Linux, you may get an error stating the serial port cannot be opened when the epsonprojector binding tries to load.
|
- On Linux, you may get an error stating the serial port cannot be opened when the epsonprojector binding tries to load.
|
||||||
* You can get around this by adding the `openhab` user to the `dialout` group like this: `usermod -a -G dialout openhab`.
|
- You can get around this by adding the `openhab` user to the `dialout` group like this: `usermod -a -G dialout openhab`.
|
||||||
* Also on Linux you may have issues with the USB if using two serial USB devices e.g. epsonprojector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
|
- Also on Linux you may have issues with the USB if using two serial USB devices e.g. epsonprojector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
|
||||||
* Here is an example of ser2net.conf (for ser2net version < 4) you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the Epson projector):
|
- Here is an example of ser2net.conf (for ser2net version < 4) you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the Epson projector):
|
||||||
|
|
||||||
```
|
```text
|
||||||
4444:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT LOCAL
|
4444:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT LOCAL
|
||||||
```
|
```
|
||||||
|
|
||||||
* Here is an example of ser2net.yaml (for ser2net version >= 4) you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the Epson projector):
|
- Here is an example of ser2net.yaml (for ser2net version >= 4) you can use to share your serial port /dev/ttyUSB0 on IP port 4444 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/) (take care, the baud rate is specific to the Epson projector):
|
||||||
|
|
||||||
```
|
```yaml
|
||||||
connection: &conEpson
|
connection: &conEpson
|
||||||
accepter: tcp,4444
|
accepter: tcp,4444
|
||||||
enable: on
|
enable: on
|
||||||
@ -107,7 +107,7 @@ connection: &conEpson
|
|||||||
|
|
||||||
things/epson.things:
|
things/epson.things:
|
||||||
|
|
||||||
```
|
```java
|
||||||
// serial port connection
|
// serial port connection
|
||||||
epsonprojector:projector-serial:hometheater "Projector" [ serialPort="COM5", pollingInterval=10, maxVolume=20 ]
|
epsonprojector:projector-serial:hometheater "Projector" [ serialPort="COM5", pollingInterval=10, maxVolume=20 ]
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ epsonprojector:projector-tcp:hometheater "Projector" [ host="192.168.0.10", port
|
|||||||
|
|
||||||
items/epson.items
|
items/epson.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
Switch epsonPower { channel="epsonprojector:projector-serial:hometheater:power" }
|
Switch epsonPower { channel="epsonprojector:projector-serial:hometheater:power" }
|
||||||
String epsonSource "Source [%s]" { channel="epsonprojector:projector-serial:hometheater:source" }
|
String epsonSource "Source [%s]" { channel="epsonprojector:projector-serial:hometheater:source" }
|
||||||
String epsonAspectRatio "Aspect Ratio [%s]" { channel="epsonprojector:projector-serial:hometheater:aspectratio" }
|
String epsonAspectRatio "Aspect Ratio [%s]" { channel="epsonprojector:projector-serial:hometheater:aspectratio" }
|
||||||
@ -154,7 +154,7 @@ String epsonErrMessage "Error Message [%s]" <error> { channel="epsonprojector
|
|||||||
|
|
||||||
sitemaps/epson.sitemap
|
sitemaps/epson.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap epson label="Epson Projector"
|
sitemap epson label="Epson Projector"
|
||||||
{
|
{
|
||||||
Frame label="Controls" {
|
Frame label="Controls" {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
The Etherrain binding is used to control a sprinkler controller from Quicksmart:
|
The Etherrain binding is used to control a sprinkler controller from Quicksmart:
|
||||||
|
|
||||||
http://www.quicksmart.com/qs_etherrain.html
|
<http://www.quicksmart.com/qs_etherrain.html>
|
||||||
|
|
||||||
The API exposed by the controller is fairly robust, but it is specific.
|
The API exposed by the controller is fairly robust, but it is specific.
|
||||||
The binding attempts to map this API to an openHAB thing while perserving the functionality.
|
The binding attempts to map this API to an openHAB thing while perserving the functionality.
|
||||||
@ -14,7 +14,6 @@ The controller itself accepts a single command that contains an initial delay, a
|
|||||||
Once this execute command is sent, the controller will, first, wait the initial delay time, then cycle through each zone and turn it on the amount of time specified.
|
Once this execute command is sent, the controller will, first, wait the initial delay time, then cycle through each zone and turn it on the amount of time specified.
|
||||||
The binding exposes the rain sensor as a contact as well as the operating status of of the controller.
|
The binding exposes the rain sensor as a contact as well as the operating status of of the controller.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
The etherrain thing represents a physical Etherrain controller and contains all channels need to control it.
|
The etherrain thing represents a physical Etherrain controller and contains all channels need to control it.
|
||||||
@ -36,7 +35,7 @@ This is optional, it is recommended to let the binding discover and add Etherrai
|
|||||||
To manually configure an Etherrain controller you may specify its host name or ip ("host").
|
To manually configure an Etherrain controller you may specify its host name or ip ("host").
|
||||||
You can also optionally specify the unit's password ("pw"), port it is communicating on ("port") or refresh rate ("refresh")
|
You can also optionally specify the unit's password ("pw"), port it is communicating on ("port") or refresh rate ("refresh")
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge etherrain:etherrain:BackyardSprinkler [ host="192.168.1.100"]
|
Bridge etherrain:etherrain:BackyardSprinkler [ host="192.168.1.100"]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,7 +46,7 @@ Finally, there are commands to execute and clear the commands:
|
|||||||
|
|
||||||
items:
|
items:
|
||||||
|
|
||||||
```
|
```java
|
||||||
String SprinklerCommandStatus "Command Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:commandstatus" }
|
String SprinklerCommandStatus "Command Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:commandstatus" }
|
||||||
String SprinklerOperatingStatus "Operating Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingstatus" }
|
String SprinklerOperatingStatus "Operating Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingstatus" }
|
||||||
String SprinklerOperatingResult "Operating Result [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingresult" }
|
String SprinklerOperatingResult "Operating Result [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingresult" }
|
||||||
@ -58,4 +57,3 @@ Switch SprinklerRainSensor (gMain) { channel="etherrain:etherrain:sprinkl
|
|||||||
Switch SprinklerExecute (gMain) { channel="etherrain:etherrain:sprinkler0:execute" }
|
Switch SprinklerExecute (gMain) { channel="etherrain:etherrain:sprinkler0:execute" }
|
||||||
Switch SprinklerClear (gMain) { channel="etherrain:etherrain:sprinkler0:clear" }
|
Switch SprinklerClear (gMain) { channel="etherrain:etherrain:sprinkler0:clear" }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -23,10 +23,10 @@ No auto discovery supported.
|
|||||||
|
|
||||||
| Parameter | Type | Description | Advanced | Required |
|
| Parameter | Type | Description | Advanced | Required |
|
||||||
|-----------------|--------|----------------------------------------------------------|----------|----------|
|
|-----------------|--------|----------------------------------------------------------|----------|----------|
|
||||||
| url | String | URL of evcc web UI, e.g. *https://demo.evcc.io* | No | Yes |
|
| url | String | URL of evcc web UI, e.g. `https://demo.evcc.io` | No | Yes |
|
||||||
| refreshInterval | Number | Interval the status is polled in seconds (minimum is 15) | Yes | No |
|
| refreshInterval | Number | Interval the status is polled in seconds (minimum is 15) | Yes | No |
|
||||||
|
|
||||||
Default value for *refreshInterval* is 60 seconds.
|
Default value for _refreshInterval_ is 60 seconds.
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
@ -44,11 +44,10 @@ Please note that some of them are only available when evcc is properly configure
|
|||||||
| general#homePower | Number:Power | R | Current power taken by home. |
|
| general#homePower | Number:Power | R | Current power taken by home. |
|
||||||
| general#pvPower | Number:Power | R | Current power from photovoltaik. |
|
| general#pvPower | Number:Power | R | Current power from photovoltaik. |
|
||||||
|
|
||||||
|
|
||||||
### Loadpoint channels
|
### Loadpoint channels
|
||||||
|
|
||||||
Those channels exist per configured loadpoint.
|
Those channels exist per configured loadpoint.
|
||||||
Please note that you have to replace *N* with your loadpoint number.
|
Please note that you have to replace _N_ with your loadpoint number.
|
||||||
|
|
||||||
| Channel | Type | Read/Write | Description |
|
| Channel | Type | Read/Write | Description |
|
||||||
|-------------------------------------|------------------------|------------|-----------------------------------------------------------------------------------------------------|
|
|-------------------------------------|------------------------|------------|-----------------------------------------------------------------------------------------------------|
|
||||||
@ -84,13 +83,13 @@ Please note that you have to replace *N* with your loadpoint number.
|
|||||||
|
|
||||||
### Thing(s)
|
### Thing(s)
|
||||||
|
|
||||||
```
|
```java
|
||||||
Thing evcc:device:demo "evcc Demo" [url="https://demo.evcc.io", refreshInterval=60]
|
Thing evcc:device:demo "evcc Demo" [url="https://demo.evcc.io", refreshInterval=60]
|
||||||
```
|
```
|
||||||
|
|
||||||
### Items
|
### Items
|
||||||
|
|
||||||
```
|
```java
|
||||||
// General
|
// General
|
||||||
Number:Power evcc_demo_batteryPower "Battery Power [%.1f kW]" <energy> {channel="evcc:device:demo:general#batteryPower"}
|
Number:Power evcc_demo_batteryPower "Battery Power [%.1f kW]" <energy> {channel="evcc:device:demo:general#batteryPower"}
|
||||||
Number:Dimensionless evcc_demo_batterySoC "Battery SoC [%d %%]" <batterylevel> {channel="evcc:device:demo:general#batterySoC"}
|
Number:Dimensionless evcc_demo_batterySoC "Battery SoC [%d %%]" <batterylevel> {channel="evcc:device:demo:general#batterySoC"}
|
||||||
@ -132,7 +131,7 @@ String evcc_demo_loadpoint0_vehicleName "Vehi
|
|||||||
|
|
||||||
### Sitemap
|
### Sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap evcc label="evcc Demo" {
|
sitemap evcc label="evcc Demo" {
|
||||||
Frame label="General" {
|
Frame label="General" {
|
||||||
Text item=evcc_demo_batteryPower
|
Text item=evcc_demo_batteryPower
|
||||||
|
@ -7,16 +7,15 @@ It uses your Honeywell Total Connect Comfort account to access your locations an
|
|||||||
|
|
||||||
The binding supports the following things:
|
The binding supports the following things:
|
||||||
|
|
||||||
* evohome Account
|
- evohome Account
|
||||||
* evotouch control display
|
- evotouch control display
|
||||||
* Heating zones
|
- Heating zones
|
||||||
|
|
||||||
### evohome Account
|
### evohome Account
|
||||||
|
|
||||||
This thing functions as the bridge between all the other things.
|
This thing functions as the bridge between all the other things.
|
||||||
It contains your credentials and connects to the Honeywell web API.
|
It contains your credentials and connects to the Honeywell web API.
|
||||||
|
|
||||||
|
|
||||||
### evotouch
|
### evotouch
|
||||||
|
|
||||||
This thing represents the central display controller.
|
This thing represents the central display controller.
|
||||||
@ -70,11 +69,12 @@ None
|
|||||||
| Temperature | Number | Allows for viewing the current actual temperature of the zone. |
|
| Temperature | Number | Allows for viewing the current actual temperature of the zone. |
|
||||||
| SetPointStatus | String | Allows for viewing the current set point mode of the zone. |
|
| SetPointStatus | String | Allows for viewing the current set point mode of the zone. |
|
||||||
| SetPoint | Number | Allows for viewing and permanently overriding the temperature set point of the zone. Sending 0 cancels any active set point overrides. |
|
| SetPoint | Number | Allows for viewing and permanently overriding the temperature set point of the zone. Sending 0 cancels any active set point overrides. |
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### demo.things
|
### demo.things
|
||||||
|
|
||||||
```
|
```java
|
||||||
Bridge evohome:account:your_account_alias [ username="your_user_name", password="your_password" ]
|
Bridge evohome:account:your_account_alias [ username="your_user_name", password="your_password" ]
|
||||||
{
|
{
|
||||||
display your_display_alias [ id="1234" ]
|
display your_display_alias [ id="1234" ]
|
||||||
@ -84,7 +84,7 @@ Bridge evohome:account:your_account_alias [ username="your_user_name", password=
|
|||||||
|
|
||||||
### demo.items
|
### demo.items
|
||||||
|
|
||||||
```
|
```java
|
||||||
// evohome Display
|
// evohome Display
|
||||||
String DemoMode { channel="evohome:display:your_account_alias:your_display_alias:SystemMode" }
|
String DemoMode { channel="evohome:display:your_account_alias:your_display_alias:SystemMode" }
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ Number DemoZoneSetPoint { channel="evohome:heatingzone:your_account_alias:
|
|||||||
|
|
||||||
### demo.sitemap
|
### demo.sitemap
|
||||||
|
|
||||||
```
|
```perl
|
||||||
sitemap evohome label="evohome Menu"
|
sitemap evohome label="evohome Menu"
|
||||||
{
|
{
|
||||||
Frame label="evohome display" {
|
Frame label="evohome display" {
|
||||||
|
@ -73,14 +73,14 @@ Also note that only commands (e.g. `sendCommand`) to the `input` channel are rec
|
|||||||
|
|
||||||
## Minimal Example
|
## Minimal Example
|
||||||
|
|
||||||
**demo.things**
|
### demo.things
|
||||||
|
|
||||||
```java
|
```java
|
||||||
Thing exec:command:apc [command="/usr/local/bin/apcaccess status", interval=15, timeout=5]
|
Thing exec:command:apc [command="/usr/local/bin/apcaccess status", interval=15, timeout=5]
|
||||||
Thing exec:command:myscript [command="php ./configurations/scripts/script.php %2$s", transform="REGEX((.*?))"]
|
Thing exec:command:myscript [command="php ./configurations/scripts/script.php %2$s", transform="REGEX((.*?))"]
|
||||||
```
|
```
|
||||||
|
|
||||||
**demo.items**
|
### demo.items
|
||||||
|
|
||||||
```java
|
```java
|
||||||
String APCRaw "[%s]" (All) {channel="exec:command:apc:output"}
|
String APCRaw "[%s]" (All) {channel="exec:command:apc:output"}
|
||||||
@ -93,7 +93,7 @@ DateTime APCLastExecution {channel="exec:command:apc:lastexecution"}
|
|||||||
|
|
||||||
Following is an example how to set up an exec command thing, pass it a parameter, debug it with a rule and set the returned string to a Number Item.
|
Following is an example how to set up an exec command thing, pass it a parameter, debug it with a rule and set the returned string to a Number Item.
|
||||||
|
|
||||||
**demo.things**
|
### demo.things
|
||||||
|
|
||||||
```java
|
```java
|
||||||
// "%2$s" will be replace by the input channel command, this makes it possible to use one command line with different arguments.
|
// "%2$s" will be replace by the input channel command, this makes it possible to use one command line with different arguments.
|
||||||
@ -101,7 +101,7 @@ Following is an example how to set up an exec command thing, pass it a parameter
|
|||||||
Thing exec:command:yourcommand [ command="<YOUR COMMAND> %2$s", interval=0, autorun=false ]
|
Thing exec:command:yourcommand [ command="<YOUR COMMAND> %2$s", interval=0, autorun=false ]
|
||||||
```
|
```
|
||||||
|
|
||||||
**demo.items**
|
### demo.items
|
||||||
|
|
||||||
```java
|
```java
|
||||||
Switch YourTrigger "External trigger [%s]"
|
Switch YourTrigger "External trigger [%s]"
|
||||||
@ -115,7 +115,7 @@ String yourcommand_Args {channel="exec:command:yourcommand:input"}
|
|||||||
String yourcommand_Out {channel="exec:command:yourcommand:output"}
|
String yourcommand_Out {channel="exec:command:yourcommand:output"}
|
||||||
```
|
```
|
||||||
|
|
||||||
**demo.sitemap**
|
### demo.sitemap
|
||||||
|
|
||||||
```java
|
```java
|
||||||
// Name of file and name of sitemap has to be the same
|
// Name of file and name of sitemap has to be the same
|
||||||
@ -128,7 +128,7 @@ sitemap demo label="Your Value"
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**demo.rules**
|
### demo.rules
|
||||||
|
|
||||||
```java
|
```java
|
||||||
rule "Set up your parameters"
|
rule "Set up your parameters"
|
||||||
|
Loading…
Reference in New Issue
Block a user