Updated external content (Jenkins build 94)
parent
773750875b
commit
020aaa962c
File diff suppressed because one or more lines are too long
|
@ -599,7 +599,7 @@ Expert:
|
||||||
You can use a json formatted string to control title, sound and volume:
|
You can use a json formatted string to control title, sound and volume:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
{ "sound": true, "speak":"<Speak>" "title": "<Title>", "body": "<Body Text>", "volume": 20}
|
{ "sound": true, "speak":"<Speak>", "title": "<Title>", "body": "<Body Text>", "volume": 20}
|
||||||
```
|
```
|
||||||
|
|
||||||
The combination of `sound=true` and `speak` in SSML syntax is not allowed.
|
The combination of `sound=true` and `speak` in SSML syntax is not allowed.
|
||||||
|
|
|
@ -260,6 +260,7 @@ The channels are kept consistent as much as possible from brand to brand to make
|
||||||
| `pan` | Dimmer | Works with ONVIF cameras that can be moved. |
|
| `pan` | Dimmer | Works with ONVIF cameras that can be moved. |
|
||||||
| `parkingAlarm` | Switch (read only) | When an API camera detects a car, this will turn ON. |
|
| `parkingAlarm` | Switch (read only) | When an API camera detects a car, this will turn ON. |
|
||||||
| `pirAlarm` | Switch (read only) | When a camera with PIR ability detects motion, this turns ON. |
|
| `pirAlarm` | Switch (read only) | When a camera with PIR ability detects motion, this turns ON. |
|
||||||
|
| `privacyMode` | Switch | Enable or disable the Privacy Mode of newer Amcrest/Dahua cameras. The camera will move the lens way down and stop the stream. |
|
||||||
| `recordingGif` | Number (read only) | How many seconds recording to GIF for. 0 when file ready. |
|
| `recordingGif` | Number (read only) | How many seconds recording to GIF for. 0 when file ready. |
|
||||||
| `recordingMp4` | Number (read only) | How many seconds recording to MP4 for. 0 when file ready. |
|
| `recordingMp4` | Number (read only) | How many seconds recording to MP4 for. 0 when file ready. |
|
||||||
| `rtspUrl` | String | The URL for the cameras auto detected RTSP stream. |
|
| `rtspUrl` | String | The URL for the cameras auto detected RTSP stream. |
|
||||||
|
|
|
@ -145,7 +145,7 @@ If a special command is needed, the [Hit Key](#hit-key) action (German: "Sende T
|
||||||
|---------------------------------|----------------------------------|------------------------|------|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
|
|---------------------------------|----------------------------------|------------------------|------|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| Dimmer Output Control Single | Ausgang | output | 1-4 | Dimmer, Switch | Sets the dimming value of an output with a given ramp. |
|
| Dimmer Output Control Single | Ausgang | output | 1-4 | Dimmer, Switch | Sets the dimming value of an output with a given ramp. |
|
||||||
| Relay | Relais | relay | 1-8 | Switch | Controls a relay and visualizes its state. |
|
| Relay | Relais | relay | 1-8 | Switch | Controls a relay and visualizes its state. |
|
||||||
| Visualize Binary Sensor | Binärsensor anzeigen | binarysensor | 1-8 | Contact | Visualizes the state of a binary sensor. |
|
| Visualize Binary Sensor | Binärsensor anzeigen | binarysensor | 1-8 | Contact | Visualizes the state of a binary sensor (special channel mapping for some devices). |
|
||||||
| LED Control | LED-Steuerung | led | 1-12 | Text (ON, OFF, BLINK, FLICKER) | Controls an LED and visualizes its current state. |
|
| LED Control | LED-Steuerung | led | 1-12 | Text (ON, OFF, BLINK, FLICKER) | Controls an LED and visualizes its current state. |
|
||||||
| Visualize Logic Operations | Logik Funktion anzeigen | logic | 1-4 | Text (NOT, OR, AND) | Visualizes the result of the logic operation. |
|
| Visualize Logic Operations | Logik Funktion anzeigen | logic | 1-4 | Text (NOT, OR, AND) | Visualizes the result of the logic operation. |
|
||||||
| Motor/Shutter on Dimmer Outputs | Motor/Rollladen an Ausgängen | rollershutteroutput | 1-4 | Rollershutter | Control roller shutters on dimmer outputs |
|
| Motor/Shutter on Dimmer Outputs | Motor/Rollladen an Ausgängen | rollershutteroutput | 1-4 | Rollershutter | Control roller shutters on dimmer outputs |
|
||||||
|
@ -492,7 +492,7 @@ String M10_Logic2 {channel="lcn:module:b827ebfea4bb:S000M010:logic#2"[profile="t
|
||||||
// OR=Some windows are open
|
// OR=Some windows are open
|
||||||
// AND=All windows are open
|
// AND=All windows are open
|
||||||
|
|
||||||
// Binary Sensors
|
// Binary Sensors (Channels 1-3 of LCN-B3I are mapped to BinarySensor6, BinarySensor7, BinarySensor8)
|
||||||
Contact M10_BinarySensor1 {channel="lcn:module:b827ebfea4bb:S000M010:binarysensor#1"}
|
Contact M10_BinarySensor1 {channel="lcn:module:b827ebfea4bb:S000M010:binarysensor#1"}
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
|
@ -564,7 +564,7 @@ sitemap lcn label="My home automation" {
|
||||||
Default item=M10_Logic1 label="Logic Operation 1"
|
Default item=M10_Logic1 label="Logic Operation 1"
|
||||||
Default item=M10_Logic2 label="Logic Operation 2"
|
Default item=M10_Logic2 label="Logic Operation 2"
|
||||||
|
|
||||||
// Binary Sensors
|
// Binary Sensors (Channels 1-3 of LCN-B3I are mapped to BinarySensor6, BinarySensor7, BinarySensor8)
|
||||||
Default item=M10_BinarySensor1 label="Binary Sensor 1"
|
Default item=M10_BinarySensor1 label="Binary Sensor 1"
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
|
|
|
@ -112,6 +112,7 @@ Currently the miio binding supports more than 210 different models.
|
||||||
| Mi Air Quality Monitor S1 | miio:basic | [cgllc.airmonitor.s1](#cgllc-airmonitor-s1) | Yes | |
|
| Mi Air Quality Monitor S1 | miio:basic | [cgllc.airmonitor.s1](#cgllc-airmonitor-s1) | Yes | |
|
||||||
| Mi Air Humidifier | miio:basic | [zhimi.humidifier.v1](#zhimi-humidifier-v1) | Yes | |
|
| Mi Air Humidifier | miio:basic | [zhimi.humidifier.v1](#zhimi-humidifier-v1) | Yes | |
|
||||||
| Mi Air Humidifier | miio:basic | [zhimi.humidifier.ca1](#zhimi-humidifier-ca1) | Yes | |
|
| Mi Air Humidifier | miio:basic | [zhimi.humidifier.ca1](#zhimi-humidifier-ca1) | Yes | |
|
||||||
|
| Mi Air Evaporative Humidifier 2 | miio:basic | [zhimi.humidifier.ca4](#zhimi-humidifier-ca4) | Yes | |
|
||||||
| Mi Air Humidifier 2 | miio:basic | [zhimi.humidifier.cb1](#zhimi-humidifier-cb1) | Yes | |
|
| Mi Air Humidifier 2 | miio:basic | [zhimi.humidifier.cb1](#zhimi-humidifier-cb1) | Yes | |
|
||||||
| Mija Smart humidifier | miio:basic | [deerma.humidifier.mjjsq](#deerma-humidifier-mjjsq) | Yes | |
|
| Mija Smart humidifier | miio:basic | [deerma.humidifier.mjjsq](#deerma-humidifier-mjjsq) | Yes | |
|
||||||
| Mi Air Purifier v1 | miio:basic | [zhimi.airpurifier.v1](#zhimi-airpurifier-v1) | Yes | |
|
| Mi Air Purifier v1 | miio:basic | [zhimi.airpurifier.v1](#zhimi-airpurifier-v1) | Yes | |
|
||||||
|
@ -171,7 +172,7 @@ Currently the miio binding supports more than 210 different models.
|
||||||
| Mr Bond M1 Pro Smart Clothes Dryer | miio:basic | [mrbond.airer.m1pro](#mrbond-airer-m1pro) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
| Mr Bond M1 Pro Smart Clothes Dryer | miio:basic | [mrbond.airer.m1pro](#mrbond-airer-m1pro) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
||||||
| Mr Bond M1 Smart Clothes Dryer | miio:basic | [mrbond.airer.m1s](#mrbond-airer-m1s) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
| Mr Bond M1 Smart Clothes Dryer | miio:basic | [mrbond.airer.m1s](#mrbond-airer-m1s) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
||||||
| Mr Bond M1 Super Smart Clothes Dryer | miio:basic | [mrbond.airer.m1super](#mrbond-airer-m1super) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
| Mr Bond M1 Super Smart Clothes Dryer | miio:basic | [mrbond.airer.m1super](#mrbond-airer-m1super) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
||||||
| Xiaomi Mi Robot Vacuum MOP Essential | miio:basic | [mijia.vacuum.v2](#mijia-vacuum-v2) | Yes | Action commands are unknown at this time. According to spec identified actions for execution are:<br />`action{"did":"vacuum-start-sweep","siid":2,"aiid":1,"in":[]}`<br />`action{"did":"vacuum-stop-sweeping","siid":2,"aiid":2,"in":[]}`<br />`action{"did":"vacuum-start-charge","siid":2,"aiid":3,"in":[]}`<br />`action{"did":"filter-reset-filter-life","siid":11,"aiid":1,"in":[]}`<br />`action{"did":"brush-cleaner-reset-brush-life","siid":14,"aiid":1,"in":[]}`<br />`action{"did":"brush-cleaner-reset-brush-life","siid":15,"aiid":1,"in":[]}`<br />Please test and feedback if they are working to they can be linked to a channel. |
|
| Xiaomi Mi Robot Vacuum MOP Essential | miio:basic | [mijia.vacuum.v2](#mijia-vacuum-v2) | Yes | This device may be overwhelmed if refresh is too frequent, slowing down the responses. Suggest to increase refresh time to 120 seconds |
|
||||||
| Xiaomi Scishare smart capsule coffee machine | miio:basic | [scishare.coffee.s1102](#scishare-coffee-s1102) | Yes | This device does not allow for regular querying for the status. Hence the status is not updated for the action channels.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
| Xiaomi Scishare smart capsule coffee machine | miio:basic | [scishare.coffee.s1102](#scishare-coffee-s1102) | Yes | This device does not allow for regular querying for the status. Hence the status is not updated for the action channels.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
||||||
| Xiaomi Scishare smart capsule coffee machine | miio:basic | [scishare.coffee.s1301](#scishare-coffee-s1301) | Yes | This device does not allow for regular querying for the status. Hence the status is not updated for the action channels.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
| Xiaomi Scishare smart capsule coffee machine | miio:basic | [scishare.coffee.s1301](#scishare-coffee-s1301) | Yes | This device does not allow for regular querying for the status. Hence the status is not updated for the action channels.<br />Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
|
||||||
| Xiaomi Philips Eyecare Smart Lamp 2 | miio:basic | [philips.light.sread1](#philips-light-sread1) | Yes | |
|
| Xiaomi Philips Eyecare Smart Lamp 2 | miio:basic | [philips.light.sread1](#philips-light-sread1) | Yes | |
|
||||||
|
@ -513,6 +514,29 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|
||||||
| temperature | Number | Temperature | |
|
| temperature | Number | Temperature | |
|
||||||
| childlock | Switch | Child Lock | |
|
| childlock | Switch | Child Lock | |
|
||||||
|
|
||||||
|
### Mi Air Evaporative Humidifier 2 (<a name="zhimi-humidifier-ca4">zhimi.humidifier.ca4</a>) Channels
|
||||||
|
|
||||||
|
| Channel | Type | Description | Comment |
|
||||||
|
|------------------|---------|-------------------------------------|------------|
|
||||||
|
| power | Switch | Power | |
|
||||||
|
| mode | Number | Mode | |
|
||||||
|
| Fault | Number | Humidifier Device Fault | |
|
||||||
|
| humidity | Number | Humidity | |
|
||||||
|
| targetHumidity | Number | Target Humidity | |
|
||||||
|
| waterlevel | Number | Water Level | |
|
||||||
|
| bright | Number | LED Brightness | |
|
||||||
|
| buzzer | Switch | Buzzer Status | |
|
||||||
|
| dry | Switch | Dry | |
|
||||||
|
| usedhours | Number:Time | Run Time | |
|
||||||
|
| powerhours | Number:Time | Power Time | |
|
||||||
|
| targetmotorspeed | Number | Target Motor Speed | |
|
||||||
|
| actualmotorspeed | Number | Actual Motor Speed | |
|
||||||
|
| temperature | Number:Temperature | Temperature | |
|
||||||
|
| childlock | Switch | Child Lock | |
|
||||||
|
| ButtonPressed | Number | Button Pressed | |
|
||||||
|
| clean | Switch | Clean Mode | |
|
||||||
|
| countryCode | Number | Country Code | |
|
||||||
|
|
||||||
### Mi Air Humidifier 2 (<a name="zhimi-humidifier-cb1">zhimi.humidifier.cb1</a>) Channels
|
### Mi Air Humidifier 2 (<a name="zhimi-humidifier-cb1">zhimi.humidifier.cb1</a>) Channels
|
||||||
|
|
||||||
| Channel | Type | Description | Comment |
|
| Channel | Type | Description | Comment |
|
||||||
|
@ -1355,7 +1379,7 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|
||||||
|
|
||||||
| Channel | Type | Description | Comment |
|
| Channel | Type | Description | Comment |
|
||||||
|------------------|---------|-------------------------------------|------------|
|
|------------------|---------|-------------------------------------|------------|
|
||||||
| vacuumaction | String | Vacuum Action | This channel accepts `start`, `stop` and `dock`. The commands have not been confirmed working yet. Please feedback |
|
| vacuumaction | String | Vacuum Action | This channel accepts `start`, `stop`, `findme` and `dock`. |
|
||||||
| status | Number | Robot Cleaner - Status | Value mapping [1="Idle",2="Sweeping",3="Paused",4="Error",5="Charging",6="Go Charging"] |
|
| status | Number | Robot Cleaner - Status | Value mapping [1="Idle",2="Sweeping",3="Paused",4="Error",5="Charging",6="Go Charging"] |
|
||||||
| fault | Number | Robot Cleaner - Device Fault | Value mapping [0="No Faults",1="Left-wheel-error",2="Right-whelel-error",3="Cliff-error",4="Low-battery-error",5="Bump-error",6="Main-brush-error",7="Side-brush-error",8="Fan-motor-error",9="Dustbin-error",10="Charging-error",11="No-wate-error",12="Pick-up-error"] |
|
| fault | Number | Robot Cleaner - Device Fault | Value mapping [0="No Faults",1="Left-wheel-error",2="Right-whelel-error",3="Cliff-error",4="Low-battery-error",5="Bump-error",6="Main-brush-error",7="Side-brush-error",8="Fan-motor-error",9="Dustbin-error",10="Charging-error",11="No-wate-error",12="Pick-up-error"] |
|
||||||
| mode | Number | Robot Cleaner - Mode | Value mapping [1="Auto-clean",2="Spot-clean",3="Wallflow-clean"] |
|
| mode | Number | Robot Cleaner - Mode | Value mapping [1="Auto-clean",2="Spot-clean",3="Wallflow-clean"] |
|
||||||
|
@ -3419,6 +3443,32 @@ Number temperature "Temperature" (G_humidifier) {channel="miio:basic:humidifier:
|
||||||
Switch childlock "Child Lock" (G_humidifier) {channel="miio:basic:humidifier:childlock"}
|
Switch childlock "Child Lock" (G_humidifier) {channel="miio:basic:humidifier:childlock"}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Mi Air Evaporative Humidifier 2 (zhimi.humidifier.ca4) item file lines
|
||||||
|
|
||||||
|
note: Autogenerated example. Replace the id (humidifier) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
|
||||||
|
|
||||||
|
```java
|
||||||
|
Group G_humidifier "Mi Air Evaporative Humidifier 2" <status>
|
||||||
|
Switch power "Power" (G_humidifier) {channel="miio:basic:humidifier:power"}
|
||||||
|
Number mode "Mode" (G_humidifier) {channel="miio:basic:humidifier:mode"}
|
||||||
|
Number Fault "Humidifier Device Fault" (G_humidifier) {channel="miio:basic:humidifier:Fault"}
|
||||||
|
Number humidity "Humidity" (G_humidifier) {channel="miio:basic:humidifier:humidity"}
|
||||||
|
Number targetHumidity "Target Humidity" (G_humidifier) {channel="miio:basic:humidifier:targetHumidity"}
|
||||||
|
Number waterlevel "Water Level" (G_humidifier) {channel="miio:basic:humidifier:waterlevel"}
|
||||||
|
Number bright "LED Brightness" (G_humidifier) {channel="miio:basic:humidifier:bright"}
|
||||||
|
Switch buzzer "Buzzer Status" (G_humidifier) {channel="miio:basic:humidifier:buzzer"}
|
||||||
|
Switch dry "Dry" (G_humidifier) {channel="miio:basic:humidifier:dry"}
|
||||||
|
Number:Time usedhours "Run Time" (G_humidifier) {channel="miio:basic:humidifier:usedhours"}
|
||||||
|
Number:Time powerhours "Power Time" (G_humidifier) {channel="miio:basic:humidifier:powerhours"}
|
||||||
|
Number targetmotorspeed "Target Motor Speed" (G_humidifier) {channel="miio:basic:humidifier:targetmotorspeed"}
|
||||||
|
Number actualmotorspeed "Actual Motor Speed" (G_humidifier) {channel="miio:basic:humidifier:actualmotorspeed"}
|
||||||
|
Number:Temperature temperature "Temperature" (G_humidifier) {channel="miio:basic:humidifier:temperature"}
|
||||||
|
Switch childlock "Child Lock" (G_humidifier) {channel="miio:basic:humidifier:childlock"}
|
||||||
|
Number ButtonPressed "Button Pressed" (G_humidifier) {channel="miio:basic:humidifier:ButtonPressed"}
|
||||||
|
Switch clean "Clean Mode" (G_humidifier) {channel="miio:basic:humidifier:clean"}
|
||||||
|
Number countryCode "Country Code" (G_humidifier) {channel="miio:basic:humidifier:countryCode"}
|
||||||
|
```
|
||||||
|
|
||||||
### Mi Air Humidifier 2 (zhimi.humidifier.cb1) item file lines
|
### Mi Air Humidifier 2 (zhimi.humidifier.cb1) item file lines
|
||||||
|
|
||||||
note: Autogenerated example. Replace the id (humidifier) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
|
note: Autogenerated example. Replace the id (humidifier) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
|
@ -47,10 +47,6 @@ The bridge enables communication with other Nikobus components:
|
||||||
* `rollershutter-module` - Nikobus roller shutter module,
|
* `rollershutter-module` - Nikobus roller shutter module,
|
||||||
* `push-button` - Nikobus physical push button.
|
* `push-button` - Nikobus physical push button.
|
||||||
|
|
||||||
## Discovery
|
|
||||||
|
|
||||||
The binding does not support any automatic discovery of Things.
|
|
||||||
|
|
||||||
## Bridge Configuration
|
## Bridge Configuration
|
||||||
|
|
||||||
The binding can connect to the PC-Link via serial interface.
|
The binding can connect to the PC-Link via serial interface.
|
||||||
|
@ -188,6 +184,84 @@ Thing push-button pb1 [ address = "28092A", impactedModules = "switch-module:s1:
|
||||||
|
|
||||||
In addition to the status requests triggered by button presses, there is also a scheduled status update interval defined by the `refreshInterval` parameter and explained above.
|
In addition to the status requests triggered by button presses, there is also a scheduled status update interval defined by the `refreshInterval` parameter and explained above.
|
||||||
|
|
||||||
|
## Discovery
|
||||||
|
|
||||||
|
Pressing a physical Nikobus push-button will generate a new inbox entry with an exception of buttons already discovered or setup.
|
||||||
|
|
||||||
|
Nikobus push buttons have the following format in inbox:
|
||||||
|
|
||||||
|
```
|
||||||
|
Nikobus Push Button 14E7F4:3
|
||||||
|
4BF9CA
|
||||||
|
nikobus:push-button
|
||||||
|
```
|
||||||
|
|
||||||
|
where first line contains name of the discovered button and second one contains button's bus address.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
### Button mappings
|
||||||
|
|
||||||
|
##### 2 buttons switch
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```
|
||||||
|
1 = A
|
||||||
|
2 = B
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 4 buttons switch
|
||||||
|
|
||||||
|

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

|
||||||
|
|
||||||
|
maps as
|
||||||
|
|
||||||
|
```
|
||||||
|
7 5 3 1
|
||||||
|
8 6 4 2
|
||||||
|
```
|
||||||
|
|
||||||
|
so
|
||||||
|
|
||||||
|
```
|
||||||
|
1 = 2C
|
||||||
|
2 = 2D
|
||||||
|
3 = 2A
|
||||||
|
4 = 2B
|
||||||
|
5 = 1C
|
||||||
|
6 = 1D
|
||||||
|
7 = 1A
|
||||||
|
8 = 1B
|
||||||
|
```
|
||||||
|
|
||||||
|
Above example `14E7F4:3` would give:
|
||||||
|
* for 4 buttons switch - push button A,
|
||||||
|
* for 8 buttons switch - push button 2A.
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
### nikobus.things
|
### nikobus.things
|
||||||
|
|
|
@ -46,6 +46,7 @@ home automation systems.
|
||||||
- electricity sensors (get energy consumption)
|
- electricity sensors (get energy consumption)
|
||||||
- door locks (LOCK/UNLOCK, OPEN/CLOSE commands)
|
- door locks (LOCK/UNLOCK, OPEN/CLOSE commands)
|
||||||
- heating systems (control temperature, set heating level)
|
- heating systems (control temperature, set heating level)
|
||||||
|
- valve heating systems (control temperature, derogation mode and temperature)
|
||||||
- exterior heating systems (set heating level)
|
- exterior heating systems (set heating level)
|
||||||
- alarms (both interior/external)
|
- alarms (both interior/external)
|
||||||
- pods
|
- pods
|
||||||
|
@ -78,11 +79,12 @@ Please see the example below.
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
| Thing | Channel | Note |
|
| Thing | Channel | Note |
|
||||||
|-------------------------------------------------------------------------------|:---------------------:|-------------------------------------------------------------------------------------------------------------------------------|
|
|-------------------------------------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||||
| bridge | N.A | bridge does not expose any channel |
|
| bridge | N.A | bridge does not expose any channel |
|
||||||
| gateway | status | status of your Tahoma gateway |
|
| gateway | status | status of your Tahoma gateway |
|
||||||
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
||||||
| gate | gate_state | get state of your gate |
|
| gate | gate_state | get state of your gate (open, closed, pedestrian) |
|
||||||
|
| gate | gate_position | get position (0-100%) of your gate (where supported) |
|
||||||
| roller shutter, screen, venetian blind, garage door, awning, pergola, curtain | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/MY/STOP + closure 0-100 |
|
| roller shutter, screen, venetian blind, garage door, awning, pergola, curtain | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/MY/STOP + closure 0-100 |
|
||||||
| window | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/STOP + closure 0-100 |
|
| window | control | device controller which reacts to commands UP/DOWN/ON/OFF/OPEN/CLOSE/STOP + closure 0-100 |
|
||||||
| silent roller shutter | silent_control | similar to control channel but in silent mode |
|
| silent roller shutter | silent_control | similar to control channel but in silent mode |
|
||||||
|
@ -123,18 +125,21 @@ Please see the example below.
|
||||||
| on/off heating system | target_heating_level | target heating level (off, eco, comfort, frostprotection) |
|
| on/off heating system | target_heating_level | target heating level (off, eco, comfort, frostprotection) |
|
||||||
| heating system | current_temperature | current temperature of the heating system |
|
| heating system | current_temperature | current temperature of the heating system |
|
||||||
| heating system | current_state | current state of the heating system |
|
| heating system | current_state | current state of the heating system |
|
||||||
| heating system, thermostat | target_temperature | target temperature of the heating system |
|
| heating system, valve heating system, thermostat | target_temperature | target temperature of the heating system |
|
||||||
| heating system, thermostat | battery_level | battery level of the heating system |
|
| heating system, valve heating system, thermostat | battery_level | battery level of the heating system |
|
||||||
| exterior heating system | heating_level | heating level of the exterior heating system or ON/OFF |
|
| valve heating system, thermostat | derogation_heating_mode | derogation heating mode of the thermostat (away, freeze, manual, ...) |
|
||||||
|
| valve heating system, thermostat | derogated_target_temperature | target temperature of the heating system |
|
||||||
|
| valve heating system | current_heating_mode | current heating mode of the thermostatic valve |
|
||||||
|
| valve heating system | open_closed_valve | current open/closed state of the thermostatic valve |
|
||||||
|
| valve heating system | operating mode | operating mode of the thermostatic valve |
|
||||||
| thermostat | heating_mode | standard heating mode of the thermostat (away, freeze, manual, ...) |
|
| thermostat | heating_mode | standard heating mode of the thermostat (away, freeze, manual, ...) |
|
||||||
| thermostat | derogation_heating_mode | derogation heating mode of the thermostat (away, freeze, manual, ...) |
|
|
||||||
| thermostat | derogation_activation | derogation activation state (inactive, active) |
|
| thermostat | derogation_activation | derogation activation state (inactive, active) |
|
||||||
|
| exterior heating system | heating_level | heating level of the exterior heating system or ON/OFF |
|
||||||
| temperature sensor | temperature | temperature reported by the sensor |
|
| temperature sensor | temperature | temperature reported by the sensor |
|
||||||
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
||||||
| myfox camera | shutter | controlling of the camera shutter |
|
| myfox camera | shutter | controlling of the camera shutter |
|
||||||
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
||||||
|
|
||||||
|
|
||||||
### Remarks
|
### Remarks
|
||||||
|
|
||||||
All things which have a RSSI (relative received signal) state, expose a channel "rssi".
|
All things which have a RSSI (relative received signal) state, expose a channel "rssi".
|
||||||
|
|
|
@ -63,7 +63,7 @@ This is an optional parameter and multiple values are allowed.
|
||||||
|
|
||||||
Most devices support call lists.
|
Most devices support call lists.
|
||||||
The binding can analyze these call lists and provide channels for the number of missed calls, inbound calls, outbound calls and rejected (blocked) calls.
|
The binding can analyze these call lists and provide channels for the number of missed calls, inbound calls, outbound calls and rejected (blocked) calls.
|
||||||
The days for which this analysis takes place can be controlled with the `missedCallDays`, `rejectedCallDays`, `inboundCallDays` and `outboundCallDays`
|
The days for which this analysis takes place can be controlled with the `missedCallDays`, `rejectedCallDays`, `inboundCallDays`, `outboundCallDays` and `callListDays`.
|
||||||
This is an optional parameter and multiple values are allowed.
|
This is an optional parameter and multiple values are allowed.
|
||||||
|
|
||||||
Since FritzOS! 7.20 WAN access of local devices can be controlled by their IPs.
|
Since FritzOS! 7.20 WAN access of local devices can be controlled by their IPs.
|
||||||
|
@ -89,7 +89,8 @@ This is an optional parameter and multiple values are allowed.
|
||||||
| channel | item-type | advanced | description |
|
| channel | item-type | advanced | description |
|
||||||
|----------------------------|---------------------------|:--------:|----------------------------------------------------------------|
|
|----------------------------|---------------------------|:--------:|----------------------------------------------------------------|
|
||||||
| `callDeflectionEnable` | `Switch` | | Enable/Disable the call deflection setup with the given index. |
|
| `callDeflectionEnable` | `Switch` | | Enable/Disable the call deflection setup with the given index. |
|
||||||
| `deviceLog` | `String` | x | A string containing the last log messages. |
|
| `callList` | `String` | x | A string containing the call list as JSON (see below) |
|
||||||
|
| `deviceLog` | `String` | x | A string containing the last log messages |
|
||||||
| `dslCRCErrors` | `Number:Dimensionless` | x | DSL CRC Errors |
|
| `dslCRCErrors` | `Number:Dimensionless` | x | DSL CRC Errors |
|
||||||
| `dslDownstreamNoiseMargin` | `Number:Dimensionless` | x | DSL Downstream Noise Margin |
|
| `dslDownstreamNoiseMargin` | `Number:Dimensionless` | x | DSL Downstream Noise Margin |
|
||||||
| `dslDownstreamNoiseMargin` | `Number:Dimensionless` | x | DSL Downstream Attenuation |
|
| `dslDownstreamNoiseMargin` | `Number:Dimensionless` | x | DSL Downstream Attenuation |
|
||||||
|
@ -121,6 +122,12 @@ This is an optional parameter and multiple values are allowed.
|
||||||
| `wifi5GHzEnable` | `Switch` | | Enable/Disable the 5.0 GHz WiFi device. |
|
| `wifi5GHzEnable` | `Switch` | | Enable/Disable the 5.0 GHz WiFi device. |
|
||||||
| `wifiGuestEnable` | `Switch` | | Enable/Disable the guest WiFi. |
|
| `wifiGuestEnable` | `Switch` | | Enable/Disable the guest WiFi. |
|
||||||
|
|
||||||
|
### Channel `callList`
|
||||||
|
|
||||||
|
Call lists are provided for one or more days (as configured) as JSON.
|
||||||
|
The JSON consists of an array of individual calls with the fields `date`, `type`, `localNumber`, `remoteNumber`, `duration`.
|
||||||
|
The call-types are the same as provided by the FritzBox, i.e. `1` (inbound), `2` (missed), `3` (outbound), `10` (rejected).
|
||||||
|
|
||||||
## `PHONEBOOK` Profile
|
## `PHONEBOOK` Profile
|
||||||
|
|
||||||
The binding provides a profile for using the FritzBox phonebooks for resolving numbers to names.
|
The binding provides a profile for using the FritzBox phonebooks for resolving numbers to names.
|
||||||
|
@ -131,3 +138,4 @@ If only a specific phonebook from the device should be used, this can be specifi
|
||||||
The default is to use all available phonebooks from the specified thing.
|
The default is to use all available phonebooks from the specified thing.
|
||||||
In case the format of the number in the phonebook and the format of the number from the channel are different (e.g. regarding country prefixes), the `matchCount` parameter can be used.
|
In case the format of the number in the phonebook and the format of the number from the channel are different (e.g. regarding country prefixes), the `matchCount` parameter can be used.
|
||||||
The configured `matchCount` is counted from the right end and denotes the number of matching characters needed to consider this number as matching.
|
The configured `matchCount` is counted from the right end and denotes the number of matching characters needed to consider this number as matching.
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,13 @@ UPnP AV media renderers take care of playback of the content.
|
||||||
You can select a renderer to play the media served from a server.
|
You can select a renderer to play the media served from a server.
|
||||||
The full content hierarchy of the media on the server can be browsed hierarchically.
|
The full content hierarchy of the media on the server can be browsed hierarchically.
|
||||||
Searching the media library is also supported using UPnP search syntax.
|
Searching the media library is also supported using UPnP search syntax.
|
||||||
|
Playlists can be created and maintained.
|
||||||
|
|
||||||
Controls are available to control the playback of the media on the renderer.
|
Controls are available to control the playback of the media on the renderer.
|
||||||
|
Currently playing media can be stored as a favorite.
|
||||||
Each discovered renderer will also be registered as an openHAB audio sink.
|
Each discovered renderer will also be registered as an openHAB audio sink.
|
||||||
|
|
||||||
|
|
||||||
## Supported Things
|
## Supported Things
|
||||||
|
|
||||||
Two thing types are supported, a server thing, `upnpserver`, and a renderer thing, `upnprenderer`.
|
Two thing types are supported, a server thing, `upnpserver`, and a renderer thing, `upnprenderer`.
|
||||||
|
@ -36,6 +39,13 @@ It complies with part of the UPnP AV Media standard, but has not been verified t
|
||||||
Tests have focused on the playback of audio, but if the server and renderer support it, other media types should play as well.
|
Tests have focused on the playback of audio, but if the server and renderer support it, other media types should play as well.
|
||||||
|
|
||||||
|
|
||||||
|
## Binding Configuration
|
||||||
|
|
||||||
|
The binding has one configuration parameter, `path`.
|
||||||
|
This is used as the disk location for storing and retrieving playlists and favorites.
|
||||||
|
The default location is `$OPENHAB_USERDATA/upnpcontrol`.
|
||||||
|
|
||||||
|
|
||||||
## Discovery
|
## Discovery
|
||||||
|
|
||||||
UPnP media servers and media renderers in the network will be discovered automatically.
|
UPnP media servers and media renderers in the network will be discovered automatically.
|
||||||
|
@ -47,49 +57,131 @@ Both the `upnprenderer` and `upnpserver` thing require a configuration paramete
|
||||||
This `udn` uniquely defines the UPnP device.
|
This `udn` uniquely defines the UPnP device.
|
||||||
It can be retrieved from the thing ID when using auto discovery.
|
It can be retrieved from the thing ID when using auto discovery.
|
||||||
|
|
||||||
|
Both also have `refresh` configuration parameter. This parameter defines a polling interval for polling the state of the `upnprenderer` or `upnpserver`.
|
||||||
|
The default polling interval is 60s.
|
||||||
|
0 turns off polling.
|
||||||
|
|
||||||
|
An advanced configuration parameter `responseTimeout` permits tweaking how long the `upnprenderer` and `upnpserver` will wait for GENA events from the UPnP device.
|
||||||
|
This timeout is checked when there is a dependency between an action invocation and an event with expected result.
|
||||||
|
The default is 2500ms.
|
||||||
|
It should not be changed in normal circumstances.
|
||||||
|
|
||||||
Additionally, a `upnpserver` device has the following optional configuration parameters:
|
Additionally, a `upnpserver` device has the following optional configuration parameters:
|
||||||
|
|
||||||
* `filter`: when true, only list content that is playable on the renderer, default is `false`.
|
* `filter`: when true, only list content that is playable on the renderer, default is `false`.
|
||||||
* `sortcriteria`: Sort criteria for the titles in the selection list and when sending for playing to a renderer.
|
|
||||||
The criteria are defined in UPnP sort criteria format, examples: `+dc:title`, `-dc:creator`, `+upnp:album`.
|
* `sortCriteria`: sort criteria for the titles in the selection list and when sending for playing to a renderer.
|
||||||
Support for sort criteria will depend on the media server.
|
|
||||||
The default is to sort ascending on title, `+dc:title`.
|
The criteria are defined in UPnP sort criteria format, examples: `+dc:title`, `-dc:creator`, `+upnp:album`.
|
||||||
|
Support for sort criteria will depend on the media server.
|
||||||
|
The default is to sort ascending on title, `+dc:title`.
|
||||||
|
|
||||||
|
* `browseDown`: when browse or search results in exactly one container entry, iteratively browse down until the result contains multiple container entries or at least one media entry, default is `true`.
|
||||||
|
|
||||||
|
* `searchFromRoot`: always start search from root instead of the current id, default is `false`.
|
||||||
|
|
||||||
|
A `upnprenderer` has the following optional configuration parameters:
|
||||||
|
|
||||||
|
* `seekStep`: step in seconds when sending fast forward or rewind command on the player control, default 5s.
|
||||||
|
|
||||||
|
* `notificationVolumeAdjustment`: volume adjustment from current volume in percent (range -100 to +100) for notifications when no volume is set in `playSound` command, default 10.
|
||||||
|
|
||||||
|
* `maxNotificationDuration`: maximum duration for notifications (default 15s), no maximum duration when set to 0s.
|
||||||
|
|
||||||
The full syntax for manual configuration is:
|
The full syntax for manual configuration is:
|
||||||
|
|
||||||
```
|
```
|
||||||
Thing upnpcontrol:upnpserver:<serverId> [udn="<udn of media server>"]
|
Thing upnpcontrol:upnpserver:<serverId> [udn="<udn of media server>", refresh=<polling interval>, seekStep=<step>]
|
||||||
Thing upnpcontrol:upnprenderer:<rendererId> [udn="<udn of media renderer>", filter=<true/false>, sortcriteria="<sort criteria string>"]
|
Thing upnpcontrol:upnprenderer:<rendererId> [udn="<udn of media renderer>", refresh=<polling interval>, filter=<true/false>, sortCriteria="<sort criteria string>", browseDown=<true/false>, searchfromroot=<true/false>]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
The `upnpserver` has the following channels:
|
### `upnpserver`
|
||||||
|
|
||||||
* `upnprenderer`: The renderer to send the media content to for playback.
|
The `upnpserver` has the following channels (item type and access mode indicated in brackets):
|
||||||
The channel allows selecting from all discovered media renderers.
|
|
||||||
This list is dynamically adjusted as media renderers are being added/removed.
|
|
||||||
* `currentid`: Current ID of media container or entry ready for playback.
|
|
||||||
This channel can be used to skip to a specific container or entry in the content directory.
|
|
||||||
This is especially useful in rules.
|
|
||||||
* `browse`: Browse and serve media content.
|
|
||||||
The browsing will start at the top of the content directory tree and allows you to go down and up (represented by ..) in the tree.
|
|
||||||
The list of containers (directories) and media entries for selection in the content hierarchy is updated dynamically when selecting a container or entry.
|
|
||||||
All media in the selection list, playable on the currently selected `upnprenderer` channel, are automatically queued to the renderer as next media for playback.
|
|
||||||
* `search`: Search for media content on the server.
|
|
||||||
Search criteria are defined in UPnP search criteria format.
|
|
||||||
Examples: `dc:title contains "song"`, `dc:creator contains "SpringSteen"`, `unp:class = "object.item.audioItem"`, `upnp:album contains "Born in"`.
|
|
||||||
The search starts at the value of the `currentid` channel and searches down from there.
|
|
||||||
When no `currentid` is selected, the search starts at the top.
|
|
||||||
All media in the search result list, playable on the current selected `upnprenderer` channel, are automatically queued to the renderer as next media for playback.
|
|
||||||
|
|
||||||
The `upnprenderer` has the following channels:
|
* `upnprenderer` (String, RW): The renderer to receive media content for playback.
|
||||||
|
|
||||||
|
The channel allows selecting from all discovered media renderers.
|
||||||
|
This list is dynamically adjusted as media renderers are being added/removed.
|
||||||
|
|
||||||
|
* `currenttitle` (String, R): Current title of media container or entry ready for playback.
|
||||||
|
|
||||||
|
* `browse` (String, RW): Browse and serve media content, current ID of media container or entry ready for playback.
|
||||||
|
|
||||||
|
The browsing will start at the top of the content directory tree and allows you to go down and up (represented by ..) in the tree.
|
||||||
|
The list of containers (directories) and media entries for selection in the content hierarchy is updated dynamically when selecting a container or entry.
|
||||||
|
|
||||||
|
This channel can also be used to skip to a specific container or entry in the content directory.
|
||||||
|
Setting it to 0 will reposition to the top of the content hierarchy.
|
||||||
|
|
||||||
|
All media in the selection list, playable on the currently selected `upnprenderer` channel, are automatically queued to the renderer as next media for playback.
|
||||||
|
|
||||||
|
The `browseDown` configuration parameter influences the result in such a way that, for `browseDown = true`, if the result only contains exactly one container entry, the result will be the content of the container and not the container itself.
|
||||||
|
|
||||||
|
* `search` (String, W): Search for media content on the server.
|
||||||
|
|
||||||
|
Search criteria are defined in UPnP search criteria format.
|
||||||
|
Examples: `dc:title contains "song"`, `dc:creator contains "SpringSteen"`, `unp:class = "object.item.audioItem"`, `upnp:album contains "Born in"`.
|
||||||
|
|
||||||
|
The search, by default, starts at the value of the `currentid` and searches down from there unless the `searchfromroot` thing configuration parameter is set to `true`.
|
||||||
|
The result (media and containers) will be available in the `browse` command option list.
|
||||||
|
The `currentid` channel will be put to the id of the top container where the search started.
|
||||||
|
|
||||||
|
All media in the search result list, playable on the current selected `upnprenderer` channel, are automatically queued to the renderer as next media for playback.
|
||||||
|
|
||||||
|
The `browseDown` configuration parameter influences the result in such a way that, for `browseDown = true`, if the result only contains exactly one container entry, the result will be the content of the container and not the container itself.
|
||||||
|
|
||||||
|
* `playlistselect` (String, W): Select a playlist from the available playlists currently saved on disk.
|
||||||
|
|
||||||
|
This will also update `playlist` with the selected value.
|
||||||
|
|
||||||
|
* `playlist` (String, RW): Name of existing or new playlist.
|
||||||
|
|
||||||
|
* `playlistaction` (String, W): action to perform with `playlist`.
|
||||||
|
|
||||||
|
Possible command options are:
|
||||||
|
|
||||||
|
* `RESTORE`: restore the playlist from `playlist`.
|
||||||
|
|
||||||
|
If the restored playlist contains content from the current server, this content will update the `browse` command option list.
|
||||||
|
Note that playlists can contain a mix of media entries and container references.
|
||||||
|
|
||||||
|
All media in the result list, playable on the current selected `upnprenderer` channel, are automatically queued to the renderer as next media for playback.
|
||||||
|
|
||||||
|
* `SAVE`: save the current `browse` command option list into `playlist`.
|
||||||
|
|
||||||
|
If `playlist` already exists, it will be overwritten.
|
||||||
|
|
||||||
|
* `APPEND`: append the current `browse` command option list to `playlist`.
|
||||||
|
|
||||||
|
If `playlist` does not exist yet, a new playlist will be created.
|
||||||
|
|
||||||
|
* `DELETE`: delete `playlist` from disk and remove from `playlistselect` command option list.
|
||||||
|
|
||||||
|
A number of convenience channels replicate the basic control channels from the `upnprenderer` thing for the currently selected renderer on the `upnprenderer` channel.
|
||||||
|
These channels are `volume`, `mute` and `control`.
|
||||||
|
|
||||||
|
### `upnprenderer`
|
||||||
|
|
||||||
|
The `upnprenderer` has the following default channels:
|
||||||
|
|
||||||
| Channel Type ID | Item Type | Access Mode | Description |
|
| Channel Type ID | Item Type | Access Mode | Description |
|
||||||
|-----------------|-----------|-------------|----------------------------------------------------|
|
|--------------------|-------------|-------------|----------------------------------------------------|
|
||||||
| `volume` | Dimmer | RW | playback volume |
|
| `volume` | Dimmer | RW | playback master volume |
|
||||||
| `control` | Player | RW | play, pause, next, previous control |
|
| `mute` | Switch | RW | playback master mute |
|
||||||
| `stop` | Switch | RW | stop media playback |
|
| `control` | Player | RW | play, pause, next, previous, fast forward, rewind |
|
||||||
|
| `stop` | Switch | W | stop media playback |
|
||||||
|
| `repeat` | Switch | RW | continuous play of media queue, restart at end |
|
||||||
|
| `shuffle` | Switch | RW | continuous random play of media queue |
|
||||||
|
| `onlyplayone` | Switch | RW | only play one media entry from the queue at a time |
|
||||||
|
| `uri` | String | RW | URI of currently playing media |
|
||||||
|
| `favoriteselect` | String | W | play favorite from list of saved favorites |
|
||||||
|
| `favorite` | String | RW | set name for existing of new favorite |
|
||||||
|
| `favoriteaction` | String | W | `SAVE` or `DELETE` `favorite` |
|
||||||
|
| `playlistselect` | String | W | play playlist from list of saved playlists |
|
||||||
| `title` | String | R | media title |
|
| `title` | String | R | media title |
|
||||||
| `album` | String | R | media album |
|
| `album` | String | R | media album |
|
||||||
| `albumart` | Image | R | image for media album |
|
| `albumart` | Image | R | image for media album |
|
||||||
|
@ -99,27 +191,154 @@ The `upnprenderer` has the following channels:
|
||||||
| `genre` | String | R | media genre |
|
| `genre` | String | R | media genre |
|
||||||
| `tracknumber` | Number | R | track number of current track in album |
|
| `tracknumber` | Number | R | track number of current track in album |
|
||||||
| `trackduration` | Number:Time | R | track duration of current track in album |
|
| `trackduration` | Number:Time | R | track duration of current track in album |
|
||||||
| `trackposition` | Number:Time | R | current position in track during playback or pause |
|
| `trackposition` | Number:Time | RW | current position in track during playback or pause |
|
||||||
|
| `reltrackposition` | Dimmer | RW | current position relative to track duration |
|
||||||
|
|
||||||
|
A numer of `upnprenderer` audio control channels may be dynamically created depending on the specific renderer capabilities.
|
||||||
|
Examples of these are:
|
||||||
|
|
||||||
|
| Channel Type ID | Item Type | Access Mode | Description |
|
||||||
|
|--------------------|-------------|-------------|----------------------------------------------------|
|
||||||
|
| `loudness` | Switch | RW | playback master loudness |
|
||||||
|
| `lfvolume` | Dimmer | RW | playback front left volume |
|
||||||
|
| `lfmute` | Switch | RW | playback front left mute |
|
||||||
|
| `rfvolume` | Dimmer | RW | playback front right volume |
|
||||||
|
| `rfmute` | Switch | RW | playback front right mute |
|
||||||
|
|
||||||
|
|
||||||
## Audio Support
|
## Audio Support
|
||||||
|
|
||||||
All configured media renderers are registered as an audio sink.
|
Two audio sinks are registered for each media renderer.
|
||||||
`playSound`and `playStream`commands can be used in rules to play back audio fragments or audio streams to a renderer.
|
`playSound` and `playStream` commands can be used in rules to play back audio fragments or audio streams to a renderer.
|
||||||
|
|
||||||
|
The first audio sink has the renderer id as a name.
|
||||||
|
It is used for normal playback of a sound or stream.
|
||||||
|
|
||||||
|
The second audio sink has `-notify` appended to the renderer id for its name, and has a special behavior.
|
||||||
|
This audio sink is used to play notifications.
|
||||||
|
When setting the volume parameter in the `playSound` command, the volume of the renderer will only change for the duration of playing the notification.
|
||||||
|
The `maxNotificationDuration` configuration parameter of the renderer will limit the notification duration the value of the parameter in seconds.
|
||||||
|
Normal playing will resume after the notification has played or when the maximum notification duration has been reached, whichever happens first.
|
||||||
|
Longer sounds or streams will be cut off.
|
||||||
|
|
||||||
|
|
||||||
|
## Managing a Playback Queue
|
||||||
|
|
||||||
|
There are multiple ways to serve content to a renderer for playback.
|
||||||
|
|
||||||
|
* Directly provide a URI on the `URI` channel or through `playSound` or `playStream` actions:
|
||||||
|
|
||||||
|
Playing will start immediately, interrupting currently playing media.
|
||||||
|
No metadata for the media is available, therefore will be provided in the media channels for metadata (e.g. `title`, `album`, ...).
|
||||||
|
|
||||||
|
* Content served from one or multiple `upnpserver` servers:
|
||||||
|
|
||||||
|
This is done on the `upnpserver` thing with the `upnprenderer` set the the renderer for playback.
|
||||||
|
The media at any point in time in the `upnpserver browse` option list (result from browse, search or restoring a playlist), will be queued to the `upnprenderer` for playback.
|
||||||
|
Playback does not start automatically if not yet playing.
|
||||||
|
When already playing a queue, the first entry of the new queue will be playing as the next entry.
|
||||||
|
When playing an URI or media provided through an action, playback will immediately switch to the new queue.
|
||||||
|
|
||||||
|
The `upnprenderer` will use that queue until it is replaced by another queue from the same or another `upnpserver`.
|
||||||
|
Note that querying the content hierarchy on the `upnpserver` will update the `upnpserver browse` option list each time, and therefore the queue on the `upnprenderer` will be updated each time as long as `upnprenderer` is selected on `upnpserver`.
|
||||||
|
|
||||||
|
* Selecting a favorite or playlist on the renderer.
|
||||||
|
|
||||||
|
Playback of the favorite or playlist will start immediately.
|
||||||
|
|
||||||
|
When playing from a directly provided URI, at the end of the media, the renderer will try to move to the next entry in a queue previously provided by a server.
|
||||||
|
Playing will stop when no such entry is available.
|
||||||
|
|
||||||
|
Multiple renderers can be sent the same or different playback queue from the same server sequentially.
|
||||||
|
Select content on the server and select the first renderer for playback.
|
||||||
|
The content queue will be served to the renderer, a play command on the renderer will start playing the queue.
|
||||||
|
Select another renderer on the server.
|
||||||
|
The same or new (after another content selection) queue will be served to the second renderer.
|
||||||
|
Both renderers will keep on playing the full queue they received.
|
||||||
|
|
||||||
|
When serving a queue from a server, the renderer can be put in "only play one" mode by putting the `onlyplayone` channel to true.
|
||||||
|
A subsequent play command will only play one media entry from the queue while respecting `shuffle` and `repeat`.
|
||||||
|
To play the next media from the queue, a new play command will be required after the player stopped.
|
||||||
|
An example of usage could be playing a single random sound from a playlist when you are away from home and an intrusion is detected.
|
||||||
|
A script could put the player in `shuffle` and `onlyplayone` mode and serve a playlist.
|
||||||
|
Only one random sound from the playlist would be played.
|
||||||
|
|
||||||
|
### Favorites
|
||||||
|
|
||||||
|
Currently playing media can be saved as favorites on the renderer.
|
||||||
|
This is especially useful when playing streams, such as online radio, but is valid for any media.
|
||||||
|
If the currently playing media has metadata, it will be saved with the favorite.
|
||||||
|
|
||||||
|
A favorite only contains one media item.
|
||||||
|
Selecting the favorite will only play that one item.
|
||||||
|
The favorite will start playing immediately.
|
||||||
|
Playing the server queue will resume after playing the favorite.
|
||||||
|
|
||||||
|
### Playlists
|
||||||
|
|
||||||
|
Playlists provide a way to define lists of server content for playback.
|
||||||
|
|
||||||
|
A new playlist can be created on a server thing from the selection in the `upnpserver browse` selection list.
|
||||||
|
When restoring a playlist on the server, the media in the playlist from the `upnpserver` thing used for restoring, will be put in the `upnpserver browse` selection list.
|
||||||
|
|
||||||
|
The current selection of media playable on the currently selected renderer will automatically be stored as a playlist with name `current`.
|
||||||
|
|
||||||
|
A playlist can contain media from different servers.
|
||||||
|
Only the media from the current server will be visible in the server when restoring.
|
||||||
|
It is possible to append content to a playlist that already contains content from a different server.
|
||||||
|
That way, it is possible to combine multiple sources for playback.
|
||||||
|
|
||||||
|
When selecting a playlist on a renderer, the playlist will be queued for playback, replacing the current queue.
|
||||||
|
Playback will start immediately.
|
||||||
|
|
||||||
|
|
||||||
|
## Using Search
|
||||||
|
|
||||||
|
Searching content on a media server may take a lot of time, depending on the functionality and the performance of the media server.
|
||||||
|
Therefore, it may very well be that media server searches time out.
|
||||||
|
|
||||||
|
Rather than searching for individual items, it is therefore often better to search for containers or playlists.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
* `upnp:class derivedfrom "object.item.audioItem.musicTrack" and dc:title contains "Fight For Your Right"` would search for all music tracks with "Fight For Your Right" in the title.
|
||||||
|
This search is potentially slow.
|
||||||
|
|
||||||
|
* `dc:title contains "Evening" and upnp:class = "object.container.playlistContainer"` would search for all playlists with "Evening" in the name.
|
||||||
|
|
||||||
|
* `dc:title = "Donnie Darko" and upnp:class = "object.container.playlistContainer"` would search for a playlist with a specific name.
|
||||||
|
|
||||||
|
With the last example, if the `browseDown` configuration parameter is `true`, the result will not be the playlist, but the content of the playlist.
|
||||||
|
This allows immediately starting a play command without having to browse down to the first result of the list (the unique container).
|
||||||
|
This is especially useful when doing searches and starting to play in scripts, as the play command can immediately follow the search for a unique container, without a need to browse down to a media ID that is hidden in the browse option list.
|
||||||
|
For interactive use through a UI, you may opt to switch the `browseDown` configuration parameter to `false` to see all levels in the browsing hierarchy.
|
||||||
|
|
||||||
|
The `searchfromroot` configuration parameter always forces searching to start from the directory root.
|
||||||
|
This will also always reset the `browse` channel to the root.
|
||||||
|
This option is helpful if you do not want to limit search to a selected container in the directory.
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
The current version of BasicUI does not support dynamic refreshing of the selection list in the `upnpserver` channels `renderer` and `browse`.
|
BasicUI has a number of limitations that impact the way some of the channels can be used from it:
|
||||||
A refresh of the browser will be required to show the adjusted selection list.
|
|
||||||
The `upnpserver search` channel requires input of a string to trigger a search.
|
* BasicUI does not support dynamic refreshing of the selection list in the `upnpserver` channels `renderer`, `browse`, `playlistselect` and in the `upnprenderer` channel `favoriteselect`.
|
||||||
This cannot be done with BasicUI, but can be achieved with rules.
|
A refresh of the browser will be required to show the adjusted selection list.
|
||||||
|
|
||||||
|
* The `upnpserver search` channel requires input of a string to trigger a search.
|
||||||
|
The `upnpserver playlist` channel and `upnprenderer favorite` channel require input of a string to set a playlist or favorite.
|
||||||
|
This cannot be done with BasicUI, but can be achieved with rules.
|
||||||
|
|
||||||
|
* The player control in BasicUI does not support fast forward or rewind.
|
||||||
|
|
||||||
|
None of these are limitations when using the main UI.
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
.things:
|
.things:
|
||||||
|
|
||||||
```
|
```
|
||||||
Thing upnpcontrol:upnpserver:mymediaserver [udn="538cf6e8-d188-4aed-8545-73a1b905466e"]
|
Thing upnpcontrol:upnpserver:mymediaserver [udn="0ec457ae-6c50-4e6e-9012-dee7bb25be2d", refresh=120, filter=true, sortCriteria="+dc:title"]
|
||||||
Thing upnpcontrol:upnprenderer:mymediarenderer [udn="0ec457ae-6c50-4e6e-9012-dee7bb25be2d", filter=true, sortcriteria="+dc:title"]
|
Thing upnpcontrol:upnprenderer:mymediarenderer [udn="538cf6e8-d188-4aed-8545-73a1b905466e", refresh=600, seekStep=1]
|
||||||
```
|
```
|
||||||
|
|
||||||
.items:
|
.items:
|
||||||
|
@ -130,8 +349,18 @@ Group MediaRenderer <player>
|
||||||
|
|
||||||
Dimmer Volume "Volume [%.1f %%]" <soundvolume> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:volume"}
|
Dimmer Volume "Volume [%.1f %%]" <soundvolume> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:volume"}
|
||||||
Switch Mute "Mute" <soundvolume_mute> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:mute"}
|
Switch Mute "Mute" <soundvolume_mute> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:mute"}
|
||||||
|
Switch Loudness "Loudness" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:loudness"}
|
||||||
|
Dimmer LeftVolume "Volume [%.1f %%]" <soundvolume> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:lfvolume"}
|
||||||
|
Dimmer RightVolume "Volume [%.1f %%]" <soundvolume> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:rfvolume"}
|
||||||
Player Controls "Controller" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:control"}
|
Player Controls "Controller" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:control"}
|
||||||
Switch Stop "Stop" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:stop"}
|
Switch Stop "Stop" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:stop"}
|
||||||
|
Switch Repeat "Repeat" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:repeat"}
|
||||||
|
Switch Shuffle "Shuffle" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:shuffle"}
|
||||||
|
String URI "URI" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:uri"}
|
||||||
|
String FavoriteSelect "Favorite" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:favoriteselect"}
|
||||||
|
String Favorite "Favorite" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:favorite"}
|
||||||
|
String FavoriteAction "Favorite Action" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:favoriteaction"}
|
||||||
|
String PlaylistPlay "Playlist" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:playlistselect"}
|
||||||
String Title "Now playing [%s]" <text> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:title"}
|
String Title "Now playing [%s]" <text> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:title"}
|
||||||
String Album "Album" <text> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:album"}
|
String Album "Album" <text> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:album"}
|
||||||
Image AlbumArt "Album Art" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:albumart"}
|
Image AlbumArt "Album Art" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:albumart"}
|
||||||
|
@ -142,10 +371,15 @@ String Genre "Genre" <text> (MediaRenderer) {channel=
|
||||||
Number TrackNumber "Track Number" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:tracknumber"}
|
Number TrackNumber "Track Number" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:tracknumber"}
|
||||||
Number:Time TrackDuration "Track Duration [%d %unit%]" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:trackduration"}
|
Number:Time TrackDuration "Track Duration [%d %unit%]" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:trackduration"}
|
||||||
Number:Time TrackPosition "Track Position [%d %unit%]" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:trackposition"}
|
Number:Time TrackPosition "Track Position [%d %unit%]" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:trackposition"}
|
||||||
|
Dimmer RelTrackPosition "Relative Track Position ´[%d %%]" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:reltrackposition"}
|
||||||
|
|
||||||
String Renderer "Renderer [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:title"}
|
String Renderer "Renderer [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:title"}
|
||||||
String CurrentId "Current Entry [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:currentid"}
|
String CurrentTitle "Current Entry [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:currenttitle"}
|
||||||
String Browse "Browse" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:browse"}
|
String Browse "Browse" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:browse"}
|
||||||
|
String Search "Search" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:search"}
|
||||||
|
String PlaylistSelect "Playlist" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:playlistselect"}
|
||||||
|
String Playlist "Playlist" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:playlist"}
|
||||||
|
String PlaylistAction "Playlist Action" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:playlistaction"}
|
||||||
```
|
```
|
||||||
|
|
||||||
.sitemap:
|
.sitemap:
|
||||||
|
@ -153,8 +387,18 @@ String Browse "Browse" (MediaServer) {channel=
|
||||||
```
|
```
|
||||||
Slider item=Volume
|
Slider item=Volume
|
||||||
Switch item=Mute
|
Switch item=Mute
|
||||||
|
Switch item=Loudness
|
||||||
|
Slider item=LeftVolume
|
||||||
|
Slider item=RightVolume
|
||||||
Default item=Controls
|
Default item=Controls
|
||||||
Switch item=Stop mappings=[ON="STOP"]
|
Switch item=Stop mappings=[ON="STOP"]
|
||||||
|
Switch item=Repeat
|
||||||
|
Switch item=Shuffle
|
||||||
|
Text item=URI
|
||||||
|
Selection item=FavoriteSelect
|
||||||
|
Text item=Favorite
|
||||||
|
Switch item=FavoriteAction
|
||||||
|
Selection item=PlaylistPlay
|
||||||
Text item=Title
|
Text item=Title
|
||||||
Text item=Album
|
Text item=Album
|
||||||
Default item=AlbumArt
|
Default item=AlbumArt
|
||||||
|
@ -165,10 +409,15 @@ Text item=Genre
|
||||||
Text item=TrackNumber
|
Text item=TrackNumber
|
||||||
Text item=TrackDuration
|
Text item=TrackDuration
|
||||||
Text item=TrackPosition
|
Text item=TrackPosition
|
||||||
|
Slider item=RelTrackPosition
|
||||||
|
|
||||||
Text item=Renderer
|
Selection item=Renderer
|
||||||
Text item=CurrentId
|
Text item=CurrentTitle
|
||||||
Text item=Browse
|
Selection item=Browse
|
||||||
|
Text item=Search
|
||||||
|
Selection item=PlaylistSelect
|
||||||
|
Text item=Playlist
|
||||||
|
Switch item=PlaylistAction
|
||||||
```
|
```
|
||||||
|
|
||||||
Audio sink usage examples in rules:
|
Audio sink usage examples in rules:
|
||||||
|
@ -176,4 +425,6 @@ Audio sink usage examples in rules:
|
||||||
```
|
```
|
||||||
playSound(“doorbell.mp3”)
|
playSound(“doorbell.mp3”)
|
||||||
playStream("upnpcontrol:upnprenderer:mymediarenderer", "http://icecast.vrtcdn.be/stubru_tijdloze-high.mp3”)
|
playStream("upnpcontrol:upnprenderer:mymediarenderer", "http://icecast.vrtcdn.be/stubru_tijdloze-high.mp3”)
|
||||||
|
playSound("upnpcontrol:upnprenderer:mymediarenderer-notify", "doorbell.mp3", new PercentType(80))
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -642,6 +642,7 @@
|
||||||
<channel id="rtspUrl" typeId="rtspUrl"/>
|
<channel id="rtspUrl" typeId="rtspUrl"/>
|
||||||
<channel id="imageUrl" typeId="imageUrl"/>
|
<channel id="imageUrl" typeId="imageUrl"/>
|
||||||
<channel id="hlsUrl" typeId="hlsUrl"/>
|
<channel id="hlsUrl" typeId="hlsUrl"/>
|
||||||
|
<channel id="enablePrivacyMode" typeId="enablePrivacyMode"/>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description>
|
<config-description>
|
||||||
|
|
||||||
|
@ -934,6 +935,7 @@
|
||||||
<channel id="rtspUrl" typeId="rtspUrl"/>
|
<channel id="rtspUrl" typeId="rtspUrl"/>
|
||||||
<channel id="imageUrl" typeId="imageUrl"/>
|
<channel id="imageUrl" typeId="imageUrl"/>
|
||||||
<channel id="hlsUrl" typeId="hlsUrl"/>
|
<channel id="hlsUrl" typeId="hlsUrl"/>
|
||||||
|
<channel id="enablePrivacyMode" typeId="enablePrivacyMode"/>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description>
|
<config-description>
|
||||||
|
|
||||||
|
@ -2663,6 +2665,12 @@
|
||||||
<category>Light</category>
|
<category>Light</category>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="enablePrivacyMode">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Enable Privacy Mode</label>
|
||||||
|
<description>Turn the Privacy Mode on and off.</description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="autoLED" advanced="true">
|
<channel-type id="autoLED" advanced="true">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Auto LED</label>
|
<label>Auto LED</label>
|
||||||
|
|
|
@ -111,6 +111,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Eyecare Mode On/Off</label>
|
<label>Eyecare Mode On/Off</label>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="clean">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Cleaning On/Off</label>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="mode">
|
<channel-type id="mode">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Mode</label>
|
<label>Mode</label>
|
||||||
|
@ -220,7 +224,7 @@
|
||||||
<channel-type id="humidity">
|
<channel-type id="humidity">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
<label>Humidity</label>
|
<label>Humidity</label>
|
||||||
<state pattern="%.1f" readOnly="true"/>
|
<state pattern="%.1f %%" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="pm25">
|
<channel-type id="pm25">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
|
@ -266,14 +270,19 @@
|
||||||
<state pattern="%.0f" readOnly="true"/>
|
<state pattern="%.0f" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="usedhours">
|
<channel-type id="usedhours">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number:Time</item-type>
|
||||||
<label>Run Time</label>
|
<label>Run Time</label>
|
||||||
<state pattern="%.0f" readOnly="true"/>
|
<state pattern="%.0f %unit%" readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="powerhours">
|
||||||
|
<item-type>Number:Time</item-type>
|
||||||
|
<label>Powered On Time</label>
|
||||||
|
<state pattern="%.0f %unit%" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="motorspeed">
|
<channel-type id="motorspeed">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
<label>Motor Speed</label>
|
<label>Motor Speed</label>
|
||||||
<state pattern="%.0f" readOnly="true"/>
|
<state pattern="%.0f rpm" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="filterlive">
|
<channel-type id="filterlive">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
|
@ -304,6 +313,11 @@
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
<label>Trans Level</label>
|
<label>Trans Level</label>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="waterlevel">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Water Level</label>
|
||||||
|
<state pattern="%.0f %%"/>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="dry">
|
<channel-type id="dry">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Dry</label>
|
<label>Dry</label>
|
||||||
|
@ -748,4 +762,57 @@
|
||||||
</options>
|
</options>
|
||||||
</state>
|
</state>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="humidifierOperationMode">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Operation Mode</label>
|
||||||
|
<state>
|
||||||
|
<options>
|
||||||
|
<option value="0">Auto</option>
|
||||||
|
<option value="1">Low</option>
|
||||||
|
<option value="2">Medium</option>
|
||||||
|
<option value="3">High</option>
|
||||||
|
</options>
|
||||||
|
</state>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="humidifierLedBrightness">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>LED Brightness</label>
|
||||||
|
<state>
|
||||||
|
<options>
|
||||||
|
<option value="0">Off</option>
|
||||||
|
<option value="1">Dim</option>
|
||||||
|
<option value="2">Bright</option>
|
||||||
|
</options>
|
||||||
|
</state>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="humidifierLastPressedButton">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Last Pressed Button</label>
|
||||||
|
<state>
|
||||||
|
<options>
|
||||||
|
<option value="0">No</option>
|
||||||
|
<option value="1">LED</option>
|
||||||
|
<option value="2">Power</option>
|
||||||
|
</options>
|
||||||
|
</state>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="countryCode">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Country</label>
|
||||||
|
<state>
|
||||||
|
<options>
|
||||||
|
<option value="0">Unlocked</option>
|
||||||
|
<option value="1">US</option>
|
||||||
|
<option value="82">KR</option>
|
||||||
|
<option value="44">EU</option>
|
||||||
|
<option value="81">JP</option>
|
||||||
|
<option value="7">RU</option>
|
||||||
|
<option value="86">CN</option>
|
||||||
|
<option value="852">HK</option>
|
||||||
|
<option value="886">TW</option>
|
||||||
|
<option value="33">FR</option>
|
||||||
|
</options>
|
||||||
|
</state>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
</thing:thing-descriptions>
|
</thing:thing-descriptions>
|
||||||
|
|
|
@ -190,6 +190,13 @@
|
||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="gate_position">
|
||||||
|
<item-type>Dimmer</item-type>
|
||||||
|
<label>Position</label>
|
||||||
|
<description>Position of the gate</description>
|
||||||
|
<state max="100" min="0" step="1" pattern="%d %%" readOnly="false"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="open">
|
<channel-type id="open">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Open/Close</label>
|
<label>Open/Close</label>
|
||||||
|
@ -301,8 +308,17 @@
|
||||||
<channel-type id="derogation_heating_mode">
|
<channel-type id="derogation_heating_mode">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Derogation Heating Mode</label>
|
<label>Derogation Heating Mode</label>
|
||||||
<description>Derogation heating mode of the Somfy thermostat</description>
|
<description>Derogation heating mode of the Somfy thermostat/valve</description>
|
||||||
<state readOnly="true"/>
|
<command>
|
||||||
|
<options>
|
||||||
|
<option value="auto">Program</option>
|
||||||
|
<option value="away">Away</option>
|
||||||
|
<option value="comfort">Home</option>
|
||||||
|
<option value="frost protection">Frost protection</option>
|
||||||
|
<option value="manual">Manual</option>
|
||||||
|
<option value="eco">Night</option>
|
||||||
|
</options>
|
||||||
|
</command>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="derogation_activation">
|
<channel-type id="derogation_activation">
|
||||||
|
@ -352,4 +368,25 @@
|
||||||
<description>The level of the heating</description>
|
<description>The level of the heating</description>
|
||||||
<state max="100" min="0" step="1" pattern="%d %%"/>
|
<state max="100" min="0" step="1" pattern="%d %%"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="current_heating_mode">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Current Heating Mode</label>
|
||||||
|
<description>Current heating mode of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="open_closed_valve">
|
||||||
|
<item-type>Contact</item-type>
|
||||||
|
<label>Valve Open/Closed state</label>
|
||||||
|
<description>Current open/closed state of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="operating_mode">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Operating mode</label>
|
||||||
|
<description>Operating mode of the Somfy thermostatic valve</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
</thing:thing-descriptions>
|
</thing:thing-descriptions>
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="gate_state" typeId="gate_state"></channel>
|
<channel id="gate_state" typeId="gate_state"></channel>
|
||||||
<channel id="gate_command" typeId="gate_command"></channel>
|
<channel id="gate_command" typeId="gate_command"></channel>
|
||||||
|
<channel id="gate_position" typeId="gate_position"></channel>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<supported-bridge-type-refs>
|
<supported-bridge-type-refs>
|
||||||
<bridge-type-ref id="bridge"/>
|
<bridge-type-ref id="bridge"/>
|
||||||
</supported-bridge-type-refs>
|
</supported-bridge-type-refs>
|
||||||
<label>Somfy Heating System</label>
|
<label>Z-Wave Heating System</label>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="current_temperature" typeId="current_temperature"></channel>
|
<channel id="current_temperature" typeId="current_temperature"></channel>
|
||||||
<channel id="current_state" typeId="current_state"></channel>
|
<channel id="current_state" typeId="current_state"></channel>
|
||||||
|
|
|
@ -10,11 +10,12 @@
|
||||||
</supported-bridge-type-refs>
|
</supported-bridge-type-refs>
|
||||||
<label>Somfy Thermostat</label>
|
<label>Somfy Thermostat</label>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="target_temperature" typeId="target_temperature"></channel>
|
<channel id="target_temperature" typeId="temperature"></channel>
|
||||||
<channel id="battery_level" typeId="system.battery-level"></channel>
|
<channel id="battery_level" typeId="system.battery-level"></channel>
|
||||||
<channel id="heating_mode" typeId="heating_mode"></channel>
|
<channel id="heating_mode" typeId="heating_mode"></channel>
|
||||||
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
||||||
<channel id="derogation_activation" typeId="derogation_activation"></channel>
|
<channel id="derogation_activation" typeId="derogation_activation"></channel>
|
||||||
|
<channel id="derogated_target_temperature" typeId="target_temperature"></channel>
|
||||||
</channels>
|
</channels>
|
||||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="somfytahoma"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="valveheatingsystem">
|
||||||
|
<supported-bridge-type-refs>
|
||||||
|
<bridge-type-ref id="bridge"/>
|
||||||
|
</supported-bridge-type-refs>
|
||||||
|
<label>Somfy Thermostatic Valve</label>
|
||||||
|
<channels>
|
||||||
|
<channel id="target_temperature" typeId="temperature"></channel>
|
||||||
|
<channel id="battery_level" typeId="system.battery-level"></channel>
|
||||||
|
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
||||||
|
<channel id="derogated_target_temperature" typeId="target_temperature"></channel>
|
||||||
|
<channel id="current_heating_mode" typeId="current_heating_mode"></channel>
|
||||||
|
<channel id="open_closed_valve" typeId="open_closed_valve"></channel>
|
||||||
|
<channel id="operating_mode" typeId="operating_mode"></channel>
|
||||||
|
</channels>
|
||||||
|
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
</thing:thing-descriptions>
|
|
@ -82,6 +82,11 @@
|
||||||
<description>List of days for which outbound calls should be calculated.</description>
|
<description>List of days for which outbound calls should be calculated.</description>
|
||||||
<advanced>true</advanced>
|
<advanced>true</advanced>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter name="callListDays" type="text" multiple="true">
|
||||||
|
<label>Call List Days</label>
|
||||||
|
<description>List of days for which JSON call list should be generated.</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
<parameter name="wanBlockIPs" type="text" multiple="true">
|
<parameter name="wanBlockIPs" type="text" multiple="true">
|
||||||
<label>WAN Block IPs</label>
|
<label>WAN Block IPs</label>
|
||||||
<description>List of IPs that can be blocked for WAN access.</description>
|
<description>List of IPs that can be blocked for WAN access.</description>
|
||||||
|
|
|
@ -11,8 +11,21 @@
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="volume" typeId="system.volume"/>
|
<channel id="volume" typeId="system.volume"/>
|
||||||
<channel id="mute" typeId="system.mute"/>
|
<channel id="mute" typeId="system.mute"/>
|
||||||
|
|
||||||
<channel id="control" typeId="system.media-control"/>
|
<channel id="control" typeId="system.media-control"/>
|
||||||
<channel id="stop" typeId="stop"/>
|
<channel id="stop" typeId="stop"/>
|
||||||
|
|
||||||
|
<channel id="repeat" typeId="repeat"/>
|
||||||
|
<channel id="shuffle" typeId="shuffle"/>
|
||||||
|
<channel id="onlyplayone" typeId="onlyplayone"/>
|
||||||
|
|
||||||
|
<channel id="uri" typeId="uri"/>
|
||||||
|
<channel id="favoriteselect" typeId="favoriteselect"/>
|
||||||
|
<channel id="favorite" typeId="favorite"/>
|
||||||
|
<channel id="favoriteaction" typeId="favoriteaction"/>
|
||||||
|
|
||||||
|
<channel id="playlistselect" typeId="playlistselect"/>
|
||||||
|
|
||||||
<channel id="title" typeId="system.media-title"/>
|
<channel id="title" typeId="system.media-title"/>
|
||||||
<channel id="album" typeId="album"/>
|
<channel id="album" typeId="album"/>
|
||||||
<channel id="albumart" typeId="albumart"/>
|
<channel id="albumart" typeId="albumart"/>
|
||||||
|
@ -23,52 +36,163 @@
|
||||||
<channel id="tracknumber" typeId="tracknumber"/>
|
<channel id="tracknumber" typeId="tracknumber"/>
|
||||||
<channel id="trackduration" typeId="trackduration"/>
|
<channel id="trackduration" typeId="trackduration"/>
|
||||||
<channel id="trackposition" typeId="trackposition"/>
|
<channel id="trackposition" typeId="trackposition"/>
|
||||||
|
<channel id="reltrackposition" typeId="reltrackposition"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
<representation-property>udn</representation-property>
|
||||||
<config-description>
|
<config-description>
|
||||||
<parameter name="udn" type="text" required="true">
|
<parameter name="udn" type="text" required="true">
|
||||||
<label>Unique Device Name</label>
|
<label>Unique Device Name</label>
|
||||||
<description>The UDN identifies the UPnP Renderer</description>
|
<description>The UDN identifies the UPnP Renderer</description>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter name="refresh" type="integer" unit="s">
|
||||||
|
<label>Refresh Interval</label>
|
||||||
|
<description>Specifies the refresh interval in seconds</description>
|
||||||
|
<default>60</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="notificationVolumeAdjustment" type="integer" min="-100" max="100" step="1" unit="%">
|
||||||
|
<label>Notification Sound Volume Adjustment</label>
|
||||||
|
<description>Specifies the percentage adjustment to the current sound volume when playing notifications</description>
|
||||||
|
<default>10</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="maxNotificationDuration" type="integer" unit="s">
|
||||||
|
<label>Maximum Notification Duration</label>
|
||||||
|
<description>Specifies the maximum duration for notifications, longer notification sounds will be interrupted. O
|
||||||
|
represents no maximum duration</description>
|
||||||
|
<default>15</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="seekStep" type="integer" min="1">
|
||||||
|
<label>Fast Forward/Rewind Step</label>
|
||||||
|
<description>Step in seconds for fast forward rewind</description>
|
||||||
|
<default>5</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="responseTimeout" type="integer" unit="ms">
|
||||||
|
<label>UPnP Response Timeout</label>
|
||||||
|
<description>Specifies the timeout in milliseconds when waiting for responses on UPnP actions</description>
|
||||||
|
<default>2500</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
</config-description>
|
</config-description>
|
||||||
|
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
||||||
<thing-type id="upnpserver">
|
<thing-type id="upnpserver">
|
||||||
<label>UPnPServer</label>
|
<label>UPnPServer</label>
|
||||||
<description>UPnP AV Server</description>
|
<description>UPnP AV Server</description>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="upnprenderer" typeId="upnprenderer"/>
|
<channel id="upnprenderer" typeId="upnprenderer"/>
|
||||||
<channel id="currentid" typeId="currentid"/>
|
<channel id="currenttitle" typeId="system.media-title"/>
|
||||||
<channel id="browse" typeId="browse"/>
|
<channel id="browse" typeId="browse"/>
|
||||||
<channel id="search" typeId="search"/>
|
<channel id="search" typeId="search"/>
|
||||||
|
|
||||||
|
<channel id="playlistselect" typeId="playlistselect"/>
|
||||||
|
<channel id="playlist" typeId="playlist"/>
|
||||||
|
<channel id="playlistaction" typeId="playlistaction"/>
|
||||||
|
|
||||||
|
<channel id="volume" typeId="system.volume"/>
|
||||||
|
<channel id="mute" typeId="system.mute"/>
|
||||||
|
<channel id="control" typeId="system.media-control"/>
|
||||||
|
<channel id="stop" typeId="stop"/>
|
||||||
|
|
||||||
</channels>
|
</channels>
|
||||||
|
<representation-property>udn</representation-property>
|
||||||
<config-description>
|
<config-description>
|
||||||
<parameter name="udn" type="text" required="true">
|
<parameter name="udn" type="text" required="true">
|
||||||
<label>Unique Device Name</label>
|
<label>Unique Device Name</label>
|
||||||
<description>The UDN identifies the UPnP Media Server</description>
|
<description>The UDN identifies the UPnP Media Server</description>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="filter" type="boolean" required="false">
|
<parameter name="refresh" type="integer" unit="s">
|
||||||
|
<label>Refresh Interval</label>
|
||||||
|
<description>Specifies the refresh interval in seconds</description>
|
||||||
|
<default>60</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="filter" type="boolean">
|
||||||
<label>Filter Content</label>
|
<label>Filter Content</label>
|
||||||
<description>Only list content which is playable on the selected renderer</description>
|
<description>Only list content which is playable on the selected renderer</description>
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<advanced>false</advanced>
|
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="sortcriteria" type="text" required="false">
|
<parameter name="sortCriteria" type="text">
|
||||||
<label>Sort Criteria</label>
|
<label>Sort Criteria</label>
|
||||||
<description>Sort criteria for the titles in the selection list and when sending for playing to a renderer. The
|
<description>Sort criteria for the titles in the selection list and when sending for playing to a renderer. The
|
||||||
criteria are defined in UPnP sort criteria format. Examples: +dc:title, -dc:creator, +upnp:album. Supported sort
|
criteria are defined in UPnP sort criteria format. Examples: +dc:title, -dc:creator, +upnp:album. Supported sort
|
||||||
criteria will depend on the media server</description>
|
criteria will depend on the media server</description>
|
||||||
<default>+dc:title</default>
|
<default>+dc:title</default>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter name="browseDown" type="boolean">
|
||||||
|
<label>Auto Browse Down</label>
|
||||||
|
<description>When browse or search results in exactly one container entry, iteratively browse down until the
|
||||||
|
result
|
||||||
|
contains multiple container entries or at least one media entry</description>
|
||||||
|
<default>true</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="searchFromRoot" type="boolean">
|
||||||
|
<label>Search From Root</label>
|
||||||
|
<description>Always search from the root directory</description>
|
||||||
|
<default>false</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="responseTimeout" type="integer" unit="ms">
|
||||||
|
<label>UPnP Response Timeout</label>
|
||||||
|
<description>Specifies the timeout in milliseconds when waiting for responses on UPnP actions</description>
|
||||||
|
<default>2500</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
</config-description>
|
</config-description>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
||||||
<!-- Channel Types -->
|
<!-- Channel Types -->
|
||||||
|
<channel-type id="loudness">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Loudness</label>
|
||||||
|
<description>Loudness</description>
|
||||||
|
<category>SoundVolume</category>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="stop">
|
<channel-type id="stop">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Stop</label>
|
<label>Stop</label>
|
||||||
<description>Stop the player</description>
|
<description>Stop the player</description>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="repeat">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Repeat</label>
|
||||||
|
<description>Repeat the selection</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="shuffle">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Shuffle</label>
|
||||||
|
<description>Random shuffle the selection</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="onlyplayone">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Only Play One</label>
|
||||||
|
<description>Stop playback after playing one media entry from queue</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="uri">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>URI</label>
|
||||||
|
<description>Now playing URI</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="favoriteselect">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Select Favorite</label>
|
||||||
|
<description>Select favorite to play</description>
|
||||||
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="favorite">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Favorite</label>
|
||||||
|
<description>Favorite name</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="favoriteaction">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Favorite Action</label>
|
||||||
|
<description>Favorite action</description>
|
||||||
|
<command>
|
||||||
|
<options>
|
||||||
|
<option value="SAVE">Save</option>
|
||||||
|
<option value="DELETE">Delete</option>
|
||||||
|
</options>
|
||||||
|
</command>
|
||||||
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="album">
|
<channel-type id="album">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Album</label>
|
<label>Album</label>
|
||||||
|
@ -115,7 +239,13 @@
|
||||||
<item-type>Number:Time</item-type>
|
<item-type>Number:Time</item-type>
|
||||||
<label>Track Position</label>
|
<label>Track Position</label>
|
||||||
<description>Now playing track position</description>
|
<description>Now playing track position</description>
|
||||||
<state readOnly="true" pattern="%d %unit%"/>
|
<state pattern="%d %unit%"/>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="reltrackposition">
|
||||||
|
<item-type>Dimmer</item-type>
|
||||||
|
<label>Relative Track Position</label>
|
||||||
|
<description>Track position as percentage of track duration</description>
|
||||||
|
<category>MediaControl</category>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="upnprenderer">
|
<channel-type id="upnprenderer">
|
||||||
|
@ -123,15 +253,10 @@
|
||||||
<label>Renderer</label>
|
<label>Renderer</label>
|
||||||
<description>Select AV renderer</description>
|
<description>Select AV renderer</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="currentid">
|
|
||||||
<item-type>String</item-type>
|
|
||||||
<label>Current Media Id</label>
|
|
||||||
<description>Current id of media entry or container</description>
|
|
||||||
</channel-type>
|
|
||||||
<channel-type id="browse">
|
<channel-type id="browse">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Browse Selection</label>
|
<label>Current Media Id</label>
|
||||||
<description>Browse selection for playing</description>
|
<description>Current id of media entry or container, option list to browse hierarchy</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="search">
|
<channel-type id="search">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
|
@ -140,4 +265,29 @@
|
||||||
Examples: dc:title contains "song", dc:creator contains "SpringSteen", unp:class = "object.item.audioItem",
|
Examples: dc:title contains "song", dc:creator contains "SpringSteen", unp:class = "object.item.audioItem",
|
||||||
upnp:album contains "Born in"</description>
|
upnp:album contains "Born in"</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="playlistselect">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Select Playlist</label>
|
||||||
|
<description>Playlist for selection</description>
|
||||||
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="playlist">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Playlist</label>
|
||||||
|
<description>Playlist name</description>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="playlistaction">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Playlist Action</label>
|
||||||
|
<description>Playlist action</description>
|
||||||
|
<command>
|
||||||
|
<options>
|
||||||
|
<option value="RESTORE">Restore</option>
|
||||||
|
<option value="SAVE">Save</option>
|
||||||
|
<option value="APPEND">Append</option>
|
||||||
|
<option value="DELETE">Delete</option>
|
||||||
|
</options>
|
||||||
|
</command>
|
||||||
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
|
</channel-type>
|
||||||
</thing:thing-descriptions>
|
</thing:thing-descriptions>
|
||||||
|
|
Loading…
Reference in New Issue