It enables you to authenticate, control, and obtain information of a Light Panel's device.
The binding uses the [Nanoleaf OpenAPI](https://forum.nanoleaf.me/docs/openapi), which requires firmware version [1.5.0](https://helpdesk.nanoleaf.me/hc/en-us/articles/214006129-Light-Panels-Firmware-Release-Notes) or higher.
-  
+  
## Supported Things
Each individual panel has therefore its own id assigned to it.
You can set the **color** for each panel and in the case of a Nanoleaf Canvas or Shapes you can even detect single / double **touch events** related to an individual panel or **swipe events** on the whole device which opens a whole new world of controlling any other device within your openHAB environment.
-
| Nanoleaf Name | Type | Description | supported | touch support |
| ---------------------- | ---- | ---------------------------------------------------------- | --------- | ------------- |
| Light Panels | NL22 | Triangles 1st Generation | X | - |
## Discovery
-**Adding the Controller as a Thing**
+### Adding the Controller as a Thing
To add a nanoleaf controller, go to your inbox and start a scan.
Then choose "Nanoleaf Binding".
The binding supports pairing of the device with your openHAB instance as follows:
1. Make sure that the authentication token field in your Nanoleaf controller thing configuration is left empty.
-2. Hold down the on-off button of the controller for 5-7 seconds until the LED starts flashing/cycling in a pattern, which turns the device in pairing mode, and openHAB will try to request an authentication token for it.
+1. Hold down the on-off button of the controller for 5-7 seconds until the LED starts flashing/cycling in a pattern, which turns the device in pairing mode, and openHAB will try to request an authentication token for it.
Once your openHAB instance successfully requested and stored the authentication token in the controller's thing configuration, the controller status changes to ONLINE, and you can start linking the channels to your items.
Tip: if you press (2) just before adding the item from the inbox it usually catches the auth token right away and if you are lucky it already automatically starts discovering the panels in one turn (see below).
-**Adding the invidual light panels as a thing**
+### Adding the invidual light panels as a thing
After you have added the controller as a thing and it has been successfully paired as described as above, the individual panels connected to it can be discovered by **starting another scan** for the Nanoleaf binding.
All connected panels will be added as separate things to the inbox.
### Panel Layout
-If you want to program individual panels, it can be hard to figure out which panel has which ID. To make this easier, there is Layout channel on the Nanoleaf controller thing in openHAB.
-The easiest way to visualize the layout of the individual panels is to open the controller thing in the openHAB UI, go to Channels and add a new item to the Layout channel.
+If you want to program individual panels, it can be hard to figure out which panel has which ID. To make this easier, there is Layout channel on the Nanoleaf controller thing in openHAB.
+The easiest way to visualize the layout of the individual panels is to open the controller thing in the openHAB UI, go to Channels and add a new item to the Layout channel.
Clicking on that image or adding it to a dashboard will show a picture of your canvas with the individual thing ID in the picture.
If your canvas has elements we dont know how to draw a layout for yet, please reach out, and we will ask for some information and will try to add support for your elements.
then issue the following command:
-```
+```shell
openhab:nanoleaf layout [<thingUID>]
```
Compare the following output with the right picture at the beginning of the article
-```
+```text
31413 9162 13276
55836 56093 48111 38724 17870 5164 64279
## State
The state channel shows an image of the panels on the wall.
-You have to configure things for each panel to get the correct color.
+You have to configure things for each panel to get the correct color.
Since the colors of the panels can make it difficult to see the panel ids, please use the layout channel where the background color is always white to identify them.
For state to work, you need to set static colors to your panel.
This is because Nanoleaf does not return updates on colors for dynamic effects and animations.
| state | Image | Shows the current state of your panels with colors. | Yes |
| swipe | Trigger | [Canvas / Shapes Only] Detects Swipes over the panel.LEFT, RIGHT, UP, DOWN events are supported. | Yes |
-
-
A lightpanel thing has the following channels:
| Channel | Type | Description | Read Only |
| tap | Trigger | [Canvas / Shapes Only] Sends events of gestures. SHORT_PRESSED, LONG_PRESSED and DOUBLE_PRESSED events are supported. | Yes |
The color channels support full color control with hue, saturation and brightness values.
-For example, brightness of *all* panels at once can be controlled by defining a dimmer item for the color channel of the *controller thing*.
+For example, brightness of _all_ panels at once can be controlled by defining a dimmer item for the color channel of the _controller thing_.
The same applies to the color channel of an individual lightpanel.
-**Limitations assigning specific colors on individual panels:**
+### Limitations assigning specific colors on individual panels:
- Due to the way the API of the nanoleaf is designed, each time a color is assigned to a panel, it will be directly sent to that panel. The result is that if you send colors to several panels more or less at the same time, they will not be set at the same time but one after the other and rather appear like a sequence but as a one shot.
- Another important limitation is that individual panels cannot be set while a dynamic effect is running on the panel which means that as soon as you set an individual panel the "static effect" is set, which disables the chosen dynamic effect. The nanoleaf app shows that a static effect is now running, too.
- The colors of the current state cannot be retrieved due to the high frequency of color changes that cannot be read quickly enough from the canvas, so all panels go to OFF
- The first panelColor command is applied to that panel (and of course then all subsequent commands)
-- The fact that it is called a static effect does not mean that you cannot create animations. The Rainbow rule below shows a good example for the whole canvas. Just replace the controller item with a panel item and you will get the rainbow effect with an individual panel.
+- The fact that it is called a static effect does not mean that you cannot create animations. The Rainbow rule below shows a good example for the whole canvas. Just replace the controller item with a panel item and you will get the rainbow effect with an individual panel.
-**Touch Support**
+### Touch Support
Nanoleaf's Canvas introduces a whole new experience by supporting touch. This allows single and double taps on individual panels to be detected and processed via rules.
The four swipe gestures are supported by the binding.
See below for an example on how to use it.
-To detect single and double taps the panel provides a *tap* channel while the controller provides a *swipe* channel to detect swipes.
+To detect single and double taps the panel provides a _tap_ channel while the controller provides a _swipe_ channel to detect swipes.
Keep in mind that the double tap is used as an already built-in functionality by default when you buy the nanoleaf: it switches all panels (hence the controller) to on or off like a light switch for all the panels at once.
To circumvent that
### nanoleaf.things
-```
+```java
Bridge nanoleaf:controller:MyLightPanels @ "mylocation" [ address="192.168.1.100", port=16021, authToken="AbcDefGhiJk879LmNopqRstUv1234WxyZ", refreshInterval=60 ] {
Thing lightpanel 135 [ id=135 ]
Thing lightpanel 158 [ id=158 ]
If you define your device statically in the thing file, auto-discovery of the same thing is suppressed by using
-* the [address="..." ] of the controller
-* and the [id=123] of the lightpanel
+- the [address="..." ] of the controller
+- and the [id=123] of the lightpanel
in the bracket to identify the uniqueness of the discovered device. Therefore it is recommended to the give the controller a fixed ip address.
Note: To generate the `authToken`:
-* On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing.
-* Send a POST request to the authorization endpoint within 30 seconds of activating pairing, like this:
+- On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing.
+- Send a POST request to the authorization endpoint within 30 seconds of activating pairing, like this:
`http://<address>:16021/api/v1/new`
- A controller item looks like nanoleaf:controller:F0ED4F9351AF:power where F0ED4F9351AF is the id of the controller that has been automatically assigned by the binding.
- A panel item looks like nanoleaf:lightpanel:F0ED4F9351AF:39755:singleTap where 39755 is the id of the panel that has been automatically assigned by the binding.
-```
+```java
Switch NanoleafPower "Nanoleaf" { channel="nanoleaf:controller:MyLightPanels:color" }
Color NanoleafColor "Color" { channel="nanoleaf:controller:MyLightPanels:color" }
Dimmer NanoleafBrightness "Brightness [%.0f]" { channel="nanoleaf:controller:MyLightPanels:color" }
### nanoleaf.sitemap
-```
+```perl
sitemap nanoleaf label="Nanoleaf"
{
Frame label="Controller" {
### nanoleaf.rules
-```
+```java
rule "UpdateHueAndSat"
when Item NanoleafColor changed
then
end
```
-
### nanoleaf.map
-```
+```text
ON = Yes
OFF = No
effects = Effect
This binding is used to connect your openHAB system with Neato web (where you log in and find Your Neato's).
The binding supports discovery via configuring your login and password to a bridge.
-From the binding, you will get status of your vacuum cleaners and also a command channel where you can control them. Since the binding uses a polling mechanism, there may be some latency depending on your setting regarding refresh time.
+From the binding, you will get status of your vacuum cleaners and also a command channel where you can control them. Since the binding uses a polling mechanism, there may be some latency depending on your setting regarding refresh time.
-For log in transaction, the binding uses Neato Beehive API and for status and control, the binding uses Nucleao API.
+For log in transaction, the binding uses Neato Beehive API and for status and control, the binding uses Nucleao API.
## Supported Things
Supported thing types
-* neatoaccount (bridge)
-* vacuumcleaner
+- neatoaccount (bridge)
+- vacuumcleaner
A bridge is required to connect to your Neato Cloud account.
Discovery is used _after_ a bridge has been created and configured with your login information.
1. Add the binding
-2. Add a new thing of type NeatoAccount and configure with username and password
-3. Go to Inbox and start discovery of Vacuums using Neato Binding
-4. Vacuums should appear in your inbox!
+1. Add a new thing of type NeatoAccount and configure with username and password
+1. Go to Inbox and start discovery of Vacuums using Neato Binding
+1. Vacuums should appear in your inbox!
## Thing Configuration
In order to manually create a thing file and not use the discovery routine you will need to know the vacuums serial number as well as the secret used in web service calls.
This is a bit difficult to get.
-The easiest way of getting this information is to use the third party python library that is available at https://github.com/stianaske/pybotvac.
+The easiest way of getting this information is to use the third party python library that is available at <https://github.com/stianaske/pybotvac>.
Neato Account Config
| Config | Description |
-|----------|------------------------------------ |
+| -------- | ----------------------------------- |
| email | Email address tied to Neato Account |
| password | Password tied to Neato Account |
Vacuum Cleaner Config
-| Config | Description |
-|----------|-----------------------------------------|
-| serial | Serial Number of your Neato Robot |
-| secret | Secret for accessing Neato web services (see note above) |
-| refresh | Refresh time interval in seconds for updates from the Neato Web Service. Defaults to 60 sec |
+| Config | Description |
+| ------- | -------------------------------------------------------------------------------------------- |
+| serial | Serial Number of your Neato Robot |
+| secret | Secret for accessing Neato web services (see note above) |
+| refresh | Refresh time interval in seconds for updates from the Neato Web Service. Defaults to 60 sec |
## Channels
| Channel | Type | Label | Description | Read Only |
-|---------------------|--------|----------------------------|-------------------------------------------------------------------------------------------|-----------|
-| battery-level| Number | Battery Level | Battery Level of the vacuum cleaner. | True |
+| ------------------- | ------ | -------------------------- | ----------------------------------------------------------------------------------------- | --------- |
+| battery-level | Number | Battery Level | Battery Level of the vacuum cleaner. | True |
| state | String | Current State | Current state of the vacuum cleaner. | True |
| available-services | String | Current available services | List of services that are currently available for the vacuum cleaner | True |
| action | String | Current Action | Current action of the vacuum cleaner. | True |
| is-charging | Switch | Is Charging | Is the vacuum cleaner currently charging? | True |
| available-commands | String | Available Commands | List of available commands. | True |
| error | String | Error | Current error message in system. | True |
-| command | String | Send Command | Send Commands to Vacuum Cleaner. (clean with map, clean, pause, resume, stop, dock) | False |
+| command | String | Send Command | Send Commands to Vacuum Cleaner. (clean with map, clean, pause, resume, stop, dock) | False |
| cleaning-category | String | Cleaning Category | Current or Last category of the cleaning. Manual, Normal House Cleaning or Spot Cleaning. | True |
| cleaning-mode | String | Cleaning Mode | Current or Last cleaning mode. Eco or Turbo. | True |
| cleaning-modifier | String | Cleaning Modifier | Modifier of current or last cleaning. Normal or Double. | True |
Below you will find examples of the necessary files:
-**neato.items**
+### neato.items
-```
+```java
Group GNeato
Number FannDammBattery "Battery level [%.0f %%]" <battery> (GNeato) { channel = "neato:vacuumcleaner:fanndamm:battery-level" }
String FannDammState "Status [MAP(neato-sv.map):%s]" (GNeato) { channel = "neato:vacuumcleaner:fanndamm:state" }
String FannDammCommand "Send Command" { channel = "neato:vacuumcleaner:fanndamm:command" }
```
-**sitemap**
+### neato.sitemap
-```
+```perl
Frame label="Neato BotVac Connected" {
Switch item=FannDammCommand mappings=[cleanWithMap="cleanWithMap", clean="Clean",stop="Stop",pause="Pause",resume="Resume", dock="Send to dock"]
Text item=FannDammBattery label="Battery level"
}
```
-**neato.things**
+### neato.things
-```
+```java
neato:vacuumcleaner:fanndamm [ serial="vacuumcleaner-serial", secret="secret-string"]
```
Discovery occurs in three steps:
1. Discover your NEEO Brain.
-2. Once you have added a NEEO Brain, each Room will be discovered (which will include all Recipes and Scenarios).
-3. Once you have added a NEEO Room, each Device in the Room will be discovered (which will include all Macros for the Device).
+1. Once you have added a NEEO Brain, each Room will be discovered (which will include all Recipes and Scenarios).
+1. Once you have added a NEEO Room, each Device in the Room will be discovered (which will include all Macros for the Device).
The Recipes/Scenarios can then be started or stopped from openHAB or from the remote.
If a Recipe/Scenario is started on the Brain, the status of the Recipe/Scenario will change in openHAB as well.
## Supported Things
-* Bridge: NEEO Brain.
+- Bridge: NEEO Brain.
This bridge represents a physical NEEO Brain and will contain one to many Rooms within it.
-* Bridge: NEEO Room.
+- Bridge: NEEO Room.
Represents a Room on the NEEO Brain. Only rooms that have atleast one device or one recipe (custom if no devices) will be shown unless the brain configuration option "discoverEmptyRooms" is set to true.
-* Thing: NEEO Device.
+- Thing: NEEO Device.
Represents a Device within the NEEO Room.
NEEO Brains will be automatically discovered if mDNS/bonjour/zeroconf is installed on the local machine:
1. On Windows - installing iTunes will install bonjour.
-2. On Linux - please install zeroconf (see vendor documentation on how to do that).
-3. On Mac - should already be installed.
+1. On Linux - please install zeroconf (see vendor documentation on how to do that).
+1. On Mac - should already be installed.
When you add the NEEO Brain, the Rooms on the Brain will then be auto discovered and placed in the inbox.
When you add a Room, all Devices should be auto discovered and placed in the inbox.
If the Brain is not discovered, here is list of the most common issues:
-1. You can generally trigger discovery by starting up the NEEO APP on your mobile device, press MENU->NEEO Brain->Change Brain.
+1. You can generally trigger discovery by starting up the NEEO APP on your mobile device, press MENU->NEEO Brain->Change Brain.
This will generally send out the necessary mDNS broadcast messages to discovery the Brain.
-2. You did not wait long enough.
+1. You did not wait long enough.
I have noticed that it will take up to 5 minutes for the discovery to find the Brain.
-3. Local firewall is blocking the mDNS broadcast messages.
+1. Local firewall is blocking the mDNS broadcast messages.
Modify the firewall to allow mDNS packets - typically port 5353 and/or IP address 224.0.0.251
-4. The Brain is on a different subnet.
+1. The Brain is on a different subnet.
Unless you have special routing rules, having the Brain on a different subnet than the openHAB instance will prevent discovery.
Either add routing rules or move one of them to the same subnet.
-5. Bug in the mDNS library.
+1. Bug in the mDNS library.
Occasionally a broadcast will be missed and a simple openHAB restart will fix the issue.
-6. Brain isn't reachable.
+1. Brain isn't reachable.
Ping the Brain's address from the openHAB machine and see if it responds.
If none of the above work, there are a few more things you can try:
-1. Use your local dns-sd command to see if you find the instance ("dns-sd -B _neeo._tcp").
-2. Manually configure the Brain and specify its IP address.
-3. Look in the issues forum on the NEEO SDK GitHub - specifically the [Brain Discovery not working](https://github.com/NEEOInc/neeo-sdk/issues/36).
+1. Use your local dns-sd command to see if you find the instance ("dns-sd -B _neeo._tcp").
+1. Manually configure the Brain and specify its IP address.
+1. Look in the issues forum on the NEEO SDK GitHub - specifically the [Brain Discovery not working](https://github.com/NEEOInc/neeo-sdk/issues/36).
## Forward Actions
The NEEO Brain has the option to forward all actions performed on it to a specific address.
The forward actions will be a JSON string representation:
-```
+```json
{ "action": "xxx", "actionparameter": "xxx", "recipe": "xxx", "device": "xxx", "room": "xxx" }
```
All parameters are optional (based on what action has been taken) with atleast one of them filled in.
If the Recipe "Watch TV" is launched, the forward action would be:
-```
+```json
{ "action": "launch", "recipe": "Watch TV" }
```
The NEEO Brain bridge will register itself as the destination for actions and has a trigger channel defined to accept the results of any forward action.
An example rule might look like (for a Brain with an ID of d487672e):
-```
+```java
rule "NEEO"
when
Channel 'neeo:Brain:d487672e:forwardActions' triggered
Since the NEEO Brain ONLY allows a single forward actions URL, the NEEO Brain Bridge can be configured to:
1. Whether to register for forward actions or not.
-2. If forward actions has been registered, forward the action on to other URLs for processing.
+1. If forward actions has been registered, forward the action on to other URLs for processing.
This will allow you to use other devices that want to consume the forward actions (in addition to openHAB).
| discoverEmptyRooms | boolean | No | false | Whether to discover Rooms with no Devices in them |
| checkStatusInterval | number | No | 10 | The interval (in seconds) to check the status of the Brain. Specify <=0 to disable |
-
-
### NEEO Room
| Name | Type | Required | Default | Description |
|----------------------|---------|----------|---------|----------------------------------------------------------------------------------------------------------------|
| deviceKey | string | Yes | (None) | The unique key identifying the Device on the NEEO Brain |
-
## Channels
### NEEO Brain
|--------------------|------------|--------------|--------------------------------------------------------------------------------------------|
| forwardActions | R | Trigger | The forward actions channel |
-
The following properties are available at the time of this writing:
| Name | Description |
| Key | The unique identifier of the Brain |
| Name | Internal name of the Brain |
-
### NEEO Room
The NEEO Room is dynamically generated from the Brain.
Each Room will dynamically generate the following channel groups:
-1) Each Room will have exactly one "room-state" representing the current state of the Room.
-2) Each Room will have zero or more "room-recipe-xxx" (where xxx is the Recipe key) groups representing each Recipe in the Room.
-3) Each Room will have zero or more "room-scenario-xxx" (where xxx is the Scenario key) groups representing each Scenario in the Room.
+1. Each Room will have exactly one "room-state" representing the current state of the Room.
+1. Each Room will have zero or more "room-recipe-xxx" (where xxx is the Recipe key) groups representing each Recipe in the Room.
+1. Each Room will have zero or more "room-scenario-xxx" (where xxx is the Scenario key) groups representing each Scenario in the Room.
#### Room State Group
| currentStep* | R | trigger | Displays the current step being executed |
Current Step will ONLY be triggered if openHAB started the corresponding recipe (or scenario).
-If the NEEO Remote or NEEO App starts the recipe or scenario, the currentStep will never be triggered.
+If the NEEO Remote or NEEO App starts the recipe or scenario, the currentStep will never be triggered.
The current step is ONLY communicated from the Brain to the device that started the Recipe/Scenario.
If the remote started the Recipe/Scenario, it will show the current step but openHAB will not be notified.
.things
-```
+```java
neeo:brain:home [ ipAddress="192.168.1.24" ]
neeo:room:attic (neeo:brain:home) [ roomKey="6277847230179180544" ]
neeo:device:tv (neeo:room:attic) [ deviceKey="6343464057630097408" ]
.items
-```
+```java
String Attic_RecipeName "Recipe Name [%s]" { channel="neeo:room-6277847230179180544:attic:room:recipe#name-6277847545657950208" }
Switch Attic_RecipeEnabled "Recipe Enabled" { channel="neeo:room-6277847230179180544:attic:room:recipe#enabled-6277847545657950208" }
Switch Attic_RecipeStatus "Running" { channel="neeo:room-6277847230179180544:attic:room:recipe#status-6277847545657950208" }
.sitemap
-```
+```perl
sitemap demo label="NEEO" {
Frame label="Attic" {
Text item=Attic_RecipeName
Alternatively you can manually create a (Bridge) Thing for the NeoHub.
In either case you need to enter any missing Configuration Parameters (see Thing Configuration for NeoHub below).
Once the Configuration Parameters are all valid, then the NeoHub Thing will automatically attempt to connect and sign on to the hub.
-If the sign on succeeds, the Thing will indicate its status as Online, otherwise it will show an error status.
+If the sign on succeeds, the Thing will indicate its status as Online, otherwise it will show an error status.
Once the NeoHub Thing has been created and it has successfully signed on, it will automatically interrogate the HeoHub to discover all the respective Heatmiser device Things that are connected to it.
If in the future, you add additional Heatmiser devices to your system, the binding will discover them too.
## Connection Refused Errors
From early 2022 Heatmiser introduced NeoHub firmware that has the ability to enable / disable connecting to it via a TCP port.
-If the TCP port is disabled the OpenHAB binding cannot connect and the binding will report a *"Connection Refused"* warning in the log.
+If the TCP port is disabled the OpenHAB binding cannot connect and the binding will report a _"Connection Refused"_ warning in the log.
In prior firmware versions the TCP port was always enabled.
But in the new firmware the TCP port is initially enabled on power up but if no communication occurs for 48 hours it is automatically disabled.
Alternatively the Heatmiser mobile app has a setting (Settings | System | API Access | Legacy API Enable | On) whereby the TCP port can be permanently enabled.
The NeoHub Thing connects to the hub (bridge) to communicate with any Heatmiser devices that are connected to it.
Each such Heatmiser device is identified by means of a unique device name in the hub.
The device name is automatically discovered by the NeoHub Thing, and it is also visible (and changeable) via the Heatmiser App.
-
+
| Configuration Parameter | Description |
|-------------------------|--------------------------------------------------------------------------------------|
| deviceNameInHub | Device name that identifies the Heatmiser device in the NeoHub and the Heatmiser App |
### `demo.things` File
-```
+```java
Bridge neohub:neohub:myhubname "Heatmiser NeoHub" [ hostName="192.168.1.123", portNumber=4242, pollingInterval=60, socketTimeout=5, preferLegacyApi=true ] {
Thing neoplug mydownstairs "Downstairs Plug" @ "Hall" [ deviceNameInHub="Hall Plug" ]
Thing neostat myupstairs "Upstairs Thermostat" @ "Landing" [ deviceNameInHub="Landing Thermostat" ]
### `demo.items` File
-```
+```java
Number:Temperature Upstairs_RoomTemperature "Room Temperature" { channel="neohub:neostat:myhubname:myupstairs:roomTemperature" }
Number:Temperature Upstairs_TargetTemperature "Target Temperature" { channel="neohub:neostat:myhubname:myupstairs:targetTemperature" }
Number:Temperature Upstairs_FloorTemperature "Floor Temperature" { channel="neohub:neostat:myhubname:myupstairs:floorTemperature" }
### `demo.sitemap` File
-```
+```perl
sitemap neohub label="Heatmiser NeoHub"
{
- Frame label="Thermostat" {
- Text item=Upstairs_RoomTemperature
- Setpoint item=Upstairs_TargetTemperature minValue=15 maxValue=30 step=1
- Text item=Upstairs_ThermostatOutputState
- Switch item=Upstairs_OccupancyModePresent
- Text item=Upstairs_FloorTemperature
- }
-
- Frame label="Plug" {
- Switch item=Downstairs_PlugOutputState
- Switch item=Downstairs_PlugAutoMode
- }
-
- Frame label="Contact" {
- Contact item=Window_Contact_State
- Switch item=Window_Contact_Battery_Low
- }
-
- Frame label="Sensor" {
- Text item=Kitchen_Temperature
- }
+ Frame label="Thermostat" {
+ Text item=Upstairs_RoomTemperature
+ Setpoint item=Upstairs_TargetTemperature minValue=15 maxValue=30 step=1
+ Text item=Upstairs_ThermostatOutputState
+ Switch item=Upstairs_OccupancyModePresent
+ Text item=Upstairs_FloorTemperature
+ }
+
+ Frame label="Plug" {
+ Switch item=Downstairs_PlugOutputState
+ Switch item=Downstairs_PlugAutoMode
+ }
+
+ Frame label="Contact" {
+ Contact item=Window_Contact_State
+ Switch item=Window_Contact_Battery_Low
+ }
+
+ Frame label="Sensor" {
+ Text item=Kitchen_Temperature
+ }
}
```
-
1. Copy/paste the saved OAuth 2.0 **Client Secret** to SDM group parameter (e.g. `726kcU-d1W4RXxEJA79oZ0oG`)
1. Create an authorization code for the binding:
1. Replace the **Project ID** and **Client ID** in the URL below with your SDM Project ID and SDM OAuth 2.0 Client ID and open the URL in a new browser tab:
-
+
`https://nestservices.google.com/partnerconnections/<ProjectID>/auth?scope=https://www.googleapis.com/auth/sdm.service&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=<ClientID>`
-
+
For the example values used so far this is:
-
+
`https://nestservices.google.com/partnerconnections/585de72e-968c-435c-b16a-31d1d3f76833/auth?scope=https://www.googleapis.com/auth/sdm.service&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=1046297811237-3f5sj4ccfubit0fum027ral82jgffsd1.apps.googleusercontent.com`
1. Enable all the permissions you want to use with the binding and click "Next" to continue
1. Login using your Google account when prompted
1. On the "Google hasn't verified this app" page, click on "Advanced"
1. Then click on "Go to ... (advanced)"
1. Now "Allow" the SDM permissions and confirm your choices again by clicking "Allow"
- 1. After your browser has been redirected to https://www.google.com, the **Authorization Code** will be set in the browser URL as value of the "code" URL query parameter
+ 1. After your browser has been redirected to <https://www.google.com>, the **Authorization Code** will be set in the browser URL as value of the "code" URL query parameter
1. Copy/paste the **Authorization Code** to the SDM group parameter in the openHAB Nest SDM Account Thing configuration
1. All required SDM Account Thing configuration parameters have now been entered so create it by clicking "Create Thing"
1. Open the configuration details of your existing "Nest SDM Account" Thing in openHAB
1. Copy/paste the saved GCP **Project ID** to Pub/Sub group parameter (e.g. `openhab-123`)
1. Enter a name in **Subscription ID** that uniquely identifies the Pub/Sub subscription used by the binding
-
+
> Must be 3-255 characters, start with a letter, and contain only the following characters: letters, numbers, dashes (-), periods (.), underscores (_), tildes (~), percents (%) or plus signs (+). Cannot start with goog.
1. Copy/paste the saved OAuth 2.0 **Client ID** to Pub/Sub group parameter (e.g. `1046297811237-lg27h26kln6r1nbg54jpg6nfjg6h4b3n.apps.googleusercontent.com`)
1. Copy/paste the saved OAuth 2.0 **Client Secret** to Pub/Sub group parameter (e.g. `1-k78-XcHhp_gdZF-I6JaIHp`)
1. Create an authorization code for the binding:
1. Replace the **Client ID** in the URL below with your Pub/Sub OAuth 2.0 Client ID and open the URL in a new browser tab:
-
+
`https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/pubsub&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=<ClientID>`
-
+
For the example client this is:
-
+
`https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/pubsub&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=1046297811237-lg27h26kln6r1nbg54jpg6nfjg6h4b3n.apps.googleusercontent.com`
1. Login using your Google account when prompted
1. On the "Google hasn't verified this app" page, click on "Advanced"
1. Then click on "Go to ... (advanced)"
1. Now "Allow" the Pub/Sub permissions and confirm your choices again by clicking "Allow"
- 1. After your browser has been redirected to https://www.google.com, the **Authorization Code** will be set in the browser URL as value of the "code" URL query parameter
+ 1. After your browser has been redirected to <https://www.google.com>, the **Authorization Code** will be set in the browser URL as value of the "code" URL query parameter
1. Copy/paste the **Authorization Code** to the Pub/Sub group parameter in the openHAB Nest SDM Account Thing configuration
1. All required Pub/Sub Account Thing configuration parameters have now been entered so click "Save" to update the SDM Account Thing configuration
### WWN Camera Channels
-**Camera group channels**
+#### Camera Group Channels
Information about the camera.
| video_history_enabled | Switch | If the video history is currently enabled | R |
| web_url | String | The web URL to see the camera | R |
-**Last event group channels**
+#### Last Event Group Channels
Information about the last camera event (requires Nest Aware subscription).
Note that the Nest API rounds Thermostat values so they will differ from what shows up in the Nest App.
The Nest API applies the following rounding:
-* degrees Celsius to 0.5 degrees
-* degrees Fahrenheit to whole degrees
-* humidity to 5%
+- degrees Celsius to 0.5 degrees
+- degrees Fahrenheit to whole degrees
+- humidity to 5%
## Example
### sdm-demo.things
-```
+```java
Bridge nest:sdm_account:demo_sdm_account [ sdmProjectId="585de72e-968c-435c-b16a-31d1d3f76833", sdmClientId="1046297811237-3f5sj4ccfubit0fum027ral82jgffsd1.apps.googleusercontent.com", sdmClientSecret="726kcU-d1W4RXxEJA79oZ0oG", sdmAuthorizationCode="xkkY3qYtfZCzaXCcPxpOELUW8EhgiSMD3n9jmzJ3m0yerkQpVRdj5vqWRjMSIG", pubsubProjectId="openhab-12345", pubsubSubscriptionId="nest-sdm-events", pubsubClientId="1046297811237-lg27h26kln6r1nbg54jpg6nfjg6h4b3n.apps.googleusercontent.com", pubsubClientSecret="1-k78-XcHhp_gdZF-I6JaIHp", pubsubAuthorizationCode="tASfQq7gn6sfbUSbwRufbMI0BYDzh1d7MBG2G7vdZpbhjmZfwDp5MkeaX0iMxn" ] {
Thing sdm_camera fish_cam [ deviceId="AVPHwTQCAhersqmQ3IXwyqSX-XyuVZXoiNSNPeHdIMKgYpYZolNP4S9LS5QDF2LeuM3BQcpBh_fOEZYxkeH6eoQdWEELqi" ] {
Channels:
### sdm-demo.items
-```
+```java
/* SDM Doorbell */
Image Doorbell_Chime_Image "Chime Image" { channel="nest:sdm_doorbell:demo_sdm_account:front_door:chime_event#image" }
DateTime Doorbell_Chime_Timestamp "Chime Timestamp [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:sdm_doorbell:demo_sdm_account:front_door:chime_event#timestamp" }
### wwn-demo.things
-```
+```java
Bridge nest:wwn_account:demo_wwn_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589e0", productSecret="QITLR3iyUlWaj9dbvCxsCKp4f", accessToken="c.6rse1xtRk2UANErcY0XazaqPHgbvSSB6owOrbZrZ6IXrmqhsr9QTmcfaiLX1l0ULvlI5xLp01xmKeiojHqozLQbNM8yfITj1LSdK28zsUft1aKKH2mDlOeoqZKBdVIsxyZk4orH0AvKEZ5aY" ] {
Thing wwn_camera fish_cam [ deviceId="qw0NNE8ruxA9AGJkTaFH3KeUiJaONWKiH9Gh3RwwhHClonIexTtufQ" ]
Thing wwn_smoke_detector hallway_smoke [ deviceId="Tzvibaa3lLKnHpvpi9OQeCI_z5rfkBAV" ]
### wwn-demo.items
-```
+```java
/* WWN Camera */
String Cam_App_URL "App URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#app_url" }
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#audio_input_enabled" }
The Netatmo binding integrates the following Netatmo products:
-- *Personal Weather Station*. Reports temperature, humidity, air pressure, carbon dioxide concentration in the air, as well as the ambient noise level.
-- *Thermostat*. Reports ambient temperature, allow to check target temperature, consult and change furnace heating status.
-- *Indoor Camera / Welcome*. Reports last event and persons at home, consult picture and video from event/camera.
-- *Siren*
-- *Outdoor Camera / Presence*. Reports last event, consult picture and video from event/camera.
-- *Doorbell*
-- *Smoke Detector*
-- *Smart Door Sensor*
+- _Personal Weather Station_. Reports temperature, humidity, air pressure, carbon dioxide concentration in the air, as well as the ambient noise level.
+- _Thermostat_. Reports ambient temperature, allow to check target temperature, consult and change furnace heating status.
+- _Indoor Camera / Welcome_. Reports last event and persons at home, consult picture and video from event/camera.
+- _Siren_
+- _Outdoor Camera / Presence_. Reports last event, consult picture and video from event/camera.
+- _Doorbell_
+- _Smoke Detector_
+- _Smart Door Sensor_
-See https://www.netatmo.com/ for details on their product.
+See <https://www.netatmo.com/> for details on their product.
## Binding Configuration
Variables needed for the setup of the binding are:
-* `<CLIENT_ID>` Your client ID taken from your App at https://dev.netatmo.com/apps
-* `<CLIENT_SECRET>` A token provided along with the `<CLIENT_ID>`.
+- `<CLIENT_ID>` Your client ID taken from your App at <https://dev.netatmo.com/apps>
+- `<CLIENT_SECRET>` A token provided along with the `<CLIENT_ID>`.
The binding has the following configuration options:
-| Parameter | Type | Description |
-|--------------|---------------|--------------------------------------------------------------------------------------------|
-| readFriends | Boolean | Enables or disables the discovery of guest weather stations. |
-
+| Parameter | Type | Description |
+| ----------- | ------- | ------------------------------------------------------------ |
+| readFriends | Boolean | Enables or disables the discovery of guest weather stations. |
## Netatmo Account (Bridge) Configuration
The Account bridge has the following configuration elements:
| Parameter | Type | Required | Description |
-|-------------------|--------|----------|------------------------------------------------------------------------------------------------------------------------|
-| clientId | String | Yes | Client ID provided for the application you created on http://dev.netatmo.com/createapp |
+| ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
+| clientId | String | Yes | Client ID provided for the application you created on <http://dev.netatmo.com/createapp> |
| clientSecret | String | Yes | Client Secret provided for the application you created |
| webHookUrl | String | No | Protocol, public IP and port to access openHAB server from Internet |
| reconnectInterval | Number | No | The reconnection interval to Netatmo API (in s) |
**Supported channels for the Account bridge thing:**
| Channel Group | Channel Id | Item Type | Description |
-|---------------|---------------|-----------|--------------------------------------------------------------------|
+| ------------- | ------------- | --------- | ------------------------------------------------------------------ |
| monitoring | request-count | Number | Number of requests transmitted to Netatmo API during the last hour |
-
### Configure the Bridge
1. Complete the Netatmo Application Registration if you have not already done so, see above.
1. Add a new **"Netatmo Account"** thing. Choose new Id for the account, unless you like the generated one, put in the _Client ID_ and _Client Secret_ from the Netatmo Connect Application registration in their respective fields of the bridge configuration. Save the bridge.
1. The bridge thing will go _OFFLINE_ / _CONFIGURATION_ERROR_ - this is fine. You have to authorize this bridge with Netatmo Connect.
1. Go to the authorization page of your server. `http://<your openHAB address>:8080/netatmo/connect/<_CLIENT_ID_>`. Your newly added bridge should be listed there (no need for you to expose your openHAB server outside your local network for this).
-1. Press the _"Authorize Thing"_ button. This will take you either to the login page of Netatmo Connect or directly to the authorization screen. Login and/or authorize the application. You will be returned and the entry should go green.
+1. Press the _"Authorize Thing"_ button. This will take you either to the login page of Netatmo Connect or directly to the authorization screen. Login and/or authorize the application. You will be returned and the entry should go green.
1. The bridge configuration will be updated with a refresh token and go _ONLINE_. The refresh token is used to re-authorize the bridge with Netatmo Connect Web API whenever required. So you can consult this token by opening the Thing page in MainUI, this is the value of the advanced parameter named “Refresh Token”.
1. If you're using file based .things config file, copy the provided refresh token in the **refreshToken** parameter of your thing definition (example below).
Now that you have got your bridge _ONLINE_ you can now start a scan with the binding to auto discover your things.
-
## List of supported things
-| Thing Type | Type | Netatmo Object | Description | Thing Parameters |
-|-----------------|--------|----------------|------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------|
-| account | Bridge | N/A | This bridge represents an account, gateway to Netatmo API. | clientId, clientSecret, username, password, webHookUrl, reconnectInterval |
-| home | Bridge | NAHome | A home hosting Security or Energy devices and modules. | id, refreshInterval |
-| person | Thing | NAPerson | A person known by your Netatmo system. | id |
-| welcome | Thing | NACamera | The Netatmo Smart Indoor Camera (Welcome). | id |
-| presence | Thing | NOC | The Netatmo Smart Outdoor Camera (Presence) camera with or without siren. | id |
-| siren | Thing | NIS | The Netatmo Smart Indoor Siren. | id |
-| doorbell | Thing | NDB | The Netatmo Smart Video Doorbell device. | id |
-| weather-station | Bridge | NAMain | Main indoor module reporting temperature, humidity, pressure, air quality and sound level. | id |
-| outdoor | Thing | NAModule1 | Outdoor module reporting temperature and humidity. | id |
-| wind | Thing | NAModule2 | Wind sensor reporting wind angle and strength. | id |
-| rain | Thing | NAModule3 | Rain Gauge measuring precipitation. | id |
-| indoor | Thing | NAModule4 | Additional indoor module reporting temperature, humidity and CO2 level. | id |
-| home-coach | Thing | NHC | Healthy home coach reporting health-index, temperature, humidity, pressure, air quality, sound level.| id |
-| plug | Thing | NAPlug | The relay connected to the boiler controlling a Thermostat and zero or more valves. | id |
-| thermostat | Thing | NATherm1 | The Thermostat device placed in a given room. | id |
-| room | Thing | NARoom | A room in your house. | id |
-| valve | Thing | NRV | A valve controlling a radiator. | id |
-| tag | Thing | NACamDoorTag | A door / window sensor | id |
-
-
-
+| Thing Type | Type | Netatmo Object | Description | Thing Parameters |
+| --------------- | ------ | -------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
+| account | Bridge | N/A | This bridge represents an account, gateway to Netatmo API. | clientId, clientSecret, username, password, webHookUrl, reconnectInterval |
+| home | Bridge | NAHome | A home hosting Security or Energy devices and modules. | id, refreshInterval |
+| person | Thing | NAPerson | A person known by your Netatmo system. | id |
+| welcome | Thing | NACamera | The Netatmo Smart Indoor Camera (Welcome). | id |
+| presence | Thing | NOC | The Netatmo Smart Outdoor Camera (Presence) camera with or without siren. | id |
+| siren | Thing | NIS | The Netatmo Smart Indoor Siren. | id |
+| doorbell | Thing | NDB | The Netatmo Smart Video Doorbell device. | id |
+| weather-station | Bridge | NAMain | Main indoor module reporting temperature, humidity, pressure, air quality and sound level. | id |
+| outdoor | Thing | NAModule1 | Outdoor module reporting temperature and humidity. | id |
+| wind | Thing | NAModule2 | Wind sensor reporting wind angle and strength. | id |
+| rain | Thing | NAModule3 | Rain Gauge measuring precipitation. | id |
+| indoor | Thing | NAModule4 | Additional indoor module reporting temperature, humidity and CO2 level. | id |
+| home-coach | Thing | NHC | Healthy home coach reporting health-index, temperature, humidity, pressure, air quality, sound level. | id |
+| plug | Thing | NAPlug | The relay connected to the boiler controlling a Thermostat and zero or more valves. | id |
+| thermostat | Thing | NATherm1 | The Thermostat device placed in a given room. | id |
+| room | Thing | NARoom | A room in your house. | id |
+| valve | Thing | NRV | A valve controlling a radiator. | id |
+| tag | Thing | NACamDoorTag | A door / window sensor | id |
### Webhook
The webhook URL is setup at Netatmo Account level using "Webhook Address" parameter.
You will define here public way to access your openHAB server:
-```
+```text
http(s)://xx.yy.zz.ww:443
```
Your Netatmo App will be configured automatically by the bridge to the endpoint:
-```
+```text
http(s)://xx.yy.zz.ww:443/netatmo/webhook/<_CLIENT_ID_>
```
NB: Allowed ports for webhooks are 80, 88, 443 and 9443.
-
### Configure Things
The easiest way to retrieve the IDs for all the devices and modules is to use the console command `openhab:netatmo showIds`.
Then some examples of the documentation contain the **real results** of your weather station.
In order to try the examples, you need the `device_id` of your Netatmo station.
You can find it in the configuration menu of the app (android or apple).
-Get the IDs of your devices (indoor, outdoor, rain gauge)
+Get the IDs of your devices (indoor, outdoor, rain gauge)
[here](https://dev.netatmo.com/resources/technical/reference/weather/getstationsdata).
`main_device` is the ID of the "main device", the indoor sensor.
For example your serial number "h00bcdc" should end up as "02:00:00:00:bc:dc".
-
## Discovery
If you did not manually create things in the *.things file, the Netatmo Binding is able to discover automatically all depending modules and devices.
-
## Channels
-
### Weather Station Main Indoor Device
Weather station does not need any refreshInterval setting.
Based on a standard update period of 10mn by Netatmo systems - it will auto adapt to stick closest as possible to last data availability.
-
**Supported channels for the main indoor module:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| pressure | value | Number:Pressure | Current pressure |
-| pressure | absolute | Number:Pressure | Pressure at sea level |
-| pressure | trend | String | Pressure evolution trend over time |
-| noise | value | Number:Dimensionless | Current noise level |
-| humidity | value | Number:Dimensionless | Current humidity |
-| humidity | humidex | Number | Computed Humidex index |
-| humidity | humidex-scale | Number | Humidex index appreciation |
-| temperature | value | Number:Temperature | Current temperature |
-| temperature | min-today | Number:Temperature | Minimum temperature on current day |
-| temperature | max-today | Number:Temperature | Maximum temperature on current day |
-| temperature | min-time | DateTime | Moment of today's minimum temperature |
-| temperature | max-time | DateTime | Moment of today's maximum temperature |
-| temperature | trend | String | Temperature evolution trend over time |
-| temperature | heat-index | Number:Temperature | Computed Heat Index |
-| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
-| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
-| airquality | co2 | Number:Dimensionless | CO2 level in ppm |
-| location | value | Location | Location of the device |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ------------------- | -------------------- | ------------------------------------------------ |
+| pressure | value | Number:Pressure | Current pressure |
+| pressure | absolute | Number:Pressure | Pressure at sea level |
+| pressure | trend | String | Pressure evolution trend over time |
+| noise | value | Number:Dimensionless | Current noise level |
+| humidity | value | Number:Dimensionless | Current humidity |
+| humidity | humidex | Number | Computed Humidex index |
+| humidity | humidex-scale | Number | Humidex index appreciation |
+| temperature | value | Number:Temperature | Current temperature |
+| temperature | min-today | Number:Temperature | Minimum temperature on current day |
+| temperature | max-today | Number:Temperature | Maximum temperature on current day |
+| temperature | min-time | DateTime | Moment of today's minimum temperature |
+| temperature | max-time | DateTime | Moment of today's maximum temperature |
+| temperature | trend | String | Temperature evolution trend over time |
+| temperature | heat-index | Number:Temperature | Computed Heat Index |
+| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
+| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
+| airquality | co2 | Number:Dimensionless | CO2 level in ppm |
+| location | value | Location | Location of the device |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
**Extensible channels for the main indoor module:**
-| Channel Type | Item Type | Description | Channel parameters |
-|----------------------|----------------------|-----------------------------------|----------------------------------|
+| Channel Type | Item Type | Description | Channel parameters |
+| -------------------- | -------------------- | --------------------------------- | -------------------------------------------------------------------- |
| co2-measurement | Number:Dimensionless | CO2 measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| noise-measurement | Number:Dimensionless | Noise measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| pressure-measurement | Number:Pressure | Pressure measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-
+| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
### Weather Station Outdoor module
**Supported channels for the outdoor module:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| humidity | value | Number:Dimensionless | Current humidity |
-| humidity | humidex | Number | Computed Humidex index |
-| humidity | humidex-scale | Number | Humidex index appreciation |
-| temperature | value | Number:Temperature | Current temperature |
-| temperature | min-today | Number:Temperature | Minimum temperature on current day |
-| temperature | max-today | Number:Temperature | Maximum temperature on current day |
-| temperature | min-time | DateTime | Moment of today's minimum temperature |
-| temperature | max-time | DateTime | Moment of today's maximum temperature |
-| temperature | trend | String | Temperature evolution trend over time |
-| temperature | heat-index | Number:Temperature | Computed Heat Index |
-| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
-| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| battery | value | Number | Battery level |
-| battery | low-battery | Switch | Low battery |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ------------------- | -------------------- | ------------------------------------------------ |
+| humidity | value | Number:Dimensionless | Current humidity |
+| humidity | humidex | Number | Computed Humidex index |
+| humidity | humidex-scale | Number | Humidex index appreciation |
+| temperature | value | Number:Temperature | Current temperature |
+| temperature | min-today | Number:Temperature | Minimum temperature on current day |
+| temperature | max-today | Number:Temperature | Maximum temperature on current day |
+| temperature | min-time | DateTime | Moment of today's minimum temperature |
+| temperature | max-time | DateTime | Moment of today's maximum temperature |
+| temperature | trend | String | Temperature evolution trend over time |
+| temperature | heat-index | Number:Temperature | Computed Heat Index |
+| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
+| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| battery | value | Number | Battery level |
+| battery | low-battery | Switch | Low battery |
All these channels are read only.
**Extensible channels for the outdoor module:**
-| Channel Type | Item Type | Description | Channel parameters |
-|----------------------|----------------------|-----------------------------------|----------------------------------|
-| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-
+| Channel Type | Item Type | Description | Channel parameters |
+| ---------------- | -------------------- | --------------------------------- | -------------------------------------------------------------------- |
+| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
+| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
+| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
### Weather Station Additional Indoor module
-
**Supported channels for the additional indoor module:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| humidity | value | Number:Dimensionless | Current humidity |
-| humidity | humidex | Number | Computed Humidex index |
-| humidity | humidex-scale | Number | Humidex index appreciation |
-| temperature | value | Number:Temperature | Current temperature |
-| temperature | min-today | Number:Temperature | Minimum temperature on current day |
-| temperature | max-today | Number:Temperature | Maximum temperature on current day |
-| temperature | min-time | DateTime | Moment of today's minimum temperature |
-| temperature | max-time | DateTime | Moment of today's maximum temperature |
-| temperature | trend | String | Temperature evolution trend over time |
-| temperature | heat-index | Number:Temperature | Computed Heat Index |
-| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
-| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
-| airquality | co2 | Number:Dimensionless | Air quality |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| battery | value | Number | Battery level |
-| battery | low-battery | Switch | Low battery |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ------------------- | -------------------- | ------------------------------------------------ |
+| humidity | value | Number:Dimensionless | Current humidity |
+| humidity | humidex | Number | Computed Humidex index |
+| humidity | humidex-scale | Number | Humidex index appreciation |
+| temperature | value | Number:Temperature | Current temperature |
+| temperature | min-today | Number:Temperature | Minimum temperature on current day |
+| temperature | max-today | Number:Temperature | Maximum temperature on current day |
+| temperature | min-time | DateTime | Moment of today's minimum temperature |
+| temperature | max-time | DateTime | Moment of today's maximum temperature |
+| temperature | trend | String | Temperature evolution trend over time |
+| temperature | heat-index | Number:Temperature | Computed Heat Index |
+| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
+| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
+| airquality | co2 | Number:Dimensionless | Air quality |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| battery | value | Number | Battery level |
+| battery | low-battery | Switch | Low battery |
All these channels are read only.
**Extensible channels for the additional indoor module:**
-| Channel Type | Item Type | Description | Channel parameters |
-|----------------------|----------------------|-----------------------------------|----------------------------------|
-| co2-measurement | Number:Dimensionless | CO2 measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-
+| Channel Type | Item Type | Description | Channel parameters |
+| ---------------- | -------------------- | --------------------------------- | -------------------------------------------------------------------- |
+| co2-measurement | Number:Dimensionless | CO2 measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
+| co2-timestamp | DateTime | CO2 measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
+| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
+| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
### Rain Gauge
-
**Supported channels for the rain guage:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| rain | value | Number:Speed | Current precipitation intensity |
-| rain | sum-1 | Number:Length | Quantity of water over last hour |
-| rain | sum-24 | Number:Length | Quantity of water during the current day |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| battery | value | Number | Battery level |
-| battery | low-battery | Switch | Low battery |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ----------- | ------------- | ------------------------------------------------ |
+| rain | value | Number:Speed | Current precipitation intensity |
+| rain | sum-1 | Number:Length | Quantity of water over last hour |
+| rain | sum-24 | Number:Length | Quantity of water during the current day |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| battery | value | Number | Battery level |
+| battery | low-battery | Switch | Low battery |
All these channels are read only.
**Extensible channels for the rain guage:**
-| Channel Type | Item Type | Description | Channel parameters |
-|----------------------|----------------------|-----------------------------------|----------------------------------------------------|
-| sum_rain-measurement | Number:Length | Summing rain measurement | period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-
+| Channel Type | Item Type | Description | Channel parameters |
+| -------------------- | ------------- | ------------------------ | -------------------------------------------------- |
+| sum_rain-measurement | Number:Length | Summing rain measurement | period (30min, 1hour, 3hours, 1day, 1week, 1month) |
### Weather Station Wind module
-
**Supported channels for the wind module:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| wind | angle | Number:Angle | Current 5 minutes average wind direction |
-| wind | strength | Number:Speed | Current 5 minutes average wind speed |
-| wind | max-strength | Number:Speed | Maximum wind strength recorded |
-| wind | max-strength-date | DateTime | Moment when MaxWindStrength was recorded |
-| wind | gust-angle | Number:Angle | Direction of the last 5 minutes highest gust |
-| wind | gust-strength | Number:Speed | Speed of the last 5 minutes highest gust wind |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| battery | value | Number | Battery level |
-| battery | low-battery | Switch | Low battery |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ----------------- | ------------ | ------------------------------------------------ |
+| wind | angle | Number:Angle | Current 5 minutes average wind direction |
+| wind | strength | Number:Speed | Current 5 minutes average wind speed |
+| wind | max-strength | Number:Speed | Maximum wind strength recorded |
+| wind | max-strength-date | DateTime | Moment when MaxWindStrength was recorded |
+| wind | gust-angle | Number:Angle | Direction of the last 5 minutes highest gust |
+| wind | gust-strength | Number:Speed | Speed of the last 5 minutes highest gust wind |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| battery | value | Number | Battery level |
+| battery | low-battery | Switch | Low battery |
All these channels are read only.
-
### Healthy Home Coach Device
-
**Supported channels for the healthy home coach device:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|----------------------|----------------------|--------------------------------------------------|
-| noise | value | Number:Dimensionless | Current noise level |
-| humidity | value | Number:Dimensionless | Current humidity |
-| humidity | humidex | Number | Computed Humidex index |
-| humidity | humidex-scale | Number | Humidex index appreciation |
-| pressure | value | Number:Pressure | Current pressure |
-| pressure | absolute | Number:Pressure | Pressure at sea level |
-| temperature | value | Number:Temperature | Current temperature |
-| temperature | min-today | Number:Temperature | Minimum temperature on current day |
-| temperature | max-today | Number:Temperature | Maximum temperature on current day |
-| temperature | min-time | DateTime | Moment of today's minimum temperature |
-| temperature | max-time | DateTime | Moment of today's maximum temperature |
-| temperature | heat-index | Number:Temperature | Computed Heat Index |
-| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
-| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
-| airquality | health-index | Number | Health index (*) |
-| airquality | co2 | Number:Dimensionless | Air quality |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| timestamp | measures | DateTime | Moment of the last measures update |
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-
-(*) Health index values :
-
-- 0 : healthy
-- 1 : fine
-- 2 : fair
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ------------------- | -------------------- | ------------------------------------------------ |
+| noise | value | Number:Dimensionless | Current noise level |
+| humidity | value | Number:Dimensionless | Current humidity |
+| humidity | humidex | Number | Computed Humidex index |
+| humidity | humidex-scale | Number | Humidex index appreciation |
+| pressure | value | Number:Pressure | Current pressure |
+| pressure | absolute | Number:Pressure | Pressure at sea level |
+| temperature | value | Number:Temperature | Current temperature |
+| temperature | min-today | Number:Temperature | Minimum temperature on current day |
+| temperature | max-today | Number:Temperature | Maximum temperature on current day |
+| temperature | min-time | DateTime | Moment of today's minimum temperature |
+| temperature | max-time | DateTime | Moment of today's maximum temperature |
+| temperature | heat-index | Number:Temperature | Computed Heat Index |
+| temperature | dewpoint | Number:Temperature | Computed dewpoint temperature |
+| temperature | dewpoint-depression | Number:Temperature | Computed dewpoint depression |
+| airquality | health-index | Number | Health index (*) |
+| airquality | co2 | Number:Dimensionless | Air quality |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| timestamp | measures | DateTime | Moment of the last measures update |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+
+(*) Health index values :
+
+- 0 : healthy
+- 1 : fine
+- 2 : fair
- 3 : poor
- 4 : unhealthy
**Extensible channels for the healthy home coach device:**
-| Channel Type | Item Type | Description | Channel parameters |
-|----------------------|----------------------|-----------------------------------|----------------------------------|
+| Channel Type | Item Type | Description | Channel parameters |
+| -------------------- | -------------------- | --------------------------------- | -------------------------------------------------------------------- |
| hum-measurement | Number:Dimensionless | Humidity measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| hum-timestamp | DateTime | Humidity measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| noise-measurement | Number:Dimensionless | Noise measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| noise-timestamp | DateTime | Noise measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| pressure-measurement | Number:Pressure | Pressure measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
+| pressure-timestamp | DateTime | Pressure measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
| temp-measurement | Number:Temperature | Temperature measurement | limit (MIN, MAX), period (30min, 1hour, 3hours, 1day, 1week, 1month) |
-| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
-
-
+| temp-timestamp | DateTime | Temperature measurement timestamp | limit (DATE_MIN, DATE_MAX), period (1week, 1month) |
### Thermostat Relay Device
**Supported channels for the thermostat relay device:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|--------------------|----------------------|--------------------------------------------------|
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ---------- | ------------ | ------------------------------------------------ |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
-
### Thermostat Plug
**Supported channels for the thermostat plug device:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|--------------------|----------------------|--------------------------------------------------|
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ---------- | ------------ | ------------------------------------------------ |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
All these channels are read only.
-
### Room
**Supported channels for the Room thing:**
| Channel Group | Channel Id | Item Type | Description |
-|---------------|-----------------------|----------------------|---------------------------------------------------------|
+| ------------- | --------------------- | -------------------- | ------------------------------------------------------- |
| temperature | value | Number:Temperature | Current temperature in the room |
| properties | window-open | Contact | Windows of the room are opened |
| properties | anticipating | Switch | Anticipates next scheduled setpoint |
All these channels except setpoint and setpoint-mode are read only.
-
### Thermostat Module
**Supported channels for the thermostat module:**
| Channel Group | Channel Id | Item Type | Description |
-|---------------|-------------|--------------|--------------------------------------------------|
+| ------------- | ----------- | ------------ | ------------------------------------------------ |
| properties | relay | Contact | Indicates if the boiler is currently heating |
| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
| signal | value | Number:Power | Signal strength in dBm |
(*) Can be UNDEF on some modules
-
### Valve Module
**Supported channels for the Valve module:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|--------------------|----------------------|--------------------------------------------------|
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| battery | value | Number | Battery level |
-| battery | low-battery | Switch | Low battery |
-| battery | status | String | Description of the battery status (*) |
-
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ----------- | ------------ | ------------------------------------------------ |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| battery | value | Number | Battery level |
+| battery | low-battery | Switch | Low battery |
+| battery | status | String | Description of the battery status (*) |
### Welcome Home
**Supported channels for the Home thing:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------------|------------------------|------------------|--------------------------------------------------|
-| security | person-count | Number | Total number of persons that are at home |
-| security | unknown-person-count | Number | Total number of unknown persons that are at home |
-| security | unknown-person-picture | Image | Snapshot of unknown person that is at home |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ---------------------- | --------- | ------------------------------------------------ |
+| security | person-count | Number | Total number of persons that are at home |
+| security | unknown-person-count | Number | Total number of unknown persons that are at home |
+| security | unknown-person-picture | Image | Snapshot of unknown person that is at home |
All these channels are read only.
-
**Supported trigger channels for the Home thing:**
-| Channel Type ID | Options | Description |
-|------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| cameraEvent | | A camera event is triggered with a short delay but without requiring a webhook. The information of the event can get retrieved from the other "welcomeEvent" home thing channels |
-| | HUMAN | Triggered when a human (or person) was detected |
-| | ANIMAL | Triggered when an animal was detected |
-| | MOVEMENT | Triggered when an unspecified movement was detected |
-| | VEHICLE | Triggered when a vehicle was detected |
-| welcomeHomeEvent | | A welcome home event is triggered directly via a configured webhook |
-| | PERSON | Triggered when a concrete person was detected |
-| | PERSON_AWAY | Triggered when a concrete person leaves |
-| | MOVEMENT | Triggered when a movement was detected |
-| | CONNECTION | Triggered when a camera connection gets created |
-| | DISCONNECTION | Triggered when a camera connection got lost |
-| | ON | Triggered when camera monitoring is switched on |
-| | OFF | Triggered when camera monitoring is switched off |
-| | BOOT | Triggered when a camera is booting |
-| | SD | Triggered when a camera SD card status was changed |
-| | ALIM | Triggered when a power supply status was changed |
-| | NEW_MODULE | Triggered when a new module was discovered |
-| | MODULE_CONNECT | Triggered when a module gets connected |
-| | MODULE_DISCONNECT | Triggered when a module gets disconnected |
-| | MODULE_LOW_BATTERY | Triggered when the battery of a module gets low |
-| | MODULE_END_UPDATE | Triggered when a firmware update of a module is done |
-| | TAG_BIG_MOVE | Triggered when a big movement of a tag was detected |
-| | TAG_SMALL_MOVE | Triggered when a small movement of a tag was detected |
-| | TAG_UNINSTALLED | Triggered when a tag gets uninstalled |
-| | TAG_OPEN | Triggered when an open event of a tag was detected |
+| Channel Type ID | Options | Description |
+| ---------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| cameraEvent | | A camera event is triggered with a short delay but without requiring a webhook. The information of the event can get retrieved from the other "welcomeEvent" home thing channels |
+| | HUMAN | Triggered when a human (or person) was detected |
+| | ANIMAL | Triggered when an animal was detected |
+| | MOVEMENT | Triggered when an unspecified movement was detected |
+| | VEHICLE | Triggered when a vehicle was detected |
+| welcomeHomeEvent | | A welcome home event is triggered directly via a configured webhook |
+| | PERSON | Triggered when a concrete person was detected |
+| | PERSON_AWAY | Triggered when a concrete person leaves |
+| | MOVEMENT | Triggered when a movement was detected |
+| | CONNECTION | Triggered when a camera connection gets created |
+| | DISCONNECTION | Triggered when a camera connection got lost |
+| | ON | Triggered when camera monitoring is switched on |
+| | OFF | Triggered when camera monitoring is switched off |
+| | BOOT | Triggered when a camera is booting |
+| | SD | Triggered when a camera SD card status was changed |
+| | ALIM | Triggered when a power supply status was changed |
+| | NEW_MODULE | Triggered when a new module was discovered |
+| | MODULE_CONNECT | Triggered when a module gets connected |
+| | MODULE_DISCONNECT | Triggered when a module gets disconnected |
+| | MODULE_LOW_BATTERY | Triggered when the battery of a module gets low |
+| | MODULE_END_UPDATE | Triggered when a firmware update of a module is done |
+| | TAG_BIG_MOVE | Triggered when a big movement of a tag was detected |
+| | TAG_SMALL_MOVE | Triggered when a small movement of a tag was detected |
+| | TAG_UNINSTALLED | Triggered when a tag gets uninstalled |
+| | TAG_OPEN | Triggered when an open event of a tag was detected |
### Welcome, Presence and Doorbell Cameras
**Supported channels for the Welcome Camera thing:**
-| Channel Group | Channel ID | Item Type | Read/Write | Description |
-|----------------|----------------------|--------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------|
-| status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
-| status | sd-card | String | Read-only | State of the SD card |
-| status | alim | String | Read-only | State of the power connector |
-| live | picture | Image | Read-only | Camera Live Snapshot |
-| live | local-picture-url | String | Read-only | Local Url of the live snapshot for this camera |
-| live | vpn-picture-url | String | Read-only | Url of the live snapshot for this camera through Netatmo VPN. |
-| live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
-| live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
-| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Read-only | Signal strength in dBm |
-| last-event | type | String | Read-only | Type of event |
-| last-event | subtype | String | Read-only | Sub-type of event |
-| last-event | time | DateTime | Read-only | Time of occurrence of event |
-| last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
-| last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
-| last-event | snapshot-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
-| last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
-| last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
-| last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
-| last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
+| Channel Group | Channel ID | Item Type | Read/Write | Description |
+| ------------- | -------------------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
+| status | sd-card | String | Read-only | State of the SD card |
+| status | alim | String | Read-only | State of the power connector |
+| live | picture | Image | Read-only | Camera Live Snapshot |
+| live | local-picture-url | String | Read-only | Local Url of the live snapshot for this camera |
+| live | vpn-picture-url | String | Read-only | Url of the live snapshot for this camera through Netatmo VPN. |
+| live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
+| live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
+| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Read-only | Signal strength in dBm |
+| last-event | type | String | Read-only | Type of event |
+| last-event | subtype | String | Read-only | Sub-type of event |
+| last-event | time | DateTime | Read-only | Time of occurrence of event |
+| last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
+| last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
+| last-event | snapshot-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
+| last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
+| last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
+| last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
+| last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
(*) This channel is configurable : low, poor, high.
- The floodlight auto-mode (auto-mode) isn't updated it is changed by another application. Therefore the binding handles its own state of the auto-mode. This has the advantage that the user can define its own floodlight switch off behaviour.
-| Channel Group | Channel ID | Item Type | Read/Write | Description |
-|----------------|----------------------|--------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------|
-| status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
-| status | sd-card | String | Read-only | State of the SD card |
-| status | alim | String | Read-only | State of the power connector |
-| live | picture | Image | Read-only | Camera Live Snapshot |
-| live | picture-url | String | Read-only | Url of the live snapshot for this camera |
-| live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
-| live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
-| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Read-only | Signal strength in dBm |
-| presence | floodlight | Switch | Read-write | Sets the floodlight to ON/OFF/AUTO |
-| last-event | type | String | Read-only | Type of event |
-| last-event | subtype | String | Read-only | Sub-type of event |
-| last-event | time | DateTime | Read-only | Time of occurrence of event |
-| last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
-| last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
-| last-event | snapshot-url | String | Read-only | if the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
-| last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
-| last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
-| last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
-| last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
+| Channel Group | Channel ID | Item Type | Read/Write | Description |
+| ------------- | -------------------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| status | monitoring | Switch | Read-write | State of the camera (video surveillance on/off) |
+| status | sd-card | String | Read-only | State of the SD card |
+| status | alim | String | Read-only | State of the power connector |
+| live | picture | Image | Read-only | Camera Live Snapshot |
+| live | picture-url | String | Read-only | Url of the live snapshot for this camera |
+| live | local-stream-url (*) | String | Read-only | Local Url of the live stream for this camera (accessible if openhab server and camera are located on the same lan. |
+| live | vpn-stream-url (*) | String | Read-only | Url of the live stream for this camera through Netatmo VPN. |
+| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Read-only | Signal strength in dBm |
+| presence | floodlight | Switch | Read-write | Sets the floodlight to ON/OFF/AUTO |
+| last-event | type | String | Read-only | Type of event |
+| last-event | subtype | String | Read-only | Sub-type of event |
+| last-event | time | DateTime | Read-only | Time of occurrence of event |
+| last-event | message | String | Read-only | Message sent by Netatmo corresponding to given event |
+| last-event | snapshot | Image | Read-only | picture of the last event, if it applies |
+| last-event | snapshot-url | String | Read-only | if the last event (depending upon event type) in the home lead a snapshot picture, the picture URL will be available here |
+| last-event | local-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding local video URL will be available here |
+| last-event | vpn-video-url | String | Read-only | If the last event (depending upon event type) in the home lead a snapshot picture, the corresponding VPN video URL will be available here |
+| last-event | video-status | String | Read-only | Status of the video (recording, deleted or available) |
+| last-event | person-id | String | Read-only | Id of the person the event is about (if any) |
(*) This channel is configurable : low, poor, high.
**Supported channels for the Doorbell thing:**
| Channel Group | Channel ID | Item Type | Read/Write | Description |
-|---------------|-------------------|--------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------|
+| ------------- | ----------------- | ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| status | sd-card | String | Read-only | State of the SD card |
| status | alim | String | Read-only | State of the power connector |
| live | picture | Image | Read-only | Camera Live Snapshot |
| sub-event | snapshot | Image | Read-only | picture of the snapshot |
| sub-event | vignet | Image | Read-only | picture of the vignette |
-
Note: live feeds either locally or via VPN are not available in Netatmo API.
**Supported channels for the Siren thing:**
-| Channel Group | Channel ID | Item Type | Read/Write | Description |
-|---------------|-------------------|--------------|------------|------------------------------------------------------|
-| siren | status | String | Read-only | Status of the siren, if silent or emitting an alarm |
-| siren | monitoring | Switch | Read-only | State of the siren device |
-| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Read-only | Signal strength in dBm |
-| timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
-| battery | value | Number | Read-only | Battery level |
-| battery | low-battery | Switch | Read-only | Low battery |
-
+| Channel Group | Channel ID | Item Type | Read/Write | Description |
+| ------------- | ----------- | ------------ | ---------- | --------------------------------------------------- |
+| siren | status | String | Read-only | Status of the siren, if silent or emitting an alarm |
+| siren | monitoring | Switch | Read-only | State of the siren device |
+| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Read-only | Signal strength in dBm |
+| timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
+| battery | value | Number | Read-only | Battery level |
+| battery | low-battery | Switch | Read-only | Low battery |
**Supported channels for the Door Tag thing:**
-| Channel Group | Channel ID | Item Type | Read/Write | Description |
-|---------------|-------------------|--------------|------------|------------------------------------------------------|
-| tag | status | Contact | Read-only | Status of tag (OPEN,CLOSED) |
-| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Read-only | Signal strength in dBm |
-| timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
-| battery | value | Number | Read-only | Battery level |
-| battery | low-battery | Switch | Read-only | Low battery |
+| Channel Group | Channel ID | Item Type | Read/Write | Description |
+| ------------- | ----------- | ------------ | ---------- | ------------------------------------------------ |
+| tag | status | Contact | Read-only | Status of tag (OPEN,CLOSED) |
+| signal | strength | Number | Read-only | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Read-only | Signal strength in dBm |
+| timestamp | last-seen | DateTime | Read-only | Last time the module reported its presence |
+| battery | value | Number | Read-only | Battery level |
+| battery | low-battery | Switch | Read-only | Low battery |
### Welcome Person
Netatmo API distinguishes two kinds of persons:
-* Known persons : have been identified by the camera and you have defined a name for those.
-* Unknown persons : identified by the camera, but no name defined.
+- Known persons : have been identified by the camera and you have defined a name for those.
+- Unknown persons : identified by the camera, but no name defined.
Person things are automatically created in discovery process for all known persons.
**Supported channels for the Person thing:**
| Channel Group | Channel ID | Item Type | Description |
-|---------------|--------------|-----------|--------------------------------------------------------|
+| ------------- | ------------ | --------- | ------------------------------------------------------ |
| person | avatar-url | String | URL for the avatar of this person |
| person | avatar | Image | Avatar of this person |
| person | at-home | Switch | Indicates if this person is known to be at home or not |
All these channels except at-home are read only.
-
### Netatmo Smart Smoke Detector
All these channels are read only.
**Supported channels for the Smoke Detector thing:**
-| Channel Group | Channel Id | Item Type | Description |
-|---------------|--------------|--------------|--------------------------------------------------|
-| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
-| signal | value | Number:Power | Signal strength in dBm |
-| timestamp | last-seen | DateTime | Last time the module reported its presence |
-| last-event | type | String | Type of event |
-| last-event | time | DateTime | Moment of the last event for this person |
-| last-event | subtype | String | Sub-type of event |
-| last-event | message | String | Last event message from this person |
+| Channel Group | Channel Id | Item Type | Description |
+| ------------- | ---------- | ------------ | ------------------------------------------------ |
+| signal | strength | Number | Signal strength (0 for no signal, 1 for weak...) |
+| signal | value | Number:Power | Signal strength in dBm |
+| timestamp | last-seen | DateTime | Last time the module reported its presence |
+| last-event | type | String | Type of event |
+| last-event | time | DateTime | Moment of the last event for this person |
+| last-event | subtype | String | Sub-type of event |
+| last-event | message | String | Last event message from this person |
## Configuration Examples
-
### things/netatmo.things
-```
+```java
Bridge netatmo:account:myaccount "Netatmo Account" [clientId="xxxxx", clientSecret="yyyy", refreshToken="zzzzz"] {
Bridge weather-station inside "Inside Weather Station" [id="70:ee:aa:aa:aa:aa"] {
outdoor outside "Outside Module" [id="02:00:00:aa:aa:aa"] {
}
```
-
### items/netatmo.items
-```
+```java
// Indoor Module
Number:Temperature Indoor_Temp "Temperature [%.1f %unit%]" <temperature> { channel = "netatmo:weather-station:myaccount:inside:temperature#value" }
Number:Temperature Indoor_Min_Temp "Min Temperature Today [%.1f %unit%]" <temperature> { channel = "netatmo:weather-station:myaccount:inside:temperature#min-today" }
### sitemaps/netatmo.sitemap
-```
+```perl
sitemap netatmo label="Netatmo" {
Frame label="Indoor" {
Text item=Indoor_Temp
Example
-```
+```java
val actions = getActions("netatmo","netatmo:room:myaccount:myhome:livingroom")
if(null === actions) {
logInfo("actions", "Actions not found, check thing ID")
Parameters:
-| Name | Description |
-|---------|----------------------------------------------------------------------|
-| temp | The temperature setpoint. |
-| endtime | Time the setpoint should end (Local Unix time in seconds). |
+| Name | Description |
+| ------- | ---------------------------------------------------------- |
+| temp | The temperature setpoint. |
+| endtime | Time the setpoint should end (Local Unix time in seconds). |
Example:
-```
+```java
actions.setThermRoomTempSetpoint(19.0, 1654387205)
```
Parameters:
-| Name | Description |
-|---------|----------------------------------------------------------------------|
-| mode | The mode to set: MANUAL, MAX or HOME. |
-| endtime | Time the setpoint should end (Local Unix time in seconds). |
+| Name | Description |
+| ------- | ---------------------------------------------------------- |
+| mode | The mode to set: MANUAL, MAX or HOME. |
+| endtime | Time the setpoint should end (Local Unix time in seconds). |
Example:
-```
+```java
actions.setThermRoomModeSetpoint("MANUAL", 1654387205)
actions.setThermRoomModeSetpoint("HOME", null)
```
If you want to evaluate this binding but have not got a Netatmo station yourself
yet, you can search on the web for a publicly shared weather station.
-
## Icons
The following icons are used by original Netatmo web app:
-
### Modules
-- https://my.netatmo.com/images/my/app/module_int.png
-- https://my.netatmo.com/images/my/app/module_ext.png
-- https://my.netatmo.com/images/my/app/module_rain.png
-
+- `https://my.netatmo.com/images/my/app/module_int.png`
+- `https://my.netatmo.com/images/my/app/module_ext.png`
+- `https://my.netatmo.com/images/my/app/module_rain.png`
### Battery status
-- https://my.netatmo.com/images/my/app/battery_verylow.png
-- https://my.netatmo.com/images/my/app/battery_low.png
-- https://my.netatmo.com/images/my/app/battery_medium.png
-- https://my.netatmo.com/images/my/app/battery_high.png
-- https://my.netatmo.com/images/my/app/battery_full.png
-
+- `https://my.netatmo.com/images/my/app/battery_verylow.png`
+- `https://my.netatmo.com/images/my/app/battery_low.png`
+- `https://my.netatmo.com/images/my/app/battery_medium.png`
+- `https://my.netatmo.com/images/my/app/battery_high.png`
+- `https://my.netatmo.com/images/my/app/battery_full.png`
### Signal status
-- https://my.netatmo.com/images/my/app/signal_verylow.png
-- https://my.netatmo.com/images/my/app/signal_low.png
-- https://my.netatmo.com/images/my/app/signal_medium.png
-- https://my.netatmo.com/images/my/app/signal_high.png
-- https://my.netatmo.com/images/my/app/signal_full.png
-
+- `https://my.netatmo.com/images/my/app/signal_verylow.png`
+- `https://my.netatmo.com/images/my/app/signal_low.png`
+- `https://my.netatmo.com/images/my/app/signal_medium.png`
+- `https://my.netatmo.com/images/my/app/signal_high.png`
+- `https://my.netatmo.com/images/my/app/signal_full.png`
### Wifi status
-- https://my.netatmo.com/images/my/app/wifi_low.png
-- https://my.netatmo.com/images/my/app/wifi_medium.png
-- https://my.netatmo.com/images/my/app/wifi_high.png
-- https://my.netatmo.com/images/my/app/wifi_full.png
-
-
+- `https://my.netatmo.com/images/my/app/wifi_low.png`
+- `https://my.netatmo.com/images/my/app/wifi_medium.png`
+- `https://my.netatmo.com/images/my/app/wifi_high.png`
+- `https://my.netatmo.com/images/my/app/wifi_full.png`
The binding has the following configuration options:
-- **allowSystemPings:** Use the external ICMP ping program of the operating system instead of the Java ping. Useful if the devices cannot be reached by Java ping. Default is true.
-- **allowDHCPlisten:** If devices leave and reenter a network, they usually request their last IPv4 address by using DHCP requests. By listening for those messages, the status update can be more "real-time" without having to wait for the next refresh cycle. Default is true.
-- **arpPingToolPath:** If the arp ping tool is not called `arping` and cannot be found in the PATH environment variable, the absolute path can be configured here. Default is `arping`.
-- **cacheDeviceStateTimeInMS:** The result of a device presence detection is cached for a small amount of time. Set this time here in milliseconds. Be aware that no new pings will be issued within this time frame, even if explicitly requested. Default is 2000.
-- **preferResponseTimeAsLatency:** If enabled, an attempt will be made to extract the latency from the output of the ping command. If no such latency value is found in the ping command output, the time to execute the ping command is used as fallback latency. If disabled, the time to execute the ping command is always used as latency value. This is disabled by default to be backwards-compatible and to not break statistics and monitoring which existed before this feature.
+- **allowSystemPings:** Use the external ICMP ping program of the operating system instead of the Java ping. Useful if the devices cannot be reached by Java ping. Default is true.
+- **allowDHCPlisten:** If devices leave and reenter a network, they usually request their last IPv4 address by using DHCP requests. By listening for those messages, the status update can be more "real-time" without having to wait for the next refresh cycle. Default is true.
+- **arpPingToolPath:** If the arp ping tool is not called `arping` and cannot be found in the PATH environment variable, the absolute path can be configured here. Default is `arping`.
+- **cacheDeviceStateTimeInMS:** The result of a device presence detection is cached for a small amount of time. Set this time here in milliseconds. Be aware that no new pings will be issued within this time frame, even if explicitly requested. Default is 2000.
+- **preferResponseTimeAsLatency:** If enabled, an attempt will be made to extract the latency from the output of the ping command. If no such latency value is found in the ping command output, the time to execute the ping command is used as fallback latency. If disabled, the time to execute the ping command is always used as latency value. This is disabled by default to be backwards-compatible and to not break statistics and monitoring which existed before this feature.
Create a `<openHAB-conf>/services/network.cfg` file and use the above options like this:
-```
+```text
binding.network:allowSystemPings=true
binding.network:allowDHCPlisten=false
binding.network:arpPingToolPath=arping
## Supported Things
-- **pingdevice:** Detects device presence by using ICMP pings, arp pings and dhcp packet sniffing.
-- **servicedevice:** Detects device presence by scanning for a specific open tcp port.
-- **speedtest:** Monitors available bandwidth for upload and download.
+- **pingdevice:** Detects device presence by using ICMP pings, arp pings and dhcp packet sniffing.
+- **servicedevice:** Detects device presence by scanning for a specific open tcp port.
+- **speedtest:** Monitors available bandwidth for upload and download.
## Discovery
## Thing Configuration
-```
+```java
network:pingdevice:one_device [ hostname="192.168.0.64" ]
network:pingdevice:second_device [ hostname="192.168.0.65", macAddress="6f:70:65:6e:48:41", retry=1, timeout=5000, refreshInterval=60000 ]
network:servicedevice:important_server [ hostname="192.168.0.62", port=1234 ]
Use the following options for a **network:pingdevice**:
-- **hostname:** IP address or hostname of the device.
-- **macAddress:** MAC address used for waking the device by the Wake-on-LAN action.
-- **retry:** After how many refresh interval cycles the device will be assumed to be offline. Default: `1`.
-- **timeout:** How long the ping will wait for an answer, in milliseconds. Default: `5000` (5 seconds).
-- **refreshInterval:** How often the device will be checked, in milliseconds. Default: `60000` (one minute).
+- **hostname:** IP address or hostname of the device.
+- **macAddress:** MAC address used for waking the device by the Wake-on-LAN action.
+- **retry:** After how many refresh interval cycles the device will be assumed to be offline. Default: `1`.
+- **timeout:** How long the ping will wait for an answer, in milliseconds. Default: `5000` (5 seconds).
+- **refreshInterval:** How often the device will be checked, in milliseconds. Default: `60000` (one minute).
Use the following additional options for a **network:servicedevice**:
-- **port:** Must not be 0. The destination port needs to be a TCP service.
+- **port:** Must not be 0. The destination port needs to be a TCP service.
Use the following options for a **network:speedtest**:
-- **refreshInterval:** Interval between each test execution, in minutes. Default: `20`.
-- **uploadSize:** Size of the file to be uploaded in bytes. Default: `1000000`.
-- **url:** Url of the speed test server.
-- **fileName:** Name of the file to download from test server.
-- **initialDelay:** Delay (in minutes) before starting the first speed test (can help avoid flooding your server at startup). Default: `5`.
-- **maxTimeout:** Number of timeout events that can happend (resetted at success) before setting the thing offline. Default: `3`.
+- **refreshInterval:** Interval between each test execution, in minutes. Default: `20`.
+- **uploadSize:** Size of the file to be uploaded in bytes. Default: `1000000`.
+- **url:** Url of the speed test server.
+- **fileName:** Name of the file to download from test server.
+- **initialDelay:** Delay (in minutes) before starting the first speed test (can help avoid flooding your server at startup). Default: `5`.
+- **maxTimeout:** Number of timeout events that can happend (resetted at success) before setting the thing offline. Default: `3`.
## Presence detection - Configure target device
Apple iOS devices are usually in a deep sleep mode and do not respond to ARP pings under all conditions, but to Bonjour service discovery messages (UDP port 5353).
Therefore first a Bonjour message is sent, before the ARP presence detection is performed.
The binding automatically figures out if the target device is an iOS device.
-To check if the binding has correctly recognised a device, have a look at the *uses_ios_wakeup* property of the THING.
+To check if the binding has correctly recognised a device, have a look at the _uses_ios_wakeup_ property of the THING.
### Use open TCP ports
Many devices provide services on TCP ports (web-frontends, streaming servers, etc.), which can be used to confirm their presence in the network.
Most operating systems have options to list open ports.
-On a Linux-based system, *nmap* may be used to discover all open TCP ports on the device with the specified IP address:
+On a Linux-based system, _nmap_ may be used to discover all open TCP ports on the device with the specified IP address:
-```
+```shell
$ sudo nmap -Pn -sT -p- 192.168.0.42
Starting Nmap 6.47 ( http://nmap.org ) at 2016-07-31 20:00 CEST
For arp pings to work, a separate tool called "arping" is used.
Linux has three different tools:
-* arp-scan (not yet supported by this binding)
-* arping of the ip-utils (Ubuntu/Debian: `apt-get install iputils-arping`)
-* arping by Thomas Habets (Ubuntu/Debian: `apt-get install arping`)
-* arp-ping by Eli Fulkerson (Windows: https://www.elifulkerson.com/projects/arp-ping.php)
+- arp-scan (not yet supported by this binding)
+- arping of the ip-utils (Ubuntu/Debian: `apt-get install iputils-arping`)
+- arping by Thomas Habets (Ubuntu/Debian: `apt-get install arping`)
+- arp-ping by Eli Fulkerson (Windows: <https://www.elifulkerson.com/projects/arp-ping.php>)
arping by Thomas Habets runs on Windows and macOS as well.
Some operating systems such as Linux restrict applications to only use ports >= 1024 without elevated privileges.
If the binding is not able to use port 67 (DHCP) because of such a restriction, or because the same system is used as a DHCP server, port 6767 will be used instead.
-Check the property *dhcp_state* on the THING for such a hint. In this case, establish port forwarding:
+Check the property _dhcp_state_ on the THING for such a hint. In this case, establish port forwarding:
```shell
sysctl -w net.ipv4.ip_forward=1
iptables -A OUTPUT -t nat -p udp -s 127.0.0.1/32 --dport 67 -j DNAT --to 127.0.0.1:6767
```
-Above iptables solutions to check *dhcp_state* are not working when openHAB is started in Docker. Use another workaround
+Above iptables solutions to check _dhcp_state_ are not working when openHAB is started in Docker. Use another workaround
```shell
iptables -I PREROUTING -t nat -p udp --src 0.0.0.0 --dport 67 -j DNAT --to 0.0.0.0:6767
demo.things:
-```xtend
+```java
Thing network:pingdevice:devicename [ hostname="192.168.0.42", macAddress="6f:70:65:6e:48:41" ]
Thing network:speedtest:local "SpeedTest 50Mo" @ "Internet" [url="https://bouygues.testdebit.info/", fileName="50M.iso"]
```
demo.items:
-```xtend
+```java
Switch MyDevice { channel="network:pingdevice:devicename:online" }
Number:Time MyDeviceResponseTime { channel="network:pingdevice:devicename:latency" }
demo.sitemap:
-```xtend
+```perl
sitemap demo label="Main Menu"
{
- Frame {
- Text item=MyDevice label="Device [%s]"
- Text item=MyDeviceResponseTime label="Device Response Time [%s]"
- }
+ Frame {
+ Text item=MyDevice label="Device [%s]"
+ Text item=MyDeviceResponseTime label="Device Response Time [%s]"
+ }
+
Frame label="SpeedTest" {
Text item=Speedtest_Start
Switch item=Speedtest_Running
A Wake-on-LAN action is supported by this binding for the `pingdevice` and `servicedevice` thing types.
In classic rules this action is accessible as shown in the example below:
-```
+```java
val actions = getActions("network", "network:pingdevice:devicename")
if (actions === null) {
logInfo("actions", "Actions not found, check thing ID")
Therefore these properties are updated with a 1 hour frequency.
The following NUT variables are read and added to the thing as properties:
-| Property | Description
-|------------------|----------------------------------------
-| ups.firmware | UPS firmware
-| ups.firmware.aux | Auxiliary device firmware
-| ups.id | UPS system identifier
-| ups.mfr | UPS manufacturer
-| ups.mfr.date | UPS manufacturing date
-| ups.model | UPS model
-| ups.serial | UPS serial number
-
+| Property | Description |
+| ---------------- | ------------------------- |
+| ups.firmware | UPS firmware |
+| ups.firmware.aux | Auxiliary device firmware |
+| ups.id | UPS system identifier |
+| ups.mfr | UPS manufacturer |
+| ups.mfr.date | UPS manufacturing date |
+| ups.model | UPS model |
+| ups.serial | UPS serial number |
## Discovery
If the NUT service isn't running locally the ip address or domain name (FDQN) of the server running NUT must be configured.
Optional, port, username and password might need to be configured if required.
-| Parameter | Default | Mandatory | Description
-|-----------|-----------|----------|-------------
-| device | | Yes | UPS device name, `ups` for example
-| host | localhost | Yes | UPS server hostname
-| port | 3493 | No | UPS server port, 3493 for example
-| username | | No | UPS server username
-| password | | No | UPS server password
-| refresh | 60 | No | Refresh interval for channel updates in seconds
+| Parameter | Default | Mandatory | Description |
+| --------- | --------- | --------- | ----------------------------------------------- |
+| device | | Yes | UPS device name, `ups` for example |
+| host | localhost | Yes | UPS server hostname |
+| port | 3493 | No | UPS server port, 3493 for example |
+| username | | No | UPS server username |
+| password | | No | UPS server password |
+| refresh | 60 | No | Refresh interval for channel updates in seconds |
## Channels
The following channels are available:
-| Channel Name | Item Type | Unit | Description | Advanced |
-|----------------------------|--------------------------|------|------------------------------------------------------------------------------------|---------------|
-| upsAlarm | String | | UPS alarms | no |
-| upsLoad | Number:Dimensionless | % | Load on UPS (percent) | yes |
-| upsPower | Number:Power | VA | Current value of apparent power (Volt-Amps) | yes |
-| upsRealpower | Number:Power | W | Current value of real power (Watts) | no |
-| upsStatus | String | | Status of the UPS: OFF, OL,OB,LB,RB,OVER,TRIM,BOOST,CAL,BYPASS,NULL | no |
-| upsTemperature | Number:Temperature | °C | UPS temperature (degrees C) | yes |
-| upsTestResult | String | | Results of last self test (opaque string) | yes |
-| inputCurrent | Number:ElectricCurrent | A | Input current (A) | yes |
-| inputCurrentStatus | String | | Status relative to the thresholds | yes |
-| inputLoad | Number:Dimensionless | % | Load on (ePDU) input (percent of full) | no |
-| inputRealpower | Number:Power | W | Current sum value of all (ePDU) phases real power (W) | yes |
-| inputQuality | String | | Input power quality (*** opaque) | yes |
-| inputTransferReason | String | | Reason for last transfer to battery (*** opaque) | yes |
-| inputVoltage | Number:ElectricPotential | V | Input voltage (V) | yes |
-| inputVoltageStatus | String | | Status relative to the thresholds | yes |
-| outputCurrent | Number:ElectricCurrent | A | Output current (A) | yes |
-| outputVoltage | Number:ElectricPotential | V | Output voltage (V) | yes |
-| batteryCharge | Number:Dimensionless | % | Battery charge (percent) | no |
-| batteryRuntime | Number:Time | s | Battery runtime (seconds) | no |
-| batteryVoltage | Number:ElectricPotential | V | Battery voltage (V) | yes |
+| Channel Name | Item Type | Unit | Description | Advanced |
+| ------------------- | ------------------------ | ---- | ------------------------------------------------------------------- | -------- |
+| upsAlarm | String | | UPS alarms | no |
+| upsLoad | Number:Dimensionless | % | Load on UPS (percent) | yes |
+| upsPower | Number:Power | VA | Current value of apparent power (Volt-Amps) | yes |
+| upsRealpower | Number:Power | W | Current value of real power (Watts) | no |
+| upsStatus | String | | Status of the UPS: OFF, OL,OB,LB,RB,OVER,TRIM,BOOST,CAL,BYPASS,NULL | no |
+| upsTemperature | Number:Temperature | °C | UPS temperature (degrees C) | yes |
+| upsTestResult | String | | Results of last self test (opaque string) | yes |
+| inputCurrent | Number:ElectricCurrent | A | Input current (A) | yes |
+| inputCurrentStatus | String | | Status relative to the thresholds | yes |
+| inputLoad | Number:Dimensionless | % | Load on (ePDU) input (percent of full) | no |
+| inputRealpower | Number:Power | W | Current sum value of all (ePDU) phases real power (W) | yes |
+| inputQuality | String | | Input power quality (*** opaque) | yes |
+| inputTransferReason | String | | Reason for last transfer to battery (*** opaque) | yes |
+| inputVoltage | Number:ElectricPotential | V | Input voltage (V) | yes |
+| inputVoltageStatus | String | | Status relative to the thresholds | yes |
+| outputCurrent | Number:ElectricCurrent | A | Output current (A) | yes |
+| outputVoltage | Number:ElectricPotential | V | Output voltage (V) | yes |
+| batteryCharge | Number:Dimensionless | % | Battery charge (percent) | no |
+| batteryRuntime | Number:Time | s | Battery runtime (seconds) | no |
+| batteryVoltage | Number:ElectricPotential | V | Battery voltage (V) | yes |
### Dynamic Channels
The following channel properties are needed:
-| Property | Description | Example
-|-----------------|--------------------------------|-----------------
-| networkupstools | Links to NUT variable | `networkupstools="input.voltage.low.warning"`
-| unit | The unit of Quantity Type data | `unit="V"`
+| Property | Description | Example |
+| --------------- | ------------------------------ | --------------------------------------------- |
+| networkupstools | Links to NUT variable | `networkupstools="input.voltage.low.warning"` |
+| unit | The unit of Quantity Type data | `unit="V"` |
## Full Example
-
ups.things:
-```
+```java
Thing networkupstools:ups:ups1 [ device="ups", host="localhost", refresh=60 ]
```
ups-with-channels.things:
-```
+```java
Thing networkupstools:ups:ups2 [ device="ups", host="localhost", refresh=60 ] {
Channels:
String : testResult "Test Result" [networkupstools="ups.test.result"]
ups.items
-```
+```java
Number:Dimensionless ups_battery_charge "Battery Charge [%d %%]" {channel="networkupstools:ups:ups1:batteryCharge"}
Number:ElectricCurrent ups_current "Input Current [%d mA]"{channel="networkupstools:ups:ups1:inputCurrent"}
This binding supports direct serial port connection (RS-485 adapter needed) to heat pump but also UDP connection via NibeGW software.
| Thing type | Description |
-|-----------------|--------------------------------------------------|
+| --------------- | ------------------------------------------------ |
| f1x45-serial | Serial port connected F1145 and F1245 Heat Pumps |
| f1x45-udp | UDP connected Nibe F1145 and F1245 Heat Pumps |
| f1x45-simulator | Simulator for Nibe F1145 and F1245 Heat Pumps |
## Discovery
-Discovery is not supported.
+Discovery is not supported.
## Prerequisites
Arduino code is available [here](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/Arduino/NibeGW).
Arduino code can be build via Arduino IDE.
-For more details see [www.arduino.cc](https://www.arduino.cc/en/Main/Software).
+For more details see [www.arduino.cc](https://www.arduino.cc/en/Main/Software).
NibeGW configuration (such IP addresses, ports, etc) can be adapted directly by editing the code files.
PRODINo ESP32 Ethernet v1 also supports dynamic configuration and OTA updates via Wi-Fi access point.
C code is available [here](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/RasPi).
-To build the C code use:
+To build the C code use:
```shell
gcc -std=gnu99 -o nibegw nibegw.c
Thing examples:
-```
+```java
nibeheatpump:f1x45-udp:myPump [hostName="192.168.1.50", port=9999]
```
-```
+```java
nibeheatpump:f1x45-udp:myPump [hostName="192.168.1.50", port=9999, readCommandsPort=10000, writeCommandsPort=10001, refreshInterval=30, enableReadCommands=true, enableWriteCommands=true, enableWriteCommandsToRegisters="44266, 47004"]
```
All supported configuration parameters for UDP connection:
-| Property | Type | Default | Required | Description |
-|---------------------------------|---------|---------|----------|-------------|
-| hostName | String | | Yes | Network address of the Nibe heat pump |
-| port | Integer | 9999 | No | UDP port to listening data packets from the NibeGW |
-| readCommandsPort | Integer | 9999 | No | UDP port to send read commands to the NibeGW |
-| writeCommandsPort | Integer | 10000 | No | UDP port to send write commands to the NibeGW |
-| refreshInterval | Integer | 60 | No | States how often a refresh shall occur in seconds |
-| enableReadCommands | Boolean | false | No | Enable read commands to read additional variable from Nibe heat pump which are not included to data readout messages. This is experimental feature, use it at your own risk! |
-| enableWriteCommands | Boolean | false | No | Enable write commands to change Nibe heat pump settings. This is experimental feature, use it at your own risk! |
-| enableWriteCommandsToRegisters | String | | No | Comma separated list of registers, which are allowed to write to Nibe heat pump. E.g. 44266, 47004 |
-| throttleTime | Integer | 0 | No | Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle time in milliseconds. |
+| Property | Type | Default | Required | Description |
+| ------------------------------ | ------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| hostName | String | | Yes | Network address of the Nibe heat pump |
+| port | Integer | 9999 | No | UDP port to listening data packets from the NibeGW |
+| readCommandsPort | Integer | 9999 | No | UDP port to send read commands to the NibeGW |
+| writeCommandsPort | Integer | 10000 | No | UDP port to send write commands to the NibeGW |
+| refreshInterval | Integer | 60 | No | States how often a refresh shall occur in seconds |
+| enableReadCommands | Boolean | false | No | Enable read commands to read additional variable from Nibe heat pump which are not included to data readout messages. This is experimental feature, use it at your own risk! |
+| enableWriteCommands | Boolean | false | No | Enable write commands to change Nibe heat pump settings. This is experimental feature, use it at your own risk! |
+| enableWriteCommandsToRegisters | String | | No | Comma separated list of registers, which are allowed to write to Nibe heat pump. E.g. 44266, 47004 |
+| throttleTime | Integer | 0 | No | Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle time in milliseconds. |
### Serial port connection
Thing example:
-```
+```java
nibeheatpump:f1x45-serial:myPump [serialPort="/dev/ttyUSB0"]
```
-
All supported configuration parameters for serial port connection:
-| Property | Type | Default | Required | Description |
-|---------------------------------|---------|---------|----------|-------------|
-| serialPort | String | | Yes | Network address of the Nibe heat pump |
-| refreshInterval | Integer | 60 | No | States how often a refresh shall occur in seconds |
-| enableReadCommands | Boolean | false | No | Enable read commands to read additional variable from Nibe heat pump which are not included to data readout messages. This is experimental feature, use it at your own risk! |
-| enableWriteCommands | Boolean | false | No | Enable write commands to change Nibe heat pump settings. This is experimental feature, use it at your own risk! |
-| enableWriteCommandsToRegisters | String | | No | Comma separated list of registers, which are allowed to write to Nibe heat pump. E.g. 44266, 47004 |
-| sendAckToMODBUS40 | Boolean | true | No | Binding emulates MODBUS40 device and send protocol acknowledges to heat pump |
-| sendAckToRMU40 | Boolean | false | No | Binding emulates RMU40 device and send protocol acknowledges to heat pump |
-| sendAckToSMS40 | Boolean | false | No | Binding emulates SMS40 device and send protocol acknowledges to heat pump |
-| throttleTime | Integer | 0 | No | Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle time in milliseconds. |
-
+| Property | Type | Default | Required | Description |
+| ------------------------------ | ------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| serialPort | String | | Yes | Network address of the Nibe heat pump |
+| refreshInterval | Integer | 60 | No | States how often a refresh shall occur in seconds |
+| enableReadCommands | Boolean | false | No | Enable read commands to read additional variable from Nibe heat pump which are not included to data readout messages. This is experimental feature, use it at your own risk! |
+| enableWriteCommands | Boolean | false | No | Enable write commands to change Nibe heat pump settings. This is experimental feature, use it at your own risk! |
+| enableWriteCommandsToRegisters | String | | No | Comma separated list of registers, which are allowed to write to Nibe heat pump. E.g. 44266, 47004 |
+| sendAckToMODBUS40 | Boolean | true | No | Binding emulates MODBUS40 device and send protocol acknowledges to heat pump |
+| sendAckToRMU40 | Boolean | false | No | Binding emulates RMU40 device and send protocol acknowledges to heat pump |
+| sendAckToSMS40 | Boolean | false | No | Binding emulates SMS40 device and send protocol acknowledges to heat pump |
+| throttleTime | Integer | 0 | No | Throttle incoming data read out messages from heat pump. 0 = throttle is disabled, otherwise throttle time in milliseconds. |
## Channels
This binding currently supports following channels for F1x45 pump models:
| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
-|-----------------|-----------|-------------|------------|---------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| --------------- | --------- | ----------- | ---------- | ------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 40004 | Number | -32767 | 32767 | Setting | BT1 Outdoor temp | |
| 40005 | Number | -32767 | 32767 | Setting | EP23-BT2 Supply temp S4 | |
| 40006 | Number | -32767 | 32767 | Setting | EP22-BT2 Supply temp S3 | |
| 47370 | Switch | 0 | 1 | Setting | Allow Additive Heating | |
| 47371 | Switch | 0 | 1 | Setting | Allow Heating | |
| 47372 | Switch | 0 | 1 | Setting | Allow Cooling | |
-| 47374 | Number | -200 | 400 | Setting | Start Temperature Cooling | |
+| 47374 | Number | -200 | 400 | Setting | Start Temperature Cooling | |
| 47375 | Number | -200 | 400 | Setting | Stop Temperature Heating | |
| 47376 | Number | -250 | 400 | Setting | Stop Temperature Additive | |
-| 47377 | Number | 0 | 48 | Setting | Outdoor Filter Time | |
+| 47377 | Number | 0 | 48 | Setting | Outdoor Filter Time | |
| 47378 | Number | 10 | 250 | Setting | Max diff. comp. | |
| 47379 | Number | 10 | 240 | Setting | Max diff. add. | |
| 47380 | Switch | 0 | 1 | Setting | Low brine out autoreset | |
| 47543 | Number | 10 | 150 | Setting | Cooling DM diff | |
| 47570 | String | 0 | 255 | Setting | Operational mode | 0=Auto, 1=Manual, 2=Add. heat only |
| 48043 | String | 0 | 10 | Setting | Holiday - Activated | 0=inactive, 10=active |
-| 48046 | Number | -10 | 10 | Setting | Heat Offset Holiday | |
-| 48047 | String | -1 | 2 | Setting | Hot water mode Holiday | -1 = off, 0 = economy, 1 = normal, 2 = luxury |
+| 48046 | Number | -10 | 10 | Setting | Heat Offset Holiday | |
+| 48047 | String | -1 | 2 | Setting | Hot water mode Holiday | -1 = off, 0 = economy, 1 = normal, 2 = luxury |
| 48053 | Number | 0 | 100 | Setting | FLM 2 speed 4 | |
| 48054 | Number | 0 | 100 | Setting | FLM 2 speed 3 | |
| 48055 | Number | 0 | 100 | Setting | FLM 2 speed 2 | |
This binding currently supports following channels for F1x55 pump models:
| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
-|-----------------|-----------|-------------|------------|---------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| --------------- | --------- | ----------- | ---------- | ------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 32260 | Number | 0 | 255 | Setting | NIBE Inverter 216-state | |
| 40004 | Number | -32767 | 32767 | Setting | BT1 Outdoor Temperature | |
| 40005 | Number | -32767 | 32767 | Setting | EP23-BT2 Supply temp S4 | |
| 49381 | Switch | 0 | 1 | Setting | External ERS 2 accessory bypass at heat | |
| 49430 | Number | 0 | 255 | Setting | AUX ERS Fire Place Guard | |
-
### SMO40
To keep this documentation light, all parameters are documented in the NIBE ModbusManager except of:
-| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
-|-----------------|-----------|-------------|------------|---------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| 45780 | Number | 0 | 120 | Setting | Silent Mode Frequency 1 (defined in the service-menu) | |
-| 49806 | Number | 0 | 120 | Setting | Silent Mode Frequency 2 (defined in the service-menu) | |
+| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
+| --------------- | --------- | --- | --- | ------- | ----------------------------------------------------- | ------ |
+| 45780 | Number | 0 | 120 | Setting | Silent Mode Frequency 1 (defined in the service-menu) | |
+| 49806 | Number | 0 | 120 | Setting | Silent Mode Frequency 2 (defined in the service-menu) | |
The syntax for a heat pump thing is:
-```
+```java
nibeuplink:<THING TYPE>:<NAME>
```
password used to login on NibeUplink
- **nibeId** (required)
-Id of your heatpump in NibeUplink (can be found in the URL after successful login: https://www.nibeuplink.com/System/**<nibeId>>**/Status/Overview)
+Id of your heatpump in NibeUplink (can be found in the URL after successful login: `https://www.nibeuplink.com/System/**<nibeId>>**/Status/Overview`)
- **pollingInterval**
interval (seconds) in which values are retrieved from NibeUplink.
- minimum configuration
-```
+```java
nibeuplink:vvm320:mynibe [ user="...", password="...", nibeId="..."]
```
- with pollingInterval
-```
+```java
nibeuplink:vvm320:mynibe[ user="...", password="...", nibeId="...", pollingInterval=... ]
```
- multiple heat pumps
-```
+```java
nibeuplink:vvm320:home1 [ user="...", password="...", nibeId="..."]
nibeuplink:vvm320:home2 [ user="...", password="...", nibeId="..."]
```
| compressor#43439 | Number:Dimensionless | 0 | 100 | No | EP14-GP2 Brine Pump Speed | |
| airsupply#40025 | Number:Temperature | -32767 | 32767 | No | BT20 Exhaust air temp. 1 | |
| airsupply#40026 | Number:Temperature | -32767 | 32767 | No | BT21 Vented air temp. 1 | |
-
+
### F1155 / 1255
| Channel Type ID | Item Type | Min | Max | Writable | Description | Allowed Values (write access) |
- type-number-scale10
- type-number-scale100
-
## Full Example
### Thing
-```
+```java
nibeuplink:vvm320:mynibe [ user="nibe@my-domain.de", password="secret123", nibeId="4711", pollingInterval=300] {
Channels:
Type type-number-scale10 : 47015 "min supply temp heating"
Channels which have more than two states are internally represented as number.
You need to define a map file which also gives you the opportunity to translate the state into your preferred language.
-```
+```java
Number:Temperature NIBE_SUPPLY "Vorlauf" { channel="nibeuplink:vvm320:mynibe:base#40008" }
Number:Temperature NIBE_RETURN "Rücklauf [%.2f °F]" { channel="nibeuplink:vvm320:mynibe:base#40012" }
Number:Temperature NIBE_HW_TOP "Brauchwasser oben" { channel="nibeuplink:vvm320:mynibe:hotwater#40013" }
Please define each state as integer.
-```
+```text
0=Eco
1=Norm
2=Lux
```
-
### Sitemaps
Please take care of the status channels.
If you use selection items an automatic mapping will be applied.
If you prefer switch items a mapping must be applied like this:
-```
+```java
Switch item=NIBE_HW_MODE mappings=[0="Eco", 1="Norm"]
```
More specifically, it allows openHAB to:
-* send (simulated) button presses to the Nikobus,
-* react to button presses which occur on the Nikobus,
-* change the status of switch channels on a Nikobus switch module,
-* request the status of switch channels on a Nikobus switch module,
-* change the status of dimmer channels on a Nikobus dimmer module,
-* request the status of dimmer channels on a Nikobus dimmer module,
-* send commands to the Nikobus roller shutter module.
+- send (simulated) button presses to the Nikobus,
+- react to button presses which occur on the Nikobus,
+- change the status of switch channels on a Nikobus switch module,
+- request the status of switch channels on a Nikobus switch module,
+- change the status of dimmer channels on a Nikobus dimmer module,
+- request the status of dimmer channels on a Nikobus dimmer module,
+- send commands to the Nikobus roller shutter module.
This binding works with at least the following hardware:
-* PC-link module (05-200),
-* Push buttons (05-060-01, 05-064-01), RF Transmitter (05-314), PIR Sensor (430-00500),
-* 4 channel switch module (05-002-02),
-* 12 channel switch module (05-000-02),
-* 12 channel dimmer module.
+- PC-link module (05-200),
+- Push buttons (05-060-01, 05-064-01), RF Transmitter (05-314), PIR Sensor (430-00500),
+- 4 channel switch module (05-002-02),
+- 12 channel switch module (05-000-02),
+- 12 channel dimmer module.
## Supported Things
The bridge enables communication with other Nikobus components:
-* `switch-module` - Nikobus switch module, i.e. `05-000-02`,
-* `dimmer-module` - Nikobus dim-controller module, i.e. `05-007-02`,
-* `rollershutter-module` - Nikobus roller shutter module,
-* `push-button` - Nikobus physical push button.
+- `switch-module` - Nikobus switch module, i.e. `05-000-02`,
+- `dimmer-module` - Nikobus dim-controller module, i.e. `05-007-02`,
+- `rollershutter-module` - Nikobus roller shutter module,
+- `push-button` - Nikobus physical push button.
## Bridge Configuration
The binding can connect to the PC-Link via serial interface.
-```
+```java
Bridge nikobus:pc-link:mypclink [ port="<serial port>", refreshInterval=<interval> ] {
}
```
where:
-* `port` is the name of the serial port used to connect to the Nikobus installation
-* `refreshInterval` defines how often the binding reads Nikobus module's status, so having i.e. 30 as above, the binding will read one module’s status each 30s, iterating through all modules, one by one. If one does not specify `refreshInterval`, a default value of 60s is used.
+- `port` is the name of the serial port used to connect to the Nikobus installation
+- `refreshInterval` defines how often the binding reads Nikobus module's status, so having i.e. 30 as above, the binding will read one module’s status each 30s, iterating through all modules, one by one. If one does not specify `refreshInterval`, a default value of 60s is used.
## Thing Configuration
Once connected to the Nikobus installation using a bridge, one can communicate with:
-* `switch-module`,
-* `dimmer-module`,
-* `rollershutter-module`,
-* `push-button`.
+- `switch-module`,
+- `dimmer-module`,
+- `rollershutter-module`,
+- `push-button`.
### Modules
#### switch-module
-```
+```java
Thing switch-module s1 [ address = "BC00" ]
```
#### dimmer-module
-```
+```java
Thing dimmer-module d1 [ address = "D969" ]
```
#### rollershutter-module
-```
+```java
Thing rollershutter-module r1 [ address = "4C6C" ]
```
To configure an item for a button in openHAB with address `28092A`, use the following format:
-```
+```java
Thing push-button pb1 [ address = "28092A" ]
```
When configured, the status of the channel groups to which the button is linked, will be queried every time the button is pressed.
Every status query takes between ~300 ms, so to get the best performance, only add the affected channel groups in the configuration, which has the following format:
-```
+```java
Thing push-button <id> [ address = "<address>", impactedModules = "<moduleType>:<moduleId>:<channelGroup>, <moduleType>:<moduleId>:<channelGroup>, ..." ]
```
where:
-* `moduleType` represents module's type,
-* `moduleId` represents module's id,
-* `channelGroup` represents the first (1) or second (2) channel group in the module.
+- `moduleType` represents module's type,
+- `moduleId` represents module's id,
+- `channelGroup` represents the first (1) or second (2) channel group in the module.
Example configurations may look like:
-```
+```java
Thing switch-module s1 [ address = "FF2A" ]
Thing push-button pb1 [ address = "28092A", impactedModules = "switch-module:s1:1" ]
```
Beside receiving a status update (ON) when a physical Nikobus push button is pressed (and kept pressed), additional triggers can be added and configured to determine how press&hold of a physical push button should generate trigger events. Two types of trigger channels are supported:
-* filter trigger and
-* button trigger.
+- filter trigger and
+- button trigger.
##### Filter Trigger
-* `command` - command to be send,
-* `delay` - a required delay in milliseconds defining how much time must a button be pressed before an initial trigger event is fired,
-* `period` - optional time in milliseconds between successive triggers.
+- `command` - command to be send,
+- `delay` - a required delay in milliseconds defining how much time must a button be pressed before an initial trigger event is fired,
+- `period` - optional time in milliseconds between successive triggers.
Examples:
-* `command = PRESSED, delay = 0, period = <empty>` - triggers `PRESSED` event immediatelly when Nikobus button is pressed and is not triggered anymore while holding down the button,
-* `command = INCREMENT, delay = 1000, period = 500` - triggers initial `INCREMENT` event after 1 second and then every half a second while holding down the button.
-
+- `command = PRESSED, delay = 0, period = <empty>` - triggers `PRESSED` event immediatelly when Nikobus button is pressed and is not triggered anymore while holding down the button,
+- `command = INCREMENT, delay = 1000, period = 500` - triggers initial `INCREMENT` event after 1 second and then every half a second while holding down the button.
##### Button Trigger
Nikobus push buttons have the following format in inbox:
-```
+```text
Nikobus Push Button 14E7F4:3
4BF9CA
nikobus:push-button
Each discovered button has a Nikobus address appended to its name, same as can be seen in Nikobus's PC application, `14E7F4:3` in above example.
- * `14E7F4` - address of the Nikobus switch, as can be seen in Nikobus PC software and
- * `3` - represents a button on Nikobus switch.
+- `14E7F4` - address of the Nikobus switch, as can be seen in Nikobus PC software and
+- `3` - represents a button on Nikobus switch.
### Button mappings
-##### 2 buttons switch
+#### 2 buttons switch

-```
+```text
1 = A
2 = B
- ```
+```
-##### 4 buttons switch
+#### 4 buttons switch

-maps as
+maps as
-```
+```text
3 1
4 2
```
so
-```
+```text
1 = C
2 = D
3 = A
4 = B
```
-##### 8 buttons switch
+#### 8 buttons switch

maps as
-```
+```text
7 5 3 1
8 6 4 2
```
so
-```
+```text
1 = 2C
2 = 2D
3 = 2A
Above example `14E7F4:3` would give:
-* for 4 buttons switch - push button A,
-* for 8 buttons switch - push button 2A.
+- for 4 buttons switch - push button A,
+- for 8 buttons switch - push button 2A.
## Full Example
### nikobus.things
-```
+```java
Bridge nikobus:pc-link:mypclink [ port = "/dev/ttyUSB0", refreshInterval = 10 ] {
Thing dimmer-module d1 [ address = "0700" ]
Thing dimmer-module d2 [ address = "6B00" ]
### nikobus.items
-```
+```java
Dimmer Light_FF_Gallery_Ceiling "Ceiling" (FF_Gallery, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-1" }
Dimmer Light_FF_Bed_Ceiling "Ceiling" (FF_Bed, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-7" }
Dimmer Light_FF_Child_Ceiling "Ceiling" (FF_Child, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d2:output-10" }
Dimmer Light_FF_Child_Wall_Left "Wall Left" (FF_Child, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-11" }
-Dimmer Light_FF_Child_Wall_Right "Wall Right" (FF_Child, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-12" }
-Dimmer Light_FF_PlayRoom_Ceiling "Ceiling" (FF_PlayRoom, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-6" }
-Dimmer Light_FF_PlayRoom_Wall "Wall" (FF_PlayRoom, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-4" }
+Dimmer Light_FF_Child_Wall_Right "Wall Right" (FF_Child, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-12" }
+Dimmer Light_FF_PlayRoom_Ceiling "Ceiling" (FF_PlayRoom, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-6" }
+Dimmer Light_FF_PlayRoom_Wall "Wall" (FF_PlayRoom, Lights) [ "Lighting" ] { channel="nikobus:dimmer-module:mypclink:d1:output-4" }
Switch Light_FF_Gallery_Wall "Wall" (FF_Gallery, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s1:output-4" }
Switch Light_FF_Bath_Ceiling "Ceiling" (FF_Bath, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s3:output-2" }
-Switch Light_FF_Wardrobe_Ceiling "Ceiling" (FF_Wardrobe, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s1:output-1" }
-Switch Light_FF_Corridor_Ceiling "Ceiling" (FF_Corridor, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s2:output-3" }
+Switch Light_FF_Wardrobe_Ceiling "Ceiling" (FF_Wardrobe, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s1:output-1" }
+Switch Light_FF_Corridor_Ceiling "Ceiling" (FF_Corridor, Lights) [ "Lighting" ] { channel="nikobus:switch-module:mypclink:s2:output-3" }
Rollershutter Shutter_GF_Corridor "Corridor" (GF_Corridor, gShuttersGF) { channel="nikobus:rollershutter-module:mypclink:r1:output-1" }
Rollershutter Shutter_GF_Bed "Bedroom" (GF_Bed, gShuttersGF) { channel="nikobus:rollershutter-module:mypclink:r1:output-3" }
For Niko Home Control I:
-```
+```java
Bridge nikohomecontrol:bridge:<bridgeId> [ addr="<IP-address of IP-interface>", port=<listening port>,
refresh=<Refresh interval> ]
```
For Niko Home Control II:
-```
+```java
Bridge nikohomecontrol:bridge2:<bridgeId> [ addr="<IP-address of IP-interface>", port=<listening port>, profile="<profile>",
password="<token>", refresh=<Refresh interval> ]
```
The Thing configuration for **Niko Home Control actions** has the following syntax:
-```
+```java
Thing nikohomecontrol:<thing type>:<bridgeId>:<thingId> "Label" @ "Location"
[ actionId="<Niko Home Control action ID>",
step=<dimmer increase/decrease step value> ]
or nested in the bridge configuration:
-```
+```java
<thing type> <thingId> "Label" @ "Location" [ actionId="<Niko Home Control action ID>",
step=<dimmer increase/decrease step value> ]
```
The following action thing types are valid for the configuration:
-```
+```text
pushButton, onOff, dimmer, blind
```
The Thing configuration for **Niko Home Control thermostats** has the following syntax:
-```
+```java
Thing nikohomecontrol:thermostat:<bridgeId>:<thingId> "Label" @ "Location"
[ thermostatId="<Niko Home Control thermostat ID>",
overruleTime=<default duration for overrule temperature in minutes> ]
or nested in the bridge configuration:
-```
+```java
thermostat <thingId> "Label" @ "Location" [ thermostatId="<Niko Home Control thermostat ID>" ]
```
The Thing configuration for **Niko Home Control energy meters** has the following syntax:
-```
+```java
Thing nikohomecontrol:energymeter:<bridgeId>:<thingId> "Label" @ "Location"
[ energyMeterId="<Niko Home Control energy meter ID>" ]
```
or nested in the bridge configuration:
-```
+```java
energymeter <thingId> "Label" @ "Location" [ energyMeterId="<Niko Home Control energy meter ID>" ]
```
.things:
-```
+```java
Bridge nikohomecontrol:bridge:nhc1 [ addr="192.168.0.70", port=8000, refresh=300 ] {
pushButton 1 "AllOff" [ actionId="1" ]
onOff 2 "LivingRoom" @ "Downstairs" [ actionId="2" ]
.items:
-```
+```java
Switch AllOff {channel="nikohomecontrol:onOff:nhc1:1:button"} # Pushbutton for All Off action
Switch LivingRoom {channel="nikohomecontrol:onOff:nhc1:2:switch"} # Switch for onOff type action
Dimmer TVRoom {channel="nikohomecontrol:dimmer:nhc1:3:brightness"} # Changing brightness dimmer type action
.sitemap:
-```
+```perl
Switch item=AllOff
Switch item=LivingRoom
Slider item=TVRoom
Example trigger rule:
-```
+```java
rule "example trigger rule"
when
Channel 'nikohomecontrol:bridge:nhc1:alarm' triggered or
This binding is tested with the following devices:
-* Thermostats for different electrical panel heaters
-* Thermostats for heating in floors
-* Nobø Switch SW 4
+- Thermostats for different electrical panel heaters
+- Thermostats for heating in floors
+- Nobø Switch SW 4
## Thermostats
Not all thermostats are made equal.
-* NCU-1R: Comfort temperature setting on the device overrides values from the Hub, making the setting in the Hub useless.
-* NCU-2R: Synchronizes temperature settings to and from the Hub.
+- NCU-1R: Comfort temperature setting on the device overrides values from the Hub, making the setting in the Hub useless.
+- NCU-2R: Synchronizes temperature settings to and from the Hub.
## Supported Things
| component | Thing | A component is a device, i.e. panel heater or switch. |
| zone | Thing | A zone can hold one or more components. |
-
## Discovery
-The hub will be automatically discovered.
+The hub will be automatically discovered.
Before it can be used, you will have to update the configuration with the last three digits of its serial number.
When the hub is configured with the correct serial number, it will autodetect zones and components (thermostats and switches).
## Thing Configuration
-```
+```text
# Configuration for Nobø Hub
#
# Serial number of the Nobø hub to communicate with, 12 digits.
### nobo.things
-```
+```java
Bridge nobohub:nobohub:controller "Nobø Hub" [ hostName="192.168.1.10", serialNumber="103000000000" ] {
- Thing zone 1 "Zone - Kitchen" [ id=1 ]
- Thing component 184000000000 "Heater - Kitchen" [ serialNumber="184000000000" ]
+ Thing zone 1 "Zone - Kitchen" [ id=1 ]
+ Thing component 184000000000 "Heater - Kitchen" [ serialNumber="184000000000" ]
}
```
### nobo.items
-```
+```java
// Hub
String Nobo_Hub_GlobalOverride "Global Override %s" <heating> {channel="nobohub:nobohub:controller:activeOverrideName"}
### nobo.sitemap
-```
+```perl
sitemap nobo label="Nobø " {
Frame label="Hub"{
## Organize your setup
Nobø Hub uses a combination of status types (Normal, Comfort, Eco, Away), profiles types (Comfort, Eco, Away, Off), predefined temperature types (Comfort, Eco, Away), zones and override settings to organize and enable different features.
-This makes it possible to control the heaters in many different scenarios and combinations.
+This makes it possible to control the heaters in many different scenarios and combinations.
The following is a suggested way of organizing the binding with the Hub for a good level of control and flexibility.
-If you own panels with a physical Comfort temperature override, you need to use the Eco temperature type for setting level used by the day based profiles.
+If you own panels with a physical Comfort temperature override, you need to use the Eco temperature type for setting level used by the day based profiles.
If not, you can use either Comfort or Eco to set wanted level.
Start by creating the following profiles in the Nobø Hub App:
- OFF Set to status off all day, every day.
- ON Set to status [Comfort|Eco] all day, every day
- Eco Set to status Eco all day, every day
- Away Set to status Away all way, every day
- Weekday 06->16 Set to status [Comfort|Eco] between 06->16 every weekday, otherwise set to [Away|Off]
- Weekday 06->23 Set to status [Comfort|Eco] between 06->23 every weekday, otherwise set to [Away|Off]
- Weekend 06->16 Set to status [Comfort|Eco] between 06->16 in the weekend, otherwise set to [Away|Off]
- Weekend 06->23 Set to status [Comfort|Eco] between 06->23 in the weekend, otherwise set to [Away|Off]
- Every day 06->16 Set to status [Comfort|Eco] between 06->16 every day, otherwise set to [Away|Off]
- Every day 06->23 Set to status [Comfort|Eco] between 06->23 every day, otherwise set to [Away|Off]
-
-Next set [Comfort|Eco] level for each zone to your requirements.
+```text
+ OFF Set to status off all day, every day.
+ ON Set to status [Comfort|Eco] all day, every day
+ Eco Set to status Eco all day, every day
+ Away Set to status Away all way, every day
+ Weekday 06->16 Set to status [Comfort|Eco] between 06->16 every weekday, otherwise set to [Away|Off]
+ Weekday 06->23 Set to status [Comfort|Eco] between 06->23 every weekday, otherwise set to [Away|Off]
+ Weekend 06->16 Set to status [Comfort|Eco] between 06->16 in the weekend, otherwise set to [Away|Off]
+ Weekend 06->23 Set to status [Comfort|Eco] between 06->23 in the weekend, otherwise set to [Away|Off]
+ Every day 06->16 Set to status [Comfort|Eco] between 06->16 every day, otherwise set to [Away|Off]
+ Every day 06->23 Set to status [Comfort|Eco] between 06->23 every day, otherwise set to [Away|Off]
+```
+
+Next set [Comfort|Eco] level for each zone to your requirements.
For a more advanced setup, you can create a rule which both sets temperature level and profile.
-Then create a sitemap with a Selection pointing to the Week Profile item.
+Then create a sitemap with a Selection pointing to the Week Profile item.
The binding will now automatically update all available week profile options in the selection button:
### nobo.sitemap
-```
+```perl
sitemap nobo label="Nobø " {
Frame label="Main Bedroom"{
It basically implements the protocol specified in [this document](https://cdn.sparkfun.com/assets/parts/1/2/2/7/5/Laser_Dust_Sensor_Control_Protocol_V1.3.pdf).
One can measure the PM 2.5 and PM 10 values with this device.
-It comes very handy for detecting air pollution like neighbors firing their oven with wet wood etc. so one can deactivate the ventilation system.
+It comes very handy for detecting air pollution like neighbors firing their oven with wet wood etc. so one can deactivate the ventilation system.
## Supported Things
## Channels
-Since the supported device is a sensor, both channels are read-only channels.
+Since the supported device is a sensor, both channels are read-only channels.
| channel | type | description |
|----------|----------------|-------------------------------|
demo.things:
-```
+```java
Thing novafinedust:SDS011:mySDS011Report "My SDS011 Fine Dust Sensor with reporting" [ port="/dev/ttyUSB0", reporting=true, reportingInterval=1 ]
Thing novafinedust:SDS011:mySDS011Poll "My SDS011 Fine Dust Sensor with polling" [ port="/dev/ttyUSB0", reporting=false, pollingInterval=10 ]
```
demo.items:
-```
+```java
Number:Density PM25 "My PM 2.5 value" { channel="novafinedust:SDS011:mySDS011Report:pm25" }
Number:Density PM10 "My PM 10 value" { channel="novafinedust:SDS011:mySDS011Report:pm10" }
```
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame {
# NTP Binding
-
+
The NTP binding is used for displaying the local date and time based update from an NTP server.
-
+
## Supported Things
-
+
This binding supports one ThingType: ntp
-
+
## Discovery
-
+
Discovery is used to place one default item in the inbox as a convenient way to add a Thing for the local time.
-
+
## Binding Configuration
-
+
The binding has no configuration options, all configuration is done at Thing level.
-
+
## Thing Configuration
-
+
The thing has a few configuration options:
-| Option | Description |
-|-----------------|--------------------------------------------------- |
-| hostname | The NTP server hostname, e.g. nl.pool.ntp.org |
-| refreshInterval | Interval that new time updates are posted to the eventbus in seconds. Default is 60s. |
-| refreshNtp | Number of updates between querying the NTP server (e.g. with refreshinterval = 60 (seconds) and refreshNtp = 30 the NTP server is queried each half hour). Default is 30. |
-| serverPort | The port that the NTP server could use. Default is 123. |
-| timeZone | The configured timezone. Can be left blank for using the timezone defined as openHAB configuration setting (or default system timezone if not defined). |
+| Option | Description |
+| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| hostname | The NTP server hostname, e.g. nl.pool.ntp.org |
+| refreshInterval | Interval that new time updates are posted to the eventbus in seconds. Default is 60s. |
+| refreshNtp | Number of updates between querying the NTP server (e.g. with refreshinterval = 60 (seconds) and refreshNtp = 30 the NTP server is queried each half hour). Default is 30. |
+| serverPort | The port that the NTP server could use. Default is 123. |
+| timeZone | The configured timezone. Can be left blank for using the timezone defined as openHAB configuration setting (or default system timezone if not defined). |
-
## Channels
-
+
The ntp binding has two channels:
-* `dateTime` which provides the data in a dateTime type
-* `string` which provides the data in a string type. The string channel can be configured with the formatting of the date & time. This also allows proper representation of timezones other than the java machine default one.
+- `dateTime` which provides the data in a dateTime type
+- `string` which provides the data in a string type. The string channel can be configured with the formatting of the date & time. This also allows proper representation of timezones other than the java machine default one.
See the [java documentation](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html) for the detailed information on the formatting
-
-
## Full Example
-
+
Things:
-```
+```java
ntp:ntp:demo [ hostname="nl.pool.ntp.org", refreshInterval=60, refreshNtp=30 ]
```
Items:
-```
+```java
DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" { channel="ntp:ntp:demo:dateTime" }
```
## Prerequisites
1. At least one Nuki Smart Lock or Nuki Opener which is paired via Bluetooth with a Nuki Bridge. For this go and get either:
- * [Nuki Smart Lock](https://nuki.io/en/smart-lock/) and a [Nuki Bridge](https://nuki.io/en/bridge/)
- * [Nuki Combo](https://nuki.io/en/shop/nuki-combo/)
-2. The Bridge HTTP-API has to be enabled during [Initial Bridge setup](https://nuki.io/en/support/bridge/bridge-setup/initial-bridge-setup/).
+ - [Nuki Smart Lock](https://nuki.io/en/smart-lock/) and a [Nuki Bridge](https://nuki.io/en/bridge/)
+ - [Nuki Combo](https://nuki.io/en/shop/nuki-combo/)
+1. The Bridge HTTP-API has to be enabled during [Initial Bridge setup](https://nuki.io/en/support/bridge/bridge-setup/initial-bridge-setup/).
It is absolutely recommended to configure static IP addresses for both, the openHAB server and the Nuki Bridge!
### Nuki Bridge Callback
-The Nuki Binding will manage the required callback from the Nuki Bridge to the openHAB server if *manageCallbacks* is set to `true`.
-If *manageCallbacks* is not set it will default to `true`.
+The Nuki Binding will manage the required callback from the Nuki Bridge to the openHAB server if _manageCallbacks_ is set to `true`.
+If _manageCallbacks_ is not set it will default to `true`.
-If you want to manage the callbacks from the Nuki Bridge to the openHAB server by yourself, you need to set *manageCallbacks* to `false`.
-Then add the callback on the Nuki Bridge via Bridge API Endpoint */callback/add* in the format `http://<openHAB_IP>:<openHAB_PORT>/nuki/bcb`.
+If you want to manage the callbacks from the Nuki Bridge to the openHAB server by yourself, you need to set _manageCallbacks_ to `false`.
+Then add the callback on the Nuki Bridge via Bridge API Endpoint _/callback/add_ in the format `http://<openHAB_IP>:<openHAB_PORT>/nuki/bcb`.
The Sheet [NukiBridgeAPI](https://docs.google.com/spreadsheets/d/1SGKWhqwqRyOGbv4NEq-8PAPjBORRixvEjRuzO-nVabQ) is a helpfull tool for listing, adding and removing callbacks.
## Supported Bridges
The following configuration options are available:
| Parameter | Description | Comment |
-|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|
+| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| ip | The IP address of the Nuki Bridge. Look it up on your router. It is recommended to set a static IP address lease for the Nuki Bridge (and for your openHAB server too) on your router. | Required |
| port | The Port which you configured during [Initial Bridge setup](https://nuki.io/en/support/bridge/bridge-setup/initial-bridge-setup/). | Default 8080 |
| apiToken | The API Token which you configured during [Initial Bridge setup](https://nuki.io/en/support/bridge/bridge-setup/initial-bridge-setup/). | Required |
Bridges on local network can be discovered automatically if both Nuki Bridge and openHAB have working internet connection. You can check whether discovery
is working by checking [discovery API endpoint](https://api.nuki.io/discover/bridges). To discover bridges do the following:
-* In openHAB UI add new thing, select Nuki Binding and start scan. LED on bridge should light up.
-* Within 30s press button on Nuki Bridge you want to discover.
-* Bridge should appear in inbox.
+- In openHAB UI add new thing, select Nuki Binding and start scan. LED on bridge should light up.
+- Within 30s press button on Nuki Bridge you want to discover.
+- Bridge should appear in inbox.
Pressing bridge button is required for binding to obtain valid API token. If the button isn't pressed during discovery, bridge will
be created but token must be set manually for binding to work.
## Supported Things
-This binding supports 2 things - Nuki Smart Lock (`nuki:smartlock`) and Nuki Opener (`nuki:opener`). Both devices can be added using discovery after bridge they are
+This binding supports 2 things - Nuki Smart Lock (`nuki:smartlock`) and Nuki Opener (`nuki:opener`). Both devices can be added using discovery after bridge they are
connected to is configured and online.
### Nuki Smart Lock
This is a common thing for all Nuki smart lock products - Nuki Smart Lock 1.0/2.0/3.0 (Pro) and Nuki Smart Door. The following configuration options are available:
| Parameter | Description | Comment |
-|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------|
+| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| nukiId | The decimal or hexadecimal string that identifies the Nuki Smartlock. | Only available in textual configuration, cannot be edited in UI. |
| deviceType | Numeric device type as specified by bridge HTTP API - 0 = Nuki Smart Lock 1.0/2.0, 3 = Nuki Smart Door, 4 = Nuki Smart Lock 3.0 (Pro). | Only available in textual configuration, cannot be edited in UI. |
| unlatch | If set to `true` the Nuki Smart Lock will unlock the door but then also automatically pull the latch of the door lock. Usually, if the door hinges are correctly adjusted, the door will then swing open. | Default false |
#### Supported Channels
| Channel | Type | Description |
-|------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ---------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| lock | Switch | Switch to lock and unlock doors. If `unlatch` configuration parameter is set, unlocking will also unlatch the door. |
| lockState | Number | Channel which accepts [Supported commands](#supported-lockstate-commands) for performing actions, and produces [supported values](#supported-lockstate-values) when lock state changes. |
| lowBattery | Switch | Low battery warning channel |
These values can be sent to _lockState_ channel as a commands:
| Command | Name |
-|---------|--------------------------|
+| ------- | ------------------------ |
| 1 | Unlock |
| 2 | Lock |
| 3 | Unlatch |
##### Supported lockState values
-| State | Name |
-|--------|--------------------------|
-| 0 | Uncalibrated |
-| 1 | Locked |
-| 2 | Unlocking |
-| 3 | Unlocked |
-| 4 | Locking |
-| 5 | Unlatched |
-| 6 | Unlatched (Lock 'n' Go) |
-| 7 | Unlatching |
-| 254 | Motor blocked |
-| 255 | Undefined |
+| State | Name |
+| ----- | ----------------------- |
+| 0 | Uncalibrated |
+| 1 | Locked |
+| 2 | Unlocking |
+| 3 | Unlocked |
+| 4 | Locking |
+| 5 | Unlatched |
+| 6 | Unlatched (Lock 'n' Go) |
+| 7 | Unlatching |
+| 254 | Motor blocked |
+| 255 | Undefined |
Unfortunately the Nuki Bridge is not reporting any transition states (e.g. for Lock 'n' Go).
##### Supported doorSensorState values
| State | Name |
-|-------|---------------------|
+| ----- | ------------------- |
| 1 | Deactivated |
| 2 | Closed |
| 3 | Open |
### Nuki Opener
| Parameter | Description | Comment |
-|-----------|--------------------------------------------------------------------|------------------------------------------------------------------|
+| --------- | ------------------------------------------------------------------ | ---------------------------------------------------------------- |
| nukiId | The decimal or hexadecimal string that identifies the Nuki Opener. | Only available in textual configuration, cannot be edited in UI. |
#### Supported channels
| Channel | Type | Description |
-|---------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| openerState | Number | Channel for sending [supported commands](#supported-openerstate-commands) to Opener, produces one of [supported values](#supported-openerstate-values) when Opener state changes |
| openerMode | Number | Id of current Opener mode, see [Supported values](#supported-openermode-values) |
| openerLowBattery | Switch | Low battery warning channel |
##### Supported openerState commands
| Command | Name |
-|---------|----------------------------|
+| ------- | -------------------------- |
| 1 | Activate ring to open |
| 2 | Deactivate ring to open |
| 3 | Electric strike actuation |
##### Supported openerState values
-| State | Name |
-|--------|---------------------|
-| 0 | Untrained |
-| 1 | Online |
-| 3 | Ring to open active |
-| 5 | Open |
-| 7 | Opening |
-| 253 | Boot run |
-| 255 | Undefined |
+| State | Name |
+| ----- | ------------------- |
+| 0 | Untrained |
+| 1 | Online |
+| 3 | Ring to open active |
+| 5 | Open |
+| 7 | Opening |
+| 253 | Boot run |
+| 255 | Undefined |
##### Supported openerMode values
-| Mode | Name |
-|--------|-----------------|
-| 2 | Door mode |
-| 3 | Continuous mode |
-
+| Mode | Name |
+| ---- | --------------- |
+| 2 | Door mode |
+| 3 | Continuous mode |
## Troubleshooting
### Bridge and devices are offline with error 403
If secureToken property is enabled, make sure that time on device running openHAB and Nuki Bridge are synchronized. When secureToken
-is enabled, all requests contain timestamp and bridge will only accept requests with small time difference. If it is not possible to
+is enabled, all requests contain timestamp and bridge will only accept requests with small time difference. If it is not possible to
keep time synchronized, disable secureToken feature.
### NukiId conversion when migrating from old binding version
expects nukiId to be in decimal format (e.g. 1548469427), since that's the format returned from API.
The binding does the conversion automatically, but only if your nukiId contains any letters A-F, otherwise the binding
has no way to tell whether the id is in hexadecimal or decimal format. If your nukiId in hexadecimal format
-contains only numbers, you'll have to convert it to decimal format manually, or preferably delete the old Thing
+contains only numbers, you'll have to convert it to decimal format manually, or preferably delete the old Thing
and use discovery to recreate it.
## Full Example
### things/nuki.things
-```
+```java
Bridge nuki:bridge:NB1 "Bridge Name" [ ip="192.168.0.50", port=8080, apiToken="myS3cr3t!", manageCallbacks=true, secureToken=true ] {
Thing smartlock SL1 "Nuki Smartlock Name" [ nukiId="12AB89EF", deviceType=0, unlatch=false ]
Thing opener OP1 "Nuki Opener Name" [ nukiId="254CF45A" ]
### items/nuki.items
-```
-Switch Frontdoor_Lock "Frontdoor (Unlock / Lock)" <nukiwhite> { channel="nuki:smartlock:NB1:SL1:lock" }
-Number Frontdoor_LockState "Frontdoor (Lock State)" <nukisl> { channel="nuki:smartlock:NB1:SL1:lockState" }
-Switch Frontdoor_LowBattery "Frontdoor Low Battery" <nukibattery> { channel="nuki:smartlock:NB1:SL1:lowBattery" }
-Number Frontdoor_DoorState "Frontdoor (Door State)" <door> { channel="nuki:smartlock:NB1:SL1:doorsensorState" }
+```java
+Switch Frontdoor_Lock "Frontdoor (Unlock / Lock)" <nukiwhite> { channel="nuki:smartlock:NB1:SL1:lock" }
+Number Frontdoor_LockState "Frontdoor (Lock State)" <nukisl> { channel="nuki:smartlock:NB1:SL1:lockState" }
+Switch Frontdoor_LowBattery "Frontdoor Low Battery" <nukibattery> { channel="nuki:smartlock:NB1:SL1:lowBattery" }
+Number Frontdoor_DoorState "Frontdoor (Door State)" <door> { channel="nuki:smartlock:NB1:SL1:doorsensorState" }
```
### sitemaps/nuki.sitemap
-```
+```perl
sitemap nuki label="Nuki Smart Lock" {
- Frame label="Channel Lock" {
- Switch item=Frontdoor_Lock
- }
- Frame label="Channel State used for lock actions" {
- Switch item=Frontdoor_LockState mappings=[1="Unlock", 2="Lock", 3="Unlatch", 4="LnGo", 5="LnGoU"]
- }
- Frame label="Channel State" {
- Text item=Frontdoor_LockState label="Lock State [MAP(nukilockstates.map):%s]"
- }
- Frame label="Channel Low Battery" {
- Text item=Frontdoor_LowBattery label="Low Battery [%s]"
- }
- Frame label="Channel Door State" {
- Text item=Frontdoor_DoorState label="Door State [MAP(nukidoorsensorstates.map):%s]"
- }
+ Frame label="Channel Lock" {
+ Switch item=Frontdoor_Lock
+ }
+ Frame label="Channel State used for lock actions" {
+ Switch item=Frontdoor_LockState mappings=[1="Unlock", 2="Lock", 3="Unlatch", 4="LnGo", 5="LnGoU"]
+ }
+ Frame label="Channel State" {
+ Text item=Frontdoor_LockState label="Lock State [MAP(nukilockstates.map):%s]"
+ }
+ Frame label="Channel Low Battery" {
+ Text item=Frontdoor_LowBattery label="Low Battery [%s]"
+ }
+ Frame label="Channel Door State" {
+ Text item=Frontdoor_DoorState label="Door State [MAP(nukidoorsensorstates.map):%s]"
+ }
}
```
The binding supports three different kinds of connections:
-* serial connection,
-* serial over IP connection,
-* direct IP connection via a Nuvo MPS4 music server
+- serial connection,
+- serial over IP connection,
+- direct IP connection via a Nuvo MPS4 music server
For users without a serial connector on the server side, you can use a USB to serial adapter.
| Favorite Labels | favoriteLabels | A comma separated list of up to 12 label names that are loaded into the 'favorites' channel of each zone. These represent keypad favorites 1-12 | Optional; Comma separated list, max 12 items. ie: Favorite 1,Favorite 2,Favorite 3 |
| Sync Clock on GConcerto | clockSync | (Optional) If set to true, the binding will sync the internal clock on the Grand Concerto to match the openHAB host's system clock | Boolean; default false |
| Source N is NuvoNet | nuvoNetSrcN | MPS4 Only! Indicate if the source is a NuvoNet source in the MPS4 or in openHAB. Nuvo tuners & iPod docks and all others set to 0 | 0 = Non-NuvoNet source, 1 = Source is a used by MPS4, 2 = openHAB NuvoNet Source |
-| Source N Favorites | favoritesSrcN | MPS4 Only! A comma separated list of favorite names to load into the global favorites list for Source N. See *very advanced* rules | Comma separated list, max 20 items. Each item max 40 chars, ie: Oldies,Pop,Rock |
-| Source N Favorite Prefix | favPrefixN | MPS4 Only! To quickly locate a Source's favorites, this prefix will be added to the favorite names. See *very advanced* rules | Text; ie: 'S2-' will cause the favorite names to be prefixed, e.g. 'S2-Rock' |
-| Source N Menu XML | menuXmlSrcN | MPS4 Only! Will load a custom menu for a given source into the keypads. Up to 10 items in the top menu and up to 20 items in each sub menu | XML Text string; see examples below and *very advanced* rules for usage |
+| Source N Favorites | favoritesSrcN | MPS4 Only! A comma separated list of favorite names to load into the global favorites list for Source N. See _very advanced_ rules | Comma separated list, max 20 items. Each item max 40 chars, ie: Oldies,Pop,Rock |
+| Source N Favorite Prefix | favPrefixN | MPS4 Only! To quickly locate a Source's favorites, this prefix will be added to the favorite names. See _very advanced_ rules | Text; ie: 'S2-' will cause the favorite names to be prefixed, e.g. 'S2-Rock' |
+| Source N Menu XML | menuXmlSrcN | MPS4 Only! Will load a custom menu for a given source into the keypads. Up to 10 items in the top menu and up to 20 items in each sub menu | XML Text string; see examples below and _very advanced_ rules for usage |
Some notes:
-* If the port is set to 5006, the binding will adjust its protocol to connect to the Nuvo amplifier thing via an MPS4 IP connection.
-* MPS4 connections do not support commands using `SxDISPINFO`& `SxDISPLINE` (display_lineN channels) including those outlined in the advanced rules section below. In this case,`SxDISPINFOTWO` and `SxDISPLINES` must be used instead. See the *very advanced* rule examples below.
-* As of OH 3.4.0, the binding supports NuvoNet source communication for any/all of the amplifier's 6 inputs but only when using an MPS4 connection.
-* By implementing NuvoNet communication, the binding can now support sending custom menus, custom favorite lists, album art, etc. to the Nuvo keypads for each source configured as an openHAB NuvoNet source.
-* If a zone has a maximum volume limit configured by the Nuvo configurator, the volume slider will automatically drop back to that level if set above the configured limit.
-* Source display_line1 thru 4 can only be updated on non NuvoNet sources when not using an MPS4 connection.
-* The track_position channel does not update continuously for NuvoNet sources. It only changes when the track changes or playback is paused/unpaused.
+- If the port is set to 5006, the binding will adjust its protocol to connect to the Nuvo amplifier thing via an MPS4 IP connection.
+- MPS4 connections do not support commands using `SxDISPINFO`& `SxDISPLINE` (display_lineN channels) including those outlined in the advanced rules section below. In this case,`SxDISPINFOTWO` and `SxDISPLINES` must be used instead. See the _very advanced_ rule examples below.
+- As of OH 3.4.0, the binding supports NuvoNet source communication for any/all of the amplifier's 6 inputs but only when using an MPS4 connection.
+- By implementing NuvoNet communication, the binding can now support sending custom menus, custom favorite lists, album art, etc. to the Nuvo keypads for each source configured as an openHAB NuvoNet source.
+- If a zone has a maximum volume limit configured by the Nuvo configurator, the volume slider will automatically drop back to that level if set above the configured limit.
+- Source display_line1 thru 4 can only be updated on non NuvoNet sources when not using an MPS4 connection.
+- The track_position channel does not update continuously for NuvoNet sources. It only changes when the track changes or playback is paused/unpaused.
-* On Linux, you may get an error stating the serial port cannot be opened when the Nuvo 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`.
-* Also on Linux you may have issues with the USB if using two serial USB devices e.g. Nuvo 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 Nuvo amplifier):
+- On Linux, you may get an error stating the serial port cannot be opened when the Nuvo 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`.
+- Also on Linux you may have issues with the USB if using two serial USB devices e.g. Nuvo 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 Nuvo amplifier):
-```
+```text
4444:raw:0:/dev/ttyUSB0:57600 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 Nuvo amplifier):
+- 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 Nuvo amplifier):
-```
+```yaml
connection: &conNuvo
accepter: tcp,4444
enable: on
| sourceN#track_length (where N= 1-6) | Number:Time | The total running time of the current playing track (ReadOnly) See rules example for updating |
| sourceN#track_position (where N= 1-6)| Number:Time | The running time elapsed of the current playing track (ReadOnly) See rules example for updating |
| sourceN#button_press (where N= 1-6) | String | Indicates the last button pressed on the keypad for a non NuvoNet source or openHAB NuvoNet source (ReadOnly) |
-| sourceN#art_url (where N= 1-6) | String | MPS4 Only! The URL of the Album Art JPG for this source that is displayed on a CTP-36. See *very advanced* rules (SendOnly) |
+| sourceN#art_url (where N= 1-6) | String | MPS4 Only! The URL of the Album Art JPG for this source that is displayed on a CTP-36. See _very advanced_ rules (SendOnly) |
| sourceN#album_art (where N= 1-6) | Image | The Album Art loaded from the art_url channel for display in a UI widget (ReadOnly) |
## Full Example
nuvo.things:
-```
+```java
// serial port connection
nuvo:amplifier:myamp "Nuvo WHA" [ serialPort="COM5", numZones=6, clockSync=false]
nuvo.items:
-```
+```java
// system
Switch nuvo_system_alloff "All Zones Off" { channel="nuvo:amplifier:myamp:system#alloff" }
Switch nuvo_system_allmute "All Zones Mute" { channel="nuvo:amplifier:myamp:system#allmute" }
nuvo.sitemap:
-```
+```perl
sitemap nuvo label="Audio Control" {
Frame label="System" {
Switch item=nuvo_system_alloff mappings=[ON=" "]
nuvo.rules:
-```
+```java
import java.text.Normalizer
// To be used with a direct serial port or serial over IP connection
The topmenu item does not need to have any sub menu items if not desired as seen in the 'Top menu 2' example.
A complete XML string for the desired menu is then stored in the `menuXmlSrcN` configuration parameter for a given source and will be loaded into the Nuvo keypads during binding initialization.
-```
+```xml
<topmenu text="Top menu 1">
<item>menu1 a</item>
<item>menu1 b</item>
nuvo-turn-off-all-but-caller.rules:
-```
+```java
rule "Turn off all zones except caller zone"
when
Item nuvo_system_buttonpress received update
```
-### MPS4 openHAB NuvoNet source custom integration rules *(very advanced)*
+### MPS4 openHAB NuvoNet source custom integration rules _(very advanced)_
The following are a set of example rules necessary to integrate metadata and control of another openHAB connected source (ie: Chromecast) into an openHAB NuvoNet source.
By using these rules, it is possible to have artist, album and track names displayed on the keypad, transport button presses from the keypad relayed to the source, and album art displayed if using a Nuvo CTP-36 keypad.
nuvo-advanced.rules:
-```
+```java
import java.text.Normalizer
// all examples using Source 6
# NZ Water Alerts Binding
Get Water Alert Levels for cities in New Zealand.
-Getting this alert level can help you script and automate smarter tasks for water and avoid getting penalized from your distract or local council.
+Getting this alert level can help you script and automate smarter tasks for water and avoid getting penalized from your distract or local council.
> Example: Disable automated spinklers based on a level 3 or 4 water alert level
This Binding scrapes multiple websites for Water Levels:
-* Northland's [BeWaterWise Website](https://bewaterwise.org.nz/)
-* Waikato's [Smart Water Website](https://www.smartwater.org.nz/)
-* Napier's [Council Website](https://www.napier.govt.nz)
+- Northland's [BeWaterWise Website](https://bewaterwise.org.nz/)
+- Waikato's [Smart Water Website](https://www.smartwater.org.nz/)
+- Napier's [Council Website](https://www.napier.govt.nz)
## Thing Configuration
### Example
-```
+```java
Thing nzwateralerts:wateralert "HCC" [ location="smartwater:hamilton:hamilton", refreshInterval="4" ]
```
## Other Cities
-At present the supported cities were implemented by scraping the web page on the respective website which contains the restriction information.
+At present the supported cities were implemented by scraping the web page on the respective website which contains the restriction information.
**No councils have this data in a programmatic format easily accessible to software.**
Most won't have pages which contain the current alert level and only offer alerts via twitter or text.
.things
-```
+```java
Thing oceanic:serial:s1 [ port="/dev/tty.usbserial-FTWGX64N", interval=60]
Thing oceanic:network:s2 [ ipAddress="192.168.0.6", portNumber=9000, interval=60]
.items
-```
+```java
Number oceanicVolume "volume [%d]" (oceanic) {channel="oceanic:serial:s1:totalflow"}
String oceanicAlarm "alarm: [%s]" (oceanic) {channel="oceanic:serial:s1:alarm"}
String oceanicAlert "alert: [%s]" (oceanic) {channel="oceanic:serial:s1:alert"}
## Known issues
-The Oceanic binding makes use of the nrjavaserial library, and unfortunately java and serial ports never have been a great marriage.
+The Oceanic binding makes use of the nrjavaserial library, and unfortunately java and serial ports never have been a great marriage.
-Although some work is being done to improve things (<https://github.com/eclipse/smarthome/issues/4465>), the best thing is to avoid serial ports as much as possible, as some issues (<https://github.com/NeuronRobotics/nrjavaserial/issues/96>) are not resolved.
+Although some work is being done to improve things (<https://github.com/eclipse/smarthome/issues/4465>), the best thing is to avoid serial ports as much as possible, as some issues (<https://github.com/NeuronRobotics/nrjavaserial/issues/96>) are not resolved.
For example, On Ubuntu 17.10 nrjavaserial seems to return only HEX 00 characters through the InputStream of the SerialPort.
Within the Oceanic binding two routes are provided:
-1. Connect to the Oceanic softener over a serial port that is outside the scope of the Java Virtual Machine, setup a TCP "proxy" on the host that is connected to the softener, and make openHAB connect to that proxy over a plain TCP connection. This can be achieved with ```socat```:
+1. Connect to the Oceanic softener over a serial port that is outside the scope of the Java Virtual Machine, setup a TCP "proxy" on the host that is connected to the softener, and make openHAB connect to that proxy over a plain TCP connection. This can be achieved with `socat`:
-```
- /usr/bin/socat -v TCP-LISTEN:9000 /dev/ttyUSB0,raw,echo=0
-```
+ ```shell
+ /usr/bin/socat -v TCP-LISTEN:9000 /dev/ttyUSB0,raw,echo=0
+ ```
-In the above example, the name of the host running socat, and the TCP port number 9000, will be part of the **network** Thing configuration
+ In the above example, the name of the host running socat, and the TCP port number 9000, will be part of the **network** Thing configuration
+1. Connect to the Oceanic softener over a serial port on the openHAB host and use `socat` to pipe the data from that serial port to a pseudo tty, which has to be manipulated in a CommPortIdentifier.PORT_RAW manner.
-2. Connect to the Oceanic softener over a serial port on the openHAB host and use ```socat``` to pipe the data from that serial port to a pseudo tty, which has to be manipulated in a CommPortIdentifier.PORT_RAW manner.
+ ```shell
+ /usr/bin/socat -v /dev/ttyUSB0,raw,echo=0 pty,link=/dev/ttyS1,raw,echo=0
+ ```
-```
- /usr/bin/socat -v /dev/ttyUSB0,raw,echo=0 pty,link=/dev/ttyS1,raw,echo=0
-```
-
Both workarounds can be implemented using a systemd system manager script, for example:
-```
- [Install]
- WantedBy=multi-user.target
-
- [Service]
- #Type=forking
- ExecStart=/usr/bin/socat -v /dev/ttyUSB0,raw,echo=0 pty,link=/dev/ttyS1,raw,echo=0
- #PIDFile=/var/run/socat.pid
- User=root
- Restart=always
- RestartSec=10
+```text
+[Install]
+WantedBy=multi-user.target
+
+[Service]
+#Type=forking
+ExecStart=/usr/bin/socat -v /dev/ttyUSB0,raw,echo=0 pty,link=/dev/ttyS1,raw,echo=0
+#PIDFile=/var/run/socat.pid
+User=root
+Restart=always
+RestartSec=10
```
However, in order to fix permissions at the OS level, one has to issue following commands in order to make /dev/ttyS1 accessible by the 'openhab' system user (that is used to start up the openHAB runtime), and to make the tty both readable and writable.
+```shell
+sudo useradd -G dialout openhab
+sudo chgrp dialout /dev/ttyS1
+sudo chmod 777 /dev/ttyS1
```
- sudo useradd -G dialout openhab
- sudo chgrp dialout /dev/ttyS1
- sudo chmod 777 /dev/ttyS1
-```
-
+
Alternatively, these commands can be executed through a script that is attached to the systemd system manager script.
### demo.things
-```
+```java
Bridge ojelectronics:ojcloud:myCloud "My Cloud" @ "My Home" [ userName="MyUserName", password="MyPassword", apiKey="The Key" ] {
Thing owd5 myThermostat [ serialNumber="123" ]
}
### demo.items
-```
+```java
Number Bath_Floor_Temperature "Bathroom: Floor Temperature" {channel="ojelectronics:owd5:myCloud:myThermostat:floorTemperature"}
String Bath_Mode "Bathroom: Mode" {channel="ojelectronics:owd5:myCloud:myThermostat:regulationMode"}
```
### demo.sitemap
-```
+```perl
sitemap myHome label="my Home"{
Text item=Bath_Floor_Temperature
Text item=Bath_Mode
}
```
-
### demo.things
-```
+```java
Thing omnikinverter:omnik:70ecb4f0 "Solar Inverter" [ hostname="igen-wifi.lan",serial=604455290]
```
### demo.items
-```
+```java
Number:Power OmnikInverterBindingThing_InstantaneousPower "Solar Power" <sun> {channel="omnikinverter:omnik:70ecb4f0:power"}
Number:Power OmnikInverterBindingThing_InstantaneousPower1 "Solar Power 1" <sun> {channel="omnikinverter:omnik:70ecb4f0:powerAC1"}
Number:Power OmnikInverterBindingThing_InstantaneousPower2 "Solar Power 2" <sun> {channel="omnikinverter:omnik:70ecb4f0:powerAC2"}
### Sitemap
-```
+```perl
Text item=OmnikInverterBindingThing_InstantaneousPower
Text item=OmnikInverterBindingThing_InstantaneousPower1
Text item=OmnikInverterBindingThing_InstantaneousPower2
## References
-Based on the work of https://github.com/Woutrrr/Omnik-Data-Logger
+Based on the work of <https://github.com/Woutrrr/Omnik-Data-Logger>
| Output | Built-in/Hardwire | `output` |
| Access Control Reader Lock | Leviton Access Control Reader | `lock` |
-
## Discovery
### Controller
## Thing Configuration
+<!-- markdownlint-disable MD038 -->
An Omni or Lumina controller requires the IP address (`ipAddress`), optional port (`port` defaults to 4369), and 2 encryption keys (`key1`, `key2`).
The hexadecimal pairs in the encryption keys are typically delimited using a colon`:`, but dashes `-`, spaces ` ` or no delimiter may be used.
+<!-- markdownlint-enable MD038 -->
In the thing file, this looks like:
-```
+```java
Bridge omnilink:controller:home [ ipAddress="127.0.0.1", port=4369, key1="XXXXXXXXXXXXXXXX", key2="XXXXXXXXXXXXXXXX" ] {
// Add your things here
}
### Example `omnilink.things`
-```
+```java
Bridge omnilink:controller:home [ ipAddress="127.0.0.1", port=4369, key1="XXXXXXXXXXXXXXXX", key2="XXXXXXXXXXXXXXXX" ] {
Thing area MainArea "Main Area" @ "Home" [ number=1 ]
Thing upb UpKitTable "Table Lights" @ "Upstairs Kitchen" [ number=4 ]
### Example `omnilink.items`
-```
+```java
/*
* Alarms / Areas
*/
### Example `therm-status.map`
-```
+```text
0=Idle
1=Heating
2=Cooling
### Example `therm-tempmode.map`
-```
+```text
0=Off
1=Heat
2=Cool
### Example `therm-fanmode.map`
-```
+```text
0=Auto
1=On
2=Cycle
### Example `therm-holdmode.map`
-```
+```text
0=Off
1=Hold
2=Vacation hold
### Example `area-modes.map`
-```
+```text
0=Off
1=Day
2=Night
| `apiKey` | API Key | The API key given to you by a transit provider for their deployment. | yes |
| `apiServer` | API Server | The domain name of the deployment to talk to, e.g. `api.pugetsound.onebusaway.org`. | yes |
-
The following configuration options are available for the Stop binding (which requires an API binding):
| Parameter | Name | Description | Required |
|-----------|----------|---------------------------------------------------------------------|----------|
| `routeId` | Route ID | The OneBusAway ID of the route to obtain data for, e.g. `1_102574`. | yes |
-
## Channels
The Route Thing supports the following state channels:
| update | state | DateTime | The last time this data was updated (per the data provider, not the last time openHAB updated the data). |
| arrivalDeparture | trigger | DateTime | Triggered when a Route arrives or departs a Stop. |
-
### Channel Configurations
The `arrival`, `departure`, and `arrivalDeparture` channels can be configured with an `offset` specifying the number of seconds to move an event back in time.
`demo.things`:
-```
+```java
Bridge onebusaway:api:pugetsound [apiKey="your-api-key", apiServer="api.pugetsound.onebusaway.org"] {
Bridge onebusaway:stop:1_26860 [stopId="1_26860"] {
Thing onebusaway:route:1_100193 [routeId="1_100193"]
`demo.items`:
-```
+```java
// Route 1_100193 (#32)
DateTime Fremont_32_Arrival "32 - University District" { channel="onebusaway:route:1_100193:arrival" }
DateTime Fremont_32_Departure "32 - University District" { channel="onebusaway:route:1_100193:departure" }
# OneWire Binding
-The OneWire binding integrates OneWire (also spelled 1-Wire) devices.
+The OneWire binding integrates OneWire (also spelled 1-Wire) devices.
OneWire is a serial bus developed by Dallas Semiconductor.
It provides cheap sensors for temperature, humidity, digital I/O and more.
## Getting Started
-The OneWire File System (OWFS, https://owfs.org) provides an abstraction layer between the OneWire bus and this binding.
+The OneWire File System (OWFS, <https://owfs.org>) provides an abstraction layer between the OneWire bus and this binding.
It is assumed that you already have a working OWFS installation.
-Besides your sensors, you need a busmaster device (e.g. DS9490R).
+Besides your sensors, you need a busmaster device (e.g. DS9490R).
## Supported Things
### Bridges
-Currently only one bridge is supported.
-The `owserver` is the bridge that connects to an existing OWFS installation.
+Currently only one bridge is supported.
+The `owserver` is the bridge that connects to an existing OWFS installation.
### Things
-There are different types of things: the simple one (`basic`), multisensors built around the DS1923/DS2438 chip (`ms-tx`) and more advanced sensors from Elaborated Networks (www.wiregate.de) (`ams`, `bms`), Embedded Data System (www.embeddeddatasystems.com)(`edsenv`) and Brain4Home (`bae091x`).
+There are different types of things: the simple one (`basic`), multisensors built around the DS1923/DS2438 chip (`ms-tx`) and more advanced sensors from Elaborated Networks (www.wiregate.de) (`ams`, `bms`), Embedded Data System (www.embeddeddatasystems.com)(`edsenv`) and Brain4Home (`bae091x`).
## Discovery
It is strongly recommended to add things using discovery and configure them using the UI.
Please note that:
-* All things need a bridge.
-* The sensor id parameter supports only the dotted format, including the family id (e.g. `28.7AA256050000`).
+- All things need a bridge.
+- The sensor id parameter supports only the dotted format, including the family id (e.g. `28.7AA256050000`).
DS2409 MicroLAN couplers (hubs) are supported by adding their id and the branch (`main` or `aux`) in a directory-like format in front of the sensor id (e.g. `1F.EDC601000000/main/28.945042000000`).
-* Refresh time is the minimum time in seconds between two checks of that thing.
+- Refresh time is the minimum time in seconds between two checks of that thing.
It defaults to 300s for analog channels and 10s for digital channels.
-* Some thing channels need additional configuration, please see below in the channels section.
+- Some thing channels need additional configuration, please see below in the channels section.
### OWFS Bridge (`owserver`)
There are no configuration options for the owserver besides the network address.
It consists of two parts: `address` and `port`.
-The `address` parameter is used to denote the location of the owserver instance.
-It supports both, a hostname or an IP address.
+The `address` parameter is used to denote the location of the owserver instance.
+It supports both, a hostname or an IP address.
The `port` parameter is used to adjust non-standard OWFS installations.
It defaults to `4304`, which is the default of each OWFS installation.
-Bridges of type `owserver` are extensible with channels of type `owfs-number` and `owfs-string`.
+Bridges of type `owserver` are extensible with channels of type `owfs-number` and `owfs-string`.
### Generic (`basic`)
### Multisensor (`ms-tx`)
-The multisensor is build around the DS2438 or DS1923 chipset.
+The multisensor is build around the DS2438 or DS1923 chipset.
It always provides a `temperature` channel.
Depnding on the actual sensor, additional channels (`current`, `humidity`, `light`, `voltage`, `supplyvoltage`) are added.
It has three parameters: sensor id `id`, refresh time `refresh` and `manualsensor` (advanced option).
-Known DS2438-base sensors are iButtonLink (https://www.ibuttonlink.com/) MS-T (recognized as generic DS2438), MS-TH, MS-TC, MS-TL, MS-TV.
+Known DS2438-base sensors are iButtonLink (<https://www.ibuttonlink.com/>) MS-T (recognized as generic DS2438), MS-TH, MS-TC, MS-TL, MS-TV.
Unknown multisensors are added as generic DS2438 and have `temperature`, `current`, `voltage` and `supplyvoltage` channels.
-In case the sensor is not properly detected (e.g. because it is a self-made sensor), check if it is compatible with one of the sensors listed above.
+In case the sensor is not properly detected (e.g. because it is a self-made sensor), check if it is compatible with one of the sensors listed above.
You can use `manualsensor` to override the auto-detected sensortype by setting `DS2438`, `MS_TH`, `MS_TV`, `MS_TL` or `MS_TC`.
### Elaborated Networks Multisensors (`ams`, `bms`)
-These things are complex devices from Elaborated networks.
+These things are complex devices from Elaborated networks.
They consist of a DS2438 and a DS18B20 with additional circuitry on one PCB.
The AMS additionally has a second DS2438 and a DS2413 for digital I/O on-board.
Analog light sensors can optionally be attached to both sensors.
Each pin has the can be configured as `disabled`.
The necessary channels are automatically added.
-Pin 1 (`pin1`) has only one function `counter` (channel `counter`).
+Pin 1 (`pin1`) has only one function `counter` (channel `counter`).
Pin 2 (`pin2`) can be configured as digital output (`output`, channel `digital2`) or pulse width modulated output (`pwm`, software PWM 4, channels `freq2`, `duty4`).
Pin 6 (`pin6`) can be configured as digital in-/output (`pio`, channel `digital6`) or pulse width modulated output (`pwm`, software PWM 3, channels `freq1`, `duty3`).
Pin 7 (`pin7`) can be configured as analog input (`analog`), digital output (`output`, channel `digital7`) or pulse width modulated output (`pwm`, hardware PWM 2, channels `freq2`, `duty2`).
OneWire temperature sensors are capable of different resolutions: `9`, `10`, `11` and `12` bits.
This corresponds to 0.5 °C, 0.25 °C, 0.125 °C, 0.0625 °C respectively.
The conversion time is inverse to that and ranges from 95 ms to 750 ms.
-For best performance it is recommended to set the resolution only as high as needed.
-
-
+For best performance it is recommended to set the resolution only as high as needed.
+
### BAE PWM (`bae-pwm-frequency`, `bae-pwm-duty`)
PWM output 1 and 3 (2 and 4) share a frequency channel `pwmfreq1` (`pwmfreq2`).
### BAE PIO (`bae-pio`)
-
The PIO channel (programmable I/O channel) has two configuration options: `mode` and `pulldevice`.
The `mode`can be set to `input`or `output`.
The default is `input`.
The `pulldevice` is only relevant for `input` mode.
It can be configured as `disabled`, `pullup`, `pulldown`.
The default is disabled.
-
## Full Example
-** Attention: Adding channels with UIDs different from the ones mentioned in the thing description will not work and may cause problems.
-Please use the pre-defined channel names only. **
+**Attention: Adding channels with UIDs different from the ones mentioned in the thing description will not work and may cause problems.
+Please use the pre-defined channel names only.**
-This is the configuration for a OneWire network consisting of an owserver as bridge (`onewire:owserver:mybridge`) as well as a temperature sensor, a BMS and a 2-port Digital I/O as things (`onewire:basic:mybridge:mysensor`, `onewire:bms:mybridge:mybms`, `onewire:basic:mybridge:mydio`).
+This is the configuration for a OneWire network consisting of an owserver as bridge (`onewire:owserver:mybridge`) as well as a temperature sensor, a BMS and a 2-port Digital I/O as things (`onewire:basic:mybridge:mysensor`, `onewire:bms:mybridge:mybms`, `onewire:basic:mybridge:mydio`).
### demo.things:
-```
+```java
Bridge onewire:owserver:mybridge [
network-address="192.168.0.51"
] {
### demo.items:
-```
+```java
Number:Temperature MySensor "MySensor [%.1f °C]" { channel="onewire:basic:mybridge:mysensor:temperature" }
Number:Temperature MyBMS_T "MyBMS Temperature [%.1f °F]" { channel="onewire:bms:mybridge:mybms:temperature" }
Number:Dimensionless MyBMS_H "MyBMS Humidity [%.1f %unit%]" { channel="onewire:bms:mybridge:mybms:humidity" }
### demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame {
## Supported Things
-Temperature sensors.
+Temperature sensors.
Tested successfully with DS18B20 sensor on Raspberry Pi 3.
## Binding Configuration
The binding requires OneWire sensor to be properly connected to Raspberry Pi GPIO bus,
"w1_gpio" and "wire" kernel modules should be loaded.
-Configuration is proper when /sys/bus/w1/devices folder is present, and contains sensor's data.
+Configuration is proper when /sys/bus/w1/devices folder is present, and contains sensor's data.
## Thing Configuration
The sensors are visible in the system as folders containing files with sensor data.
-By default all OneWire GPIO devices are stored in /sys/bus/w1/devices/DEVICE_ID_FOLDER,
+By default all OneWire GPIO devices are stored in /sys/bus/w1/devices/DEVICE_ID_FOLDER,
and the temperature value is available in the file "w1_slave". The Thing needs full path to the w1_slave file.
Note the values in sysfs are in Celsius.
In the thing file, this looks e.g. like
-```
+```java
Thing onewiregpio:sensor:livingRoom "Living room" [gpio_bus_file="/sys/bus/w1/devices/28-0000061b587b/w1_slave",refresh_time=30,precision=1]
```
sample onewiregpio.things file content:
-```
+```java
Thing onewiregpio:sensor:livingroom "Living room" [gpio_bus_file="/sys/bus/w1/devices/28-0000061b587b/w1_slave",refresh_time=30]
```
sample onewiregpio.items file content (implements QuantityType for unit conversion):
-```
+``` java
Number:Temperature LivingRoomTemperature "Temperature: [%.2f %unit%]" <temperature> { channel="onewiregpio:sensor:livingroom:temperature" }
```
sample demo.sitemap file content:
-```
+```perl
sitemap demo label="Main Menu"
{
Text item=LivingRoomTemperature
This binding can discover the supported Onkyo AV receivers.
At the moment only the following models are supported:
-- HT-RC440
-- HT-RC560
-- TX-NR414
-- TX-NR474
-- TX-NR509
-- TX-NR515
-- TX-NR525
-- TX-NR535
-- TX-NR545
-- TX-NR555
-- TX-NR575
-- TX-NR575E
+- HT-RC440
+- HT-RC560
+- TX-NR414
+- TX-NR474
+- TX-NR509
+- TX-NR515
+- TX-NR525
+- TX-NR535
+- TX-NR545
+- TX-NR555
+- TX-NR575
+- TX-NR575E
TX-NR609
-- TX-NR616
-- TX-NR626
-- TX-NR636
-- TX-NR646
-- TX-NR656
-- TX-NR676
-- TX-NR686
-- TX-NR708
-- TX-NR717
-- TX-NR727
-- TX-NR737
-- TX-NR747
-- TX-NR757
-- TX-NR807
-- TX-NR809
-- TX-NR818
-- TX-NR828
-- TX-NR838
-- TX-NR3007
-- TX-RZ900
+- TX-NR616
+- TX-NR626
+- TX-NR636
+- TX-NR646
+- TX-NR656
+- TX-NR676
+- TX-NR686
+- TX-NR708
+- TX-NR717
+- TX-NR727
+- TX-NR737
+- TX-NR747
+- TX-NR757
+- TX-NR807
+- TX-NR809
+- TX-NR818
+- TX-NR828
+- TX-NR838
+- TX-NR3007
+- TX-RZ900
## Binding Configuration
| player#artist | String | Artist name of the current song (available if playing from Network or USB) |
| player#currentPlayingTime | String | Current playing time of the current song (available if playing from Network or USB) |
| player#listenmode | Number | Current listening mode e.g. Stereo, 5.1ch Surround, ... |
-| player#audioinfo | String | Current audio info (Refresh timer must be configured for updates) |
+| player#audioinfo | String | Current audio info (Refresh timer must be configured for updates) |
| player#playuri | String | Plays the URI provided to the channel |
| player#albumArt | Image | Image of the current album art of the current song |
| player#albumArtUrl | String | URL to the current album art of the current song |
The rule action can be used to send commands to the receiver that are not supported by channels.
There is a separate instance for each receiver, which can be retrieved through
-```
+```java
val onkyoActions = getActions("onkyo","onkyo:onkyoAVR:avr-livingroom")
```
where the first parameter always has to be `onkyo` and the second (`onkyo:onkyoAVR:avr-livingroom`) is the Thing UID of the broker that should be used.
Once this action instance is retrieved, you can invoke the `onkyoActions.sendRawCommand(String action, String value)` method on it:
-```
+```java
onkyoActions.sendRawCommand("CTL", "UP")
```
Here after are the ID values of the input sources:
-- 00: DVR/VCR
-- 01: SATELLITE/CABLE
-- 02: GAME
-- 03: AUX
-- 04: GAME
-- 05: PC
-- 16: BLURAY/DVD
-- 32: TAPE1
-- 33: TAPE2
-- 34: PHONO
-- 35: CD
-- 36: FM
-- 37: AM
-- 38: TUNER
-- 39: MUSICSERVER
-- 40: INTERNETRADIO
-- 41: USB
-- 42: USB_BACK
-- 43: NETWORK
-- 45: AIRPLAY
-- 48: MULTICH
-- 50: SIRIUS
+- 00: DVR/VCR
+- 01: SATELLITE/CABLE
+- 02: GAME
+- 03: AUX
+- 04: GAME
+- 05: PC
+- 16: BLURAY/DVD
+- 32: TAPE1
+- 33: TAPE2
+- 34: PHONO
+- 35: CD
+- 36: FM
+- 37: AM
+- 38: TUNER
+- 39: MUSICSERVER
+- 40: INTERNETRADIO
+- 41: USB
+- 42: USB_BACK
+- 43: NETWORK
+- 45: AIRPLAY
+- 48: MULTICH
+- 50: SIRIUS
## Item Configuration
# OpenGarage Binding
-The OpenGarage binding allows you to control an OpenGarage controller (https://opensprinkler.com/product/opengarage/) using openHAB
-
+The OpenGarage binding allows you to control an OpenGarage controller (<https://opensprinkler.com/product/opengarage/>) using openHAB
## Supported Things
-Opengarage controllers from https://opensprinkler.com/product/opengarage/ are supported.
+Opengarage controllers from <https://opensprinkler.com/product/opengarage/> are supported.
## Discovery
-Auto-discover is not currently supported.
+Auto-discover is not currently supported.
You need to manually add a new item using its IP address.
## Thing Configuration
As a minimum, the IP address is needed:
-* hostname - The hostname of the OpenGarage controller. Typically you'd use an IP address such as `192.168.0.5` for this field.
-* port - the port the OpenGarage is listening on. Defaults to port 80
-* refresh - The frequency with which to refresh information from the OpenGarage controller specified in seconds. Defaults to 10 seconds.
-* password - The password to send commands to the OpenGarage. Defaults to "opendoor"
+- `hostname` - The hostname of the OpenGarage controller. Typically you'd use an IP address such as `192.168.0.5` for this field.
+- `port` - the port the OpenGarage is listening on. Defaults to port 80
+- `refresh` - The frequency with which to refresh information from the OpenGarage controller specified in seconds. Defaults to 10 seconds.
+- `password` - The password to send commands to the OpenGarage. Defaults to "opendoor"
## Channels
opengarage.things:
-```
+```java
opengarage:opengarage:OpenGarage [ hostname="192.168.0.5" ]
```
opengarage.items:
-```
+```java
Switch OpenGarage_Status { channel="opengarage:opengarage:OpenGarage:status" }
Contact OpenGarage_Status_Contact { channel="opengarage:opengarage:OpenGarage:status-contact" }
Rollershutter OpenGarage_Status_Rollershutter { channel="opengarage:opengarage:OpenGarage:status-rollershutter" }
opengarage.sitemap:
-```
+```perl
Switch item=OpenGarage_Status icon="garagedoorclosed" mappings=[ON=Open] visibility=[OpenGarage_Status == OFF]
Switch item=OpenGarage_Status icon="garagedooropen" mappings=[OFF=Close] visibility=[OpenGarage_Status == ON]
Switch item=OpenGarage_Status icon="garage"
Text item=OpenGarage_Distance label="OG distance"
Text item=OpenGarage_Vehicle label="Vehicle Presence"
```
-
-
## Supported Bridges
-* `OpenSprinkler HTTP Bridge` is required to communicate with an OpenSprinkler device through the network and should be added first.
+- `OpenSprinkler HTTP Bridge` is required to communicate with an OpenSprinkler device through the network and should be added first.
## Supported Things
-* `OpenSprinkler Station` is for gaining advanced controls and status information over a single station (zone) of a device, e.g. to turn it on or off, or the time remaining.
-* `OpenSprinkler Device` is for device-specific controls that usually apply to multiple stations or main unit sensors, e.g. if rain was detected.
+- `OpenSprinkler Station` is for gaining advanced controls and status information over a single station (zone) of a device, e.g. to turn it on or off, or the time remaining.
+- `OpenSprinkler Device` is for device-specific controls that usually apply to multiple stations or main unit sensors, e.g. if rain was detected.
Recommend that you first add a single `device` thing and then if you need the extra controls, add as many of the `station` things as you wish.
## Bridge ('http') Configuration
-- hostname: Hostname or IP address of the OpenSprinkler HTTP API.
-- port: Port the OpenSprinkler device is listening on. Usually 80.
-- password: Admin password of the API. Factory default is: opendoor
-- refresh: Number of seconds in between refreshing the Thing state with the API.
-- basicUsername: (optional) Only needed when the OpenSprinkler device is behind a basic auth enforcing reverse proxy.
-- basicPassword: (optional) Only needed when the OpenSprinkler device is behind a basic auth enforcing reverse proxy.
+- hostname: Hostname or IP address of the OpenSprinkler HTTP API.
+- port: Port the OpenSprinkler device is listening on. Usually 80.
+- password: Admin password of the API. Factory default is: opendoor
+- refresh: Number of seconds in between refreshing the Thing state with the API.
+- basicUsername: (optional) Only needed when the OpenSprinkler device is behind a basic auth enforcing reverse proxy.
+- basicPassword: (optional) Only needed when the OpenSprinkler device is behind a basic auth enforcing reverse proxy.
### Station Thing Configuration
The `station` thing must be used with a `http` bridge and has the following configuration properties:
-- stationIndex: The index of the station to communicate with, starting with 0 for the first station
+- stationIndex: The index of the station to communicate with, starting with 0 for the first station
## Channels
| remainingWaterTime | Number:Time | R | The time the station remains to be open. |
| nextDuration | Number:Time | RW | The amount of time that will be used to keep the station |
| | | | open when next manually switched on. If not set, this |
-| | | | value will default to 18 hours which is the maximum time |
+| | | | value will default to 18 hours which is the maximum time |
| | | | supported. |
| queued | Switch | RW | Indicates that the station is queued to be turned on. |
| | | | The channel cannot be turned on, only turning it off is |
demo.things:
-```
+```java
Bridge opensprinkler:http:http [hostname="127.0.0.1", port=81, password="opendoor"] {
Thing station 01 [stationIndex=0]
Thing station 02 [stationIndex=1]
demo.items:
-```
+```java
Group stations
Switch Station01 (stations) { channel="opensprinkler:station:http:01:stationState" }
Number:Time Station01RaminingTime { channel="opensprinkler:station:http:01:remainingWaterTime" }
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame {
This binding is used to integrate the OpenTherm Gateway into openHAB.
The OpenTherm Gateway is a module designed by Schelte Bron that can be connected to units that support communication using the OpenTherm protocol, such as boiler or ventilation / heat recovery unit.
-More information on the OpenTherm Gateway device can be found at https://otgw.tclcode.com/
+More information on the OpenTherm Gateway device can be found at <https://otgw.tclcode.com/>
## Discovery
Example:
-```
+```java
SendCommand.sendCommand("PM=10")
```
## Full Example
-### demo.things
+### demo.things
-```
+```java
Bridge openthermgateway:openthermgateway:1 "OpenTherm Gateway" [ ipaddress="192.168.1.100", port="8000", connectionRetryInterval=60 ] {
Thing boiler remeha "Remeha Avanta 28c"
Thing ventilationheatrecovery brink "Brink Renovent Excellent 300"
### demo.items for `openthermgateway`
-```
+```java
Text SendCommand "Send command channel" { channel="openthermgateway:openthermgateway:1:sendcommand" }
```
### demo.items for `boiler`
-```
+```java
Number:Temperature RoomTemperature "Room Temperature [%.1f %unit%]" <temperature> { channel="openthermgateway:boiler:1:remeha:roomtemp }
Number:Temperature RoomSetpoint "Room Setpoint [%.1f %unit%]" <temperature> { channel="openthermgateway:boiler:1:remeha:roomsetpoint }
Number:Temperature TemporaryRoomSetpointOverride "Temporary Room Setpoint Override [%.1f %unit%]" <temperature> { channel="openthermgateway:boiler:1:remeha:temperaturetemporary }
### demo.items for `ventilationheatrecovery`
-```
+```java
Switch VentilationEnabled "Ventilation Enabled" <switch> { channel="openthermgateway:ventilationheatrecovery:1:brink:vh_ventilationenable }
Number:Dimensionless BypassPosition "Bypass Position" { channel="openthermgateway:ventilationheatrecovery:1:brink:vh_bypassposition }
Number:Dimensionless BypassMode "Bypass Mode" { channel="openthermgateway:ventilationheatrecovery:1:brink:vh_bypassmode }
### demo.sitemap
-```
+```perl
sitemap demo label="Main Menu" {
Frame label="Boiler" {
Text item="RoomTemperature" icon="temperature" label="Room Temperature [%.1f %unit%]"
- Change the `channel=".."` configuration entries of all your Items from referring to the ThingUID of the old `otgw` Thing to refer instead to the ThingUID of the respective newly created `boiler` Thing.
-**Old Thing Definition and respective Item Definition (example)**
+### Old Thing Definition and respective Item Definition (example)
-```
+```java
Thing openthermgateway:otgw:yourGatewayId [ ipaddress="192.168.1.100", port=8000, connectionRetryInterval=60 ]
e.g.
&c.
```
-**New Thing Definition and respective and Item Definition (example)**
+### New Thing Definition and respective and Item Definition (example)
-```
+```java
Bridge openthermgateway:openthermgateway:yourGatewayId "OpenTherm Gateway" @ "Kitchen" [ipaddress="192.168.1.100", port=20108, connectionRetryInterval=60] {
Thing boiler remeha "Boiler" @ "Kitchen"
}
| SafeExposure | Number:Time | Safe exposure time for Fitzpatrick Skin Types. |
| elevation | Number:Angle | Current Sun elevation. |
-The elevation channel will be used as an input in order to limit API queries to OpenUV. If not used,
+The elevation channel will be used as an input in order to limit API queries to OpenUV. If not used,
the binding will not consider it. When value is provided queries will only be issued if the elevation is > 0°.
This is quite useful with a free OpenUV account (50 req/day included): in this case, and with the elevation channel configured, a 20 minutes refresh interval should be ok (in Europe the longest day is around 15 hours).
You can add as much `air-pollution` things for different locations to your setup as you like to observe.
#### One Call API Version
+
New Subscribers to the One Call API will require setting the API version to 3.0 (The API key will not work with 2.5). Existing subscribers can continue to use their existing API key with version 2.5.
- One Call API Version 3.0 [requires payment details](https://openweathermap.org/price) for future forecast information. However, it is possible to set a [daily API call limit to 1000](https://openweathermap.org/faq#onecall), which will avoid charges.
+ One Call API Version 3.0 [requires payment details](https://openweathermap.org/price) for future forecast information. However, it is possible to set a [daily API call limit to 1000](https://openweathermap.org/faq#onecall), which will avoid charges.
### One Call API Weather and Forecast
- auto discovery of BUS/SCS IP and ZigBee USB gateways; auto discovery of devices
- commands from openHAB and feedback (events) from BUS/SCS and wireless network
-



| Dry Contact and IR Interfaces | `25` | `bus_dry_contact_ir` | Dry Contacts and IR Interfaces | Successfully tested: contact interfaces F428 and 3477; IR sensors: HC/HD/HS/L/N/NT4610 |
| Energy Management | `18` | `bus_energy_meter` | Energy Management | Successfully tested: F520, F521. Partially tested: F522, F523 |
-
### For ZigBee (Radio)
| Category | WHO | Thing Type IDs | Description | Status |
- After gateway is discovered and added a connection with default password (`12345`) is tested first: if it does not work the gateway will go offline and an error status will be set. A correct password must then be set in the gateway Thing configuration otherwise the gateway will not become online.
- Once the gateway is online, a second Inbox Scan will discover BUS devices
- BUS/SCS Dimmers must be ON and dimmed (30%-100%) during a Scan, otherwise they will be discovered as simple On/Off switches
- - *KNOWN ISSUE*: In some cases dimmers connected to a F429 Dali-interface are not automatically discovered
+ - _KNOWN ISSUE_: In some cases dimmers connected to a F429 Dali-interface are not automatically discovered
- Basic Scenario modules and CEN/CEN+ Scenario Control devices will be discovered by activation only. See [discovery by activation](#discovery-by-activation) for details. After confirming a discovered CEN/CEN+ scenario device from Inbox, activate again its buttons to add button channels automatically
#### Discovery by Activation
### ZigBee Discovery
- The ZigBee USB Gateway must be inserted in one of the USB ports of the openHAB computer before a discovery is started
-- ***IMPORTANT NOTE:*** As for other openHAB bindings using the USB/serial ports, on Linux the `openhab` user must be member of the `dialout` group to be able to use USB/serial port; set the group with the following command:
+- _**IMPORTANT NOTE:**_ As for other openHAB bindings using the USB/serial ports, on Linux the `openhab` user must be member of the `dialout` group to be able to use USB/serial port; set the group with the following command:
- ```
- $ sudo usermod -a -G dialout openhab
- ```
+```shell
+sudo usermod -a -G dialout openhab
+```
- The user will need to logout and login to see the new group added. If you added your user to this group and still cannot get permission, reboot Linux to ensure the new group permission is attached to the `openhab` user.
+- The user will need to logout and login to see the new group added. If you added your user to this group and still cannot get permission, reboot Linux to ensure the new group permission is attached to the `openhab` user.
- Once the ZigBee USB Gateway is added and online, a second Inbox Scan will discover devices connected to it. Because of the ZigBee radio network, device discovery will take ~40-60 sec. Be patient!
- Wireless devices must be part of the same ZigBee network of the ZigBee USB Gateway to discover them. Please refer to [this video by BTicino](https://www.youtube.com/watch?v=CoIgg_Xqhbo) to setup a ZigBee wireless network which includes the ZigBee USB Gateway
-- Only powered wireless devices part of the same ZigBee network and within radio coverage of the ZigBee USB Gateway will be discovered. Unreachable or not powered devices will be discovered as *GENERIC* devices and cannot be controlled
+- Only powered wireless devices part of the same ZigBee network and within radio coverage of the ZigBee USB Gateway will be discovered. Unreachable or not powered devices will be discovered as _GENERIC_ devices and cannot be controlled
- Wireless control units cannot be discovered by the ZigBee USB Gateway and therefore are not supported
## Thing Configuration
Configuration parameters are:
-- `host` : IP address / hostname of the BUS/SCS gateway (`String`, *mandatory*)
- - Example: `192.168.1.35`
-- `port` : port (`int`, *optional*, default: `20000`)
-- `passwd` : gateway password (`String`, *required* for gateways that have a password. Default: `12345`)
- - Example: `abcde` or `12345`
- - if the BUS/SCS gateway is configured to accept connections from the openHAB computer IP address, no password should be required
- - in all other cases, a password must be configured. This includes gateways that have been discovered and added from Inbox: without a password configured they will remain OFFLINE
-- `discoveryByActivation`: discover BUS devices when they are activated also when a device scan hasn't been started from Inbox (`boolean`, *optional*, default: `false`). See [Discovery by Activation](#discovery-by-activation).
+- `host` : IP address / hostname of the BUS/SCS gateway (`String`, _mandatory_)
+ - Example: `192.168.1.35`
+- `port` : port (`int`, _optional_, default: `20000`)
+- `passwd` : gateway password (`String`, _required_ for gateways that have a password. Default: `12345`)
+ - Example: `abcde` or `12345`
+ - if the BUS/SCS gateway is configured to accept connections from the openHAB computer IP address, no password should be required
+ - in all other cases, a password must be configured. This includes gateways that have been discovered and added from Inbox: without a password configured they will remain OFFLINE
+- `discoveryByActivation`: discover BUS devices when they are activated also when a device scan hasn't been started from Inbox (`boolean`, _optional_, default: `false`). See [Discovery by Activation](#discovery-by-activation).
Alternatively the BUS/SCS Gateway thing can be configured using the `.things` file, see `openwebnet.things` example [below](#full-example).
Configuration parameters are:
-- `serialPort` : the serial port where the ZigBee USB Gateway is connected (`String`, *mandatory*)
- - Examples: `/dev/ttyUSB0` (Linux/RaPi), `COM3` (Windows)
+- `serialPort` : the serial port where the ZigBee USB Gateway is connected (`String`, _mandatory_)
+ - Examples: `/dev/ttyUSB0` (Linux/RaPi), `COM3` (Windows)
Alternatively the ZigBee USB Gateway thing can be configured using the `.things` file, see `openwebnet.things` example [below](#full-example).
- the associated gateway Thing (`Parent Bridge` menu)
- the `where` configuration parameter (`OpenWebNet Address`): this is the OpenWebNet address configured for the device in the BTicino/Legrand system. This address can be found either on the device itself (Physical configuration, using jumpers in case of BUS) or through the MyHOME_Suite software (Virtual configuration). The address can have several formats depending on the device/system:
- - example for BUS/SCS system:
- - light device A=`2` (Area 2), PL=`4` (Light-point 4) --> `where="24"`
- - light device A=`03`, PL=`11` on local bus `01` --> `where="0311#4#01"`
- - scenario control module address `53` --> `where="53"`
- - CEN scenario A=`05`, PL=`12` --> `where="0512"`
- - CEN+ scenario `5`: add `2` before --> `where="25"`
- - dry Contact or IR Interface `99`: add `3` before --> `where="399"`
- - energy meter F520/F521 numbered `1`: add `5` before --> `where="51"`
- - energy meter F522/F523 numbered `4`: add `7` before and `#0` after --> `where="74#0"`
- - alarm zone `2` --> `where="2"`
- - example for ZigBee devices: `where=765432101#9`. The ID of the device (ADDR part) is usually written in hexadecimal on the device itself, for example `ID 0074CBB1`: convert to decimal (`7654321`) and add `01#9` at the end to obtain `where=765432101#9`. For 2-unit switch devices (`zb_on_off_switch2u`), last part should be `00#9`.
-
+ - example for BUS/SCS system:
+ - light device A=`2` (Area 2), PL=`4` (Light-point 4) --> `where="24"`
+ - light device A=`03`, PL=`11` on local bus `01` --> `where="0311#4#01"`
+ - scenario control module address `53` --> `where="53"`
+ - CEN scenario A=`05`, PL=`12` --> `where="0512"`
+ - CEN+ scenario `5`: add `2` before --> `where="25"`
+ - dry Contact or IR Interface `99`: add `3` before --> `where="399"`
+ - energy meter F520/F521 numbered `1`: add `5` before --> `where="51"`
+ - energy meter F522/F523 numbered `4`: add `7` before and `#0` after --> `where="74#0"`
+ - alarm zone `2` --> `where="2"`
+ - example for ZigBee devices: `where=765432101#9`. The ID of the device (ADDR part) is usually written in hexadecimal on the device itself, for example `ID 0074CBB1`: convert to decimal (`7654321`) and add `01#9` at the end to obtain `where=765432101#9`. For 2-unit switch devices (`zb_on_off_switch2u`), last part should be `00#9`.
#### Configuring Thermo
Thermo zones can be configured defining a `bus_thermo_zone` Thing for each zone with the following parameters:
- the `where` configuration parameter (`OpenWebNet Address`):
- - example BUS/SCS zone `1` --> `where="1"`
+ - example BUS/SCS zone `1` --> `where="1"`
- the `standAlone` configuration parameter (`boolean`, default: `true`): identifies if the zone is managed or not by a Central Unit (4 or 99 zones). `standAlone=true` means no Central Unit is present in the system.
Temperature sensors can be configured defining a `bus_thermo_sensor` Thing with the following parameters:
- the `where` configuration parameter (`OpenWebNet Address`):
- - example sensor `5` of external zone `00` --> `where="500"`
- - example: slave sensor `3` of zone `2` --> `where="302"`
+ - example sensor `5` of external zone `00` --> `where="500"`
+ - example: slave sensor `3` of zone `2` --> `where="302"`
The (optional) Central Unit can be configured defining a `bus_themo_cu` Thing with the `where` configuration parameter (`OpenWebNet Address`) set to `where="0"`.
- Read setPoint temperature and current mode
- Holiday activation command (all zones)
-- Discovery
+- Discovery
#### Configuring Alarm and Auxiliary (AUX)
**NOTE 2** Alarm messages on BUS are not sent by MyHOMEServer1, therfore this gateway cannot be used to integrate the BTicino Alarm system
-BUS Auxiliary commands (WHO=9) can be used to send on the BUS commands to control, for example, external devices or a BTicino Alarm system.
+BUS Auxiliary commands (WHO=9) can be used to send on the BUS commands to control, for example, external devices or a BTicino Alarm system.
The BTicino Alarm system **cannot** be controlled directly via the OpenWebNet protocol: the only possibility is to use AUX commands and configure your Burglar-alarm Unit (`Automations` section) to execute some commands (e.g. Arm alarm) when it receives a particular AUX OpenWebNet command.
Alarm Automations allow you to run an OpenWebNet command when a particular event occurs; in this case, the events are changes of state of the AUX device (WHO=9) and the command to be performed is a burglar alarm command (WHO=5).
To configure Alarm Automations go to the menu:
- Antitheft -> Automations
+`Antitheft -> Automations`
##### Example configuration Automation 1: when AUX-4 goes ON, then ARM all zones
With this configuration when AUX `where=4` goes ON, the Alarm will execute the automation and send command `*5*8##` to ARM all zones:
- Name: Arm all zones
- Event: command OPEN = *9*1*4##
- OPEN command to execute: *5*8##
+```text
+Name: Arm all zones
+Event: command OPEN = *9*1*4##
+OPEN command to execute: *5*8##
+```
##### Example configuration Automation 2: when AUX-4 goes OFF, then DISARM all zones
- Name: Disarm all zones
- Event: command OPEN = *9*0*4##
- OPEN command to execute: *5*9##
+```text
+Name: Disarm all zones
+Event: command OPEN = *9*0*4##
+OPEN command to execute: *5*9##
+```
##### Example configuration Automation 3: when AUX-5 goes ON, then ARM zones 1, 3, 4
- Name: Arm zones 1 3 4
- Event: command OPEN = *9*1*5##
- OPEN command to execute: *5*8#134##
+```text
+Name: Arm zones 1 3 4
+Event: command OPEN = *9*1*5##
+OPEN command to execute: *5*8#134##
+```
-## Channels
+## Channels
### Lighting, Automation, Basic/CEN/CEN+ Scenario Events, Dry Contact / IR Interfaces, Power and Aux channels
| `power` | `bus_energy_meter` | Number:Power | The current active power usage from Energy Meter | R |
| `aux` | `bus_aux` | String | Possible commands: `ON`, `OFF`, `TOGGLE`, `STOP`, `UP`, `DOWN`, `ENABLED`, `DISABLED`, `RESET_GEN`, `RESET_BI`, `RESET_TRI`. Only `ON` and `OFF` are supported for now | R/W |
-
### Alarm channels
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write |
| `armed` | `bus_alarm_system` | Switch | Alarm system is armed (`ON`) or disarmed (`OFF`) | R |
| `alarm` | `bus_alarm_zone` | String | Current alarm for the zone (`SILENT`, `INTRUSION`, `TAMPERING`, `ANTI_PANIC`) | R |
-
### Thermo channels
**NOTE** Channels marked in the table with `Advanced = Y` can be shown on the UI from Thing configuration > Channels tab > check `Show advanced`.
### Notes on channels
-#### `shutter` position
+#### `shutter` position
For Percent commands and position feedback to work correctly, the `shutterRun` Thing config parameter must be configured equal to the time (in ms) to go from full UP to full DOWN.
-It's possible to enter a value manually or set `shutterRun=AUTO` (default) to calibrate `shutterRun` automatically: in this case a *UP >> DOWN >> Position%* cycle will be performed automatically the first time a Percent command is sent to the shutter.
+It's possible to enter a value manually or set `shutterRun=AUTO` (default) to calibrate `shutterRun` automatically: in this case a _UP >> DOWN >> Position%_ cycle will be performed automatically the first time a Percent command is sent to the shutter.
- if `shutterRun` is not set, or is set to `AUTO` but calibration has not been performed yet, then position estimation will remain `UNDEF` (undefined)
- if `shutterRun` is wrongly set higher than the actual runtime, then position estimation will remain `UNDEF`: try to reduce shutterRun until you find the right value
Basic Scenarios and CEN/CEN+ Scenarios channels are [TRIGGER channels](https://www.openhab.org/docs/configuration/rules-dsl.html#channel-based-triggers]): they handle events and do not have a state.
A powerful feature is to detect scenario activations and CEN/CEN+ buttons press events to trigger rules in openHAB: this way openHAB becomes a very powerful scenario manager activated by BTicino scenario control modules or by CEN/CEN+ scenarios physical buttons.
-See [openwebnet.rules](#openwebnet-rules) for examples on how to define rules that trigger on scenarios and on CEN/CEN+ button press events.
+See [openwebnet.rules](#openwebnetrules) for examples on how to define rules that trigger on scenarios and on CEN/CEN+ button press events.
-It's also possible to send *virtual scenario activation* and *virtual press* events on the BUS, for example to enable the activation of MH202 or F420 scenarios from openHAB..
-See [openwebnet.sitemap](#openwebnet-sitemap) & [openwebnet.rules](#openwebnet-rules) sections for examples on how to use the `activateScenario` and `virtualPress` actions connected to a pushbutton on a sitemap.
+It's also possible to send _virtual scenario activation_ and _virtual press_ events on the BUS, for example to enable the activation of MH202 or F420 scenarios from openHAB..
+See [openwebnet.sitemap](#openwebnetsitemap) & [openwebnet.rules](#openwebnetrules) sections for examples on how to use the `activateScenario` and `virtualPress` actions connected to a pushbutton on a sitemap.
- basic scenario channels are named `scenario` and possible events are: `SCENARIO_01` ... `SCENARIO_16` (or up to `SCENARIO_20` in case of module IR3456) when a scenario is activated
- CEN/CEN+ channels are named `button#X` where `X` is the button number on the CEN/CEN+ Scenario Control device
- - in the .thing file configuration you can specify the `buttons` parameter to define a comma-separated list of buttons numbers [0-31] configured for the scenario device, example: `buttons=1,2,4`
- - possible events are:
- - for CEN:
- - `START_PRESS` - sent when you start pressing the button
- - `SHORT_PRESS` - sent if you pressed the button shorter than 0,5sec (sent at the moment when you release it)
- - `EXTENDED_PRESS` - sent if you keep the button pressed longer than 0,5sec; will be sent again every 0,5sec as long as you hold pressed (good for dimming rules)
- - `RELEASE_EXTENDED_PRESS` - sent once when you finally release the button after having it pressed longer than 0,5sec
- - for CEN+:
- - `SHORT_PRESS` - sent if you pressed the button shorter than 0,5sec (sent at the moment when you release it)
- - `START_EXTENDED_PRESS` - sent once as soon as you keep the button pressed longer than 0,5sec
- - `EXTENDED_PRESS` - sent after `START_EXTENDED_PRESS` if you keep the button pressed longer; will be sent again every 0,5sec as long as you hold pressed (good for rules involving dimming/volume)
- - `RELEASE_EXTENDED_PRESS` - sent once when you finally release the button after having it pressed longer than 0,5sec
-
-#### `mode` for values WEEKLY and SCENARIO (thermo Central Unit)
+ - in the .thing file configuration you can specify the `buttons` parameter to define a comma-separated list of buttons numbers [0-31] configured for the scenario device, example: `buttons=1,2,4`
+ - possible events are:
+ - for CEN:
+ - `START_PRESS` - sent when you start pressing the button
+ - `SHORT_PRESS` - sent if you pressed the button shorter than 0,5sec (sent at the moment when you release it)
+ - `EXTENDED_PRESS` - sent if you keep the button pressed longer than 0,5sec; will be sent again every 0,5sec as long as you hold pressed (good for dimming rules)
+ - `RELEASE_EXTENDED_PRESS` - sent once when you finally release the button after having it pressed longer than 0,5sec
+ - for CEN+:
+ - `SHORT_PRESS` - sent if you pressed the button shorter than 0,5sec (sent at the moment when you release it)
+ - `START_EXTENDED_PRESS` - sent once as soon as you keep the button pressed longer than 0,5sec
+ - `EXTENDED_PRESS` - sent after `START_EXTENDED_PRESS` if you keep the button pressed longer; will be sent again every 0,5sec as long as you hold pressed (good for rules involving dimming/volume)
+ - `RELEASE_EXTENDED_PRESS` - sent once when you finally release the button after having it pressed longer than 0,5sec
+
+#### `mode` for values WEEKLY and SCENARIO (thermo Central Unit)
There are three WEEKLY and sixteen SCENARIO programs defined for the thermo Central Unit.
BUS gateway and things configuration:
-```
+```java
Bridge openwebnet:bus_gateway:mybridge "MyHOMEServer1" [ host="192.168.1.35", passwd="abcde", port=20000, discoveryByActivation=false ] {
bus_on_off_switch LR_switch "Living Room Light" [ where="51" ]
bus_dimmer LR_dimmer "Living Room Dimmer" [ where="0311#4#01" ]
bus_automation LR_shutter "Living Room Shutter" [ where="93", shutterRun="10050"]
- bus_energy_meter CENTRAL_Ta "Energy Meter Ta" [ where="51" ]
- bus_energy_meter CENTRAL_Tb "Energy Meter Tb" [ where="52" ]
+ bus_energy_meter CENTRAL_Ta "Energy Meter Ta" [ where="51" ]
+ bus_energy_meter CENTRAL_Tb "Energy Meter Tb" [ where="52" ]
bus_thermo_cu CU_3550 "99 zones central unit" [ where="0" ]
bus_thermo_zone LR_zone "Living Room Zone" [ where="2"]
}
```
-
ZigBee USB Gateway and things configuration - for radio devices:
-```
+```java
Bridge openwebnet:zb_gateway:myZBgateway [ serialPort="COM3" ] {
zb_dimmer myZB_dimmer [ where="765432101#9"]
zb_on_off_switch myZB_switch [ where="765432201#9"]
Example items linked to BUS devices:
-NOTE: lights, blinds and zones (thermostat) can be handled from personal assistants (Google Home, Alexa). In the following example `Google Assistant` (`ga="..."`) and `HomeKit` (`homekit="..."`) were configured according to the [Google official documentation](https://www.openhab.org/docs/ecosystem/google-assistant) and [HomeKit official documentation](https://www.openhab.org/addons/integrations/homekit/)
+NOTE: lights, blinds and zones (thermostat) can be handled from personal assistants (Google Home, Alexa). In the following example `Google Assistant` (`ga="..."`) and `HomeKit` (`homekit="..."`) were configured according to the [Google official documentation](https://www.openhab.org/docs/ecosystem/google-assistant) and [HomeKit official documentation](https://www.openhab.org/addons/integrations/homekit/)
-```
+```java
Switch iLR_switch "Light" (gLivingRoom) { channel="openwebnet:bus_on_off_switch:mybridge:LR_switch:switch", ga="Light", homekit="Lighting" }
Dimmer iLR_dimmer "Dimmer [%.0f %%]" (gLivingRoom) { channel="openwebnet:bus_dimmer:mybridge:LR_dimmer:brightness", ga="Light", homekit="Lighting" }
Number:Temperature iEXT_temp "Temperature [%.1f %unit%]" (gExternal) { channel="openwebnet:bus_thermo_sensor:mybridge:EXT_tempsensor:temperature" }
-String iCENPlusProxyItem "CEN+ Proxy Item"
+String iCENPlusProxyItem "CEN+ Proxy Item"
Switch iLR_IR_sensor "Sensor" { channel="openwebnet:bus_dry_contact_ir:mybridge:LR_IR_sensor:sensor" }
Example items linked to OpenWebNet ZigBee devices:
-```
+```java
Dimmer iDimmer "Dimmer [%.0f %%]" <DimmableLight> (gKitchen) [ "Lighting" ] { channel="openwebnet:zb_dimmer:myZBgateway:myZB_dimmer:brightness" }
Switch iSimpleSwitch "Kitchen Switch" <light> (gKitchen) [ "Lighting" ] { channel="openwebnet:zb_on_off_switch:myZBgateway:myZB_switch:switch_01" }
Switch iSwitch_01 "2U first light" <light> (gKitchen) [ "Lighting" ] { channel="openwebnet:zb_on_off_switch2u:myZBgateway:myZB_2U_switch:switch_01" }
### openwebnet.sitemap
-```
+```perl
sitemap openwebnet label="OpenWebNet Binding Example Sitemap"
{
Frame label="Living Room"
The binding supports three different kinds of connections:
-* direct IP connection (with caveats),
-* serial connection,
-* serial over IP connection
+- direct IP connection (with caveats),
+- serial connection,
+- serial over IP connection
For users without a serial port on the server side, you can use a USB to serial adapter.
Some notes:
-* If using direct IP connection on the BDP series (83/93/95/103/105), verbose mode is not supported.
-* For some reason on these models, the unsolicited status update messages are not generated over the IP socket.
-* If fast updates are required on these models, a direct serial or serial over IP connection to the player is required.
-* The UDP-20x series should be fully functional over direct IP connection but this was not able to be tested by the developer.
-* As previously noted, when using verbose mode, the player will send time code messages once per second while playback is ongoing.
-* Be aware that this could cause performance impacts to your openHAB system.
-* In non-verbose (the default), the binding will poll the player every 10 seconds to update play time, track and chapter information instead.
-* In order for the direct IP connection to work while the player is turned off, the Standby Mode setting must be set to "Quick Start" in the Device Setup menu.
-* Likewise if the player is turned off, it may not be discoverable by the Binding's discovery scan.
-* If the player is switched off when the binding first starts up or if power to the player is ever interrupted, up to 30 seconds may elapse before the binding begins to update when the player is switched on.
-* If you experience any issues using the binding, first ensure that the player's firmware is up to date with the latest available version (especially on the older models).
-* For the older models, some of the features in the control API were added after the players were shipped.
-* Available HDMI modes for BDP-83 & BDP-9x: AUTO, SRC, 1080P, 1080I, 720P, SDP, SDI
-* Available HDMI modes for BDP-10x: AUTO, SRC, 4K2K, 1080P, 1080I, 720P, SDP, SDI
-* Available HDMI modes for UDP-20x: AUTO, SRC, UHD_AUTO, UHD24, UHD50, UHD60, 1080P_AUTO, 1080P24, 1080P50, 1080P60, 1080I50, 1080I60, 720P50, 720P60, 567P, 567I, 480P, 480I
-
-* On Linux, you may get an error stating the serial port cannot be opened when the Oppo 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`.
-* Also on Linux you may have issues with the USB if using two serial USB devices e.g. Oppo 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 Oppo player):
-
-```
+- If using direct IP connection on the BDP series (83/93/95/103/105), verbose mode is not supported.
+- For some reason on these models, the unsolicited status update messages are not generated over the IP socket.
+- If fast updates are required on these models, a direct serial or serial over IP connection to the player is required.
+- The UDP-20x series should be fully functional over direct IP connection but this was not able to be tested by the developer.
+- As previously noted, when using verbose mode, the player will send time code messages once per second while playback is ongoing.
+- Be aware that this could cause performance impacts to your openHAB system.
+- In non-verbose (the default), the binding will poll the player every 10 seconds to update play time, track and chapter information instead.
+- In order for the direct IP connection to work while the player is turned off, the Standby Mode setting must be set to "Quick Start" in the Device Setup menu.
+- Likewise if the player is turned off, it may not be discoverable by the Binding's discovery scan.
+- If the player is switched off when the binding first starts up or if power to the player is ever interrupted, up to 30 seconds may elapse before the binding begins to update when the player is switched on.
+- If you experience any issues using the binding, first ensure that the player's firmware is up to date with the latest available version (especially on the older models).
+- For the older models, some of the features in the control API were added after the players were shipped.
+- Available HDMI modes for BDP-83 & BDP-9x: AUTO, SRC, 1080P, 1080I, 720P, SDP, SDI
+- Available HDMI modes for BDP-10x: AUTO, SRC, 4K2K, 1080P, 1080I, 720P, SDP, SDI
+- Available HDMI modes for UDP-20x: AUTO, SRC, UHD_AUTO, UHD24, UHD50, UHD60, 1080P_AUTO, 1080P24, 1080P50, 1080P60, 1080I50, 1080I60, 720P50, 720P60, 567P, 567I, 480P, 480I
+
+- On Linux, you may get an error stating the serial port cannot be opened when the Oppo 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`.
+- Also on Linux you may have issues with the USB if using two serial USB devices e.g. Oppo 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 Oppo player):
+
+```text
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 Oppo player):
-```
+
+- 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 Oppo player):
+
+```yaml
connection: &conOppo
accepter: tcp,4444
enable: on
oppo.things:
-```
+```java
// direct IP connection
oppo:player:myoppo "Oppo Blu-ray" [ host="192.168.0.10", model=103, verboseMode=false]
oppo.items:
-```
+```java
Switch oppo_power "Power" { channel="oppo:player:myoppo:power" }
Dimmer oppo_volume "Volume [%d %%]" { channel="oppo:player:myoppo:volume" }
Switch oppo_mute "Mute" { channel="oppo:player:myoppo:mute" }
secondsformat.js:
-```
+```javascript
(function(totalSeconds) {
if (isNaN(totalSeconds)) {
return '-';
oppo.sitemap:
-```
+```perl
sitemap oppo label="Oppo Blu-ray" {
Frame label="Player" {
Switch item=oppo_power
# Orbit B-hyve Binding
-This is the binding for the [Orbit B-hyve](https://bhyve.orbitonline.com/) wi-fi sprinklers.
+This is the binding for the [Orbit B-hyve](https://bhyve.orbitonline.com/) wi-fi sprinklers.
## Supported Things
## Channels
-This binding automatically detects all zones and programs for each sprinkler and creates these dynamic channels:
+This binding automatically detects all zones and programs for each sprinkler and creates these dynamic channels:
| channel | type | description |
|------------------|--------|------------------------------------------------------------------|
## Full Example
-_*.things example_
+### Things Example
-```
+```java
Bridge orbitbhyve:bridge:mybridge "Orbit Bridge" [ email="your@ema.il", password="yourPass", refresh=30 ] {
Thing sprinkler indoor_timer "Sprinkler" [ id="4cab55704e0d7ddf98c1cc37" ]
}
```
-_*.items example_
-
-```
-Switch IrrigationControl "Irrigation active" <bhyve> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:control" }
-Switch IrrigationSmartWatering "Smart watering" <bhyve> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:smart_watering" }
-Switch Irrigation1 "Zone 1" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_1" }
-Switch Irrigation2 "Zone 2" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_2" }
-Switch Irrigation3 "Zone 3" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_3" }
-Switch Irrigation4 "Zone 4" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_4" }
-Switch IrrigationP1 "Run program A" <program> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:program_a" }
-Switch IrrigationP1Enable "Schedule program A" <program> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:enable_program_a" }
-String IrrigationMode "Irrigation mode [%s]" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:mode" }
-Number IrrigationTime "Irrigation time [%d min]" <clock> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:watering_time" }
-Number IrrigationRainDelay "Rain delay [%d h]" <hourglass> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:rain_delay" }
-DateTime IrrigationNextStart "Next start A [%1$td.%1$tm.%1$tY %1$tR]" <clock> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:next_start" }
+### Items Example
+
+```java
+Switch IrrigationControl "Irrigation active" <bhyve> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:control" }
+Switch IrrigationSmartWatering "Smart watering" <bhyve> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:smart_watering" }
+Switch Irrigation1 "Zone 1" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_1" }
+Switch Irrigation2 "Zone 2" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_2" }
+Switch Irrigation3 "Zone 3" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_3" }
+Switch Irrigation4 "Zone 4" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:zone_4" }
+Switch IrrigationP1 "Run program A" <program> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:program_a" }
+Switch IrrigationP1Enable "Schedule program A" <program> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:enable_program_a" }
+String IrrigationMode "Irrigation mode [%s]" <water> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:mode" }
+Number IrrigationTime "Irrigation time [%d min]" <clock> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:watering_time" }
+Number IrrigationRainDelay "Rain delay [%d h]" <hourglass> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:rain_delay" }
+DateTime IrrigationNextStart "Next start A [%1$td.%1$tm.%1$tY %1$tR]" <clock> (Out_Irrigation) { channel="orbitbhyve:sprinkler:mybridge:indoor_timer:next_start" }
```
-_*.sitemap example_
+### Sitemap Example
-```
+```perl
Switch item=IrrigationControl
Switch item=IrrigationSmartWatering
Switch item=Irrigation1
## Supported Things
-* S20 Wifi Sockets
+- S20 Wifi Sockets
## Discovery
To manually configure an S20 Thing you must specify its deviceId (MAC address).
In the thing file, this looks like:
-```
+```java
Thing orvibo:s20:mysocket [ deviceId="AABBCCDDEEFF"]
```
## Items:
-```
+```java
Switch MySwitch "Switch state [%s]" { channel="orvibo:s20:mysocket:power" }
```
Using the above things channels and items
Sitemap:
-```
+```perl
sitemap demo label="Main Menu" {
Frame {
Switch item=MySwitch
With the power of openHAB this binding can be used for complex decision rules combining motion/magnetic sensor or whole partitions states with different scenarios.
-Examples:
+Examples:
-* All partitions are armed, therefore there is no one at home.
-* Window is opened for more than 10 minutes and temperature outside is bellow XXX degrees, send mail/any other supported notification to particular people.
+- All partitions are armed, therefore there is no one at home.
+- Window is opened for more than 10 minutes and temperature outside is bellow XXX degrees, send mail/any other supported notification to particular people.
## Supported Paradox panels/systems
|--------|------------------------------------------------------------------------------------|
| LOGOUT | Logs out and disconnects from Paradox alarm system |
| LOGIN | Creates socket if necessary, connects to paradox system and uses the logon data from the thing parameters to connect.|
-| RESET | Does logout and then login with recreation of communicator objects inside the code.|
+| RESET | Does logout and then login with recreation of communicator objects inside the code.|
### Entities (zones, partitions) configuration parameters:
| zoneLabel | String | Label of zone inside Paradox configuration |
| openedState | Contact | Zone opened / closed |
| tamperedState | Switch | Zone is tampered / not tampered |
+
## Example things configuration
```java
Selection item=paradoxSendCommand mappings=["LOGOUT"="Logout", "LOGIN"="Login", "RESET"="Reset"]
}
Frame label="Panel" {
- Text item=paradoxTime
- Text item=paradoxAcVoltage
- Text item=paradoxDcVoltage
- Text item=paradoxBatteryVoltage
+ Text item=paradoxTime
+ Text item=paradoxAcVoltage
+ Text item=paradoxDcVoltage
+ Text item=paradoxBatteryVoltage
}
Frame label="Partitions" {
Text item=partition1State valuecolor=[partition1State=="Disarmed"="green", partition1State=="Armed"="red"]
This binding would not be possible without the reverse engineering of the byte level protocol and the development by other authors in python, C# and other languages. Many thanks to the following authors and their respective GitHub repositories for their development that helped in creating this binding:
-João Paulo Barraca - https://github.com/ParadoxAlarmInterface/pai
+João Paulo Barraca - <https://github.com/ParadoxAlarmInterface/pai>
Jean Henning - repository not available
-Tertuish - https://github.com/Tertiush/ParadoxIP150v2 / https://github.com/Tertiush/ParadoxIP150
+Tertuish - <https://github.com/Tertiush/ParadoxIP150v2> / <https://github.com/Tertiush/ParadoxIP150>
Note: This is the setup utlized for the majority of my testing of this binding.
Note: If you are on a Linux system, the framework may not see a symbolically linked device (i.e. /dev/ttyRS485).
-To use a symbolically linked device, add the following line to */etc/default/openhab* `EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyRS485"`
+To use a symbolically linked device, add the following line to _/etc/default/openhab_ `EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyRS485"`
Once you have the interface connected to your system, it is best to test basic connectivity.
Note the protocol is a binary protocol (not ASCII text based) and in order to view the communication packets, one must use a program capable of a binary/HEX mode.
Currently automatic discovery is not supported.
Here is an example of a thing configuration file called 'pentair.things':
-```
+```java
Bridge pentair:ip_bridge:1 [ address="192.168.1.202", port=10001 ] {
easytouch main [ id=16 ]
intelliflo pump1 [ id=96 ]
```
For a serial bridge you would use a configuration similar to this, again saved as 'pentair.things':
-```
+
+```java
Bridge pentair:serial_bridge:1 [ serialPort="/dev/ttyUSB0" ] {
easytouch main [ id=16 ]
intelliflo pump1 [ id=96 ]
The following is an example of an item file (pentair.items), you can change the °F to °C if you are using metric temperature units:
-```
+```java
Group gPool "Pool"
Number Pool_Temp "Pool Temp [%.1f °F]" <temperature> (gPool) { channel = "pentair:easytouch:1:main:pooltemp" }
```
Here is an example of a complete sitemap, saved as `pentair.sitemap`. Adjust the temperature values for metric if so desired.
-```
+
+```perl
sitemap pool label="Pool stuff" {
Frame label="Pool" {
Switch item=Mode_Pool
## References
-Setting up RS485 and basic protocol - https://www.sdyoung.com/home/decoding-the-pentair-easytouch-rs-485-protocol/
-ser2sock GitHub - https://github.com/nutechsoftware/ser2sock
+Setting up RS485 and basic protocol - <https://www.sdyoung.com/home/decoding-the-pentair-easytouch-rs-485-protocol/>
+ser2sock GitHub - <https://github.com/nutechsoftware/ser2sock>
## Future Enhancements
If there are many modules on one bridge, the initialization can take a few minutes. If it does not work you can plug in the modules one after the other.
Sometimes after initialization, you might have to switch two times or the reaction could be a bit slow, but after you used a channel it should all work fine.
-
+
For all devices running with Linux that use the ch341 driver (HL-340), the new version (ch34x) is needed.
A guide how to install this can be found here: [CH340/341 UART Driver for Raspberry Pi](https://github.com/aperepel/raspberrypi-ch340-driver).
-If you don´t have the same kernel as used in the guide you have to compile the module yourself. In the guide is described a specific way for the Raspberry Pi. With another Linux version you can go the normal way with linux-headers.
+If you don´t have the same kernel as used in the guide you have to compile the module yourself. In the guide is described a specific way for the Raspberry Pi. With another Linux version you can go the normal way with linux-headers.
According to the [Wiki of the PHC-Forum](https://wiki.phc-forum.de/index.php/PHC-Protokoll_des_internen_Bus#USB_RS-485_Adapter) the newer version of the FTDI adapter doesn't really work anymore either.
| 0V | 0V on power supply |
| B- | 485- on adaptor |
| A+ | 485+ on adaptor |
-| 24+ | +24V on power supply |
+| 24+ | +24V on power supply |

It represents the STM.
At the Moment you can only use one Bridge (like one STM).
-#### Configurations
+### Configurations
**Serial Port:** Type the serial port of the RS485 adaptor, e.g. COM3 (Windows) or /dev/ttyUSB0 (Linux).
A thing accords with a module in the PHC software and the channels (with linked items) accord with the inputs and outputs.
Please note, if you define the things manually (not in the UI) that the ThingID always have to be the address (like the PID switches on the module).
-#### Parameters
+### Parameters
- **address:** Type the address of the module like the DIP switches (you can also find in the PHC software) of the module, e.g. 10110. (mandatory)
.things
-```
+```java
Bridge phc:bridge:demo [port="/dev/ttyUSB0"]{
// The ThingID have to be the address.
Thing AM 01101 [address="01101"]
.items
-```
+```java
//AM Module
Switch Switch_1 {channel="phc:AM:01101:am#00"}
Switch Switch_2 {channel="phc:AM:01101:am#01"}
## Full Example
-things/pilight.things
+### pilight.things
-```
+```java
Bridge pilight:bridge:raspi "Pilight Daemon raspi" [ ipAddress="192.168.1.1", port=5000 ] {
Thing switch office "Office" [ name="office" ]
Thing dimmer piano "Piano" [ name="piano" ]
}
```
-items/pilight.items
+### pilight.items
-```
+```java
Switch office_switch "Büro" { channel="pilight:switch:raspi:office:state" }
Dimmer piano_light "Klavier [%.0f %%]" { channel="pilight:dimmer:raspi:piano:dimlevel" }
Number weather_temperature "Aussentemperatur [%.1f °C]" <temperature> { channel="pilight:generic:raspi:weather:temperature" }
```
-sitemaps/fragment.sitemap
+### fragment.sitemap
-```
+```perl
Switch item=office_switch
Slider item=piano_light
Text item=weather_temperature
Text item=weather_humidity
```
-
The auto-discovery is enabled by default.
To disable it, you can create a file in the services directory called pioneeravr.cfg with the following content:
-```
+```text
#Put your configuration here
org.openhab.pioneeravr:enableAutoDiscovery=false
```
The binding can control AVRs through the local network (ipAvr/ipAvrUnsupported thing type) or through a Serial connection (serialAvr) if the AVR is directly connected to your computer.
-
Configuration of ipAvr/ipAvrUnsupported:
-* address: the hostname/ipAddress of the AVR on the local network. (mandatory)
-* tcpPort: the port number to use to connect to the AVR. (optional, default to 23)
-
+- address: the hostname/ipAddress of the AVR on the local network. (mandatory)
+- tcpPort: the port number to use to connect to the AVR. (optional, default to 23)
Configuration of serialAvr:
-* serialPort: the name of the serial port on your computer. (mandatory)
+- serialPort: the name of the serial port on your computer. (mandatory)
Example:
-```
+```java
pioneeravr:ipAvr:vsx921IP [ address="192.168.1.25" ]
pioneeravr:ipAvr:vsx921IP [ address="192.168.1.25", tcpPort=32 ]
pioneeravr:serialAvr:vsx921Serial [ serialPort="COM9" ]
## Channels
-* power: power On/Off the AVR. Receive power events.
-* volumeDimmer: Increase/Decrease the volume on the AVR or set the volume as %. Receive volume change events (in %).
-* volumeDb: Set the volume of the AVR in dB (from -80.0 to 12 with 0.5 dB steps). Receive volume change events (in dB).
-* mute: Mute/Unmute the AVR. Receive mute events.
-* setInputSource: Set the input source of the AVR. See input source mapping for more details. Receive source input change events with the input source ID.
-* displayInformation: Receive display events. Reflect the display on the AVR front panel.
+- power: power On/Off the AVR. Receive power events.
+- volumeDimmer: Increase/Decrease the volume on the AVR or set the volume as %. Receive volume change events (in %).
+- volumeDb: Set the volume of the AVR in dB (from -80.0 to 12 with 0.5 dB steps). Receive volume change events (in dB).
+- mute: Mute/Unmute the AVR. Receive mute events.
+- setInputSource: Set the input source of the AVR. See input source mapping for more details. Receive source input change events with the input source ID.
+- displayInformation: Receive display events. Reflect the display on the AVR front panel.
## Input Source Mapping
Here after are the ID values of the input sources (depending on you AVR input sources might not be available):
-* 04: DVD
-* 25: BD
-* 05: TV/SAT
-* 06: SAT/CBL
-* 15: DVR/BDR
-* 10: VIDEO 1(VIDEO)
-* 14: VIDEO 2
-* 19: HDMI 1
-* 20: HDMI 2
-* 21: HDMI 3
-* 22: HDMI 4
-* 23: HDMI 5
-* 24: HDMI 6
-* 34: HDMI 7
-* 35: HDMI 8
-* 26: HOME MEDIA GALLERY(Internet Radio)
-* 44: Media Server
-* 38: Internet Radio
-* 17: iPod/USB
-* 48: MHL
-* 01: CD
-* 03: CD-R/TAPE
-* 02: TUNER
-* 00: PHONO
-* 13: USB-DAC
-* 12: MULTI CH IN
-* 33: ADAPTER PORT (BT)
-* 18: XM RADIO
-* 27: SIRIUS
-* 40: SiriusXM
-* 41: PANDORA
-* 45: Favourites
-* 57: Spotify
-* 31: HDMI (cyclic)
+- 04: DVD
+- 25: BD
+- 05: TV/SAT
+- 06: SAT/CBL
+- 15: DVR/BDR
+- 10: VIDEO 1(VIDEO)
+- 14: VIDEO 2
+- 19: HDMI 1
+- 20: HDMI 2
+- 21: HDMI 3
+- 22: HDMI 4
+- 23: HDMI 5
+- 24: HDMI 6
+- 34: HDMI 7
+- 35: HDMI 8
+- 26: HOME MEDIA GALLERY(Internet Radio)
+- 44: Media Server
+- 38: Internet Radio
+- 17: iPod/USB
+- 48: MHL
+- 01: CD
+- 03: CD-R/TAPE
+- 02: TUNER
+- 00: PHONO
+- 13: USB-DAC
+- 12: MULTI CH IN
+- 33: ADAPTER PORT (BT)
+- 18: XM RADIO
+- 27: SIRIUS
+- 40: SiriusXM
+- 41: PANDORA
+- 45: Favourites
+- 57: Spotify
+- 31: HDMI (cyclic)
## Listening Modes
-The *Listening Mode* is set by user to instruct the AVR how to treat the audio signal and do upscaling, downscaling and amplification. This settings corresponds to the settings made with the remote control or front panel. What the AVR actually does with each setting/input-signal-combination can be read out using the *Playing Listening Mode* channel.
-
-* 0001: STEREO (cyclic)
-* 0010: STANDARD (cyclic)
-* 0009: STEREO (direct set)
-* 0011: (2ch source)
-* 0013: PRO LOGIC2 MOVIE
-* 0018: PRO LOGIC2x MOVIE
-* 0014: PRO LOGIC2 MUSIC
-* 0019: PRO LOGIC2x MUSIC
-* 0015: PRO LOGIC2 GAME
-* 0020: PRO LOGIC2x GAME
-* 0031: PRO LOGIC2z HEIGHT
-* 0032: WIDE SURROUND MOVIE
-* 0033: WIDE SURROUND MUSIC
-* 0012: PRO LOGIC
-* 0016: Neo:6 CINEMA
-* 0017: Neo:6 MUSIC
-* 0037: Neo:X CINEMA
-* 0038: Neo:X MUSIC
-* 0039: Neo:X GAME
-* 0040: Dolby Surround
-* 0041: EXTENDED STEREO
-* 0021: (Multi ch source) Channel base straight decode
-* 0022: (Multi ch source)+DOLBY EX
-* 0023: (Multi ch source)+PRO LOGIC2x MOVIE
-* 0024: (Multi ch source)+PRO LOGIC2x MUSIC
-* 0034: (Multi-ch Source)+PRO LOGIC2z HEIGHT
-* 0035: (Multi-ch Source)+WIDE SURROUND MOVIE
-* 0036: (Multi-ch Source)+WIDE SURROUND MUSIC
-* 0025: (Multi ch source)DTS-ES Neo:6
-* 0026: (Multi ch source)DTS-ES matrix
-* 0027: (Multi ch source)DTS-ES discrete
-* 0030: (Multi ch source)DTS-ES 8ch discrete
-* 0043: (Multi ch source)+Neo:X CINEMA
-* 0044: (Multi ch source)+Neo:X MUSIC
-* 0045: (Multi ch source)+Neo:X GAME
-* 0050: (Multi ch source)+Dolby Surround
-* 0100: ADVANCED SURROUND (cyclic)
-* 0101: ACTION
-* 0103: DRAMA
-* 0118: ADVANCED GAME
-* 0117: SPORTS
-* 0107: CLASSICAL
-* 0110: ROCK/POP
-* 0003: Front Stage Surround Advance
-* 0200: ECO MODE (cyclic)
-* 0212: ECO MODE 1
-* 0213: ECO MODE 2
-* 0153: RETRIEVER AIR
-* 0113: PHONES SURROUND
-* 0005: AUTO SURR/STREAM DIRECT (cyclic)
-* 0006: AUTO SURROUND
-* 0151: Auto Level Control (A.L.C.)
-* 0007: DIRECT
-* 0008: PURE DIRECT
-* 0152: OPTIMUM SURROUND
+The _Listening Mode_ is set by user to instruct the AVR how to treat the audio signal and do upscaling, downscaling and amplification. This settings corresponds to the settings made with the remote control or front panel. What the AVR actually does with each setting/input-signal-combination can be read out using the _Playing Listening Mode_ channel.
+
+- 0001: STEREO (cyclic)
+- 0010: STANDARD (cyclic)
+- 0009: STEREO (direct set)
+- 0011: (2ch source)
+- 0013: PRO LOGIC2 MOVIE
+- 0018: PRO LOGIC2x MOVIE
+- 0014: PRO LOGIC2 MUSIC
+- 0019: PRO LOGIC2x MUSIC
+- 0015: PRO LOGIC2 GAME
+- 0020: PRO LOGIC2x GAME
+- 0031: PRO LOGIC2z HEIGHT
+- 0032: WIDE SURROUND MOVIE
+- 0033: WIDE SURROUND MUSIC
+- 0012: PRO LOGIC
+- 0016: Neo:6 CINEMA
+- 0017: Neo:6 MUSIC
+- 0037: Neo:X CINEMA
+- 0038: Neo:X MUSIC
+- 0039: Neo:X GAME
+- 0040: Dolby Surround
+- 0041: EXTENDED STEREO
+- 0021: (Multi ch source) Channel base straight decode
+- 0022: (Multi ch source)+DOLBY EX
+- 0023: (Multi ch source)+PRO LOGIC2x MOVIE
+- 0024: (Multi ch source)+PRO LOGIC2x MUSIC
+- 0034: (Multi-ch Source)+PRO LOGIC2z HEIGHT
+- 0035: (Multi-ch Source)+WIDE SURROUND MOVIE
+- 0036: (Multi-ch Source)+WIDE SURROUND MUSIC
+- 0025: (Multi ch source)DTS-ES Neo:6
+- 0026: (Multi ch source)DTS-ES matrix
+- 0027: (Multi ch source)DTS-ES discrete
+- 0030: (Multi ch source)DTS-ES 8ch discrete
+- 0043: (Multi ch source)+Neo:X CINEMA
+- 0044: (Multi ch source)+Neo:X MUSIC
+- 0045: (Multi ch source)+Neo:X GAME
+- 0050: (Multi ch source)+Dolby Surround
+- 0100: ADVANCED SURROUND (cyclic)
+- 0101: ACTION
+- 0103: DRAMA
+- 0118: ADVANCED GAME
+- 0117: SPORTS
+- 0107: CLASSICAL
+- 0110: ROCK/POP
+- 0003: Front Stage Surround Advance
+- 0200: ECO MODE (cyclic)
+- 0212: ECO MODE 1
+- 0213: ECO MODE 2
+- 0153: RETRIEVER AIR
+- 0113: PHONES SURROUND
+- 0005: AUTO SURR/STREAM DIRECT (cyclic)
+- 0006: AUTO SURROUND
+- 0151: Auto Level Control (A.L.C.)
+- 0007: DIRECT
+- 0008: PURE DIRECT
+- 0152: OPTIMUM SURROUND
## Playing Listening Modes
-The *Playing Listening Mode* is the Listening Mode that is actually playing as opposed to the *Listening Mode* set by the user. The *Playing Listening Mode* is what the display on the device shows.
-
-* 0101: [)(]PLIIx MOVIE
-* 0102: [)(]PLII MOVIE
-* 0103: [)(]PLIIx MUSIC
-* 0104: [)(]PLII MUSIC
-* 0105: [)(]PLIIx GAME
-* 0106: [)(]PLII GAME
-* 0107: [)(]PROLOGIC
-* 0108: Neo:6 CINEMA
-* 0109: Neo:6 MUSIC
-* 010c: 2ch Straight Decode
-* 010d: [)(]PLIIz HEIGHT
-* 010e: WIDE SURR MOVIE
-* 010f: WIDE SURR MUSIC
-* 0110: STEREO
-* 0111: Neo:X CINEMA
-* 0112: Neo:X MUSIC
-* 0113: Neo:X GAME
-* 0117: Dolby Surround
-* 0118: EXTENDED STEREO
-* 1101: [)(]PLIIx MOVIE
-* 1102: [)(]PLIIx MUSIC
-* 1103: [)(]DIGITAL EX
-* 1104: DTS Neo:6
-* 1105: ES MATRIX
-* 1106: ES DISCRETE
-* 1107: DTS-ES 8ch
-* 1108: multi ch Channel base Straight Decode
-* 1109: [)(]PLIIz HEIGHT
-* 110a: WIDE SURR MOVIE
-* 110b: WIDE SURR MUSIC
-* 110c: Neo:X CINEMA
-* 110d: Neo:X MUSIC
-* 110e: Neo:X GAME
-* 110f: Dolby Surround
-* 0201: ACTION
-* 0202: DRAMA
-* 0208: ADVANCEDGAME
-* 0209: SPORTS
-* 020a: CLASSICAL
-* 020b: ROCK/POP
-* 020e: PHONES SURR.
-* 020f: FRONT STAGE SURROUND ADVANCE
-* 0211: SOUND RETRIEVER AIR
-* 0212: ECO MODE 1
-* 0213: ECO MODE 2
-* 0401: STEREO
-* 0402: [)(]PLII MOVIE
-* 0403: [)(]PLIIx MOVIE
-* 0405: AUTO SURROUND Straight Decode
-* 0406: [)(]DIGITAL EX
-* 0407: [)(]PLIIx MOVIE
-* 0408: DTS +Neo:6
-* 0409: ES MATRIX
-* 040a: ES DISCRETE
-* 040b: DTS-ES 8ch
-* 040e: RETRIEVER AIR
-* 040f: Neo:X CINEMA
-* 0411: Dolby Surround
-* 0501: STEREO
-* 0502: [)(]PLII MOVIE
-* 0503: [)(]PLIIx MOVIE
-* 0504: DTS/DTS-HD
-* 0505: ALC Straight Decode
-* 0506: [)(]DIGITAL EX
-* 0507: [)(]PLIIx MOVIE
-* 0508: DTS +Neo:6
-* 0509: ES MATRIX
-* 050a: ES DISCRETE
-* 050b: DTS-ES 8ch
-* 050e: RETRIEVER AIR
-* 050f: Neo:X CINEMA
-* 0601: STEREO
-* 0602: [)(]PLII MOVIE
-* 0603: [)(]PLIIx MOVIE
-* 0604: Neo:6 CINEMA
-* 0605: STREAM DIRECT NORMAL Straight Decode
-* 0606: [)(]DIGITAL EX
-* 0607: [)(]PLIIx MOVIE
-* 0609: ES MATRIX
-* 060a: ES DISCRETE
-* 060b: DTS-ES 8ch
-* 060c: Neo:X CINEMA
-* 060e: NORMAL DIRECT Dolby Surround
-* 0701: STREAM DIRECT PURE 2ch
-* 0702: [)(]PLII MOVIE
-* 0703: [)(]PLIIx MOVIE
-* 0704: Neo:6 CINEMA
-* 0705: STREAM DIRECT PURE Straight Decode
-* 0706: [)(]DIGITAL EX
-* 0707: [)(]PLIIx MOVIE
-* 0708: (nothing)
-* 0709: ES MATRIX
-* 070a: ES DISCRETE
-* 070b: DTS-ES 8ch
-* 070c: Neo:X CINEMA
-* 070e: PURE DIRECT Dolby Surround
-* 0881: OPTIMUM
-* 0e01: HDMI THROUGH
-* 0f01: MULTI CH IN
+The _Playing Listening Mode_ is the Listening Mode that is actually playing as opposed to the _Listening Mode_ set by the user. The _Playing Listening Mode_ is what the display on the device shows.
+
+- 0101: [)(]PLIIx MOVIE
+- 0102: [)(]PLII MOVIE
+- 0103: [)(]PLIIx MUSIC
+- 0104: [)(]PLII MUSIC
+- 0105: [)(]PLIIx GAME
+- 0106: [)(]PLII GAME
+- 0107: [)(]PROLOGIC
+- 0108: Neo:6 CINEMA
+- 0109: Neo:6 MUSIC
+- 010c: 2ch Straight Decode
+- 010d: [)(]PLIIz HEIGHT
+- 010e: WIDE SURR MOVIE
+- 010f: WIDE SURR MUSIC
+- 0110: STEREO
+- 0111: Neo:X CINEMA
+- 0112: Neo:X MUSIC
+- 0113: Neo:X GAME
+- 0117: Dolby Surround
+- 0118: EXTENDED STEREO
+- 1101: [)(]PLIIx MOVIE
+- 1102: [)(]PLIIx MUSIC
+- 1103: [)(]DIGITAL EX
+- 1104: DTS Neo:6
+- 1105: ES MATRIX
+- 1106: ES DISCRETE
+- 1107: DTS-ES 8ch
+- 1108: multi ch Channel base Straight Decode
+- 1109: [)(]PLIIz HEIGHT
+- 110a: WIDE SURR MOVIE
+- 110b: WIDE SURR MUSIC
+- 110c: Neo:X CINEMA
+- 110d: Neo:X MUSIC
+- 110e: Neo:X GAME
+- 110f: Dolby Surround
+- 0201: ACTION
+- 0202: DRAMA
+- 0208: ADVANCEDGAME
+- 0209: SPORTS
+- 020a: CLASSICAL
+- 020b: ROCK/POP
+- 020e: PHONES SURR.
+- 020f: FRONT STAGE SURROUND ADVANCE
+- 0211: SOUND RETRIEVER AIR
+- 0212: ECO MODE 1
+- 0213: ECO MODE 2
+- 0401: STEREO
+- 0402: [)(]PLII MOVIE
+- 0403: [)(]PLIIx MOVIE
+- 0405: AUTO SURROUND Straight Decode
+- 0406: [)(]DIGITAL EX
+- 0407: [)(]PLIIx MOVIE
+- 0408: DTS +Neo:6
+- 0409: ES MATRIX
+- 040a: ES DISCRETE
+- 040b: DTS-ES 8ch
+- 040e: RETRIEVER AIR
+- 040f: Neo:X CINEMA
+- 0411: Dolby Surround
+- 0501: STEREO
+- 0502: [)(]PLII MOVIE
+- 0503: [)(]PLIIx MOVIE
+- 0504: DTS/DTS-HD
+- 0505: ALC Straight Decode
+- 0506: [)(]DIGITAL EX
+- 0507: [)(]PLIIx MOVIE
+- 0508: DTS +Neo:6
+- 0509: ES MATRIX
+- 050a: ES DISCRETE
+- 050b: DTS-ES 8ch
+- 050e: RETRIEVER AIR
+- 050f: Neo:X CINEMA
+- 0601: STEREO
+- 0602: [)(]PLII MOVIE
+- 0603: [)(]PLIIx MOVIE
+- 0604: Neo:6 CINEMA
+- 0605: STREAM DIRECT NORMAL Straight Decode
+- 0606: [)(]DIGITAL EX
+- 0607: [)(]PLIIx MOVIE
+- 0609: ES MATRIX
+- 060a: ES DISCRETE
+- 060b: DTS-ES 8ch
+- 060c: Neo:X CINEMA
+- 060e: NORMAL DIRECT Dolby Surround
+- 0701: STREAM DIRECT PURE 2ch
+- 0702: [)(]PLII MOVIE
+- 0703: [)(]PLIIx MOVIE
+- 0704: Neo:6 CINEMA
+- 0705: STREAM DIRECT PURE Straight Decode
+- 0706: [)(]DIGITAL EX
+- 0707: [)(]PLIIx MOVIE
+- 0708: (nothing)
+- 0709: ES MATRIX
+- 070a: ES DISCRETE
+- 070b: DTS-ES 8ch
+- 070c: Neo:X CINEMA
+- 070e: PURE DIRECT Dolby Surround
+- 0881: OPTIMUM
+- 0e01: HDMI THROUGH
+- 0f01: MULTI CH IN
## Example
*demo.Things:
-```
+```java
pioneeravr:ipAvr:vsx921 [ address="192.168.188.89" ]
```
*demo.items:
-```
+```java
/* Pioneer AVR Items */
Switch vsx921PowerSwitch "Power" (All) { channel="pioneeravr:ipAvr:vsx921:power" }
Switch vsx921MuteSwitch "Mute" <none> (All) { channel="pioneeravr:ipAvr:vsx921:mute" }
*demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
- Frame label="Pioneer AVR" {
- Switch item=vsx921PowerSwitch
- Switch item=vsx921MuteSwitch mappings=[ON="Mute", OFF="Un-Mute"]
- Slider item=vsx921VolumeDimmer
- Setpoint item=vsx921VolumeNumber minValue="-80" maxValue="12" step="0.5"
- Switch item=vsx921InputSourceSet mappings=[04="DVD", 15="DVR/BDR", 25="BD"]
- Text item=vsx921InformationDisplay
- Switch item=vsx921ListeningMode mappings=["0009"="Stereo", "0040"="Dolby Surround", "0010"="next"]
- Text item=vsx921PlayingListeningMode
- }
+ Frame label="Pioneer AVR" {
+ Switch item=vsx921PowerSwitch
+ Switch item=vsx921MuteSwitch mappings=[ON="Mute", OFF="Un-Mute"]
+ Slider item=vsx921VolumeDimmer
+ Setpoint item=vsx921VolumeNumber minValue="-80" maxValue="12" step="0.5"
+ Switch item=vsx921InputSourceSet mappings=[04="DVD", 15="DVR/BDR", 25="BD"]
+ Text item=vsx921InformationDisplay
+ Switch item=vsx921ListeningMode mappings=["0009"="Stereo", "0040"="Dolby Surround", "0010"="next"]
+ Text item=vsx921PlayingListeningMode
+ }
}
```
This binding supports the following thing types according to the capabilities of pixometer:
| Name | Type | Description |
-|-------------|--------|-----------------------------------------------------------------------------|
+| ----------- | ------ | --------------------------------------------------------------------------- |
| Account | Bridge | Representation of a pixometer account, which connects to the pixometer API. |
| Energymeter | Thing | Provides access to the readings of configured energy meters. |
| Gasmeter | Thing | Provides access to the readings of configured gas meters. |
### Account (bridge)
-| Parameter | Description | Required | Default Value | Comment |
-|--------------|--------------------------------------------------------------------|----------|------------------|---------------------------------------------------------------|
-| user | | Yes | - | |
-| password | | Yes | - | |
-| refresh | Sets the refresh time. Minimum is 60 Minutes. | Yes | 240 | |
+| Parameter | Description | Required | Default Value | Comment |
+| --------- | --------------------------------------------- | -------- | ------------- | ------- |
+| user | | Yes | - | |
+| password | | Yes | - | |
+| refresh | Sets the refresh time. Minimum is 60 Minutes. | Yes | 240 | |
### Meter Things
-| Parameter | Description | Required |
-|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
-| resourceId | The ID which represents the current meter. You can find it in the pixometer browser app while editing a specific meter. It should look like this: "https://pixometer.io/portal/#/meters/XXXXX/edit" | Yes |
+| Parameter | Description | Required |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
+| resourceId | The ID which represents the current meter. You can find it in the pixometer browser app while editing a specific meter. It should look like this: "https://pixometer.io/portal/#/meters/XXXXX/edit" | Yes |
## Channels
All meter things have the following channels:
| Channel ID | Channel Description | Supported item type | Advanced |
-|--------------------|--------------------------------------------------------|---------------------|----------|
+| ------------------ | ------------------------------------------------------ | ------------------- | -------- |
| last_reading_value | The last value that has been read for this meter. | Number | false |
| last_reading_date | The time at which the last reading value was recorded. | DateTime | false |
| last_refresh_date | The last time that the current thing has been updated. | DateTime | false |
# PJLink Binding
-This binding allows you to control devices with [PJLink](https://pjlink.jbmia.or.jp/english/) support.
+This binding allows you to control devices with [PJLink](https://pjlink.jbmia.or.jp/english/) support.
PJLink is a protocol that was developed to standardize IP control of digital projectors, but can also be used by other device types.
Aspects that can be controlled via PJLink are power on/off, input source selection and volume/mute setting.
## Supported Things
-This binding supports devices which implement the PJLink protocol (Class 1).
+This binding supports devices which implement the PJLink protocol (Class 1).
Limitations at this point:
## Thing Configuration
-The *pjLinkDevice* thing type has the following parameters:
+The _pjLinkDevice_ thing type has the following parameters:
| Parameter | Description |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ipAddress | the IPv4 address of the device **Mandatory** |
-| tcpPort | the listening TCP port of the devices. *Optional, the default value is 4352* |
-| adminPassword | the PJLink password of the device (should be left empty for devices without authentication). *Optional* |
-| refreshInterval | the polling interval (in seconds) to update the channel values from the device, can be set to 0 to disable polling. *Optional, the default value is 5* |
-| refreshPower | enables polling of the power status. *Optional, the default value is false* |
-| refreshMute | enables polling of the mute status. *Optional, the default value is false* |
-| refreshInputChannel | enables polling of the selected input channel. *Optional, the default value is false* |
-| refreshLampState | enables polling of the lamp usage hours and activity. *Optional, the default value is false* |
-| autoReconnectInterval | seconds between connection retries when connection to the PJLink device has been lost, 0 means never retry, minimum 30s *Optional, the default value is 60* |
-
+| tcpPort | the listening TCP port of the devices. _Optional, the default value is 4352_ |
+| adminPassword | the PJLink password of the device (should be left empty for devices without authentication). _Optional_ |
+| refreshInterval | the polling interval (in seconds) to update the channel values from the device, can be set to 0 to disable polling. _Optional, the default value is 5_ |
+| refreshPower | enables polling of the power status. _Optional, the default value is false_ |
+| refreshMute | enables polling of the mute status. _Optional, the default value is false_ |
+| refreshInputChannel | enables polling of the selected input channel. _Optional, the default value is false_ |
+| refreshLampState | enables polling of the lamp usage hours and activity. _Optional, the default value is false_ |
+| autoReconnectInterval | seconds between connection retries when connection to the PJLink device has been lost, 0 means never retry, minimum 30s _Optional, the default value is 60_ |
## Channels
sample.things:
-```
+```java
pjLinkDevice:pjLinkDevice:MyProjector [ ipAddress="192.168.178.10" ]
```
sample.items:
-```
+```java
Switch Projector_Power "Projector Power" { channel="pjLinkDevice:pjLinkDevice:MyProjector:power" }
String Projector_Input "Projector Input" { channel="pjLinkDevice:pjLinkDevice:MyProjector:input" }
Switch Projector_AudioMute "Projector Audio Mute" { channel="pjLinkDevice:pjLinkDevice:MyProjector:audioMute" }
sample.sitemap:
-```
+```perl
sitemap sample label="Main Menu" {
Frame {
Switch item=Projector_Power
sample-lamp-2.things:
-```
+```java
pjLinkDevice:pjLinkDevice:MyProjector [ ipAddress="192.168.178.10" ]
{
Channels:
sample-lamp-2.items:
-```
+```java
Number Projector_Lamp2Hours "Projector lamp 2 used hours" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp2Hours" }
Switch Projector_Lamp2Active "Projector lamp 2 active" { channel="pjLinkDevice:pjLinkDevice:MyProjector:lamp2Active" }
```
sample-lamp-2.sitemap:
-```
+```perl
sitemap sample label="Main Menu" {
Frame {
Switch item=Projector_Lamp2Active
| outboundIP | | No | Use this if your PS4 is not on the normal openHAB network. |
| ipPort | 997 | No | The port to probe the PS4 on, no need to change normally. |
-If you want to control your PS4 the first thing you need is your user-credentials, this is a 64 characters HEX string that is easiest obtained by using PS4-waker https://github.com/dhleong/ps4-waker.
-To run the PS4-waker you will need a Node.js command prompt (for example: https://nodejs.org/en/download/).
-Enter "npx ps4-waker --help" int the command prompt. Agree to install by entering "y".
-After that send "npx ps4-waker --check". You will get asked to connect the "PS4 Second screen" Android app to the running clone.
-Do this and then you will need to get the pairing key from your PS4 --> Settings ---> Mobile device pairing settings.
+If you want to control your PS4 the first thing you need is your user-credentials, this is a 64 characters HEX string that is easiest obtained by using PS4-waker <https://github.com/dhleong/ps4-waker>.
+To run the PS4-waker you will need a Node.js command prompt (for example: <https://nodejs.org/en/download/>).
+Enter "npx ps4-waker --help" int the command prompt. Agree to install by entering "y".
+After that send "npx ps4-waker --check". You will get asked to connect the "PS4 Second screen" Android app to the running clone.
+Do this and then you will need to get the pairing key from your PS4 --> Settings ---> Mobile device pairing settings.
On the PS4 screen you will see your pairing code and in the command prompt you will find the user credentials.
Then you need to pair your openHAB device with the PS4.
| Property | Default | Required | Description |
|---------------------|---------|:--------:|--------------------------------------------------------------------------|
| ipAddress | | Yes | The IP address of the PlayStation 3 |
-
## Channels
demo.thing
-```
+```java
Thing playstation:PS4:123456789ABC "PlayStation4" @ "Living Room" [ ipAddress="192.168.0.2", userCredential="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF", passCode="1234", pairingCode="12345678",
connectionTimeout="60", autoConnect="false", artworkSize="320", outboundIP="192.168.0.3", ipPort="997" ]
demo.items:
-```
+```java
Switch PS4_Power "Power" { channel="playstation:PS4:123456789ABC:power" }
String PS4_Application "Application [%s]" { channel="playstation:PS4:123456789ABC:applicationName" }
String PS4_ApplicationId "Application id [%s]" { channel="playstation:PS4:123456789ABC:applicationId" }
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame label="PlayStation 4" {
Every Siemens LOGO! PLC is configured as bridge:
-```
+```java
Bridge plclogo:device:<DeviceId> [ address="<ip>", family="<0BA7/0BA8>", localTSAP="0x<number>", remoteTSAP="0x<number>", refresh=<number> ]
```
The configuration pattern for digital things is:
-```
+```java
Thing digital <ThingId> "Label" @ "Location" [ kind="<kind>", force=<true/false> ]
```
Follow block kinds are allowed for digital things:
-| Type | `0BA7` | `0BA8` |
-| -------------- | :----: | ------ |
+| Type | `0BA7` | `0BA8` |
+| -------------- | :----: | ------ |
| Input | `I` | `I` |
| Output | `Q` | `Q` |
| Marker | `M` | `M` |
The configuration pattern for analog things is:
-```
+```java
Thing analog <ThingId> "Label" @ "Location" [ kind="<kind>", threshold=<number>, force=<true/false> ]
```
Follow block kinds are allowed for analog things:
-| Type | `0BA7` | `0BA8` |
+| Type | `0BA7` | `0BA8` |
| -------------- | :----: | ------ |
| Input | `AI` | `AI` |
| Output | `AQ` | `AQ` |
The configuration pattern for analog things is:
-```
+```java
Thing memory <ThingId> "Label" @ "Location" [ block="<name>", threshold=<number>, force=<true/false> ]
```
The configuration pattern for datetime things is:
-```
+```java
Thing datetime <ThingId> "Label" @ "Location" [ block="<name>", type=<type>, force=<true/false> ]
```
The configuration pattern for pulse things is:
-```
+```java
Thing pulse <ThingId> "Label" @ "Location" [ block="<name>", observe="<name>", pulse=<number> ]
```
Each device have currently three channels `diagnostic`, `rtc` and `weekday`:
-```
+```java
channel="plclogo:device:<DeviceId>:diagnostic"
channel="plclogo:device:<DeviceId>:rtc"
channel="plclogo:device:<DeviceId>:weekday"
Format pattern for digital channels is
-```
+```java
channel="plclogo:digital:<DeviceId>:<ThingId>:<Channel>"
```
Format pattern for analog channels is
-```
+```java
channel="plclogo:analog:<DeviceId>:<ThingId>:<Channel>"
```
Format pattern for memory channels for bit values is
-```
+```java
channel="plclogo:memory:<DeviceId>:<ThingId>:<state/value>"
```
Format pattern depends for date/time channels is
-```
+```java
channel="plclogo:datetime:<DeviceId>:<ThingId>:<date/time>"
```
Is thing configured as `"time"`, then channel `time` is provided.
Raw block data is provided via `value` channel, independed from thing configuration:
-```
+```java
channel="plclogo:datetime:<DeviceId>:<ThingId>:value"
```
Format pattern depends for pulse channels is
-```
+```java
channel="plclogo:pulse:<DeviceId>:<ThingId>:state"
```
Additionally the state of observed block data is provided via `observed` channel
-```
+```java
channel="plclogo:pulse:<DeviceId>:<ThingId>:observed"
```
logo.things:
-```
+```java
Bridge plclogo:device:Logo [ address="192.168.0.1", family="0BA8", localTSAP="0x3000", remoteTSAP="0x2000", refresh=100 ]
{
Thing digital Inputs [ kind="I" ]
logo.items:
-```
+```java
Contact LogoI1 { channel="plclogo:digital:Logo:Inputs:I1" }
Contact LogoI2 { channel="plclogo:digital:Logo:Inputs:I2" }
Switch LogoQ1 { channel="plclogo:digital:Logo:Outputs:Q1" }
logo.things:
-```
+```java
Bridge plclogo:device:Logo1 [ address="192.168.0.1", family="0BA8", localTSAP="0x3000", remoteTSAP="0x2000", refresh=100 ]
{
Thing digital Inputs [ kind="I" ]
logo.items:
-```
+```java
Contact Logo1_I1 { channel="plclogo:digital:Logo1:Inputs:I1" }
Contact Logo1_I2 { channel="plclogo:digital:Logo1:Inputs:I2" }
Switch Logo1_Q1 { channel="plclogo:digital:Logo1:Outputs:Q1" }
## Troubleshooting
-**LOGO! bridge will not go online**
+### LOGO! bridge will not go online
Be sure to have only one bridge for each LOGO! device.
-**Log shows reader was created but no communication with LOGO! possible**
+### Log shows reader was created but no communication with LOGO! possible
Check TSAP values: localTSAP and remoteTSAP should not be the same.
You have to choose different addresses.
To recover stop openHAB, cold boot your LOGO! (power off/on) and reflash the program with LOGO! SoftComfort.
Then restart openHAB and check logging for a created reader.
-**RTC value differs from the value shown in LOGO! (0BA7)**
+### RTC value differs from the value shown in LOGO! (0BA7)
This is no bug! Since there is no way to read the RTC from a 0BA7, the binding simply returns the local time of openHAB host.
| measurementInterval | | 60 | The energy measurement interval (in minutes) (5 to 60) |
| temporarilyNotInNetwork | | false | Stops searching for an unplugged device on the ZigBee network traffic (true or false) |
-
### Scan
| Configuration Parameter | Required | Default | Description |
| wakeupInterval | | 1440 | The interval in which the Scan wakes up at least once (in minutes) (5 to 1440) |
| wakeupDuration | | 10 | The number of seconds the Scan stays awake after it woke up (10 to 120) |
-
### Sense
| Configuration Parameter | Required | Default | Description |
| wakeupInterval | | 1440 | The interval in which the Sense wakes up at least once (in minutes) (5 to 1440) |
| wakeupDuration | | 10 | The number of seconds the Sense stays awake after it woke up (10 to 120) |
-
### Switch
| Configuration Parameter | Required | Default | Description |
| wakeupInterval | | 1440 | The interval in which the Switch wakes up at least once (in minutes) (5 to 1440) |
| wakeupDuration | | 10 | The number of seconds the Switch stays awake after it woke up (10 to 120) |
-
## Channels
| Channel Type ID | Item Type | Description | Thing Types |
demo.things
-```
+```java
Bridge plugwise:stick:demostick [ serialPort="/dev/ttyUSB0", messageWaitTime=150 ]
Thing plugwise:circle:fan (plugwise:stick:demostick) [ macAddress="000D6F0000A1A1A1", measurementInterval=15 ]
demo.items
-```
+```java
/* Circle */
Switch Fan_Switch "Switch" <switch> { channel="plugwise:circle:fan:state" }
String Fan_Clock "Clock [%s]" <clock> { channel="plugwise:circle:fan:clock" }
demo.sitemap
-```
+```perl
sitemap demo label="Main Menu"
{
# PlugwiseHA Binding
-The Plugwise Home Automation binding adds support to openHAB for the [Plugwise Home Automation ecosystem](https://www.plugwise.com/en_US/adam_zone_control).
+The Plugwise Home Automation binding adds support to openHAB for the [Plugwise Home Automation ecosystem](https://www.plugwise.com/en_US/adam_zone_control).
This system is built around a gateway from Plugwise called the 'Adam' which incorporates a ZigBee controller to manage thermostatic radiator valves, room thermostats, floor heating pumps, et cetera.
-Users can manage and control this system either via a web app or a mobile phone app developed by Plugwise.
+Users can manage and control this system either via a web app or a mobile phone app developed by Plugwise.
The (web) app allows users to define heating zone's (e.g. rooms) and add radiator valves to those rooms to manage and control their heating irrespective of other rooms.
Using the Plugwise Home Automation binding you can incorporate the management of these devices and heating zones into openHAB.
The binding uses the same RESTfull API that both the mobile phone app and the web app use.
-The binding requires users to have a working Plugwise Home Automation setup consisting of at least 1 gateway device (the 'Adam') and preferably 1 radiator valve as a bare minimum.
+The binding requires users to have a working Plugwise Home Automation setup consisting of at least 1 gateway device (the 'Adam') and preferably 1 radiator valve as a bare minimum.
The 'Adam' (from hereon called the gateway) needs to be accessible from the openHAB instance via a TCP/IP connection.
## Supported Things
| [Lisa](https://www.plugwise.com/en_US/products/lisa) | A room thermostat (also supports the 'Anna' room thermostat) | appliance_thermostat |
| [Boiler] | A central boiler used for heating and/or domestic hot water | appliance_boiler |
-
-
## Discovery
-After setting up the Plugwise Home Automation bridge you can start a manual scan to find all devices registered on the gateway.
-You can also manually add things by entering the corresponding device id as a configuration parameter.
+After setting up the Plugwise Home Automation bridge you can start a manual scan to find all devices registered on the gateway.
+You can also manually add things by entering the corresponding device id as a configuration parameter.
The device IDs can be found be enabling TRACE logging in the Karaf console.
## Thing Configuration
You must define a Plugwise Home Automation gateway (Bridge) before defining zones or appliances (Things) for this binding to work.
-#### Plugwise Home Automation gateway (Bridge):
+### Plugwise Home Automation gateway (Bridge):
| Parameter | Description | Config | Default |
|-----------|-------------------------------------------------------------------------|----------|---------|
| smileID | The 8 letter code on the sticker on the back of the Adam boiler gateway | Required | - |
| refresh | The refresh interval in seconds | Optional | 15 |
-#### Plugwise Home Automation zone (`zone`):
+### Plugwise Home Automation zone (`zone`):
| Parameter | Description | Config | Default |
| --------- | ------------------------- | -------- | ------- |
| id | The unique ID of the zone | Required | - |
-#### Plugwise Home Automation appliance (`appliance_valve`):
+### Plugwise Home Automation appliance (`appliance_valve`):
| Parameter | Description | Config | Default |
|----------------------|--------------------------------------------------------------------------------------------------------------------|----------|---------|
| id | The unique ID of the radiator valve appliance | Required | - |
-| lowBatteryPercentage | Battery charge remaining at which to trigger battery low warning. (*Only applicable for battery operated devices*) | Optional | 15 |
+| lowBatteryPercentage | Battery charge remaining at which to trigger battery low warning. (_Only applicable for battery operated devices_) | Optional | 15 |
-#### Plugwise Home Automation appliance (`appliance_thermostat`):
+### Plugwise Home Automation appliance (`appliance_thermostat`):
| Parameter | Description | Config | Default |
|----------------------|--------------------------------------------------------------------------------------------------------------------|----------|---------|
| id | The unique ID of the room thermostat appliance | Required | - |
-| lowBatteryPercentage | Battery charge remaining at which to trigger battery low warning. (*Only applicable for battery operated devices*) | Optional | 15 |
+| lowBatteryPercentage | Battery charge remaining at which to trigger battery low warning. (_Only applicable for battery operated devices_) | Optional | 15 |
-
-#### Plugwise Home Automation appliance (`appliance_pump`):
+### Plugwise Home Automation appliance (`appliance_pump`):
| Parameter | Description | Config | Default |
| --------- | ----------------------------------- | -------- | ------- |
| id | The unique ID of the pump appliance | Required | - |
-#### Plugwise Home Automation boiler (`appliance_boiler`):
+### Plugwise Home Automation boiler (`appliance_boiler`):
| Parameter | Description | Config | Default |
|-----------|-----------------------------|----------|---------|
| temperature | Number:Temperature | Yes | The temperature of an appliance that supports the thermostat functionality |
| setpointTemperature | Number:Temperature | No | The setpoint temperature (read/write) of an appliance that supports the thermostat functionality |
| power | Switch | No | Toggle an appliance ON/OFF that supports the relay functionality |
-| lock | Switch | No | Toggle an appliance lock ON/OFF that supports the relay functionality.(*When the lock is ON the gateway will not automatically control the corresponding relay switch depending on thermostat mode*) |
+| lock | Switch | No | Toggle an appliance lock ON/OFF that supports the relay functionality.(_When the lock is ON the gateway will not automatically control the corresponding relay switch depending on thermostat mode_) |
| powerUsage | Number:Power | Yes | The current power usage in Watts of an appliance that supports this |
| batteryLevel | Number | Yes | The current battery level of an appliance that is battery operated |
| batteryLevelLow | Switch | Yes | Switches ON when the battery level of an appliance that is battery operated drops below a certain threshold |
## Full Example
-**things/plugwiseha.things**
+### plugwiseha.things
-```
+```java
Bridge plugwiseha:gateway:home "Plugwise Home Automation Gateway" [ smileId="abcdefgh" ] {
- Thing zone living_room_zone "Living room" [ id="$device_id" ]
- Thing appliance_valve living_room_radiator "Living room radiator valve" [ id="$device_id" ]
- Thing appliance_thermostat living_room_thermostat "Living room thermostat" [ id="$device_id" ]
- Thing appliance_pump living_room_pump "Floor heating pump" [ id="$device_id" ]
- Thing appliance_boiler main_boiler "Main boiler" [ id="$device_id" ]
+ Thing zone living_room_zone "Living room" [ id="$device_id" ]
+ Thing appliance_valve living_room_radiator "Living room radiator valve" [ id="$device_id" ]
+ Thing appliance_thermostat living_room_thermostat "Living room thermostat" [ id="$device_id" ]
+ Thing appliance_pump living_room_pump "Floor heating pump" [ id="$device_id" ]
+ Thing appliance_boiler main_boiler "Main boiler" [ id="$device_id" ]
}
```
Replace `$device_id` accordingly.
-**items/plugwiseha.items**
+### plugwiseha.items
-```
+```java
Number:Temperature living_room_zone_temperature "Zone temperature" {channel="plugwiseha:zone:home:living_room_zone:temperature"}
Number:Temperature living_room_zone_temperature_setpoint "Zone temperature setpoint" {channel="plugwiseha:zone:home:living_room_zone:setpointTemperature"}
String living_room_zone_preset_scene "Zone preset scene" {channel="plugwiseha:zone:home:living_room_zone:presetScene"}
Switch living_room_pump_lock "Floor heating pump lock [MAP:(plugwiseha.map):%s]" {channel="plugwiseha:appliance_pump:home:living_room_pump:lock"}
Number:Power living_room_pump_power_usage "Floor heating pump power [%0.2fW]" {channel="plugwiseha:appliance_pump:home:living_room_pump:powerUsage"}
-Number:Pressure main_boiler_waterpressure "Waterpressure" { channel="plugwiseha:appliance_boiler:home:main_boiler:waterPressure"}
-Switch main_boiler_chState "Heating active" { channel="plugwiseha:appliance_boiler:home:main_boiler:chState"}
-Switch main_boiler_dhwState "Domestic hot water active" { channel="plugwiseha:appliance_boiler:home:main_boiler:dhwState"}
+Number:Pressure main_boiler_waterpressure "Waterpressure" { channel="plugwiseha:appliance_boiler:home:main_boiler:waterPressure"}
+Switch main_boiler_chState "Heating active" { channel="plugwiseha:appliance_boiler:home:main_boiler:chState"}
+Switch main_boiler_dhwState "Domestic hot water active" { channel="plugwiseha:appliance_boiler:home:main_boiler:dhwState"}
Switch main_boiler_coolingState "Cooling state" { channel="plugwiseha:appliance_boiler:home:main_boiler:coolingState"}
Number:Temperature main_boiler_intendedBoilerTemp "Intended boiler temperature" {channel="plugwiseha:appliance_boiler:home:main_boiler:intendedBoilerTemp"}
Number:Temperature main_boiler_returnTemperature "Boiler return temperature" {channel="plugwiseha:appliance_boiler:home:main_boiler:returnWaterTemperature"}
```
-**transform/plugwiseha.map**
+### plugwiseha.map
-```
+```text
ON=Locked
OFF=Unlocked
```
-**sitemaps/plugwiseha.sitemap**
+### plugwiseha.sitemap
-```
+```perl
sitemap plugwiseha label="PlugwiseHA Binding"
{
- Frame {
- Text item=living_room_zone_temperature
- Setpoint item=living_room_zone_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
- Text item=living_room_zone_presetScene
- Switch item=living_room_zone_preheat
- Text item=living_room_zone_regulation_control
- Switch item=living_room_zone_cooling
-
- Text item=living_room_radiator_temperature
- Setpoint item=living_room_radiator_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
- Text item=living_room_radiator_valve_position
-
- Text item=living_room_thermostat_temperature
- Setpoint item=living_room_thermostat_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
- Setpoint item=living_room_thermostat_temperature_offset label="Living room offset [%.1f °C]" minValue=-5.0 maxValue=5 step=0.5
-
- Number item=living_room_pump_power_usage
- Switch item=living_room_pump_power
- Switch item=living_room_pump_lock
-
- Number item=main_boiler_waterpressure
- Switch item=main_boiler_chState
- Switch item=main_boiler_dhwState
-
- Switch item=main_boiler_coolingState
- Number item=main_boiler_intendedBoilerTemp
- Switch item=main_boiler_flameState
- Switch item=main_boiler_intendedHeatingState
- Number item=main_boiler_modulationLevel
- Number item=main_boiler_otAppFaultCode
- Number item=main_boiler_dhwTemperature
- Number item=main_boiler_otOEMFaultCode
- Number item=main_boiler_boilerTemperature
- Number item=main_boiler_dhwSetpoint
- Number item=main_boiler_maxBoilerTemperature
- Switch item=main_boiler_dhwComfortMode
+ Frame {
+ Text item=living_room_zone_temperature
+ Setpoint item=living_room_zone_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
+ Text item=living_room_zone_presetScene
+ Switch item=living_room_zone_preheat
+ Text item=living_room_zone_regulation_control
+ Switch item=living_room_zone_cooling
+
+ Text item=living_room_radiator_temperature
+ Setpoint item=living_room_radiator_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
+ Text item=living_room_radiator_valve_position
+
+ Text item=living_room_thermostat_temperature
+ Setpoint item=living_room_thermostat_temperature_setpoint label="Living room [%.1f °C]" minValue=5.0 maxValue=25 step=0.5
+ Setpoint item=living_room_thermostat_temperature_offset label="Living room offset [%.1f °C]" minValue=-5.0 maxValue=5 step=0.5
+
+ Number item=living_room_pump_power_usage
+ Switch item=living_room_pump_power
+ Switch item=living_room_pump_lock
+
+ Number item=main_boiler_waterpressure
+ Switch item=main_boiler_chState
+ Switch item=main_boiler_dhwState
+
+ Switch item=main_boiler_coolingState
+ Number item=main_boiler_intendedBoilerTemp
+ Switch item=main_boiler_flameState
+ Switch item=main_boiler_intendedHeatingState
+ Number item=main_boiler_modulationLevel
+ Number item=main_boiler_otAppFaultCode
+ Number item=main_boiler_dhwTemperature
+ Number item=main_boiler_otOEMFaultCode
+ Number item=main_boiler_boilerTemperature
+ Number item=main_boiler_dhwSetpoint
+ Number item=main_boiler_maxBoilerTemperature
+ Switch item=main_boiler_dhwComfortMode
Number item=main_boiler_returnTemperature
- }
+ }
}
```
Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 4444:
-```
+```text
4444:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT
```
Some notes:
-- On Linux, you may get an error stating the serial port cannot be opened when the Powermax binding tries to load.
+- On Linux, you may get an error stating the serial port cannot be opened when the Powermax 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`.
-- Also on Linux you may have issues with the USB if using two serial USB devices e.g. Powermax and RFXcom.
+- Also on Linux you may have issues with the USB if using two serial USB devices e.g. Powermax and RFXcom.
See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
### X10 device
The binding provides few specific commands you can use in the console.
Enter the command `openhab:powermax` to get the usage of each available command.
-```
+```shell
Usage: openhab:powermax <bridgeUID> info_setup - information on setup
Usage: openhab:powermax <bridgeUID> download_setup - download setup
```
## Notes & Limitations
-- For Powerlink mode to work, the enrollment procedure has to be followed.
+- For Powerlink mode to work, the enrollment procedure has to be followed.
If you don't enroll the Powerlink on the PowerMax the binding will operate in Standard mode, and if enrolled in Powerlink mode.
On the newer software versions of the PowerMax the Powerlink enrollment is automatic, and the binding should only operate in 'Powerlink' mode (if enrollment is successful).
-- In Powerlink mode, the binding is downloading the panel setup at startup.
+- In Powerlink mode, the binding is downloading the panel setup at startup.
When openHAB is starting, unfortunately this download is often failing on a Raspberry Pi for an unclear reason (maybe too many things running at the same time).
A retry mechanism is implemented in the binding to retry until 3 times with a delay of 1 minute between each try.
My experience is that the download finally succeeds.
In case it fails after all the retries, you still have the option to later trigger the download either by using the channel `download_setup` or the appropriate console command.
-- Visonic does not provide a specification of the RS232 protocol and, thus, use this binding at your own risk.
-- The binding is not able to arm/disarm a particular partition.
-- The compatibility of the binding with the Powermaster alarm panel series is probably only partial.
-- In order to be able to bypass zones, you must first enable this feature by updating your panel configuration. Look at your installer's manual.
+- Visonic does not provide a specification of the RS232 protocol and, thus, use this binding at your own risk.
+- The binding is not able to arm/disarm a particular partition.
+- The compatibility of the binding with the Powermaster alarm panel series is probably only partial.
+- In order to be able to bypass zones, you must first enable this feature by updating your panel configuration. Look at your installer's manual.
## Full Example
demo.things:
-```
+```java
Bridge powermax:serial:home "Alarm Home" [ serialPort="/dev/ttyUSB0", allowArming=true, panelType="PowerMaxProPart", autoSyncTime=true ] {
Thing zone kitchen "Window kitchen" [ zoneNumber=9 ]
Thing x10 lamp1 "Lamp 1" [ deviceNumber=1 ]
demo.items:
-```
+```java
Switch SystemArmed "System armed" {channel="powermax:serial:home:system_armed", autoupdate="false"}
String SystemArmMode "System arm mode" {channel="powermax:serial:home:arm_mode", autoupdate="false"}
Switch PGM "PGM" {channel="powermax:serial:home:pgm_status", autoupdate="false"}
Note [openHAB Serial Port documentation](https://www.openhab.org/docs/administration/serial.html) for general serial port configuration.
After that you can add the device as thing and configure the usbPort your OS generated for the display.
-```
+```text
UID: proteusecometer:EcoMeterS:e90705eaa4
label: Proteus EcoMeter S
thingTypeUID: proteusecometer:EcoMeterS
## Example
-_*.things_
+### Things
-```
+```java
Thing prowl:broker:mybroker "Prowl Broker" [ apiKey="0000000000000000000000000000000000000000" ]
```
-_*.rules_
+### Rules
Once you have created the broker thing with a valid API key, you can use the Prowl service in your rules.
First you need to create an instance of the broker just before any call or on the top rules level. (replace the _mybroker_ with the right name of your instance).
-Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_.
-There is also an optional third parameter _priority_ which represents the message priority (very low) -2,-1,0,1,2 (emergency). The default priority is 0.
+Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_.
+There is also an optional third parameter _priority_ which represents the message priority (very low) -2,-1,0,1,2 (emergency). The default priority is 0.
-```
+```java
val prowl = getActions("prowl","prowl:broker:mybroker")
prowl.pushNotification("Event", "This is the description of the event")
prowl.pushNotification("Emergency Event", "This is the description of the event", 2)
#### Textual configuration
##### Thing
-```
+
+```java
Thing publictransportswitzerland:stationboard:zurich [ station="Zürich HB" ]
```
##### Items
-```
+
+```java
String Next_Departure "Next Departure" { channel="publictransportswitzerland:stationboard:zurich:departures#1" }
String Upcoming_Departures_TSV "Upcoming_Departures_TSV" { channel="publictransportswitzerland:stationboard:zurich:tsv" }
```
You need a running pulseaudio server with module **module-cli-protocol-tcp** loaded and accessible by the server which runs your openHAB instance. The following pulseaudio devices are supported:
-* Sink
-* Source
-* Sink-Input
-* Source-Output
-* Combined-Sink
+- Sink
+- Source
+- Sink-Input
+- Source-Output
+- Combined-Sink
## Discovery
The Pulseaudio binding can be customized to handle different devices. The Sink and Source support is activated by default and you need no further action to use it. If you want to use another type of device, or disable the Sink/Source type, you have to switch the corresponding binding property.
-- **sink:** Allow the binding to parse sink devices from the pulseaudio server
-- **source:** Allow the binding to parse source devices from the pulseaudio server
-- **sinkInput:** Allow the binding to parse sink-input devices from the pulseaudio server
-- **sourceOutput:** Allow the binding to parse source-output devices from the pulseaudio server
+- **sink:** Allow the binding to parse sink devices from the pulseaudio server
+- **source:** Allow the binding to parse source devices from the pulseaudio server
+- **sinkInput:** Allow the binding to parse sink-input devices from the pulseaudio server
+- **sourceOutput:** Allow the binding to parse source-output devices from the pulseaudio server
You can use the GUI on the bindings page (click on the pulseaudio binding then "Expand for details"), or create a `<openHAB-conf>/services/pulseaudio.cfg` file and use the above options like this:
-```
+```text
binding.pulseaudio:sink=true
binding.pulseaudio:source=true
binding.pulseaudio:sinkInput=false
`pactl -s <ip-address|hostname> list sinks | grep "name:"`
If you need to narrow the identification of a device (in case name or description are not consistent and sufficient), you can use the `additionalFilters` parameter (optional/advanced parameter), in the form of one or several (separator '###') regular expression(s), each one matching a property value of the pulseaudio device. You can use every properties listed with `pactl`.
-
## Channels
All devices support some of the following channels:
Use the appropriate parameter in the sink thing to activate this possibility (activateSimpleProtocolSink).
This requires the module **module-simple-protocol-tcp** to be present on the server which runs your openHAB instance. The binding will try to command (if not discovered first) the load of this module on the pulseaudio server.
-
## Audio source
Source things can register themselves as audio source in openHAB.
### pulseaudio.things
-```
+```java
Bridge pulseaudio:bridge:<bridgname> "<Bridge Label>" @ "<Room>" [ host="<ipAddress>", port=4712 ] {
Things:
- Thing sink multiroom "Snapcast" @ "Room" [name="alsa_card.pci-0000_00_1f.3", activateSimpleProtocolSink=true, simpleProtocolSinkPort=4711, additionalFilters="analog-stereo###internal"]
- Thing source microphone "microphone" @ "Room" [name="alsa_input.pci-0000_00_14.2.analog-stereo"]
- Thing sink-input openhabTTS "OH-Voice" @ "Room" [name="alsa_output.pci-0000_00_1f.3.hdmi-stereo-extra1"]
- Thing source-output remotePulseSink "Other Room Speaker" @ "Other Room" [name="alsa_input.pci-0000_00_14.2.analog-stereo"]
- Thing combined-sink hdmiAndAnalog "Zone 1+2" @ "Room" [name="combined"]
+ Thing sink multiroom "Snapcast" @ "Room" [name="alsa_card.pci-0000_00_1f.3", activateSimpleProtocolSink=true, simpleProtocolSinkPort=4711, additionalFilters="analog-stereo###internal"]
+ Thing source microphone "microphone" @ "Room" [name="alsa_input.pci-0000_00_14.2.analog-stereo"]
+ Thing sink-input openhabTTS "OH-Voice" @ "Room" [name="alsa_output.pci-0000_00_1f.3.hdmi-stereo-extra1"]
+ Thing source-output remotePulseSink "Other Room Speaker" @ "Other Room" [name="alsa_input.pci-0000_00_14.2.analog-stereo"]
+ Thing combined-sink hdmiAndAnalog "Zone 1+2" @ "Room" [name="combined"]
}
```
This binding includes rule actions for sending notes.
Two different actions available:
-* `sendPushbulletNote(String recipient, String messsage)`
-* `sendPushbulletNote(String recipient, String title, String messsage)`
+- `sendPushbulletNote(String recipient, String messsage)`
+- `sendPushbulletNote(String recipient, String title, String messsage)`
Since there is a separate rule action instance for each `bot` thing, this needs to be retrieved through `getActions(scope, thingUID)`.
The first parameter always has to be `pushbullet` and the second is the full Thing UID of the bot that should be used.
Examples:
-```
+```java
val actions = getActions("pushbullet", "pushbullet:bot:r2d2")
val result = actions.sendPushbulletNote("someone@example.com", "R2D2 talks here...", "This is the pushed note.")
```
This project is being translated on transifex.
If you want to help, please join the project at the URL:
-- https://www.transifex.com/hakan42/openhab-binding-pushbullet/dashboard/
+- <https://www.transifex.com/hakan42/openhab-binding-pushbullet/dashboard/>
## Libraries
There is only one Thing available - the `pushover-account`.
You are able to create multiple instances of this Thing to broadcast to different users, groups or devices.
-openHAB is listed as a *featured application* on the [Pushover homepage](https://pushover.net/apps).
-It provides a clone function to directly add a *prefilled* application to your Pushover account and retrieve an API key.
+openHAB is listed as a _featured application_ on the [Pushover homepage](https://pushover.net/apps).
+It provides a clone function to directly add a _prefilled_ application to your Pushover account and retrieve an API key.
You can reach it via [https://pushover.net/apps/clone/openHAB](https://pushover.net/apps/clone/openHAB)
## Thing Configuration
- `onOff`: Bistabiel, Timer1-3, Interval
- `thermostats`: Thermostats - normal and PID
- `scene`: Scenes
-- `co2`: CO2
-- `rollershutter`: Rollershutter
+- `co2`: CO2
+- `rollershutter`: Rollershutter
- `rollershutter_slats`: Rollerhutter with slats
For now the following Qbus things are not yet supported but will come:
- Energy monitor
- Weather station
-
## Discovery
The discovery service is not yet implemented but the System Manager III software of Qbus generates things and item files from the programming, which you can use directly in openHAB.
## Bridge configuration
-```
+```java
Bridge qbus:bridge:CTD001122 [ addr="localhost", sn="001122", port=8447, serverCheck=10 ] {
...
}
| `port` | 8447 | YES | The communication port of the client/server |
| `serverCheck` | 10 | NO | Refresh time - After x minutes there will be a check if server is still running and if client is still connected. If not - reconnect |
-
## Things configuration
| Thing Type ID | Channel Name | Read only | description |
| `thermostat` | measured | Yes | This is the channel for thermostats currenttemp |
| `thermostat` | mode | No | This is the channel for thermostats mode |
-
## Full Example
### Things
-```
+```java
Bridge qbus:bridge:CTD001122 [ addr="localhost", sn="001122", port=8447, serverCheck=10 ] {
dimmer 1 "ToonzaalLED" [ dimmerId=100 ]
onOff 30 "Toonzaal230V" [ bistabielId=76 ]
### Items
-```
+```java
Dimmer ToonzaalLED <light> ["Light"] {channel="qbus:dimmer:CTD001122:1:brightness"}
Switch Toonzaal230V <light> ["Switch"] {channel="qbus:onOff:CTD001122:30:switch"}
Group gThermostaat ["HVAC"]
This allows for local monitoring of alarm and zone statuses as well as arming, disarming and triggering alarms.
Qolsys (a division of Johnson Controls) is a popular manufacturer of alarm systems.
-The Qolsys IQ line of panels supports both wireless and hard wire sensors and features built in Cellular and Wi-Fi dual path communication that natively integrates with Alarm.com monitoring and supervision.
+The Qolsys IQ line of panels supports both wireless and hard wire sensors and features built in Cellular and Wi-Fi dual path communication that natively integrates with Alarm.com monitoring and supervision.
-This binding directly interfaces with the panel and does not require cloud access.
+This binding directly interfaces with the panel and does not require cloud access.

`Settings` --> `Advanced Settings` --> `Installation` --> `Devices` --> `Wi-Fi Devices` --> `Control4` (set to enabled)
- *Panel will reboot*
+Panel will _reboot_
`Settings` --> `Advanced Settings` --> `Installation` --> `Devices` --> `Wi-Fi Devices` --> `Reveal Secure Token` (copy token to use in panel configuration)
### Zone Channels
-| Channel | Type | Read/Write | Description | State Options |
+| Channel | Type | Read/Write | Description | State Options |
|---------|---------|------------|------------------------|---------------------------------------------|
| status | String | R | The zone status | ACTIVE, CLOSED, OPEN, FAILURE, IDLE, TAMPER |
| state | Number | R | The zone state | Number |
### qolsysiq.things
-```
+```java
Bridge qolsysiq:panel:home "Home Security Panel" [ hostname="192.168.3.123", port=12345, key="AAABBB00" ] {
Bridge partition 0 "Partition Main" [ id=0, armCode="123456" ] {
Thing zone 1 "Window" [ id=1 ]
Sample items file with both Alexa and Homekit voice control
-```
+```java
Group PartitionMain "Alarm System" ["Equipment"] {alexa="SecurityPanel", homekit = "SecuritySystem"}
String PartitionMain_PartitionArmState "Partition Arm State" <Alarm> (PartitionMain) ["Point"] {channel="qolsysiq:partition:home:0:armState", alexa="ArmState" [DISARMED="DISARM",ARMED_STAY="ARM_STAY",ARMED_AWAY="ARM_AWAY:EXIT_DELAY"], homekit = "SecuritySystem.CurrentSecuritySystemState,SecuritySystem.TargetSecuritySystemState" [STAY_ARM="ARM_STAY", AWAY_ARM="ARM_AWAY", DISARM="DISARM", DISARMED="DISARM", TRIGGERED="ALARM"]}
String PartitionMain_PartitionAlarmState "Partition Alarm State" <Alarm> (PartitionMain) ["Point"] {channel="qolsysiq:partition:home:0:alarmState"}
# RadioThermostat Binding
-This binding connects RadioThermostat/3M Filtrete models CT30, CT50/3M50, CT80, etc. with built-in Wi-Fi module to openHAB.
+This binding connects RadioThermostat/3M Filtrete models CT30, CT50/3M50, CT80, etc. with built-in Wi-Fi module to openHAB.
Thermostats using a Z-Wave module are not supported but can be used via the openHAB ZWave binding.
The binding retrieves and periodically updates all basic system information from the thermostat.
Some notes:
-* The main caveat for using this binding is to keep in mind that the web server in the thermostat is very slow. Do not over load it with excessive amounts of simultaneous commands.
-* When changing the thermostat mode, the current temperature set point is cleared and a refresh of the thermostat data is done to get the new mode's set point.
-* Since retrieving the thermostat's data is the slowest operation, it will take several seconds after changing the mode before the new set point is displayed.
-* The 'Program Mode' command is untested and according to the published API is only available on a CT80 Rev B.
-* Humidity information is available only when using a CT80 thermostat.
+- The main caveat for using this binding is to keep in mind that the web server in the thermostat is very slow. Do not over load it with excessive amounts of simultaneous commands.
+- When changing the thermostat mode, the current temperature set point is cleared and a refresh of the thermostat data is done to get the new mode's set point.
+- Since retrieving the thermostat's data is the slowest operation, it will take several seconds after changing the mode before the new set point is displayed.
+- The 'Program Mode' command is untested and according to the published API is only available on a CT80 Rev B.
+- Humidity information is available only when using a CT80 thermostat.
## Channels
radiotherm.map:
-```
+```text
UNDEF_stus=-
NULL_stus=-
-_stus=-
radiotherm.things:
-```
+```java
radiothermostat:rtherm:mytherm1 "My 1st floor thermostat" [ hostName="192.168.10.1", refresh=2, logRefresh=10, isCT80=false, disableLogs=false, setpointMode="temporary" ]
radiothermostat:rtherm:mytherm2 "My 2nd floor thermostat" [ hostName="mythermhost2", refresh=1, logRefresh=20, isCT80=true, disableLogs=false, setpointMode="absolute" ]
```
radiotherm.items:
-```
+```java
Number:Temperature Therm_Temp "Current Temperature [%.1f °F] " <temperature> { channel="radiothermostat:rtherm:mytherm1:temperature" }
// Humidity only supported on CT80
Number Therm_Hum "Current Humidity [%d %%]" <humidity> { channel="radiothermostat:rtherm:mytherm1:humidity" }
radiotherm.sitemap:
-```
+```perl
sitemap radiotherm label="My Thermostat" {
Frame label="My 1st floor thermostat" {
Text item=Therm_Temp icon="temperature" valuecolor=[>76="orange",>67.5="green",<=67.5="blue"]
radiotherm.rules:
-```
+```java
rule "Send my thermostat command"
when
Item Therm_mysetting received command
The Rego heat pump binding supports:
-* Rego 6xx controllers family and
-* Husdata interface.
+- Rego 6xx controllers family and
+- Husdata interface.
## The Rego 6xx family
Two connection types are supported:
-* TCP/IP and
-* serial (RS232).
+- TCP/IP and
+- serial (RS232).
#### TCP/IP connection
Configuration of the TCP/IP thing:
-- address: the hostname/IP address of the transparent bridge on the local network - mandatory,
-- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265,
-- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds.
+- address: the hostname/IP address of the transparent bridge on the local network - mandatory,
+- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265,
+- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds.
Example thing definition:
- ```
+ ```java
regoheatpump:ipRego6xx:ivtIP [ address="192.168.2.50", tcpPort="9265" ]
```
Parameters:
-- portName: the name of the serial port on your computer - mandatory,
-- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds.
+- portName: the name of the serial port on your computer - mandatory,
+- refreshInterval: refresh interval in seconds, used to fetch new values from the heat pump - optional, defaults to 60 seconds.
Example thing definition:
-```
+```java
regoheatpump:serialRego6xx:ivtSerial [ portName="COM3" ]
```
Two connection types are supported:
-* TCP/IP and
-* serial (RS232).
+- TCP/IP and
+- serial (RS232).
#### TCP/IP connection
Configuration of the TCP/IP thing:
-- address: the hostname/IP address of the transparent bridge on the local network - mandatory,
-- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265.
+- address: the hostname/IP address of the transparent bridge on the local network - mandatory,
+- tcpPort: the port number to use to connect to the transparent bridge - optional, defaults to 9265.
Example thing definition:
- ```
+ ```java
regoheatpump:ipHusdata:ivtIP [ address="192.168.2.50", tcpPort="9265" ]
```
Parameters:
-- portName: the name of the serial port on your computer - mandatory.
+- portName: the name of the serial port on your computer - mandatory.
Example thing definition:
-```
+```java
regoheatpump:serialHusdata:ivtSerial [ portName="COM3" ]
```
Setting the `buildTriggerChannels` parameter to false is for the main following advanced usages:
-* you don't care about the trigger channels of this remote thing and you don't want the binding to create them locally,
-* you want to define the trigger channels in your configuration file, and only the channels that you will finally need,
-* you want to set a specific channel ID rather than using the channel ID created by the binding.
+- you don't care about the trigger channels of this remote thing and you don't want the binding to create them locally,
+- you want to define the trigger channels in your configuration file, and only the channels that you will finally need,
+- you want to set a specific channel ID rather than using the channel ID created by the binding.
## Thing Status
## Limitations
-* The binding will not try to communicate with an openHAB v1 server.
+- The binding will not try to communicate with an openHAB v1 server.
## Example
Example of connection to a remote server in the local network:
-```
+```java
Bridge remoteopenhab:server:oh2 "OH2 server" [ host="192.168.0.100", port=8443, useHttps=true, trustedCertificate=true ] {
Thing thing tv "TV living room" [ thingUID="lgwebos:WebOSTV:tv" ]
Thing thing astroSun "Astro sun" [ thingUID="astro:sun:local", buildTriggerChannels=false ] {
Example of connection to a remote server outside the local network through a myopenhab cloud instance:
-```
+```java
Bridge remoteopenhab:server:oh3 "OH3 server" [ host="myopenhab.org", useHttps=true, port=443, username="myUsername", password="myPassword" ]
```
### demo.items:
-```
+```java
DateTime MyDate "Date [%1$tA %1$td %1$tR]" <calendar> { channel="remoteopenhab:server:oh2:MyDate" }
```
# Renault Binding
-This binding allows MyRenault App. users to get battery status and other data from their cars.
+This binding allows MyRenault App. users to get battery status and other data from their cars.
They can also heat their cars by turning ON the HVAC status and toggle the car's charging mode.
-The binding translates the [python based renault-api](https://renault-api.readthedocs.io/en/latest/) in an easy to use openHAB java binding.
-
+The binding translates the [python based renault-api](https://renault-api.readthedocs.io/en/latest/) in an easy to use openHAB java binding.
## Supported Things
This binding can only retrieve information that is available in the MyRenault App.
-
## Discovery
No discovery
-
## Thing Configuration
You require your MyRenault credential, locale and VIN for your MyRenault registered car.
| vin | Vehicle Identification Number. | yes |
| refreshInterval | Interval the car is polled in minutes. | no |
| updateDelay | How long to wait for commands to reach car and update to server in seconds.| no |
-| kamereonApiKey | Kamereon API Key. | no |
-
+| kamereonApiKey | Kamereon API Key. | no |
## Channels
| location | Location | The GPS position of the vehicle | Yes |
| locationupdated | DateTime | Timestamp of the last location update | Yes |
-
## Limitations
Some channels may not work depending on your car and MyRenault account.
The "externaltemperature" only works on a few cars.
-The "hvactargettemperature" is used by the hvacstatus ON command for pre-conditioning the car.
+The "hvactargettemperature" is used by the hvacstatus ON command for pre-conditioning the car.
This seams to only allow values 19, 20 and 21 or else the pre-conditioning command will not work.
The Kamereon API Key changes periodically, which causes a communication error.
To fix this error update the API Key in the bindings configuration.
The new key value can hopefully be found in the renault-api project: [KAMEREON_APIKEY value](https://github.com/hacf-fr/renault-api/blob/main/src/renault_api/const.py) or in the openHAB forums.
-
## Example
renaultcar.sitemap:
-```
+```perl
sitemap renaultcar label="Renault Car" {
Frame {
Image item=RenaultCar_ImageURL

-If you want to limit the charge of the car battery to less than 100%, this can be done as follows.
-
- * Set up an active dummy charge schedule in the MyRenault App.
+If you want to limit the charge of the car battery to less than 100%, this can be done as follows.
- * Create a Dimmer item "RenaultCar_ChargeLimit" and set it to 80% for example.
+- Set up an active dummy charge schedule in the MyRenault App.
- * Add the ChargeRenaultCarLimit rule using the code below.
+- Create a Dimmer item "RenaultCar_ChargeLimit" and set it to 80% for example.
-The rule will change the RenaultCar_ChargingMode to schedule_mode when the limit is reached.
+- Add the ChargeRenaultCarLimit rule using the code below.
+
+The rule will change the RenaultCar_ChargingMode to schedule_mode when the limit is reached.
This stops charging after the battery level goes over the charge limit.
ChargeRenaultCarLimit Code
-```
+```javascript
configuration: {}
triggers:
- id: "1"
This binding is based on and includes the [Resol-VBUS-Java library](https://github.com/danielwippermann/resol-vbus-java), developed by Daniel Wippermann.
-
## Supported Things
### Bridge
### Device
-On top of the bridge things, which enable access to the VBUS, many - if not all - Resol Controllers and Modules like WMZ heat meters, HKM Heating circuit extensions etc. are supported including branded versions from different suppliers as thing type *device*.
+On top of the bridge things, which enable access to the VBUS, many - if not all - Resol Controllers and Modules like WMZ heat meters, HKM Heating circuit extensions etc. are supported including branded versions from different suppliers as thing type _device_.
The supported devices include
- * Solar controller DeltaSol® A/AX/AX HE
- * Solar controller DeltaSol® AL E HE
- * Solar controller DeltaSol® CS (Plus)
- * Solar controller DeltaSol® B
- * Solar controller DeltaSol® BS series
- * Solar controller DeltaSol® SLL
- * Solar controller DeltaSol® SL
- * Solar controller DeltaSol® BX series
- * System controller DeltaSol® SLT
- * System controller DeltaSol® MX
- * System controller DeltaSol® E
- * DeltaSol Fresh®
- * DeltaSol® Pool
- * DeltaSol® Minipool
- * DeltaSol® ES
- * Frista
- * DeltaTherm® HC
- * DeltaTherm® FK
- * Deltatherm® HT
- * DeltaTherm® DH
- * Sonnenkraft SKSC3
- * Sonnenkraft STRG BX PLUS
- * Sonnenkraft SKSC3+
- * Sonnenkraft SKSC3HE
- * Sonnenkraft SKSR 1/2/3
- * Vitosolic 200
- * COSMO Multi
- * Drainback DeDietrich
- * Diemasol C
+- Solar controller DeltaSol® A/AX/AX HE
+- Solar controller DeltaSol® AL E HE
+- Solar controller DeltaSol® CS (Plus)
+- Solar controller DeltaSol® B
+- Solar controller DeltaSol® BS series
+- Solar controller DeltaSol® SLL
+- Solar controller DeltaSol® SL
+- Solar controller DeltaSol® BX series
+- System controller DeltaSol® SLT
+- System controller DeltaSol® MX
+- System controller DeltaSol® E
+- DeltaSol Fresh®
+- DeltaSol® Pool
+- DeltaSol® Minipool
+- DeltaSol® ES
+- Frista
+- DeltaTherm® HC
+- DeltaTherm® FK
+- Deltatherm® HT
+- DeltaTherm® DH
+- Sonnenkraft SKSC3
+- Sonnenkraft STRG BX PLUS
+- Sonnenkraft SKSC3+
+- Sonnenkraft SKSC3HE
+- Sonnenkraft SKSR 1/2/3
+- Vitosolic 200
+- COSMO Multi
+- Drainback DeDietrich
+- Diemasol C
A more complete list can be found in the doc of the [resol-vbus-java library](https://danielwippermann.github.io/resol-vbus/vbus-packets.html).
### Emulated Extension Module EM
-Some controllers like the Deltasol MX can be connected to an extension module, which can be emulated by the thing type *emulatedEM*.
+Some controllers like the Deltasol MX can be connected to an extension module, which can be emulated by the thing type _emulatedEM_.
The emulated EM is a virtual device, visible on the VBUS to a Resol controller and provides an interface between openHAB and the controller.
Relay channels are outputs from the controller point of view and therefore read-only in OH.
The sensor channels as inputs for the solar or system controller and intended to be written by OH.
-
## Discovery
Discovery is tested for VBus-LAN adapters DL2, DL3 and KM2 devices, it should also work for other devices providing a live data port.
After a bridge is detected in the local network the password needs to be given and the things on the VBUS will popup in the inbox.
-
## Bridge Configuration
The bridge is the device connecting the Resol VBUS to the network, usually a VBus-LAN adapter or integrated in some of the solar controllers like DL3.
## Emulated EM Configuration
-*emulatedEM* devices cannot be auto-discovered and require beside the bridge the following configuration:
+_emulatedEM_ devices cannot be auto-discovered and require beside the bridge the following configuration:
| Parameter | Type | Required | Description |
|-----------|------|----------|-----------------------------------------------------------------------------------------------------------------|
| moduleID | int | yes | The module ID on the VBUS in range 0-15, but further restrictions might apply depending on the resol controller. |
-
## Device Channels
The channels of a thing are determined automatically based on the received VBUS data and are highly dependent on the used device.
| volume_month | Number:Volume | This months volume (of a HQM) |
| power | Number:Power | Current power (of a HQM) |
-
Channels are dynamically created dependent on the devices connected to the VBus.
So far only reading is supported.
The classical channels are for temperature sensors and the like, but also relay outputs with the output level (0-100%) are visible as numerical values with the corresponding unit.
String values are localized as far as possible, but only French, German and English are supported by the underlaying library which is based on the vbus-specification file from Resol.
-
## EmulatedEM Channels
The channels of an emulated EM modules are as for physical EMs 5 relay channels and 6 input channels.
The relays are virtual outputs and read-only in OH.
The sensors support different types like temperature input which are simulated by a PT1000 resistance value, a switch and the raw resistance value.
-Additionally the virtual input device for adjusting the heating circuits as a *BAS* is supported by two different channels for temperature and mode adjustment.
+Additionally the virtual input device for adjusting the heating circuits as a _BAS_ is supported by two different channels for temperature and mode adjustment.
The type of the sensor inputs must be configured in the Resol Controller accordingly.
From all possible sensor channels (temperatureX, switchX, etc.) only one shall be linked to an item at a time, except for BAS which emulates a RCP12 room control unit where both, BasTempAdjustmentX and BasModeX shall be written from OH.
| BasTempAdjustmentX | Number:Temperature | Writable temperature adjustment for the virtual room control module BAS on the for the virtual input for sensor 'x'. Use together with BasModeX, not effective if BasModeX is OFF or Party. |
| BasModeX | Number | Writable heating circuit mode for the virtual room control module BAS on the for the virtual input for sensor 'x'. Use together with BasTempAdjustmentX.|
-
-
## Full Example
For a DeltaSol MX system controller with on extension module EM you can use this example:
resol.things
-```
+```java
Bridge resol:vbuslan:VBUS "VBUSLAN" [ ipAddress="192.168.0.2", password="vbus", port=7053] {
Thing device DeltaSol_MX-Controller "DeltaSol MX [Controller]" []
Thing device DeltaSol_MX-Heating_circuit-1 "DeltaSol MX [Heating Circuit]" []
resol.items
-```
+```java
/*************************************************/
/* Solar system */
/*************************************************/
resol.sitemap
-```
+```perl
sitemap resol label="DeltaSol MX" {
Frame label="Solar" {
Text item=SolarTemperature valuecolor=[<0="white", <20="blue", <50="green", <80="orange", <120="red", >=120="black"]
# Revogi Binding
-This binding is written to control Revogi devices.
-The first thing implemented is the [Revogi Smart Power Strip](https://www.revogi.com/smart-power/smart-power-strip-eu/#section6).
-The device has 6 power plugs that can be switched independently, or all together.
+This binding is written to control Revogi devices.
+The first thing implemented is the [Revogi Smart Power Strip](https://www.revogi.com/smart-power/smart-power-strip-eu/#section6).
+The device has 6 power plugs that can be switched independently, or all together.
It also provides information like power consumption and electric current for each plug.
-It was hard to find out how to control it without internet access, but there's a way to use UDP packets.
+It was hard to find out how to control it without internet access, but there's a way to use UDP packets.
See the following [support document](https://github.com/andibraeu/revogismartstripcontrol/blob/master/doc/LAN%20UDP%20Control.pdf) for details. This was the only document the Revogi support provided.
## Supported Things
## Discovery
-If your smart strip is within your network (broadcast domain), discovery can work.
+If your smart strip is within your network (broadcast domain), discovery can work.
The discovery service will send udp packets to the broadcast address and waits for a feedback.
It is required to integrate your power strip into your network first, maybe with the official app.
## Thing Configuration
-You need to know the serial number. Usually you can find it on the back.
-The serial number will also be discovered.
-The IP address of the device is also necessary, this address should be set static.
-There's a fallback to broadcast status and switch requests.
-That may be unreliable if you have more than one smart plug in your network.
+You need to know the serial number. Usually you can find it on the back.
+The serial number will also be discovered.
+The IP address of the device is also necessary, this address should be set static.
+There's a fallback to broadcast status and switch requests.
+That may be unreliable if you have more than one smart plug in your network.
They all react on UDP packets.
## Channels
Example Thing configuration:
-```
+```java
Thing revogi:smartstrip:<serialNumber> "<Name>" @ "<Location>" [serialNumber="<serialNumnber>", ipAddress=<ipaddress>, pollIntervall=45]
```
Example Items configuration:
-```
+```java
Group revogi (LivingRoom)
Group plug1 (revogi)
RFXCOM transceivers support RF 433 Mhz protocols like:
-* HomeEasy
-* Cresta
-* X10
-* La Crosse
-* OWL
-* CoCo (KlikAanKlikUit),
-* PT2262
-* Oregon
-* etc.
+- HomeEasy
+- Cresta
+- X10
+- La Crosse
+- OWL
+- CoCo (KlikAanKlikUit),
+- PT2262
+- Oregon
+- etc.
See the RFXtrx User Guide from [RFXCOM](http://www.rfxcom.com) for the complete list of supported sensors and devices as well as firmware update announcements.
FTDI driver disabling can be done by the following command
-```
+```shell
sudo kextunload -b com.apple.driver.AppleUSBFTDI
```
FTDI driver can be enabled by the following command
-```
+```shell
sudo kextload -b com.apple.driver.AppleUSBFTDI
```
If you configure the RFXCOM manually note that the serial port that is assigned to it may change if you have more than one USB serial device.
On systems using udev (practically all modern Linux systems) you can add a rule to /etc/udev/rules.d/ such as:
-```
+```shell
SUBSYSTEM=="tty", ATTRS{product}=="RFXtrx433", ATTRS{serial}=="A12LPLW", SYMLINK+="rfxtrx0"
```
Alternatively you can add the RFXCOM using a thing file such as:
-```
+```java
Bridge rfxcom:bridge:usb0 [ serialPort="/dev/<device>" ] {
_thing definitions_...
}
You can also use an RFXCOM device over TCP/IP.
To start a TCP server for an RFXCOM device, you can use socat:
-```
+```shell
socat tcp-listen:10001,fork,reuseaddr file:/dev/ttyUSB0,raw
```
A TCP bridge, for use with socat on a remote host, can be configured manually, or by adding an "RFXCOM USB Transceiver over TCP/IP" device or in a thing file like this:
-```
+```java
Bridge rfxcom:tcpbridge:sunflower [ host="sunflower", port=10001 ] {
Thing lighting2 100001_1 [deviceId="100001.1", subType="AC"]
}
## Bridge Configuration
-| Applies to | Parameter Label | Parameter ID | Description | Required | Default |
-|-----------------------------------|---------------------------------|------------------------|--------------------------------------------------------------------------|----------|---------|
-| all | Transceiver type | transceiverType | Type of the transceiver | false | |
-| all | Disable discovery | disableDiscovery | Prevent unknown devices from being added to the inbox | true | false |
-| all | Skip transceiver configuration | ignoreConfig | Do not send config. command, other config will be ignored | true | true |
-| all | RFXCOM transceiver mode | setMode | Config. command as hexadec. (28 chars). If set, other config is ignored. | false | |
-| all | Transmit Power | transmitPower | Transmit power in dBm, between -18dBm and +10dBm. | false | -18 |
-| all except RFXtrx315 | Enable AEBlyss | enableAEBlyss | Enable receiving of protocol AEBlyss | false | |
-| all except RFXtrx315 | Enable AC | enableAC | Enable receiving of protocol AC | false | |
-| all except RFXtrx315 | Enable AD / LightwaveRF | enableADLightwaveRF | Enable receiving of protocol AD / LightwaveRF | false | |
-| all except RFXtrx315 | Enable ARC | enableARC | Enable receiving of protocol ARC | false | |
-| all except RFXtrx315 | Enable ATI | enableATI | Enable receiving of protocol ATI / cartelectronic | false | |
-| all except RFXtrx315 | Enable Blinds T0 | enableBlindsT0 | Enable receiving of protocol Blinds T0 | false | |
-| all except RFXtrx315 | Enable Blinds T1 | enableBlindsT1T2T3T4 | Enable receiving of protocol Blinds T1 | false | |
-| all except RFXtrx315 | Enable Byron SX | enableByronSX | Enable receiving of protocol Byron SX | false | |
-| all except RFXtrx315 | Enable FineOffset / Viking | enableFineOffsetViking | Enable receiving of protocol FineOffset / Viking | false | |
-| all except RFXtrx315 | Enable FS20/Legrand CAD | enableFS20 | Enable receiving of protocol FS20/Legrand CAD | false | |
-| all except RFXtrx315 | Enable Hideki / UPM | enableHidekiUPM | Enable receiving of protocol Hideki / UPM | false | |
-| all except RFXtrx315 | Enable HomeConfort | enableHomeConfort | Enable receiving of protocol HomeConfort | false | |
-| all except RFXtrx315 | Enable HomeEasy EU | enableHomeEasyEU | Enable receiving of protocol HomeEasy EU | false | |
-| all except RFXtrx315 | Enable Imagintronix / Opus | enableImagintronixOpus | Enable receiving of protocol Imagintronix / Opus | false | |
-| all except RFXtrx315 | Enable KEELOQ | enableKEELOQ | Enable receiving of protocol KEELOQ | false | |
-| all except RFXtrx315 | Enable La Crosse | enableLaCrosse | Enable receiving of protocol La Crosse | false | |
-| all except RFXtrx315 | Enable Lighting4 | enableLighting4 | Enable receiving of protocol Lighting4 | false | |
-| all except RFXtrx315 | Enable Meiantech | enableMeiantech | Enable receiving of protocol Meiantech | false | |
-| all except RFXtrx315 | Enable Mertik | enableMertik | Enable receiving of protocol Mertik | false | |
-| all except RFXtrx315 | Enable Oregon Scientific | enableOregonScientific | Enable receiving of protocol Oregon Scientific | false | |
-| all except RFXtrx315 | Enable ProGuard | enableProGuard | Enable receiving of protocol ProGuard | false | |
-| all except RFXtrx315 | Enable RSL | enableRSL | Enable receiving of protocol RSL | false | |
-| all except RFXtrx315 | Enable Rubicson | enableRubicson | Enable receiving of protocol Rubicson / Lacrosse / Banggood | false | |
-| all | Enable Visonic | enableVisonic | Enable receiving of protocol Visonic | false | |
-| all | Enable Undecoded | enableUndecoded | Enable receiving of protocol Undecoded | false | |
-| all | Enable X10 | enableX10 | Enable receiving of protocol X10 | false | |
-| bridge | Serial port | serialPort | Serial port for manual configuration | true | |
-| RFXtrx315 / RFXrec433 / RFXtrx433 | Serial number | bridgeId | Serial number of the RFXCOM (FTDI) device | true | |
-| tcpbridge | Host | host | Hostname / ip address of device | true | |
-| tcpbridge | Port | port | Port of device | true | |
+| Applies to | Parameter Label | Parameter ID | Description | Required | Default |
+| --------------------------------- | ------------------------------ | ---------------------- | ------------------------------------------------------------------------ | -------- | ------- |
+| all | Transceiver type | transceiverType | Type of the transceiver | false | |
+| all | Disable discovery | disableDiscovery | Prevent unknown devices from being added to the inbox | true | false |
+| all | Skip transceiver configuration | ignoreConfig | Do not send config. command, other config will be ignored | true | true |
+| all | RFXCOM transceiver mode | setMode | Config. command as hexadec. (28 chars). If set, other config is ignored. | false | |
+| all | Transmit Power | transmitPower | Transmit power in dBm, between -18dBm and +10dBm. | false | -18 |
+| all except RFXtrx315 | Enable AEBlyss | enableAEBlyss | Enable receiving of protocol AEBlyss | false | |
+| all except RFXtrx315 | Enable AC | enableAC | Enable receiving of protocol AC | false | |
+| all except RFXtrx315 | Enable AD / LightwaveRF | enableADLightwaveRF | Enable receiving of protocol AD / LightwaveRF | false | |
+| all except RFXtrx315 | Enable ARC | enableARC | Enable receiving of protocol ARC | false | |
+| all except RFXtrx315 | Enable ATI | enableATI | Enable receiving of protocol ATI / cartelectronic | false | |
+| all except RFXtrx315 | Enable Blinds T0 | enableBlindsT0 | Enable receiving of protocol Blinds T0 | false | |
+| all except RFXtrx315 | Enable Blinds T1 | enableBlindsT1T2T3T4 | Enable receiving of protocol Blinds T1 | false | |
+| all except RFXtrx315 | Enable Byron SX | enableByronSX | Enable receiving of protocol Byron SX | false | |
+| all except RFXtrx315 | Enable FineOffset / Viking | enableFineOffsetViking | Enable receiving of protocol FineOffset / Viking | false | |
+| all except RFXtrx315 | Enable FS20/Legrand CAD | enableFS20 | Enable receiving of protocol FS20/Legrand CAD | false | |
+| all except RFXtrx315 | Enable Hideki / UPM | enableHidekiUPM | Enable receiving of protocol Hideki / UPM | false | |
+| all except RFXtrx315 | Enable HomeConfort | enableHomeConfort | Enable receiving of protocol HomeConfort | false | |
+| all except RFXtrx315 | Enable HomeEasy EU | enableHomeEasyEU | Enable receiving of protocol HomeEasy EU | false | |
+| all except RFXtrx315 | Enable Imagintronix / Opus | enableImagintronixOpus | Enable receiving of protocol Imagintronix / Opus | false | |
+| all except RFXtrx315 | Enable KEELOQ | enableKEELOQ | Enable receiving of protocol KEELOQ | false | |
+| all except RFXtrx315 | Enable La Crosse | enableLaCrosse | Enable receiving of protocol La Crosse | false | |
+| all except RFXtrx315 | Enable Lighting4 | enableLighting4 | Enable receiving of protocol Lighting4 | false | |
+| all except RFXtrx315 | Enable Meiantech | enableMeiantech | Enable receiving of protocol Meiantech | false | |
+| all except RFXtrx315 | Enable Mertik | enableMertik | Enable receiving of protocol Mertik | false | |
+| all except RFXtrx315 | Enable Oregon Scientific | enableOregonScientific | Enable receiving of protocol Oregon Scientific | false | |
+| all except RFXtrx315 | Enable ProGuard | enableProGuard | Enable receiving of protocol ProGuard | false | |
+| all except RFXtrx315 | Enable RSL | enableRSL | Enable receiving of protocol RSL | false | |
+| all except RFXtrx315 | Enable Rubicson | enableRubicson | Enable receiving of protocol Rubicson / Lacrosse / Banggood | false | |
+| all | Enable Visonic | enableVisonic | Enable receiving of protocol Visonic | false | |
+| all | Enable Undecoded | enableUndecoded | Enable receiving of protocol Undecoded | false | |
+| all | Enable X10 | enableX10 | Enable receiving of protocol X10 | false | |
+| bridge | Serial port | serialPort | Serial port for manual configuration | true | |
+| RFXtrx315 / RFXrec433 / RFXtrx433 | Serial number | bridgeId | Serial number of the RFXCOM (FTDI) device | true | |
+| tcpbridge | Host | host | Hostname / ip address of device | true | |
+| tcpbridge | Port | port | Port of device | true | |
## Thing Configuration
-Configuration parameters are listed alongside each thing type. Most devices only require a deviceId and
-a subType, but some things require additional configuration. The deviceId is used both when receiving and
-transmitting messages, the subType is mainly used when sending messages, but it can vary between device
-types.
+Configuration parameters are listed alongside each thing type.
+Most devices only require a deviceId and a subType, but some things require additional configuration.
+The deviceId is used both when receiving and transmitting messages, the subType is mainly used when sending messages, but it can vary between device types.
## Channels
This binding currently supports following channel types:
| Channel Type ID | Item Type | Description |
-|-----------------|---------------|------------------------------------------------------------------------------------|
+| --------------- | ------------- | ---------------------------------------------------------------------------------- |
| chimesound | Number | Id of the chime sound |
| command | Switch | Command channel. |
| commandId | Number | Id of the command (between 0 and 255). |
| winddirection | Number | Wind direction in degrees. |
| windspeed | Number | Wind speed in meters per second. |
-
The binding uses the following system channels:
| Channel Type ID | Item Type | Description |
-|------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| system.signal-strength | Number | Represents signal strength of a device as a Number with values 0, 1, 2, 3 or 4; 0 being worst strength and 4 being best strength. |
| system.battery-level | Number | Represents the battery level as a percentage (0-100%). Bindings for things supporting battery level in a different format (eg 4 levels) should convert to a percentage to provide a consistent battery level reading. |
| system.low-battery | Switch | Represents a low battery warning with possible values on/off. |
## Full Example
-*.thing
-```
+### *.thing
+
+```java
Bridge rfxcom:bridge:usb0 [ serialPort="/dev/<device>" ] {
Thing lighting2 100001_1 [ deviceId="100001.1", subType="AC" ]
}
```
-*.items
-```
+### *.items
+
+```java
Switch Switch {channel="rfxcom:lighting2:usb0:100001_1:command"}
```
This binding currently supports the following things / message types:
-* [bbqtemperature - RFXCOM BBQ Temperature Sensor](#bbqtemperature---rfxcom-bbq-temperature-sensor)
-* [blinds1 - RFXCOM Blinds1 Actuator](#blinds1---rfxcom-blinds1-actuator)
-* [chime - RFXCOM Chime](#chime---rfxcom-chime)
-* [currentenergy - RFXCOM CurrentEnergy Actuator](#currentenergy---rfxcom-currentenergy-actuator)
-* [curtain1 - RFXCOM Curtain1 Actuator](#curtain1---rfxcom-curtain1-actuator)
-* [datetime - RFXCOM Date/time sensor](#datetime---rfxcom-datetime-sensor)
-* [energy - RFXCOM Energy Sensor](#energy---rfxcom-energy-sensor)
-* [fan - RFXCOM Fan Actuator](#fan---rfxcom-fan-actuator)
-* [humidity - RFXCOM Humidity Sensor](#humidity---rfxcom-humidity-sensor)
-* [lighting1 - RFXCOM Lighting1 Actuator](#lighting1---rfxcom-lighting1-actuator)
-* [lighting2 - RFXCOM Lighting2 Actuator](#lighting2---rfxcom-lighting2-actuator)
-* [lighting4 - RFXCOM Lighting4 Actuator](#lighting4---rfxcom-lighting4-actuator)
-* [lighting5 - RFXCOM Lighting5 Actuator](#lighting5---rfxcom-lighting5-actuator)
-* [lighting6 - RFXCOM Lighting6 Actuator](#lighting6---rfxcom-lighting6-actuator)
-* [rain - RFXCOM Rain Sensor](#rain---rfxcom-rain-sensor)
-* [raw - RFXCOM Raw Messages](#raw---rfxcom-raw-messages)
-* [rfxsensor - RFXCOM rfxsensor](#rfxsensor)
-* [rfy - RFXCOM Rfy Actuator](#rfy---rfxcom-rfy-actuator)
-* [security1 - RFXCOM Security1 Sensor](#security1---rfxcom-security1-sensor)
-* [temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor](#temperaturehumiditybarometric---rfxcom-temperature-humidity-barometric-sensor)
-* [temperaturehumidity - RFXCOM Temperature-Humidity Sensor](#temperaturehumidity---rfxcom-temperature-humidity-sensor)
-* [temperaturerain - RFXCOM Temperature-Rain Sensor](#temperaturerain---rfxcom-temperature-rain-sensor)
-* [temperature - RFXCOM Temperature Sensor](#temperature---rfxcom-temperature-sensor)
-* [thermostat1 - RFXCOM Thermostat1 Sensor](#thermostat1---rfxcom-thermostat1-sensor)
-* [thermostat3 - RFXCOM Thermostat3 Sensor](#thermostat3---rfxcom-thermostat3-sensor)
-* [undecoded - RFXCOM Undecoded RF Messages](#undecoded---rfxcom-undecoded-rf-messages)
-* [uv - RFXCOM UV/Temperature Sensor](#uv---rfxcom-uvtemperature-sensor)
-* [wind - RFXCOM Wind Sensor](#wind---rfxcom-wind-sensor)
+- [bbqtemperature - RFXCOM BBQ Temperature Sensor](#bbqtemperature---rfxcom-bbq-temperature-sensor)
+- [blinds1 - RFXCOM Blinds1 Actuator](#blinds1---rfxcom-blinds1-actuator)
+- [chime - RFXCOM Chime](#chime---rfxcom-chime)
+- [currentenergy - RFXCOM CurrentEnergy Actuator](#currentenergy---rfxcom-currentenergy-actuator)
+- [curtain1 - RFXCOM Curtain1 Actuator](#curtain1---rfxcom-curtain1-actuator)
+- [datetime - RFXCOM Date/time sensor](#datetime---rfxcom-datetime-sensor)
+- [energy - RFXCOM Energy Sensor](#energy---rfxcom-energy-sensor)
+- [fan - RFXCOM Fan Actuator](#fan---rfxcom-fan-actuator)
+- [humidity - RFXCOM Humidity Sensor](#humidity---rfxcom-humidity-sensor)
+- [lighting1 - RFXCOM Lighting1 Actuator](#lighting1---rfxcom-lighting1-actuator)
+- [lighting2 - RFXCOM Lighting2 Actuator](#lighting2---rfxcom-lighting2-actuator)
+- [lighting4 - RFXCOM Lighting4 Actuator](#lighting4---rfxcom-lighting4-actuator)
+- [lighting5 - RFXCOM Lighting5 Actuator](#lighting5---rfxcom-lighting5-actuator)
+- [lighting6 - RFXCOM Lighting6 Actuator](#lighting6---rfxcom-lighting6-actuator)
+- [rain - RFXCOM Rain Sensor](#rain---rfxcom-rain-sensor)
+- [raw - RFXCOM Raw Messages](#raw---rfxcom-raw-messages)
+- [rfxsensor - RFXCOM rfxsensor](#rfxsensor---rfxcom-rfxsensor)
+- [rfy - RFXCOM Rfy Actuator](#rfy---rfxcom-rfy-actuator)
+- [security1 - RFXCOM Security1 Sensor](#security1---rfxcom-security1-sensor)
+- [temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor](#temperaturehumiditybarometric---rfxcom-temperature-humidity-barometric-sensor)
+- [temperaturehumidity - RFXCOM Temperature-Humidity Sensor](#temperaturehumidity---rfxcom-temperature-humidity-sensor)
+- [temperaturerain - RFXCOM Temperature-Rain Sensor](#temperaturerain---rfxcom-temperature-rain-sensor)
+- [temperature - RFXCOM Temperature Sensor](#temperature---rfxcom-temperature-sensor)
+- [thermostat1 - RFXCOM Thermostat1 Sensor](#thermostat1---rfxcom-thermostat1-sensor)
+- [thermostat3 - RFXCOM Thermostat3 Sensor](#thermostat3---rfxcom-thermostat3-sensor)
+- [undecoded - RFXCOM Undecoded RF Messages](#undecoded---rfxcom-undecoded-rf-messages)
+- [uv - RFXCOM UV/Temperature Sensor](#uv---rfxcom-uvtemperature-sensor)
+- [wind - RFXCOM Wind Sensor](#wind---rfxcom-wind-sensor)
### bbqtemperature - RFXCOM BBQ Temperature Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-----------------|-------------------------------------|-----------|----------|
-| foodTemperature | [temperature](#channels) | Number | |
-| bbqTemperature | [temperature](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| --------------- | ----------------------------------- | --------- | ------- |
+| foodTemperature | [temperature](#channels) | Number | |
+| bbqTemperature | [temperature](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
### blinds1 - RFXCOM Blinds1 Actuator
#### Channels
| name | Channel Type | Item type | Remarks |
-|--------------|-------------------------------------|---------------|---------|
+| ------------ | ----------------------------------- | ------------- | ------- |
| command | [command](#channels) | Switch | |
| shutter | [shutter](#channels) | Rollershutter | |
| signalLevel | [system.signal-strength](#channels) | Number | |
| batteryLevel | [system.battery-level](#channels) | Number | |
| lowBattery | [system.low-battery](#channels) | Switch | |
-
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id + unit code, separated by dot. Example 23455.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * T0 - RollerTrol, Hasta new
- * T1 - Hasta old
- * T2 - A-OK RF01
- * T3 - A-OK AC114/AC123
- * T4 - Raex YR1326
- * T5 - Media Mount (warning - directions reversed)
- * T6 - DC106/Rohrmotor24-RMF/Yooda/Dooya/ESMO/Brel/Quitidom
- * T7 - Forest
- * T8 - Chamberlain CS4330CN
- * T9 - Sunpery/BTX
- * T10 - Dolat DLM-1, Topstar
- * T11 - ASP
- * T12 - Confexx CNF24-2435
- * T13 - Screenline
- * T14 - Hualite
- * T15 - Motostar
- * T16 - Zemismart
- * T17 - Gaposa
- * T18 - Cherubini
- * T19 - Louvolite One Touch Vogue motor
- * T20 - OZRoll
+- deviceId - Device Id
+ - Sensor Id + unit code, separated by dot. Example 23455.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - T0 - RollerTrol, Hasta new
+ - T1 - Hasta old
+ - T2 - A-OK RF01
+ - T3 - A-OK AC114/AC123
+ - T4 - Raex YR1326
+ - T5 - Media Mount (warning - directions reversed)
+ - T6 - DC106/Rohrmotor24-RMF/Yooda/Dooya/ESMO/Brel/Quitidom
+ - T7 - Forest
+ - T8 - Chamberlain CS4330CN
+ - T9 - Sunpery/BTX
+ - T10 - Dolat DLM-1, Topstar
+ - T11 - ASP
+ - T12 - Confexx CNF24-2435
+ - T13 - Screenline
+ - T14 - Hualite
+ - T15 - Motostar
+ - T16 - Zemismart
+ - T17 - Gaposa
+ - T18 - Cherubini
+ - T19 - Louvolite One Touch Vogue motor
+ - T20 - OZRoll
### chime - RFXCOM Chime
#### Channels
| Name | Channel Type | Item Type | Remarks |
-|-------------|-------------------------------------|-----------|-----------------------------------------|
+| ----------- | ----------------------------------- | --------- | --------------------------------------- |
| chimeSound | [chimesound](#channels) | Number | not all devices support multiple sounds |
| signalLevel | [system.signal-strength](#channels) | Number | |
-
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 2983
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * BYRONSX - Byron SX
- * BYRONMP001 - Byron MP001
- * SELECTPLUS - SelectPlus
- * SELECTPLUS3 - SelectPlus3
- * ENVIVO - Envivo
- * ALFAWISE_DBELL - Alfawise, dBell
-
+- deviceId - Device Id
+ - Sensor Id. Example 2983
+- subType - Sub Type
+ - Specifies device sub type.
+ - BYRONSX - Byron SX
+ - BYRONMP001 - Byron MP001
+ - SELECTPLUS - SelectPlus
+ - SELECTPLUS3 - SelectPlus3
+ - ENVIVO - Envivo
+ - ALFAWISE_DBELL - Alfawise, dBell
### current - RFXCOM Current Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|------------------|
-| channel1Amps | [instantamp](#channels) | Number | |
-| channel2Amps | [instantamp](#channels) | Number | |
-| channel3Amps | [instantamp](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| channel1Amps | [instantamp](#channels) | Number | |
+| channel2Amps | [instantamp](#channels) | Number | |
+| channel3Amps | [instantamp](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
- * deviceId - Device Id
- * Sensor Id. Example 5693
-
- * subType - Sub Type
- * Specifies device sub type.
-
- * ELEC1 - OWL - CM113
+- deviceId - Device Id
+ - Sensor Id. Example 5693
+- subType - Sub Type
+ - Specifies device sub type.
+ - ELEC1 - OWL - CM113
### currentenergy - RFXCOM CurrentEnergy Actuator
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|------------------|
-| channel1Amps | [instantamp](#channels) | Number | |
-| channel2Amps | [instantamp](#channels) | Number | |
-| channel3Amps | [instantamp](#channels) | Number | |
-| totalUsage | [totalusage](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| channel1Amps | [instantamp](#channels) | Number | |
+| channel2Amps | [instantamp](#channels) | Number | |
+| channel3Amps | [instantamp](#channels) | Number | |
+| totalUsage | [totalusage](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 47104
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * ELEC4 - OWL - CM180i
-
+- deviceId - Device Id
+ - Sensor Id. Example 47104
+- subType - Sub Type
+ - Specifies device sub type.
+ - ELEC4 - OWL - CM180i
### curtain1 - RFXCOM Curtain1 Actuator
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|---------------|------------------|
-| command | [command](#channels) | Switch | |
-| shutter | [shutter](#channels) | Rollershutter | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | ------------- | ------- |
+| command | [command](#channels) | Switch | |
+| shutter | [shutter](#channels) | Rollershutter | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * House code + unit code, separated by dot. Example A.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * HARRISON - Harrison Curtain
-
+- deviceId - Device Id
+ - House code + unit code, separated by dot. Example A.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - HARRISON - Harrison Curtain
### datetime - RFXCOM Date/time sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|------------------|
-| dateTime | [datetime](#channels) | DateTime | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| dateTime | [datetime](#channels) | DateTime | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * RTGR328N - Oregon RTGR328N
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - RTGR328N - Oregon RTGR328N
### fan - RFXCOM Fan Actuator
A Fan device
-
##### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|------------------------------|
-| command | [command](#channels) | Switch | |
-| fanSpeed | [fanspeedstring](#channels) | String | Options: HI, MED, LOW, OFF |
-| fanLight | [fanlight](#channels) | Switch | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ----------- | ----------------------------------- | --------- | -------------------------- |
+| command | [command](#channels) | Switch | |
+| fanSpeed | [fanspeedstring](#channels) | String | Options: HI, MED, LOW, OFF |
+| fanLight | [fanlight](#channels) | Switch | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
##### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-* subType - Sub Type
- * Specifies device sub type.
- * LUCCI_AIR_FAN - Lucci Air fan
- * CASAFAN - Casafan
- * WESTINGHOUSE_7226640 - Westinghouse 7226640
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - LUCCI_AIR_FAN - Lucci Air fan
+ - CASAFAN - Casafan
+ - WESTINGHOUSE_7226640 - Westinghouse 7226640
##### Example
##### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|------------------------------|
-| command | [command](#channels) | Switch | |
-| fanSpeed | [fanspeed](#channels) | Number | Options: 1,2,3,4,5,6 |
-| fanLight | [fanlight](#channels) | Switch | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ----------- | ----------------------------------- | --------- | -------------------- |
+| command | [command](#channels) | Switch | |
+| fanSpeed | [fanspeed](#channels) | Number | Options: 1,2,3,4,5,6 |
+| fanLight | [fanlight](#channels) | Switch | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
##### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-* subType - Sub Type
- * Specifies device sub type.
- * FALMEC - Falmec
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - FALMEC - Falmec
#### fan_lucci_dc - Lucci Air DC fan
##### Channels
| Name | Channel Type | Item Type | Remarks |
-|-----------------|-------------------------------------|---------------|--------------------------------------------------------------|
+| --------------- | ----------------------------------- | ------------- | ------------------------------------------------------------ |
| commandString | [commandString](#channels) | String | Options: POWER, UP, DOWN, LIGHT, REVERSE, NATURAL_FLOW, PAIR |
| fanSpeedControl | [fanspeedcontrol](#channels) | RollerShutter | Options: UP / DOWN |
| fanSpeed | [fanspeed](#channels) | Number | Options: 1,2,3,4,5,6 |
##### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-* subType - Sub Type
- * Specifies device sub type.
- * LUCCI_AIR_DC - Lucci Air DC
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - LUCCI_AIR_DC - Lucci Air DC
#### fan_lucci_dc_ii - Lucci Air DC II fan
##### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|--------------------------------------|
-| command | [command](#channels) | Switch | |
-| commandString| [commandString](#channels) | String | Options: POWER_OFF, LIGHT, REVERSE |
-| fanSpeed | [fanspeed](#channels) | Number | Options: 1,2,3,4,5,6 |
-| fanLight | [fanlight](#channels) | Switch | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------- | ----------------------------------- | --------- | ---------------------------------- |
+| command | [command](#channels) | Switch | |
+| commandString | [commandString](#channels) | String | Options: POWER_OFF, LIGHT, REVERSE |
+| fanSpeed | [fanspeed](#channels) | Number | Options: 1,2,3,4,5,6 |
+| fanLight | [fanlight](#channels) | Switch | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
##### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-* subType - Sub Type
- * Specifies device sub type.
- * LUCCI_AIR_DC_II - Lucci Air DC II
-
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - LUCCI_AIR_DC_II - Lucci Air DC II
+
#### fan_novy - Novy extractor fan
A Novy extractor fan.
##### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-----------------|-------------------------------------|---------------|--------------------------|
-| command | [command](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| --------------- | ----------------------------------- | ------------- | ---------------------------------------------------- |
+| command | [command](#channels) | Switch | |
| commandString | [commandString](#channels) | String | Options: POWER, UP, DOWN, LIGHT, LEARN, RESET_FILTER |
-| fanSpeedControl | [fanspeedcontrol](#channels) | RollerShutter | Options: UP / DOWN |
-| fanLight | [fanlight](#channels) | Switch | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| fanSpeedControl | [fanspeedcontrol](#channels) | RollerShutter | Options: UP / DOWN |
+| fanLight | [fanlight](#channels) | Switch | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
##### Configuration Options
-* deviceId - Device Id
- * Device id, example 47360
-* subType - Sub Type
- * Specifies device sub type.
- * NOVY - Novy extractor fan
+- deviceId - Device Id
+ - Device id, example 47360
+- subType - Sub Type
+ - Specifies device sub type.
+ - NOVY - Novy extractor fan
### energy - RFXCOM Energy Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|-----------|
-| instantPower | [instantpower](#channels) | Number | |
-| totalUsage | [totalusage](#channels) | Number | |
-| instantAmp | [instantamp](#channels) | Number | |
-| totalAmpHour | [totalamphour](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| instantPower | [instantpower](#channels) | Number | |
+| totalUsage | [totalusage](#channels) | Number | |
+| instantAmp | [instantamp](#channels) | Number | |
+| totalAmpHour | [totalamphour](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 5693
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * ELEC2 - CM119/160
- * ELEC3 - CM180
-
+- deviceId - Device Id
+ - Sensor Id. Example 5693
+- subType - Sub Type
+ - Specifies device sub type.
+ - ELEC2 - CM119/160
+ - ELEC3 - CM180
### humidity - RFXCOM Humidity Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|----------------|-------------------------------------|-----------|----------|
-| humidity | [humidity](#channels) | Number | |
-| humidityStatus | [humiditystatus](#channels) | String | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| -------------- | ----------------------------------- | --------- | ------- |
+| humidity | [humidity](#channels) | Number | |
+| humidityStatus | [humiditystatus](#channels) | String | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 5693
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * HUM1 - LaCrosse TX3
- * HUM2 - LaCrosse WS2300
- * HUM3 - Inovalley S80 plant humidity sensor
-
+- deviceId - Device Id
+ - Sensor Id. Example 5693
+- subType - Sub Type
+ - Specifies device sub type.
+ - HUM1 - LaCrosse TX3
+ - HUM2 - LaCrosse WS2300
+ - HUM3 - Inovalley S80 plant humidity sensor
### lighting1 - RFXCOM Lighting1 Actuator
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------------|-------------------------------------|-----------|----------|
-| command | [command](#channels) | Switch | |
-| commandString\*\* | [commandString](#channels) | String | |
-| contact | [contact](#channels) | Contact | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ----------------- | ----------------------------------- | --------- | ------- |
+| command | [command](#channels) | Switch | |
+| commandString\*\* | [commandString](#channels) | String | |
+| contact | [contact](#channels) | Contact | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
\*\* `commandString` supports:
-* OFF
-* ON
-* DIM
-* BRIGHT
-* GROUP_OFF
-* GROUP_ON
-* CHIME
+- OFF
+- ON
+- DIM
+- BRIGHT
+- GROUP_OFF
+- GROUP_ON
+- CHIME
#### Configuration Options
-* deviceId - Device Id
- * Device Id. House code + unit code, separated by dot. Example A.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * X10 - X10 lighting
- * ARC - ARC
- * AB400D - ELRO AB400D (Flamingo)
- * WAVEMAN - Waveman
- * EMW200 - Chacon EMW200
- * IMPULS - IMPULS
- * RISINGSUN - RisingSun
- * PHILIPS - Philips SBC
- * ENERGENIE - Energenie ENER010
- * ENERGENIE\_5 - Energenie 5-gang
- * COCO - COCO GDR2-2000R
- * HQ\_COCO20 - HQ COCO-20
- * OASE_INSCENIO_FM_N - Oase Inscenio FM Master
-
+- deviceId - Device Id
+ - Device Id. House code + unit code, separated by dot. Example A.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - X10 - X10 lighting
+ - ARC - ARC
+ - AB400D - ELRO AB400D (Flamingo)
+ - WAVEMAN - Waveman
+ - EMW200 - Chacon EMW200
+ - IMPULS - IMPULS
+ - RISINGSUN - RisingSun
+ - PHILIPS - Philips SBC
+ - ENERGENIE - Energenie ENER010
+ - ENERGENIE\_5 - Energenie 5-gang
+ - COCO - COCO GDR2-2000R
+ - HQ\_COCO20 - HQ COCO-20
+ - OASE_INSCENIO_FM_N - Oase Inscenio FM Master
### lighting2 - RFXCOM Lighting2 Actuator
#### Channels
| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|---------|
+| ------------ | ----------------------------------- | --------- | ------- |
| command | [command](#channels) | Switch | |
| contact | [command](#channels) | Contact | |
| dimmingLevel | [dimminglevel](#channels) | Dimmer | |
#### Configuration Options
-* deviceId - Device Id
- * Remote/switch/unit Id + unit code, separated by dot. Example 8773718.10
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * AC - AC
- * HOME\_EASY\_EU - HomeEasy EU
- * ANSLUT - ANSLUT
- * KAMBROOK - Kambrook RF3672
-
+- deviceId - Device Id
+ - Remote/switch/unit Id + unit code, separated by dot. Example 8773718.10
+- subType - Sub Type
+ - Specifies device sub type.
+ - AC - AC
+ - HOME\_EASY\_EU - HomeEasy EU
+ - ANSLUT - ANSLUT
+ - KAMBROOK - Kambrook RF3672
### lighting4 - RFXCOM Lighting4 Actuator
-A Lighting4 device. The specification for the PT2262 protocol includes 3 bytes for data. By
-convention, the first 20 bits of this is used for deviceId, and the last 4 bits is used for
-command, which gives us a total of 16 commands per device.
+A Lighting4 device.
+The specification for the PT2262 protocol includes 3 bytes for data.
+By convention, the first 20 bits of this is used for deviceId, and the last 4 bits is used for command, which gives us a total of 16 commands per device.
-Depending on your device, you may have only one command, one pair of commands (on/off), or
-any other multiple, for example, a set of 4 sockets with an on/off pair for each and an
-additional pair for "all".
+Depending on your device, you may have only one command, one pair of commands (on/off), or any other multiple, for example, a set of 4 sockets with an on/off pair for each and an additional pair for "all".
-Different device manufactures using this protocol will use different schemes for their
-commands, so to configure a thing using the lighting4 protocol, you must specify at least
-one commandId in the thing configuration. If a device has multiple sets of commands, you
-can configure multiple things with the same device id, but different commandIds.
+Different device manufactures using this protocol will use different schemes for their commands, so to configure a thing using the lighting4 protocol, you must specify at least one commandId in the thing configuration.
+If a device has multiple sets of commands, you can configure multiple things with the same device id, but different commandIds.
-Some devices will expect a specific pulse length. If required, that can also be specified
-as a thing configuration parameter.
+Some devices will expect a specific pulse length.
+If required, that can also be specified as a thing configuration parameter.
-Previously, openHAB would attempt to guess at the meaning of a commandId if it was not
-specified in the thing configuration based on devices seen in the wild. Due to the varying
-nature of devices, this behaviour is deprecated and will be removed in a future openHAB
-version. Until then, commands 1, 3, 5-13 and 15 are considered ON and 0, 2, 4 and 14 are
-considered OFF when the `onCommandId` or `offCommandId` for a device is not specified.
+Previously, openHAB would attempt to guess at the meaning of a commandId if it was not specified in the thing configuration based on devices seen in the wild.
+Due to the varying nature of devices, this behaviour is deprecated and will be removed in a future openHAB version.
+Until then, commands 1, 3, 5-13 and 15 are considered ON and 0, 2, 4 and 14 are considered OFF when the `onCommandId` or `offCommandId` for a device is not specified.
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------|-------------------------------------|-----------|----------|
-| command | [command](#channels) | Switch | |
-| commandId | [commandId](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ----------- | ----------------------------------- | --------- | ------- |
+| command | [command](#channels) | Switch | |
+| commandId | [commandId](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
#### Configuration Options
-* deviceId - Device Id
- * Device Id. Example 3456
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * PT2262 - PT2262
-
-* pulse - Pulse length
- * Pulse length of the device
-
-* onCommandId - On command
- * Specifies command that represents ON for this device.
-
-* offCommandId - Off command
- * Specifies command that represents OFF for this device.
-
-* openCommandId - Open command
- * Specifies command that represents OPEN for this device.
-
-* closedCommandId - Closed command
- * Specifies command that represents CLOSED for this device.
+- deviceId - Device Id
+ - Device Id. Example 3456
+- subType - Sub Type
+ - Specifies device sub type
+ - PT2262 - PT2262
+- pulse - Pulse length
+ - Pulse length of the device
+- onCommandId - On command
+ - Specifies command that represents ON for this device
+- offCommandId - Off command
+ - Specifies command that represents OFF for this device
+- openCommandId - Open command
+ - Specifies command that represents OPEN for this device
+- closedCommandId - Closed command
+ - Specifies command that represents CLOSED for this device
#### Discovering commandId values
There are a number of ways to detect the commandId values for your device.
-- You can turn on DEBUG messages for the rfxcom binding by adding the line
- `<Logger level="DEBUG" name="org.openhab.binding.rfxcom"/>`
- to your `log4j2.xml`. You will then be able to see the commandId in the log
- file when you trigger the device.
-
-- You can link a Number Item to the commandId channel. The item will be updated with the
- detected commandId when you trigger the device.
-
-- You can use RFXmngr to look at the data from the device. Use the last letter/number
- of the hexadecimal "Code", and convert it from hexadecimal to decimal.
+- You can turn on DEBUG messages for the rfxcom binding by adding the line `<Logger level="DEBUG" name="org.openhab.binding.rfxcom"/>` to your `log4j2.xml`.
+You will then be able to see the commandId in the log file when you trigger the device.
+- You can link a Number Item to the commandId channel. The item will be updated with the detected commandId when you trigger the device.
+- You can use RFXmngr to look at the data from the device. Use the last letter/number of the hexadecimal "Code", and convert it from hexadecimal to decimal.
#### Examples
For a USB attached RFXCOM on Windows the configuration could look like this (note the `pulse` is optional):
-```
+```java
Bridge rfxcom:bridge:238adf67 [ serialPort="COM4" ] {
Thing lighting4 17745a [deviceId="17745", subType="PT2262", onCommandId=7, offCommandId=4]
Thing lighting4 17745b [deviceId="17745", subType="PT2262", onCommandId=10, offCommandId=2]
Your items file could look like this:
-```
+```java
Number SocketCommandId {channel="rfxcom:lighting4:238adf67:17745a:commandId"}
Switch SocketA {channel="rfxcom:lighting4:238adf67:17745a:command"}
Switch SocketB {channel="rfxcom:lighting4:238adf67:17745b:command"}
These are some commandIds from the field that may match your devices.
-| Brand | What | Action | Command ID | Source |
-|-------|---------------|-------------|------------|--------|
-| Kerui | Motion Sensor | Motion | 10 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
-| Kerui | Door Contact | door open | 14 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
-| Kerui | Door Contact | door closed | 7 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
-| Kerui | Door Contact | tamper | 11 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
-| Energenie | 4 Socket Power Bar | Socket 1 on | 15 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 1 off | 14 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 2 on | 7 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 2 off | 6 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 3 on | 11 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 3 off | 10 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 4 on | 3 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | Socket 4 off | 2 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | All on | 13 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
-| Energenie | 4 Socket Power Bar | All off | 12 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Brand | What | Action | Command ID | Source |
+| --------- | ------------------ | ------------ | ---------- | ------------------------------------------------------------------------------------------------------ |
+| Kerui | Motion Sensor | Motion | 10 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
+| Kerui | Door Contact | door open | 14 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
+| Kerui | Door Contact | door closed | 7 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
+| Kerui | Door Contact | tamper | 11 | [#3103](https://github.com/openhab/openhab-addons/issues/3103) |
+| Energenie | 4 Socket Power Bar | Socket 1 on | 15 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 1 off | 14 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 2 on | 7 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 2 off | 6 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 3 on | 11 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 3 off | 10 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 4 on | 3 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | Socket 4 off | 2 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | All on | 13 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
+| Energenie | 4 Socket Power Bar | All off | 12 | [Community](https://community.openhab.org/t/rfxcom-looking-to-improve-lighting4-call-for-users/123674) |
### lighting5 - RFXCOM Lighting5 Actuator
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------------|-------------------------------------|-----------|----------|
-| command | [command](#channels) | Switch | |
-| commandString\*\* | [commandString](#channels) | String | |
-| contact | [command](#channels) | Contact | |
-| dimmingLevel | [dimminglevel](#channels) | Dimmer | |
-| mood | [mood](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ----------------- | ----------------------------------- | --------- | ------- |
+| command | [command](#channels) | Switch | |
+| commandString\*\* | [commandString](#channels) | String | |
+| contact | [command](#channels) | Contact | |
+| dimmingLevel | [dimminglevel](#channels) | Dimmer | |
+| mood | [mood](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
\*\* `commandString` supports:
-* OFF
-* ON
-* GROUP_OFF
-* LEARN
-* GROUP_ON
-* MOOD1
-* MOOD2
-* MOOD3
-* MOOD4
-* MOOD5
-* RESERVED1
-* RESERVED2
-* UNLOCK
-* LOCK
-* ALL_LOCK
-* CLOSE_RELAY
-* STOP_RELAY
-* OPEN_RELAY
-* SET_LEVEL
-* COLOUR_PALETTE
-* COLOUR_TONE
-* COLOUR_CYCLE
+- OFF
+- ON
+- GROUP_OFF
+- LEARN
+- GROUP_ON
+- MOOD1
+- MOOD2
+- MOOD3
+- MOOD4
+- MOOD5
+- RESERVED1
+- RESERVED2
+- UNLOCK
+- LOCK
+- ALL_LOCK
+- CLOSE_RELAY
+- STOP_RELAY
+- OPEN_RELAY
+- SET_LEVEL
+- COLOUR_PALETTE
+- COLOUR_TONE
+- COLOUR_CYCLE
#### Configuration Options
-* deviceId - Device Id
- * Remote/switch/unit Id + unit code, separated by dot. Example 10001.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * AOKE - Aoke Relay
- * AVANTEK - Avantek
- * BBSB\_NEW - BBSB new types
- * CONRAD\_RSL2 - Conrad RSL2
- * EMW100 - EMW100 GAO/Everflourish
- * EURODOMEST - Eurodomest
- * IT - IT
- * KANGTAI - Kangtai, Cotech
- * LIGHTWAVERF - LightwaveRF, Siemens
- * LIVOLO - Livolo Dimmer or On/Off 1-3
- * LIVOLO\_APPLIANCE - Livolo Appliance On/Off 1-10
- * MDREMOTE - MDREMOTE LED dimmer v106
- * MDREMOTE\_107 - MDREMOTE v107
- * MDREMOTE\_108 - MDREMOTE v108, EKAB-10KRF
- * RGB\_TRC02 - RGB TRC02 (2 batt)
- * RGB\_TRC02\_2 - RGB TRC02\_2 (3 batt)
-
+- deviceId - Device Id
+ - Remote/switch/unit Id + unit code, separated by dot. Example 10001.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - AOKE - Aoke Relay
+ - AVANTEK - Avantek
+ - BBSB\_NEW - BBSB new types
+ - CONRAD\_RSL2 - Conrad RSL2
+ - EMW100 - EMW100 GAO/Everflourish
+ - EURODOMEST - Eurodomest
+ - IT - IT
+ - KANGTAI - Kangtai, Cotech
+ - LIGHTWAVERF - LightwaveRF, Siemens
+ - LIVOLO - Livolo Dimmer or On/Off 1-3
+ - LIVOLO\_APPLIANCE - Livolo Appliance On/Off 1-10
+ - MDREMOTE - MDREMOTE LED dimmer v106
+ - MDREMOTE\_107 - MDREMOTE v107
+ - MDREMOTE\_108 - MDREMOTE v108, EKAB-10KRF
+ - RGB\_TRC02 - RGB TRC02 (2 batt)
+ - RGB\_TRC02\_2 - RGB TRC02\_2 (3 batt)
### lighting6 - RFXCOM Lighting6 Actuator
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------|-------------------------------------|-----------|----------|
-| command | [command](#channels) | Switch | |
-| contact | [command](#channels) | Contact | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ----------- | ----------------------------------- | --------- | ------- |
+| command | [command](#channels) | Switch | |
+| contact | [command](#channels) | Contact | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
#### Configuration Options
-* deviceId - Device Id
- * Remote/switch/unit Id + group code + unit code, separated by dot. Example 100.A.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * BLYSS - Blyss
-
+- deviceId - Device Id
+ - Remote/switch/unit Id + group code + unit code, separated by dot. Example 100.A.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - BLYSS - Blyss
### rain - RFXCOM Rain Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|----------|
-| rainRate | [rainrate](#channels) | Number | |
-| rainTotal | [raintotal](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| rainRate | [rainrate](#channels) | Number | |
+| rainTotal | [raintotal](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * RAIN1 - RGR126/682/918/928
- * RAIN2 - PCR800
- * RAIN3 - TFA
- * RAIN4 - UPM RG700
- * RAIN5 - WS2300
- * RAIN6 - La Crosse TX5
- * RAIN9 - TFA 30.3233.1
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+- subType - Sub Type
+ - Specifies device sub type.
+ - RAIN1 - RGR126/682/918/928
+ - RAIN2 - PCR800
+ - RAIN3 - TFA
+ - RAIN4 - UPM RG700
+ - RAIN5 - WS2300
+ - RAIN6 - La Crosse TX5
+ - RAIN9 - TFA 30.3233.1
### raw - RFXCOM Raw Messages
-Raw messages. These messages are included in the Pro firmware and represent messages
-for which the device does not understand the protocol. The raw message is a list of the
-length of the RF pulses before they have been interpreted as bytes.
+These messages are included in the Pro firmware and represent messages for which the device does not understand the protocol.
+The raw message is a list of the length of the RF pulses before they have been interpreted as bytes.
-You can also send raw messages by recording the pulses of an incoming message and
-using them to configure a raw thing item.
+You can also send raw messages by recording the pulses of an incoming message and using them to configure a raw thing item.
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|------------|---------------------------|-----------|-------------|
-| rawMessage | [rawmessage](#channels) | String | |
-| rawPayload | [rawpayload](#channels) | String | |
-| pulses | [pulses](#channels) | String | |
+| Name | Channel Type | Item Type | Remarks |
+| ---------- | ----------------------- | --------- | ------- |
+| rawMessage | [rawmessage](#channels) | String | |
+| rawPayload | [rawpayload](#channels) | String | |
+| pulses | [pulses](#channels) | String | |
#### Configuration Options
-* deviceId - Device Id
- * Raw items cannot provide a device ID, so to receive RAW messages use
- a Device Id of RAW. For transmit only devices, use any Device Id.
-
-* subType - Sub Type
- * Specifies message sub type.
-
- * RAW_PACKET1
- * RAW_PACKET2
- * RAW_PACKET3
- * RAW_PACKET4
-
-* repeat - Repeat
- * Number of times to repeat message on transmit. Defaults to 5.
-
-* onPulses - On Pulses
- * Pulses to send for an ON command. Space delimited pulse lengths
- in usec. Must be an even number of pulse lengths, with a maximum
- of 142 total pulses. Max pulse length is 65535. Pulses of value 0
- will be transmitted as 10000. See the RFXtfx user guide for more
- information.
-
-* offPulses - Off Pulses
- * Pulses to send for an OFF command. Space delimited pulse lengths
- in usec. Must be an even number of pulse lengths, with a maximum
- of 142 total pulses. Max pulse length is 65535. Pulses of value 0
- will be transmitted as 10000. See the RFXtfx user guide for more
- information.
-
-* openPulses - Open Pulses
- * Pulses to send for an OPEN command. Space delimited pulse lengths
- in usec. Must be an even number of pulse lengths, with a maximum
- of 142 total pulses. Max pulse length is 65535. Pulses of value 0
- will be transmitted as 10000. See the RFXtfx user guide for more
- information.
-
-* closedPulses - Closed Pulses
- * Pulses to send for a CLOSED command. Space delimited pulse lengths
- in usec. Must be an even number of pulse lengths, with a maximum
- of 142 total pulses. Max pulse length is 65535. Pulses of value 0
- will be transmitted as 10000. See the RFXtfx user guide for more
- information.
+- deviceId - Device Id
+ - Raw items cannot provide a device ID, so to receive RAW messages use a Device Id of RAW. For transmit only devices, use any Device Id
+- subType - Sub Type
+ - Specifies message sub type
+ - RAW_PACKET1
+ - RAW_PACKET2
+ - RAW_PACKET3
+ - RAW_PACKET4
+- repeat - Repeat
+ - Number of times to repeat message on transmit. Defaults to 5.
+- onPulses - On Pulses
+ - Pulses to send for an ON command. Space delimited pulse lengths in usec.
+ Must be an even number of pulse lengths, with a maximum of 142 total pulses.
+ Max pulse length is 65535. Pulses of value 0 will be transmitted as 10000. See the RFXtfx user guide for more information.
+- offPulses - Off Pulses
+ - Pulses to send for an OFF command.
+ Space delimited pulse lengths in usec.
+ Must be an even number of pulse lengths, with a maximum of 142 total pulses.
+ Max pulse length is 65535. Pulses of value 0 will be transmitted as 10000. See the RFXtfx user guide for more information.
+- openPulses - Open Pulses
+ - Pulses to send for an OPEN command.
+ Space delimited pulse lengths in usec.
+ Must be an even number of pulse lengths, with a maximum of 142 total pulses.
+ Max pulse length is 65535. Pulses of value 0 will be transmitted as 10000. See the RFXtfx user guide for more information.
+- closedPulses - Closed Pulses
+ - Pulses to send for an CLOSED command.
+ Space delimited pulse lengths in usec.
+ Must be an even number of pulse lengths, with a maximum of 142 total pulses.
+ Max pulse length is 65535.
+ Pulses of value 0 will be transmitted as 10000.
+ See the RFXtfx user guide for more information.
#### Examples
This can be used to transmit raw messages.
-The first step is to work out the right pulses for the device. You can do this using RFXmngr, or
-you can do this using openhab:
+The first step is to work out the right pulses for the device.
+You can do this using RFXmngr, or you can do this using openhab:
1. Set up a RAW thing to receive raw pulses:
- ```
+ ```java
Bridge rfxcom:tcpbridge:rfxtrx0 [ host="192.168.42.10", port=10001, enableUndecoded=true ] {
Thing raw RAW [ deviceId="RAW", subType="RAW_PACKET1" ]
}
```
-2. Add an item to see what the pulses are:
+1. Add an item to see what the pulses are:
- ```
+ ```java
String RawPulses { channel="rfxcom:raw:rfxtrx0:RAW:pulses" }
```
-3. Activate the device and look at the pulses that are set. Look for a higher value in the pulses, that is
- likely to be a gap for a repeat. Take the pulses from before the gap. Make sure there are an
- even number, and if not, drop a 0 on the end.
+1. Activate the device and look at the pulses that are set.
+Look for a higher value in the pulses, that is likely to be a gap for a repeat.
+Take the pulses from before the gap. Make sure there are an even number, and if not, drop a 0 on the end.
Now you have the pulses, set up a send device:
1. Set up a RAW thing to send a command:
- ```
+ ```java
Bridge rfxcom:tcpbridge:rfxtrx0 [ host="192.168.42.10", port=10001, enableUndecoded=true ] {
Thing raw MySwitch [ deviceId="MySwitch", subType="RAW_PACKET1", onPulses="100 200 300 0", offPulses="400 500 600 0" ]
}
```
-2. Add an item to send the command:
+1. Add an item to send the command:
- ```
+ ```java
Switch MySwitch { channel="rfxcom:raw:rfxtrx0:MySwitch:command" }
```
-3. Use the command to send the raw message.
+1. Use the command to send the raw message.
-### rfxsensor - RFXCOM RFXSensor
+### rfxsensor - RFXCOM RFXSensor
A RFXSensor sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|------------------|-------------------------------------|------------|---------|
-| pressure | [pressure](#channels) | Number | |
-| humidity | [humidity](#channels) | Number | |
-| referenceVoltage | [voltage](#channels) | Number | |
-| voltage | [voltage](#channels) | Number | |
-| temperature | [temperature](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ---------------- | ----------------------------------- | --------- | ------- |
+| pressure | [pressure](#channels) | Number | |
+| humidity | [humidity](#channels) | Number | |
+| referenceVoltage | [voltage](#channels) | Number | |
+| voltage | [voltage](#channels) | Number | |
+| temperature | [temperature](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
#### Configuration Options
-* deviceId - Device Id
- * Unit Id. Example 100
+- deviceId - Device Id
+ - Unit Id. Example 100
### rfy - RFXCOM Rfy Actuator
#### Channels
| Name | Channel Type | Item Type | Remarks |
-|-----------------|-------------------------------------|---------------|-----------------------------------------------------------------------------|
+| --------------- | ----------------------------------- | ------------- | --------------------------------------------------------------------------- |
| command | [command](#channels) | Switch | Sends a program command to pair with a device when switched from off to on. |
| program | [command](#channels) | Switch | Send Program Command |
| shutter | [shutter](#channels) | Rollershutter | Shutter |
#### Configuration Options
-* deviceId - Device Id
- * Unit Id + unit code, separated by dot. Example 100.1
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * RFY - RFY
- * RFY\_EXT - RFY Ext
-
+- deviceId - Device Id
+ - Unit Id + unit code, separated by dot. Example 100.1
+- subType - Sub Type
+ - Specifies device sub type.
+ - RFY - RFY
+ - RFY\_EXT - RFY Ext
### security1 - RFXCOM Security1 Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|----------|
-| status | [status](#channels) | String | |
-| contact | [command](#channels) | Contact | |
-| motion | [motion](#channels) | Switch | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| status | [status](#channels) | String | |
+| contact | [command](#channels) | Contact | |
+| motion | [motion](#channels) | Switch | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Remote/sensor Id. Example 10001
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * X10\_SECURITY - X10 security door/window sensor
- * X10\_SECURITY\_MOTION - X10 security motion sensor
- * X10\_SECURITY\_REMOTE - X10 security remote (no alive packets)
- * KD101 - KD101 (no alive packets)
- * VISONIC\_POWERCODE\_SENSOR\_PRIMARY\_CONTACT - Visonic PowerCode door/window sensor – primary contact (with alive packets)
- * VISONIC\_POWERCODE\_MOTION - Visonic PowerCode motion sensor (with alive packets)
- * VISONIC\_CODESECURE - Visonic CodeSecure (no alive packets)
- * VISONIC\_POWERCODE\_SENSOR\_AUX\_CONTACT - Visonic PowerCode door/window sensor – auxiliary contact (no alive packets)
- * MEIANTECH - Meiantech
- * SA30 - SA30 (no alive packets)
-
+- deviceId - Device Id
+ - Remote/sensor Id. Example 10001
+- subType - Sub Type
+ - Specifies device sub type.
+ - X10\_SECURITY - X10 security door/window sensor
+ - X10\_SECURITY\_MOTION - X10 security motion sensor
+ - X10\_SECURITY\_REMOTE - X10 security remote (no alive packets)
+ - KD101 - KD101 (no alive packets)
+ - VISONIC\_POWERCODE\_SENSOR\_PRIMARY\_CONTACT - Visonic PowerCode door/window sensor – primary contact (with alive packets)
+ - VISONIC\_POWERCODE\_MOTION - Visonic PowerCode motion sensor (with alive packets)
+ - VISONIC\_CODESECURE - Visonic CodeSecure (no alive packets)
+ - VISONIC\_POWERCODE\_SENSOR\_AUX\_CONTACT - Visonic PowerCode door/window sensor – auxiliary contact (no alive packets)
+ - MEIANTECH - Meiantech
+ - SA30 - SA30 (no alive packets)
### temperaturehumiditybarometric - RFXCOM Temperature-Humidity-Barometric Sensor
#### Channels
| Name | Channel Type | Item Type | Remarks |
-|----------------|-------------------------------------|-----------|---------|
+| -------------- | ----------------------------------- | --------- | ------- |
| temperature | [temperature](#channels) | Number | |
| humidity | [humidity](#channels) | Number | |
| humidityStatus | [humiditystatus](#channels) | String | |
| batteryLevel | [system.battery-level](#channels) | Number | |
| lowBattery | [system.low-battery](#channels) | Switch | |
-
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 59648
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * THB1 - BTHR918, BTHGN129
- * THB2 - BTHR918N, BTHR968
+- deviceId - Device Id
+ - Sensor Id. Example 59648
+- subType - Sub Type
+ - Specifies device sub type.
+ - THB1 - BTHR918, BTHGN129
+ - THB2 - BTHR918N, BTHR968
### temperaturehumidity - RFXCOM Temperature-Humidity Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|----------------|-------------------------------------|-----------|----------|
-| temperature | [temperature](#channels) | Number | |
-| humidity | [humidity](#channels) | Number | |
-| humidityStatus | [humiditystatus](#channels) | String | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
-
+| Name | Channel Type | Item Type | Remarks |
+| -------------- | ----------------------------------- | --------- | ------- |
+| temperature | [temperature](#channels) | Number | |
+| humidity | [humidity](#channels) | Number | |
+| humidityStatus | [humiditystatus](#channels) | String | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * TH1 - THGN122/123, THGN132, THGR122/228/238/268
- * TH2 - THGR810, THGN800
- * TH3 - RTGR328
- * TH4 - THGR328
- * TH5 - WTGR800
- * TH6 - THGR918/928, THGRN228, THGN500
- * TH7 - TFA TS34C, Cresta
- * TH8 - WT260,WT260H,WT440H,WT450,WT450H
- * TH9 - Viking 02035,02038 (02035 has no humidity), Proove TSS320, 311501
- * TH10 - Rubicson
- * TH11 - EW109
- * TH12 - Imagintronix/Opus XT300 Soil sensor
- * TH13 - Alecto WS1700 and compatibles
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+
+- subType - Sub Type
+ - Specifies device sub type.
+ - TH1 - THGN122/123, THGN132, THGR122/228/238/268
+ - TH2 - THGR810, THGN800
+ - TH3 - RTGR328
+ - TH4 - THGR328
+ - TH5 - WTGR800
+ - TH6 - THGR918/928, THGRN228, THGN500
+ - TH7 - TFA TS34C, Cresta
+ - TH8 - WT260,WT260H,WT440H,WT450,WT450H
+ - TH9 - Viking 02035,02038 (02035 has no humidity), Proove TSS320, 311501
+ - TH10 - Rubicson
+ - TH11 - EW109
+ - TH12 - Imagintronix/Opus XT300 Soil sensor
+ - TH13 - Alecto WS1700 and compatibles
### temperaturerain - RFXCOM Temperature-Rain Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|----------|
-| temperature | [temperature](#channels) | Number | |
-| rainTotal | [raintotal](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| temperature | [temperature](#channels) | Number | |
+| rainTotal | [raintotal](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * WS1200 - WS1200
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+- subType - Sub Type
+ - Specifies device sub type.
+ - WS1200 - WS1200
### temperature - RFXCOM Temperature Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|----------|
-| temperature | [temperature](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| temperature | [temperature](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * TEMP1 - THR128/138, THC138
- * TEMP2 - THC238/268,THN132,THWR288,THRN122,THN122,AW129/131
- * TEMP3 - THWR800
- * TEMP4 - RTHN318
- * TEMP5 - La Crosse TX2, TX3, TX4, TX17
- * TEMP6 - TS15C. UPM temp only
- * TEMP7 - Viking 02811, Proove TSS330, 311346
- * TEMP8 - La Crosse WS2300
- * TEMP9 - Rubicson
- * TEMP10 - TFA 30.3133
- * TEMP11 - WT0122
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+- subType - Sub Type
+ - Specifies device sub type.
+ - TEMP1 - THR128/138, THC138
+ - TEMP2 - THC238/268,THN132,THWR288,THRN122,THN122,AW129/131
+ - TEMP3 - THWR800
+ - TEMP4 - RTHN318
+ - TEMP5 - La Crosse TX2, TX3, TX4, TX17
+ - TEMP6 - TS15C. UPM temp only
+ - TEMP7 - Viking 02811, Proove TSS330, 311346
+ - TEMP8 - La Crosse WS2300
+ - TEMP9 - Rubicson
+ - TEMP10 - TFA 30.3133
+ - TEMP11 - WT0122
### thermostat1 - RFXCOM Thermostat1 Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------|-------------------------------------|-----------|----------|
-| contact | [command](#channels) | Contact | |
-| setpoint | [setpoint](#channels) | Number | |
-| temperature | [temperature](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ----------- | ----------------------------------- | --------- | ------- |
+| contact | [command](#channels) | Contact | |
+| setpoint | [setpoint](#channels) | Number | |
+| temperature | [temperature](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * DIGIMAX - Digimax, TLX7506
- * DIGIMAX\_SHORT - Digimax with short format (no set point)
-
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+- subType - Sub Type
+ - Specifies device sub type.
+ - DIGIMAX - Digimax, TLX7506
+ - DIGIMAX\_SHORT - Digimax with short format (no set point)
### thermostat3 - RFXCOM Thermostat3 Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|-------------------|-------------------------------------|---------------|----------|
-| command | [command](#channels) | Switch | |
-| command2nd | [command](#channels) | Switch | |
-| control\* | [tempcontrol](#channels) | Rollershutter | |
-| commandString\*\* | [commandString](#channels) | String | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
+| Name | Channel Type | Item Type | Remarks |
+| ----------------- | ----------------------------------- | ------------- | ------- |
+| command | [command](#channels) | Switch | |
+| command2nd | [command](#channels) | Switch | |
+| control\* | [tempcontrol](#channels) | Rollershutter | |
+| commandString\*\* | [commandString](#channels) | String | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
\* `control` supports:
-* UP
-* DOWN
-* STOP
+- UP
+- DOWN
+- STOP
\*\* `commandString` supports:
-* OFF
-* ON
-* UP
-* DOWN
-* RUN_UP
-* RUN_DOWN
-* SECOND_ON
-* SECOND_OFF
-* STOP
+- OFF
+- ON
+- UP
+- DOWN
+- RUN_UP
+- RUN_DOWN
+- SECOND_ON
+- SECOND_OFF
+- STOP
#### Configuration Options
- * deviceId - Device Id
- * Sensor Id. Example 106411
-
- * subType - Sub Type
- * Specifies device sub type.
-
- * MERTIK\_\_G6R\_H4T1 - Mertik (G6R H4T1)
- * MERTIK\_\_G6R\_H4TB\_\_G6_H4T\_\_G6R\_H4T21\_Z22 - Mertik (G6R H4TB, G6R H4T, or G6R H4T21\-Z22)
- * MERTIK\_\_G6R\_H4TD\_\_G6R\_H4T16 - Mertik (G6R H4TD or G6R H4T16)
- * MERTIK\_\_G6R\_H4S\_TRANSMIT\_ONLY - Mertik (G6R H4S \- transmit only)
+- deviceId - Device Id
+ - Sensor Id. Example 106411
+- subType - Sub Type
+ - Specifies device sub type.
+ - MERTIK\_\_G6R\_H4T1 - Mertik (G6R H4T1)
+ - MERTIK\_\_G6R\_H4TB\_\_G6_H4T\_\_G6R\_H4T21\_Z22 - Mertik (G6R H4TB, G6R H4T, or G6R H4T21\-Z22)
+ - MERTIK\_\_G6R\_H4TD\_\_G6R\_H4T16 - Mertik (G6R H4TD or G6R H4T16)
+ - MERTIK\_\_G6R\_H4S\_TRANSMIT\_ONLY - Mertik (G6R H4S \- transmit only)
#### Examples
-
### undecoded - RFXCOM Undecoded RF Messages
-Undecoded messages are messages where RFCOM understands the protocol and has converted
-the raw RF pulses into bytes, but has not attempted to decode the bytes into meaningful
-data.
+Undecoded messages are messages where RFCOM understands the protocol and has converted the raw RF pulses into bytes, but has not attempted to decode the bytes into meaningful data.
Undecoded message are receive only, there is not way to transmit an undecoded message.
If you need to repeat an undecoded message, consider looking at Raw messages instead.
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|------------|---------------------------|-----------|-------------|
-| rawMessage | [rawmessage](#channels) | String | |
-| rawPayload | [rawpayload](#channels) | String | |
+| Name | Channel Type | Item Type | Remarks |
+| ---------- | ----------------------- | --------- | ------- |
+| rawMessage | [rawmessage](#channels) | String | |
+| rawPayload | [rawpayload](#channels) | String | |
#### Configuration Options
-* deviceId - Device Id
- * Undecoded items cannot provide a device ID, so this value is always UNDECODED.
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * AC - AC
- * ARC - ARC
- * ATI - ATI
- * HIDEKI\_UPM - Hideki, UPM
- * LACROSSE\_VIKING - La Crosse, Viking
- * AD - AD
- * MERTIK - Mertik Maxitrol Fireplace controllers
- * OREGON1 - Oregon Scientific 1
- * OREGON2 - Oregon Scientific 2
- * OREGON3 - Oregon Scientific 3
- * PROGUARD - ProGuard
- * VISONIC - Visonic
- * NEC - NEC
- * FS20 - FS20
- * RESERVED - Reserved
- * BLINDS - Blinds
- * RUBICSON - Rubicson
- * AE - AE
- * FINE\_OFFSET - Fine Offset
- * RGB - RGB
- * RTS - RTS
- * SELECT\_PLUS - Select Plus
- * HOME\_CONFORT - Home Confort
- * EDISIO - Edisio
- * HONEYWELL - Honeywell
- * FUNKBUS - Gira Funk-Bussystem
- * BYRONSX - Byron SX
+- deviceId - Device Id
+ - Undecoded items cannot provide a device ID, so this value is always UNDECODED.
+- subType - Sub Type
+ - Specifies device sub type.
+ - AC - AC
+ - ARC - ARC
+ - ATI - ATI
+ - HIDEKI\_UPM - Hideki, UPM
+ - LACROSSE\_VIKING - La Crosse, Viking
+ - AD - AD
+ - MERTIK - Mertik Maxitrol Fireplace controllers
+ - OREGON1 - Oregon Scientific 1
+ - OREGON2 - Oregon Scientific 2
+ - OREGON3 - Oregon Scientific 3
+ - PROGUARD - ProGuard
+ - VISONIC - Visonic
+ - NEC - NEC
+ - FS20 - FS20
+ - RESERVED - Reserved
+ - BLINDS - Blinds
+ - RUBICSON - Rubicson
+ - AE - AE
+ - FINE\_OFFSET - Fine Offset
+ - RGB - RGB
+ - RTS - RTS
+ - SELECT\_PLUS - Select Plus
+ - HOME\_CONFORT - Home Confort
+ - EDISIO - Edisio
+ - HONEYWELL - Honeywell
+ - FUNKBUS - Gira Funk-Bussystem
+ - BYRONSX - Byron SX
### uv - RFXCOM UV/Temperature Sensor
#### Channels
-| Name | Channel Type | Item Type | Remarks |
-|--------------|-------------------------------------|-----------|----------|
-| uv | [uv](#channels) | Number | |
-| temperature | [temperature](#channels) | Number | |
-| signalLevel | [system.signal-strength](#channels) | Number | |
-| batteryLevel | [system.battery-level](#channels) | Number | |
-| lowBattery | [system.low-battery](#channels) | Switch | |
-
+| Name | Channel Type | Item Type | Remarks |
+| ------------ | ----------------------------------- | --------- | ------- |
+| uv | [uv](#channels) | Number | |
+| temperature | [temperature](#channels) | Number | |
+| signalLevel | [system.signal-strength](#channels) | Number | |
+| batteryLevel | [system.battery-level](#channels) | Number | |
+| lowBattery | [system.low-battery](#channels) | Switch | |
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 56923
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * UV1 - UVN128, UV138
- * UV2 - UVN800
- * UV3 - TFA
-
+- deviceId - Device Id
+ - Sensor Id. Example 56923
+- subType - Sub Type
+ - Specifies device sub type.
+ - UV1 - UVN128, UV138
+ - UV2 - UVN800
+ - UV3 - TFA
### wind - RFXCOM Wind Sensor
#### Channels
| Name | Channel Type | Item Type | Remarks |
-|------------------|-------------------------------------|-----------|---------------------------------------|
+| ---------------- | ----------------------------------- | --------- | ------------------------------------- |
| avgWindSpeed | [windspeed](#channels) | Number | Average Wind Speed |
| windSpeed | [windspeed](#channels) | Number | Wind Gust |
| windDirection | [winddirection](#channels) | Number | Wind Direction |
| batteryLevel | [system.battery-level](#channels) | Number | |
| lowBattery | [system.low-battery](#channels) | Switch | |
-
#### Configuration Options
-* deviceId - Device Id
- * Sensor Id. Example 2983
-
-* subType - Sub Type
- * Specifies device sub type.
-
- * WIND1 - WTGR800
- * WIND2 - WGR800
- * WIND3 - STR918, WGR918, WGR928
- * WIND4 - TFA
- * WIND5 - UPM WDS500
- * WIND6 - WS2300
- * WIND7 - Alecto WS4500, Auriol H13726, Hama EWS1500, Meteoscan W155/W160, Ventus WS155
+- deviceId - Device Id
+ - Sensor Id. Example 2983
+- subType - Sub Type
+ - Specifies device sub type.
+ - WIND1 - WTGR800
+ - WIND2 - WGR800
+ - WIND3 - STR918, WGR918, WGR928
+ - WIND4 - TFA
+ - WIND5 - UPM WDS500
+ - WIND6 - WS2300
+ - WIND7 - Alecto WS4500, Auriol H13726, Hama EWS1500, Meteoscan W155/W160, Ventus WS155
These messages were received when testing different firmwares.
-```
+```text
Ext 250 0D0100010253FA0400070001031C
Ext 251 0D0100010253FB0400070001031C
Ext 1001 140100010253010400070001031C03000000000000
These messages were sent by RFXMngr when enabling single modes.
On Pro1 firmware 1044 RFXtrx443 at 433.92MHZ
-```
+
+```text
enableUndecodedPackets 0D 00 00 03 03 53 00 80 00 00 00 00 00 00
enableImagintronixOpusPackets 0D 00 00 04 03 53 00 40 00 00 00 00 00 00
enableByronSXPackets 0D 00 00 05 03 53 00 20 00 00 00 00 00 00
enableHomeConfortPackets 0D 00 00 14 03 53 00 00 00 00 02 00 00 00
enableKEELOQPackets 0D 00 00 14 03 53 00 00 00 00 01 00 00 00
-```
\ No newline at end of file
+```
.things
-```
+```java
Thing rme:manager:m1 [ port="/dev/tty.usbserial-FTGVQA6D" ]
```
.items
-```
+```java
Number RMECisternLevel "Water level [%.1f %%]"(rme) {channel="rme:manager:m1:waterlevel"}
String RMEMode (rme) {channel="rme:manager:m1:mode"}
String RMESource (rme) {channel="rme:manager:m1:source"}
| password | no | the password if authenticaiton is enabled in the firmware. |
| timezone | no | the timezone as configured in Robonect on the robot (default: Europe/Berlin) |
-
An example things configuration might look like:
```java
| `wlan-signal` | Number | Retrieves the current WLAN Signal strength in dB |
| `error-code` | Number | The mower manufacturer code in case the mower is in status 7 (error). The binding resets this to UNDEF, once the mower is not in error status anymore. |
| `error-message` | String | The error message in case the mower is in status 7 (error). The binding resets this to UNDEF, once the mower is not in error status anymore. |
-| `error-date ` | DateTime | The date and time the error happened. The binding resets this to UNDEF, once the mower is not in error status anymore. |
+| `error-date` | DateTime | The date and time the error happened. The binding resets this to UNDEF, once the mower is not in error status anymore. |
| `last-error-code` | Number | The mower manufacturer code of the last error happened |
| `last-error-message` | String | The error message of the last error happened |
-| `last-error-date ` | DateTime | The date and time of the last error happened |
+| `last-error-date` | DateTime | The date and time of the last error happened |
| `health-temperature` | Number | The temperature of the mower (just available for robonect firmware >= 1.0) |
-| `health-humidity ` | Number | The humidity of the mower (just available for robonect firmware >= 1.0) |
+| `health-humidity` | Number | The humidity of the mower (just available for robonect firmware >= 1.0) |
### Offline Trigger Channel
Some Notes:
-* The values for `activeApp`, `playMode`, `timeElapsed`, `timeTotal`, `activeChannel`, `signalMode`, `signalQuality`, `channelName`, `programTitle`, `programDescription` & `programRating` refresh automatically per the configured `refresh` interval (10 seconds minimum).
+- The values for `activeApp`, `playMode`, `timeElapsed`, `timeTotal`, `activeChannel`, `signalMode`, `signalQuality`, `channelName`, `programTitle`, `programDescription` & `programRating` refresh automatically per the configured `refresh` interval (10 seconds minimum).
**List of available button commands for Roku streaming devices:**
Home
## Full Example
-roku.things:
+### roku.things:
-```
+```java
// Roku streaming media player
roku:roku_player:myplayer1 "My Roku" [ hostName="192.168.10.1", refresh=10 ]
```
-roku.items:
+### roku.items:
-```
+```java
// Roku streaming media player items:
String Player_ActiveApp "Current App: [%s]" { channel="roku:roku_player:myplayer1:activeApp" }
```
-roku.sitemap:
+### roku.sitemap:
-```
+```perl
sitemap roku label="Roku" {
Frame label="My Roku" {
Selection item=Player_ActiveApp icon="screen"
The binding supports different kinds of connections:
-* serial connection,
-* serial over IP connection,
-* IP connection (for models providing a network interface).
+- serial connection,
+- serial over IP connection,
+- IP connection (for models providing a network interface).
The binding supports all kinds of Rotel protocols:
-* HEX protocol,
-* Old ASCII protocol (named v1 in the binding),
-* Recent ASCII protocol (named v2 in the binding).
+- HEX protocol,
+- Old ASCII protocol (named v1 in the binding),
+- Recent ASCII protocol (named v2 in the binding).
For users without serial connector on server side, of course you can add a serial to USB adapter.
Some notes:
-* On Linux, you may get an error stating the serial port cannot be opened when the Rotel 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`.
-* Also on Linux you may have issues with the USB if using two serial USB devices e.g. Rotel 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 Rotel device specific):
+- On Linux, you may get an error stating the serial port cannot be opened when the Rotel 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`.
+- Also on Linux you may have issues with the USB if using two serial USB devices e.g. Rotel 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 Rotel device specific):
-```
+```text
4444:raw:0:/dev/ttyUSB0:19200 8DATABITS NONE 1STOPBIT
```
-
## Channels
The following channels are available:
example.things using serial connection:
-```
+```java
Thing rotel:rsp1066:preamp "RSP-1066" [ serialPort="COM1", inputLabelVideo1="VID 1", inputLabelVideo2="VID 2", inputLabelVideo3="VID 3", inputLabelVideo4="VID 4", inputLabelVideo5="VID 5" ]
Thing rotel:rsp1570:preamp "RSP-1570" [ serialPort="COM2" ]
example.things using serial over IP connection:
-```
+```java
Thing rotel:rsp1066:preamp "RSP-1066" [ host="192.168.0.200", port=3000, inputLabelVideo1="VID 1", inputLabelVideo2="VID 2", inputLabelVideo3="VID 3", inputLabelVideo4="VID 4", inputLabelVideo5="VID 5" ]
Thing rotel:rsp1570:preamp "RSP-1570" [ host="192.168.0.201", port=3000, inputLabelCd="CD", inputLabelTuner="TUNER", inputLabelTape="TAPE", inputLabelVideo1="VIDEO 1", inputLabelVideo2="VIDEO 2", inputLabelVideo3="VIDEO 3", inputLabelVideo4="VIDEO 4", inputLabelVideo5="VIDEO 5", inputLabelMulti="MULTI" ]
example.items:
-```
+```java
Switch preamp_power "Power" { channel="rotel:rsp1066:preamp:mainZone#power" }
String preamp_source "Source Input [%s]" { channel="rotel:rsp1066:preamp:mainZone#source" }
String preamp_rec "Record Source [%s]" { channel="rotel:rsp1066:preamp:mainZone#recordSource" }
example.sitemap:
-```
+```perl
Switch item=preamp_power
Selection item=preamp_source
Selection item=preamp_rec
Please update to the latest firmware to provide full compatibility with this binding.
This binding does provide full feedback from the Russound system if events occur outside of openHAB (such as keypad usage).
-*Warning:* Russound becomes unstable if you have two IP based clients connected to the same system.
+_Warning:_ Russound becomes unstable if you have two IP based clients connected to the same system.
Do NOT run multiple instances of this binding against the same system - this definitely causes instability.
Running this binding in addition to the MyRussound application seems to work fine, however.
-*Warning:* Try to avoid having multiple media management functions open in different clients (keypads, My Russound app, HABPanel, etc).
+_Warning:_ Try to avoid having multiple media management functions open in different clients (keypads, My Russound app, HABPanel, etc).
Although it seems to work a majority of the times, there have been instances where the sessions become confused.
## Supported Bridges/Things
-* Bridge: Russound System (usually the main controller)
-* Bridge: Russound Controller (1-6 controllers supported)
-* Thing: Russound Source (1-8 sources supported)
-* Thing: Russound Zone (1-8 [depending on the controller] zones supported for each controller)
+- Bridge: Russound System (usually the main controller)
+- Bridge: Russound Controller (1-6 controllers supported)
+- Thing: Russound Source (1-8 sources supported)
+- Thing: Russound Zone (1-8 [depending on the controller] zones supported for each controller)
## Device Discovery
#### Notes
-- The JSON will look like: `[{"id":1, "name":"XXX"},...]`.
+- The JSON will look like: `[{"id":1, "name":"XXX"},...]`.
The controller channel will contain up to 6 controllers and the sources will contain up to 8 sources (depending on how the system is configured).
### Russound Source (please see source cross-reference below for what is supported by which sources)
#### Notes
-1. Banks are only supported tuner sources and the JSON array will have exactly 6 banks in it (with IDs from 1 to 6). For non-tuner sources, an empty JSON array (`[]`) will be returned. For tuner sources, the JSON will look like: `[{"id":1, "name":"XXX"},...]`. A bank's name can be updated by sending the representation back to the channel. Example: `[{"id":1,"name":"FM1"},{"id":3,"name":"FM3"}]` will set the name of bank #1 to "FM1 and bank#3 to "FM3" (leaving all other bank names the same). After an update, the banks channel will be refreshed with the full JSON representation of all banks. If the name has not been changed in the refreshed value, the russound rejected the name change for some reason (generally too long of a name or a duplicate name).
-
-2. All media management channels are ONLY valid on streaming sources (not tuners). All channels will return a JSON representation like `{"id":xxx, "value":"yyy"}` where 'xxx' will be a sequential identifier of the message and 'yyy' will be the payload. The payload will be a simple string in all cases. However, the mmmenu string will be a raw JSON string representing the menu structure. Please review the media management section in the RIO protocol document from russound for the specifications.
+1. Banks are only supported tuner sources and the JSON array will have exactly 6 banks in it (with IDs from 1 to 6).
+ For non-tuner sources, an empty JSON array (`[]`) will be returned.
+ For tuner sources, the JSON will look like: `[{"id":1, "name":"XXX"},...]`.
+ A bank's name can be updated by sending the representation back to the channel.
+ Example: `[{"id":1,"name":"FM1"},{"id":3,"name":"FM3"}]` will set the name of bank #1 to "FM1 and bank#3 to "FM3" (leaving all other bank names the same).
+ After an update, the banks channel will be refreshed with the full JSON representation of all banks.
+ If the name has not been changed in the refreshed value, the russound rejected the name change for some reason (generally too long of a name or a duplicate name).
+1. All media management channels are ONLY valid on streaming sources (not tuners).
+ All channels will return a JSON representation like `{"id":xxx, "value":"yyy"}` where 'xxx' will be a sequential identifier of the message and 'yyy' will be the payload.
+ The payload will be a simple string in all cases.
+ However, the mmmenu string will be a raw JSON string representing the menu structure.
+ Please review the media management section in the RIO protocol document from russound for the specifications.
### Russound Controller
|-----------------|------------|-----------|--------------------------------------------------------|
| zones | R | String | The JSON representation of all zones in the controller |
-
#### Notes
-* The JSON will look like: `[{"id":1, "name":"XXX"},...]`
+- The JSON will look like: `[{"id":1, "name":"XXX"},...]`
### Russound Zone
| mminit | W | Switch**** | Whether to initial a media management session (ON) or close an existing one (OFF) |
| mmcontextmenu | W | Switch**** | Whether to initial a media management context session (ON) or close an existing one (OFF) |
-
#### Notes:
-1. As of the time of this document, rating ON (like) produced an error in the firmware from the related command. This has been reported to Russound.
-2. keypress/keyrelease/keyhold/keycode/event are advanced commands that will pass the related event string to Russound (i.e. `EVENT C[x].Z[y]!KeyPress [stringtype]`). Please see the "RIO Protocol for 3rd Party Integrators.pdf" (found at the Russound Portal) for proper string forms.
-3. If you send an OnOffType to the volume will have the same affect as turning the zone on/off (ie sending OnOffType to "status")
-4. The volume PercentType will be scaled to Russound's volume of 0-50 (ie 50% = volume of 25, 100% = volume of 50)
-5. Initialize a media management session by sending ON to the channel. The related source thing will then start sending out media management information in the MM channels. To close the session - simply send OFF to the channel. Sending OFF to the channel when a session has not been initialized does nothing. Likewise if the related source is a tuner, this command does nothing.
+1. As of the time of this document, rating ON (like) produced an error in the firmware from the related command.
+ This has been reported to Russound.
+1. keypress/keyrelease/keyhold/keycode/event are advanced commands that will pass the related event string to Russound (i.e. `EVENT C[x].Z[y]!KeyPress [stringtype]`).
+ Please see the "RIO Protocol for 3rd Party Integrators.pdf" (found at the Russound Portal) for proper string forms.
+1. If you send an OnOffType to the volume will have the same affect as turning the zone on/off (ie sending OnOffType to "status")
+1. The volume PercentType will be scaled to Russound's volume of 0-50 (ie 50% = volume of 25, 100% = volume of 50)
+1. Initialize a media management session by sending ON to the channel.
+ The related source thing will then start sending out media management information in the MM channels.
+ To close the session - simply send OFF to the channel.
+ Sending OFF to the channel when a session has not been initialized does nothing.
+ Likewise if the related source is a tuner, this command does nothing.
##### System Favorites
There are three different ways to use this channel:
-1. Save a system favorite. Send a representation with "valid" set to true. Example: to set system favorite 3 to what is playing in the zone: `[{"id":3,"valid":true,"name":"80s Rock"}]`. If system favorite 3 was invalid, this would save what is currently playing and make it valid. If system favorite 3 was already valid, this would overlay the favorite with what is currently playing and change its name.
-2. Update the name of a system favorite. Send a representation of an existing ID with "valid" set to true and the new name. Example: we could update system favorite 3 (after the above statement) by sending: `[{"id":3,"valid":true,"name":"80s Rock Even More"}]`. Note this will ONLY change the name (this will NOT save what is currently playing to the system favorite).
-3. Delete a system favorite. Send a representation with "valid" as false. Example: deleting system favorite 3 (after the above statements) by sending: `[{"id":3","valid":false"}]`
+1. Save a system favorite. Send a representation with "valid" set to true.
+ Example: to set system favorite 3 to what is playing in the zone: `[{"id":3,"valid":true,"name":"80s Rock"}]`.
+ If system favorite 3 was invalid, this would save what is currently playing and make it valid.
+ If system favorite 3 was already valid, this would overlay the favorite with what is currently playing and change its name.
+1. Update the name of a system favorite.
+ Send a representation of an existing ID with "valid" set to true and the new name.
+ Example: we could update system favorite 3 (after the above statement) by sending: `[{"id":3,"valid":true,"name":"80s Rock Even More"}]`.
+ Note this will ONLY change the name (this will NOT save what is currently playing to the system favorite).
+1. Delete a system favorite.
+ Send a representation with "valid" as false.
+ Example: deleting system favorite 3 (after the above statements) by sending: `[{"id":3","valid":false"}]`
-The channel will be refreshed with the new representation after processing. If the refreshed representation doesn't include the changes, the russound system rejected them for some reason (generally length of the name).
+The channel will be refreshed with the new representation after processing.
+If the refreshed representation doesn't include the changes, the russound system rejected them for some reason (generally length of the name).
##### Zone Favorites
-The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will have a representation for each VALID favorite in the zone (ie where "valid" is true). You will have up to 2 zone favorites in the JSON array (the ID field will be between 1 and 2).
+The JSON will look like `[{"id":xxx,"valid":true,"name":"yyyy"},...]` and will have a representation for each VALID favorite in the zone (ie where "valid" is true).
+You will have up to 2 zone favorites in the JSON array (the ID field will be between 1 and 2).
There are two different ways to use this channel:
-1. Save a zone favorite. Send a representation with "valid" set to true. Example: to set zone favorite 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"80s Rock"}]`.
-2. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}] `
+1. Save a zone favorite.
+ Send a representation with "valid" set to true.
+ Example: to set zone favorite 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"80s Rock"}]`.
+1. Delete a zone favorite.
+ Send a representation with "valid" as false.
+ Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}]`
-There is no ability to change JUST the name. Sending a new name will save the new name AND set the favorite to what is currently playing.
+There is no ability to change JUST the name.
+Sending a new name will save the new name AND set the favorite to what is currently playing.
-The channel will be refreshed with the new representation after processing. If the refreshed representation doesn't include the changes, the russound system rejected them for some reason (generally length of the name).
+The channel will be refreshed with the new representation after processing.
+If the refreshed representation doesn't include the changes, the russound system rejected them for some reason (generally length of the name).
##### Zone Presets
There are two different ways to use this channel:
-1. Save a preset. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`.
-2. Save a preset with default name. Send a representation to an ID that is invalid with "valid" set to true. Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`.
-3. Delete a zone favorite. Send a representation with "valid" as false. Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}]`
+1. Save a preset.
+ Send a representation to an ID that is invalid with "valid" set to true.
+ Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`.
+1. Save a preset with default name.
+ Send a representation to an ID that is invalid with "valid" set to true.
+ Example: to set a zone pret 2 to what is playing in the zone: `[{"id":2,"valid":true,"name":"103.7 FM"}]`.
+1. Delete a zone favorite.
+ Send a representation with "valid" as false.
+ Example: deleting zone favorite 2 (after the above statement) by sending: `[{"id":2","valid":false"}]`
There is no ability to change JUST the name.
Sending a new name will save the new name AND set the favorite to what is currently playing.
| radiotext3 | | | | | | | | X | |
| radiotext4 | | | | | | | | X | |
-1. Sirius Internal Radio Only
+1. Sirius Internal Radio Only
## Example
The following is an example of
-1. Main controller (#1) at ipaddress 192.168.1.24
-2. One Sources connected to it (#1 is the internal AM/FM)
-3. Four zones on the controller (1-4 in various rooms)
+1. Main controller (#1) at ipaddress 192.168.1.24
+1. One Sources connected to it (#1 is the internal AM/FM)
+1. Four zones on the controller (1-4 in various rooms)
.things
-```
+```java
russound:rio:home [ ipAddress="192.168.1.24", ping=30, retryPolling=10 ]
russound:controller:1 (russound:rio:home) [ controller=1 ]
russound:source:1 (russound:rio:home) [ source=1 ]
This is an example of all the items that can be included (regardless of the above setup)
.items
-```
+```java
Switch Rio_Status "Status [%s]" { channel="russound:rio:home:status" }
Switch Rio_AllOn "All Zones" { channel="russound:rio:home:allon" }
.sitemap
-```
+```perl
Frame label="Russound" {
Text label="System" {
Selection item=Rio_Lang mappings=[ENGLISH="English", RUSSIAN="Russian", CHINESE="Chinese"]
# Sager Weathercaster Binding
-The Sager Weathercaster is a scientific instrument for accurate prediction of the weather.
+The Sager Weathercaster is a scientific instrument for accurate prediction of the weather.
## Limitations
-* To operate, this binding will need to use channel values provided by other means (e.g. Weather Binding, Netatmo, a 1-Wire personal weather station...)
+- To operate, this binding will need to use channel values provided by other means (e.g. Weather Binding, Netatmo, a 1-Wire personal weather station...)
-* This binding buffers readings for some hours before producing weather forecasts (wind direction and sea level pressure). SagerWeatherCaster needs an observation period of minimum 6 hours.
+- This binding buffers readings for some hours before producing weather forecasts (wind direction and sea level pressure). SagerWeatherCaster needs an observation period of minimum 6 hours.
For these reasons, this binding is not a binding in the usual sense.
### SagerCaster
-| Name | Type | Description |
-|--------------------|----------|--------------------------------------------------------------------------|
-| location (*) | Location | Latitude and longitude of the desired weather forecast. |
-| observation-period | int | Minimum delay (in hours) before producing forecasts. Defaulted to 6. |
+| Name | Type | Description |
+| ------------------ | -------- | -------------------------------------------------------------------- |
+| location (*) | Location | Latitude and longitude of the desired weather forecast. |
+| observation-period | int | Minimum delay (in hours) before producing forecasts. Defaulted to 6. |
(*) Only latitude is used by the algorithm.
The binding will use some input channels, that can be configured directly with profiles (sample below).
-| Name | Group |Type | Description |
-|---------------------|--------|---------------------|-----------------------------------------------------------------|
-| is-raining (*) | input |Switch | On if it is raining, else Off. |
-| rain-qtty (*) | input |Number | Any value that give indication of a current rain volume |
-| or | input |Number:Speed | Any value that give indication of a current rain volume eg mm/h |
-| or | input |Number:Length | Any value that give indication of a current rain volume eg mm |
-| cloudiness | input |Number:Dimensionless | Cloud cover percentage |
-| wind-speed-beaufort | input |Number | Wind speed expressed using the Beaufort scale |
-| pressure | input |Number:Pressure | Sea level pressure |
-| wind-angle | input |Number:Angle | Wind direction |
-| temperature | input |Number:Temperature | Outside temperature |
-| timestamp | output |DateTime | Timestamp of the last forecast update |
-| forecast | output |String | Description of the weather forecast |
-| velocity | output |String | Description of the expected wind evolution |
-| velocity-beaufort | output |Number | Expected wind evolution using the Beaufort scale |
-| wind-from | output |String | Expected wind orientation |
-| wind-to | output |String | Evolution of the expected wind orientation |
-| wind-evolution | output |String | Wind orientation evolution over observation period |
-| pressure-trend | output |String | Pressure evolution over observation period |
-| temperature-trend | output |String | Temperature evolution over observation period |
+| Name | Group | Type | Description |
+| ------------------- | ------ | -------------------- | --------------------------------------------------------------- |
+| is-raining (*) | input | Switch | On if it is raining, else Off. |
+| rain-qtty (*) | input | Number | Any value that give indication of a current rain volume |
+| or | input | Number:Speed | Any value that give indication of a current rain volume eg mm/h |
+| or | input | Number:Length | Any value that give indication of a current rain volume eg mm |
+| cloudiness | input | Number:Dimensionless | Cloud cover percentage |
+| wind-speed-beaufort | input | Number | Wind speed expressed using the Beaufort scale |
+| pressure | input | Number:Pressure | Sea level pressure |
+| wind-angle | input | Number:Angle | Wind direction |
+| temperature | input | Number:Temperature | Outside temperature |
+| timestamp | output | DateTime | Timestamp of the last forecast update |
+| forecast | output | String | Description of the weather forecast |
+| velocity | output | String | Description of the expected wind evolution |
+| velocity-beaufort | output | Number | Expected wind evolution using the Beaufort scale |
+| wind-from | output | String | Expected wind orientation |
+| wind-to | output | String | Evolution of the expected wind orientation |
+| wind-evolution | output | String | Wind orientation evolution over observation period |
+| pressure-trend | output | String | Pressure evolution over observation period |
+| temperature-trend | output | String | Temperature evolution over observation period |
(*) You may use either is-raining, either rain-qtty depending upon the data available in your system.
### Things
-```
+```java
sagercaster:sagercaster:triel "Sager Triel" @ "Outside" [location="48,2"]
```
Input channel can be updated via profiles in versions of OH > 2.4.
-```
+```java
Number:Pressure NWS_Abs_Pressure "Pression absolue" <pressure> {channel="netatmo:NAMain:home:insidews:AbsolutePressure", channel="sagercaster:sagercaster:triel:input#pressure" [profile="follow"]}
-Number:Angle NWS_wind_angle "Orientation [%d°]" {channel="netatmo:NAModule2:home:anemometre:WindAngle", channel="sagercaster:sagercaster:triel:input#wind-angle" [profile="follow"]}
+Number:Angle NWS_wind_angle "Orientation [%d°]" {channel="netatmo:NAModule2:home:anemometre:WindAngle", channel="sagercaster:sagercaster:triel:input#wind-angle" [profile="follow"]}
Number:Dimensionless OWM_Cloudiness "Cloudiness [%d %unit%]" <clouds> {channel="openweathermap:weather-and-forecast:api:local:current#cloudiness", channel="sagercaster:sagercaster:triel:input#cloudiness" [profile="follow"] }
Number Synop_beaufort "Beaufort [%d]" <beaufort> {channel="synopanalyzer:synopanalyzer:orly:wind-speed-beaufort", channel="sagercaster:sagercaster:triel:input#wind-speed-beaufort" [profile="follow"] }
Number:Length NWS_rain_1h "Précipitation 1h [%.2f %unit%]" <rain> {channel="netatmo:NAModule3:home:pluviometre:SumRain1", channel="sagercaster:sagercaster:triel:input#rain-qtty" [profile="follow"]}
-
-
```
Here is the definition of output channels
-```
-
+```java
// Items directly derived from inputs
String SWC_windevolution "Wind Evolution" (gSager) {channel="sagercaster:sagercaster:triel:output#wind-evolution"}
String SWC_presstrend "Pressure Trend" (gSager) {channel="sagercaster:sagercaster:triel:output#pressure-trend"}
DateTime SWC_ObservationTime "Timestamp [%1$tH:%1$tM]" <time> (gSager, gTrackAge) {channel="sagercaster:sagercaster:triel:output#timestamp" }
```
-
-
## Supported Things
Samsung TV C (2010), D (2011), E (2012) and F (2013) models should be supported.
-Also support added for TVs using websocket remote interface (2016+ models)
+Also support added for TVs using websocket remote interface (2016+ models)
Because Samsung does not publish any documentation about the TV's UPnP interface, there could be differences between different TV models, which could lead to mismatch problems.
Tested TV models:
| Model | State | Notes |
-|----------------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
+| -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| KU6519 | PARTIAL | Supported channels: `volume`, `mute`, `power`, `keyCode` (at least) |
| LE40D579 | PARTIAL | Supported channels: `volume`, `mute`, `channel`, `keyCode`, `sourceName`, `programTitle`, `channelName`, `power` |
| LE40C650 | PARTIAL | Supported channels: `volume`, `mute`, `channel`, `keyCode`, `brightness`, `contrast`, `colorTemperature`, `power` (only power off, unable to power on) |
E.g.
-```
+```java
Thing samsungtv:tv:livingroom [ hostName="192.168.1.10", port=55000, macAddress="78:bd:bc:9f:12:34", refreshInterval=1000 ]
```
TVs support the following channels:
-| Channel Type ID | Item Type | Description |
-|------------------|-----------|---------------------------------------------------------------------------------------------------------|
-| volume | Dimmer | Volume level of the TV. |
-| mute | Switch | Mute state of the TV. |
-| brightness | Dimmer | Brightness of the TV picture. |
-| contrast | Dimmer | Contrast of the TV picture. |
-| sharpness | Dimmer | Sharpness of the TV picture. |
-| colorTemperature | Number | Color temperature of the TV picture. Minimum value is 0 and maximum 4. |
-| sourceName | String | Name of the current source. |
-| sourceId | Number | Id of the current source. |
-| channel | Number | Selected TV channel number. |
-| programTitle | String | Program title of the current channel. |
-| channelName | String | Name of the current TV channel. |
-| url | String | Start TV web browser and go the given web page. |
-| stopBrowser | Switch | Stop TV's web browser and go back to TV mode. |
-| power | Switch | TV power. Some of the Samsung TV models doesn't allow to set Power ON remotely. |
+| Channel Type ID | Item Type | Description |
+| ---------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------- |
+| volume | Dimmer | Volume level of the TV. |
+| mute | Switch | Mute state of the TV. |
+| brightness | Dimmer | Brightness of the TV picture. |
+| contrast | Dimmer | Contrast of the TV picture. |
+| sharpness | Dimmer | Sharpness of the TV picture. |
+| colorTemperature | Number | Color temperature of the TV picture. Minimum value is 0 and maximum 4. |
+| sourceName | String | Name of the current source. |
+| sourceId | Number | Id of the current source. |
+| channel | Number | Selected TV channel number. |
+| programTitle | String | Program title of the current channel. |
+| channelName | String | Name of the current TV channel. |
+| url | String | Start TV web browser and go the given web page. |
+| stopBrowser | Switch | Stop TV's web browser and go back to TV mode. |
+| power | Switch | TV power. Some of the Samsung TV models doesn't allow to set Power ON remotely. |
| artMode | Switch | TV art mode for e.g. Samsung The Frame TV's. Only relevant if power=off. If set to on when power=on, the power will be switched off |
-| sourceApp | String | Currently active App. |
-| keyCode | String | The key code channel emulates the infrared remote controller and allows to send virtual button presses. |
+| sourceApp | String | Currently active App. |
+| keyCode | String | The key code channel emulates the infrared remote controller and allows to send virtual button presses. |
E.g.
-```
+```java
Group gLivingRoomTV "Living room TV" <screen>
Dimmer TV_Volume "Volume" <soundvolume> (gLivingRoomTV) { channel="samsungtv:tv:livingroom:volume" }
Switch TV_Mute "Mute" <soundvolume_mute> (gLivingRoomTV) { channel="samsungtv:tv:livingroom:mute" }
Values are confirmed to work on UE50MU6179.
| App | Value in sourceApp | Description |
-|---------------|--------------------|-----------------------------------|
+| ------------- | ------------------ | --------------------------------- |
| ARD Mediathek | `ARD Mediathek` | German public TV broadcasting app |
| Browser | `Internet` | Built-in WWW browser |
| Netflix | `Netflix` | Netflix App |
This binding supports following thing types:
| Thing type | Description |
-|------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| ethm-1 | Ethernet bridge, supports [ETHM-1](https://www.satel.pl/en/product/115/) and [ETHM-1 Plus](https://www.satel.pl/en/product/698/) modules |
| int-rs | RS-232 bridge, supports [INT-RS](https://www.satel.pl/en/product/123/) and [INT-RS Plus](https://www.satel.pl/en/product/664/) modules |
| partition | Set of zones representing some physical area or logical relation |
| event-log | A virtual thing that allows reading records from the alarm system event log |
| atd-100 | Wireless temperature detector [ATD-100](https://www.satel.pl/en/produktid/503) |
-
## Discovery
The binding discovers all devices (partitions, zones) defined in the system, but bridge things must be configured manually.
You can configure the following settings for this bridge:
| Name | Required | Description |
-|---------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| host | yes | Host name or IP addres of ETHM-1 module. |
| port | no | TCP port for the integration protocol, defaults to 7094. |
| timeout | no | Timeout value in milliseconds for connect, read and write operations, defaults to 5000 (5secs). |
Example:
-```
+```java
Bridge satel:ethm-1:home [ host="192.168.0.2", refresh=1000, userCode="1234", encryptionKey="abcdefgh" ]
```
-**NOTE:** There can be only one client connected to ETHM-1 module.
-It does not accept new connections if there is already a connection established.
+**NOTE:** There can be only one client connected to ETHM-1 module.
+It does not accept new connections if there is already a connection established.
In case you have troubles connecting to the system using this module, please make sure there is no other client (for example installed 1.x version of the binding) already connected to it.
### int-rs bridge
You can configure the following settings for this bridge:
| Name | Required | Description |
-|-------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
+| ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| port | yes | Serial port connected to the module. |
| timeout | no | Timeout value in milliseconds for connect, read and write operations, defaults to 5000 (5secs). |
| refresh | no | Polling interval in milliseconds, defaults to 5000 (5secs). |
Example:
-```
+```java
Bridge satel:int-rs:home [ port="/dev/ttyS0", refresh=1000, userCode="1234" ]
```
You can configure the following settings for a partition:
| Name | Required | Description |
-|-------------|----------|------------------------------------------------------------------|
+| ----------- | -------- | ---------------------------------------------------------------- |
| id | yes | Partition number |
| forceArming | no | Arms the partition regardless of ongoing troubles and violations |
Example:
-```
+```java
Thing partition partition1 [ id=1, forceArming=true ]
```
You can configure the following settings for a zone:
| Name | Required | Description |
-|-------------|----------|--------------------------------------------------------------------------|
+| ----------- | -------- | ------------------------------------------------------------------------ |
| id | yes | Zone number |
| invertState | no | Changes active (ON) state to 0 |
| wireless | no | This zone is monitored by a wireless detector like APD-100, AFD-100, etc |
Example:
-```
+```java
Thing zone zone1 [ id=1 ]
```
You can configure the following settings for an output:
| Name | Required | Description |
-|-------------|----------|-----------------------------------------------------------------------|
+| ----------- | -------- | --------------------------------------------------------------------- |
| id | yes | Output number |
| invertState | no | Changes active (ON) state to 0 |
| commandOnly | no | Accepts commands only, does not update state of the thing |
Example:
-```
+```java
Thing output output1 [ id=1, invertState=true, wireless=false ]
```
You can configure the following settings for a shutter:
| Name | Required | Description |
-|-------------|----------|-----------------------------------------------------------|
+| ----------- | -------- | --------------------------------------------------------- |
| upId | yes | Output number for "up" direction |
| downId | yes | Output number for "down" direction |
| commandOnly | no | Accepts commands only, does not update state of the thing |
Example:
-```
+```java
Thing shutter shutter1 [ upId=10, downId=11, commandOnly=true ]
```
Example:
-```
+```java
Thing system System [ ]
```
Example:
-```
+```java
Thing event-log EventLog [ ]
```
You can configure the following settings for this thing:
| Name | Required | Description |
-|---------|----------|------------------------------------------------------------|
+| ------- | -------- | ---------------------------------------------------------- |
| id | yes | Zone number in the alarm system monitored by this detector |
| refresh | no | Polling interval in minutes, defaults to 15 |
Example:
-```
+```java
Thing atd-100 KitchenTemp [ id=10, refresh=30 ]
```
### partition
| Name | Type | Description |
-|--------------------|--------|-----------------------------------|
+| ------------------ | ------ | --------------------------------- |
| armed | Switch | Armed |
| really_armed | Switch | Really armed |
| armed_mode_1 | Switch | Armed in mode 1 |
### zone
| Name | Type | Description |
-|------------------------|--------|-----------------------------------------------------------|
+| ---------------------- | ------ | --------------------------------------------------------- |
| violation | Switch | Violation |
| tamper | Switch | Tamper |
| alarm | Switch | Alarm |
**NOTE:** You can change state of mono/bistable outputs only.
| Name | Type | Description |
-|---------------|--------|-----------------------------------------------------------|
+| ------------- | ------ | --------------------------------------------------------- |
| state | Switch | State of the output |
| device_lobatt | Switch | Indicates low battery level in the wireless device |
| device_nocomm | Switch | Indicates communication troubles with the wireless device |
### shutter
| Name | Type | Description |
-|---------------|---------------|----------------------|
+| ------------- | ------------- | -------------------- |
| shutter_state | Rollershutter | State of the shutter |
### system
| Name | Type | Description |
-|-----------------|----------|------------------------------------------------------------------------------------------------------------------------------------|
+| --------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| date_time | DateTime | Date and time on the alarm system |
| troubles | Switch | Active when the system has troubles (trouble LED is blinking on a panel) |
| troubles_memory | Switch | Memorized state of system troubles |
These channels and the thing will be removed in the future release of the binding. Please use `readEvent` rule action instead.
| Name | Type | Description |
-|-------------|----------|----------------------------------------------------------------------------------------|
+| ----------- | -------- | -------------------------------------------------------------------------------------- |
| index | Number | Index of the current record in the event log. Send '-1' to get most recent record. |
| prev_index | Number | Index of the previous record in the event log. Use this value to iterate over the log. |
| timestamp | DateTime | Date and time when the event happened. |
### atd-100
| Name | Type | Description |
-|---------------|--------------------|-----------------------------------------------------------|
+| ------------- | ------------------ | --------------------------------------------------------- |
| temperature | Number:Temperature | Current temperature in the zone |
| device_lobatt | Switch | Indicates low battery level in the wireless device |
| device_nocomm | Switch | Indicates communication troubles with the wireless device |
### readEvent
-This action allows you to read one record from the event log placed at index given by input parameter.
+This action allows you to read one record from the event log placed at index given by input parameter.
The result of this action is compatible with channels of `event-log` thing and contains following values:
| Name | Type | Description |
-|-------------|---------------|----------------------------------------------------------------------------------------|
+| ----------- | ------------- | -------------------------------------------------------------------------------------- |
| index | Number | Index of this record in the event log. |
| prev_index | Number | Index of the previous record in the event log. Use this value to iterate over the log. |
| timestamp | ZonedDateTime | Date and time when the event happened. |
Usage:
-```
- val actions = getActions("satel", "satel:event-log:home:EventLog")
- val eventRec = actions.readEvent(-1)
- logInfo("EventLog", eventRec.get("description"))
+```java
+val actions = getActions("satel", "satel:event-log:home:EventLog")
+val eventRec = actions.readEvent(-1)
+logInfo("EventLog", eventRec.get("description"))
```
**NOTE:** To have this action available, you must have `event-log` thing configured in openHAB.
### satel.things
-```
+```java
Bridge satel:ethm-1:home [ host="192.168.0.2", refresh=1000, userCode="1234", encryptionKey="abcdefgh" ] {
Thing partition MainPartition [ id=1 ]
Thing zone LivingRoomPIR [ id=1 ]
### satel.items
-```
+```java
Group Satel
Group:Switch:OR(ON,OFF) Alarms "Alarms [(%d)]" <siren>
Switch PARTITION_ARMED "Partition armed" (Satel) { channel="satel:partition:home:MainPartition:armed" }
### satel.sitemap
-```
+```perl
Frame label="Alarm system" {
Switch item=Alarms mappings=[OFF="Clear"]
Switch item=PARTITION_ARMED mappings=[ON="Arm", OFF="Disarm"]
### satel.rules
-```
+```java
var String userCode = ""
var Timer keypadTimer = null
var Timer userCodeTimer = null
### binary items
-In openHAB all channels have strict types, which means you cannot use other type then designated for a channel.
+In openHAB all channels have strict types, which means you cannot use other type then designated for a channel.
In Satel binding all binary items are now of 'Switch' type. Using other item types, like 'Contact' is not possible in this version of the binding.
For this reason, when migrating 1.x item files, besides changing binding configuration for each item, you must replace all 'Contact' items to 'Switch' type.
#### satel.items
-```
+```java
Switch MODULE_CONNECTED "Connection status" <network> (Satel)
DateTime MODULE_CONNECTED_SINCE "Connection established at [%1$tF %1$tR]" <time> (Satel)
Number MODULE_CONNECTION_ERRORS "Connection errors [%d]" (Satel)
#### satel.rules
-```
+```java
rule "Satel bridge changed to ONLINE"
when
Thing "satel:ethm-1:home" changed to ONLINE
## Media
-* [Arming and clearing troubles](https://www.youtube.com/watch?v=ogdgn0Dk1G8)
+- [Arming and clearing troubles](https://www.youtube.com/watch?v=ogdgn0Dk1G8)
# SEMSPortal Binding
-This binding can help you include statistics of your SEMS / GoodWe solar panel installation into openHAB.
-It is a read-only connection that maps collected parameters to openHAB channels.
-It provides current, day, month and total yields, as well as some income statistics if you have configured these in the SEMS portal.
+This binding can help you include statistics of your SEMS / GoodWe solar panel installation into openHAB.
+It is a read-only connection that maps collected parameters to openHAB channels.
+It provides current, day, month and total yields, as well as some income statistics if you have configured these in the SEMS portal.
It requires a power station that is connected through the internet to the SEMS portal.
## Supported Things
This binding provides two Thing types: a bridge to the SEMS Portal, and the Power Stations which are found at the Portal.
-The Portal (``semsportal:portal``) represents your account in the SEMS portal.
+The Portal (``semsportal:portal``) represents your account in the SEMS portal.
The Power Station (``semsportal:station``) is an installation of a Power Station or inverter that reports to the SEMS portal and is available to your account.
## Discovery
## Thing Configuration
-The configuration of the Portal Thing (Bridge) is pretty straight forward.
-You need to have your power station set up in the SEMS portal, and you need to have an account that is allowed to view the power station data.
-You should log in at least once in the portal with this account to activate it.
-The Portal needs the username and password to connect and retrieve the data.
-You can configure the update frequency between 1 and 60 minutes.
+The configuration of the Portal Thing (Bridge) is pretty straight forward.
+You need to have your power station set up in the SEMS portal, and you need to have an account that is allowed to view the power station data.
+You should log in at least once in the portal with this account to activate it.
+The Portal needs the username and password to connect and retrieve the data.
+You can configure the update frequency between 1 and 60 minutes.
The default is 5 minutes.
Power Stations have no settings and will be auto discovered when you add a Portal Bridge.
If you prefer manual configuration of things in thing files, you need to supply the power station UUID.
-It can be found in the SEMS portal URL after you have logged in.
+It can be found in the SEMS portal URL after you have logged in.
The URL will look like this:
-```
+```text
https://www.semsportal.com/PowerStation/PowerStatusSnMin/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Example portal configuration with a station:
-```
+```java
Bridge semsportal:portal:myPortal [ username="my@username.com", password="MyPassword" ] {
station solarPanels "Solar Panels" [ stationUUID="xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ]
}
The Portal(Bridge) has no channels.
The Power Station Thing has the following channels:
-| channel | type | description |
-| ------------- | ---------------- | ---------------------------------------------------------------------------------------------------------- |
-| lastUpdate | DateTime | Last time the powerStation sent information to the portal |
-| currentOutput | Number:Power | The current output of the powerStation in Watt |
-| todayTotal | Number:Energy | Todays total generation of the station in kWh |
-| monthTotal | Number:Energy | This month's total generation of the station in kWh |
-| overallTotal | Number:Energy | The total generation of the station since installation, in kWh |
-| todayIncome | Number | Todays income as reported by the portal, if you have configured the power rates of your energy provider |
-| totalIncome | Number | The total income as reported by the portal, if you have configured the power rates of your energy provider |
+| channel | type | description |
+| ------------- | ------------- | ---------------------------------------------------------------------------------------------------------- |
+| lastUpdate | DateTime | Last time the powerStation sent information to the portal |
+| currentOutput | Number:Power | The current output of the powerStation in Watt |
+| todayTotal | Number:Energy | Todays total generation of the station in kWh |
+| monthTotal | Number:Energy | This month's total generation of the station in kWh |
+| overallTotal | Number:Energy | The total generation of the station since installation, in kWh |
+| todayIncome | Number | Todays income as reported by the portal, if you have configured the power rates of your energy provider |
+| totalIncome | Number | The total income as reported by the portal, if you have configured the power rates of your energy provider |
## Parameters
The Power Station Thing has no configuration parameters when auto discovered.
When using thing files you need to provide the station UUID.
-
-| Parameter | Required? | Description |
-| ----------- |:---------:| ---------------------------------------------------------------------------------------------------------- |
-| stationUUID | X | UUID of the station. Can be found on the SEMS portal URL (see description above) |
+| Parameter | Required? | Description |
+| ----------- | :-------: | -------------------------------------------------------------------------------- |
+| stationUUID | X | UUID of the station. Can be found on the SEMS portal URL (see description above) |
The Bridge has the following configuration parameters:
-| Parameter | Required? | Description |
-| ----------- |:---------:| ---------------------------------------------------------------------------------------------------------- |
-| username | X | Account name (email address) at the SEMS portal. Account must have been used at least once to log in. |
-| password | X | Password of the SEMS portal |
-| interval | | Number of minutes between two updates. Between 1 and 60 minutes, defaults to 5 minutes |
+| Parameter | Required? | Description |
+| --------- | :-------: | ----------------------------------------------------------------------------------------------------- |
+| username | X | Account name (email address) at the SEMS portal. Account must have been used at least once to log in. |
+| password | X | Password of the SEMS portal |
+| interval | | Number of minutes between two updates. Between 1 and 60 minutes, defaults to 5 minutes |
## Credits
-This binding has been created using the information provided by RogerG007 in this forum topic: https://community.openhab.org/t/connecting-goodwe-solar-panel-inverter-to-openhab/85480
+This binding has been created using the information provided by RogerG007 in this forum topic: <https://community.openhab.org/t/connecting-goodwe-solar-panel-inverter-to-openhab/85480>
## Supported Things
-| Thing type id | Name |
-|----------------------|-----------------------------------------------|
-| senechome | Senec Home Lithium Battery, V2.0, V2.1, V3 and V3duo |
+| Thing type id | Name |
+| ------------- | ---------------------------------------------------- |
+| senechome | Senec Home Lithium Battery, V2.0, V2.1, V3 and V3duo |
-**Note:** Not all channels are available for all Senec Home types. E.g.
+**Note:** Not all channels are available for all Senec Home types. E.g.
-* only V3, V3duo have a power generator and thus MPPs (V3 has 2 MPP, V3duo has 3 MPP)
-* not equipped battery packs will return 0 for all ...Pack channels
-* currently channels for the first wallbox are implemented (senec could handle 4 wallboxes)
+- only V3, V3duo have a power generator and thus MPPs (V3 has 2 MPP, V3duo has 3 MPP)
+- not equipped battery packs will return 0 for all ...Pack channels
+- currently channels for the first wallbox are implemented (senec could handle 4 wallboxes)
## Thing Configuration
demo.things
-```
+```java
Thing senechome:senechome:pvbattery [ hostname="192.168.0.128", refreshInterval=60, limitationTresholdValue=70, limitationDuration=60 ]
```
## Channels
-| Channel | Type | Description |
-|-----------------------|-----------|--------------------------------------------------------------------------|
-| powerLimitation | percent | How much is your pv generator limited (0% if not limited anyway) |
-| powerLimitationState | ON/OFF | Power limitation active (based on configuration) |
-| currentMPP1 | ampere | PV generator current on MPP1 |
-| currentMPP2 | ampere | PV generator current on MPP2 |
-| currentMPP3 | ampere | PV generator current on MPP3 |
-| powerMPP1 | watt | PV generator power on MPP1 |
-| powerMPP2 | watt | PV generator power on MPP2 |
-| powerMPP3 | watt | PV generator power on MPP3 |
-| voltageMPP1 | volt | PV generator voltage on MPP1 |
-| voltageMPP2 | volt | PV generator voltage on MPP2 |
-| voltageMPP3 | volt | PV generator voltage on MPP3 |
-| houseConsumption | watt | Current power consumption of your house/living |
-| energyProduction | watt | Energy generated by your pv / inverter |
-| batteryPower | watt | Energy processed by battery negative discharge, positive charge |
-| batteryCurrent | ampere | Battery current negative discharge, positive charge |
-| batteryVoltage | volt | Battery Voltage |
-| batteryFuelCharge | percent | Fuel charge of your battery (0 - 100%) |
-| systemState | | Text describing current action of the senec home system (e.g. CHARGE) |
-| systemStateValue | | Value describing current action of the senec home system (e.g. 14) |
-| gridPower | watt | Grid power level, negative for supply, positive values for drawing power |
-| gridPowerDraw | watt | Absolute power level of power draw, zero while supplying |
-| gridPowerSupply | watt | Absolute power level of power supply, zero while drawing |
-| gridPowerPhase1 | watt | Grid power level on Phase 1, negative for supply, positive for drawing |
-| gridPowerPhase2 | watt | Grid power level on Phase 2, negative for supply, positive for drawing |
-| gridPowerPhase3 | watt | Grid power level on Phase 3, negative for supply, positive for drawing |
-| gridCurrentPhase1 | ampere | Grid current on Phase 1, always a positive number |
-| gridCurrentPhase2 | ampere | Grid current on Phase 2, always a positive number |
-| gridCurrentPhase3 | ampere | Grid current on Phase 3, always a positive number |
-| gridVoltagePhase1 | volt | Grid voltage on Phase 1 |
-| gridVoltagePhase2 | volt | Grid voltage on Phase 2 |
-| gridVoltagePhase3 | volt | Grid voltage on Phase 3 |
-| gridFrequency | hertz | Grid frequency |
-| liveBatCharge | kilo watt hour | Live Total Bat Charge |
-| liveBatDischarge | kilo watt hour | Live Total Bat Discharge |
-| liveGridImport | kilo watt hour | Live Total Grid Import |
-| liveGridExport | kilo watt hour | Live Total Grid Export |
-| liveHouseConsumption | kilo watt hour | Live Total House Consumption (without WB) |
-| livePowerGenerator | kilo watt hour | Live Total PV generator generated energy |
-| liveEnergyWallbox1 | kilo watt hour | Live Total Wallbox 1 charged energy |
-| chargedEnergyPack1 | kilo watt hour | total charged energy battery pack 1 |
-| chargedEnergyPack2 | kilo watt hour | total charged energy battery pack 2 |
-| chargedEnergyPack3 | kilo watt hour | total charged energy battery pack 3 |
-| chargedEnergyPack4 | kilo watt hour | total charged energy battery pack 4 |
-| dischargedEnergyPack1 | kilo watt hour | total discharged energy battery pack 1 |
-| dischargedEnergyPack2 | kilo watt hour | total discharged energy battery pack 2 |
-| dischargedEnergyPack3 | kilo watt hour | total discharged energy battery pack 3 |
-| dischargedEnergyPack4 | kilo watt hour | total discharged energy battery pack 4 |
-| cyclesPack1 | | battery charge/discharge cycles pack 1 |
-| cyclesPack2 | | battery charge/discharge cycles pack 2 |
-| cyclesPack3 | | battery charge/discharge cycles pack 3 |
-| cyclesPack4 | | battery charge/discharge cycles pack 4 |
-| currentPack1 | ampere | battery current pack 1 |
-| currentPack2 | ampere | battery current pack 2 |
-| currentPack3 | ampere | battery current pack 3 |
-| currentPack4 | ampere | battery current pack 4 |
-| voltagePack1 | volt | battery voltage pack 1 |
-| voltagePack2 | volt | battery voltage pack 2 |
-| voltagePack3 | volt | battery voltage pack 3 |
-| voltagePack4 | volt | battery voltage pack 4 |
-| maxCellVoltagePack1 | volt | maximum cell voltage battery pack 1 |
-| maxCellVoltagePack2 | volt | maximum cell voltage battery pack 2 |
-| maxCellVoltagePack3 | volt | maximum cell voltage battery pack 3 |
-| maxCellVoltagePack4 | volt | maximum cell voltage battery pack 4 |
-| minCellVoltagePack1 | volt | minimum cell voltage battery pack 1 |
-| minCellVoltagePack2 | volt | minimum cell voltage battery pack 2 |
-| minCellVoltagePack3 | volt | minimum cell voltage battery pack 3 |
-| minCellVoltagePack4 | volt | minimum cell voltage battery pack 4 |
-| batteryTemperature | celsius | battery temperature (maximum of all battery packs) |
-| caseTemperature | celsius | case temperature |
-| mcuTemperature | celsius | MCU (main control unit) temperature |
-| wallbox1State | | Wallbox 1 state as Text (e.g. Charging) |
-| wallbox1StateValue | | Wallbox 1 state as value (e.g. 194) |
-| wallbox1ChargingCurrentPhase1 | ampere | Wallbox 1 charging current Phase 1 |
-| wallbox1ChargingCurrentPhase2 | ampere | Wallbox 1 charging current Phase 2 |
-| wallbox1ChargingCurrentPhase3 | ampere | Wallbox 1 charging current Phase 3 |
-| wallbox1ChargingPower | watt | Wallbox 1 charging power |
+| Channel | Type | Description |
+| ----------------------------- | -------------- | ------------------------------------------------------------------------ |
+| powerLimitation | percent | How much is your pv generator limited (0% if not limited anyway) |
+| powerLimitationState | ON/OFF | Power limitation active (based on configuration) |
+| currentMPP1 | ampere | PV generator current on MPP1 |
+| currentMPP2 | ampere | PV generator current on MPP2 |
+| currentMPP3 | ampere | PV generator current on MPP3 |
+| powerMPP1 | watt | PV generator power on MPP1 |
+| powerMPP2 | watt | PV generator power on MPP2 |
+| powerMPP3 | watt | PV generator power on MPP3 |
+| voltageMPP1 | volt | PV generator voltage on MPP1 |
+| voltageMPP2 | volt | PV generator voltage on MPP2 |
+| voltageMPP3 | volt | PV generator voltage on MPP3 |
+| houseConsumption | watt | Current power consumption of your house/living |
+| energyProduction | watt | Energy generated by your pv / inverter |
+| batteryPower | watt | Energy processed by battery negative discharge, positive charge |
+| batteryCurrent | ampere | Battery current negative discharge, positive charge |
+| batteryVoltage | volt | Battery Voltage |
+| batteryFuelCharge | percent | Fuel charge of your battery (0 - 100%) |
+| systemState | | Text describing current action of the senec home system (e.g. CHARGE) |
+| systemStateValue | | Value describing current action of the senec home system (e.g. 14) |
+| gridPower | watt | Grid power level, negative for supply, positive values for drawing power |
+| gridPowerDraw | watt | Absolute power level of power draw, zero while supplying |
+| gridPowerSupply | watt | Absolute power level of power supply, zero while drawing |
+| gridPowerPhase1 | watt | Grid power level on Phase 1, negative for supply, positive for drawing |
+| gridPowerPhase2 | watt | Grid power level on Phase 2, negative for supply, positive for drawing |
+| gridPowerPhase3 | watt | Grid power level on Phase 3, negative for supply, positive for drawing |
+| gridCurrentPhase1 | ampere | Grid current on Phase 1, always a positive number |
+| gridCurrentPhase2 | ampere | Grid current on Phase 2, always a positive number |
+| gridCurrentPhase3 | ampere | Grid current on Phase 3, always a positive number |
+| gridVoltagePhase1 | volt | Grid voltage on Phase 1 |
+| gridVoltagePhase2 | volt | Grid voltage on Phase 2 |
+| gridVoltagePhase3 | volt | Grid voltage on Phase 3 |
+| gridFrequency | hertz | Grid frequency |
+| liveBatCharge | kilo watt hour | Live Total Bat Charge |
+| liveBatDischarge | kilo watt hour | Live Total Bat Discharge |
+| liveGridImport | kilo watt hour | Live Total Grid Import |
+| liveGridExport | kilo watt hour | Live Total Grid Export |
+| liveHouseConsumption | kilo watt hour | Live Total House Consumption (without WB) |
+| livePowerGenerator | kilo watt hour | Live Total PV generator generated energy |
+| liveEnergyWallbox1 | kilo watt hour | Live Total Wallbox 1 charged energy |
+| chargedEnergyPack1 | kilo watt hour | total charged energy battery pack 1 |
+| chargedEnergyPack2 | kilo watt hour | total charged energy battery pack 2 |
+| chargedEnergyPack3 | kilo watt hour | total charged energy battery pack 3 |
+| chargedEnergyPack4 | kilo watt hour | total charged energy battery pack 4 |
+| dischargedEnergyPack1 | kilo watt hour | total discharged energy battery pack 1 |
+| dischargedEnergyPack2 | kilo watt hour | total discharged energy battery pack 2 |
+| dischargedEnergyPack3 | kilo watt hour | total discharged energy battery pack 3 |
+| dischargedEnergyPack4 | kilo watt hour | total discharged energy battery pack 4 |
+| cyclesPack1 | | battery charge/discharge cycles pack 1 |
+| cyclesPack2 | | battery charge/discharge cycles pack 2 |
+| cyclesPack3 | | battery charge/discharge cycles pack 3 |
+| cyclesPack4 | | battery charge/discharge cycles pack 4 |
+| currentPack1 | ampere | battery current pack 1 |
+| currentPack2 | ampere | battery current pack 2 |
+| currentPack3 | ampere | battery current pack 3 |
+| currentPack4 | ampere | battery current pack 4 |
+| voltagePack1 | volt | battery voltage pack 1 |
+| voltagePack2 | volt | battery voltage pack 2 |
+| voltagePack3 | volt | battery voltage pack 3 |
+| voltagePack4 | volt | battery voltage pack 4 |
+| maxCellVoltagePack1 | volt | maximum cell voltage battery pack 1 |
+| maxCellVoltagePack2 | volt | maximum cell voltage battery pack 2 |
+| maxCellVoltagePack3 | volt | maximum cell voltage battery pack 3 |
+| maxCellVoltagePack4 | volt | maximum cell voltage battery pack 4 |
+| minCellVoltagePack1 | volt | minimum cell voltage battery pack 1 |
+| minCellVoltagePack2 | volt | minimum cell voltage battery pack 2 |
+| minCellVoltagePack3 | volt | minimum cell voltage battery pack 3 |
+| minCellVoltagePack4 | volt | minimum cell voltage battery pack 4 |
+| batteryTemperature | celsius | battery temperature (maximum of all battery packs) |
+| caseTemperature | celsius | case temperature |
+| mcuTemperature | celsius | MCU (main control unit) temperature |
+| wallbox1State | | Wallbox 1 state as Text (e.g. Charging) |
+| wallbox1StateValue | | Wallbox 1 state as value (e.g. 194) |
+| wallbox1ChargingCurrentPhase1 | ampere | Wallbox 1 charging current Phase 1 |
+| wallbox1ChargingCurrentPhase2 | ampere | Wallbox 1 charging current Phase 2 |
+| wallbox1ChargingCurrentPhase3 | ampere | Wallbox 1 charging current Phase 3 |
+| wallbox1ChargingPower | watt | Wallbox 1 charging power |
## Items
Sample:
-```
+```java
Number SenecPowerLimitation "pv generator limit [%d %%]" <heating> { channel="senechome:senechome:pvbattery:powerLimitation" }
Switch SenecPowerLimitationState "Power limitation active" <switch> { channel="senechome:senechome:pvbattery:powerLimitationState" }
Number SenecHouseConsumption "Current power consumption [%d W]" <energy> { channel="senechome:senechome:pvbattery:houseConsumption" }
Sample:
-```
+```perl
Text label="Power Grid"{
Frame label="Photovoltaik" {
Default item=SenecPowerLimitation
## Introduction
The seneye monitor monitors what is happening inside your aquarium to ensure that the aquatic life remains healthy.
-The monitor allows you to continuously track the changes in the water parameters, alerting you to the problems before they affect the fish.
+The monitor allows you to continuously track the changes in the water parameters, alerting you to the problems before they affect the fish.
At least one Seneye monitor is required ([Home / pond or reef](https://www.seneye.com/devices/compare)) and the measure results must be synced to the seneye cloud by using a seneye web server (see [shop](https://www.seneye.com/store), there is one for wifi and one for a wired network)
Each monitor is represented by one seneye thing.
## Supported Things
-This binding provides one thing type: 'seneye'.
+This binding provides one thing type: 'seneye'.
You can have multiple seneye devices in your home, just make sure that your aquarium_name is properly set for each seneye thing.
## Discovery
The following settings must be configured in order to make your seneye binding work:
-| Setting | |
-|----------------------|---------------------------------------------------------------------------------|
-| aquarium_name | The name of the aquarium, as specified in [seneye.me](https://www.seneye.me/). |
-| | Useful to distinguish multiple seneye installations. |
-| username | Your login name for [seneye.me](https://www.seneye.me/) |
-| password | Your password for [seneye.me](https://www.seneye.me/) |
-| poll_time | How often (in minutes) should the seneye account be checked. |
+| Setting | |
+| ------------- | ------------------------------------------------------------------------------ |
+| aquarium_name | The name of the aquarium, as specified in [seneye.me](https://www.seneye.me/). |
+| | Useful to distinguish multiple seneye installations. |
+| username | Your login name for [seneye.me](https://www.seneye.me/) |
+| password | Your password for [seneye.me](https://www.seneye.me/) |
+| poll_time | How often (in minutes) should the seneye account be checked. |
## Channels
The following channels are supported:
-| Channel Type ID | Item Type | Description |
-|-------------------------|--------------|------------------------------------------------------------------|
-| temperature | String | The water temperature |
-| ph | String | The PH level of the water |
-| nh3 | String | The level of Ammonia (NH3) in the water |
-| nh4 | String | The level of Ammonium (NH4) in the water |
-| O2 | String | The level of oxygene in the water |
-| lux | String | The lux level of your aquarium lightning, if available |
-| par | String | The par level of your aquarium lightning, if available |
-| kelvin | String | The kelvin level of your aquarium lightning, if available |
-| lastreading | DateTime | The moment when the last readings are received from the monitor |
-| slideexpires | DateTime | The moment when the current slide will expire |
-| wrongslide | String | The Slide is not valid (normally expired) |
-| slideserial | String | The serial number of the Slide |
-| outofwater | String | The Slide is reporting being out of the water |
-| disconnected | String | The Seneye has not uploaded any updates recently |
+| Channel Type ID | Item Type | Description |
+| --------------- | --------- | --------------------------------------------------------------- |
+| temperature | String | The water temperature |
+| ph | String | The PH level of the water |
+| nh3 | String | The level of Ammonia (NH3) in the water |
+| nh4 | String | The level of Ammonium (NH4) in the water |
+| O2 | String | The level of oxygene in the water |
+| lux | String | The lux level of your aquarium lightning, if available |
+| par | String | The par level of your aquarium lightning, if available |
+| kelvin | String | The kelvin level of your aquarium lightning, if available |
+| lastreading | DateTime | The moment when the last readings are received from the monitor |
+| slideexpires | DateTime | The moment when the current slide will expire |
+| wrongslide | String | The Slide is not valid (normally expired) |
+| slideserial | String | The serial number of the Slide |
+| outofwater | String | The Slide is reporting being out of the water |
+| disconnected | String | The Seneye has not uploaded any updates recently |
## Full example
A manual configuration through a `things/seneye.things` file could look like this:
-```
+```java
Thing seneye:monitor:mySeneye "Seneye" @ "Living Room" [aquarium_name="MyAquarium", username="mail@example.com", password="xxx", poll_time=5]
```
A manual configuration through a `demo.items` file could look like this:
-```
+```java
String mySeneye_Temperature "Temp [%s] C" { channel="seneye:monitor:mySeneye:temperature" }
String mySeneye_PH "PH [%s]" { channel="seneye:monitor:mySeneye:ph" }
String mySeneye_NH3 "NH3 [%s]" { channel="seneye:monitor:mySeneye:nh3" }
The sitemap could look like this:
-```
+```perl
sitemap home label="My home" {
Frame label="Aquarium" {
Text item=mySeneye_Temperature label="Temperature [%.1f °C]" icon="temperature"
The senseBox thing requires the box Id (which can be obtained on the map) and an interval in seconds for the API polling.
The senseBox support team wrote in an email that polling even every five minutes is still o.k., therefore the minimum is hardcoded to be 300 seconds.
-```
+```java
Thing sensebox:box:home [ senseBoxId = "foothesmurfingbar", refreshInterval = 600 ]
```
The binding introduces the following channels:
| Channel ID | Channel Description | Supported item type | Advanced |
-|-------------------------------------------------|-------------------------------------------------------------|----------------------|----------|
+| ----------------------------------------------- | ----------------------------------------------------------- | -------------------- | -------- |
| descriptors#location | Location of the box | Point | False |
| measurements#uvIntensity | Intensity of Ultraviolet radiation | Number:Intensity | False |
| measurements#illuminance | Illuminance | Number:Illuminance | False |
sensebox.things:
-```
+```java
Thing sensebox:box:davos [ senseBoxId = "5b94a2c97c51910019097f14", refreshInterval = 900 ]
```
sensebox.items:
-```
+```java
Location Davos_Location "Davos Location" { channel = "sensebox:box:davos:descriptors#location" }
Number:Intensity Davos_UVIntensity "Davos UvIntensity [%.2f %unit%]" <light> { channel = "sensebox:box:davos:measurements#uvIntensity" }
sensebox.sitemap:
-```
+```perl
sitemap sensebox label="SenseBox Davos" {
Text item=Davos_Temperature
Text item=Davos_Pressure
## senseBox API
-* <https://docs.opensensemap.org/>
-* <https://docs.opensensemap.org/#api-Boxes-findBox>
-* <https://docs.opensensemap.org/#api-Measurements-getMeasurements>
+- <https://docs.opensensemap.org/>
+- <https://docs.opensensemap.org/#api-Boxes-findBox>
+- <https://docs.opensensemap.org/#api-Measurements-getMeasurements>
-* <https://api.opensensemap.org/boxes/:boxId>
-* <https://api.opensensemap.org/boxes/:senseBoxId/sensors>
+- <https://api.opensensemap.org/boxes/:boxId>
+- <https://api.opensensemap.org/boxes/:senseBoxId/sensors>
# Sensibo Binding
-This binding integrates the Sensibo Sky aircondition remote control
-See https://www.sensibo.com/
+This binding integrates the Sensibo Sky aircondition remote control
+See <https://www.sensibo.com/>
## Supported Things
This binding supports Sensibo Sky only.
-* `account` = Sensibo API - the account bridge
-* `sensibosky` = Sensibo Sky remote control
+- `account` = Sensibo API - the account bridge
+- `sensibosky` = Sensibo Sky remote control
## Discovery
-In order to do discovery, add a thing of type Sensibo API and add the API key.
-API key can be obtained here: https://home.sensibo.com/me/api
+In order to do discovery, add a thing of type Sensibo API and add the API key.
+API key can be obtained here: <https://home.sensibo.com/me/api>
## Thing Configuration
### Account
-* `apiKey` = API key obtained here: https://home.sensibo.com/me/api
-* `refreshInterval` = number of seconds between refresh calls to the server
+- `apiKey` = API key obtained here: <https://home.sensibo.com/me/api>
+- `refreshInterval` = number of seconds between refresh calls to the server
### Sensibo Sky
-* `macAddress` = network mac address of device.
+- `macAddress` = network mac address of device.
Can be found printed on the back of the device
Or you can find it during discovery.
### Sensibo Sky
-| Channel | Read/write | Item type | Description |
-| ------------------- | ------------- | --------------------- | ----------- |
-| currentTemperature | R | Number:Temperature | Measured temperature |
-| currentHumidity | R | Number:Dimensionless | Measured relative humidity, reported in percent |
-| targetTemperature | R/W | Number:Temperature | Current target temperature for this room |
-| masterSwitch | R/W | Switch | Switch AC ON or OFF |
-| mode | R/W | String | Current mode (cool, heat, etc, actual modes provided provided by the API) being active |
-| fanLevel | R/W | String | Current fan level (low, auto etc, actual levels provided provided by the API |
-| swingMode | R/W | String | Current swing mode (actual modes provided provided by the API |
-| timer | R/W | Number | Number of seconds until AC is switched off automatically. Setting to a value less than 60 seconds will cancel timer |
+| Channel | Read/write | Item type | Description |
+| ------------------ | ---------- | -------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| currentTemperature | R | Number:Temperature | Measured temperature |
+| currentHumidity | R | Number:Dimensionless | Measured relative humidity, reported in percent |
+| targetTemperature | R/W | Number:Temperature | Current target temperature for this room |
+| masterSwitch | R/W | Switch | Switch AC ON or OFF |
+| mode | R/W | String | Current mode (cool, heat, etc, actual modes provided provided by the API) being active |
+| fanLevel | R/W | String | Current fan level (low, auto etc, actual levels provided provided by the API |
+| swingMode | R/W | String | Current swing mode (actual modes provided provided by the API |
+| timer | R/W | Number | Number of seconds until AC is switched off automatically. Setting to a value less than 60 seconds will cancel timer |
## Full Example
sensibo.things:
-```
+```java
Bridge sensibo:account:home "Sensibo account" [apiKey="XYZASDASDAD", refreshInterval=120] {
Thing sensibosky office "Sensibo Sky Office" [ macAddress="001122334455" ]
}
sensibo.items:
-```
+```java
Number:Temperature AC_Office_Room_Current_Temperature "Temperature [%.1f %unit%]" <temperature> {channel="sensibo:sensibosky:home:office:currentTemperature"}
Number:Dimensionless AC_Office_Room_Current_Humidity "Relative humidity [%.1f %%]" <humidity > {channel="sensibo:sensibosky:home:office:currentHumidity"}
Number:Temperature AC_Office_Room_Target_Temperature "Target temperature [%d %unit%]" <temperature> {channel="sensibo:sensibosky:home:office:targetTemperature"}
sitemap:
-```
+```perl
Switch item=AC_Office_Heater_MasterSwitch
Selection item=AC_Office_Room_Mode
Setpoint item=AC_Office_Room_Target_Temperature
Text item=AC_Office_Room_Current_Temperature
Text item=AC_Office_Room_Current_Humidity
```
-
The Serial binding allows openHAB to communicate over serial ports attached to the openHAB server.
-The binding allows data to be sent and received from a serial port.
+The binding allows data to be sent and received from a serial port.
The binding does not support any particular serial protocols and simply reads what is available and sends what is provided.
The binding can be used to communicate with simple serial devices for which a dedicated openHAB binding does not exist.
A Serial Bridge thing (`serialBridge`) represents a single serial port.
-The bridge supports a String channel which is set to the currently received data from the serial port.
+The bridge supports a String channel which is set to the currently received data from the serial port.
Sending a command to this channel sends the command as a string to the serial port.
-The bridge also supports a String channel which encodes the received data as the string representation of a RawType to handle data that is
-not supported by the REST interface.
+The bridge also supports a String channel which encodes the received data as the string representation of a RawType to handle data that is
+not supported by the REST interface.
A command sent to this channel will only be sent to the serial port if it is encoded as the string representation of a RawType.
A trigger channel is also provided which triggers when data is received.
### Serial Device
-A Serial Device thing (`serialDevice`) can be used to represent data matching a defined pattern as a device.
-The serial port may be providing data for many different devices/sensors, such as a temperature sensor or a doorbell.
-Usually such devices can be identified by performing a pattern match on the received data.
+A Serial Device thing (`serialDevice`) can be used to represent data matching a defined pattern as a device.
+The serial port may be providing data for many different devices/sensors, such as a temperature sensor or a doorbell.
+Usually such devices can be identified by performing a pattern match on the received data.
For example, a Serial Device could be configured to represent a temperature sensor.
-The thing will only update its channels if the received data matches the defined pattern.
+The thing will only update its channels if the received data matches the defined pattern.
-The thing supports generic String and Number channels which can apply a transform on the received data to set the channel state.
+The thing supports generic String and Number channels which can apply a transform on the received data to set the channel state.
Commands sent to the channels can be formatted and transformed before being sent to the device.
The thing also supports Switch and Rollershutter channels which provide simple mappings for the ON, OFF, UP, DOWN and STOP commands.
The configuration for the `serialBridge` consists of the following parameters:
-| Parameter | Description |
-|---------------------|--------------------------------------------------------------------------------------------------------|
-| serialPort | The serial port to use (e.g. Linux: /dev/ttyUSB0, Windows: COM1) (mandatory) |
-| baudRate | Set the baud rate. Valid values: 4800, 9600, 19200, 38400, 57600, 115200 (default 9600) |
-| dataBits | Set the data bits. Valid values: 5, 6, 7, 8 (default 8) |
-| parity | Set the parity. Valid values: N(one), O(dd), E(even), M(ark), S(pace) (default N) |
-| stopBits | Set the stop bits. Valid values: 1, 1.5, 2 (default 1) |
-| charset | The charset to use for converting between bytes and string (e.g. UTF-8,ISO-8859-1) |
+| Parameter | Description |
+| ---------- | --------------------------------------------------------------------------------------- |
+| serialPort | The serial port to use (e.g. Linux: /dev/ttyUSB0, Windows: COM1) (mandatory) |
+| baudRate | Set the baud rate. Valid values: 4800, 9600, 19200, 38400, 57600, 115200 (default 9600) |
+| dataBits | Set the data bits. Valid values: 5, 6, 7, 8 (default 8) |
+| parity | Set the parity. Valid values: N(one), O(dd), E(even), M(ark), S(pace) (default N) |
+| stopBits | Set the stop bits. Valid values: 1, 1.5, 2 (default 1) |
+| charset | The charset to use for converting between bytes and string (e.g. UTF-8,ISO-8859-1) |
The configuration for the `serialDevice` consists of the following parameters:
-| Parameter | Description |
-|---------------------|--------------------------------------------------------------------------------------------------------|
-| patternMatch | Regular expression used to identify device from received data (must match the whole line) (mandatory) |
+| Parameter | Description |
+| ------------ | ----------------------------------------------------------------------------------------------------- |
+| patternMatch | Regular expression used to identify device from received data (must match the whole line) (mandatory) |
## Channels
The channels supported by the `serialBridge` are:
-| Channel | Type | Description |
-|----------|------------------|----------------------------------------------------------------------------------------------------------|
-| `string` | String | Channel for sending/receiving data as a string to/from the serial port. The channel will update its state to a StringType that is the data received from the serial port. A command sent to this channel will be sent out as data through the serial port. |
-| `binary` | String | Channel for sending/receiving data in Base64 format to/from the serial port. The channel will update its state to a StringType which is the string representation of a RawType that contains the data received from the serial port. A command sent to this channel must be encoded as the string representation of a RawType, e.g. `"data:application/octet-stream;base64,MjA7MDU7Q3Jlc3RhO0lEPTI4MDE7VEVNUD0yNTtIVU09NTU7QkFUPU9LOwo="` |
-| `data` | system.rawbutton | Trigger which emits `PRESSED` events (no `RELEASED` events) whenever data is available on the serial port |
-
+| Channel | Type | Description |
+| -------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `string` | String | Channel for sending/receiving data as a string to/from the serial port. The channel will update its state to a StringType that is the data received from the serial port. A command sent to this channel will be sent out as data through the serial port. |
+| `binary` | String | Channel for sending/receiving data in Base64 format to/from the serial port. The channel will update its state to a StringType which is the string representation of a RawType that contains the data received from the serial port. A command sent to this channel must be encoded as the string representation of a RawType, e.g. `"data:application/octet-stream;base64,MjA7MDU7Q3Jlc3RhO0lEPTI4MDE7VEVNUD0yNTtIVU09NTU7QkFUPU9LOwo="` |
+| `data` | system.rawbutton | Trigger which emits `PRESSED` events (no `RELEASED` events) whenever data is available on the serial port |
The channels supported by the `serialDevice` are:
-| Channel Type | Type | Description |
-|---------------|------------------|----------------------------------------------------------------------------------------------------------|
-| `string` | String | Channel for receiving string based commands. The channel can be configured to apply a transform on the received data to convert to the channel state. Commands received by the channel can be formatted and transformed before sending to the device. |
-| `number` | Number | Channel for receiving number based commands. The channel can be configured to apply a transform on the received data to convert to the channel state. Commands received by the channel can be formatted and transformed before sending to the device. |
-| `dimmer` | Dimmer | Channel for receiving commands from a Dimmer. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the ON, OFF, INCREASE and DECREASE commands. |
-| `switch` | Switch | Channel for receiving commands from a Switch. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the ON and OFF commands. |
-| `rollershutter` | Rollershutter | Channel for receiving commands from a Rollershutter. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the UP, DOWN and STOP commands. |
+| Channel Type | Type | Description |
+| --------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `string` | String | Channel for receiving string based commands. The channel can be configured to apply a transform on the received data to convert to the channel state. Commands received by the channel can be formatted and transformed before sending to the device. |
+| `number` | Number | Channel for receiving number based commands. The channel can be configured to apply a transform on the received data to convert to the channel state. Commands received by the channel can be formatted and transformed before sending to the device. |
+| `dimmer` | Dimmer | Channel for receiving commands from a Dimmer. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the ON, OFF, INCREASE and DECREASE commands. |
+| `switch` | Switch | Channel for receiving commands from a Switch. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the ON and OFF commands. |
+| `rollershutter` | Rollershutter | Channel for receiving commands from a Rollershutter. The channel can be configured to apply a transform on the received data to convert to the channel state. The channel can be configured to apply a simple mapping for the UP, DOWN and STOP commands. |
The configuration for the `serialBridge` channels consists of the following parameters:
-| Parameter | Description | Supported Channels |
-|------------------|----------------------------------------------------------------------------------------|--------------------|
-| `stateTransformation` | One or more transformation (concatenated with `∩`) used to convert device data to channel state, e.g. `REGEX:.*?STATE=(.*?);.*` | string, number, dimmer, switch, rollershutter |
-| `commandTransformation` | One or more transformation (concatenated with `∩`) used to convert command to device data, e.g. `JS:device.js` | string, number, dimmer, switch, rollershutter |
-| `commandFormat` | Format string applied to the command before transform, e.g. `ID=671;COMMAND=%s` | string, number, dimmer, rollershutter |
-| `onValue` | Send this value when receiving an ON command | switch, dimmer |
-| `offValue` | Send this value when receiving an OFF command | switch, dimmer |
-| `increaseValue` | Send this value when receiving an INCREASE command | dimmer |
-| `decreaseValue` | Send this value when receiving a DECREASE command | dimmer |
-| `upValue` | Send this value when receiving an UP command | rollershutter |
-| `downValue` | Send this value when receiving a DOWN command | rollershutter |
-| `stopValue` | Send this value when receiving a STOP command | rollershutter |
-
+| Parameter | Description | Supported Channels |
+| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
+| `stateTransformation` | One or more transformation (concatenated with `∩`) used to convert device data to channel state, e.g. `REGEX:.*?STATE=(.*?);.*` | string, number, dimmer, switch, rollershutter |
+| `commandTransformation` | One or more transformation (concatenated with `∩`) used to convert command to device data, e.g. `JS:device.js` | string, number, dimmer, switch, rollershutter |
+| `commandFormat` | Format string applied to the command before transform, e.g. `ID=671;COMMAND=%s` | string, number, dimmer, rollershutter |
+| `onValue` | Send this value when receiving an ON command | switch, dimmer |
+| `offValue` | Send this value when receiving an OFF command | switch, dimmer |
+| `increaseValue` | Send this value when receiving an INCREASE command | dimmer |
+| `decreaseValue` | Send this value when receiving a DECREASE command | dimmer |
+| `upValue` | Send this value when receiving an UP command | rollershutter |
+| `downValue` | Send this value when receiving a DOWN command | rollershutter |
+| `stopValue` | Send this value when receiving a STOP command | rollershutter |
## Full Example
demo.things:
-```
+```java
Bridge serial:serialBridge:sensors [serialPort="/dev/ttyUSB01", baudRate=57600] {
Thing serialDevice temperatureSensor [patternMatch="20;05;Cresta;ID=2801;.*"] {
Channels:
demo.items:
-```
+```java
Number:Temperature myTemp "My Temperature" {channel="serial:serialDevice:sensors:temperatureSensor:temperature"}
Number myHum "My Humidity" {channel="serial:serialDevice:sensors:temperatureSensor:humidity"}
Switch serialRelay "Relay Q1" (Entrance) {channel="serial:serialDevice:sensors:relay:serialRelay"}
The binding defines a single thing type called `button`.
-A button requires the single configuration parameter `port`, which specifies the serial port that should be used.
+A button requires the single configuration parameter `port`, which specifies the serial port that should be used.
The only available channel is a `SYSTEM_RAWBUTTON` channel called `button`, which emits `PRESSED` events (no `RELEASED` events though) whenever data is available on the serial port (which will be read and discarded).
demo.things:
-```
+```java
serialbutton:button:mybutton "My Button" [ port="/dev/ttyS0" ]
```
demo.items:
-```
+```java
Switch MyLight { channel="serialbutton:button:mybutton:button" }
```
_Note:_ This is a trigger channel, so you will most likely bind a second (state) channel to your item, which will control your physical light, so you might end up with the following, if you want to use your button with a Hue bulb:
-```
+```java
Switch MyLight { channel="hue:0210:1:bulb1:color,serialbutton:button:mybutton:button" }
```
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame {
This Binding integrates [Shelly devices](https://shelly.cloud) devloped by Allterco.
-      
+      
-Allterco provides a rich set of smart home devices. All of them are WiFi enabled (2,4GHz, IPv4 only) and provide a documented API.
+Allterco provides a rich set of smart home devices. All of them are WiFi enabled (2,4GHz, IPv4 only) and provide a documented API.
The binding is officially acknowledged by Allterco and openHAB is listed as a reference and directly supports the openHAB community.
The binding controls the devices independently from the Allterco Shelly Cloud (in fact it can be disabled).
- provides detailed information on your Shellys
- helps to diagnose WiFi issues or device instabilities
-- includes some common actions and
+- includes some common actions and
- simplifies firmware updates.
[Shelly Manager](doc/ShellyManager.md) could also act as a firmware upgrade proxy - the device doesn't need to connect directly to the Internet, instead openHAB services as a download proxy, which improves device security.
### Generation 1
-| thing-type | Model | Vendor ID |
-|--------------------|--------------------------------------------------------|-----------|
-| shelly1 | Shelly 1 Single Relay Switch | SHSW-1 |
-| shelly1l | Shelly 1L Single Relay Switch | SHSW-L |
-| shelly1pm | Shelly Single Relay Switch with integrated Power Meter | SHSW-PM |
-| shelly2-relay | Shelly Double Relay Switch in relay mode | SHSW-21 |
-| shelly2-roller | Shelly2 in Roller Mode | SHSW-21 |
-| shelly25-relay | Shelly 2.5 in Relay Switch | SHSW-25 |
-| shelly25-roller | Shelly 2.5 in Roller Mode | SHSW-25 |
-| shelly4pro | Shelly 4x Relay Switch | SHSW-44 |
-| shellydimmer | Shelly Dimmer | SHDM-1 |
-| shellydimmer2 | Shelly Dimmer2 | SHDM-2 |
-| shellyix3 | Shelly ix3 | SHIX3-1 |
-| shellyuni | Shelly UNI | SHUNI-1 |
-| shellyplug | Shelly Plug | SHPLG2-1 |
-| shellyplugs | Shelly Plug-S | SHPLG-S |
-| shellyem | Shelly EM with integrated Power Meters | SHEM |
-| shellyem3 | Shelly 3EM with 3 integrated Power Meter | SHEM-3 |
-| shellyrgbw2-color | Shelly RGBW2 Controller in Color Mode | SHRGBW2 |
-| shellyrgbw2-white | Shelly RGBW2 Controller in White Mode | SHRGBW2 |
-| shellybulb-color | Shelly Bulb in Color Mode | SHBLB-1 |
-| shellybulb-white | Shelly Bulb in White Mode | SHBLB-1 |
-| shellybulbduo | Shelly Duo White | SHBDUO-1 |
-| shellybulbduo | Shelly Duo White G10 | SHBDUO-1 |
-| shellycolorbulb | Shelly Duo Color G10 | SHCB-1 |
-| shellyvintage | Shelly Vintage (White Mode) | SHVIN-1 |
-| shellyht | Shelly Sensor (temperature+humidity) | SHHT-1 |
-| shellyflood | Shelly Flood Sensor | SHWT-1 |
-| shellysmoke | Shelly Smoke Sensor | SHSM-1 |
-| shellymotion | Shelly Motion Sensor | SHMOS-01 |
-| shellymotion2 | Shelly Motion Sensor 2 | SHMOS-02 |
-| shellygas | Shelly Gas Sensor | SHGS-1 |
-| shellydw | Shelly Door/Window | SHDW-1 |
-| shellydw2 | Shelly Door/Window 2 | SHDW-2 |
-| shellybutton1 | Shelly Button 1 | SHBTN-1 |
-| shellybutton2 | Shelly Button 2 | SHBTN-2 |
-| shellysense | Shelly Motion and IR Controller | SHSEN-1 |
-| shellytrv | Shelly TRV | SHTRV-01 |
-| shellydevice | A password protected Shelly device or an unknown type | |
+| thing-type | Model | Vendor ID |
+| ----------------- | ------------------------------------------------------ | --------- |
+| shelly1 | Shelly 1 Single Relay Switch | SHSW-1 |
+| shelly1l | Shelly 1L Single Relay Switch | SHSW-L |
+| shelly1pm | Shelly Single Relay Switch with integrated Power Meter | SHSW-PM |
+| shelly2-relay | Shelly Double Relay Switch in relay mode | SHSW-21 |
+| shelly2-roller | Shelly2 in Roller Mode | SHSW-21 |
+| shelly25-relay | Shelly 2.5 in Relay Switch | SHSW-25 |
+| shelly25-roller | Shelly 2.5 in Roller Mode | SHSW-25 |
+| shelly4pro | Shelly 4x Relay Switch | SHSW-44 |
+| shellydimmer | Shelly Dimmer | SHDM-1 |
+| shellydimmer2 | Shelly Dimmer2 | SHDM-2 |
+| shellyix3 | Shelly ix3 | SHIX3-1 |
+| shellyuni | Shelly UNI | SHUNI-1 |
+| shellyplug | Shelly Plug | SHPLG2-1 |
+| shellyplugs | Shelly Plug-S | SHPLG-S |
+| shellyem | Shelly EM with integrated Power Meters | SHEM |
+| shellyem3 | Shelly 3EM with 3 integrated Power Meter | SHEM-3 |
+| shellyrgbw2-color | Shelly RGBW2 Controller in Color Mode | SHRGBW2 |
+| shellyrgbw2-white | Shelly RGBW2 Controller in White Mode | SHRGBW2 |
+| shellybulb-color | Shelly Bulb in Color Mode | SHBLB-1 |
+| shellybulb-white | Shelly Bulb in White Mode | SHBLB-1 |
+| shellybulbduo | Shelly Duo White | SHBDUO-1 |
+| shellybulbduo | Shelly Duo White G10 | SHBDUO-1 |
+| shellycolorbulb | Shelly Duo Color G10 | SHCB-1 |
+| shellyvintage | Shelly Vintage (White Mode) | SHVIN-1 |
+| shellyht | Shelly Sensor (temperature+humidity) | SHHT-1 |
+| shellyflood | Shelly Flood Sensor | SHWT-1 |
+| shellysmoke | Shelly Smoke Sensor | SHSM-1 |
+| shellymotion | Shelly Motion Sensor | SHMOS-01 |
+| shellymotion2 | Shelly Motion Sensor 2 | SHMOS-02 |
+| shellygas | Shelly Gas Sensor | SHGS-1 |
+| shellydw | Shelly Door/Window | SHDW-1 |
+| shellydw2 | Shelly Door/Window 2 | SHDW-2 |
+| shellybutton1 | Shelly Button 1 | SHBTN-1 |
+| shellybutton2 | Shelly Button 2 | SHBTN-2 |
+| shellysense | Shelly Motion and IR Controller | SHSEN-1 |
+| shellytrv | Shelly TRV | SHTRV-01 |
+| shellydevice | A password protected Shelly device or an unknown type | |
### Generation 2 Plus series
-| thing-type | Model | Vendor ID |
-|---------------------|----------------------------------------------------------|----------------|
-| shellyplus1 | Shelly Plus 1 with 1x relay | SNSW-001X16EU |
-| shellyplus1pm | Shelly Plus 1PM with 1x relay + power meter | SNSW-001P16EU |
-| shellyplus2pm-relay | Shelly Plus 2PM with 2x relay + power meter, relay mode | SNSW-002P16EU |
-| shellyplus2pm-roller| Shelly Plus 2PM with 2x relay + power meter, roller mode | SNSW-002P16EU |
-| shellyplusi4 | Shelly Plus i4 with 4x AC input | SNSN-0024X |
-| shellyplusi4dc | Shelly Plus i4 with 4x DC input | SNSN-0D24X |
-| shellyplusht | Shelly Plus HT with temperature + humidity sensor | SNSN-0013A |
+| thing-type | Model | Vendor ID |
+| -------------------- | -------------------------------------------------------- | ------------- |
+| shellyplus1 | Shelly Plus 1 with 1x relay | SNSW-001X16EU |
+| shellyplus1pm | Shelly Plus 1PM with 1x relay + power meter | SNSW-001P16EU |
+| shellyplus2pm-relay | Shelly Plus 2PM with 2x relay + power meter, relay mode | SNSW-002P16EU |
+| shellyplus2pm-roller | Shelly Plus 2PM with 2x relay + power meter, roller mode | SNSW-002P16EU |
+| shellyplusi4 | Shelly Plus i4 with 4x AC input | SNSN-0024X |
+| shellyplusi4dc | Shelly Plus i4 with 4x DC input | SNSN-0D24X |
+| shellyplusht | Shelly Plus HT with temperature + humidity sensor | SNSN-0013A |
### Generation 2 Pro series
| thing-type | Model | Vendor ID |
-|---------------------|----------------------------------------------------------|----------------|
+| ------------------- | -------------------------------------------------------- | -------------- |
| shellypro1 | Shelly Pro 1 with 1x relay | SPSW-001XE16EU |
| shellypro1pm | Shelly Pro 1 PM with 1x relay + power meter | SPSW-001PE16EU |
| shellypro2-relay | Shelly Pro 2 with 2x relay, relay mode | SPSW-002XE16EU |
| shellypro3 | Shelly Pro 3 with 3x relay (dry contacts) | SPSW-003XE16EU |
| shellypro4pm | Shelly Pro 4 PM with 4x relay + power meter | SPSW-004PE16EU |
-
## Binding Configuration
The binding has the following configuration options:
### Generation 1
-| Parameter |Description |Mandatory|Default |
-|----------------|--------------------------------------------------------------------|---------|------------------------------------------------|
-| defaultUserId |Default user id for HTTP authentication when not set in the Thing | no |admin |
-| defaultPassword|Default password for HTTP authentication when not set in the Thing | no |admin |
-| autoCoIoT |Auto-enable CoIoT events when firmware 1.6+ is enabled (Gen1 only). | no |true |
+| Parameter | Description | Mandatory | Default |
+| --------------- | ------------------------------------------------------------------- | --------- | ------- |
+| defaultUserId | Default user id for HTTP authentication when not set in the Thing | no | admin |
+| defaultPassword | Default password for HTTP authentication when not set in the Thing | no | admin |
+| autoCoIoT | Auto-enable CoIoT events when firmware 1.6+ is enabled (Gen1 only). | no | true |
`defaultUserId` and `defaultPassword:` will be used by the binding if device protection is enabled.
However, the Plus/Pro devices have a fixed user id admin`. Nevertheless the binding provide that option to allow a mixed operation of Gen 1 and 2 devices in the same installation having same defaults.
This is also required when the Shelly devices are not located on the same IP subnet (e.g. using a VPN).
In this case autoCoIoT should be disabled, CoIoT events will not work, because the underlying CoAP protocol is based on Multicast IP, which usually doesn't passes a VPN or routed network.
-'Generation 2:'
+'Generation 2:'
### Generation 2 (Plus
In general devices need to be active to be discovered by the binding.
Battery powered devices need to wake up by pressing the button, they will stay active for a minute or so, which gives you enough time to start the discovery.
-The binding uses mDNS to discover the Shelly devices.
+The binding uses mDNS to discover the Shelly devices.
They periodically announce their presence, which is used by the binding to find them on the local network.
Sometimes you need to run the manual discovery multiple times until you see all your devices.
-`Important for Generation 1 Devices`:
+`Important for Generation 1 Devices`:
It's recommended to enable CoIoT in the device settings for faster response times (event driven rather than polling).
Open the device's Web UI, section "COIOT settings" and select "Enable COCIOT".
It's recommended to switch the Shelly devices to CoAP peer mode if you have only your openHAB system controlling the device.
If you have multiple devices protected by the same credentials it's recommended to set the default user id and password in the binding configuration BEFORE running the discovery.
In this case the binding could directly access the device to retrieve the required information using those credentials.
Otherwise a Thing of type shellyprotected is created in the Inbox and you could set the credentials while adding the Thing.
-In this case the credentials are persisted as part of the Thing configuration.
+In this case the credentials are persisted as part of the Thing configuration.
### Dynamic creation of channels
-The Shelly series of devices has many combinations of relays, meters (different versions), sensors etc.
-For this the binding creates various channels dynamically based on the status information provided by the device at initialization time.
+The Shelly series of devices has many combinations of relays, meters (different versions), sensors etc.
+For this the binding creates various channels dynamically based on the status information provided by the device at initialization time.
If a channel is missing make sure the Thing was discovered correctly and is ONLINE.
If a channel is missing delete the Thing and re-discover it.
Creation of those channels takes about 5-10sec, maybe you need to reload the page to update the browser status.
The binding sets the following Thing status depending on the device status:
-| Status |Description |
-|----------------|------------------------------------------------------------------|
-| INITIALIZING | This is the default status while initializing the Thing. Once the initialization is triggered the Thing switches to Status UNKNOWN. |
-| UNKNOWN | Indicates that the status is currently unknown, which must not show a problem. Usually the Thing stays in this status when the device is in sleep mode. Once the device is reachable and was initialized the Thing switches to status ONLINE.|
-| ONLINE | ONLINE indicates that the device can be accessed and is responding properly. Battery powered devices also stay ONLINE when in sleep mode. The binding has an integrated watchdog timer supervising the device, see below. The Thing switches to status OFFLINE when some type of communication error occurs. |
-| OFFLINE | Communication with the device failed. Check the Thing status in the UI and openHAB's log for an indication of the error. Try restarting OH or deleting and re-discovering the Thing. You could also post to the community thread if the problem persists. |
-| CONFIG PENDING | The thing has been initialized, but device initialization is in progress or pending (e.g. waiting for device wake-up) |
-| ERROR: COMM | Communication with the device has reported an error, check detailed status. |
+| Status | Description |
+| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| INITIALIZING | This is the default status while initializing the Thing. Once the initialization is triggered the Thing switches to Status UNKNOWN. |
+| UNKNOWN | Indicates that the status is currently unknown, which must not show a problem. Usually the Thing stays in this status when the device is in sleep mode. Once the device is reachable and was initialized the Thing switches to status ONLINE. |
+| ONLINE | ONLINE indicates that the device can be accessed and is responding properly. Battery powered devices also stay ONLINE when in sleep mode. The binding has an integrated watchdog timer supervising the device, see below. The Thing switches to status OFFLINE when some type of communication error occurs. |
+| OFFLINE | Communication with the device failed. Check the Thing status in the UI and openHAB's log for an indication of the error. Try restarting OH or deleting and re-discovering the Thing. You could also post to the community thread if the problem persists. |
+| CONFIG PENDING | The thing has been initialized, but device initialization is in progress or pending (e.g. waiting for device wake-up) |
+| ERROR: COMM | Communication with the device has reported an error, check detailed status. |
-`Battery powered devices:`
+`Battery powered devices:`
If the device is in sleep mode and can't be reached by the binding, the Thing will change into CONFIG_PENDING.
Once the device wakes up, the Thing will perform initialization and the state will change to ONLINE.
- else, if CoIoT or WebSocket is enabled: 3*<update Period from device settings>+10sec, usually3*15+10=45sec
- else 2*60+10sec = 130sec
-Once the timer expires the device switches to OFFFLINE and the bindings starts to re-initialize the device periodically.
+Once the timer expires the device switches to OFFFLINE and the bindings starts to re-initialize the device periodically.
You could also create a rule to catch those status changes or device alarms (see rule examples).
## Thing Configuration
-|Parameter |Description |Mandatory|Default |
-|------------------|--------------------------------------------------------------|---------|--------------------------------------------------|
-|deviceIp |IP address of the Shelly device | yes |none |
-|userId |The user id used for HTTP authentication | no |none |
-|password |Password for HTTP authentication | no |none |
-|brightnessAutoOn |true: Output will be activated when brightness > 0 is set | no |true |
-|lowBattery |Threshold for battery level. Set alert when level is below. | no |20 (=20%), only for battery powered devices |
-|updateInterval |Interval for the background status check in seconds. | no |1h for battery powered devices, 60s for all others|
-|eventsButton |true: register event "trigger when a button is pushed" | no |false |
-|eventsPush |true: register event "trigger on short and long push" | no |false |
-|eventsSwitch |true: register event "trigger of switching the relay output" | no |true |
-|eventsSensorReport|true: register event "posted updated sensor data" | no |true for sensor devices |
-|eventsCoIoT |true: Listen for CoIoT/COAP events | no |true for battery devices, false for others |
-|eventsRoller |true: register event "trigger" when the roller updates status | no |true for roller devices |
-|favoriteUP |0-4: Favorite id for UP (see Roller Favorites) | no |0 = no favorite id |
-|favoriteDOWN |0-4: Favorite id for DOWN (see Roller Favorites) | no |0 = no favorite id |
-
+| Parameter | Description | Mandatory | Default |
+| ------------------ | ------------------------------------------------------------- | --------- | -------------------------------------------------- |
+| deviceIp | IP address of the Shelly device | yes | none |
+| userId | The user id used for HTTP authentication | no | none |
+| password | Password for HTTP authentication | no | none |
+| brightnessAutoOn | true: Output will be activated when brightness > 0 is set | no | true |
+| lowBattery | Threshold for battery level. Set alert when level is below. | no | 20 (=20%), only for battery powered devices |
+| updateInterval | Interval for the background status check in seconds. | no | 1h for battery powered devices, 60s for all others |
+| eventsButton | true: register event "trigger when a button is pushed" | no | false |
+| eventsPush | true: register event "trigger on short and long push" | no | false |
+| eventsSwitch | true: register event "trigger of switching the relay output" | no | true |
+| eventsSensorReport | true: register event "posted updated sensor data" | no | true for sensor devices |
+| eventsCoIoT | true: Listen for CoIoT/COAP events | no | true for battery devices, false for others |
+| eventsRoller | true: register event "trigger" when the roller updates status | no | true for roller devices |
+| favoriteUP | 0-4: Favorite id for UP (see Roller Favorites) | no | 0 = no favorite id |
+| favoriteDOWN | 0-4: Favorite id for DOWN (see Roller Favorites) | no | 0 = no favorite id |
### General Notes
Every device has a channel group `device` with the following channels:
-|Group |Channel |Type |read-only|Description |
-|----------|-------------------|--------|---------|---------------------------------------------------------------------------------|
-|device |deviceName |String |yes |Device name as configured in the Shelly App |
-| |uptime |Number |yes |Number of seconds since the device was powered up |
-| |wifiSignal |Number |yes |WiFi signal strength (4=excellent, 3=good, 2=not string, 1=unreliable, 0=none) |
-| |internalTemp |Number |yes |Internal device temperature (when provided by the device) |
-| |selfTest |String |yes |Result from device self-test (pending/not_completed/running/completed/unknown) |
-| |alarm |Trigger |yes |Self-Test result not_completed/completed/running/pending |
-| |supplyVoltage |Number |yes |Shelly 1PM, 1L, 2.5: Supply voltage (fixed or measured depending on device) |
-| |accumulatedWatts |Number |yes |Accumulated power in W of the device (including all meters) |
-| |accumulatedTotal |Number |yes |Accumulated total power in kwh of the device (including all meters) |
-| |accumulatedReturned|Number |yes |Accumulated returned power in kwh of the device (including all meters) |
-| |heartBeat |DateTime|yes |Timestamp of the last successful device communication |
-| |updateAvailable |Switch |yes |ON: A firmware update is available |
-| |statusLed |Switch |r/w |ON: Status LED is disabled, OFF: LED enabled |
-| |powerLed |Switch |r/w |ON: Power LED is disabled, OFF: LED enabled |
-| |charger |Switch |yes |ON: USB charging cable is connected external power supply activated. |
-| |calibrated |Switch |yes |ON: Device/sensor is calibrated (if supported by device). |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------------- | -------- | --------- | ------------------------------------------------------------------------------ |
+| device | deviceName | String | yes | Device name as configured in the Shelly App |
+| | uptime | Number | yes | Number of seconds since the device was powered up |
+| | wifiSignal | Number | yes | WiFi signal strength (4=excellent, 3=good, 2=not string, 1=unreliable, 0=none) |
+| | internalTemp | Number | yes | Internal device temperature (when provided by the device) |
+| | selfTest | String | yes | Result from device self-test (pending/not_completed/running/completed/unknown) |
+| | alarm | Trigger | yes | Self-Test result not_completed/completed/running/pending |
+| | supplyVoltage | Number | yes | Shelly 1PM, 1L, 2.5: Supply voltage (fixed or measured depending on device) |
+| | accumulatedWatts | Number | yes | Accumulated power in W of the device (including all meters) |
+| | accumulatedTotal | Number | yes | Accumulated total power in kwh of the device (including all meters) |
+| | accumulatedReturned | Number | yes | Accumulated returned power in kwh of the device (including all meters) |
+| | heartBeat | DateTime | yes | Timestamp of the last successful device communication |
+| | updateAvailable | Switch | yes | ON: A firmware update is available |
+| | statusLed | Switch | r/w | ON: Status LED is disabled, OFF: LED enabled |
+| | powerLed | Switch | r/w | ON: Power LED is disabled, OFF: LED enabled |
+| | charger | Switch | yes | ON: USB charging cable is connected external power supply activated. |
+| | calibrated | Switch | yes | ON: Device/sensor is calibrated (if supported by device). |
Availability of channels is depending on the device type.
The binding detects many of those channels on-the-fly (when Thing changes to ONLINE state) and adjusts the Thing's channel structure.
Depending on the firmware release the Shelly devices supports 2 different mechanims to report sensor updates or events.
1. Action URLs
+ Usually the binding polls the device to update the status and maps the returned values to the various channels.
+ In addition the binding can register so-called Action URLs. Those events are triggered by the device to report special events.
+ You need to disable autoCoIoT in the binding configuration to make specific selections for the Action events.
-Usually the binding polls the device to update the status and maps the returned values to the various channels.
-In addition the binding can register so-called Action URLs. Those events are triggered by the device to report special events.
-You need to disable autoCoIoT in the binding configuration to make specific selections for the Action events.
-
-The following event types could be registered when enabled in the Thing configuration:
+ The following event types could be registered when enabled in the Thing configuration:
-|Event Type |Description |
-|------------------|---------------------------------------------------------------------------------------------------------------|
-|eventsButton |This event is triggered when the device is in button mode. The device reports the ON/OFF status of the button. |
-|eventsSwitch |This event reports the status of the relay output. This could change by the button or API calls. |
-|eventsPush |The device reports the short/longpush events when in button mode momentary, momentary_on_release, one_button or two_button |
-|eventsSensorReport|Sensor devices (like H&T) provide sensor updates when this action URL is enabled. |
+ | Event Type | Description |
+ | ------------------ | --------------------------------------------------------------------------------------------------------------------------- |
+ | eventsButton | This event is triggered when the device is in button mode. The device reports the ON/OFF status of the button. |
+ | eventsSwitch | This event reports the status of the relay output. This could change by the button or API calls. |
+ | eventsPush | The device reports the short/longpush events when in button mode momentary, momentary_on_release, one_button or two_button |
+ | eventsSensorReport | Sensor devices (like H&T) provide sensor updates when this action URL is enabled. |
-Important: The binding defaults to CoIoT when firmware 1.6 or newer is detected.
-This has significant experience improvements and also prevents interfering with other applications, because the device only supports one set of Action URLs.
+ Important: The binding defaults to CoIoT when firmware 1.6 or newer is detected.
+ This has significant experience improvements and also prevents interfering with other applications, because the device only supports one set of Action URLs.
+1. CoIoT / CoAP
+ Starting with version 1.6 the devices reports most status values via the CoIoT protocol.
+ CoIoT provides near-realtime updates and better event support.
+ Firmware 1.7 adds additional status values, also supported by the binding.
+ Version 1.8 introduces CoIoT version 2, which fixes various issues with version 1 and provides almost all relevant status updates.
-2. CoIoT / CoAP
+ If there is no specific reason you should enable CoIoT.
+ Check section Network Settings [here](doc/AdvancedUsers.md) for more information.
-Starting with version 1.6 the devices reports most status values via the CoIoT protocol.
-CoIoT provides near-realtime updates and better event support.
-Firmware 1.7 adds additional status values, also supported by the binding.
-Version 1.8 introduces CoIoT version 2, which fixes various issues with version 1 and provides almost all relevant status updates.
-
-If there is no specific reason you should enable CoIoT. Check section Network Settings [here](doc/AdvancedUsers.md) for more information.
-
-Enable the autoCoIoT option in the binding configuration or eventsCoIoT in the Thing configuration to activate CoIoT.
+ Enable the autoCoIoT option in the binding configuration or eventsCoIoT in the Thing configuration to activate CoIoT.
### Generation 2: WebSockets
The Plus and Pro series of devices use WebSockets for device communication.
Usually the binding establishes a WebSocket connection to the device (http port 80).
-However, battery powered devices like the Plus HT are not reachable while the device is in sleep mode.
+However, battery powered devices like the Plus HT are not reachable while the device is in sleep mode.
For those the binding sets up a so called "Outbound WebSocket" during device initialization.
Afterwards the device wakes up and calls the configured URL, which is the processed by the binding.
The device UI shows the URL when active.
The following trigger types are sent:
-|Event Type |Description |
-|-------------------|---------------------------------------------------------------------------------------------------------------|
-|SHORT_PRESSED |The button was pressed once for a short time (lastEvent=S) |
-|DOUBLE_PRESSED |The button was pressed twice with short delay (lastEvent=SS) |
-|TRIPLE_PRESSED |The button was pressed three times with short delay (lastEvent=SSS) |
-|LONG_PRESSED |The button was pressed for a longer time (lastEvent=L) |
-|SHORT_LONG_PRESSED |A short followed by a long button push (lastEvent=SL) |
-|LONG_SHORT_PRESSED |A long followed by a short button push (lastEvent=LS) |
-
+| Event Type | Description |
+| ------------------ | ------------------------------------------------------------------- |
+| SHORT_PRESSED | The button was pressed once for a short time (lastEvent=S) |
+| DOUBLE_PRESSED | The button was pressed twice with short delay (lastEvent=SS) |
+| TRIPLE_PRESSED | The button was pressed three times with short delay (lastEvent=SSS) |
+| LONG_PRESSED | The button was pressed for a longer time (lastEvent=L) |
+| SHORT_LONG_PRESSED | A short followed by a long button push (lastEvent=SL) |
+| LONG_SHORT_PRESSED | A long followed by a short button push (lastEvent=LS) |
+
Check the channel definitions for the various devices to see if the device supports those events.
-You could use the Shelly App to set the timing for those events.
+You could use the Shelly App to set the timing for those events.
If you want to use those events triggering a rule:
- If a physical switch is connected to the Shelly use the input channel(`input` or `input1`/`input2`) to trigger a rule
-- For a momentary button use the `button` trigger channel as trigger, channels `lastEvent` and `eventCount` will provide details on the event
+- For a momentary button use the `button` trigger channel as trigger, channels `lastEvent` and `eventCount` will provide details on the event
### Alarms
### Non-battery powered devices
-|Event Type|Description|
-|------------|-----------------------------------------------------------------------------------------------------------------|
-|RESTARTED |The device has been restarted. This could be an indicator for a firmware problem. |
-|WEAK_SIGNAL |An alarm is triggered when RSSI is < -80, which indicates an unstable connection. |
-|OVER_TEMP |The device is overheating, check installation and housing. |
-|OVER_LOAD |An over load condition has been detected, e.g. from the roller motor. |
-|OVER_POWER |Maximum allowed power was exceeded. The relay was turned off. |
-|LOAD_ERROR |Device reported a load problem, so far Dimmer only. |
+| Event Type | Description |
+| ----------- | --------------------------------------------------------------------------------- |
+| RESTARTED | The device has been restarted. This could be an indicator for a firmware problem. |
+| WEAK_SIGNAL | An alarm is triggered when RSSI is < -80, which indicates an unstable connection. |
+| OVER_TEMP | The device is overheating, check installation and housing. |
+| OVER_LOAD | An over load condition has been detected, e.g. from the roller motor. |
+| OVER_POWER | Maximum allowed power was exceeded. The relay was turned off. |
+| LOAD_ERROR | Device reported a load problem, so far Dimmer only. |
### Sensors
-|Event Type|Description|
-|------------|-----------------------------------------------------------------------------------------------------------------|
-|POWERON |Device was powered on. |
-|PERIODIC |Periodic wakeup. |
-|BUTTON |Button was pressed, e.g. to wake up the device. |
-|SENSOR |Wake-up due to updated sensor data. |
-|ALARM |Alarm condition was detected, check status, could be OPENED for the DW, flood alarm, smoke alarm |
-|BATTERY |Device reported an update to the battery status. |
-|TEMP_UNDER |Below "temperature under" threshold |
-|TEMP_OVER |Above "temperature over" threshold |
-|VIBRATION |A vibration/tamper was detected (DW2 only) |
+| Event Type | Description |
+| ---------- | ------------------------------------------------------------------------------------------------ |
+| POWERON | Device was powered on. |
+| PERIODIC | Periodic wakeup. |
+| BUTTON | Button was pressed, e.g. to wake up the device. |
+| SENSOR | Wake-up due to updated sensor data. |
+| ALARM | Alarm condition was detected, check status, could be OPENED for the DW, flood alarm, smoke alarm |
+| BATTERY | Device reported an update to the battery status. |
+| TEMP_UNDER | Below "temperature under" threshold |
+| TEMP_OVER | Above "temperature over" threshold |
+| VIBRATION | A vibration/tamper was detected (DW2 only) |
-Refer to section [Full Example:shelly.rules](#shelly-rules) for examples how to catch alarm triggers in openHAB rules
+Refer to section [Full Example:shelly.rules](#shellyrules) for examples how to catch alarm triggers in openHAB rules
## Channels
### Shelly 1 (thing-type: shelly1)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see general notes on channels |
-| |button |Trigger |yes |Event trigger with payload, see SHORT_PRESSED or LONG_PRESSED |
-| |lastEvent |String |yes |Last event type (S/SS/SSS/L) |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 (if connected to temp/hum addon) |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 (if connected to temp/hum addon) |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 (if connected to temp/hum addon) |
-| |humidity |Number |yes |Humidity in percent (if connected to temp/hum addon) |
-| |input1 |Contact |yes |Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see general notes on channels |
+| | button | Trigger | yes | Event trigger with payload, see SHORT_PRESSED or LONG_PRESSED |
+| | lastEvent | String | yes | Last event type (S/SS/SSS/L) |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 (if connected to temp/hum addon) |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 (if connected to temp/hum addon) |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 (if connected to temp/hum addon) |
+| | humidity | Number | yes | Humidity in percent (if connected to temp/hum addon) |
+| | input1 | Contact | yes | Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
### Shelly 1L (thing-type: shelly1l)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input1 |Switch |yes |ON: Input/Button for input 1 is powered, see general notes on channels |
-| |button1 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent1 |String |yes |Last event type (S/SS/SSS/L) for input 1 |
-| |eventCount1 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |input2 |Switch |yes |ON: Input/Button for channel 2 is powered, see general notes on channels |
-| |button2 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent2 |String |yes |Last event type (S/SS/SSS/L) for input 2 |
-| |eventCount2 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 (if connected to temp/hum addon) |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 (if connected to temp/hum addon) |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 (if connected to temp/hum addon) |
-| |humidity |Number |yes |Humidity in percent (if connected to temp/hum addon) |
-| |input1 |Contact |yes |Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input1 | Switch | yes | ON: Input/Button for input 1 is powered, see general notes on channels |
+| | button1 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent1 | String | yes | Last event type (S/SS/SSS/L) for input 1 |
+| | eventCount1 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | input2 | Switch | yes | ON: Input/Button for channel 2 is powered, see general notes on channels |
+| | button2 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent2 | String | yes | Last event type (S/SS/SSS/L) for input 2 |
+| | eventCount2 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 (if connected to temp/hum addon) |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 (if connected to temp/hum addon) |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 (if connected to temp/hum addon) |
+| | humidity | Number | yes | Humidity in percent (if connected to temp/hum addon) |
+| | input1 | Contact | yes | Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
Note: The `meter`for the Shelly 1L is kind of fake.
It doesn't have a real power meter, but you could setup an estimated consumption in the Shelly App, e.g. 60W if you have attached a good old light bulb to the output channel.
### Shelly 1PM (thing-type: shelly1pm)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart)
-|
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 (if connected to temp/hum addon) |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 (if connected to temp/hum addon) |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 (if connected to temp/hum addon) |
-| |humidity |Number |yes |Humidity in percent (if connected to temp/hum addon) |
-| |input1 |Contact |yes |Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | | | | |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 (if connected to temp/hum addon) |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 (if connected to temp/hum addon) |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 (if connected to temp/hum addon) |
+| | humidity | Number | yes | Humidity in percent (if connected to temp/hum addon) |
+| | input1 | Contact | yes | Status of the reed contact (OPEN/CLOSE), only with external switch add-on |
### Shelly EM (thing-type: shellyem)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see general notes on channels |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent |String |yes |Last event type (S/SS/SSS/L) |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|meter1 |currentWatts |Number |yes |Current power consumption in Watts |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |returnedKWH |Number |yes |Total returned energy, kwh |
-| |reactiveWatts|Number |yes |Instantaneous reactive power, Watts |
-| |voltage |Number |yes |RMS voltage, Volts |
-| |powerFactor |Number |yes |Power Factor in percent |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|meter2 |currentWatts |Number |yes |Current power consumption in Watts |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |returnedKWH |Number |yes |Total returned energy, kwh |
-| |reactiveWatts|Number |yes |Instantaneous reactive power, Watts |
-| |voltage |Number |yes |RMS voltage, Volts |
-| |powerFactor |Number |yes |Power Factor in percent |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------- | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see general notes on channels |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent | String | yes | Last event type (S/SS/SSS/L) |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| meter1 | currentWatts | Number | yes | Current power consumption in Watts |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | returnedKWH | Number | yes | Total returned energy, kwh |
+| | reactiveWatts | Number | yes | Instantaneous reactive power, Watts |
+| | voltage | Number | yes | RMS voltage, Volts |
+| | powerFactor | Number | yes | Power Factor in percent |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| meter2 | currentWatts | Number | yes | Current power consumption in Watts |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | returnedKWH | Number | yes | Total returned energy, kwh |
+| | reactiveWatts | Number | yes | Instantaneous reactive power, Watts |
+| | voltage | Number | yes | RMS voltage, Volts |
+| | powerFactor | Number | yes | Power Factor in percent |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly 3EM (thing-type: shellyem3)
-Please note: The product is called Shelly 3EM whereas the device propagates the service under shellyem3.
+Please note: The product is called Shelly 3EM whereas the device propagates the service under shellyem3.
The Thing id is derived from the service name, so that's the reason why the Thing is named shelly**em3** and not shelly3em.
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see general notes on channels |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent |String |yes |Last event type (S/SS/SSS/L) |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|meter1 |currentWatts |Number |yes |Current power consumption in Watts |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |returnedKWH |Number |yes |Total returned energy, kwh |
-| |reactiveWatts|Number |yes |Instantaneous reactive power, Watts |
-| |voltage |Number |yes |RMS voltage, Volts |
-| |current |Number |yes |Current in A |
-| |powerFactor |Number |yes |Power Factor in percent |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|meter2 |currentWatts |Number |yes |Current power consumption in Watts |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |returnedKWH |Number |yes |Total returned energy, kwh |
-| |reactiveWatts|Number |yes |Instantaneous reactive power, Watts |
-| |voltage |Number |yes |RMS voltage, Volts |
-| |current |Number |yes |Current in A |
-| |powerFactor |Number |yes |Power Factor in percent |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|meter3 |currentWatts |Number |yes |Current power consumption in Watts |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |returnedKWH |Number |yes |Total returned energy, kwh |
-| |reactiveWatts|Number |yes |Instantaneous reactive power, Watts |
-| |voltage |Number |yes |RMS voltage, Volts |
-| |current |Number |yes |Current in A |
-| |powerFactor |Number |yes |Power Factor in percent |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------- | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see general notes on channels |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent | String | yes | Last event type (S/SS/SSS/L) |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| meter1 | currentWatts | Number | yes | Current power consumption in Watts |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | returnedKWH | Number | yes | Total returned energy, kwh |
+| | reactiveWatts | Number | yes | Instantaneous reactive power, Watts |
+| | voltage | Number | yes | RMS voltage, Volts |
+| | current | Number | yes | Current in A |
+| | powerFactor | Number | yes | Power Factor in percent |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| meter2 | currentWatts | Number | yes | Current power consumption in Watts |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | returnedKWH | Number | yes | Total returned energy, kwh |
+| | reactiveWatts | Number | yes | Instantaneous reactive power, Watts |
+| | voltage | Number | yes | RMS voltage, Volts |
+| | current | Number | yes | Current in A |
+| | powerFactor | Number | yes | Power Factor in percent |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| meter3 | currentWatts | Number | yes | Current power consumption in Watts |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | returnedKWH | Number | yes | Total returned energy, kwh |
+| | reactiveWatts | Number | yes | Instantaneous reactive power, Watts |
+| | voltage | Number | yes | RMS voltage, Volts |
+| | current | Number | yes | Current in A |
+| | powerFactor | Number | yes | Power Factor in percent |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly 2 - relay mode (thing-type: shelly2-relay)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|relay2 |output |Switch |r/w |Relay #2: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #2: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| relay2 | output | Switch | r/w | Relay #2: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #2: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly 2 - roller mode thing-type: shelly2-roller)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|--------------------------------------------------------------------------------------|
-|roller |control |Rollershutter|r/w |can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |event |Trigger |yes |Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
-| |rollerpos |Number |r/w |Roller position: 100%=open...0%=closed; gets updated when the roller stops, see Notes |
-| |rollerFav |Number |r/w |Select roller position favorite (1-4, 0=no), see Notes |
-| |state |String |yes |Roller state: open/close/stop |
-| |stopReason |String |yes |Last stop reasons: normal, safety_switch or obstacle |
-| |safety |Switch |yes |Indicates status of the Safety Switch, ON=problem detected, powered off |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Accumulated energy consumption in Watts for the full last minute |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (reset on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
-*Note: The Roller should be calibrated using the device Web UI or Shelly App, otherwise the position can't be set.*
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------ | ------------- | --------- | ------------------------------------------------------------------------------------- |
+| roller | control | Rollershutter | r/w | can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | event | Trigger | yes | Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
+| | rollerpos | Number | r/w | Roller position: 100%=open...0%=closed; gets updated when the roller stops, see Notes |
+| | rollerFav | Number | r/w | Select roller position favorite (1-4, 0=no), see Notes |
+| | state | String | yes | Roller state: open/close/stop |
+| | stopReason | String | yes | Last stop reasons: normal, safety_switch or obstacle |
+| | safety | Switch | yes | Indicates status of the Safety Switch, ON=problem detected, powered off |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Accumulated energy consumption in Watts for the full last minute |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (reset on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+
+_Note: The Roller should be calibrated using the device Web UI or Shelly App, otherwise the position can't be set._
The roller positioning calibration has to be performed using the Shelly Web UI or App before the position can be set in percent.
-Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
+Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
-### Shelly 2.5 - relay mode (thing-type:shelly25-relay)
+### Shelly 2.5 - relay mode (thing-type:shelly25-relay)
The Shelly 2.5 includes 2 meters, one for each channel.
Firmware 1.9.2 or newer is required to use the roller position favorites, which are defined in the Shelly App.
-
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 | | | |See group relay1 for Shelly 2 |
-|relay2 | | | |See group relay1 for Shelly 2 |
-|meter1 | | | |See group meter1 for Shelly 2 |
-|meter2 | | | |See group meter1 for Shelly 2 |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------- | ---- | --------- | ----------------------------- |
+| relay1 | | | | See group relay1 for Shelly 2 |
+| relay2 | | | | See group relay1 for Shelly 2 |
+| meter1 | | | | See group meter1 for Shelly 2 |
+| meter2 | | | | See group meter1 for Shelly 2 |
### Shelly 2.5 - roller mode (thing-type: shelly25-roller)
However, it doesn't make sense to differ power consumption for the roller moving up vs. moving down.
For this the binding aggregates the power consumption of both relays and includes the values in "meter1".
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-------------------------------------------------------------------------------------|
-|roller |control |Rollershutter |r/w |can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
-| |rollerpos |Dimmer |r/w |Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |state |String |yes |Roller state: open/close/stop |
-| |stopReason |String |yes |Last stop reasons: normal, safety_switch or obstacle |
-| |safety |Switch |yes |Indicates status of the Safety Switch, ON=problem detected, powered off |
-| |event |Trigger |yes |Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
-|meter1 | | | |See group meter1 for Shelly 2 |
-|meter2 | | | |See group meter1 for Shelly 2 |
+| Group | Channel | Type | read-only | Description |
+| ------ | ---------- | ------------- | --------- | ------------------------------------------------------------------------------------ |
+| roller | control | Rollershutter | r/w | can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
+| | rollerpos | Dimmer | r/w | Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | state | String | yes | Roller state: open/close/stop |
+| | stopReason | String | yes | Last stop reasons: normal, safety_switch or obstacle |
+| | safety | Switch | yes | Indicates status of the Safety Switch, ON=problem detected, powered off |
+| | event | Trigger | yes | Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
+| meter1 | | | | See group meter1 for Shelly 2 |
+| meter2 | | | | See group meter1 for Shelly 2 |
The roller positioning calibration has to be performed using the Shelly Web UI or App before the position can be set in percent.
-Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
+Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
### Shelly4 Pro (thing-type: shelly4pro)
The Shelly 4Pro provides 4 relays and 4 power meters.
-
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 | | | |See group relay1 for Shelly 2 |
-|relay2 | | | |See group relay1 for Shelly 2 |
-|relay3 | | | |See group relay1 for Shelly 2 |
-|relay4 | | | |See group relay1 for Shelly 2 |
-|meter1 | | | |See group meter1 for Shelly 2 |
-|meter2 | | | |See group meter1 for Shelly 2 |
-|meter3 | | | |See group meter1 for Shelly 2 |
-|meter4 | | | |See group meter1 for Shelly 2 |
+
+| Group | Channel | Type | read-only | Description |
+| ------ | ------- | ---- | --------- | ----------------------------- |
+| relay1 | | | | See group relay1 for Shelly 2 |
+| relay2 | | | | See group relay1 for Shelly 2 |
+| relay3 | | | | See group relay1 for Shelly 2 |
+| relay4 | | | | See group relay1 for Shelly 2 |
+| meter1 | | | | See group meter1 for Shelly 2 |
+| meter2 | | | | See group meter1 for Shelly 2 |
+| meter3 | | | | See group meter1 for Shelly 2 |
+| meter4 | | | | See group meter1 for Shelly 2 |
### Shelly Plug-S (thing-type: shellyplugs)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay | | | |See group relay1 for Shelly 2 |
-|meter | | | |See group meter1 for Shelly 2 |
+| Group | Channel | Type | read-only | Description |
+| ----- | ------- | ---- | --------- | ----------------------------- |
+| relay | | | | See group relay1 for Shelly 2 |
+| meter | | | | See group meter1 for Shelly 2 |
### Shelly Dimmer 1 + 2 (thing-type: shellydimmer, shellydimmer2)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |brightness |Dimmer |r/w |Currently selected brightness. |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input1 |Switch |yes |ON: Input/Button for input 1 is powered, see general notes on channels |
-| |button1 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent1 |String |yes |Last event type (S/SS/SSS/L) for input 1 |
-| |eventCount1 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |input2 |Switch |yes |ON: Input/Button for channel 2 is powered, see general notes on channels |
-| |button2 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent2 |String |yes |Last event type (S/SS/SSS/L) for input 2 |
-| |eventCount2 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ----- | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | brightness | Dimmer | r/w | Currently selected brightness. |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input1 | Switch | yes | ON: Input/Button for input 1 is powered, see general notes on channels |
+| | button1 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent1 | String | yes | Last event type (S/SS/SSS/L) for input 1 |
+| | eventCount1 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | input2 | Switch | yes | ON: Input/Button for channel 2 is powered, see general notes on channels |
+| | button2 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent2 | String | yes | Last event type (S/SS/SSS/L) for input 2 |
+| | eventCount2 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
`Note: The Dimmer should be calibrated using the device Web UI or Shelly App.`
### Shelly ix3 (thing-type: shellyix3)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|status1 |input |Switch |yes |State of Input 1 |
-| |button |Trigger |yes |Event trigger: Event trigger, see section Button Events |
-| |lastEvent |String |yes |S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-|status2 | | | |Same for Input 2 |
-|status3 | | | |Same for Input 3 |
+| Group | Channel | Type | read-only | Description |
+| ------- | ---------- | ------- | --------- | --------------------------------------------------------------------- |
+| status1 | input | Switch | yes | State of Input 1 |
+| | button | Trigger | yes | Event trigger: Event trigger, see section Button Events |
+| | lastEvent | String | yes | S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| status2 | | | | Same for Input 2 |
+| status3 | | | | Same for Input 3 |
Channels lastEvent and eventCount are only available if input type is set to momentary button
### Shelly UNI (thing-type: shellyuni)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|----------------------------------------------------------------------------|
-|relay1 | | | |See group relay1 for Shelly 2, no autoOn/autoOff/timerActive channels |
-|relay2 | | | |See group relay1 for Shelly 2, no autoOn/autoOff/timerActive channels |
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 (if connected to temp/hum addon) |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 (if connected to temp/hum addon) |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 (if connected to temp/hum addon) |
-| |humidity |Number |yes |Humidity in percent (if connected to temp/hum addon) |
-| |voltage |Number |yes |ADCS voltage |
-|status |input1 |Switch |yes |State of Input 1 |
-| |input2 |Switch |yes |State of Input 2 |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent |String |yes |S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------- | --------- | ------------------------------------------------------------------------ |
+| relay1 | | | | See group relay1 for Shelly 2, no autoOn/autoOff/timerActive channels |
+| relay2 | | | | See group relay1 for Shelly 2, no autoOn/autoOff/timerActive channels |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 (if connected to temp/hum addon) |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 (if connected to temp/hum addon) |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 (if connected to temp/hum addon) |
+| | humidity | Number | yes | Humidity in percent (if connected to temp/hum addon) |
+| | voltage | Number | yes | ADCS voltage |
+| status | input1 | Switch | yes | State of Input 1 |
+| | input2 | Switch | yes | State of Input 2 |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent | String | yes | S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
### Shelly Bulb (thing-type: shellybulb)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |power |Switch |r/w |Switch light ON/OFF |
-| |mode |Switch |r/w |Color mode: color or white |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF; in sec |
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON: in sec |
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|color | | | |Color settings: only valid in COLOR mode |
-| |hsb |HSB |r/w |Represents the color picker (HSBType), control r/g/b, but not white |
-| |full |String |r/w |Set Red / Green / Blue / Yellow / White mode and switch mode |
-| | | |r/w |Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
-| |red |Dimmer |r/w |Red brightness: 0..100% or 0..255 (control only the red channel) |
-| |green |Dimmer |r/w |Green brightness: 0..100% or 0..255 (control only the green channel) |
-| |blue |Dimmer |r/w |Blue brightness: 0..100% or 0..255 (control only the blue channel) |
-| |white |Dimmer |r/w |White brightness: 0..100% or 0..255 (control only the white channel) |
-| |gain |Dimmer |r/w |Gain setting: 0..100% or 0..100 |
-| |effect |Number |r/w |Puts the light into effect mode: 0..6) |
-| | | | | 0=No effect, 1=Meteor Shows, 2=Gradual Change, 3=Breath |
-| | | | | 4=Flash, 5=On/Off Gradual, 6=Red/Green Change |
-|white | | | |Color settings: only valid in WHITE mode |
-| |temperature |Number |r/w |color temperature (K): 0..100% or 3000..6500 |
-| |brightness |Dimmer | |Brightness: 0..100% or 0..100 |
+| Group | Channel | Type | read-only | Description |
+| ------- | ----------- | ------ | --------- | ---------------------------------------------------------------------- |
+| control | power | Switch | r/w | Switch light ON/OFF |
+| | mode | Switch | r/w | Color mode: color or white |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF; in sec |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON: in sec |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| color | | | | Color settings: only valid in COLOR mode |
+| | hsb | HSB | r/w | Represents the color picker (HSBType), control r/g/b, but not white |
+| | full | String | r/w | Set Red / Green / Blue / Yellow / White mode and switch mode |
+| | | | r/w | Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
+| | red | Dimmer | r/w | Red brightness: 0..100% or 0..255 (control only the red channel) |
+| | green | Dimmer | r/w | Green brightness: 0..100% or 0..255 (control only the green channel) |
+| | blue | Dimmer | r/w | Blue brightness: 0..100% or 0..255 (control only the blue channel) |
+| | white | Dimmer | r/w | White brightness: 0..100% or 0..255 (control only the white channel) |
+| | gain | Dimmer | r/w | Gain setting: 0..100% or 0..100 |
+| | effect | Number | r/w | Puts the light into effect mode: 0..6) |
+| | | | | 0=No effect, 1=Meteor Shows, 2=Gradual Change, 3=Breath |
+| | | | | 4=Flash, 5=On/Off Gradual, 6=Red/Green Change |
+| white | | | | Color settings: only valid in WHITE mode |
+| | temperature | Number | r/w | color temperature (K): 0..100% or 3000..6500 |
+| | brightness | Dimmer | | Brightness: 0..100% or 0..100 |
Note: The openHAB color picker has only values for red/green/blue (RGB), not for white as supported by the RGBW2.
Beside channel `hsb` the binding also offers the `white` channel (hsb as only RGB values).
Or control each color separately with channels `red`, `blue`, `green` (those are advanced channels).
-
### Shelly Duo (thing-type: shellybulbduo)
This information applies to the Shelly Duo-1 as well as the Duo White for the G10 socket.
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF; in sec |
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON: in sec |
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|white | | | |Color settings: only valid in WHITE mode |
-| |temperature |Number |r/w |color temperature (K): 0..100% or 2700..6500 |
-| |brightness |Dimmer | |Brightness: 0..100% or 0..100 |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption in Watts for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart)|
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------------------------------- |
+| control | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF; in sec |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON: in sec |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| white | | | | Color settings: only valid in WHITE mode |
+| | temperature | Number | r/w | color temperature (K): 0..100% or 2700..6500 |
+| | brightness | Dimmer | | Brightness: 0..100% or 0..100 |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption in Watts for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+
### Shelly Vintage (thing-type: shellyvintage)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF; in sec |
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON: in sec |
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|white | | | |Color settings: only valid in WHITE mode |
-| |brightness |Dimmer | |Brightness: 0..100% or 0..100 |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kWh since the device powered up (resets on restart)|
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------------------------------- |
+| control | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF; in sec |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON: in sec |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| white | | | | Color settings: only valid in WHITE mode |
+| | brightness | Dimmer | | Brightness: 0..100% or 0..100 |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kWh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+
### Shelly Duo Color (thing-type: shellyduocolor-color)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |power |Switch |r/w |Switch light ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|color | | | |Color settings: only valid in COLOR mode |
-| |hsb |HSB |r/w |Represents the color picker (HSBType), control r/g/b, but not white |
-| |full |String |r/w |Set Red / Green / Blue / Yellow / White mode and switch mode |
-| | | |r/w |Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
-| |red |Dimmer |r/w |Red brightness: 0..100% or 0..255 (control only the red channel) |
-| |green |Dimmer |r/w |Green brightness: 0..100% or 0..255 (control only the green channel) |
-| |blue |Dimmer |r/w |Blue brightness: 0..100% or 0..255 (control only the blue channel) |
-| |white |Dimmer |r/w |White brightness: 0..100% or 0..255 (control only the white channel) |
-| |gain |Dimmer |r/w |Gain setting: 0..100% or 0..100 |
-| |effect |Number |r/w |Puts the light into effect mode: 0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
-|white | | | |Color settings: only valid in WHITE mode |
-| |temperature |Number |r/w |color temperature (K): 0..100% or 3000..6500 |
-| |brightness |Dimmer | |Brightness: 0..100% or 0..100 |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------- | --------- | ---------------------------------------------------------------------------------------- |
+| control | power | Switch | r/w | Switch light ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| color | | | | Color settings: only valid in COLOR mode |
+| | hsb | HSB | r/w | Represents the color picker (HSBType), control r/g/b, but not white |
+| | full | String | r/w | Set Red / Green / Blue / Yellow / White mode and switch mode |
+| | | | r/w | Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
+| | red | Dimmer | r/w | Red brightness: 0..100% or 0..255 (control only the red channel) |
+| | green | Dimmer | r/w | Green brightness: 0..100% or 0..255 (control only the green channel) |
+| | blue | Dimmer | r/w | Blue brightness: 0..100% or 0..255 (control only the blue channel) |
+| | white | Dimmer | r/w | White brightness: 0..100% or 0..255 (control only the white channel) |
+| | gain | Dimmer | r/w | Gain setting: 0..100% or 0..100 |
+| | effect | Number | r/w | Puts the light into effect mode: 0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
+| white | | | | Color settings: only valid in WHITE mode |
+| | temperature | Number | r/w | color temperature (K): 0..100% or 3000..6500 |
+| | brightness | Dimmer | | Brightness: 0..100% or 0..100 |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
Using the Thing configuration option `brightnessAutoOn` you could decide if the light is turned on when a brightness > 0 is set.
`true`: Brightness will be set and device output is powered = light turns on with the new brightness
`false`: Brightness will be set, but output stays unchanged so light will not be switched on when it's currently off.
-
### Shelly Duo RGBW Color Bulb (thing-type: shellycolorbulb)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |power |Switch |r/w |Switch light ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|color | | | |Color settings: only valid in COLOR mode |
-| |hsb |HSB |r/w |Represents the color picker (HSBType), control r/g/b, bight not white |
-| |full |String |r/w |Set Red / Green / Blue / Yellow / White mode and switch mode |
-| | | |r/w |Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
-| |red |Dimmer |r/w |Red brightness: 0..100% or 0..255 (control only the red channel) |
-| |green |Dimmer |r/w |Green brightness: 0..100% or 0..255 (control only the green channel) |
-| |blue |Dimmer |r/w |Blue brightness: 0..100% or 0..255 (control only the blue channel) |
-| |white |Dimmer |r/w |White brightness: 0..100% or 0..255 (control only the white channel) |
-| |gain |Dimmer |r/w |Gain setting: 0..100% or 0..100 |
-| |effect |Number |r/w |Puts the light into effect mode: 0..3) |
-| | | | |0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-
-Channels in group `color`or `white`apply depending on the selected mode - they are not active at the same time.
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------- | --------- | ----------------------------------------------------------------------- |
+| control | power | Switch | r/w | Switch light ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| color | | | | Color settings: only valid in COLOR mode |
+| | hsb | HSB | r/w | Represents the color picker (HSBType), control r/g/b, bight not white |
+| | full | String | r/w | Set Red / Green / Blue / Yellow / White mode and switch mode |
+| | | | r/w | Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
+| | red | Dimmer | r/w | Red brightness: 0..100% or 0..255 (control only the red channel) |
+| | green | Dimmer | r/w | Green brightness: 0..100% or 0..255 (control only the green channel) |
+| | blue | Dimmer | r/w | Blue brightness: 0..100% or 0..255 (control only the blue channel) |
+| | white | Dimmer | r/w | White brightness: 0..100% or 0..255 (control only the white channel) |
+| | gain | Dimmer | r/w | Gain setting: 0..100% or 0..100 |
+| | effect | Number | r/w | Puts the light into effect mode: 0..3) |
+| | | | | 0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+
+Channels in group `color`or `white`apply depending on the selected mode - they are not active at the same time.
Using the Thing configuration option `brightnessAutoOn` you could decide if the light is turned on when a brightness > 0 is set.
`true`: Brightness will be set and device output is powered = light turns on with the new brightness
### Shelly RGBW2 in Color Mode (thing-type: shellyrgbw2-color)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |power |Switch |r/w |Switch light ON/OFF |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|color |hsb |HSB |r/w |Represents the color picker (HSBType), control r/g/b, bight not white |
-| |full |String |r/w |Set Red / Green / Blue / Yellow / White mode and switch mode |
-| | | |r/w |Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
-| |red |Dimmer |r/w |Red brightness: 0..100% or 0..255 (control only the red channel) |
-| |green |Dimmer |r/w |Green brightness: 0..100% or 0..255 (control only the green channel) |
-| |blue |Dimmer |r/w |Blue brightness: 0..100% or 0..255 (control only the blue channel) |
-| |white |Dimmer |r/w |White brightness: 0..100% or 0..255 (control only the white channel) |
-| |gain |Dimmer |r/w |Gain setting: 0..100% or 0..100 |
-| |effect |Number |r/w |Puts the light into effect mode: 0..3) |
-| | | | |0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kWh since the device powered up (resets on restart)|
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------------------------------- |
+| control | power | Switch | r/w | Switch light ON/OFF |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| color | hsb | HSB | r/w | Represents the color picker (HSBType), control r/g/b, bight not white |
+| | full | String | r/w | Set Red / Green / Blue / Yellow / White mode and switch mode |
+| | | | r/w | Valid settings: "red", "green", "blue", "yellow", "white" or "r,g,b,w" |
+| | red | Dimmer | r/w | Red brightness: 0..100% or 0..255 (control only the red channel) |
+| | green | Dimmer | r/w | Green brightness: 0..100% or 0..255 (control only the green channel) |
+| | blue | Dimmer | r/w | Blue brightness: 0..100% or 0..255 (control only the blue channel) |
+| | white | Dimmer | r/w | White brightness: 0..100% or 0..255 (control only the white channel) |
+| | gain | Dimmer | r/w | Gain setting: 0..100% or 0..100 |
+| | effect | Number | r/w | Puts the light into effect mode: 0..3) |
+| | | | | 0=No effect, 1=Meteor Shower, 2=Gradual Change, 3=Flash |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kWh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly RGBW2 in White Mode (thing-type: shellyrgbw2-white)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |input |Switch |yes |State of Input |
-|channel1 |brightness |Dimmer |r/w |Channel 1: Brightness: 0..100, control power state with ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|channel2 |brightness |Dimmer |r/w |Channel 2: Brightness: 0..100, control power state with ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|channel3 |brightness |Dimmer |r/w |Channel 3: Brightness: 0..100, control power state with ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|channel4 |brightness |Dimmer |r/w |Channel 4: Brightness: 0..100, control power state with ON/OFF |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-| |autoOn |Number |r/w |Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |ON: An auto-on/off timer is active |
-|meter |currentWatts |Number |yes |Current power consumption in Watts (all channels) |
+| Group | Channel | Type | read-only | Description |
+| -------- | ------------ | ------- | --------- | ----------------------------------------------------------------------- |
+| control | input | Switch | yes | State of Input |
+| channel1 | brightness | Dimmer | r/w | Channel 1: Brightness: 0..100, control power state with ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| channel2 | brightness | Dimmer | r/w | Channel 2: Brightness: 0..100, control power state with ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| channel3 | brightness | Dimmer | r/w | Channel 3: Brightness: 0..100, control power state with ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| channel4 | brightness | Dimmer | r/w | Channel 4: Brightness: 0..100, control power state with ON/OFF |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| | autoOn | Number | r/w | Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | ON: An auto-on/off timer is active |
+| meter | currentWatts | Number | yes | Current power consumption in Watts (all channels) |
Please note that the settings of channel group color are only valid in color mode and vice versa for white mode.
-The current firmware doesn't support the timestamp report for the meters.
+The current firmware doesn't support the timestamp report for the meters.
The binding emulates this by using the system time on every update.
In white mode each RGBW2 channel is defined as DimmableLight.
- Sending a Number to set the brightness (percentage 0..100)
Sending brightness 0 will automatically turn off the channel if it's currently on.
-Sending brightness > 0 will automatically turn on the channel if it's currently off.
+Sending brightness > 0 will automatically turn on the channel if it's currently off.
You can define 2 items (1 Switch, 1 Number) mapping to the same channel, see example rules.
### Shelly H&T (thing-type: shellyht)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |temperature |Number |yes |Temperature, unit is reported by tempUnit |
-| |humidity |Number |yes |Relative humidity in % |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------- |
+| sensors | temperature | Number | yes | Temperature, unit is reported by tempUnit |
+| | humidity | Number | yes | Relative humidity in % |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
`Please Note:` If you have connected an USB cable to the H&T, but channel charger is off make sure that "Use external power supply" settings is activated in the Shelly App's device settings.
### Shelly Flood (thing-type: shellyflood)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |temperature |Number |yes |Temperature, unit is reported by tempUnit |
-| |flood |Switch |yes |ON: Flooding condition detected, OFF: no flooding |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------- |
+| sensors | temperature | Number | yes | Temperature, unit is reported by tempUnit |
+| | flood | Switch | yes | ON: Flooding condition detected, OFF: no flooding |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
### Shelly Door/Window (thing-type: shellydw, shellydw2)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |state |Contact |yes |OPEN: Contact is open, CLOSED: Contact is closed |
-| |lux |Number |yes |Brightness in Lux |
-| |illumination |String |yes |Current illumination: dark/twilight/bright |
-| |tilt |Number |yes |Tilt in ° (angle), -1 indicates that the sensor is not calibrated |
-| |vibration |Switch |yes |ON: Vibration detected |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-| |lastError |String |yes |Last device error. |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
-|device |alarm |Trigger |yes |Will receive trigger VIBRATION if DW2 detects vibration |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ----------------------------------------------------------------- |
+| sensors | state | Contact | yes | OPEN: Contact is open, CLOSED: Contact is closed |
+| | lux | Number | yes | Brightness in Lux |
+| | illumination | String | yes | Current illumination: dark/twilight/bright |
+| | tilt | Number | yes | Tilt in ° (angle), -1 indicates that the sensor is not calibrated |
+| | vibration | Switch | yes | ON: Vibration detected |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| | lastError | String | yes | Last device error. |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
+| device | alarm | Trigger | yes | Will receive trigger VIBRATION if DW2 detects vibration |
### Shelly Motion (thing-type: shellymotion)
-Note: You might need to restart the device to enable the discovery mode for 3 minutes(use the Web UI).
+Note: You might need to restart the device to enable the discovery mode for 3 minutes(use the Web UI).
As an alternativ you could press the reset button shortly (refer to the manual to locate the reset button).
While the device is in low power mode (usual operation) it will not respond to discovery requests
-|Group |Channel |Type |read-only|Description |
-|----------|---------------|---------|---------|---------------------------------------------------------------------|
-|sensors |motion |Switch |yes |ON: Motion was detected |
-| |motionTimestamp|DateTime |yes |Time when motion started/was detected |
-| |lux |Number |yes |Brightness in Lux |
-| |illumination |String |yes |Current illumination: dark/twilight/bright |
-| |vibration |Switch |yes |ON: Vibration detected |
-| |charger |Switch |yes |ON: USB charging cable is connected external power supply activated. |
-| |motionActive |Switch |yes |ON: Motion detection is currently active |
-| |sensorSleepTime|Number |no |Specifies the number of sec the sensor should not report events ]
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
-
-Use case for the 'sensorSleepTime':
-You have a Motion controlling your light.
+| Group | Channel | Type | read-only | Description |
+| ------- | --------------- | -------- | --------- | ---------------------------------------------------------------------- |
+| sensors | motion | Switch | yes | ON: Motion was detected |
+| | motionTimestamp | DateTime | yes | Time when motion started/was detected |
+| | lux | Number | yes | Brightness in Lux |
+| | illumination | String | yes | Current illumination: dark/twilight/bright |
+| | vibration | Switch | yes | ON: Vibration detected |
+| | charger | Switch | yes | ON: USB charging cable is connected external power supply activated. |
+| | motionActive | Switch | yes | ON: Motion detection is currently active |
+| | sensorSleepTime | Number | no | Specifies the number of sec the sensor should not report events ] |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
+
+Use case for the 'sensorSleepTime':
+You have a Motion controlling your light.
You switch off the light and want to leave the room, but the motion sensor immediately switches light back on.
-Using 'sensorSleepTime' you could suppress motion events while leaving the room, e.g. for 5sec and the light doesn's switch on.
+Using 'sensorSleepTime' you could suppress motion events while leaving the room, e.g. for 5sec and the light doesn's switch on.
### Shelly Motion 2 (thing-type: shellymotion2)
-|Group |Channel |Type |read-only|Description |
-|----------|---------------|---------|---------|---------------------------------------------------------------------|
-|sensors |motion |Switch |yes |ON: Motion was detected |
-| |motionTimestamp|DateTime |yes |Time when motion started/was detected |
-| |lux |Number |yes |Brightness in Lux |
-| |illumination |String |yes |Current illumination: dark/twilight/bright |
-| |temperature |Number |yes |Temperature measured by the sensor |
-| |vibration |Switch |yes |ON: Vibration detected |
-| |charger |Switch |yes |ON: USB charging cable is connected external power supply activated. |
-| |motionActive |Switch |yes |ON: Motion detection is currently active |
-| |sensorSleepTime|Number |no |Specifies the number of sec the sensor should not report events ]
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
+| Group | Channel | Type | read-only | Description |
+| ------- | --------------- | -------- | --------- | ---------------------------------------------------------------------- |
+| sensors | motion | Switch | yes | ON: Motion was detected |
+| | motionTimestamp | DateTime | yes | Time when motion started/was detected |
+| | lux | Number | yes | Brightness in Lux |
+| | illumination | String | yes | Current illumination: dark/twilight/bright |
+| | temperature | Number | yes | Temperature measured by the sensor |
+| | vibration | Switch | yes | ON: Vibration detected |
+| | charger | Switch | yes | ON: USB charging cable is connected external power supply activated. |
+| | motionActive | Switch | yes | ON: Motion detection is currently active |
+| | sensorSleepTime | Number | no | Specifies the number of sec the sensor should not report events ] |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
### Shelly TRV (thing-type: shellytrv)
-Note: You might need to reboot the device to enable the discovery mode for 3 minutes(use the Web UI).
+Note: You might need to reboot the device to enable the discovery mode for 3 minutes(use the Web UI).
As an alternative you could press the reset button shortly (refer to the manual to locate the reset button).
While the device is in low power mode (usual operation) it will not respond to discovery requests
You should calibrate the valve using the device Web UI or Shelly App before starting to control it using openHAB.
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |temperature |Number |yes |Current Temperature in °C |
-| |state |Contact |yes |Valve status: OPEN or CLOSED (position = 0) |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|control |targetTemp |Number |no |Temperature in °C: 4=Low/Min; 5..30=target temperature;31=Hi/Max |
-| |position |Dimmer |no |Set valve to manual mode (0..100%) disables auto-temp) |
-| |mode |String |no |Switch between manual and automatic mode |
-| |selectedProfile|String |no |Select profile Id: "0"=disable, "1"-"n": profile index |
-| |boost |Number |no |Enable/disable boost mode (full heating power) |
-| |boostTimer |Number |no |Number of minutes to heat at full power while boost mode is enabled |
-| |schedule |Switch |yes |ON: Schedule is active |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |batteryAlert |Switch |yes |Low battery alert |
+| Group | Channel | Type | read-only | Description |
+| ------- | --------------- | -------- | --------- | ------------------------------------------------------------------- |
+| sensors | temperature | Number | yes | Current Temperature in °C |
+| | state | Contact | yes | Valve status: OPEN or CLOSED (position = 0) |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| control | targetTemp | Number | no | Temperature in °C: 4=Low/Min; 5..30=target temperature;31=Hi/Max |
+| | position | Dimmer | no | Set valve to manual mode (0..100%) disables auto-temp) |
+| | mode | String | no | Switch between manual and automatic mode |
+| | selectedProfile | String | no | Select profile Id: "0"=disable, "1"-"n": profile index |
+| | boost | Number | no | Enable/disable boost mode (full heating power) |
+| | boostTimer | Number | no | Number of minutes to heat at full power while boost mode is enabled |
+| | schedule | Switch | yes | ON: Schedule is active |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | batteryAlert | Switch | yes | Low battery alert |
### Shelly Button 1 or 2 (thing-type: shellybutton1 / shellybutton2)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|status |lastEvent |String |yes |S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |button |Trigger |yes |Event trigger with payload SHORT_PRESSED, DOUBLE_PRESSED... |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | --------------------------------------------------------------------- |
+| status | lastEvent | String | yes | S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | button | Trigger | yes | Event trigger with payload SHORT_PRESSED, DOUBLE_PRESSED... |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
### Shelly Smoke (thing-type: shellysmoke)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |temperature |Number |yes |Temperature, unit is reported by tempUnit |
-| |smoke |Number |yes |ON: Smoke detected |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-| |lastError |String |yes |Last device error. |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------- |
+| sensors | temperature | Number | yes | Temperature, unit is reported by tempUnit |
+| | smoke | Number | yes | ON: Smoke detected |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| | lastError | String | yes | Last device error. |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
### Shelly Gas (thing-type: shellygas)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |ppm |Number |yes |Gas concentration (ppm) |
-| |sensorState |String |yes |Sensor state: unknown/warmup/normal/fault |
-| |alarmState |String |yes |Alarm state: unknown/none/mild/heavy/test |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-
-### Shelly Sense (thing-type: shellysense)
-
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|control |key |String |r/w |Send an IR key to the sense. There a 3 different types supported |
-| | | | |Stored key: send the key code defined by the App , e.g. 123_1_up |
-| | | | |Pronto hex: send a Pronto Code in hex format, e.g. 0000 006C 0022 ... |
-| | | | |Pronto base64: in base64 format, will be send 1:1 to the Sense |
-| |motionTime |Number |r/w |Define the number of seconds when the Sense should report motion |
-| |motionLED |Switch |r/w |Control the motion LED: ON when motion is detected or OFF |
-| |charger |Switch |yes |ON: charger connected, OFF: charger not connected. |
-|sensors |temperature |Number |yes |Temperature in °C |
-| |humidity |Number |yes |Relative humidity in % |
-| |lux |Number |yes |Brightness in Lux |
-| |motion |Switch |yes |ON: Motion detected, OFF: No motion (check also motionTime) |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |batteryAlert |Switch |yes |Low battery alert |
+| Group | Channel | Type | read-only | Description |
+| ------- | ----------- | -------- | --------- | ------------------------------------------------------- |
+| sensors | ppm | Number | yes | Gas concentration (ppm) |
+| | sensorState | String | yes | Sensor state: unknown/warmup/normal/fault |
+| | alarmState | String | yes | Alarm state: unknown/none/mild/heavy/test |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+
+### Shelly Sense (thing-type: shellysense)
+
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | --------------------------------------------------------------------- |
+| control | key | String | r/w | Send an IR key to the sense. There a 3 different types supported |
+| | | | | Stored key: send the key code defined by the App , e.g. 123_1_up |
+| | | | | Pronto hex: send a Pronto Code in hex format, e.g. 0000 006C 0022 ... |
+| | | | | Pronto base64: in base64 format, will be send 1:1 to the Sense |
+| | motionTime | Number | r/w | Define the number of seconds when the Sense should report motion |
+| | motionLED | Switch | r/w | Control the motion LED: ON when motion is detected or OFF |
+| | charger | Switch | yes | ON: charger connected, OFF: charger not connected. |
+| sensors | temperature | Number | yes | Temperature in °C |
+| | humidity | Number | yes | Relative humidity in % |
+| | lux | Number | yes | Brightness in Lux |
+| | motion | Switch | yes | ON: Motion detected, OFF: No motion (check also motionTime) |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | batteryAlert | Switch | yes | Low battery alert |
## Shelly Plus Series
### Shelly Plus 1 (thing-type: shellyplus1)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
+| Group | Channel | Type | read-only | Description |
+| ----- | ----------- | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
If the Shelly Add-On is installed:
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 |
-| |temperature4 |Number |yes |Temperature value of external sensor #4 |
-| |temperature5 |Number |yes |Temperature value of external sensor #5 |
-| |humidity |Number |yes |Relative Humidity in percent |
-| |voltage |Number |yes |Measured voltage |
-| |analogInput |Number |yes |Percentage of reference voltage (VREF) at analogous input |
-| |digitalInput |Switch |yes |State of digital input (ON/OFF) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------ | --------- | --------------------------------------------------------- |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 |
+| | temperature4 | Number | yes | Temperature value of external sensor #4 |
+| | temperature5 | Number | yes | Temperature value of external sensor #5 |
+| | humidity | Number | yes | Relative Humidity in percent |
+| | voltage | Number | yes | Measured voltage |
+| | analogInput | Number | yes | Percentage of reference voltage (VREF) at analogous input |
+| | digitalInput | Switch | yes | State of digital input (ON/OFF) |
### Shelly Plus 1PM (thing-type: shellyplus1pm)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ----- | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
If the Shelly Add-On is installed:
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|sensors |temperature1 |Number |yes |Temperature value of external sensor #1 |
-| |temperature2 |Number |yes |Temperature value of external sensor #2 |
-| |temperature3 |Number |yes |Temperature value of external sensor #3 |
-| |temperature4 |Number |yes |Temperature value of external sensor #4 |
-| |temperature5 |Number |yes |Temperature value of external sensor #5 |
-| |humidity |Number |yes |Relative Humidity in percent |
-| |voltage |Number |yes |Measured voltage |
-| |analogInput |Number |yes |Percentage of reference voltage (VREF) at analogous input |
-| |digitalInput |Switch |yes |State of digital input (ON/OFF) |
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | ------ | --------- | --------------------------------------------------------- |
+| sensors | temperature1 | Number | yes | Temperature value of external sensor #1 |
+| | temperature2 | Number | yes | Temperature value of external sensor #2 |
+| | temperature3 | Number | yes | Temperature value of external sensor #3 |
+| | temperature4 | Number | yes | Temperature value of external sensor #4 |
+| | temperature5 | Number | yes | Temperature value of external sensor #5 |
+| | humidity | Number | yes | Relative Humidity in percent |
+| | voltage | Number | yes | Measured voltage |
+| | analogInput | Number | yes | Percentage of reference voltage (VREF) at analogous input |
+| | digitalInput | Switch | yes | State of digital input (ON/OFF) |
### Shelly Plus 2PM - relay mode (thing-type: shellyplus2pm-relay)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter1 |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-|relay2 |output |Switch |r/w |Relay #2: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #2: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter2 |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter1 | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
+| relay2 | output | Switch | r/w | Relay #2: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #2: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter2 | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly Plus 2PM - roller mode (thing-type: shellyplus2pm-roller)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-------------------------------------------------------------------------------------|
-|roller |control |Rollershutter |r/w |can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
-| |rollerPos |Dimmer |r/w |Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |state |String |yes |Roller state: open/close/stop |
-| |stopReason |String |yes |Last stop reasons: normal, safety_switch or obstacle |
-| |safety |Switch |yes |Indicates status of the Safety Switch, ON=problem detected, powered off |
-| |event |Trigger |yes |Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
-|meter | | | |See group meter description |
+| Group | Channel | Type | read-only | Description |
+| ------ | ---------- | ------------- | --------- | ------------------------------------------------------------------------------------ |
+| roller | control | Rollershutter | r/w | can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
+| | rollerPos | Dimmer | r/w | Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | state | String | yes | Roller state: open/close/stop |
+| | stopReason | String | yes | Last stop reasons: normal, safety_switch or obstacle |
+| | safety | Switch | yes | Indicates status of the Safety Switch, ON=problem detected, powered off |
+| | event | Trigger | yes | Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
+| meter | | | | See group meter description |
The roller positioning calibration has to be performed using the Shelly Web UI or App before the position can be set in percent.
-Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
+Refer to [Smartify Roller Shutters with openHAB and Shelly](doc/UseCaseSmartRoller.md) for more information on roller integration.
### Shelly Plus i4, i4DC (thing-types: shellyplusi4, shellyplusi4dc)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|status1 |input |Switch |yes |State of Input 1 |
-| |button |Trigger |yes |Event trigger: Event trigger, see section Button Events |
-| |lastEvent |String |yes |S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
-| |eventCount |Number |yes |Counter gets incremented every time the device issues a button event. |
-|status2 | | | |Same for Input 2 |
-|status3 | | | |Same for Input 3 |
-|status4 | | | |Same for Input 4 |
+| Group | Channel | Type | read-only | Description |
+| ------- | ---------- | ------- | --------- | --------------------------------------------------------------------- |
+| status1 | input | Switch | yes | State of Input 1 |
+| | button | Trigger | yes | Event trigger: Event trigger, see section Button Events |
+| | lastEvent | String | yes | S/SS/SSS for 1/2/3x Shortpush or L for Longpush |
+| | eventCount | Number | yes | Counter gets incremented every time the device issues a button event. |
+| status2 | | | | Same for Input 2 |
+| status3 | | | | Same for Input 3 |
+| status4 | | | | Same for Input 4 |
Channels lastEvent and eventCount are only available if input type is set to momentary button
### Shelly Plus HT (thing-type: shellyplusht)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-----------------------------------------------------------------------|
-|sensors |temperature |Number |yes |Temperature, unit is reported by tempUnit |
-| |humidity |Number |yes |Relative humidity in % |
-| |lastUpdate |DateTime |yes |Timestamp of the last update (any sensor value changed) |
-|battery |batteryLevel |Number |yes |Battery Level in % |
-| |lowBattery |Switch |yes |Low battery alert (< 20%) |
-
+| Group | Channel | Type | read-only | Description |
+| ------- | ------------ | -------- | --------- | ------------------------------------------------------- |
+| sensors | temperature | Number | yes | Temperature, unit is reported by tempUnit |
+| | humidity | Number | yes | Relative humidity in % |
+| | lastUpdate | DateTime | yes | Timestamp of the last update (any sensor value changed) |
+| battery | batteryLevel | Number | yes | Battery Level in % |
+| | lowBattery | Switch | yes | Low battery alert (< 20%) |
## Shelly Pro Series
### Shelly Pro 1 (thing-type: shellypro1)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input1 |Switch |yes |ON: Input/Button for input 1 is powered, see general notes on channels |
-| |button1 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent1 |String |yes |Last event type (S/SS/SSS/L) for input 1 |
-| |eventCount1 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |input2 |Switch |yes |ON: Input/Button for channel 2 is powered, see general notes on channels |
-| |button2 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent2 |String |yes |Last event type (S/SS/SSS/L) for input 2 |
-| |eventCount2 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
+| Group | Channel | Type | read-only | Description |
+| ----- | ----------- | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input1 | Switch | yes | ON: Input/Button for input 1 is powered, see general notes on channels |
+| | button1 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent1 | String | yes | Last event type (S/SS/SSS/L) for input 1 |
+| | eventCount1 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | input2 | Switch | yes | ON: Input/Button for channel 2 is powered, see general notes on channels |
+| | button2 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent2 | String | yes | Last event type (S/SS/SSS/L) for input 2 |
+| | eventCount2 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
### Shelly Pro 1 PM (thing-type: shellypro1pm)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay |output |Switch |r/w |Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input1 |Switch |yes |ON: Input/Button for input 1 is powered, see general notes on channels |
-| |button1 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent1 |String |yes |Last event type (S/SS/SSS/L) for input 1 |
-| |eventCount1 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |input2 |Switch |yes |ON: Input/Button for channel 2 is powered, see general notes on channels |
-| |button2 |Trigger |yes |Event trigger, see section Button Events |
-| |lastEvent2 |String |yes |Last event type (S/SS/SSS/L) for input 2 |
-| |eventCount2 |Number |yes |Counter gets incremented every time the device issues a button event. |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ----- | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay | output | Switch | r/w | Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input1 | Switch | yes | ON: Input/Button for input 1 is powered, see general notes on channels |
+| | button1 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent1 | String | yes | Last event type (S/SS/SSS/L) for input 1 |
+| | eventCount1 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | input2 | Switch | yes | ON: Input/Button for channel 2 is powered, see general notes on channels |
+| | button2 | Trigger | yes | Event trigger, see section Button Events |
+| | lastEvent2 | String | yes | Last event type (S/SS/SSS/L) for input 2 |
+| | eventCount2 | Number | yes | Counter gets incremented every time the device issues a button event. |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly Pro 2 (thing-type: shellypro2-relay)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|relay2 |output |Switch |r/w |Relay #2: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #2: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-
+| Group | Channel | Type | read-only | Description |
+| ------ | ----------- | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| relay2 | output | Switch | r/w | Relay #2: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #2: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
### Shelly Pro 2 PM - relay mode (thing-type: shellypro2pm-relay)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|relay2 |output |Switch |r/w |Relay #2: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #2: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------ | -------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| relay2 | output | Switch | r/w | Relay #2: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #2: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly Pro 2 PM - roller mode (thing-type: shellypro2pm-roller)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|-------------------------------------------------------------------------------------|
-|roller |control |Rollershutter |r/w |can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
-| |rollerPos |Dimmer |r/w |Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |state |String |yes |Roller state: open/close/stop |
-| |stopReason |String |yes |Last stop reasons: normal, safety_switch or obstacle |
-| |safety |Switch |yes |Indicates status of the Safety Switch, ON=problem detected, powered off |
-| |event |Trigger |yes |Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
-|meter |currentWatts |Number |yes |Current power consumption in Watts |
-| |lastPower1 |Number |yes |Energy consumption for a round minute, 1 minute ago |
-| |totalKWH |Number |yes |Total energy consumption in kwh since the device powered up (resets on restart) |
-| |lastUpdate |DateTime |yes |Timestamp of the last measurement |
-
+| Group | Channel | Type | read-only | Description |
+| ------ | ------------ | ------------- | --------- | ------------------------------------------------------------------------------------ |
+| roller | control | Rollershutter | r/w | can be open (0%), stop, or close (100%); could also handle ON (open) and OFF (close) |
+| | rollerPos | Dimmer | r/w | Roller position: 100%=open...0%=closed; gets updated when the roller stopped |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | state | String | yes | Roller state: open/close/stop |
+| | stopReason | String | yes | Last stop reasons: normal, safety_switch or obstacle |
+| | safety | Switch | yes | Indicates status of the Safety Switch, ON=problem detected, powered off |
+| | event | Trigger | yes | Roller event/trigger with payload ROLLER_OPEN / ROLLER_CLOSE / ROLLER_STOP |
+| meter | currentWatts | Number | yes | Current power consumption in Watts |
+| | lastPower1 | Number | yes | Energy consumption for a round minute, 1 minute ago |
+| | totalKWH | Number | yes | Total energy consumption in kwh since the device powered up (resets on restart) |
+| | lastUpdate | DateTime | yes | Timestamp of the last measurement |
### Shelly Pro 3 (thing-type: shellypro3)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|relay2 |output |Switch |r/w |Relay #2: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #2: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
-|relay3 |output |Switch |r/w |Relay #3: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #3: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #3: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #3: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Relay #3: Event trigger, see section Button Events |
+| Group | Channel | Type | read-only | Description |
+| ------ | ----------- | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| relay2 | output | Switch | r/w | Relay #2: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #2: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #2: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #2: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
+| relay3 | output | Switch | r/w | Relay #3: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #3: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #3: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #3: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Relay #3: Event trigger, see section Button Events |
### Shelly Pro 4PM (thing-type: shelly4pro)
-|Group |Channel |Type |read-only|Description |
-|----------|-------------|---------|---------|---------------------------------------------------------------------------------|
-|relay1 |output |Switch |r/w |Relay #1: Controls the relay's output channel (on/off) |
-| |outputName |String |yes |Logical name of this relay output as configured in the Shelly App |
-| |input |Switch |yes |ON: Input/Button is powered, see General Notes on Channels |
-| |autoOn |Number |r/w |Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds|
-| |autoOff |Number |r/w |Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds|
-| |timerActive |Switch |yes |Relay #1: ON: An auto-on/off timer is active |
-| |button |Trigger |yes |Event trigger, see section Button Events |
+| Group | Channel | Type | read-only | Description |
+| ------ | ----------- | ------- | --------- | --------------------------------------------------------------------------------- |
+| relay1 | output | Switch | r/w | Relay #1: Controls the relay's output channel (on/off) |
+| | outputName | String | yes | Logical name of this relay output as configured in the Shelly App |
+| | input | Switch | yes | ON: Input/Button is powered, see General Notes on Channels |
+| | autoOn | Number | r/w | Relay #1: Sets a timer to turn the device ON after every OFF command; in seconds |
+| | autoOff | Number | r/w | Relay #1: Sets a timer to turn the device OFF after every ON command; in seconds |
+| | timerActive | Switch | yes | Relay #1: ON: An auto-on/off timer is active |
+| | button | Trigger | yes | Event trigger, see section Button Events |
## Full Example
### shelly.things
-```
+```java
/* Shelly 2.5 Roller */
Thing shelly:shelly25-roller:XXXXX1 "Shelly 25 Roller XXXXX1" @ "Home Theater" [deviceIp="x.x.x.x", userId="", password=""]
Thing shelly:shelly25-roller:XXXXX2 "Shelly 25 Roller XXXXX2" @ "Living Room" [deviceIp="x.x.x.x", userId="admin", password="secret"]
### shelly.items
-```
+```java
/* Relays */
Switch Shelly_XXXXX3_Relay "Garage Light" {channel="shelly:shelly1:XXXXX3:relay#output"}
Number Shelly_XXXXX3_AutoOnTimer "Garage Light Auto On Timer" {channel="shelly:shelly1:XXXXX3:relay#autoOn"}
#### Catch alarms
-```
+```java
rule "Monitor Shelly Restart"
when
Channel "shelly:shelly2-relay:XXXXXX:device#alarm" triggered OVERTEMP
#### Trigger scene with Button-1
-```
+```java
rule "Button-1 SHORT_PRESSED"
when
Channel "shelly:shellybutton1:d8f15bXXXXXX:status#button" triggered SHORT_PRESSED
- Link battery channel for all your Shelly battery powered devices
- Add battery items to group gBattery
-```
+```java
val String mailTo = "alarm@openhab.me"
/* ------------- Battery Monitor ----------- */
- 4 Items per Thing required. Example:
-```
-Group gCCT_LED "All CCT LEDs"
+```java
+Group gCCT_LED "All CCT LEDs"
Dimmer LED1_brightness "Brightness" (gCCT_LED)
Dimmer LED1_temperature "Temperature" (gCCT_LED)
Dimmer LED1_cw "cold white Channel"
- Items "LED1_cw" and "LED_ww" are items linked to Thing channel. Not required in sitemaps. Do NOT include in this group
- Prefix: needs to be constant per Thing.
-```
+```java
val String strSuffixSeparator = "_" //Separator: 1 unique separator
val String strSuffixBrightness = "brightness" //Suffix: at your choice
val String strSuffixTemperature = "temperature" //Suffix: at your choice
#### Reading colors from Color Picker:
-```
+```java
import org.openhab.core.library.types.*
rule "Get input change from garage light"
### shelly.sitemap
-```
+```perl
sitemap demo label="Home"
{
Frame label="Dimmer" {
The binding supports two types of Thing as follows..
| Thing Type | Description |
-|----------------------|--------------------------------------------------------------------------------------------------------------------------|
+| -------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Climatix IC Account | User account on the Siemens Climatix IC cloud server (bridge) to connect with respective Smart Thermostat Things below.. |
| RDS Smart Thermostat | Siemens RDS model Smart Thermostat devices |
You have to manually create a single (Bridge) Thing for the Climatix IC Account, and enter the required Configuration Parameters (see Thing Configuration for Climatix IC Account below).
If the Configuration Parameters are all valid, then the Climatix IC Account Thing will automatically attempt to connect and sign on to the Siemens Climatix IC cloud server.
-If the sign on succeeds, the Thing will indicate its status as Online, otherwise it will show an error status.
+If the sign on succeeds, the Thing will indicate its status as Online, otherwise it will show an error status.
Once the Thing of the type Climatix IC Account has been created and successfully signed on to the cloud server, it will automatically interrogate the server to discover all the respective RDS Smart Thermostat Things associated with that account.
After a short while, all discovered RDS Smart Thermostat Things will be displayed in the Inbox.
-If in future you add new RDS Smart Thermostat devices to your Siemens account (e.g. via the Siemens App) then these new devices will also appear in the Inbox.
+If in future you add new RDS Smart Thermostat devices to your Siemens account (e.g. via the Siemens App) then these new devices will also appear in the Inbox.
## Thing Configuration for "Climatix IC Account"
The Climatix IC Account connects to the Siemens Climatix IC cloud server (bridge) to communicate with any respective RDS Smart Thermostats associated with that account.
It signs on to the cloud server using the supplied user's credentials, and it polls the server at regular intervals to read and write the data for each Smart Thermostat that is configured in that account.
-Before it can connect to the server, the following Configuration Parameters must be entered.
+Before it can connect to the server, the following Configuration Parameters must be entered.
-| Configuration Parameter | Description
-|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| userEmail | The e-mail address of the user account on the cloud server; as entered in the Siemens App when first registering a thermostat. |
-| userPassword | The password of the user account on the cloud server; as entered in the Siemens App. |
-| pollingInterval | Time interval in seconds between polling requests to the cloud server; the value must be between 8..60 seconds; the Default value (recommended) is 60 seconds. |
+| Configuration Parameter | Description |
+| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| userEmail | The e-mail address of the user account on the cloud server; as entered in the Siemens App when first registering a thermostat. |
+| userPassword | The password of the user account on the cloud server; as entered in the Siemens App. |
+| pollingInterval | Time interval in seconds between polling requests to the cloud server; the value must be between 8..60 seconds; the Default value (recommended) is 60 seconds. |
| apiKey | The key code needed to access the application program interface on the Siemens Climatix IC cloud server; you can request a key code from Siemens customer support <sup>1)</sup>. |
<sup>1)</sup> The Siemens Climatix IC cloud server exists primarily for supporting Original Equipment Manufacturing (OEM) customers who use the Climatix range of HVACR control products.
You need to insist that you are requesting the Climatix IC cloud server API key _**for the RDS smart thermostat range**_ – it is a <u>different</u> key than those for OEM commercial customers.
You can also get the API key by observing the traffic between your RDS App and the server, as explained [below](#observing-the-api-key).
-Note: You must create ONLY ONE Thing of the type Climatix IC Account; duplicate Climatix IC Account Things risk causing communication errors with the cloud server.
+Note: You must create ONLY ONE Thing of the type Climatix IC Account; duplicate Climatix IC Account Things risk causing communication errors with the cloud server.
## Thing Configuration for "RDS Smart Thermostat"
Each RDS Smart Thermostat Thing is identified in the Climatix IC Account by means of a unique Plant Id code.
The automatic discovery determines the Plant Id codes of all connected thermostats automatically.
-| Configuration Parameter | Description |
-|-------------------------|-------------------------------------------------------------------------------------------------------------|
-| plantId | The unique code to identify a specific RDS Smart Thermostat Thing on the Siemens Climatix IC cloud server. |
+| Configuration Parameter | Description |
+| ----------------------- | ---------------------------------------------------------------------------------------------------------- |
+| plantId | The unique code to identify a specific RDS Smart Thermostat Thing on the Siemens Climatix IC cloud server. |
## Channels for RDS Smart Thermostat
-The RDS Smart Thermostat supports several channels as shown below.
-
-| Channel | Data Type | Description |
-|--------------------------|--------------------|-----------------------------------------------------------------------------|
-| roomTemperature | Number:Temperature | Actual Room Temperature |
-| targetTemperature | Number:Temperature | Target temperature setting for the room |
-| thermostatOutputState | String | The output state of the thermostat (Heating, Off, Cooling) |
-| roomHumidity | Number:Dimensionless| Actual Room Humidity |
-| roomAirQuality | String | Actual Room Air Quality (Poor..Good) |
-| outsideTemperature | Number:Temperature | Actual Outside temperature |
-| energySavingsLevel | String | Energy saving level (Green Leaf score) (Poor..Excellent) |
-| occupancyModePresent | Switch | The Thermostat is in the Present Occupancy Mode (Off=Absent, On=Present) |
-| thermostatAutoMode | Switch | The Thermostat is in Automatic Mode (Off=Manual, On=Automatic) |
-| hotWaterAutoMode | Switch | The Domestic Water Heating is in Automatic Mode (Off=Manual, On=Automatic) |
-| hotWaterOutputState | Switch | The On/Off state of the domestic water heating |
+The RDS Smart Thermostat supports several channels as shown below.
+
+| Channel | Data Type | Description |
+| --------------------- | -------------------- | -------------------------------------------------------------------------- |
+| roomTemperature | Number:Temperature | Actual Room Temperature |
+| targetTemperature | Number:Temperature | Target temperature setting for the room |
+| thermostatOutputState | String | The output state of the thermostat (Heating, Off, Cooling) |
+| roomHumidity | Number:Dimensionless | Actual Room Humidity |
+| roomAirQuality | String | Actual Room Air Quality (Poor..Good) |
+| outsideTemperature | Number:Temperature | Actual Outside temperature |
+| energySavingsLevel | String | Energy saving level (Green Leaf score) (Poor..Excellent) |
+| occupancyModePresent | Switch | The Thermostat is in the Present Occupancy Mode (Off=Absent, On=Present) |
+| thermostatAutoMode | Switch | The Thermostat is in Automatic Mode (Off=Manual, On=Automatic) |
+| hotWaterAutoMode | Switch | The Domestic Water Heating is in Automatic Mode (Off=Manual, On=Automatic) |
+| hotWaterOutputState | Switch | The On/Off state of the domestic water heating |
## Observing the API Key
Number:Temperature Upstairs_RoomTemperature "Room Temperature" { channel="siemensrds:rds:mybridgename:myupstairs:roomTemperature" }
Number:Temperature Upstairs_TargetTemperature "Target Temperature" { channel="siemensrds:rds:mybridgename:myupstairs:targetTemperature" }
String Upstairs_ThermostatOutputState "Thermostat Output State" { channel="siemensrds:rds:mybridgename:myupstairs:thermostatOutputState" }
-Number:Dimensionless Upstairs_RoomHumidity "Room Humidity" { channel="siemensrds:rds:mybridgename:myupstairs:roomHumidity" }
+Number:Dimensionless Upstairs_RoomHumidity "Room Humidity" { channel="siemensrds:rds:mybridgename:myupstairs:roomHumidity" }
String Upstairs_RoomAirQuality "Room Air Quality" { channel="siemensrds:rds:mybridgename:myupstairs:roomAirQuality" }
Number:Temperature Upstairs_OutsideTemperature "Outside Temperature" { channel="siemensrds:rds:mybridgename:myupstairs:outsideTemperature" }
String Upstairs_EnergySavingsLevel "Energy Savings Level" { channel="siemensrds:rds:mybridgename:myupstairs:energySavingsLevel" }
### `demo.sitemap` File
-```php
+```perl
sitemap siemensrds label="Siemens RDS"
{
Frame label="Heating" {
## Supported Things
-- Silvercrest Wifi Socket SWS-A1 - [(Owner Manual)](https://www.lidl-service.com/static/118127777/103043_FI.pdf) -- Tested with firmware version: 1.41, 1.60, 1.70
-- EasyHome Wifi Socket DIS-124 <https://www.aldi-sued.de/de/infos/aldi-sued-a-bis-z/s/serviceportal/ergebnisliste/sis/si/wifi-steckdose/>
-
+- Silvercrest Wifi Socket SWS-A1 - [(Owner Manual)](https://www.lidl-service.com/static/118127777/103043_FI.pdf) -- Tested with firmware version: 1.41, 1.60, 1.70
+- EasyHome Wifi Socket DIS-124 <https://www.aldi-sued.de/de/infos/aldi-sued-a-bis-z/s/serviceportal/ergebnisliste/sis/si/wifi-steckdose/>
## Discovery
Wifi Socket thing parameters:
| Parameter ID | Parameter Type | Mandatory | Description | Default |
-|----------------|----------------|-----------|-------------------------------------------------------------------------------|------------------|
+| -------------- | -------------- | --------- | ----------------------------------------------------------------------------- | ---------------- |
| macAddress | text | true | The socket MAC address | |
| hostAddress | text | false | The socket Host address. The binding is capable to discover the host address. | |
| updateInterval | integer | false | Update time interval in seconds to request the status of the socket. | 60 |
E.g.
-```
+```java
Thing silvercrestwifisocket:wifiSocket:lamp [ macAddress="ACCF23343C50", vendor="ALDI_EASYHOME" ]
```
The Silvercrest Wifi Socket support the following channel:
| Channel Type ID | Item Type | Description |
-|-----------------|-----------|---------------------|
+| --------------- | --------- | ------------------- |
| switch | Switch | Wifi Socket Switch. |
## Discovery
-The Sinopé Gateway (bridge) discovery is not supported for now.
+The Sinopé Gateway (bridge) discovery is not supported for now.
It will be added in future release.
-The Sinopé devices discovery is implemented.
+The Sinopé devices discovery is implemented.
## Prerequisites
-### Bridge or the Sinopé Gateway
+### Bridge or the Sinopé Gateway
First, you will need to get your API key from your Sinopé gateway.
Grab the latest release of the [sinope-core library](<https://github.com/chaton78/sinope-core/releases>)
-On Windows, you can run the SinopeProtocol.exe (in the zip release).
-The gateway parameter is written on the back of the SinopéGateway (example, 002f-c2c2-dd88-aaaa).
+On Windows, you can run the SinopeProtocol.exe (in the zip release).
+The gateway parameter is written on the back of the SinopéGateway (example, 002f-c2c2-dd88-aaaa).
The addr parameter is the IP given to your gateway.
-```
+```shell
SinopeProtocol.exe -addr [YOUR_GATEWAY_IP_OR_HOSTNAME] -gateway [YOUR_GATEWAY_ID] -login
Getting API Key - PRESS WEB Button
Your api Key is: 0x12 0x57 0x55 0xD5 0xCD 0x4A 0xD5 0x33
On other operating systems, using only a JVM, you can invoke directly the java command from the latest release of the [sinope-core library](<https://github.com/chaton78/sinope-core/releases>):
-```
+```shell
java -jar core-0.0.3-shaded.jar -addr [YOUR_GATEWAY_IP_OR_HOSTNAME] -gateway [YOUR_GATEWAY_ID] -login
Getting API Key - PRESS WEB Button
Your api Key is: 0x12 0x57 0x55 0xD5 0xCD 0x4A 0xD5 0x33
### Thing Discovery
-You can use the same procedure to discover each device you want to use.
-You will need to provide the api key from the previous step.
-If you use spaces, please, use double quotes to pass the api key (i.e. "0x12 0x57 0x55 0xD5 0xCD 0x4A 0xD5 0x33")
+You can use the same procedure to discover each device you want to use.
+You will need to provide the api key from the previous step.
+If you use spaces, please, use double quotes to pass the api key (i.e. "0x12 0x57 0x55 0xD5 0xCD 0x4A 0xD5 0x33")
-Use the device procedure to discover it.
-For a thermostat, you need to push both buttons.
+Use the device procedure to discover it.
+For a thermostat, you need to push both buttons.
The application will loop forever, press ctrl-c to exit.
-```
+```shell
SinopeProtocol.exe -addr [YOUR_GATEWAY_IP_OR_HOSTNAME] -gateway [YOUR_GATEWAY_ID] -api "[YOUR_API_KEY]" -discover
It is now time to push both buttons on your device!
On other operating systems, using only a JVM, you can invoke directly the java command:
-```
+```shell
java -jar core-0.0.3-shaded.jar -addr [YOUR_GATEWAY_IP_OR_HOSTNAME] -gateway [YOUR_GATEWAY_ID] -api "[YOUR_API_KEY]" -discover
It is now time to push both buttons on your device!
The Sinopé bridge requires the address, the gateway id and the API key in order for the binding to know where and how to access it.
In the thing file, this looks e.g. like
-```
+```java
Bridge sinope:gateway:home [ hostname="[YOUR_GATEWAY_IP_OR_HOSTNAME]", gatewayId="[YOUR_GATEWAY_ID]", apiKey="0x1F 0x5D 0xC8 0xD5 0xCD 0x3A 0xD7 0x23"]
```
The devices are identified by the ids that a Sinopé device returns when you have discovered it.
-```
+```shell
thermostat room [ deviceId = "0x00 0x00 0x35 0x86" ]
```
Thermostat devices support some of the following channels:
- Channel Type ID | Item Type | Description
----------------------|-------------|----------------------------------------------------------------------------------------------------------------------------------------|
- insideTemperature | Number (R) | Inside Temperature |
- outsideTemperature | Number (R) | Outside Temperature |
- setpointTemperature | Number (RW) | Set Point Temperature |
- setpointMode | String (RW) | Thermostat set point mode |
- heatingLevel | Number (R) | Heating Level |
+| Channel Type ID | Item Type | Description |
+| ------------------- | ----------- | ------------------------- |
+| insideTemperature | Number (R) | Inside Temperature |
+| outsideTemperature | Number (R) | Outside Temperature |
+| setpointTemperature | Number (RW) | Set Point Temperature |
+| setpointMode | String (RW) | Thermostat set point mode |
+| heatingLevel | Number (R) | Heating Level |
## Full Example
### demo.things:
-```
+```java
Bridge sinope:gateway:home [ hostname="sinope", gatewayId="1234-4567-1234-1234", apiKey="0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0"] {
thermostat room [ deviceId = "00003586" ]
}
### demo.items:
-```
+```java
Number Room_In "Room Temp. [%.2f °C]" <temperature> { channel="sinope:thermostat:home:room:insideTemperature" }
Number Room_Out "Outside Temp. [%.2f °C]" <temperature> { channel="sinope:thermostat:home:room:outsideTemperature" }
Number Room_SetPoint "Room Set Point [%.2f °C]" <temperature> { channel="sinope:thermostat:home:room:setpointTemperature" }
### demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame label="Sinope" {
### Sample Thing Configuration
-```
+```java
Bridge sleepiq:cloud:1 [ username="mail@example.com", password="password", pollingInterval=60, logging=false ]
{
Thing dualBed master [ bedId="-9999999999999999999" ]
Here is a sample item configuration:
-```
+```java
Switch MasterBedroom_SleepIQ_InBed_Alice "In Bed [%s]" { channel="sleepiq:dualBed:1:master:left#inBed" }
Number MasterBedroom_SleepIQ_SleepNumber_Alice "Sleep Number [%s]" { channel="sleepiq:dualBed:1:master:left#sleepNumber" }
Number MasterBedroom_SleepIQ_Pressure_Alice "Pressure [%s]" { channel="sleepiq:dualBed:1:master:left#pressure" }
This binding retrieves and reads SML messages (PUSH) and supports IEC 62056-21 modes A,B,C (PULL) and D (PUSH).
-
## Supported Things
This binding supports only one Thing: `meter`
Discovery is not available, as the binding only reads from serial ports.
-
## Thing Configuration
The smartmeter thing requires the serial port where the meter device is connected and optionally a refresh interval.
-| Parameter | Name | Description | Required | Default |
-|-----------|------|-------------|----------|---------|
-| `port` | The serial port to connect to| URL to use for playing notification sounds, e.g. `/dev/ttyUSB0` | yes | |
-| `refresh` | The refresh interval in seconds | Defines at which interval the values of the meter device shall be read | no | 20 |
-| `mode` | The protocol mode to use | Can be `SML` (PUSH mode), `ABC` (PULL) or `D` (PUSH) | no | `SML` |
-| `baudrateChangeDelay` | Delay of baudrate change in ms | USB to serial converters often require a delay of up to 250ms after the ACK before changing baudrate (only relevant for 'C' mode) | no | 0 |
-| `baudrate` | (initial) Baudrate | The baudrate of the serial port. If set to `AUTO`, it will be negotiated with the meter. The default is `300` baud for modes A, B, and C and `2400` baud for mode D, and `9600` baud for SML. | no | `AUTO` |
+| Parameter | Name | Description | Required | Default |
+| --------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- |
+| `port` | The serial port to connect to | URL to use for playing notification sounds, e.g. `/dev/ttyUSB0` | yes | |
+| `refresh` | The refresh interval in seconds | Defines at which interval the values of the meter device shall be read | no | 20 |
+| `mode` | The protocol mode to use | Can be `SML` (PUSH mode), `ABC` (PULL) or `D` (PUSH) | no | `SML` |
+| `baudrateChangeDelay` | Delay of baudrate change in ms | USB to serial converters often require a delay of up to 250ms after the ACK before changing baudrate (only relevant for 'C' mode) | no | 0 |
+| `baudrate` | (initial) Baudrate | The baudrate of the serial port. If set to `AUTO`, it will be negotiated with the meter. The default is `300` baud for modes A, B, and C and `2400` baud for mode D, and `9600` baud for SML. | no | `AUTO` |
## Channels
e.g.
-| OBIS code | Channel ID |
-|-------------|------------|
-|`1-0:1.8.1` | `1-0_1-8-1` |
-|`1.8.0*00` | `1-8-0_00` |
-
+| OBIS code | Channel ID |
+| ----------- | ----------- |
+| `1-0:1.8.1` | `1-0_1-8-1` |
+| `1.8.0*00` | `1-8-0_00` |
### Channel Configuration
-**negate:** Energy meters often provide absolute values and provide information about the *energy direction* in a separate bit.
+**negate:** Energy meters often provide absolute values and provide information about the _energy direction_ in a separate bit.
With this config you can specify the channel where this bit is located, the bit position and the bits value which shall be set.
`<negate> ::= <CHANNEL_ID>:<BIT_POSITION>:<BIT_VALUE>[:status]`
e.g.:
-```
+```text
"1-0_1-8-0:5:1:status" // negate if status(1-0_1-8-0) and 2^5 = 1
"1-0_96-5-5:5:1" // negate if 1-0#96-5-5 and 2^5 = 1
```
Please use the [Units Of Measurement](https://www.openhab.org/docs/concepts/units-of-measurement.html) concept of openHAB for unit conversion which is fully supported by this binding.
Please see the item example on how to use it.
-*NOTE:* your meter device needs to provide correct unit information to work properly.
+_NOTE:_ your meter device needs to provide correct unit information to work properly.
## Full Example
Things:
-```
+```java
smartmeter:meter:heating [ port="COM1", refresh=10 ]
smartmeter:meter:house [ port="rfc2217://xxx.xxx.xxx.xxx:3002" ]
Items:
-```
+```java
Number:Energy HeatingTarif1 "Heating high price tariff [%.2f kWh]" { channel="smartmeter:meter:heating:1-0_1-8-1" }
Number:Energy HeatingTarif2 "Heating low price tariff [%.2f kWh]" { channel="smartmeter:meter:heating:1-0_1-8-2" }
## Known Limitations
- Octet encoding for OBIS Codes
-
- - '129-129:199.130.5'
+ - '129-129:199.130.5'
- '1-0:0.0.9'
-
- doesn't work properly.
+ doesn't work properly.
Any help/contribution is appreciated!
## Supported things
-This binding supports most of the Smartthings devices that are defined in the [Smartthings Capabilities list](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference/). If you find a device that doesn't work [follow these instructions](doc/Troubleshooting.md) to collect the required data so it can be added in a future release.
+This binding supports most of the Smartthings devices that are defined in the [Smartthings Capabilities list](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference/). If you find a device that doesn't work [follow these instructions](doc/Troubleshooting.md) to collect the required data so it can be added in a future release.
## Discovery
The bridge requires the IP address and port used to connect the openHAB server to the Smartthings Hub.
- Bridge smartthings:smartthings:Home [ smartthingsIp="192.168.1.12", smartthingsPort=39500 ] {
+```java
+Bridge smartthings:smartthings:Home [ smartthingsIp="192.168.1.12", smartthingsPort=39500 ] {
+```
where:
-* **smartthings:smartthings:Home** identifies this is a smartthings hub named Home. The first two segments must be smartthings:smartthings. You can choose any unique name for the the last segment. The last segment is used when you identify items connected to this hubthingTypeId.
-* **smartthingsIp** is the IP address of the Smartthings Hub. Your router should be configured such that the Smartthings Hub is always assigned to this IP address.
-* **smartthingsPort** is the port the Smartthings hub listens on. 39500 is the port assigned by Smartthings so it should be used unless you have a good reason for using another port.
+- **smartthings:smartthings:Home** identifies this is a smartthings hub named Home.
+ The first two segments must be smartthings:smartthings.
+ You can choose any unique name for the the last segment.
+ The last segment is used when you identify items connected to this hubthingTypeId.
+- **smartthingsIp** is the IP address of the Smartthings Hub.
+ Your router should be configured such that the Smartthings Hub is always assigned to this IP address.
+- **smartthingsPort** is the port the Smartthings hub listens on. 39500 is the port assigned by Smartthings so it should be used unless you have a good reason for using another port.
-**Warning** This binding only supports one Bridge. If you try to configure a second bridge it will be ignored.
+**Warning** This binding only supports one Bridge.
+If you try to configure a second bridge it will be ignored.
### Thing Configuration
Each attached thing must specify the type of device and it's Smartthings device name. The format of the Thing description is:
- Thing <thingTypeId> name [ smartthingsName="<deviceName>", {smartthingsTimeout=<timeout>} ]
+```java
+Thing <thingTypeId> name [ smartthingsName="<deviceName>", {smartthingsTimeout=<timeout>} ]
+```
where:
-* **[thingTypeId](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference/)** corresponds to the "Preferences Reference" in the Smartthings Capabilities document but without the capability. prefix. i.e. A dimmer switch in the Capabilities document has a Preferences reference of capability.switchLevel, therefore the <thingTypeId> is switchLevel.
-* **name** is what you want to call this thing and is used in defining the items that use this thing.
-* **deviceName** is the name you assigned to the device when you discovered and connected to it in the Smartthings App
-* Optional: **timeout** is how long openHAB will wait for a response to the request before throwing a timeout exception. The default is 3 seconds.
+- **[thingTypeId](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference/)** corresponds to the "Preferences Reference" in the Smartthings Capabilities document but without the capability.prefix. i.e. A dimmer switch in the Capabilities document has a Preferences reference of capability.switchLevel, therefore the <thingTypeId> is switchLevel.
+- **name** is what you want to call this thing and is used in defining the items that use this thing.
+- **deviceName** is the name you assigned to the device when you discovered and connected to it in the Smartthings App
+- Optional: **timeout** is how long openHAB will wait for a response to the request before throwing a timeout exception. The default is 3 seconds.
+#### Example
-**Example**
-
- Bridge smartthings:smartthings:Home [ smartthingsIp="192.168.1.12", smartthingsPort=39500 ] {
- Thing switchLevel KitchenLights [ smartthingsName="Kitchen lights" ]
- Thing contactSensor MainGarageDoor [ smartthingsName="Garage Door Open Sensor" ]
- Thing temperatureMeasurement MainGarageTemp [ smartthingsName="Garage Door Open Sensor" ]
- Thing battery MainGarageBattery [ smartthingsName="Garage Door Open Sensor" ]
- Thing switch OfficeLight [ smartthingsName="Office Light", smartthingsTimeout=7 ]
- Thing valve SimulatedValve [ smartthingsName="Simulated Valve" ]
- }
+```java
+Bridge smartthings:smartthings:Home [ smartthingsIp="192.168.1.12", smartthingsPort=39500 ] {
+ Thing switchLevel KitchenLights [ smartthingsName="Kitchen lights" ]
+ Thing contactSensor MainGarageDoor [ smartthingsName="Garage Door Open Sensor" ]
+ Thing temperatureMeasurement MainGarageTemp [ smartthingsName="Garage Door Open Sensor" ]
+ Thing battery MainGarageBattery [ smartthingsName="Garage Door Open Sensor" ]
+ Thing switch OfficeLight [ smartthingsName="Office Light", smartthingsTimeout=7 ]
+ Thing valve SimulatedValve [ smartthingsName="Simulated Valve" ]
+}
+```
## Items
-These are specified in the .items file. This section describes the specifics related to this binding. Please see the [Items documentation](https://www.openhab.org/docs/configuration/items.html) for a full explanation of configuring items.
+These are specified in the .items file. This section describes the specifics related to this binding.
+Please see the [Items documentation](https://www.openhab.org/docs/configuration/items.html) for a full explanation of configuring items.
The most important thing is getting the **channel** specification correct. The general format is:
- { channel="smartthings:<thingTypeId>:<hubName>:<thingName>:<channelId>" }
+```java
+{ channel="smartthings:<thingTypeId>:<hubName>:<thingName>:<channelId>" }
+```
The parts (separated by :) are defined as:
1. **smartthings** to specify this is a smartthings device
-2. **thingTypeId** specifies the type of the thing you are connecting to. This is the same as described in the last section.
-3. **hubName** identifies the name of the hub specified above. This corresponds to the third segment in the **Bridge** definition.
-4. **thingName** identifes the thing this is attached to and is the "name" you specified in the **Thing** definition.
-5. **channelId** corresponds the the attribute in the [Smartthings Capabilities list](https://docs.smartthings.com/en/latest/capabilities-reference.html). For switch it would be "switch".
-
-**Example**
-
- Dimmer KitchenLights "Kitchen lights level" <slider> { channel="smartthings:switchLevel:Home:KitchenLights:level" }
- Switch KitchenLightSwitch "Kitchen lights switch" <light> { channel="smartthings:switchLevel:Home:KitchenLights:switch" }
- Contact MainGarageDoor "Garage door status [%s]" <garagedoor> { channel="smartthings:contactSensor:Home:MainGarageDoor:contact" }
- Number MainGarageTemp "Garage temperature [%.0f]" <temperature> { channel="smartthings:temperatureMeasurement:Home:MainGarageTemp:temperature" }
- Number MainGarageBattery "Garage battery [%.0f]" <battery> { channel="smartthings:battery:Home:MainGarageBattery:battery" }
- Switch OfficeLight "Office light" <light> { channel="smartthings:switch:Home:OfficeLight:switch" }
- String SimulatedValve "Simulated valve" { channel="smartthings:valve:Home:SimulatedValve:valve" }
+1. **thingTypeId** specifies the type of the thing you are connecting to. This is the same as described in the last section.
+1. **hubName** identifies the name of the hub specified above. This corresponds to the third segment in the **Bridge** definition.
+1. **thingName** identifes the thing this is attached to and is the "name" you specified in the **Thing** definition.
+1. **channelId** corresponds the the attribute in the [Smartthings Capabilities list](https://docs.smartthings.com/en/latest/capabilities-reference.html). For switch it would be "switch".
+
+### Example
+
+```java
+Dimmer KitchenLights "Kitchen lights level" <slider> { channel="smartthings:switchLevel:Home:KitchenLights:level" }
+Switch KitchenLightSwitch "Kitchen lights switch" <light> { channel="smartthings:switchLevel:Home:KitchenLights:switch" }
+Contact MainGarageDoor "Garage door status [%s]" <garagedoor> { channel="smartthings:contactSensor:Home:MainGarageDoor:contact" }
+Number MainGarageTemp "Garage temperature [%.0f]" <temperature> { channel="smartthings:temperatureMeasurement:Home:MainGarageTemp:temperature" }
+Number MainGarageBattery "Garage battery [%.0f]" <battery> { channel="smartthings:battery:Home:MainGarageBattery:battery" }
+Switch OfficeLight "Office light" <light> { channel="smartthings:switch:Home:OfficeLight:switch" }
+String SimulatedValve "Simulated valve" { channel="smartthings:valve:Home:SimulatedValve:valve" }
+```
**Special note about Valves**
Smarttings includes a **valve** which can be Open or Closed but openHAB does not include a Valve item type. Therefore, the valve is defined as a having an item type of String. And, therefore the item needs to be defined with an item type of string. It can be controlled in the sitemap by specifying the Element type of Switch and providing a mapping of: mappings=[open="Open", closed="Close"]. Such as:
- Switch item=SimulatedValve mappings=[open="Open", closed="Close"]
+```java
+Switch item=SimulatedValve mappings=[open="Open", closed="Close"]
+```
**RGB Bulb example**
Here is a sample configuration for a RGB bulb, such as a Sengled model E11-N1EA bulb. Currently this binding does not have a RGB specific bulb therefore a Thing is required for each part of the bulb.
-**Example**
-
-**things file**
-
- colorControl SengledColorControl [ smartthingsName="Sengled Bulb"]
- colorTemperature SengledColorTemperature [ smartthingsName="Sengled Bulb"]
- switch SengledSwitch [ smartthingsName="Sengled Bulb"]
- switchLevel SengledSwitchLevel [ smartthingsName="Sengled Bulb"]
-
-**items file**
+## Full Example
- Color SengledColorControl "Sengled bulb color" <colorpicker> {channel="smartthings:colorControl:Home:SengledColorControl:color"}
- Number SengledTemperature "Sengled bulb color temperature" {channel="smartthings:colorTemperature:Home:SengledColorTemperature:colorTemperature"}
- Switch SengledSwitch "Sengled bulb switch" <switch> {channel="smartthings:switch:Home:SengledSwitch:switch"}
- Dimmer SengledDimmer "Sengled bulb dimmer" <slider> {channel="smartthings:switchLevel:Home:SengledSwitchLevel:level"}
+### Things File
-**sitemap file**
+```java
+colorControl SengledColorControl [ smartthingsName="Sengled Bulb"]
+colorTemperature SengledColorTemperature [ smartthingsName="Sengled Bulb"]
+switch SengledSwitch [ smartthingsName="Sengled Bulb"]
+switchLevel SengledSwitchLevel [ smartthingsName="Sengled Bulb"]
+```
- Frame label="Sengled RGBW Bulb" {
- Switch item=SengledSwitch label="Switch"
- Slider item=SengledDimmer label="Level [%d]"
- Text item=SengledTemperature label="Color Temperature [%d]"
- Colorpicker item=SengledColorControl label="Color [%s]" icon="colorwheel"
- }
+### Items File
+```java
+Color SengledColorControl "Sengled bulb color" <colorpicker> {channel="smartthings:colorControl:Home:SengledColorControl:color"}
+Number SengledTemperature "Sengled bulb color temperature" {channel="smartthings:colorTemperature:Home:SengledColorTemperature:colorTemperature"}
+Switch SengledSwitch "Sengled bulb switch" <switch> {channel="smartthings:switch:Home:SengledSwitch:switch"}
+Dimmer SengledDimmer "Sengled bulb dimmer" <slider> {channel="smartthings:switchLevel:Home:SengledSwitchLevel:level"}
+```
+### Sitemap File
+```perl
+Frame label="Sengled RGBW Bulb" {
+ Switch item=SengledSwitch label="Switch"
+ Slider item=SengledDimmer label="Level [%d]"
+ Text item=SengledTemperature label="Color Temperature [%d]"
+ Colorpicker item=SengledColorControl label="Color [%s]" icon="colorwheel"
+}
+```
## References
1. [openHAB configuration documentation](https://openhab.org/docs/configuration/index.html)
-2. [Smartthings Capabilities Reference](https://docs.smartthings.com/en/latest/capabilities-reference.html)
-3. [Smartthings Developers Documentation](https://docs.smartthings.com/en/latest/index.html)
-4. [Smartthings Development Environment](https://graph.api.smartthings.com/)
+1. [Smartthings Capabilities Reference](https://docs.smartthings.com/en/latest/capabilities-reference.html)
+1. [Smartthings Developers Documentation](https://docs.smartthings.com/en/latest/index.html)
+1. [Smartthings Development Environment](https://graph.api.smartthings.com/)
# Smhi Binding
-This binding gets hourly and daily forecast from SMHI - the Swedish Meteorological and Hydrological Institute.
+This binding gets hourly and daily forecast from SMHI - the Swedish Meteorological and Hydrological Institute.
It can get forecasts for the nordic countries (Sweden, Norway, Denmark and Finland).
## Supported Things
-The binding support only one thing-type: forecast.
+The binding support only one thing-type: forecast.
The thing can be configured to get hourly forecasts for up to 24 hours, and daily forecasts for up to 10 days.
-
## Discovery
This binding does not support automatic discovery.
## Thing Configuration
-The forecast thing needs to be configured with the latitude and longitude for the location of the forecast.
+The forecast thing needs to be configured with the latitude and longitude for the location of the forecast.
You can also choose for which hours and which days you would like to get forecasts.
| Parameter | Description | Required |
Examples:
-* Temperature for the current hour: `hour_0#t`
-* Total precipitation 3 days from now: `day_3#ptotal`
+- Temperature for the current hour: `hour_0#t`
+- Total precipitation 3 days from now: `day_3#ptotal`
-#### Basic channels
+### Basic channels
| channel | type | channel id | description |
|-------------------------|----------------------|------------|---------------------------------------------------------------------------|
| Total cloud cover | Number:Dimensionless | tcc_mean | Mean value of total cloud cover in percent |
| Weather condition** | Number | wsymb2 | Short description of the weather conditions |
-#### Advanced channels
+### Advanced channels
| channel | type | channel id | description |
|--------------------------|----------------------|------------|--------------------------------------------------------------------------------------------|
| 26 | Moderate snowfall |
| 27 | Heavy snowfall |
-
## Full Example
-demo.things
+### demo.things
-```
+```java
Thing smhi:forecast:demoforecast "Demo forecast" [ latitude=57.997072, longitude=15.990068, hourlyForecasts=0,1,2, dailyForecasts=0,1 ]
```
-demo.items
+### demo.items
-```
+```java
Number:Temperature Smhi_Temperature_Now "Current temperature [%.1f °C]" {channel="smhi:forecast:demoforecast:hour_0#t"}
Number:Speed Smhi_Min_Precipitation_Now "Current precipitation (min) [%.1f mm/h]" {channel="smhi:forecast:demoforecast:hour_0#pmin"}
Number:Speed Smhi_Min_Precipitation_Tomorrow "Precipitaion tomorrow (min) [%.1f mm/h]" {channel="smhi:forecast:demoforecast:hour_1#pmin"}
```
-demo.sitemap
+### demo.sitemap
-```
+```java
sitemap demo label="Smhi" {
Frame label="Current weather" {
Text item=Smhi_Temperature_Now
Serial modem should all use the same communication protocol (AT message) and therefore this binding _should_ be compatible with every dongle.
However, there is a gap between theory and reality and success may vary.
-The protocol stack is based on the no longer supported smslib project (more precisely a v4 fork), and all modems supported by this library should be OK.
+The protocol stack is based on the no longer supported smslib project (more precisely a v4 fork), and all modems supported by this library should be OK.
The following devices have been reported functional :
-- Huawei E180
+- Huawei E180
## Supported Things
Two things are supported by this binding :
-- A *smsmodembridge*, representing the dongle connected on the local computer
-- A *smsmodemremotebridge*, representing the dongle exposed over the network (with ser2net or other similar software)
-- A *smsconversation*, representing a conversation between one distant msisdn and the msisdn on the sim card in the dongle.
+- A _smsmodembridge_, representing the dongle connected on the local computer
+- A _smsmodemremotebridge_, representing the dongle exposed over the network (with ser2net or other similar software)
+- A _smsconversation_, representing a conversation between one distant msisdn and the msisdn on the sim card in the dongle.
## Discovery
-There is no discovery process for *smsmodembridge* or *smsmodemremotebridge* thing.
-A *smsconversation* thing will be discovered and added to the inbox everytime the modem should receive a SMS by a new sender.
+There is no discovery process for _smsmodembridge_ or _smsmodemremotebridge_ thing.
+A _smsconversation_ thing will be discovered and added to the inbox everytime the modem should receive a SMS by a new sender.
## Thing Configuration
-The *smsmodembridge* or *smsmodemremotebridge* things requires at least two parameters to work properly.
+The _smsmodembridge_ or _smsmodemremotebridge_ things requires at least two parameters to work properly.
-For local *smsmodembridge*:
+For local _smsmodembridge_:
-| Parameter Name | type | direct serial modem |
-|----------------|-------|----------------------|
-|serialPort| text | The serial port to access (eg. /dev/tty/USBx) |
-|baud| integer | Baud rate |
+| Parameter Name | type | direct serial modem |
+| -------------- | ------- | --------------------------------------------- |
+| serialPort | text | The serial port to access (eg. /dev/tty/USBx) |
+| baud | integer | Baud rate |
-For remote *smsmodemremotebridge*:
-
-| Parameter Name | type | serial over network |
-|----------------|-------|----------------------|
-|ip| text | IP address of the computer hosting the ser2net service|
-|networkPort| integer | The network port of the ser2net service |
+For remote _smsmodemremotebridge_:
+| Parameter Name | type | serial over network |
+| -------------- | ------- | ------------------------------------------------------ |
+| ip | text | IP address of the computer hosting the ser2net service |
+| networkPort | integer | The network port of the ser2net service |
The other parameters are optional :
-| Parameter Name | type | description |
-|-----------------|------|---------------------|
-|simPin | text | If your sim card is protected, fill this field with the PIN code|
-|pollingInterval| integer | Delay between two checks for new message (in seconds)|
-|delayBetweenSend| integer | Delay to wait between two messages post (in milliseconds, could be necessary for slow modem)|
-
-The *smsconversation* thing is just a shortcut to address/receive messages with a specific msisdn. It is not mandatory to use the binding, as you can use action and trigger channel to send/receive a message once the smsmodem bridge is configured.
-
-| Parameter Name | type | description |
-|------------|----------|----------|
-| recipient | text | The msisdn of the phone you want to discuss with.|
-| deliveryReport | boolean | If enabled, ask the network for a delivery report (default false)|
-| encoding | text | The encoding to use when sending the message (either Enc7, Enc8, EncUcs2, EncCustom, default is Enc7). EncUcs2 is good for non latin character, but SMS character size limit is then reduced|
+| Parameter Name | type | description |
+| ---------------- | ------- | -------------------------------------------------------------------------------------------- |
+| simPin | text | If your sim card is protected, fill this field with the PIN code |
+| pollingInterval | integer | Delay between two checks for new message (in seconds) |
+| delayBetweenSend | integer | Delay to wait between two messages post (in milliseconds, could be necessary for slow modem) |
+The _smsconversation_ thing is just a shortcut to address/receive messages with a specific msisdn. It is not mandatory to use the binding, as you can use action and trigger channel to send/receive a message once the smsmodem bridge is configured.
+| Parameter Name | type | description |
+| -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| recipient | text | The msisdn of the phone you want to discuss with. |
+| deliveryReport | boolean | If enabled, ask the network for a delivery report (default false) |
+| encoding | text | The encoding to use when sending the message (either Enc7, Enc8, EncUcs2, EncCustom, default is Enc7). EncUcs2 is good for non latin character, but SMS character size limit is then reduced |
## Channels
-The *smsconversation* supports the following channels :
-| channel | type | description |
-|----------|--------|------------------------------|
-| receive | String| The last message received |
-| send | String| A message to send |
-|deliverystatus| String| Delivery status (either UNKNOWN, QUEUED, SENT, PENDING, DELIVERED, EXPIRED, or FAILED). Several status are only possible if the delivery report parameter is enabled|
+The _smsconversation_ supports the following channels :
+| channel | type | description |
+| -------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| receive | String | The last message received |
+| send | String | A message to send |
+| deliverystatus | String | Delivery status (either UNKNOWN, QUEUED, SENT, PENDING, DELIVERED, EXPIRED, or FAILED). Several status are only possible if the delivery report parameter is enabled |
## Trigger channels
-The *smsmodembridge* and *smsmodemremotebridge* has the following trigger channel :
-| Channel ID | event |
-|---------------------|----------------------------|
-|receivetrigger| The msisdn and message received (concatened with the '\|' character as a separator)|
-
+The _smsmodembridge_ and _smsmodemremotebridge_ has the following trigger channel :
+| Channel ID | event |
+| -------------- | ----------------------------------------------------------------------------------- |
+| receivetrigger | The msisdn and message received (concatened with the '\|' character as a separator) |
## Rule action
This binding includes a rule action to send SMS.
-```
+```javascript
(Rule DSL)
val smsAction = getActions("smsmodem","smsmodem:smsmodembridge:<uid>")
```
-```
+```javascript
(javascript JSR)
var smsAction = actions.get("smsmodem","smsmodem:smsmodembridge:<uid>");
```
-Where uid is the Bridge UID of the *smsmodembridge* thing.
+Where uid is the Bridge UID of the _smsmodembridge_ thing.
Once this action instance is retrieved, you can invoke the 'send' method on it:
-```
+```java
smsAction.sendSMS("1234567890", "Hello world!")
```
Or with a special encoding:
-```
+```java
smsAction.sendSMS("1234567890", "Hello world!", "EncUcs2")
```
things/smsmodem.things:
-```
+```java
Bridge smsmodem:smsmodembridge:adonglename "USB 3G Dongle " [ serialPort="/dev/ttyUSB0", baud="19200" ] {
Thing smsconversation aconversationname [ recipient="XXXXXXXXXXX", deliveryReport="true" ]
}
Get your API key on [DIGITALSNCF web site](https://www.digital.sncf.com/startup/api/token-developpeur)
-Note : SNCF Api is based on the open [API Navitia](https://doc.navitia.io/#getting-started).
+Note : SNCF Api is based on the open [API Navitia](https://doc.navitia.io/#getting-started).
This binding uses a very small subset of it, restricted to its primary purpose.
(*) According to DIGITALSNCF Transilien may only be available for schedule, maybe not real-time.
## Supported Things
-Bridge: The binding supports a bridge to connect to the [DIGITALSNCF service](https://www.digital.sncf.com/startup/api/token developpeur).
+Bridge: The binding supports a bridge to connect to the [DIGITALSNCF service](<https://www.digital.sncf.com/startup/api/token> developpeur).
A bridge uses the thing ID "api".
Station: Represents a given bus, train station.
Of course, you can add as many stations as needed.
-
## Discovery
This binding takes care of auto discovery. This method is strongly recommended as it is the only way to get proper station ID depending upon transportation type.
-To enable auto-discovery, your location system setting must be defined.
+To enable auto-discovery, your location system setting must be defined.
Once done, at first launch, discovery will search every station in a radius of 2000 m around the system, extending it by step of 500 m until it finds a first set of results.
Every following manual successive launch will extend this radius by 500 m, increasing the number of stations discovered.
-
## Binding Configuration
The binding has no configuration options, all configuration is done at Thing level.
## Bridge Configuration
-The bridge configuration only holds the api key :
+The bridge configuration only holds the api key :
-| Parameter | Description |
-|-----------|----------------------------------------------------------------|
-| apiID | API ID provided by the DIGITALSNCF service. Mandatory. |
+| Parameter | Description |
+| --------- | ------------------------------------------------------ |
+| apiID | API ID provided by the DIGITALSNCF service. Mandatory. |
## Thing Configuration
The 'Station' thing has only one configuration parameter:
-| Parameter | Description |
-|-------------|--------------------------------------------------------------|
-| stopPointId | Identifier of the station in the DIGITALSNCF network. |
+| Parameter | Description |
+| ----------- | ----------------------------------------------------- |
+| stopPointId | Identifier of the station in the DIGITALSNCF network. |
The thing will auto-update depending on the timestamp of the earliest event detected to trigger (arrival or departure).
The Station thing holds two groups of channels (arrivals and departures) containing these channels:
-| Channel ID | Item Type | Description |
-|-----------------------|-----------|--------------------------------------------------|
-| direction | String | The direction of the route |
-| lineName | String | Commercial name of the line |
-| name | String | Name of the line |
-| network | String | Name of the network ruling the line |
-| timestamp | DateTime | Timestamp of the event (departure, arrival) |
+| Channel ID | Item Type | Description |
+| ---------- | --------- | ------------------------------------------- |
+| direction | String | The direction of the route |
+| lineName | String | Commercial name of the line |
+| name | String | Name of the line |
+| network | String | Name of the network ruling the line |
+| timestamp | DateTime | Timestamp of the event (departure, arrival) |
## Full Example
sncf.things:
-```
+```java
Bridge sncf:api:8901d44a68 "Bridge" [apiID="xxx-yyy-zzz"] {
station MyHouse "Krakow"[stopPointId="stop_point:SNCF:87561951:Bus"]
}
sncf.items:
-```
+```java
String Arrival_Direction { channel="sncf:station:8901d44a68:87381475_RapidTransit:arrivals#direction" }
String Arrival_Line { channel="sncf:station:8901d44a68:87381475_RapidTransit:arrivals#lineName" }
DateTime Arrival_Time { channel="sncf:station:8901d44a68:87381475_RapidTransit:arrivals#timestamp" }
String Departure_Direction { channel="sncf:station:8901d44a68:87381475_RapidTransit:departures#direction" }
String Departure_Line { channel="sncf:station:8901d44a68:87381475_RapidTransit:departures#lineName" }
DateTime Departure_Time { channel="sncf:station:8901d44a68:87381475_RapidTransit:departures#timestamp" }
-
```
-
## Supported Things
Only one thing is supported: `target`.
-It represents a single network device.
+It represents a single network device.
Things can be extended with `number`, `string` and `switch` channels.
## Binding Configuration
In case the trap sending equipment does not allow to change the destination port (e.g. Mikrotik routers), it is necessary to forward the received packets to the new port.
This can be done either by software like _snmptrapd_ or by adding a firewall rule to your system, e.g. by executing
-```
+```shell
iptables -t nat -I PREROUTING --src 0/0 --dst 192.168.0.10 -p udp --dport 162 -j REDIRECT --to-ports 8162
```
-would forward all TCP packets addressed to 192.168.0.10 from port 162 to 8162.
-Check with your operating system manual how to make that change permanent.
+would forward all TCP packets addressed to 192.168.0.10 from port 162 to 8162.
+Check with your operating system manual how to make that change permanent.
Example configuration for using port 8162:
-```
+```text
# Configuration for the SNMP Binding
#
# Port used for receiving traps.
# This setting defaults to 0 (disabled / not receiving traps)
port=8162
-
```
## Thing Configuration
The `target` thing has one mandatory parameter: `hostname`.
-It can be set as FQDN or IP address.
+It can be set as FQDN or IP address.
Optional configuration parameters are `community`, `version` and `refresh`.
By using the `refresh` parameter the time between two subsequent GET requests to the target can be set.
The default is `60` for 60s.
-
Three advanced parameters are available `port`, `timeout`, `retries`
Usually these do not need to be changed.
The parameters used for defining the values are `onvalue` and `offvalue`.
The `datatype` parameter is used to convert the configuration strings to the needed values.
-| type | item | description |
-|----------|--------|---------------------------------|
-| number | Number | a channel with a numeric value |
-| string | String | a channel with a string value |
-| switch | Switch | a channel that has two states |
-
+| type | item | description |
+| ------ | ------ | ------------------------------ |
+| number | Number | a channel with a numeric value |
+| string | String | a channel with a string value |
+| switch | Switch | a channel that has two states |
### SNMP Exception (Error) Handling
demo.things:
-```
+```java
Thing snmp:target:router [ hostname="192.168.0.1", protocol="v2c" ] {
Channels:
Type number : inBytes [ oid=".1.3.6.1.2.1.31.1.1.1.6.2", mode="READ", unit="B" ]
demo.items:
-```
+```java
Number inBytes "Router bytes in [%d]" { channel="snmp:target:router:inBytes" }
Number inGigaBytes "Router gigabytes in [%d GB]" { channel="snmp:target:router:inBytes" }
Number outBytes "Router bytes out [%d]" { channel="snmp:target:router:outBytes" }
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
Frame {
E.g. for Firefox, use the built-in [Storage Inspector](https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector) to retrieve the token.
- **solarId** (required)
-Id of your inverter at SolarEdge (can be found in the URL after successful login: https://monitoring.solaredge.com/solaredge-web/p/site/ **<solarId>** /#/dashboard)
+Id of your inverter at SolarEdge (can be found in the URL after successful login: <https://monitoring.solaredge.com/solaredge-web/p/site/> **<solarId>** /#/dashboard)
- **usePrivateApi** (optional)
can be set to true to use the private API.
- **liveDataPollingInterval** (optional)
interval (minutes) in which live data values are retrieved from Solaredge.
-Setting less than 10 minutes is only allowed when using private API. (default = 10)
+Setting less than 10 minutes is only allowed when using private API. (default = 10)
- **aggregateDataPollingInterval** (optional)
interval (minutes) in which aggregate data values are retrieved from Solaredge.
-Setting less than 60 is only allowed when using private API. (default = 60)
+Setting less than 60 is only allowed when using private API. (default = 60)
## Channels
Following channels are currently available:
| Channel Type ID | Item Type | Description | Remark |
-|-----------------------------------------------|----------------------|--------------------------------------------------|--------------------------------------------------|
+| --------------------------------------------- | -------------------- | ------------------------------------------------ | ------------------------------------------------ |
| live#production | Number:Power | Current PV production | general available |
| live#pv_status | String | Current PV status | requires meter attached and 'meterInstalled' set |
| live#consumption | Number:Power | Current power consumption | requires meter attached and 'meterInstalled' set |
| aggregate_year#import | Number:Energy | Year Aggregate import from grid | requires meter attached and 'meterInstalled' set |
| aggregate_year#export | Number:Energy | Year Aggregate export to grid | requires meter attached and 'meterInstalled' set |
+## Full Example
-## Full Example
-
-### Thing
+### Thing
- minimum configuration
-```
+```java
solaredge:generic:se2200 [ tokenOrApiKey="...", solarId="..."]
```
- with pollingIntervals
-```
+```java
solaredge:generic:se2200[ tokenOrApiKey="...", solarId="...", liveDataPollingInterval=..., aggregateDataPollingInterval=... ]
```
- maximum version
-```
+```java
solaredge:generic:se2200 [ tokenOrApiKey="secret", solarId="4711", meterInstalled=true, usePrivateApi=true, liveDataPollingInterval=15, aggregateDataPollingInterval=60 ]
```
- multiple inverters
-```
+```java
solaredge:generic:home1 [ tokenOrApiKey="...", solarId="..."]
solaredge:generic:home2 [ tokenOrApiKey="...", solarId="..."]
```
### Items
-```
+```java
Number:Power SE2200_Live_Production "PV Produktion [%.2f %unit%]" {channel="solaredge:generic:se2200:live#production"}
Number:Dimensionless SE2200_Live_Level "Batterieladung" {channel="solaredge:generic:se2200:live#battery_level"}
Number:Energy SE2200_Day_Production "PV Produktion [%.2f kWh]" {channel="solaredge:generic:se2200:aggregate_day#production"}
-# Solar-Log Binding
+# Solar-Log Binding
The [Solar-Log Family](https://www.solar-log.com/en/) of monitoring devices for PV installations provide a MODBUS (TCP) and JSON-based API to access a number of internal data related to power generation and consumption. This binding implements access to the data via the JSON API.
## Use of the binding
-The Solar-Log is exposed as one thing with a number of channels that can be used to read the values for different aspects of your Solar-Log installation.
+The Solar-Log is exposed as one thing with a number of channels that can be used to read the values for different aspects of your Solar-Log installation.
## Setup of the binding
The parameters to be used are simple:
-* `url` denotes the URL of your Solar-Log. If you have not changed anything, this defaults to `http://solar-log`.
-* `refreshInterval` is the interval to fetch new data. Solar-Log updates its data every 15 - 60 seconds. `15` is the default value. Values lower than this will return the result from the last 15 seconds period. No value lower than this can be set in the UI.
+- `url` denotes the URL of your Solar-Log. If you have not changed anything, this defaults to `http://solar-log`.
+- `refreshInterval` is the interval to fetch new data. Solar-Log updates its data every 15 - 60 seconds. `15` is the default value. Values lower than this will return the result from the last 15 seconds period. No value lower than this can be set in the UI.
Currently, the binding does not support authenticated access to the Solar-Log JSON API (which was introduced with newer firmwares). If must set the API access to `Open` in the Solar-Log configuration in order for the binding to work.
The following table is taken from the official manual and contains all available channels. If you want to manually define Items, this can for example be done as follows:
-`Number solarlog_meter_pv_yieldday "Yield Day [% W]" (gSolarLog, gUtilityRoom) { channel="solarlog:meter:pv:yieldday" }`
-
-Data point | Unit | Index Description
-------------------- | --------------------- | -----------------
-lastupdate | Time in the format dd.mm.yy; hh.minmin, secsec | 100 Time
-pac | W | 101 Total output PAC from all of the inverters and meters in inverter mode
-pdc | W | 102 Total output PAC from all of the inverters
-uac | V | 103 Average voltage UAC from the inverter
-udc | V | 104 Average voltage UDC from the inverter
-yieldday | Wh | 105 Total yield for the day from all of the inverters
-yieldyesterday | Wh | 106 Total yield for the previous day from all of the inverters
-yieldmonth | Wh | 107 Total yield for the month from all of the inverters
-yieldyear | Wh | 108 Total yield for the year from all of the inverters
-yieldtotal | Wh | 109 Total yield from all of the inverters
-conspac | W | 110 Current total consumption PAC from all of the consumption meters
-consyieldday | Wh | 111 Total consumption from all of the consumption meters
-consyieldyesterday | Wh | 112 Total consumption for the previous day; all of the consumption meters
-consyieldmonth | Wh | 113 Total consumption for the month; all of the consumption meters
-consyieldyear | Wh | 114 Total consumption for the year; all of the consumption meters
-consyieldtotal | Wh | 115 Accumulated total consumption, all Consumption meter
-totalpower | Wp | 116 Installed generator power
+`Number solarlog_meter_pv_yieldday "Yield Day [% W]" (gSolarLog, gUtilityRoom) { channel="solarlog:meter:pv:yieldday" }`
+
+| Data point | Unit | Index Description |
+| ------------------ | ---------------------------------------------- | -------------------------------------------------------------------------- |
+| lastupdate | Time in the format dd.mm.yy; hh.minmin, secsec | 100 Time |
+| pac | W | 101 Total output PAC from all of the inverters and meters in inverter mode |
+| pdc | W | 102 Total output PAC from all of the inverters |
+| uac | V | 103 Average voltage UAC from the inverter |
+| udc | V | 104 Average voltage UDC from the inverter |
+| yieldday | Wh | 105 Total yield for the day from all of the inverters |
+| yieldyesterday | Wh | 106 Total yield for the previous day from all of the inverters |
+| yieldmonth | Wh | 107 Total yield for the month from all of the inverters |
+| yieldyear | Wh | 108 Total yield for the year from all of the inverters |
+| yieldtotal | Wh | 109 Total yield from all of the inverters |
+| conspac | W | 110 Current total consumption PAC from all of the consumption meters |
+| consyieldday | Wh | 111 Total consumption from all of the consumption meters |
+| consyieldyesterday | Wh | 112 Total consumption for the previous day; all of the consumption meters |
+| consyieldmonth | Wh | 113 Total consumption for the month; all of the consumption meters |
+| consyieldyear | Wh | 114 Total consumption for the year; all of the consumption meters |
+| consyieldtotal | Wh | 115 Accumulated total consumption, all Consumption meter |
+| totalpower | Wp | 116 Installed generator power |
## More information
-More information about the Solar-Log Data interfaces and the exact meaning of the various channels and the documentation of the JSON API can be found in the [Manual](https://www.solar-log.com/manuals/manuals/en_GB/SolarLog_Manual_3x_EN.pdf).
+More information about the Solar-Log Data interfaces and the exact meaning of the various channels and the documentation of the JSON API can be found in the [Manual](https://www.solar-log.com/manuals/manuals/en_GB/SolarLog_Manual_3x_EN.pdf).
| port | no | 12345 | Port number to connect to. This should be `12345` for most inverters |
| refreshInterval | no | 15 | Interval (in seconds) to refresh the channel values. |
-
## Properties
| property | description |
| softwareVersion | Software Version installed on the SolarMax device |
| buildNumber | Firmware Build Number installed on the SolarMax device |
-
## Channels
| channel | type | description |
_inverter.things:_
-```
+```java
Thing solarmax:inverter:solarmax "SolarMax Inverter" [
host="192.168.1.151",
port="12345",
_inverter.items:_
-```
+```java
Group gInverter "SolarMax Inverter"
DateTime lastUpdated "Last Updated" <clock> (gInverter) {channel="solarmax:inverter:solarmax:lastUpdated"}
_heatpump.sitemap:_
-```
+```perl
sitemap heatpump label="Heatpump" {
Frame label="Heatpump" {
Text item=HeatPump_State_Ext
## Supported Things
-| Thing Type ID | Devices |
-|------|---------------|
-| energymanager | EnergyManager itself. |
-| location | Location part of the EnergyManager. |
-| pvplant | Power producing part of the EnergyManager. |
-| gridflow | Grid interaction part of the EnergyManager. |
-| inverter | inverter producing AC current; e.g. MyReserve, Fronius |
-| batteryconverter | battery storage systems; e.g. MyReserve |
-| powermeter | powermeters; e.g. S0BusCounter, MyReserve |
-| evstation | electric-vehicle charging station; e.g. Keba Wallbox |
+| Thing Type ID | Devices |
+| ---------------- | ------------------------------------------------------ |
+| energymanager | EnergyManager itself. |
+| location | Location part of the EnergyManager. |
+| pvplant | Power producing part of the EnergyManager. |
+| gridflow | Grid interaction part of the EnergyManager. |
+| inverter | inverter producing AC current; e.g. MyReserve, Fronius |
+| batteryconverter | battery storage systems; e.g. MyReserve |
+| powermeter | powermeters; e.g. S0BusCounter, MyReserve |
+| evstation | electric-vehicle charging station; e.g. Keba Wallbox |
## Discovery
### EnergyManager
-| Property | Default | Required | Description |
-|----------|---------|----------|-------------|
-| hostname | None | Yes | hostname or ip-address of the energy manager. |
-| refresh | 30 | No | Refresh interval in seconds for the current values of the channels. |
-| rescan | 5 | No | Rescan interval in minutes for the redetection of channgels and things. |
+| Property | Default | Required | Description |
+| -------- | ------- | -------- | ----------------------------------------------------------------------- |
+| hostname | None | Yes | hostname or ip-address of the energy manager. |
+| refresh | 30 | No | Refresh interval in seconds for the current values of the channels. |
+| rescan | 5 | No | Rescan interval in minutes for the redetection of channgels and things. |
### Child Things
-| Property | Default | Required | Description |
-|----------|---------|----------|-------------|
-| guid | None | Yes | Guid of the device as used by the solarwatt energymanager. |
+| Property | Default | Required | Description |
+| -------- | ------- | -------- | ---------------------------------------------------------- |
+| guid | None | Yes | Guid of the device as used by the solarwatt energymanager. |
## Channels
### EnergyManager
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-|timestamp | Number | Milliseconds since the epoch set to the last NTP time sync |
-|datetime | DateTime | Date and time of the last NTP time sync in the timezone of the energy manager |
-|idTimezone | String | Timezone the energy manager is running in. All timestamps are milliseconds since the epoch within this timezone |
-|fractionCPULoadTotal | Number:Dimensionless | Total CPU load in % |
-|fractionCPULoadUser | Number:Dimensionless | Userspace CPU load in % |
-|fractionCPULoadKernel | Number:Dimensionless | Kernelspace CPU load in % |
-|fractionCPULoadAverageLastMinute | Number:Dimensionless | Average 1 minute CPU load in % |
-|fractionCPULoadAverageLastFiveMinutes | Number:Dimensionless | Average 5 minute CPU load in % |
-|fractionCPULoadAverageLastFifteenMinutes | Number:Dimensionless | Average 15 minute CPU load in % |
+| Channel Type ID | Item Type | Description |
+| ---------------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------- |
+| timestamp | Number | Milliseconds since the epoch set to the last NTP time sync |
+| datetime | DateTime | Date and time of the last NTP time sync in the timezone of the energy manager |
+| idTimezone | String | Timezone the energy manager is running in. All timestamps are milliseconds since the epoch within this timezone |
+| fractionCPULoadTotal | Number:Dimensionless | Total CPU load in % |
+| fractionCPULoadUser | Number:Dimensionless | Userspace CPU load in % |
+| fractionCPULoadKernel | Number:Dimensionless | Kernelspace CPU load in % |
+| fractionCPULoadAverageLastMinute | Number:Dimensionless | Average 1 minute CPU load in % |
+| fractionCPULoadAverageLastFiveMinutes | Number:Dimensionless | Average 5 minute CPU load in % |
+| fractionCPULoadAverageLastFifteenMinutes | Number:Dimensionless | Average 15 minute CPU load in % |
### PVPlant
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| powerACOut | Number:Power | Energy produced by the PV in watts |
-| workACOut | Number:Energy | Energy produced by the PV in watt hours |
+| Channel Type ID | Item Type | Description |
+| --------------- | ------------- | --------------------------------------- |
+| powerACOut | Number:Power | Energy produced by the PV in watts |
+| workACOut | Number:Energy | Energy produced by the PV in watt hours |
### Location
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| powerBuffered | Number:Power | Power flow into the storage system
-| powerSelfConsumed | Number:Power | Power consumed direct from PV plus energy stored
-| powerSelfSupplied | Number:Power | Power consumed direct from PV plus energy consumed from storage
-| powerConsumedFromGrid | Number:Power | Power consumed from the grid
-| powerConsumedFromStorage | Number:Power | Power consumed from storage
-| powerConsumedUnmetered | Number:Power | Power consumed in the inner side (outer consumers are subtracted)
-| powerConsumed | Number:Power | Total power consumed. All inner and outer consumers.
-| powerDirectConsumed | Number:Power | Power consumed directly from PV without buffering
-| powerProduced | Number:Power | Power produced by the PV
-| powerOut | Number:Power | Power delivered to the grid
-| powerDirectConsumed | Number:Power | Power consumed directly without energy put into storage or taken from storage
-| workBuffered | Number:Energy | Energy flow into the storage system
-| workSelfConsumed | Number:Energy | Energy consumed direct from PV plus energy stored
-| workSelfSupplied | Number:Energy | Energy consumed direct from PV plus energy consumed from storage
-| workConsumedFromGrid | Number:Energy | Energy consumed from the grid
-| workConsumedFromStorage | Number:Energy | Energy consumed from storage
-| workConsumedUnmetered | Number:Energy | Energy consumed in the inner side (outer consumers are subtracted)
-| workConsumed | Number:Energy | Total energy consumed. All inner and outer consumers.
-| workDirectConsumed | Number:Energy | Energy consumed directly from PV without buffering
-| workProduced | Number:Energy | Energy produced by the PV
-| workOut | Number:Energy | Energy delivered to the grid
-| workDirectConsumed | Number:Energy | Energy consumed directly without energy put into storage or taken from storage
+| Channel Type ID | Item Type | Description |
+| ------------------------ | ------------- | ------------------------------------------------------------------------------ |
+| powerBuffered | Number:Power | Power flow into the storage system |
+| powerSelfConsumed | Number:Power | Power consumed direct from PV plus energy stored |
+| powerSelfSupplied | Number:Power | Power consumed direct from PV plus energy consumed from storage |
+| powerConsumedFromGrid | Number:Power | Power consumed from the grid |
+| powerConsumedFromStorage | Number:Power | Power consumed from storage |
+| powerConsumedUnmetered | Number:Power | Power consumed in the inner side (outer consumers are subtracted) |
+| powerConsumed | Number:Power | Total power consumed. All inner and outer consumers. |
+| powerDirectConsumed | Number:Power | Power consumed directly from PV without buffering |
+| powerProduced | Number:Power | Power produced by the PV |
+| powerOut | Number:Power | Power delivered to the grid |
+| powerDirectConsumed | Number:Power | Power consumed directly without energy put into storage or taken from storage |
+| workBuffered | Number:Energy | Energy flow into the storage system |
+| workSelfConsumed | Number:Energy | Energy consumed direct from PV plus energy stored |
+| workSelfSupplied | Number:Energy | Energy consumed direct from PV plus energy consumed from storage |
+| workConsumedFromGrid | Number:Energy | Energy consumed from the grid |
+| workConsumedFromStorage | Number:Energy | Energy consumed from storage |
+| workConsumedUnmetered | Number:Energy | Energy consumed in the inner side (outer consumers are subtracted) |
+| workConsumed | Number:Energy | Total energy consumed. All inner and outer consumers. |
+| workDirectConsumed | Number:Energy | Energy consumed directly from PV without buffering |
+| workProduced | Number:Energy | Energy produced by the PV |
+| workOut | Number:Energy | Energy delivered to the grid |
+| workDirectConsumed | Number:Energy | Energy consumed directly without energy put into storage or taken from storage |
### PowerMeter, S0Counter, MyReservePowerMeter
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| channelDirectionMetering | String | Representing which energy flow directions are metered. One off *IN*, *OUT*, *BIDIRECTIONAL*
-| powerIn | Number:Power | Power metered flowing into the consumer
-| powerOut | Number:Power | Power metered flowing out of the producer
-| workIn | Number:Energy | Energy metered flowing into the consumer
-| workOut | Number:Energy | Energy metered flowing out of the producer
-| consumptionEnergySum | Number:Energy | Total energy in watt hours
+| Channel Type ID | Item Type | Description |
+| ------------------------ | ------------- | ------------------------------------------------------------------------------------------- |
+| channelDirectionMetering | String | Representing which energy flow directions are metered. One off _IN_, _OUT_, _BIDIRECTIONAL_ |
+| powerIn | Number:Power | Power metered flowing into the consumer |
+| powerOut | Number:Power | Power metered flowing out of the producer |
+| workIn | Number:Energy | Energy metered flowing into the consumer |
+| workOut | Number:Energy | Energy metered flowing out of the producer |
+| consumptionEnergySum | Number:Energy | Total energy in watt hours |
### Inverter, MyReserveInverter, SunSpecInverter
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| powerACOutMax | Number:Power | Maximum power production
-| powerACOutLimit | Number:Power | Limit of power production
-| powerACOut | Number:Power | Power delivered by the inverter
-| workACOut | Number:Energy | Energy delivered by the inverter
-| powerInstallledPeak | Number:Power | Technical peak power available
+| Channel Type ID | Item Type | Description |
+| ------------------- | ------------- | -------------------------------- |
+| powerACOutMax | Number:Power | Maximum power production |
+| powerACOutLimit | Number:Power | Limit of power production |
+| powerACOut | Number:Power | Power delivered by the inverter |
+| workACOut | Number:Energy | Energy delivered by the inverter |
+| powerInstallledPeak | Number:Power | Technical peak power available |
### BatteryConverter, MyReserve
-All of *Inverter* plus
+All of _Inverter_ plus
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| powerACIn | Number:Power | Power fed into battery
-| workACIn | Number:Energy | Energy fed into battery
-| stateOfCharge | Number | Charging state of battery in percent
-| stateOfHealth | Number | Internal health metric in percent
-| temperatureBattery | Number:Temperature | Temperature of the battery in celsius
-| modeConverter | Switch | Current mode of converter. *ON* or *OFF*
-| voltageBatteryCellMin | Number:Voltage | minimum voltage of all batteries
-| voltageBatteryCellMean | Number:Voltage | mean voltage of all batteries
-| voltageBatteryCellMax | Number:Voltage | maximum voltage of all batteries
+| Channel Type ID | Item Type | Description |
+| ---------------------- | ------------------ | ---------------------------------------- |
+| powerACIn | Number:Power | Power fed into battery |
+| workACIn | Number:Energy | Energy fed into battery |
+| stateOfCharge | Number | Charging state of battery in percent |
+| stateOfHealth | Number | Internal health metric in percent |
+| temperatureBattery | Number:Temperature | Temperature of the battery in celsius |
+| modeConverter | Switch | Current mode of converter. _ON_ or _OFF_ |
+| voltageBatteryCellMin | Number:Voltage | minimum voltage of all batteries |
+| voltageBatteryCellMean | Number:Voltage | mean voltage of all batteries |
+| voltageBatteryCellMax | Number:Voltage | maximum voltage of all batteries |
### EVStation, KebaEv
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| powerACIn | Number:Power | Power consumed by the charger
-| workACIn | Number:Energy | Energy consumed by the charger
-| workACInSession | Number:Energy | Work consumed during current/last charging session
-| modeStation | String | Current mode of the charger. One off *STANDBY*, *CHARGING*, *OFF*
-| connectivityStatus | String | Current state of the charging connection. One off *ONLINE* or *OFFLINE*
+| Channel Type ID | Item Type | Description |
+| ------------------ | ------------- | ----------------------------------------------------------------------- |
+| powerACIn | Number:Power | Power consumed by the charger |
+| workACIn | Number:Energy | Energy consumed by the charger |
+| workACInSession | Number:Energy | Work consumed during current/last charging session |
+| modeStation | String | Current mode of the charger. One off _STANDBY_, _CHARGING_, _OFF_ |
+| connectivityStatus | String | Current state of the charging connection. One off _ONLINE_ or _OFFLINE_ |
### GridFlow
-| Channel Type ID | Item Type | Description |
-|-----------------|-----------|-------------|
-| feedInLimit | Number:Dimensionless | Current derating setting in percent
+| Channel Type ID | Item Type | Description |
+| --------------- | -------------------- | ----------------------------------- |
+| feedInLimit | Number:Dimensionless | Current derating setting in percent |
## Example
demo.things:
-```
+```java
Bridge solarwatt:energymanager:56f4ac2fa2 [hostname="192.168.0.64", refresh=30, rescan=5]
// the individual things configured with their energy manager guid
Thing solarwatt:batteryconverter:56f4ac2fa2:5c7d5929-8fa4-42c5-8737-48bef77b61f5 [guid="5c7d5929-8fa4-42c5-8737-48bef77b61f5"] (solarwatt:energymanager:56f4ac2fa2)
demo.items:
-```
+```java
// Location DeviceClass com.kiwigrid.devices.location.Location Guid b4e4978b96404e61977bfacd3eab299d
Number:Power Solarwatt_Location_b4e4978b96404e61977bfacd3eab299d_PowerBuffered "PowerBuffered [%.2f W]" <energy> ["Measurement", "Power"] {channel="solarwatt:location:56f4ac2fa2:b4e4978b-9640-4e61-977b-facd3eab299d:powerBuffered"}
Number:Power Solarwatt_Location_b4e4978b96404e61977bfacd3eab299d_PowerBufferedFromGrid "PowerBufferedFromGrid [%.2f W]" <energy> ["Measurement", "Power"] {channel="solarwatt:location:56f4ac2fa2:b4e4978b-9640-4e61-977b-facd3eab299d:powerBufferedFromGrid"}
### mylink
-| Parameter | Parameter ID | Required/Optional | Description |
-|------------------|-------------------|-------------------|-------------|
-| IP or Hostname | ipAddress | Required | Hostname or IP Address of the myLink device |
-| System Id | systemId | Required | The system id configured on the myLink device |
+| Parameter | Parameter ID | Required/Optional | Description |
+| -------------- | ------------ | ----------------- | --------------------------------------------- |
+| IP or Hostname | ipAddress | Required | Hostname or IP Address of the myLink device |
+| System Id | systemId | Required | The system id configured on the myLink device |
### shade
-| Parameter | Parameter ID | Required/Optional | Description |
-|------------------|-------------------|-------------------|-------------|
-| Target ID | targetId | Required | Address of shade in the Somfy system |
+| Parameter | Parameter ID | Required/Optional | Description |
+| --------- | ------------ | ----------------- | ------------------------------------ |
+| Target ID | targetId | Required | Address of shade in the Somfy system |
### scene
-| Parameter | Parameter ID | Required/Optional | Description |
-|------------------|-------------------|-------------------|-------------|
-| Scene ID | sceneId | Required | Address of scene in the Somfy system |
+| Parameter | Parameter ID | Required/Optional | Description |
+| --------- | ------------ | ----------------- | ------------------------------------ |
+| Scene ID | sceneId | Required | Address of scene in the Somfy system |
## Channels
The following channels are supported by the binding. Note that specific weather station models may support only some or all of these channels.
-| Channel ID | Item Type | Description |
-|---------------------------------|-------------------------|---------------------------------------------------------------|
-| shadeControl | Rollershutter | Device control (UP, DOWN, STOP) |
-| scenelist | String | Comma-separated list of scenes of form sceneId=sceneName |
-| button | Switch | Button to trigger a scene or rule |
+| Channel ID | Item Type | Description |
+| ------------ | ------------- | -------------------------------------------------------- |
+| shadeControl | Rollershutter | Device control (UP, DOWN, STOP) |
+| scenelist | String | Comma-separated list of scenes of form sceneId=sceneName |
+| button | Switch | Button to trigger a scene or rule |
## Example
### Things
-```
+```java
Bridge somfymylink:mylink:mylink1 "myLink Bridge" @ "Office" [ ipAddress="192.168.1.1", systemId="mysystemidhere" ] {
Thing shade shade1 "Living Room" [ targetId="CC114A21.1" ]
}
## Channels
| Thing | Channel | Note |
-|------------------------------------------------------------------------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ---------------------------------------------------------------------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| bridge | N.A | bridge does not expose any channel |
| gateway | status | status of your gateway |
| gateway | scenarios | used to run the scenarios defined in the cloud portal |
If you want to set the MY position of a roller shutter and you don't care the possible movement, try sending the MOVE command (OH2 does not know MY, so it stands for "move to MY position")
-```
+```java
CONTROL_CHANNEL.sendCommand(MOVE)
```
Blinds and adjustable slats roller shutters can control their closure and orientation by sending a comma separated string consisting of closure (0-100) and orientation (0-100) to the "closure_orientaion" channel.
-```
+```java
CLOSURE_ORIENTATION_CHANNEL.sendCommand("50,50")
```
.things file
-```
+```java
Bridge somfytahoma:bridge:237dbae7 "Somfy Tahoma Bridge" [ email="my@email.com", password="MyPassword", refresh=10 , statusTimeout=30] {
Thing gateway 1214-4519-8041 "Tahoma gateway" [ id="1214-4519-8041" ]
Thing rollershutter 31da8dac-8e09-455a-bc7a-6ed70f740001 "Bedroom" [ url="io://0204-1234-8041/6825356" ]
.items file
-```
+```java
String TahomaVersion "Tahoma version [%s]" { channel="somfytahoma:gateway:237dbae7:1214-4519-8041:version" }
Rollershutter RollerShutterBedroom "Roller shutter [%d %%]" {channel="somfytahoma:rollershutter:237dbae7:31da8dac-8e09-455a-bc7a-6ed70f740001:control"}
Dimmer RollerShutterBedroomD "Roller shutter dimmer [%.1f]" {channel="somfytahoma:rollershutter:237dbae7:31da8dac-8e09-455a-bc7a-6ed70f740001:control"}
.sitemap file
-```
+```perl
Text item=TahomaVersion
Switch item=Rollers1UP label="Roller shutters 1st floor" mappings=[ON="UP"]
Switch item=Rollers1DOWN label="Roller shutters 1st floor" mappings=[ON="DOWN"]
Since Rolleshutter items are unsupported, only Dimmer with control channel can be used.
Syntax in .item file is as follows:
-```
+```java
Dimmer RollerShutterLivingD "Roller shutter living [%.1f]" [ "Lighting" ] {channel="somfytahoma:rollershutter:237dbae7:87bf0403-a45d-4037-b874-28f4ece30004:control"}
```
The Philips Somneo thing requires the `hostname` it can connect to.
Its API only allows HTTPS access, but unfortunately the SSL certificate is not trusted and must be ignored by the parameter.
-| Parameter | Values | Default |
-|---------------------|-------------------------------------------|---------|
-| hostname | Hostname or IP address of the device | - |
-| port | Port number | 443 |
-| refreshInterval | Interval the device is polled in sec | 30 |
-| ignoreSSLErrors | Ignore SSL Errors | true |
+| Parameter | Values | Default |
+| --------------- | ------------------------------------ | ------- |
+| hostname | Hostname or IP address of the device | - |
+| port | Port number | 443 |
+| refreshInterval | Interval the device is polled in sec | 30 |
+| ignoreSSLErrors | Ignore SSL Errors | true |
## Channels
-| Channel | Type | Read/Write | Description |
-|-----------------------|----------------------|------------|-------------------------------------------------------------|
-| _Sensor_ | | | |
-| sensor#illuminance | Number:Illuminance | R | The current illuminance in lux |
-| sensor#temperature | Number:Temperature | R | The current temperature |
-| sensor#humidity | Number:Dimensionless | R | The current humidity in % |
-| sensor#noise | Number:Dimensionless | R | The current noise in dB |
-| _Light_ | | | |
-| light#main | Switch | RW | Turn the light on, off and set the brightness |
-| light#night | Switch | RW | Turn the night light on or off |
-| _Sunset_ | | | |
-| sunset#switch | Switch | RW | Turn the sunset program on or off |
-| sunset#remainingTime | Number:Time | R | Remaining time from an activated program |
-| sunset#lightIntensity | Dimmer | RW | Set the brightness during the sunset programme |
-| sunset#duration | Number:Time | RW | The duration of sunset program in minutes |
-| sunset#colorSchema | Number | RW | Choose a personal sunset |
-| sunset#ambientNoise | String | RW | Ambient noise played during the sunset |
-| sunset#volume | Dimmer | RW | Set the volume during the sunset programme |
-| _Relax_ | | | |
-| relax#switch | Switch | RW | Turn the relax breathe program on or off |
-| relax#remainingTime | Number:Time | R | Remaining time from an activated program |
-| relax#breathingRate | Number | RW | Breathing rate per minute during the relax program |
-| relax#duration | Number:Time | RW | The duration of breathe program in minutes |
-| relax#guidanceType | Number | RW | Select a breath guidance type during the relax program |
-| relax#lightIntensity | Dimmer | RW | Set the brightness during the breathe programme |
-| relax#volume | Dimmer | RW | Set the volume during the breathe programme |
-| _Audio_ | | | |
-| audio#radio | Player | RW | Controlling the radio and seeking for a frequency |
-| audio#aux | Switch | RW | Turn the AUX input on or off |
-| audio#volume | Dimmer | RW | Change the sound volume of the device |
-| audio#preset | String | RW | The Device has 5 presets to store radio frequencies |
-| audio#frequency | String | R | The currently selected radio frequency |
+| Channel | Type | Read/Write | Description |
+| --------------------- | -------------------- | ---------- | ------------------------------------------------------ |
+| _Sensor_ | | | |
+| sensor#illuminance | Number:Illuminance | R | The current illuminance in lux |
+| sensor#temperature | Number:Temperature | R | The current temperature |
+| sensor#humidity | Number:Dimensionless | R | The current humidity in % |
+| sensor#noise | Number:Dimensionless | R | The current noise in dB |
+| _Light_ | | | |
+| light#main | Switch | RW | Turn the light on, off and set the brightness |
+| light#night | Switch | RW | Turn the night light on or off |
+| _Sunset_ | | | |
+| sunset#switch | Switch | RW | Turn the sunset program on or off |
+| sunset#remainingTime | Number:Time | R | Remaining time from an activated program |
+| sunset#lightIntensity | Dimmer | RW | Set the brightness during the sunset programme |
+| sunset#duration | Number:Time | RW | The duration of sunset program in minutes |
+| sunset#colorSchema | Number | RW | Choose a personal sunset |
+| sunset#ambientNoise | String | RW | Ambient noise played during the sunset |
+| sunset#volume | Dimmer | RW | Set the volume during the sunset programme |
+| _Relax_ | | | |
+| relax#switch | Switch | RW | Turn the relax breathe program on or off |
+| relax#remainingTime | Number:Time | R | Remaining time from an activated program |
+| relax#breathingRate | Number | RW | Breathing rate per minute during the relax program |
+| relax#duration | Number:Time | RW | The duration of breathe program in minutes |
+| relax#guidanceType | Number | RW | Select a breath guidance type during the relax program |
+| relax#lightIntensity | Dimmer | RW | Set the brightness during the breathe programme |
+| relax#volume | Dimmer | RW | Set the volume during the breathe programme |
+| _Audio_ | | | |
+| audio#radio | Player | RW | Controlling the radio and seeking for a frequency |
+| audio#aux | Switch | RW | Turn the AUX input on or off |
+| audio#volume | Dimmer | RW | Change the sound volume of the device |
+| audio#preset | String | RW | The Device has 5 presets to store radio frequencies |
+| audio#frequency | String | R | The currently selected radio frequency |
## Full Example
somneo.things:
-```
+```java
Thing somneo:hf367x:1 "Philips Somneo" @ "Bedroom" [ hostname="192.168.0.110", ignoreSSLErrors=true ]
```
somneo.items:
-```
+```java
// Sensors
Number:Illuminance PhilipsSomneo_Illuminance "Illuminance" <Sun> ["Measurement", "Light"] { channel="somneo:hf367x:1:sensor#illuminance" }
Number:Temperature PhilipsSomneo_Temperature "Temperature" <Temperature> ["Measurement", "Temperature"] { channel="somneo:hf367x:1:sensor#temperature" }
somneo.sitemap:
-```
+```perl
sitemap somneo label="Philips Somneo" {
Frame label="Sensors" {
Default item=PhilipsSomneo_Illuminance
Thanks to:
-* [homebridge-somneo](https://github.com/zackwag/homebridge-somneo) - For creating a similar plugin in another platform and exposing endpoints for control.
-* [somneo-client](https://github.com/DonkerNet/somneo-client) - For creating a similar plugin in another platform and exposing endpoints for control.
-* HTTP Binding and other OpenHAB addons - Which was used as examples.
+- [homebridge-somneo](https://github.com/zackwag/homebridge-somneo) - For creating a similar plugin in another platform and exposing endpoints for control.
+- [somneo-client](https://github.com/DonkerNet/somneo-client) - For creating a similar plugin in another platform and exposing endpoints for control.
+- HTTP Binding and other OpenHAB addons - Which was used as examples.
## Supported Things
| Thing Type | Description |
-|---------------|--------------------------------|
+| ------------- | ------------------------------ |
| sonnenbattery | Monitoring of a sonnen battery |
-
## Thing Configuration
Only the parameter `hostIP` is required; this is the IP address of the sonnen battery in your local network.
-
## Channels
The following channels are yet supported:
-
-| Channel | Type | Access| Description|
-|---------|-------|-------|------------|
-|batteryChargingState|Switch|read|Indicates if the Battery is charging at that moment|
-|batteryCharging|Number:Energy|read|Indicates the actual current charging the Battery. Otherwise 0.|
-|batteryDischargingState|Switch|read|Indicates if the Battery is discharging at that moment|
-|batteryDischarging|Number:Energy|read|Indicates the actual current discharging the Battery. Otherwise 0.|
-|batteryFeedIn|Number:Energy|read|Indicates the actual charging current of the Battery in watt|
-|batteryDischarging|Number:Energy|read|Indicates the actual current discharging the Battery in watt|
-|consumption|Number:Energy|read|Indicates the actual consumption of the consumer in watt|
-|gridFeedIn|Number:Energy|read|Indicates the actual current feeding to the Grid in watt.0 if nothing is feeded|
-|gridConsumption|Number:Energy|read|Indicates the actual current consumption from the Grid in watt.0 if nothing is received|
-|solarProduction|Number:Energy|read|Indicates the actual production of the Solar system in watt|
-|batteryLevel|Number|read|Indicates the actual Battery Level in % from 0 - 100|
-|flowConsumptionBatteryState|Switch|read|Indicates if there is a current flow from Battery towards Consumption|
-|flowConsumptionGridState|Switch|read|Indicates if there is a current flow from Grid towards Consumption|
-|flowConsumptionProductionState|Switch|read|Indicates if there is a current flow from Solar Production towards Consumption|
-|flowGridBatteryState|Switch|read|Indicates if there is a current flow from Grid towards Battery|
-|flowProductionBatteryState|Switch|read|Indicates if there is a current flow from Production towards Battery|
-|flowProductionGridState|Switch|read|Indicates if there is a current flow from Production towards Grid|
+| Channel | Type | Access | Description |
+| ------------------------------ | ------------- | ------ | --------------------------------------------------------------------------------------- |
+| batteryChargingState | Switch | read | Indicates if the Battery is charging at that moment |
+| batteryCharging | Number:Energy | read | Indicates the actual current charging the Battery. Otherwise 0. |
+| batteryDischargingState | Switch | read | Indicates if the Battery is discharging at that moment |
+| batteryDischarging | Number:Energy | read | Indicates the actual current discharging the Battery. Otherwise 0. |
+| batteryFeedIn | Number:Energy | read | Indicates the actual charging current of the Battery in watt |
+| batteryDischarging | Number:Energy | read | Indicates the actual current discharging the Battery in watt |
+| consumption | Number:Energy | read | Indicates the actual consumption of the consumer in watt |
+| gridFeedIn | Number:Energy | read | Indicates the actual current feeding to the Grid in watt.0 if nothing is feeded |
+| gridConsumption | Number:Energy | read | Indicates the actual current consumption from the Grid in watt.0 if nothing is received |
+| solarProduction | Number:Energy | read | Indicates the actual production of the Solar system in watt |
+| batteryLevel | Number | read | Indicates the actual Battery Level in % from 0 - 100 |
+| flowConsumptionBatteryState | Switch | read | Indicates if there is a current flow from Battery towards Consumption |
+| flowConsumptionGridState | Switch | read | Indicates if there is a current flow from Grid towards Consumption |
+| flowConsumptionProductionState | Switch | read | Indicates if there is a current flow from Solar Production towards Consumption |
+| flowGridBatteryState | Switch | read | Indicates if there is a current flow from Grid towards Battery |
+| flowProductionBatteryState | Switch | read | Indicates if there is a current flow from Production towards Battery |
+| flowProductionGridState | Switch | read | Indicates if there is a current flow from Production towards Grid |
## Full Example
example.things:
-```
+```java
Thing sonnen:sonnenbattery:myBattery "Sonnen Battery" [ hostIP="192.168.0.10"]
```
example.items:
-```
+```java
Number:Energy Consumption { channel="sonnen:sonnenbattery:myBattery:consumption" }
Number:Energy GridFeeding { channel="sonnen:sonnenbattery:myBattery:gridFeedIn" }
Number BatteryLevel { channel="sonnen:sonnenbattery:myBattery:batteryLevel" }
This binding integrates the [Sonos Multi-Room Audio system](https://www.sonos.com).
-**Attention:**
-You might run into trouble if your control system (the binding) is in another subnet than your Sonos device.
+**Attention:**
+You might run into trouble if your control system (the binding) is in another subnet than your Sonos device.
Sonos devices make use of multicast which in most cases needs additional router configuration outside of a single subnet.
-If you observe communication errors (COMMUNICATION_ERROR/not registered), you might need to configure your router to increase the TTL of the packets send by your Sonos device.
+If you observe communication errors (COMMUNICATION_ERROR/not registered), you might need to configure your router to increase the TTL of the packets send by your Sonos device.
This happens because of a TTL=1 for ALIVE packets send by Sonos devices, resulting in dropped packets after one hop.
## Supported Things
The binding has the following configuration options, which can be set for "binding:sonos":
-| Parameter | Name | Description | Required |
-|-------------|------------------|--------------------------------------------------------------------------|----------|
-| opmlUrl | OPML Service URL | URL for the OPML/tunein.com service | no |
-| callbackUrl | Callback URL | URL to use for playing notification sounds, e.g. http://192.168.0.2:8080 | no |
+| Parameter | Name | Description | Required |
+| ----------- | ---------------- | -------------------------------------------------------------------------- | -------- |
+| opmlUrl | OPML Service URL | URL for the OPML/tunein.com service | no |
+| callbackUrl | Callback URL | URL to use for playing notification sounds, e.g. `http://192.168.0.2:8080` | no |
## Thing Configuration
You can use the `notificationVolume` property for setting a default volume (in percent) to be used to play notifications.
In the thing file, this looks e.g. like
-```
+```java
Thing sonos:PLAY1:1 [udn="RINCON_000E58D8403A0XXXX", refresh=60, notificationVolume=25]
```
The devices support the following channels:
-| Channel Type ID | Item Type | Access Mode | Description | Thing types |
-|---------------------|-----------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
-| add | String | W | Add the given Zone Player to the group of this Zone Player | all |
-| alarm | Switch | W | Set the first occurring alarm either ON or OFF. Alarms first have to be defined through the Sonos Controller app | all |
-| alarmproperties | String | R | Properties of the alarm currently running | all |
-| alarmrunning | Switch | R | Set to ON if the alarm was triggered | all |
-| bass | Number | RW | Set or get the bass level adjustment (value in range -10 / 10) | all |
-| batterycharging | Switch | R | Indicator set to ON when the battery is charging | Move, Roam, RoamSL |
-| batterylevel | Number | R | Current battery level | Move, Roam, RoamSL |
-| clearqueue | Switch | W | Suppress all songs from the current queue | all |
-| codec | String | R | Name of codec currently being decoded | Arc, Arc SL, PLAYBAR, PLAYBASE, Beam, Amp |
-| control | Player | RW | Control the Zone Player, e.g. PLAY/PAUSE/NEXT/PREVIOUS | all |
-| coordinator | String | R | UDN of the coordinator for the current group | all |
-| currentalbum | String | R | Name of the album currently playing | all |
-| currentalbumart | Image | R | Cover art of the album currently playing | all |
-| currentalbumarturl | String | R | Cover art URL of the album currently playing | all |
-| currentartist | String | R | Name of the artist currently playing | all |
-| currenttitle | String | R | Title of the song currently playing | all |
-| currenttrack | String | R | Name of the current track or radio station currently playing | all |
-| currenttrackuri | String | R | URI of the current track | all |
-| currenttransporturi | String | R | URI of the current AV transport | all |
-| favorite | String | W | Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app | all |
-| heightlevel | Number | RW | Set or get the height level adjustment (value in range -10 / 10) | Arc, Arc SL |
-| led | Switch | RW | Set or get the status of the white LED on the front of the Zone Player | all |
-| linein | Switch | R | Indicator set to ON when the line-in of the Zone Player is connected | PLAY5, Five, CONNECT, CONNECTAMP, PLAYBAR, PLAYBASE, Beam, Port |
-| analoglinein | Switch | R | Indicator set to ON when the analog line-in of the Zone Player is connected | Amp |
-| digitallinein | Switch | R | Indicator set to ON when the digital line-in of the Zone Player is connected | Amp |
-| localcoordinator | Switch | R | Indicator set to ON if the this Zone Player is the Zone Group Coordinator | all |
-| loudness | Switch | RW | Enable or disable the loudness | all |
-| microphone | Switch | R | Indicator set to ON when the microphone is enabled | Arc, Beam, Move, One, Roam |
-| mute | Switch | RW | Set or get the mute state of the master volume of the Zone Player | all |
-| nightmode | Switch | RW | Enable or disable the night mode feature | PLAYBAR, PLAYBASE, Beam, Amp |
-| notificationsound | String | W | Play a notification sound by a given URI | all |
-| playlinein | String | W | This channel supports playing the audio source connected to the line-in of the zoneplayer identified by the Thing UID or UPnP UDN provided by the String. | All |
-| playlist | String | W | Play the given playlist. The playlist has to predefined in the Sonos Controller app | all |
-| playqueue | Switch | W | Play the songs from the current queue | all |
-| playtrack | Number | W | Play the given track number from the current queue | all |
-| playuri | String | W | Play the given URI | all |
-| publicaddress | Switch | W | Put all Zone Players in one group, and stream audio from the line-in from the Zone Player that triggered the command | all except Amp |
-| publicanalogaddress | Switch | W | Put all Zone Players in one group, and stream audio from the analog line-in from the Zone Player that triggered the command | Amp |
-| publicdigitaladdress| Switch | W | Put all Zone Players in one group, and stream audio from the digital line-in from the Zone Player that triggered the command | Amp |
-| radio | String | W | Play the given radio station. The radio station has to be predefined in the Sonos Controller app | all |
-| remove | String | W | Remove the given Zone Player from the group of this Zone Player | all |
-| repeat | String | RW | Repeat the track or queue playback. The accepted values are OFF, ONE and ALL | all |
-| restore | Switch | W | Restore the state of the Zone Player | all |
-| restoreall | Switch | W | Restore the state of all the Zone Players | all |
-| save | Switch | W | Save the state of the Zone Player | all |
-| saveall | Switch | W | Save the state of all the Zone Players | all |
-| shuffle | Switch | RW | Shuffle the queue playback | all |
-| sleeptimer | Number | RW | Set/show the duration of the SleepTimer in seconds | all |
-| snooze | Number | W | Snooze the running alarm, if any, with the given number of minutes | all |
-| speechenhancement | Switch | RW | Enable or disable the speech enhancement feature | PLAYBAR, PLAYBASE, Beam, One, Amp |
-| standalone | Switch | W | Make the Zone Player leave its Group and become a standalone Zone Player | all |
-| state | String | R | The State channel contains state of the Zone Player, e.g. PLAYING, STOPPED, ... | all |
-| stop | Switch | W | Write `ON` to this channel: Stops the Zone Player player. | all |
-| treble | Number | RW | Set or get the treble level adjustment (value in range -10 / 10) | all |
-| subwoofer | Switch | RW | Enable or disable the subwoofer | Arc, Arc SL |
-| subwoofergain | Number | RW | Set or get the subwoofer gain adjustment (value in range -15 / 15) | Arc, Arc SL |
-| surround | Switch | RW | Enable or disable the surround audio | Arc, Arc SL |
-| surroundmusicmode | String | RW | Set or get the surround playback mode for music, either 0 for Ambient or 1 for full | Arc, Arc SL |
-| surroundmusiclevel | Number | RW | Set or get the surround level adjustment for music (value in range -15 / 15) | Arc, Arc SL |
-| surroundtvlevel | Number | RW | Set or get the surround level adjustment for TV (value in range -15 / 15) | Arc, Arc SL |
-| tuneinstationid | String | RW | Provide the current TuneIn station id or play the TuneIn radio given by its station id | all |
-| volume | Dimmer | RW | Set or get the master volume of the Zone Player | all |
-| zonegroupid | String | R | Id of the Zone Group the Zone Player belongs to | all |
-| zonename | String | R | Name of the Zone associated to the Zone Player | all |
+| Channel Type ID | Item Type | Access Mode | Description | Thing types |
+| -------------------- | --------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
+| add | String | W | Add the given Zone Player to the group of this Zone Player | all |
+| alarm | Switch | W | Set the first occurring alarm either ON or OFF. Alarms first have to be defined through the Sonos Controller app | all |
+| alarmproperties | String | R | Properties of the alarm currently running | all |
+| alarmrunning | Switch | R | Set to ON if the alarm was triggered | all |
+| bass | Number | RW | Set or get the bass level adjustment (value in range -10 / 10) | all |
+| batterycharging | Switch | R | Indicator set to ON when the battery is charging | Move, Roam, RoamSL |
+| batterylevel | Number | R | Current battery level | Move, Roam, RoamSL |
+| clearqueue | Switch | W | Suppress all songs from the current queue | all |
+| codec | String | R | Name of codec currently being decoded | Arc, Arc SL, PLAYBAR, PLAYBASE, Beam, Amp |
+| control | Player | RW | Control the Zone Player, e.g. PLAY/PAUSE/NEXT/PREVIOUS | all |
+| coordinator | String | R | UDN of the coordinator for the current group | all |
+| currentalbum | String | R | Name of the album currently playing | all |
+| currentalbumart | Image | R | Cover art of the album currently playing | all |
+| currentalbumarturl | String | R | Cover art URL of the album currently playing | all |
+| currentartist | String | R | Name of the artist currently playing | all |
+| currenttitle | String | R | Title of the song currently playing | all |
+| currenttrack | String | R | Name of the current track or radio station currently playing | all |
+| currenttrackuri | String | R | URI of the current track | all |
+| currenttransporturi | String | R | URI of the current AV transport | all |
+| favorite | String | W | Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app | all |
+| heightlevel | Number | RW | Set or get the height level adjustment (value in range -10 / 10) | Arc, Arc SL |
+| led | Switch | RW | Set or get the status of the white LED on the front of the Zone Player | all |
+| linein | Switch | R | Indicator set to ON when the line-in of the Zone Player is connected | PLAY5, Five, CONNECT, CONNECTAMP, PLAYBAR, PLAYBASE, Beam, Port |
+| analoglinein | Switch | R | Indicator set to ON when the analog line-in of the Zone Player is connected | Amp |
+| digitallinein | Switch | R | Indicator set to ON when the digital line-in of the Zone Player is connected | Amp |
+| localcoordinator | Switch | R | Indicator set to ON if the this Zone Player is the Zone Group Coordinator | all |
+| loudness | Switch | RW | Enable or disable the loudness | all |
+| microphone | Switch | R | Indicator set to ON when the microphone is enabled | Arc, Beam, Move, One, Roam |
+| mute | Switch | RW | Set or get the mute state of the master volume of the Zone Player | all |
+| nightmode | Switch | RW | Enable or disable the night mode feature | PLAYBAR, PLAYBASE, Beam, Amp |
+| notificationsound | String | W | Play a notification sound by a given URI | all |
+| playlinein | String | W | This channel supports playing the audio source connected to the line-in of the zoneplayer identified by the Thing UID or UPnP UDN provided by the String. | All |
+| playlist | String | W | Play the given playlist. The playlist has to predefined in the Sonos Controller app | all |
+| playqueue | Switch | W | Play the songs from the current queue | all |
+| playtrack | Number | W | Play the given track number from the current queue | all |
+| playuri | String | W | Play the given URI | all |
+| publicaddress | Switch | W | Put all Zone Players in one group, and stream audio from the line-in from the Zone Player that triggered the command | all except Amp |
+| publicanalogaddress | Switch | W | Put all Zone Players in one group, and stream audio from the analog line-in from the Zone Player that triggered the command | Amp |
+| publicdigitaladdress | Switch | W | Put all Zone Players in one group, and stream audio from the digital line-in from the Zone Player that triggered the command | Amp |
+| radio | String | W | Play the given radio station. The radio station has to be predefined in the Sonos Controller app | all |
+| remove | String | W | Remove the given Zone Player from the group of this Zone Player | all |
+| repeat | String | RW | Repeat the track or queue playback. The accepted values are OFF, ONE and ALL | all |
+| restore | Switch | W | Restore the state of the Zone Player | all |
+| restoreall | Switch | W | Restore the state of all the Zone Players | all |
+| save | Switch | W | Save the state of the Zone Player | all |
+| saveall | Switch | W | Save the state of all the Zone Players | all |
+| shuffle | Switch | RW | Shuffle the queue playback | all |
+| sleeptimer | Number | RW | Set/show the duration of the SleepTimer in seconds | all |
+| snooze | Number | W | Snooze the running alarm, if any, with the given number of minutes | all |
+| speechenhancement | Switch | RW | Enable or disable the speech enhancement feature | PLAYBAR, PLAYBASE, Beam, One, Amp |
+| standalone | Switch | W | Make the Zone Player leave its Group and become a standalone Zone Player | all |
+| state | String | R | The State channel contains state of the Zone Player, e.g. PLAYING, STOPPED, ... | all |
+| stop | Switch | W | Write `ON` to this channel: Stops the Zone Player player. | all |
+| treble | Number | RW | Set or get the treble level adjustment (value in range -10 / 10) | all |
+| subwoofer | Switch | RW | Enable or disable the subwoofer | Arc, Arc SL |
+| subwoofergain | Number | RW | Set or get the subwoofer gain adjustment (value in range -15 / 15) | Arc, Arc SL |
+| surround | Switch | RW | Enable or disable the surround audio | Arc, Arc SL |
+| surroundmusicmode | String | RW | Set or get the surround playback mode for music, either 0 for Ambient or 1 for full | Arc, Arc SL |
+| surroundmusiclevel | Number | RW | Set or get the surround level adjustment for music (value in range -15 / 15) | Arc, Arc SL |
+| surroundtvlevel | Number | RW | Set or get the surround level adjustment for TV (value in range -15 / 15) | Arc, Arc SL |
+| tuneinstationid | String | RW | Provide the current TuneIn station id or play the TuneIn radio given by its station id | all |
+| volume | Dimmer | RW | Set or get the master volume of the Zone Player | all |
+| zonegroupid | String | R | Id of the Zone Group the Zone Player belongs to | all |
+| zonename | String | R | Name of the Zone associated to the Zone Player | all |
The `playline` channel accepts as command either the thing UID or the UPnP UDN.
Note that you can prefix your command value with "Analog," or "Digital," to distinguish the line-in of your Sonos device.
demo.things:
-```
+```java
Thing sonos:PLAY1:living [ udn="RINCON_000E58D8403A0XXXX", refresh=60]
```
demo.items:
-```
+```java
Group Sonos <player>
Player Sonos_Controller "Controller" (Sonos) {channel="sonos:PLAY1:living:control"}
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu"
{
- Frame label="Sonos" {
- Default item=Sonos_Controller
- Slider item=Sonos_Volume
- Switch item=Sonos_Mute
- Switch item=Sonos_LED
- Text item=Sonos_CurrentTrack
- Text item=Sonos_State
- }
+ Frame label="Sonos" {
+ Default item=Sonos_Controller
+ Slider item=Sonos_Volume
+ Switch item=Sonos_Mute
+ Switch item=Sonos_LED
+ Text item=Sonos_CurrentTrack
+ Text item=Sonos_State
+ }
}
```
## Supported Things
For the moment the devices that are supported by this binding are
- * STR-DN1080
- * HT-CT800
- * SRS-ZR5
- * HT-ST5000
- * HT-Z9F
- * HT-ZF9
- * HT-MT500
+- STR-DN1080
+- HT-CT800
+- SRS-ZR5
+- HT-ST5000
+- HT-Z9F
+- HT-ZF9
+- HT-MT500
When being defined in a \*.things file, the specific thing types
STR-DN1080, HT-ST5000, HT-ZF9, HT-Z9F, HT-CT800, HT-MT500 and SRS-ZR5 should be used.
The SonyAudio Thing requires the network address, port and path as a configuration value in order for the binding to know how to access the device.
Additionally, a refresh interval, used to poll the Sony Audio device, can be specified (in seconds).
-```
+```java
Thing sonyaudio:HT-ST5000:1 [ipAddress="192.168.123.123", port=10000, path="/sony", refresh=60]
```
The devices support the following channels:
| Channel Type ID | Item Type | Access Mode | Description | Thing types |
-|----------------------------|-----------|-------------|---------------------------------------------------------------------------------------|--------------------------------------------------------|
+| -------------------------- | --------- | ----------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| power | Switch | RW | Main power on/off | HT-CT800, SRS-ZR5, HT-ST5000, HT-ZF9, HT-Z9F, HT-MT500 |
| input | String | RW | Set or get the input source | HT-CT800, SRS-ZR5, HT-ST5000, HT-ZF9, HT-Z9F, HT-MT500 |
| volume | Dimmer | RW | Set or get the master volume | HT-CT800, SRS-ZR5, HT-ST5000, HT-ZF9, HT-Z9F, HT-MT500 |
| radio#broadcastSeekStation | String | W | Seek for new broadcast station, forward search "fwdSeeking" and backward "bwdSeeking" | STR-1080 |
| nightMode | Switch | RW | Set or get the Night Mode state | HT-ZF9 |
-
## Full Example
demo.things:
-```
+```java
Thing sonyaudio:HT-ST5000:living [ipAddress="192.168.123.123"]
```
demo.items:
-```
+```java
Group SonyAudio <sonyaudio>
Dimmer Sony_Volume "Volume [%.0f %%]" <soundvolume> (SonyAudio) {channel="sonyaudio:HT-ST5000:living:volume"}
demo.sitemap:
-```
+```perl
sitemap demo label="Main Menu" {
Frame label="Sony" {
Text label="Volume" icon="soundvolume" {
This binding can be used to conrol Sony Projectors through:
-* an Ethernet connection using PJ Talk
-* or a (direct) serial connection
-* or a serial over IP connection
+- an Ethernet connection using PJ Talk
+- or a (direct) serial connection
+- or a serial over IP connection
For serial connection, you have to use a D-Sub 9 Pin cross (reverse) cable also called null modem.
For this cable, you will need a female connector on openHAB server side and a male connector on projector side (projector connector is female).
Here is the list of supported Sony projectors based on Sony protocol manuals:
-* VPL-HW15
-* VPL-HW20
-* VPL-HW30ES
-* VPL-HW35ES
-* VPL-HW40ES
-* VPL-HW50ES
-* VPL-HW55ES
-* VPL-HW58ES
-* VPL-HW60
-* VPL-HW65
-* VPL-HW68
-* VPL-VW40
-* VPL-VW50
-* VPL-VW60
-* VPL-VW70
-* VPL-VW85
-* VPL-VW95ES
-* VPL-VW100
-* VPL-VW315
-* VPL-VW320
-* VPL-VW328
-* VPL-VW365
-* VPL-VW515
-* VPL-VW520
-* VPL-VW528
-* VPL-VW665
-* VPL-VW1000ES
-* VPL-VW1100ES
+- VPL-HW15
+- VPL-HW20
+- VPL-HW30ES
+- VPL-HW35ES
+- VPL-HW40ES
+- VPL-HW50ES
+- VPL-HW55ES
+- VPL-HW58ES
+- VPL-HW60
+- VPL-HW65
+- VPL-HW68
+- VPL-VW40
+- VPL-VW50
+- VPL-VW60
+- VPL-VW70
+- VPL-VW85
+- VPL-VW95ES
+- VPL-VW100
+- VPL-VW315
+- VPL-VW320
+- VPL-VW328
+- VPL-VW365
+- VPL-VW515
+- VPL-VW520
+- VPL-VW528
+- VPL-VW665
+- VPL-VW1000ES
+- VPL-VW1100ES
Here is the list of supported Sony projectors but not sure due to assumptions done based on Sony user manuals and protocol manuals of other similar models (because Sony protocol manuals unfortunately not available for these models):
-* VPL-HW10
-* VPL-HW45ES
-* VPL-VW80
-* VPL-VW90ES
-* VPL-VW200
-* VPL-VW260ES
-* VPL-VW270ES
-* VPL-VW285ES
-* VPL-VW295ES
-* VPL-VW300ES
-* VPL-VW350ES
-* VPL-VW385ES
-* VPL-VW500ES
-* VPL-VW550ES (= VW675)
-* VPL-VW570ES
-* VPL-VW600ES
-* VPL-VW675ES
-* VPL-VW695ES
-* VPL-VW760ES
-* VPL-VW870ES
-* VPL-VW885ES
-* VPL-VW995ES
+- VPL-HW10
+- VPL-HW45ES
+- VPL-VW80
+- VPL-VW90ES
+- VPL-VW200
+- VPL-VW260ES
+- VPL-VW270ES
+- VPL-VW285ES
+- VPL-VW295ES
+- VPL-VW300ES
+- VPL-VW350ES
+- VPL-VW385ES
+- VPL-VW500ES
+- VPL-VW550ES (= VW675)
+- VPL-VW570ES
+- VPL-VW600ES
+- VPL-VW675ES
+- VPL-VW695ES
+- VPL-VW760ES
+- VPL-VW870ES
+- VPL-VW885ES
+- VPL-VW995ES
Control of other (HW or VW) models could work with the binding by selecting one of the supported models but without any guarantee.
Here is a list of potential candidates:
-* VPL-VW10HT
-* VPL-VW11HT
-* VPL-VW12HT
-* VPL-VW360ES
-* VPL-VW685ES
-* VPL-VW5000ES
-
+- VPL-VW10HT
+- VPL-VW11HT
+- VPL-VW12HT
+- VPL-VW360ES
+- VPL-VW685ES
+- VPL-VW5000ES
+
## Supported Things
This binding supports the following thing types:
| Thing Type | Description |
-|------------------------|---------------------------------------------------------|
+| ---------------------- | ------------------------------------------------------- |
| ethernetconnection | Ethernet connection to the Sony projector using PJ Talk |
| serialconnection | Serial connection to the Sony projector |
| serialoveripconnection | Serial over IP connection to the Sony projector |
The Ethernet connection thing requires the following configuration parameters:
-| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
-|-----------------|--------------|--------------------------------------------------------------------------|----------|---------|-----------------|
-| Address | host | Host name or IP address of the projector | true | | |
-| Port | port | Communication port. Default is 53484 | false | 53484 | |
+| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
+| --------------- | ------------ | ------------------------------------------------------------------------ | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Address | host | Host name or IP address of the projector | true | | |
+| Port | port | Communication port. Default is 53484 | false | 53484 | |
| Model | model | Projector model to be controlled. Default is AUTO | false | AUTO | AUTO, VPL-HW60, VPL-HW65, VPL-HW68, VPL-VW100, VPL-VW200, VPL-VW260ES, VPL-VW270ES, VPL-VW285ES, VPL-VW295ES, VPL-VW300ES, VPL-VW315, VPL-VW320, VPL-VW328, VPL-VW350ES, VPL-VW365, VPL-VW385ES, VPL-VW500ES, VPL-VW515, VPL-VW520, VPL-VW528, VPL-VW550ES, VPL-VW570ES, VPL-VW600ES, VPL-VW665, VPL-VW675ES, VPL-VW695ES, VPL-VW760ES, VPL-VW870ES, VPL-VW885ES, VPL-VW995ES, VPL-VW1000ES, VPL-VW1100ES |
-| Community | community | Community of the projector. Length must be 4 characters. Default is SONY | false | SONY | |
+| Community | community | Community of the projector. Length must be 4 characters. Default is SONY | false | SONY | |
Some notes:
-* Take care to enable PJ Talk on your projector.
+- Take care to enable PJ Talk on your projector.
### Serial connection
The serial connection thing requires the following configuration parameters:
-| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
-|-----------------|--------------|----------------------------------------------------|----------|-----------|-----------------|
-| Serial Port | port | Serial port to use for connecting to the projector | true | | |
+| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
+| --------------- | ------------ | -------------------------------------------------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Serial Port | port | Serial port to use for connecting to the projector | true | | |
| Model | model | Projector model to be controlled | true | VPL-VW528 | VPL-HW10, VPL-HW15, VPL-HW20, VPL-HW30ES, VPL-HW35ES, VPL-HW40ES, VPL-HW45ES, VPL-HW50ES, VPL-HW55ES, VPL-HW58ES, VPL-HW60, VPL-HW65, VPL-HW68, VPL-VW40, VPL-VW50, VPL-VW60, VPL-VW70, VPL-VW80, VPL-VW85, VPL-VW90ES, VPL-VW95ES, VPL-VW100, VPL-VW200, VPL-VW260ES, VPL-VW270ES, VPL-VW285ES, VPL-VW295ES, VPL-VW300ES, VPL-VW315, VPL-VW320, VPL-VW328, VPL-VW350ES, VPL-VW365, VPL-VW385ES, VPL-VW500ES, VPL-VW515, VPL-VW520, VPL-VW528, VPL-VW550ES, VPL-VW570ES, VPL-VW600ES, VPL-VW665, VPL-VW675ES, VPL-VW695ES, VPL-VW760ES, VPL-VW870ES, VPL-VW885ES, VPL-VW995ES, VPL-VW1000ES, VPL-VW1100ES |
Some notes:
-* On Linux, you may get an error stating the serial port cannot be opened when the SonyProjector 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`.
-* Also on Linux you may have issues with the USB if using two serial USB devices e.g. SonyProjector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
+- On Linux, you may get an error stating the serial port cannot be opened when the SonyProjector 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`.
+- Also on Linux you may have issues with the USB if using two serial USB devices e.g. SonyProjector and RFXcom. See the [general documentation about serial port configuration](/docs/administration/serial.html) for more on symlinking the USB ports.
### Serial over IP connection
The serial over IP connection thing requires the following configuration parameters:
-| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
-|-----------------|--------------|-------------------------------------------------------------------|----------|-----------|-----------------|
-| Address | host | Host name or IP address of the machine connected to the projector | true | | |
-| Port | port | Communication port | true | | |
+| Parameter Label | Parameter ID | Description | Required | Default | Accepted values |
+| --------------- | ------------ | ----------------------------------------------------------------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Address | host | Host name or IP address of the machine connected to the projector | true | | |
+| Port | port | Communication port | true | | |
| Model | model | Projector model to be controlled | true | VPL-VW528 | VPL-HW10, VPL-HW15, VPL-HW20, VPL-HW30ES, VPL-HW35ES, VPL-HW40ES, VPL-HW45ES, VPL-HW50ES, VPL-HW55ES, VPL-HW58ES, VPL-HW60, VPL-HW65, VPL-HW68, VPL-VW40, VPL-VW50, VPL-VW60, VPL-VW70, VPL-VW80, VPL-VW85, VPL-VW90ES, VPL-VW95ES, VPL-VW100, VPL-VW200, VPL-VW260ES, VPL-VW270ES, VPL-VW285ES, VPL-VW295ES, VPL-VW300ES, VPL-VW315, VPL-VW320, VPL-VW328, VPL-VW350ES, VPL-VW365, VPL-VW385ES, VPL-VW500ES, VPL-VW515, VPL-VW520, VPL-VW528, VPL-VW550ES, VPL-VW570ES, VPL-VW600ES, VPL-VW665, VPL-VW675ES, VPL-VW695ES, VPL-VW760ES, VPL-VW870ES, VPL-VW885ES, VPL-VW995ES, VPL-VW1000ES, VPL-VW1100ES |
Some notes:
-* Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 3333 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/):
+- Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 3333 using [ser2net Linux tool](https://sourceforge.net/projects/ser2net/):
-```
+```text
3333:raw:0:/dev/ttyUSB0:38400 8DATABITS EVEN 1STOPBIT
```
The following channels are available:
| Channel ID | Label | Item Type | Access Mode | Description | Possible values (depends on model) |
-|-------------------|--------------------------|-----------|-------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
+| ----------------- | ------------------------ | --------- | ----------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| power | Power | Switch | RW | Power ON/OFF the projector | ON, OFF |
| powerstate | Power State | String | R | Current detailed power state of the projector | |
| input | Video Input | String | RW | Select the equipment from which to display images | Video, SVideo, InputA, Component, HDMI, HDMI1, HDMI2, DVI |
example.things:
-```
+```java
Thing sonyprojector:ethernetconnection:proj "Projector" [ host="192.168.0.200" ]
Thing sonyprojector:ethernetconnection:proj2 "Projector" [ host="192.168.0.205", port=53484, model="VPL-VW365", community="SONY" ]
Thing sonyprojector:serialconnection:proj3 "Projector" [ port="/dev/ttyUSB0", model="VPL-HW55ES" ]
example.items:
-```
+```java
Switch proj_power "Power" { channel = "sonyprojector:ethernetconnection:proj:power" }
String proj_powerstate "Power State [%s]" { channel = "sonyprojector:ethernetconnection:proj:powerstate" }
String proj_input "Video Input [%s]" { channel = "sonyprojector:ethernetconnection:proj:input" }
example.sitemap:
-```
+```perl
Frame label="Projector" {
Switch item=proj_power
Text item=proj_powerstate
# Souliss Binding
-[Souliss](http://www.souliss.net/) is a networking framework for Arduino and compatibles boards, and is designed to let you easily build a smart home that is distributed over multiple boards via Ethernet, WiFi, wireless point-to-point and RS485 bus.
+[Souliss](http://www.souliss.net/) is a networking framework for Arduino and compatibles boards, and is designed to let you easily build a smart home that is distributed over multiple boards via Ethernet, WiFi, wireless point-to-point and RS485 bus.
Souliss is an open-source and community driven project, you can use the [wiki](https://github.com/souliss/souliss/wiki) and [Community](https://github.com/souliss/souliss/wiki/Community) to get help and share your results.
### Sketches
-The easiest way is start with a simple example to control an ON/OFF light (though a relay).
+The easiest way is start with a simple example to control an ON/OFF light (though a relay).
You can go to project [Souliss](https://github.com/souliss/souliss), see a lot of examples sketches: [Souliss examples](https://github.com/souliss/souliss/tree/friariello/examples)
-
## Discovery
First add a gateway (one only is permitted on LAN at this moment), then discovery can find other things (Souliss Typicals)
## Supported Things
-In Souliss Framework a Typical is one of predefined logic dedicated to smart home devices like lights, heating or antitheft.
+In Souliss Framework a Typical is one of predefined logic dedicated to smart home devices like lights, heating or antitheft.
-Typical can be one of T11, T12, T13, T14, etc...
+Typical can be one of T11, T12, T13, T14, etc...
They are defined [here](https://github.com/souliss/souliss/wiki/Typicals).
fan = AUTO, HIGH, MEDIUM, LOW, FANOFF
-
| Thing type / Channel | DateTime / lastStatusStored | Number / healthy | Number / value |
|----------------------|-----------------------------|------------------|----------------|
| t51 | x | x | x |
| T5x | | |
| T6x | | |
-
## Full Example
-
-
souliss.things:
-```
+```java
Bridge souliss:gateway:105 "Souliss Gateway - 105" [gatewayLanAddress="192.168.1.105", gatewayPortNumber=230, preferredLocalPortNumber=0, pingInterval=30, subscriptionInterval=2, healthyInterval=38, userIndex=72, nodeIndex=38, timeoutToRequeue=5000, timeoutToRemovePacket=20000]
{
Thing t14 1-6 "Portoncino"@"Rientro" [node=1,slot=6] //thing UID is named as node-slot only as mnemonic convention, but you are free to assign other values
Thing t52 3-0 "Temperatura Boiler Solare Termico" [node=3,slot=0]
Thing t52 3-2 "Temperatura Termocamino" [node=3,slot=2]
Thing t11 3-4 "Acqua Termocamino" [node=3,slot=4]
-Thing t11 3-6 "Auto: Boiler / Termocamino" [node=3,slot=6]
-Thing t31 3-7 "Acqua Auto: Boiler / Termocamino" [node=3,slot=7]
+Thing t11 3-6 "Auto: Boiler / Termocamino" [node=3,slot=6]
+Thing t31 3-7 "Acqua Auto: Boiler / Termocamino" [node=3,slot=7]
Thing t31 6-0 "Termostato Soggiorno"@"Soggiorno" [node=6,slot=0]
Thing t53 6-7 "Umidità"@"Soggiorno" [node=6,slot=7]
You have to write your Gateway IP Number and leave all other to default values
-
default.items:
-```
+```java
Group Home "Tonino" <house>
Group FamilyRoom "Soggiorno" <parents_2_4> (Home)
Group Diagnostic
Group TermostatoSoggiorno
-Switch tettoia "Tettoia" <light> (Outside) ["Lighting"] {autoupdate="false", channel="souliss:t11:105:5-0:onoff"}
-String tettoia_aggiornamento "Agg [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (Outside, Diagnostic) {channel="souliss:t31:105:5-0:lastStatusStored"}
+Switch tettoia "Tettoia" <light> (Outside) ["Lighting"] {autoupdate="false", channel="souliss:t11:105:5-0:onoff"}
+String tettoia_aggiornamento "Agg [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (Outside, Diagnostic) {channel="souliss:t31:105:5-0:lastStatusStored"}
-Switch portoncino "Portoncino" <light> (FamilyRoom) ["Lighting"] {autoupdate="false",channel="souliss:t14:105:1-6:pulse"}
-Switch cancello "Cancello" <light> (FamilyRoom) ["Lighting"] {autoupdate="false",channel="souliss:t14:105:1-7:pulse"}
+Switch portoncino "Portoncino" <light> (FamilyRoom) ["Lighting"] {autoupdate="false",channel="souliss:t14:105:1-6:pulse"}
+Switch cancello "Cancello" <light> (FamilyRoom) ["Lighting"] {autoupdate="false",channel="souliss:t14:105:1-7:pulse"}
-Number FamilyRoom_Temperature "Temperatura [%.1f °C]" <temperature> (FamilyRoom) {channel="souliss:t31:105:6-0:measured"}
-Number FamilyRoom_Humidity "Umidità [%.1f %%]" <humidity> (FamilyRoom) {channel="souliss:t53:105:6-7:value"}
-String AggiornamentoNodo6 "Agg [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Diagnostic) {channel="souliss:t31:105:6-0:lastStatusStored"}
+Number FamilyRoom_Temperature "Temperatura [%.1f °C]" <temperature> (FamilyRoom) {channel="souliss:t31:105:6-0:measured"}
+Number FamilyRoom_Humidity "Umidità [%.1f %%]" <humidity> (FamilyRoom) {channel="souliss:t53:105:6-7:value"}
+String AggiornamentoNodo6 "Agg [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Diagnostic) {channel="souliss:t31:105:6-0:lastStatusStored"}
-Number Consumo "Consumo [%.1f W]" <energy> (FamilyRoom, Elettricita) {channel="souliss:t57:105:1-4:value"}
-Number Fotovoltaico "Fotovoltaico [%.1f W]" <energy> (FamilyRoom, Elettricita) {channel="souliss:t57:105:4-0:value"}
-String AggiornamentoNodo1 "Agg.Consumi [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Elettricita, Diagnostic) {channel="souliss:t57:105:1-4:lastStatusStored"}
-String AggiornamentoNodo4 "Agg.Fotovoltaico [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Elettricita, Diagnostic) {channel="souliss:t57:105:4-0:lastStatusStored"}
+Number Consumo "Consumo [%.1f W]" <energy> (FamilyRoom, Elettricita) {channel="souliss:t57:105:1-4:value"}
+Number Fotovoltaico "Fotovoltaico [%.1f W]" <energy> (FamilyRoom, Elettricita) {channel="souliss:t57:105:4-0:value"}
+String AggiornamentoNodo1 "Agg.Consumi [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Elettricita, Diagnostic) {channel="souliss:t57:105:1-4:lastStatusStored"}
+String AggiornamentoNodo4 "Agg.Fotovoltaico [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Elettricita, Diagnostic) {channel="souliss:t57:105:4-0:lastStatusStored"}
-Switch divano "Divano" <light> (FamilyRoom, Divano ) ["Switchable"] {autoupdate="false", channel="souliss:t11:105:12-0:onOff"}
-String divano_aggiornamento "Agg. [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Divano, Diagnostic) {channel="souliss:t57:105:12-0:lastStatusStored"}
-String divano_healthy "Salute" <keyring> (FamilyRoom, Divano, Diagnostic) {channel="souliss:t57:105:12-0:healthy"}
+Switch divano "Divano" <light> (FamilyRoom, Divano ) ["Switchable"] {autoupdate="false", channel="souliss:t11:105:12-0:onOff"}
+String divano_aggiornamento "Agg. [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (FamilyRoom, Divano, Diagnostic) {channel="souliss:t57:105:12-0:lastStatusStored"}
+String divano_healthy "Salute" <keyring> (FamilyRoom, Divano, Diagnostic) {channel="souliss:t57:105:12-0:healthy"}
-Number termostatosoggiorno_temperatura "Temperatura [%.1f °C]" <temperature> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:measured"}
-Number termostatosoggiorno_umidita "Umidità [%.1f %%]" <temperature> (TermostatoSoggiorno) {channel="souliss:t53:105:6-7:value" }
+Number termostatosoggiorno_temperatura "Temperatura [%.1f °C]" <temperature> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:measured"}
+Number termostatosoggiorno_umidita "Umidità [%.1f %%]" <temperature> (TermostatoSoggiorno) {channel="souliss:t53:105:6-7:value" }
Number termostatosoggiorno_umidita "Umidità" <humidity> (TermostatoSoggiorno) {channel="souliss:t53:105:6-7:value" }
-Number termostatosoggiorno_temperatura "Temperatura" <temperature> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:measured"}
-Number termostatosoggiorno_setpoint "Regola Set Point [%.1f °c]" <heating> (TermostatoSoggiorno) {autoupdate="false", channel="souliss:t31:105:6-0:sePpoint"}
-Switch termostatosoggiorno_setasmeasured "Set temp. attuale" <heating> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:setAsMeasured"}
-String termostatosoggiorno_modo "Modo" (TermostatoSoggiorno) {autoupdate="false", channel="souliss:t31:105:6-0:mode"}
-Switch termostatosoggiorno_power "Termostato" <powerIcon> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:system"}
-Switch termostatosoggiorno_fire "Fire" <fire> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:fire"}
-
-Dimmer TermostatoSoggiorno_displayBright "Lumin.min. display" (TermostatoSoggiorno) {channel="souliss:t19:105:6-9" }
-String TermostatoSoggiorno_aggiornamento "Agg.[%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (TermostatoSoggiorno, Diagnostic) {channel="souliss:t31:105:6-0:lastStatusStored"}
-Number TermostatoSoggiorno_healthy "Salute" <keyring> (TermostatoSoggiorno, Diagnostic ) {channel="souliss:t31:105:6-0:healthy"}
+Number termostatosoggiorno_temperatura "Temperatura" <temperature> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:measured"}
+Number termostatosoggiorno_setpoint "Regola Set Point [%.1f °c]" <heating> (TermostatoSoggiorno) {autoupdate="false", channel="souliss:t31:105:6-0:sePpoint"}
+Switch termostatosoggiorno_setasmeasured "Set temp. attuale" <heating> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:setAsMeasured"}
+String termostatosoggiorno_modo "Modo" (TermostatoSoggiorno) {autoupdate="false", channel="souliss:t31:105:6-0:mode"}
+Switch termostatosoggiorno_power "Termostato" <powerIcon> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:system"}
+Switch termostatosoggiorno_fire "Fire" <fire> (TermostatoSoggiorno) {channel="souliss:t31:105:6-0:fire"}
+Dimmer TermostatoSoggiorno_displayBright "Lumin.min. display" (TermostatoSoggiorno) {channel="souliss:t19:105:6-9" }
+String TermostatoSoggiorno_aggiornamento "Agg.[%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" <keyring> (TermostatoSoggiorno, Diagnostic) {channel="souliss:t31:105:6-0:lastStatusStored"}
+Number TermostatoSoggiorno_healthy "Salute" <keyring> (TermostatoSoggiorno, Diagnostic ) {channel="souliss:t31:105:6-0:healthy"}
```
default.sitemaps:
-```
+```perl
sitemap default label="Tonino" {
Frame {
Text label="Rientro casa" icon="light" {
Group item=Divano icon="light"
}
-Frame label="Temperature"{
+Frame label="Temperature"{
Text label="Temperatura e umidità" icon="temperature" {
Default item=FamilyRoom_Temperature label="Temperatura"
Switch item=termostatosoggiorno_modo label="Heating Mode" mappings=[HEATING_MODE="Set"]
Switch item=termostatosoggiorno_power label="Power On/Off"
Default item=termostatosoggiorno_fire label="Fire"
- Text item=termostatoSoggiorno_aggiornamento label="Aggiornato: [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" icon="icon16x16"
+ Text item=termostatoSoggiorno_aggiornamento label="Aggiornato: [%1$td.%1$tm.%1$tY %1$tk:%1$tM:%1$tS]" icon="icon16x16"
Default item=termostatoSoggiorno_healthy
- Slider item=termostatoSoggiorno_displayBright
- }
+ Slider item=termostatoSoggiorno_displayBright
+ }
}
}
```
Italian Group, [here](https://groups.google.com/forum/#!forum/souliss-it)
-Spanish Group, [here] (https://groups.google.com/forum/#!forum/souliss-es)
+Spanish Group, [here](https://groups.google.com/forum/#!forum/souliss-es)
## Contribution
The following configuration options are available on the Spotify Bridge player:
-| Parameter | Description |
-|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| clientId | This is the Client ID provided by Spotify when you add a new Application for openHAB to your Spotify Account. Go to https://developer.spotify.com/ (Required) |
-| clientSecret | This is the Client Secret provided by Spotify when you add a new Application for openHAB to your Spotify Account. (Required) |
-| refreshPeriod | This is the frequency of the polling requests to the Spotify Connect Web API in seconds. |
+| Parameter | Description |
+| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| clientId | This is the Client ID provided by Spotify when you add a new Application for openHAB to your Spotify Account. Go to <https://developer.spotify.com/> (Required) |
+| clientSecret | This is the Client Secret provided by Spotify when you add a new Application for openHAB to your Spotify Account. (Required) |
+| refreshPeriod | This is the frequency of the polling requests to the Spotify Connect Web API in seconds. |
The following configuration option is available on the Spotify device:
| Parameter | Description |
-|------------|---------------------------------------------------------|
+| ---------- | ------------------------------------------------------- |
| deviceName | This is the device name provided by Spotify (Required). |
-
## Supported Things
All Spotify Connect capable devices should be discoverable through this binding.
The channels on the bridge are the ones used to both control the active device and get details of currently playing music on the Spotify Account associated with the bridge.
-__Common Channels:__
-
-| Channel Type ID | Item Type | Read/Write | Description |
-|-----------------|-----------|------------|--------------------------------------------------------------------------------------------------|
-| deviceName | String | Read-write | Name of the currently active Connect Device, |
-| devices | Selection | Read-write | List of currently active Connect Devices, Set the device ID to transfer play to that device. |
-| deviceVolume | Dimmer | Read-write | Get or set the active Connect Device volume. |
-| deviceShuffle | Switch | Read-write | Turn on/off shuffle play on the active device. |
-| trackPlay | String | Read-write | Set which music to play on the active device. This channel accepts Spotify URIs and URLs. |
-| trackPlayer | Player | Read-write | The Player Control of the active device. Accepts PLAY/PAUSE/NEXT/PREVIOUS commands. |
-| trackRepeat | String | Read-only | `track` repeats the current track. `context` repeats the current context. `off` turns repeat off.|
-| trackName | String | Read-only | The name of the currently playing track. |
-| trackDuration | String | Read-only | The duration (m:ss) of the currently playing track. This is updated every second. |
-| trackDurationMs | Number | Read-only | The duration of the currently playing track in milliseconds. |
-| trackProgress | String | Read-only | The progress (m:ss) of the currently playing track. This is updated every second. |
-| trackProgressMs | Number | Read-only | The progress of the currently playing track in milliseconds. |
-| playlists | Selection | Read-write | This channel will be populated with the users playlists. Set the playlist ID to start. |
-| playlistName | String | Read-write | The currently playing playlist. Or empty if no playing list is playing. |
-| albumName | String | Read-only | Album Name of the currently playing track. |
-| albumImage | RawType | Read-only | Album Image of the currently playing track. |
-| albumImageUrl | String | Read-only | Url to the album Image of the currently playing track. |
-| artistName | String | Read-only | Artist Name of the currently playing track. |
+**Common Channels:**
+
+| Channel Type ID | Item Type | Read/Write | Description |
+| --------------- | --------- | ---------- | ------------------------------------------------------------------------------------------------- |
+| deviceName | String | Read-write | Name of the currently active Connect Device, |
+| devices | Selection | Read-write | List of currently active Connect Devices, Set the device ID to transfer play to that device. |
+| deviceVolume | Dimmer | Read-write | Get or set the active Connect Device volume. |
+| deviceShuffle | Switch | Read-write | Turn on/off shuffle play on the active device. |
+| trackPlay | String | Read-write | Set which music to play on the active device. This channel accepts Spotify URIs and URLs. |
+| trackPlayer | Player | Read-write | The Player Control of the active device. Accepts PLAY/PAUSE/NEXT/PREVIOUS commands. |
+| trackRepeat | String | Read-only | `track` repeats the current track. `context` repeats the current context. `off` turns repeat off. |
+| trackName | String | Read-only | The name of the currently playing track. |
+| trackDuration | String | Read-only | The duration (m:ss) of the currently playing track. This is updated every second. |
+| trackDurationMs | Number | Read-only | The duration of the currently playing track in milliseconds. |
+| trackProgress | String | Read-only | The progress (m:ss) of the currently playing track. This is updated every second. |
+| trackProgressMs | Number | Read-only | The progress of the currently playing track in milliseconds. |
+| playlists | Selection | Read-write | This channel will be populated with the users playlists. Set the playlist ID to start. |
+| playlistName | String | Read-write | The currently playing playlist. Or empty if no playing list is playing. |
+| albumName | String | Read-only | Album Name of the currently playing track. |
+| albumImage | RawType | Read-only | Album Image of the currently playing track. |
+| albumImageUrl | String | Read-only | Url to the album Image of the currently playing track. |
+| artistName | String | Read-only | Artist Name of the currently playing track. |
The `playlists` channel has 2 parameters:
| Parameter | Description |
-|-----------|----------------------------------------------------------------------------|
+| --------- | -------------------------------------------------------------------------- |
| offset | The index of the first playlist to return. Default `0`, max `100.000` |
| limit | The maximum number of playlists to return. Default `20`, min `1`, max `50` |
The `albumImage` and `albumImageUrl` channels has 1 parameter:
| Parameter | Description |
-|------------|--------------------------------------------------------------------------------------------|
+| ---------- | ------------------------------------------------------------------------------------------ |
| imageIndex | Index in list of to select size of the image to show. 0:large (default), 1:medium, 2:small |
Note: The `deviceName` and `playlist` channels are Selection channels.
They are dynamically populated by the binding with the user specific devices and playlists.
-__Advanced Channels:__
+**Advanced Channels:**
| Channel Type ID | Item Type | Read/Write | Description |
-|-----------------|-----------|------------|-------------------------------------------------------------|
+| --------------- | --------- | ---------- | ----------------------------------------------------------- |
| accessToken | String | Read-only | The current accessToken used in communication with Web API. |
| deviceId | String | Read-write | The Spotify Connect device Id. |
| trackId | String | Read-only | Track Id of the currently playing track. |
E.g. if you assign a playlist to the _trackPlay_ channel of the device, the playing of that playlist will be activated on that particular device.
Assigning a playlist to the _trackPlay_ channel of the bridge will start playing the list on whatever device is active.
-__Common Channels:__
+**Common Channels:**
| Channel Type ID | Item Type | Read/Write | Description |
-|-----------------|-----------|------------|-----------------------------------------------------------------|
+| --------------- | --------- | ---------- | --------------------------------------------------------------- |
| trackPlay | String | Write-only | Update to play a track, playlist, artist. Activates the device. |
| deviceName | String | Read-only | Name of the device. |
| deviceVolume | Dimmer | Read-write | Volume setting for the device. |
| devicePlayer | Player | Read-write | Player Control of the device. |
| deviceShuffle | Switch | Read-write | Turn on/off shuffle play. |
-__Advanced Channels:__
+**Advanced Channels:**
| Channel Type ID | Item Type | Read/Write | Description |
-|------------------|-----------|------------|------------------------------------------------------------------------------------------------------------|
+| ---------------- | --------- | ---------- | ---------------------------------------------------------------------------------------------------------- |
| deviceId | String | Read-write | The Spotify Connect device Id. |
| deviceType | String | Read-only | The type of device e.g. Speaker, Smartphone. |
| deviceActive | Switch | Read-only | Indicates if the device is active or not. Should be the same as Thing status ONLINE/OFFLINE. |
The bridge supports an action to play a track or other context uri.
The following actions are supported:
-```
+```java
play(String context_uri)
play(String context_uri, int offset, int position_ms)
play(String context_uri, String device_id)
play(String context_uri, String device_id, int offset, int position_ms)
```
-
## Full Example
-In this example there is a bridge configured with Thing ID __user1__ and illustrating that the bridge is authorized to play in the context of the Spotify user account __user1__.
+In this example there is a bridge configured with Thing ID **user1** and illustrating that the bridge is authorized to play in the context of the Spotify user account **user1**.
spotify.things:
-```
+```java
Bridge spotify:player:user1 "Me" [clientId="<your client id>", clientSecret="<your client secret>"] {
Things:
device device1 "Device 1" [deviceName="<spotify device name>"]
spotify.items:
-```
+```java
Player spotifyTrackPlayer "Player" {channel="spotify:player:user1:trackPlayer"}
String spotifyDevices "Active device [%s]" {channel="spotify:player:user1:devices"}
Switch spotifyDeviceShuffle "Shuffle mode" {channel="spotify:player:user1:deviceShuffle"}
spotify.sitemap:
-```
+```perl
sitemap spotify label="Spotify Sitemap" {
Frame label="Spotify Player Info" {
spotify.rules
-```
+```java
val spotifyActions = getActions("spotify", "spotify:player:user1")
// play the song
spotifyActions.play("spotify:track:4cOdK2wGLETKBW3PvgPWqT")
A Squeeze Server is discovered through UPnP in the local network.
Once it is added as a Thing the Squeeze Server bridge will discover Squeeze Players automatically.
If your Squeeze Server is not discovered automatically, you can add it manually by creating a .thing file containing something like this (more example [below](https://www.openhab.org/addons/bindings/squeezebox/#thing-configuration)):
-```
+
+```java
Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090 ]
-````
+```
## Binding Configuration
The binding has the following configuration options, which can be set for "binding:squeezebox":
-| Parameter | Name | Description | Required |
-|-------------|------------------|--------------------------------------------------------------------------|----------|
-| callbackUrl | Callback URL | URL to use for playing notification sounds, e.g. http://192.168.0.2:8080 | no |
+| Parameter | Name | Description | Required |
+| ----------- | ------------ | -------------------------------------------------------------------------- | -------- |
+| callbackUrl | Callback URL | URL to use for playing notification sounds, e.g. `http://192.168.0.2:8080` | no |
When a SqueezeBox is used as an audio sink, the SqueezeBox player connects to openHAB to get the audio stream.
By default, the binding sends the SqueezeBox the URL for getting the audio stream based on the Primary
Here are some examples of how to define the Squeeze Server and Player things in a things file.
-```
+```java
Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090 ]
{
Thing squeezeboxplayer myplayer[ mac="00:f1:bb:00:00:f1" ]
If Squeeze Server authentication is enabled, the user ID and password can be specified for the Squeeze Server:
-```
+```java
Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090, userId="yourid", password="yourpassword" ]
{
Thing squeezeboxplayer myplayer[ mac="00:f1:bb:00:00:f1" ]
The notification timeout and/or notification volume can be specified for the Squeeze Player:
-```
+```java
Bridge squeezebox:squeezeboxserver:myServer [ ipAddress="192.168.1.10", webport=9000, cliport=9090 ]
{
Thing squeezeboxplayer myplayer[ mac="00:f1:bb:00:00:f1", notificationTimeout=30, notificationVolume=35 ]
The Squeezebox server supports the following channel:
-| Channel Type ID | Item Type | Description |
-|-------------------------|-----------|----------------------------------------------------------------------------------------|
-| favoritesList | String | Comma-separated list of favorite IDs & names, updated whenever list changes on server |
+| Channel Type ID | Item Type | Description |
+| --------------- | --------- | ------------------------------------------------------------------------------------- |
+| favoritesList | String | Comma-separated list of favorite IDs & names, updated whenever list changes on server |
## Player Channels
All devices support some of the following channels:
-| Channel Type ID | Item Type | Description |
-|-------------------------|-----------|----------------------------------------------------------------------------------------|
-| power | Switch | Power on/off your device |
-| mute | Switch | Mute/unmute your device |
-| volume | Dimmer | Volume of your device |
-| stop | Switch | Stop the current title |
-| control | Player | Control the Zone Player, e.g. play/pause/next/previous/ffward/rewind |
-| stream | String | Play the given HTTP or file stream (file:// or http://) |
-| source | String | Shows the source of the currently playing playlist entry. (i.e. http://radio.org/radio.mp3 |
-| sync | String | Add another player to your device for synchronized playback (other player mac address) |
-| playListIndex | Number | Playlist Index |
-| currentPlayingTime | Number | Current Playing Time |
-| duration | Number | Duration of currently playing track (in seconds) |
-| currentPlaylistShuffle | Number | Current playlist shuffle mode (0 No Shuffle, 1 Shuffle Songs, 2 Shuffle Albums) |
-| currentPlaylistRepeat | Number | Current playlist repeat Mode (0 No Repeat, 1 Repeat Song, 2 Repeat Playlist) |
-| title | String | Title of the current song |
-| remotetitle | String | Remote Title (Radio) of the current song |
-| album | String | Album name of the current song |
-| artist | String | Artist name of the current song |
-| year | String | Release year of the current song |
-| genre | String | Genre name of the current song |
-| coverartdata | Image | Image data of cover art of the current song |
-| ircode | String | Received IR code |
-| numberPlaylistTracks | Number | Number of playlist tracks |
-| playFavorite | String | ID of Favorite to play (channel's state options contains available favorites) |
-| rate | Switch | "Like" or "unlike" the currently playing song (if supported by the streaming service) |
-| sleep | Number | Power off the player in the specified number of minutes. Sending 0 cancels the timer |
+| Channel Type ID | Item Type | Description |
+| ---------------------- | --------- | -------------------------------------------------------------------------------------------- |
+| power | Switch | Power on/off your device |
+| mute | Switch | Mute/unmute your device |
+| volume | Dimmer | Volume of your device |
+| stop | Switch | Stop the current title |
+| control | Player | Control the Zone Player, e.g. play/pause/next/previous/ffward/rewind |
+| stream | String | Play the given HTTP or file stream (file:// or http://) |
+| source | String | Shows the source of the currently playing playlist entry. (i.e. `http://radio.org/radio.mp3` |
+| sync | String | Add another player to your device for synchronized playback (other player mac address) |
+| playListIndex | Number | Playlist Index |
+| currentPlayingTime | Number | Current Playing Time |
+| duration | Number | Duration of currently playing track (in seconds) |
+| currentPlaylistShuffle | Number | Current playlist shuffle mode (0 No Shuffle, 1 Shuffle Songs, 2 Shuffle Albums) |
+| currentPlaylistRepeat | Number | Current playlist repeat Mode (0 No Repeat, 1 Repeat Song, 2 Repeat Playlist) |
+| title | String | Title of the current song |
+| remotetitle | String | Remote Title (Radio) of the current song |
+| album | String | Album name of the current song |
+| artist | String | Artist name of the current song |
+| year | String | Release year of the current song |
+| genre | String | Genre name of the current song |
+| coverartdata | Image | Image data of cover art of the current song |
+| ircode | String | Received IR code |
+| numberPlaylistTracks | Number | Number of playlist tracks |
+| playFavorite | String | ID of Favorite to play (channel's state options contains available favorites) |
+| rate | Switch | "Like" or "unlike" the currently playing song (if supported by the streaming service) |
+| sleep | Number | Power off the player in the specified number of minutes. Sending 0 cancels the timer |
## Example .Items File
Add the items you want to use to an .items file, for example:
-```
+```java
Switch YourPlayer_Power "Squeezebox Power" {channel="squeezebox:squeezeboxplayer:736549a3:00042016e7a0:power"}
Dimmer YourPlayer_Volume "Squeezebox Volume" {channel="squeezebox:squeezeboxplayer:736549a3:00042016e7a0:volume"}
Image YourPlayer_AlbumArt "Squeezebox Cover" {channel="squeezebox:squeezeboxplayer:736549a3:00042016e7a0:coverartdata"}
## Playing Favorites
-Using the **playFavorite** channel, you can play a favorite from the *Favorites* list on the Logitech Media Server (LMS).
+Using the **playFavorite** channel, you can play a favorite from the _Favorites_ list on the Logitech Media Server (LMS).
The favorites from the LMS will be populated into the state options of the **playFavorite** channel.
The Selection widget in HABpanel can be used to present the favorites as a choice list.
Selecting from that choice list will play the favorite on the SqueezeBox player.
### How to Set Up Favorites
-- Add some favorites to your favorites list in LMS (local music playlists, Pandora, Slacker, Internet radio, etc.).
-Keep all favorites at the root level (i.e. favorites in sub-folders will be ignored).
-
-- If you're on an older openHAB build, you may need to delete and re-add your squeezebox server and player things to pick up the new channels.
-
-- Create a new item on each player
+- Add some favorites to your favorites list in LMS (local music playlists, Pandora, Slacker, Internet radio, etc.).
+ Keep all favorites at the root level (i.e. favorites in sub-folders will be ignored).
+- If you're on an older openHAB build, you may need to delete and re-add your squeezebox server and player things to pick up the new channels.
+- Create a new item on each player
-```
+```java
String YourPlayer_PlayFavorite "Play Favorite [%s]" { channel="squeezebox:squeezeboxplayer:736549a3:00042016e7a0:playFavorite" }
```
#### For HABpanel (do this for each player)
-- Add a Selection widget to your dashboard
-
-- In the Selection widget settings
-
- - Enter the **YourPlayer_PlayFavorite** item
-
- - Select *Choices source* of *Server-provided item options*
-
- - Modify other settings to suite your taste
-
-- When you load the dashboard and click on the selection widget, you should see the favorites. Selecting a favorite from the list will play it.
+- Add a Selection widget to your dashboard
+- In the Selection widget settings
+ - Enter the **YourPlayer_PlayFavorite** item
+ - Select _Choices source_ of _Server-provided item options_
+ - Modify other settings to suite your taste
+- When you load the dashboard and click on the selection widget, you should see the favorites. Selecting a favorite from the list will play it.
#### For Sitemap
-- To use state options on the playFavorite channel, simply omit the *mappings* from the Selection widget.
+- To use state options on the playFavorite channel, simply omit the _mappings_ from the Selection widget.
-```
+```java
Selection item=YourPlayer_PlayFavorite label="Play Favorite"
```
You can play notifications from within rules.
-```
+```java
rule "Garage Door Open Notification"
when
Item GarageDoorOpenNotification received command ON
And, you can play sounds from the `conf/sounds` directory.
-```
+```java
rule "Play Sounds"
when
Item PlaySounds received command ON
## Rating Songs
Some streaming services, such as Pandora and Slacker, all songs to be rated.
-When playing from these streaming services, sending commands to the `rate` channel can be used to *like* or *unlike* the currently playing song.
-Sending the ON command will *like* the song.
-Sending the OFF command will *unlike* the song.
+When playing from these streaming services, sending commands to the `rate` channel can be used to _like_ or _unlike_ the currently playing song.
+Sending the ON command will _like_ the song.
+Sending the OFF command will _unlike_ the song.
If the streaming service doesn't support rating, sending commands to the `rate` channel has no effect.
### Known Issues
-- There are some versions of squeezelite that will not correctly play very short duration mp3 files.
-Versions of squeezelite after v1.7 and before v1.8.6 will not play very short duration mp3 files reliably.
-For example, if you're using piCorePlayer (which uses squeezelite), please check your version of squeezelite if you're having trouble playing notifications.
-This bug has been fixed in squeezelite version 1.8.6-985, which is included in piCorePlayer version 3.20.
-
-- When streaming from a remote service (such as Pandora or Spotify), after the notification plays, the Squeezebox Server starts playing a new track, instead of picking up from where it left off on the currently playing track.
-
-- There have been reports that notifications do not play reliably, or do not play at all, when using Logitech Media Server (LMS) version 7.7.5.
-Therefore, it is recommended that the LMS be on a more current version than 7.7.5.
-
-- There have been reports that the LMS does not play some WAV files reliably. If you're using a TTS service that produces WAV files, and the notifications are not playing, try using an MP3-formatted TTS notification.
-This issue reportedly was [fixed in the LMS](https://github.com/Logitech/slimserver/issues/307) by accepting additional MIME types for WAV files.
-
-- The LMS treats player MAC addresses as case-sensitive.
-Therefore, the case of MAC addresses in the Squeeze Player thing configuration must match the case displayed on the *Information* tab in the LMS Settings.
+- There are some versions of squeezelite that will not correctly play very short duration mp3 files.
+ Versions of squeezelite after v1.7 and before v1.8.6 will not play very short duration mp3 files reliably.
+ For example, if you're using piCorePlayer (which uses squeezelite), please check your version of squeezelite if you're having trouble playing notifications.
+ This bug has been fixed in squeezelite version 1.8.6-985, which is included in piCorePlayer version 3.20.
+- When streaming from a remote service (such as Pandora or Spotify), after the notification plays, the Squeezebox Server starts playing a new track, instead of picking up from where it left off on the currently playing track.
+- There have been reports that notifications do not play reliably, or do not play at all, when using Logitech Media Server (LMS) version 7.7.5.
+ Therefore, it is recommended that the LMS be on a more current version than 7.7.5.
+- There have been reports that the LMS does not play some WAV files reliably. If you're using a TTS service that produces WAV files, and the notifications are not playing, try using an MP3-formatted TTS notification.
+ This issue reportedly was [fixed in the LMS](https://github.com/Logitech/slimserver/issues/307) by accepting additional MIME types for WAV files.
+- The LMS treats player MAC addresses as case-sensitive.
+ Therefore, the case of MAC addresses in the Squeeze Player thing configuration must match the case displayed on the _Information_ tab in the LMS Settings.
This binding offers integration to the Sure Petcare API, supporting cloud-connected cat flaps and feeders.
-### Features
+## Features
1. Read access to all attributes for households, devices (hubs, flaps) and pets through individual things/channels.
-2. Manual setting of pet location.
-3. Setting of LED Mode (hub), Locking Mode (flaps) and Curfews.
+1. Manual setting of pet location.
+1. Setting of LED Mode (hub), Locking Mode (flaps) and Curfews.
### Restrictions / TODO
1. The Sure Petcare API is not publicly available and this binding has been based on observed interactions between their mobile phone app and the cloud API.
If the Sure Petcare API changes, this binding might stop working.
-2. The current version of the binding supports only cat/pet flaps. Feeders are not yet supported as I don't own one yet.
+1. The current version of the binding supports only cat/pet flaps. Feeders are not yet supported as I don't own one yet.
### Credits
The binding code is based on a lot of work done by other developers:
-- Holger Eisold (https://github.com/HerzScheisse) - Python use in openHAB and various PRs (https://github.com/HerzScheisse/SurePetcare-openHAB-JSR223-Rules)
-- Alex Toft (https://github.com/alextoft) - PHP implementation (https://github.com/alextoft/sureflap)
-- rcastberg (https://github.com/rcastberg) - Python implementation (https://github.com/rcastberg/sure_petcare)
+- Holger Eisold (<https://github.com/HerzScheisse>) - Python use in openHAB and various PRs (<https://github.com/HerzScheisse/SurePetcare-openHAB-JSR223-Rules>)
+- Alex Toft (<https://github.com/alextoft>) - PHP implementation (<https://github.com/alextoft/sureflap>)
+- rcastberg (<https://github.com/rcastberg>) - Python implementation (<https://github.com/rcastberg/sure_petcare>)
## Supported Things
### Things configuration
-```
+```java
Bridge surepetcare:bridge:bridge1 "Demo API Bridge" @ "SurePetcare" [ username="<USERNAME>", password="<PASSWORD>", refreshIntervalTopology=36000, refreshIntervalStatus=300 ]
{
Thing household 12345 "My Household" @ "SurePetcare"
### Items configuration
-```
+```java
/* *****************************************
* Bridge
* *****************************************/
Image UR_1e_Photo "Pet Photo" (dgPet) {channel="surepetcare:pet:bridge1:12345:photo"}
String UR_1e_TagIdentifier "Pet Tag Identifier [%s]" (dgPet) {channel="surepetcare:pet:bridge1:12345:tagIdentifier"}
String UR_1e_Location "Pet Location [%s]" (dgPet) {channel="surepetcare:pet:bridge1:12345:location"}
-String UR_1e_LocationTimeoffset"Pet Switch Location [%s]" (gCats) {channel="surepetcare:pet:bridge1:20584:locationTimeoffset"}
+String UR_1e_LocationTimeoffset"Pet Switch Location [%s]" (gCats) {channel="surepetcare:pet:bridge1:20584:locationTimeoffset"}
DateTime UR_1e_LocationChanged "Pet Loc. Updated [%1$ta. %1$tH:%1$tM]" (dgPet) {channel="surepetcare:pet:bridge1:12345:locationChanged"}
String UR_1e_LocationThrough "Pet Entered / Left through [%s]" (dgPet) {channel="surepetcare:pet:bridge1:12345:locationChangedThrough"}
Number:Mass UR_1e_Weight "Pet Weight [%.1f %unit%]" (dgPet) {channel="surepetcare:pet:bridge1:12345:weight"}
### Sitemap Configuration
-```
+```perl
sitemap surepetcare label="My home automation" {
Frame label="Bridge" {
Text item=UR_1a_Online valuecolor=[ON="green", OFF="red"]
This can be very useful if you have alot of pets that often enter the home by any window/door.
Your .items file should contain this:
-```
-Group:String:OR(1,2) gLocation "Cats inside [%d]"
-String UR_1e_Location "Pet Location [%s]" (dgPet, gLocation) {channel="surepetcare:pet:bridge1:12345:location"}
+```java
+Group:String:OR(1,2) gLocation "Cats inside [%d]"
+String UR_1e_Location "Pet Location [%s]" (dgPet, gLocation) {channel="surepetcare:pet:bridge1:12345:location"}
```
And your .sitemap file could look like this:
-```
+```perl
Frame label="Group Pet/Cats items" {
Selection item=gLocation label="Set ALL cats to:" mappings=[1="Inside", 2="Outside"] icon="text"
Switch item=gLocation label="Set ALL cats to: []" mappings=[1="Inside", 2="Outside"]
Group item=gLocation
}
```
-
+
## Troubleshooting
| Problem | Solution |
|---------------------------------------------|-------------------------------------------------------------------------------------|
| Bridge cannot connect to Sure Petcare API | Check if you can logon to the Sure Petcare app with the given username/password. |
-
If a system location is set, the nearest available Synop station be automatically discovered for this location.
The search radius will expand at each successive scan.
-
## Thing Configuration
Besides the Synop Station Number (as ```synopID``` as a [StationID](https://www.ogimet.com/gsynop_nav.phtml.en) string), the second configuration parameter is ```refreshInterval``` which defines the refresh interval in minutes.
Synop message are typically updated every hour.
-
## Channels
The weather information that is retrieved is available as these channels:
| time-utc | DateTime | Observation time of the Synop message |
| horizontal-visibility | String | Horizontal visibility range |
-* ”cloud attenuation factor” (Kc) as defined by Kasten and Czeplak (1980)
+- ”cloud attenuation factor” (Kc) as defined by Kasten and Czeplak (1980)
## Example
Here is an example of thing definition :
-```
+```java
synopanalyzer:synopanalyzer:orly [ stationId=7149 ]
```
### Items
-```
+```java
Number Synop_Temperature "Temperature [%.1f °C]" <temperature> { channel = "synopanalyzer:synopanalyzer:trappes:temperature" }
Number Synop_Pressure "Pressure [%.1f mb]" <pressure> { channel = "synopanalyzer:synopanalyzer:trappes:pressure" }
Number Synop_Wind_Angle "Wind Angle [%d°]" <wind> { channel = "synopanalyzer:synopanalyzer:trappes:wind-angle"}
The system information binding provides operating system and hardware information including:
-- Operating system name, version and manufacturer;
-- CPU average load for last 1, 5, 15 minutes, name, description, number of physical and logical cores, running threads number, system uptime;
-- Free, total and available memory;
-- Free, total and available swap memory;
-- Hard drive name, model and serial number;
-- Free, total, available storage space and storage type (NTSFS, FAT32 ..);
-- Battery information - estimated remaining time, capacity, name;
-- Sensors information - CPU voltage and temperature, fan speeds;
-- Display information;
-- Network IP,name and adapter name, mac, data sent and received, packets sent and received;
-- Process information - size of RAM memory used, CPU load, process name, path, number of threads.
+- Operating system name, version and manufacturer;
+- CPU average load for last 1, 5, 15 minutes, name, description, number of physical and logical cores, running threads number, system uptime;
+- Free, total and available memory;
+- Free, total and available swap memory;
+- Hard drive name, model and serial number;
+- Free, total, available storage space and storage type (NTSFS, FAT32 ..);
+- Battery information - estimated remaining time, capacity, name;
+- Sensors information - CPU voltage and temperature, fan speeds;
+- Display information;
+- Network IP,name and adapter name, mac, data sent and received, packets sent and received;
+- Process information - size of RAM memory used, CPU load, process name, path, number of threads.
The binding uses the [OSHI](https://github.com/oshi/oshi) library to access this information regardless of the underlying OS and hardware.
The thing has the following properties:
-- `cpu_logicalCores` - Number of CPU logical cores
-- `cpu_physicalCores` - Number of CPU physical cores
-- `os_manufacturer` - The manufacturer of the operating system
-- `os_version` - The version of the operating system
-- `os_family` - The family of the operating system
+- `cpu_logicalCores` - Number of CPU logical cores
+- `cpu_physicalCores` - Number of CPU physical cores
+- `os_manufacturer` - The manufacturer of the operating system
+- `os_version` - The version of the operating system
+- `os_family` - The family of the operating system
If multiple storage or display devices support is needed, a new thing type has to be defined.
The thing has two configuration parameters:
-* **interval_high** - refresh interval in seconds for channels with 'High' priority configuration. Default value is 1 s.
-* **interval_medium** - refresh interval in seconds for channels with 'Medium' priority configuration. Default value is 60s.
+- **interval_high** - refresh interval in seconds for channels with 'High' priority configuration. Default value is 1 s.
+- **interval_medium** - refresh interval in seconds for channels with 'Medium' priority configuration. Default value is 60s.
That means that by default configuration:
-* channels with priority set to 'High' are updated every second
-* channels with priority set to 'Medium' are updated every minute
-* channels with priority set to 'Low' are updated only at initialization or if the `REFRESH` command is sent to the channel.
+- channels with priority set to 'High' are updated every second
+- channels with priority set to 'Medium' are updated every minute
+- channels with priority set to 'Low' are updated only at initialization or if the `REFRESH` command is sent to the channel.
For more info see [channel configuration](#channel-configuration)
**thing** `computer`
-* **group** `memory`
- * **channel** `available, total, used, availablePercent, usedPercent, usedHeapPercent, availableHeap`
-* **group** `swap`
- * **channel** `available, total, used, availablePercent, usedPercent`
-* **group** `storage` (deviceIndex)
- * **channel** `available, total, used, availablePercent, usedPercent, name, description, type`
-* **group** `drive` (deviceIndex)
- * **channel** `name, model, serial`
-* **group** `display` (deviceIndex)
- * **channel** `information`
-* **group** `battery` (deviceIndex)
- * **channel** `name, remainingCapacity, remainingTime`
-* **group** `cpu`
- * **channel** `name, description, load, load1, load5, load15, uptime, threads`
-* **group** `sensors`
- * **channel** `cpuTemp, cpuVoltage, fanSpeed`
-* **group** `network` (deviceIndex)
- * **channel** `ip, mac, networkDisplayName, networkName, packetsSent, packetsReceived, dataSent, dataReceived`
-* **group** `currentProcess`
- * **channel** `load, used, name, threads, path`
-* **group** `process` (pid)
- * **channel** `load, used, name, threads, path`
+- **group** `memory`
+ - **channel** `available, total, used, availablePercent, usedPercent, usedHeapPercent, availableHeap`
+- **group** `swap`
+ - **channel** `available, total, used, availablePercent, usedPercent`
+- **group** `storage` (deviceIndex)
+ - **channel** `available, total, used, availablePercent, usedPercent, name, description, type`
+- **group** `drive` (deviceIndex)
+ - **channel** `name, model, serial`
+- **group** `display` (deviceIndex)
+ - **channel** `information`
+- **group** `battery` (deviceIndex)
+ - **channel** `name, remainingCapacity, remainingTime`
+- **group** `cpu`
+ - **channel** `name, description, load, load1, load5, load15, uptime, threads`
+- **group** `sensors`
+ - **channel** `cpuTemp, cpuVoltage, fanSpeed`
+- **group** `network` (deviceIndex)
+ - **channel** `ip, mac, networkDisplayName, networkName, packetsSent, packetsReceived, dataSent, dataReceived`
+- **group** `currentProcess`
+ - **channel** `load, used, name, threads, path`
+- **group** `process` (pid)
+ - **channel** `load, used, name, threads, path`
The groups marked with "(deviceIndex)" may have device index attached to the Channel Group.
-- channel ::= channel_group & (deviceIndex) & # channel_id
-- deviceIndex ::= number >= 0
-- (e.g. *storage1#available*)
+- channel ::= channel_group & (deviceIndex) & # channel_id
+- deviceIndex ::= number >= 0
+- (e.g. _storage1#available_)
The `fanSpeed` channel in the `sensors` group may have a device index attached to the Channel.
-- channel ::= channel_group & # channel_id & (deviceIndex)
-- deviceIndex ::= number >= 0
+- channel ::= channel_group & # channel_id & (deviceIndex)
+- deviceIndex ::= number >= 0
Channels or channel groups without a trailing index will show the data for the first device (index 0) if multiple exist.
If only one device for a group exists, no channels or channel groups with indexes will be created.
Each of the channels has a default configuration parameter - priority.
It has the following options:
-- **High**
-- **Medium**
-- **Low**
+- **High**
+- **Medium**
+- **Low**
The ''load'' channel will update total or by process CPU load at the frequency defined by the priority update interval, by default high priority, every second.
The value corresponds to the average CPU load over the interval.
Things:
-```
+```java
Thing systeminfo:computer:work [interval_high=3, interval_medium=60]
```
Items:
-```
+```java
/* Network information*/
String Network_AdapterName "Adapter name" <network> { channel="systeminfo:computer:work:network#networkDisplayName" }
String Network_Name "Name" <network> { channel="systeminfo:computer:work:network#networkName" }
Sitemap:
-```
+```perl
sitemap systeminfo label="Systeminfo" {
Frame label="Network Information" {
Default item=Network_AdapterName