# BSB-LAN Binding
This binding uses the REST API of [BSB-LPB-PPS-LAN](https://github.com/fredlcore/BSB-LAN) to obtain data from the device.
## Supported Things
Currently the binding supports the following thing types:
| Thing Type | Description |
|-------------|----------------------------------------------------------------|
| bridge | Represents the BSB-LAN device. |
| parameter | Represents a single parameter available at the BSB-LAN device. |
## Discovery
There is no discovery implemented. You have to create your Things manually and specify the hostname/IP of the BSB-LAN device in the Bridge.
## Binding Configuration
The binding has no configuration options, all configuration is done at Thing level.
## Thing Configuration
### Bridge Thing Configuration
| Property | Default | Required | Type | Description |
|------------------|---------|----------|---------|--------------------------------------------------------------------------------------------|
| host | - | Yes | String | The hostname or IP address of the BSB-LAN device. |
| port | 80 | No | Integer | The port where the BSB-LAN device is listening. |
| passkey | - | No | String | The passkey required to access the BSB-LAN device. |
| username | - | No | String | The username required to access the BSB-LAN device (when using HTTP Basic Authentication). |
| password | - | No | String | The password required to access the BSB-LAN device (when using HTTP Basic Authentication). |
| refreshInterval | 60 | No | Integer | Specifies the refresh (poll) interval in seconds. Minimum value: 5s |
### Parameter Thing Configuration
| Property | Default | Required | Type | Description |
|-----------|---------|----------|---------|------------------------------------------------------------------------------------------|
| id | - | Yes | Integer | Specific parameter identifier (numeric value) |
| setId | value of `id` | No | Integer | Parameter identifier used for set requests (numeric value).
If not specified it falls back to the value of the `id` property. |
| setType | `SET` | No | String | Message type used for set requests. Possible values are: `INF` or `SET`.
If not specified or unknown it falls back to `SET`. |
Note: If you would also like to use the binding to set parameter values, ensure you have flashed the BSB-LAN adapter in write mode (see your `BSB_lan_config.h`)
## Channels
### Parameter Thing Channels
| Channel ID | Item Type | Description |
|--------------|-----------|------------------------------------------------------------------------------------|
| name | String | Name of the parameter as provided by the BSB-LAN device. |
| number-value | Number | Value of the parameter converted to a numerical value (if possible).
The value is published as `DecimalType(int)` for values of `datatype` `DT_ENUM` and `DecimalType(double)` otherwise. |
| string-value | String | Value of the parameter as provided by the BSB-LAN device. |
| switch-value | Switch | Value of the parameter.
`0` is interpreted as `OFF`, everything else as `ON`. |
| unit | String | Unit as provided by the BSB-LAN device (HTML unescaping applied). |
| description | String | Description as provided by the BSB-LAN device. |
| datatype | Number | Datatype as provided by the BSB-LAN device. Possible values are currently
`0` for `DT_VALS`: plain value
`1` for `DT_ENUM`: value (8/16 Bit) followed by space followed by text
`2` for `DT_BITS`: bit value followed by bitmask followed by text
`3` for `DT_WDAY`: weekday
`4` for `DT_HHMM`: hour:minute
`5` for `DT_DTTM`: date and time
`6` for `DT_DDMM`: day and month
`7` for `DT_STRN`: String
`8` for `DT_DWHM`: PPS time (day of week, hour:minute) |
## Full Example
bsblan.things:
```java
Bridge bsblan:bridge:heating [host="192.168.1.100", refreshInterval=30, username="atari", password="800xl"] {
Thing parameter p700 [id=700]
Thing parameter p710 [id=710]
Thing parameter p8730 [id=8730]
}
```
bsblan.items:
```java
Number BsbParameter700NumberValue { channel="bsblan:parameter:heating:p700:number-value" }
Number BsbParameter710NumberValue { channel="bsblan:parameter:heating:p710:number-value" }
String BsbParameter8730Description { channel="bsblan:parameter:heating:p8730:description" }
```
bsblan.sitemap:
```perl
sitemap bsblan label="BSB-LAN" {
Selection item=BsbParameter700NumberValue label="Operating Mode" mappings=[0="Protection", 1="Automatic", 2="Reduced", 3="Comfort"] icon="heating"
Setpoint item=BsbParameter710NumberValue label="Room Temperature Comfort Setpoint [%.1f °C]" icon="temperature" minValue=22.0 maxValue=25.0 step=0.5
Text item=BsbParameter8730Description label="Heating Circuit Pump [%s]"
}
```