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:
|
||||
|
||||
```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.
|
||||
|
|
|
@ -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. |
|
||||
| `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. |
|
||||
| `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. |
|
||||
| `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. |
|
||||
|
|
|
@ -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. |
|
||||
| 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. |
|
||||
| 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 |
|
||||
|
@ -492,7 +492,7 @@ String M10_Logic2 {channel="lcn:module:b827ebfea4bb:S000M010:logic#2"[profile="t
|
|||
// OR=Some 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"}
|
||||
|
||||
// Variables
|
||||
|
@ -564,7 +564,7 @@ sitemap lcn label="My home automation" {
|
|||
Default item=M10_Logic1 label="Logic Operation 1"
|
||||
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"
|
||||
|
||||
// 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 Humidifier | miio:basic | [zhimi.humidifier.v1](#zhimi-humidifier-v1) | 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 | |
|
||||
| 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 | |
|
||||
|
@ -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 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 |
|
||||
| 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.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 | |
|
||||
|
@ -513,6 +514,29 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|
|||
| temperature | Number | Temperature | |
|
||||
| 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
|
||||
|
||||
| Channel | Type | Description | Comment |
|
||||
|
@ -1355,7 +1379,7 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|
|||
|
||||
| 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"] |
|
||||
| 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"] |
|
||||
|
@ -3419,6 +3443,32 @@ Number temperature "Temperature" (G_humidifier) {channel="miio:basic:humidifier:
|
|||
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
|
||||
|
||||
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,
|
||||
* `push-button` - Nikobus physical push button.
|
||||
|
||||
## Discovery
|
||||
|
||||
The binding does not support any automatic discovery of Things.
|
||||
|
||||
## Bridge Configuration
|
||||
|
||||
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.
|
||||
|
||||
## 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
|
||||
|
||||
### nikobus.things
|
||||
|
|
|
@ -46,6 +46,7 @@ home automation systems.
|
|||
- electricity sensors (get energy consumption)
|
||||
- door locks (LOCK/UNLOCK, OPEN/CLOSE commands)
|
||||
- heating systems (control temperature, set heating level)
|
||||
- valve heating systems (control temperature, derogation mode and temperature)
|
||||
- exterior heating systems (set heating level)
|
||||
- alarms (both interior/external)
|
||||
- pods
|
||||
|
@ -77,63 +78,67 @@ Please see the example below.
|
|||
|
||||
## Channels
|
||||
|
||||
| Thing | Channel | Note |
|
||||
|-------------------------------------------------------------------------------|:---------------------:|-------------------------------------------------------------------------------------------------------------------------------|
|
||||
| bridge | N.A | bridge does not expose any channel |
|
||||
| gateway | status | status of your Tahoma gateway |
|
||||
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
||||
| gate | gate_state | get state of your gate |
|
||||
| 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 |
|
||||
| silent roller shutter | silent_control | similar to control channel but in silent mode |
|
||||
| venetian blind, adjustable slats roller shutter | orientation | percentual orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||
| venetian blind, adjustable slats roller shutter | closure_orientation | percentual closure and orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||
| adjustable slats roller shutter | rocker | used for setting the rocker position of the roller shutter, the only position allowing the slats control |
|
||||
| action group | execute_action | switch which reacts to ON command and triggers the predefined Tahoma action |
|
||||
| onoff, light | switch | reacts to standard ON/OFF commands |
|
||||
| dimmer light | light_intensity | sets/gets intensity of the dimmer light or ON/OFF |
|
||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | contact | normal value is CLOSE, changes to OPEN when detection triggered |
|
||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | sensor_defect | indicates the health of the sensor (dead, lowBatter, maintenanceRequired, noDefect) |
|
||||
| smoke sensor | radio_battery | maintenance radio part battery state (low, normal) |
|
||||
| smoke sensor | sensor_battery | maintenance sensor part battery state (absence, low, normal) |
|
||||
| smoke sensor | short_check | triggering the smoke sensor's short check |
|
||||
| smoke sensor | long_check | triggering the smoke sensor's long check |
|
||||
| light sensor | luminance | light luminance value in luxes |
|
||||
| electricity sensor | energy_consumption | energy consumption value in watts |
|
||||
| humidity sensor | humidity | current relative humidity |
|
||||
| dock | battery_status | indicates running on battery (yes/no) |
|
||||
| dock | battery_level | remaining battery percentage |
|
||||
| dock | siren_status | used for controlling and getting siren state (on, off, cyclic) |
|
||||
| dock | short_beep | testing of dock's siren - short beep |
|
||||
| dock | long_beep | testing of dock's siren - long beep |
|
||||
| siren | battery | battery level full/low/normal/verylow |
|
||||
| siren | onoff | controlling siren status ON/OFF |
|
||||
| siren | memorized_volume | setting memorized volume (normal/highest) |
|
||||
| pod | cyclic_button | pod cyclic button state |
|
||||
| pod | battery_status | pod battery status state |
|
||||
| pod | lighting_led_pod_mode | lighting LED pod mod state |
|
||||
| interior alarm | alarm_command | used for sending commands to Somfy alarm device |
|
||||
| interior alarm | intrusion_control | used for alarm external intrusion controlling |
|
||||
| interior alarm, myfox alarm | alarm_state | state of the Somfy alarm |
|
||||
| interior alarm | target_alarm_state | target state of the Somfy alarm |
|
||||
| interior alarm, myfox alarm | intrusion_state | intrusion state of the Somfy alarm |
|
||||
| external alarm | active_zones_state | state of external alarm active zones |
|
||||
| door lock | lock | switch representing unlocked/locked state |
|
||||
| door lock | open | switch representing open/close state |
|
||||
| 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_state | current state of the heating system |
|
||||
| heating system, thermostat | target_temperature | target temperature of the heating system |
|
||||
| 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 |
|
||||
| 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) |
|
||||
| temperature sensor | temperature | temperature reported by the sensor |
|
||||
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
||||
| myfox camera | shutter | controlling of the camera shutter |
|
||||
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
||||
|
||||
| Thing | Channel | Note |
|
||||
|-------------------------------------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| bridge | N.A | bridge does not expose any channel |
|
||||
| gateway | status | status of your Tahoma gateway |
|
||||
| gate | gate_command | used for controlling your gate (open, close, stop, pedestrian) |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| venetian blind, adjustable slats roller shutter | orientation | percentual orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||
| venetian blind, adjustable slats roller shutter | closure_orientation | percentual closure and orientation of the blind's slats, it can have value 0-100. For IO Homecontrol devices only (non RTS) |
|
||||
| adjustable slats roller shutter | rocker | used for setting the rocker position of the roller shutter, the only position allowing the slats control |
|
||||
| action group | execute_action | switch which reacts to ON command and triggers the predefined Tahoma action |
|
||||
| onoff, light | switch | reacts to standard ON/OFF commands |
|
||||
| dimmer light | light_intensity | sets/gets intensity of the dimmer light or ON/OFF |
|
||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | contact | normal value is CLOSE, changes to OPEN when detection triggered |
|
||||
| smoke sensor, occupancy sensor, contact sensor & water sensor | sensor_defect | indicates the health of the sensor (dead, lowBatter, maintenanceRequired, noDefect) |
|
||||
| smoke sensor | radio_battery | maintenance radio part battery state (low, normal) |
|
||||
| smoke sensor | sensor_battery | maintenance sensor part battery state (absence, low, normal) |
|
||||
| smoke sensor | short_check | triggering the smoke sensor's short check |
|
||||
| smoke sensor | long_check | triggering the smoke sensor's long check |
|
||||
| light sensor | luminance | light luminance value in luxes |
|
||||
| electricity sensor | energy_consumption | energy consumption value in watts |
|
||||
| humidity sensor | humidity | current relative humidity |
|
||||
| dock | battery_status | indicates running on battery (yes/no) |
|
||||
| dock | battery_level | remaining battery percentage |
|
||||
| dock | siren_status | used for controlling and getting siren state (on, off, cyclic) |
|
||||
| dock | short_beep | testing of dock's siren - short beep |
|
||||
| dock | long_beep | testing of dock's siren - long beep |
|
||||
| siren | battery | battery level full/low/normal/verylow |
|
||||
| siren | onoff | controlling siren status ON/OFF |
|
||||
| siren | memorized_volume | setting memorized volume (normal/highest) |
|
||||
| pod | cyclic_button | pod cyclic button state |
|
||||
| pod | battery_status | pod battery status state |
|
||||
| pod | lighting_led_pod_mode | lighting LED pod mod state |
|
||||
| interior alarm | alarm_command | used for sending commands to Somfy alarm device |
|
||||
| interior alarm | intrusion_control | used for alarm external intrusion controlling |
|
||||
| interior alarm, myfox alarm | alarm_state | state of the Somfy alarm |
|
||||
| interior alarm | target_alarm_state | target state of the Somfy alarm |
|
||||
| interior alarm, myfox alarm | intrusion_state | intrusion state of the Somfy alarm |
|
||||
| external alarm | active_zones_state | state of external alarm active zones |
|
||||
| door lock | lock | switch representing unlocked/locked state |
|
||||
| door lock | open | switch representing open/close state |
|
||||
| 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_state | current state of the heating system |
|
||||
| heating system, valve heating system, thermostat | target_temperature | target temperature of the heating system |
|
||||
| heating system, valve heating system, thermostat | battery_level | battery level of the heating system |
|
||||
| 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 | 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 |
|
||||
| myfox camera, myfox alarm | cloud_status | cloud connection status |
|
||||
| myfox camera | shutter | controlling of the camera shutter |
|
||||
| myfox alarm | myfox_alarm_command | used for sending commands to Somfy Myfox alarm device |
|
||||
|
||||
### Remarks
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ This is an optional parameter and multiple values are allowed.
|
|||
|
||||
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 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.
|
||||
|
||||
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 |
|
||||
|----------------------------|---------------------------|:--------:|----------------------------------------------------------------|
|
||||
| `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 |
|
||||
| `dslDownstreamNoiseMargin` | `Number:Dimensionless` | x | DSL Downstream Noise Margin |
|
||||
| `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. |
|
||||
| `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
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
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.
|
||||
Playlists can be created and maintained.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## Supported Things
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## 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
|
||||
|
||||
UPnP media servers and media renderers in the network will be discovered automatically.
|
||||
|
@ -47,79 +57,288 @@ Both the `upnprenderer` and `upnpserver` thing require a configuration paramete
|
|||
This `udn` uniquely defines the UPnP device.
|
||||
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:
|
||||
|
||||
* `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`.
|
||||
Support for sort criteria will depend on the media server.
|
||||
The default is to sort ascending on title, `+dc:title`.
|
||||
|
||||
* `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`.
|
||||
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:
|
||||
|
||||
```
|
||||
Thing upnpcontrol:upnpserver:<serverId> [udn="<udn of media server>"]
|
||||
Thing upnpcontrol:upnprenderer:<rendererId> [udn="<udn of media renderer>", filter=<true/false>, sortcriteria="<sort criteria string>"]
|
||||
Thing upnpcontrol:upnpserver:<serverId> [udn="<udn of media server>", refresh=<polling interval>, seekStep=<step>]
|
||||
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
|
||||
|
||||
The `upnpserver` has the following channels:
|
||||
### `upnpserver`
|
||||
|
||||
* `upnprenderer`: The renderer to send the media content to for playback.
|
||||
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 `upnpserver` has the following channels (item type and access mode indicated in brackets):
|
||||
|
||||
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 |
|
||||
|--------------------|-------------|-------------|----------------------------------------------------|
|
||||
| `volume` | Dimmer | RW | playback master volume |
|
||||
| `mute` | Switch | RW | playback master mute |
|
||||
| `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 |
|
||||
| `album` | String | R | media album |
|
||||
| `albumart` | Image | R | image for media album |
|
||||
| `creator` | String | R | media creator |
|
||||
| `artist` | String | R | media artist |
|
||||
| `publisher` | String | R | media publisher |
|
||||
| `genre` | String | R | media genre |
|
||||
| `tracknumber` | Number | R | track number of current track in album |
|
||||
| `trackduration` | Number:Time | R | track duration of current track in album |
|
||||
| `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 |
|
||||
|
||||
| Channel Type ID | Item Type | Access Mode | Description |
|
||||
|-----------------|-----------|-------------|----------------------------------------------------|
|
||||
| `volume` | Dimmer | RW | playback volume |
|
||||
| `control` | Player | RW | play, pause, next, previous control |
|
||||
| `stop` | Switch | RW | stop media playback |
|
||||
| `title` | String | R | media title |
|
||||
| `album` | String | R | media album |
|
||||
| `albumart` | Image | R | image for media album |
|
||||
| `creator` | String | R | media creator |
|
||||
| `artist` | String | R | media artist |
|
||||
| `publisher` | String | R | media publisher |
|
||||
| `genre` | String | R | media genre |
|
||||
| `tracknumber` | Number | R | track number 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 |
|
||||
|
||||
## Audio Support
|
||||
|
||||
All configured media renderers are registered as an audio sink.
|
||||
`playSound`and `playStream`commands can be used in rules to play back audio fragments or audio streams to a renderer.
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
The current version of BasicUI does not support dynamic refreshing of the selection list in the `upnpserver` channels `renderer` and `browse`.
|
||||
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.
|
||||
This cannot be done with BasicUI, but can be achieved with rules.
|
||||
BasicUI has a number of limitations that impact the way some of the channels can be used from it:
|
||||
|
||||
* BasicUI does not support dynamic refreshing of the selection list in the `upnpserver` channels `renderer`, `browse`, `playlistselect` and in the `upnprenderer` channel `favoriteselect`.
|
||||
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
|
||||
|
||||
.things:
|
||||
|
||||
```
|
||||
Thing upnpcontrol:upnpserver:mymediaserver [udn="538cf6e8-d188-4aed-8545-73a1b905466e"]
|
||||
Thing upnpcontrol:upnprenderer:mymediarenderer [udn="0ec457ae-6c50-4e6e-9012-dee7bb25be2d", filter=true, sortcriteria="+dc:title"]
|
||||
Thing upnpcontrol:upnpserver:mymediaserver [udn="0ec457ae-6c50-4e6e-9012-dee7bb25be2d", refresh=120, filter=true, sortCriteria="+dc:title"]
|
||||
Thing upnpcontrol:upnprenderer:mymediarenderer [udn="538cf6e8-d188-4aed-8545-73a1b905466e", refresh=600, seekStep=1]
|
||||
```
|
||||
|
||||
.items:
|
||||
|
@ -130,8 +349,18 @@ Group MediaRenderer <player>
|
|||
|
||||
Dimmer Volume "Volume [%.1f %%]" <soundvolume> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:volume"}
|
||||
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"}
|
||||
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 Album "Album" <text> (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:album"}
|
||||
Image AlbumArt "Album Art" (MediaRenderer) {channel="upnpcontrol:upnprenderer:mymediarenderer:albumart"}
|
||||
|
@ -142,33 +371,53 @@ String Genre "Genre" <text> (MediaRenderer) {channel=
|
|||
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 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 CurrentId "Current Entry [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:currentid"}
|
||||
String Browse "Browse" (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:browse"}
|
||||
String CurrentTitle "Current Entry [%s]" <text> (MediaServer) {channel="upnpcontrol:upnpserver:mymediaserver:currenttitle"}
|
||||
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:
|
||||
|
||||
```
|
||||
Slider item=Volume
|
||||
Switch item=Mute
|
||||
Default item=Controls
|
||||
Switch item=Stop mappings=[ON="STOP"]
|
||||
Text item=Title
|
||||
Text item=Album
|
||||
Default item=AlbumArt
|
||||
Text item=Creator
|
||||
Text item=Artist
|
||||
Text item=Publisher
|
||||
Text item=Genre
|
||||
Text item=TrackNumber
|
||||
Text item=TrackDuration
|
||||
Text item=TrackPosition
|
||||
Slider item=Volume
|
||||
Switch item=Mute
|
||||
Switch item=Loudness
|
||||
Slider item=LeftVolume
|
||||
Slider item=RightVolume
|
||||
Default item=Controls
|
||||
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=Album
|
||||
Default item=AlbumArt
|
||||
Text item=Creator
|
||||
Text item=Artist
|
||||
Text item=Publisher
|
||||
Text item=Genre
|
||||
Text item=TrackNumber
|
||||
Text item=TrackDuration
|
||||
Text item=TrackPosition
|
||||
Slider item=RelTrackPosition
|
||||
|
||||
Text item=Renderer
|
||||
Text item=CurrentId
|
||||
Text item=Browse
|
||||
Selection item=Renderer
|
||||
Text item=CurrentTitle
|
||||
Selection item=Browse
|
||||
Text item=Search
|
||||
Selection item=PlaylistSelect
|
||||
Text item=Playlist
|
||||
Switch item=PlaylistAction
|
||||
```
|
||||
|
||||
Audio sink usage examples in rules:
|
||||
|
@ -176,4 +425,6 @@ Audio sink usage examples in rules:
|
|||
```
|
||||
playSound(“doorbell.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="imageUrl" typeId="imageUrl"/>
|
||||
<channel id="hlsUrl" typeId="hlsUrl"/>
|
||||
<channel id="enablePrivacyMode" typeId="enablePrivacyMode"/>
|
||||
</channels>
|
||||
<config-description>
|
||||
|
||||
|
@ -934,6 +935,7 @@
|
|||
<channel id="rtspUrl" typeId="rtspUrl"/>
|
||||
<channel id="imageUrl" typeId="imageUrl"/>
|
||||
<channel id="hlsUrl" typeId="hlsUrl"/>
|
||||
<channel id="enablePrivacyMode" typeId="enablePrivacyMode"/>
|
||||
</channels>
|
||||
<config-description>
|
||||
|
||||
|
@ -2663,6 +2665,12 @@
|
|||
<category>Light</category>
|
||||
</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">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Auto LED</label>
|
||||
|
|
|
@ -111,6 +111,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Eyecare Mode On/Off</label>
|
||||
</channel-type>
|
||||
<channel-type id="clean">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Cleaning On/Off</label>
|
||||
</channel-type>
|
||||
<channel-type id="mode">
|
||||
<item-type>String</item-type>
|
||||
<label>Mode</label>
|
||||
|
@ -220,7 +224,7 @@
|
|||
<channel-type id="humidity">
|
||||
<item-type>Number</item-type>
|
||||
<label>Humidity</label>
|
||||
<state pattern="%.1f" readOnly="true"/>
|
||||
<state pattern="%.1f %%" readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="pm25">
|
||||
<item-type>Number</item-type>
|
||||
|
@ -266,14 +270,19 @@
|
|||
<state pattern="%.0f" readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="usedhours">
|
||||
<item-type>Number</item-type>
|
||||
<item-type>Number:Time</item-type>
|
||||
<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 id="motorspeed">
|
||||
<item-type>Number</item-type>
|
||||
<label>Motor Speed</label>
|
||||
<state pattern="%.0f" readOnly="true"/>
|
||||
<state pattern="%.0f rpm" readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="filterlive">
|
||||
<item-type>Number</item-type>
|
||||
|
@ -304,6 +313,11 @@
|
|||
<item-type>Number</item-type>
|
||||
<label>Trans Level</label>
|
||||
</channel-type>
|
||||
<channel-type id="waterlevel">
|
||||
<item-type>Number</item-type>
|
||||
<label>Water Level</label>
|
||||
<state pattern="%.0f %%"/>
|
||||
</channel-type>
|
||||
<channel-type id="dry">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Dry</label>
|
||||
|
@ -748,4 +762,57 @@
|
|||
</options>
|
||||
</state>
|
||||
</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>
|
||||
|
|
|
@ -190,6 +190,13 @@
|
|||
<state readOnly="true"/>
|
||||
</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">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Open/Close</label>
|
||||
|
@ -301,8 +308,17 @@
|
|||
<channel-type id="derogation_heating_mode">
|
||||
<item-type>String</item-type>
|
||||
<label>Derogation Heating Mode</label>
|
||||
<description>Derogation heating mode of the Somfy thermostat</description>
|
||||
<state readOnly="true"/>
|
||||
<description>Derogation heating mode of the Somfy thermostat/valve</description>
|
||||
<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 id="derogation_activation">
|
||||
|
@ -352,4 +368,25 @@
|
|||
<description>The level of the heating</description>
|
||||
<state max="100" min="0" step="1" pattern="%d %%"/>
|
||||
</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>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<channels>
|
||||
<channel id="gate_state" typeId="gate_state"></channel>
|
||||
<channel id="gate_command" typeId="gate_command"></channel>
|
||||
<channel id="gate_position" typeId="gate_position"></channel>
|
||||
</channels>
|
||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||
</thing-type>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="bridge"/>
|
||||
</supported-bridge-type-refs>
|
||||
<label>Somfy Heating System</label>
|
||||
<label>Z-Wave Heating System</label>
|
||||
<channels>
|
||||
<channel id="current_temperature" typeId="current_temperature"></channel>
|
||||
<channel id="current_state" typeId="current_state"></channel>
|
||||
|
|
|
@ -10,11 +10,12 @@
|
|||
</supported-bridge-type-refs>
|
||||
<label>Somfy Thermostat</label>
|
||||
<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="heating_mode" typeId="heating_mode"></channel>
|
||||
<channel id="derogation_heating_mode" typeId="derogation_heating_mode"></channel>
|
||||
<channel id="derogation_activation" typeId="derogation_activation"></channel>
|
||||
<channel id="derogated_target_temperature" typeId="target_temperature"></channel>
|
||||
</channels>
|
||||
<config-description-ref uri="thing-type:somfytahoma:device"/>
|
||||
</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>
|
||||
<advanced>true</advanced>
|
||||
</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">
|
||||
<label>WAN Block IPs</label>
|
||||
<description>List of IPs that can be blocked for WAN access.</description>
|
||||
|
|
|
@ -11,8 +11,21 @@
|
|||
<channels>
|
||||
<channel id="volume" typeId="system.volume"/>
|
||||
<channel id="mute" typeId="system.mute"/>
|
||||
|
||||
<channel id="control" typeId="system.media-control"/>
|
||||
<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="album" typeId="album"/>
|
||||
<channel id="albumart" typeId="albumart"/>
|
||||
|
@ -23,52 +36,163 @@
|
|||
<channel id="tracknumber" typeId="tracknumber"/>
|
||||
<channel id="trackduration" typeId="trackduration"/>
|
||||
<channel id="trackposition" typeId="trackposition"/>
|
||||
<channel id="reltrackposition" typeId="reltrackposition"/>
|
||||
</channels>
|
||||
<representation-property>udn</representation-property>
|
||||
<config-description>
|
||||
<parameter name="udn" type="text" required="true">
|
||||
<label>Unique Device Name</label>
|
||||
<description>The UDN identifies the UPnP Renderer</description>
|
||||
</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>
|
||||
|
||||
</thing-type>
|
||||
|
||||
<thing-type id="upnpserver">
|
||||
<label>UPnPServer</label>
|
||||
<description>UPnP AV Server</description>
|
||||
<channels>
|
||||
<channel id="upnprenderer" typeId="upnprenderer"/>
|
||||
<channel id="currentid" typeId="currentid"/>
|
||||
<channel id="currenttitle" typeId="system.media-title"/>
|
||||
<channel id="browse" typeId="browse"/>
|
||||
<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>
|
||||
<representation-property>udn</representation-property>
|
||||
<config-description>
|
||||
<parameter name="udn" type="text" required="true">
|
||||
<label>Unique Device Name</label>
|
||||
<description>The UDN identifies the UPnP Media Server</description>
|
||||
</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>
|
||||
<description>Only list content which is playable on the selected renderer</description>
|
||||
<default>false</default>
|
||||
<advanced>false</advanced>
|
||||
</parameter>
|
||||
<parameter name="sortcriteria" type="text" required="false">
|
||||
<parameter name="sortCriteria" type="text">
|
||||
<label>Sort Criteria</label>
|
||||
<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 will depend on the media server</description>
|
||||
<default>+dc:title</default>
|
||||
</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>
|
||||
</thing-type>
|
||||
|
||||
<!-- 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">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Stop</label>
|
||||
<description>Stop the player</description>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</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">
|
||||
<item-type>String</item-type>
|
||||
<label>Album</label>
|
||||
|
@ -115,7 +239,13 @@
|
|||
<item-type>Number:Time</item-type>
|
||||
<label>Track Position</label>
|
||||
<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 id="upnprenderer">
|
||||
|
@ -123,15 +253,10 @@
|
|||
<label>Renderer</label>
|
||||
<description>Select AV renderer</description>
|
||||
</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">
|
||||
<item-type>String</item-type>
|
||||
<label>Browse Selection</label>
|
||||
<description>Browse selection for playing</description>
|
||||
<label>Current Media Id</label>
|
||||
<description>Current id of media entry or container, option list to browse hierarchy</description>
|
||||
</channel-type>
|
||||
<channel-type id="search">
|
||||
<item-type>String</item-type>
|
||||
|
@ -140,4 +265,29 @@
|
|||
Examples: dc:title contains "song", dc:creator contains "SpringSteen", unp:class = "object.item.audioItem",
|
||||
upnp:album contains "Born in"</description>
|
||||
</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>
|
||||
|
|
Loading…
Reference in New Issue