added migrated 2.x add-ons
Signed-off-by: Kai Kreuzer <kai@openhab.org>
This commit is contained in:
409
bundles/org.openhab.binding.enigma2/README.md
Normal file
409
bundles/org.openhab.binding.enigma2/README.md
Normal file
@@ -0,0 +1,409 @@
|
||||
# Enigma2 Binding
|
||||
|
||||
The binding integrates Enigma2 devices.
|
||||
|
||||
## Supported Things
|
||||
|
||||
### Enigma2 devices
|
||||
|
||||
Enigma2 based set-top boxes with an installed OpenWebIf are supported.
|
||||
|
||||
#### Device Settings
|
||||
|
||||
The Device must be connected to the same network as openHAB.
|
||||
|
||||
## Discovery
|
||||
|
||||
Devices are auto discovered through HTTP in the local network.
|
||||
|
||||
If automatic discovery is not possible you may still manually configure a device based on the hostname.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
Enigma2 has the following configuration parameters:
|
||||
|
||||
| Name | Description | Mandatory |
|
||||
|-----------------|----------------------------------------------------|-----------|
|
||||
| host | Hostname or IP address of the Enigma2 device | yes |
|
||||
| refreshInterval | The refresh interval in seconds | yes |
|
||||
| timeout | The timeout for reading from the device in seconds | yes |
|
||||
| user | Optional: The Username of the Enigma2 Web API | no |
|
||||
| password | Optional: The Password of the Enigma2 Web API | no |
|
||||
|
||||
### Configuration in .things file
|
||||
|
||||
Set the parameters as in the following example:
|
||||
|
||||
```
|
||||
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5", timeout="5", user="usename" , password="***"]
|
||||
```
|
||||
|
||||
## Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description | Read/Write |
|
||||
|-----------------|-----------|----------------------------------------------------------------------------------------------|------------|
|
||||
| power | Switch | Current power setting. | RW |
|
||||
| mute | Switch | Current mute setting. | RW |
|
||||
| volume | Dimmer | Current volume setting. | RW |
|
||||
| channel | String | Current channel. Use only the channel text as command to update the channel. | RW |
|
||||
| title | String | Current program title of the current channel. | R |
|
||||
| description | String | Current program description of the current channel. | R |
|
||||
| mediaPlayer | Player | Media control player. | RW |
|
||||
| mediaStop | Switch | Media control stop. | RW |
|
||||
| answer | String | Receives an answer to a send question of the device. | R |
|
||||
|
||||
## Example
|
||||
|
||||
demo.things:
|
||||
|
||||
```
|
||||
Thing enigma2:device:192_168_0_3 [host="192.168.1.3", refreshInterval="5"]
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
||||
```
|
||||
Switch Enigma2_Power "Power: [%s]" <switch> { channel="enigma2:device:192_168_0_3:power" }
|
||||
Dimmer Enigma2_Volume "Volume: [%d %%]" <soundvolume> { channel="enigma2:device:192_168_0_3:volume" }
|
||||
Switch Enigma2_Mute "Mute: [%s]" <soundvolume_mute> { channel="enigma2:device:192_168_0_3:mute" }
|
||||
Switch Enigma2_Stop "Stop: [%s]" <mediacontrol> { channel="enigma2:device:192_168_0_3:mediaStop", autoupdate="false" }
|
||||
Player Enigma2_PlayerControl "Mode: [%s]" <mediacontrol> { channel="enigma2:device:192_168_0_3:mediaPlayer" }
|
||||
String Enigma2_Channel "Channel: [%s]" <receiver> { channel="enigma2:device:192_168_0_3:channel" }
|
||||
String Enigma2_Title "Title: [%s]" <receiver> { channel="enigma2:device:192_168_0_3:title" }
|
||||
String Enigma2_Description "Description: [%s]" <receiver> { channel="enigma2:device:192_168_0_3:description" }
|
||||
String Enigma2_Answer "Answer: [%s]" <text> { channel="enigma2:device:192_168_0_3:answer" }
|
||||
String Enigma2_RemoteKeys "[]" <receiver> { autoupdate="false" }
|
||||
String Enigma2_SendError "Error" <text> { autoupdate="false" }
|
||||
String Enigma2_SendWarning "Warning" <text> { autoupdate="false" }
|
||||
String Enigma2_SendInfo "Info" <text> { autoupdate="false" }
|
||||
```
|
||||
|
||||
demo.sitemap:
|
||||
|
||||
```
|
||||
sitemap demo label="Enigma2 Demo"
|
||||
{
|
||||
Frame label="Enigma2" {
|
||||
Switch item=Enigma2_Power
|
||||
Slider item=Enigma2_Volume step=5 minValue=0 maxValue=100
|
||||
Setpoint item=Enigma2_Volume step=5 minValue=0 maxValue=100
|
||||
Switch item=Enigma2_Mute
|
||||
Default item=Enigma2_PlayerControl
|
||||
Switch item=Enigma2_Stop mappings=[ON="Stop"]
|
||||
Text item=Enigma2_Channel
|
||||
Text item=Enigma2_Title
|
||||
Text item=Enigma2_Description
|
||||
}
|
||||
Frame label="Enigma2 Remote" {
|
||||
Switch item=Enigma2_RemoteKeys mappings=[POWER="POWER"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[TEXT="[=]", SUBTITLE="[_]", MUTE="MUTE"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[KEY_1="1", KEY_2="2", KEY_3="3"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[KEY_4="4", KEY_5="5", KEY_6="6"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[KEY_7="7", KEY_8="8", KEY_9="9"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[ARROW_LEFT="<", KEY_0="0", ARROW_RIGHT=">"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[RED="R", GREEN="G", YELLOW="Y", BLUE="B"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[UP="Up"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[LEFT="Left", OK="Ok", RIGHT="Right"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[DOWN="Down"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[VOLUME_UP="+", EXIT="Exit", CHANNEL_UP="+"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[VOLUME_DOWN="-", EPG="Epg", CHANNEL_DOWN="-"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[MENU="Menu", VIDEO="[=R]", AUDIO="Audio", HELP="Help"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[FAST_BACKWARD="<<", PLAY=">", PAUSE="||", FAST_FORWARD=">>"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[TV="TV", RECORD="O", STOP="[]", RADIO="Radio"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[INFO="INFO"]
|
||||
}
|
||||
Frame label="Enigma2 Messages" {
|
||||
Switch item=Enigma2_SendError mappings=[SEND="SEND"]
|
||||
Switch item=Enigma2_SendWarning mappings=[SEND="SEND"]
|
||||
Switch item=Enigma2_SendInfo mappings=[SEND="SEND"]
|
||||
Switch item=Enigma2_SendQuestion mappings=[SEND="SEND"]
|
||||
Text item=Enigma2_Answer
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
demo.rules:
|
||||
|
||||
```
|
||||
rule "Enigma2_KeyS"
|
||||
when Item Enigma2_RemoteKeys received command
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
actions.sendRcCommand(receivedCommand.toString)
|
||||
end
|
||||
|
||||
rule "Enigma2_SendError"
|
||||
when Item Enigma2_SendError received command
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
actions.sendError(receivedCommand.toString, 10)
|
||||
end
|
||||
|
||||
rule "Enigma2_SendWarning"
|
||||
when Item Enigma2_SendWarning received command
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
actions.sendWarning(receivedCommand.toString, 10)
|
||||
end
|
||||
|
||||
rule "Enigma2_SendInfo"
|
||||
when Item Enigma2_SendInfo received command
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
actions.sendInfo(receivedCommand.toString, 10)
|
||||
end
|
||||
|
||||
rule "Enigma2_SendQuestion"
|
||||
when Item Enigma2_SendQuestion received command
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
actions.sendQuestion(receivedCommand.toString, 10)
|
||||
end
|
||||
|
||||
rule "Enigma2_Answer"
|
||||
when Item Enigma2_Answer received update
|
||||
then
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
logInfo("actions", "Answer is " + Enigma2_Answer.state)
|
||||
end
|
||||
```
|
||||
|
||||
## Rule Actions
|
||||
|
||||
Multiple actions are supported by this binding. In classic rules these are accessible as shown in this example (adjust getActions with your ThingId):
|
||||
|
||||
Example
|
||||
|
||||
```
|
||||
val actions = getActions("enigma2","enigma2:device:192_168_0_3")
|
||||
if(null === actions) {
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
```
|
||||
|
||||
### sendInfo(text)
|
||||
|
||||
Sends an info message to the device with will be shown on the TV screen for 30 seconds.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendInfo("Hello World")
|
||||
```
|
||||
|
||||
### sendInfo(text, timeout)
|
||||
|
||||
Sends an info message to the device with will be shown on the TV screen.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
| timeout | The timeout in seconds |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendInfo("Hello World", 10)
|
||||
```
|
||||
|
||||
### sendWarning(text)
|
||||
|
||||
Sends a warning message to the device with will be shown on the TV screen for 30 seconds.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendWarning("Hello World")
|
||||
```
|
||||
|
||||
### sendWarning(text, timeout)
|
||||
|
||||
Sends a warning message to the device with will be shown on the TV screen.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
| timeout | The timeout in seconds |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendWarning("Hello World", 10)
|
||||
```
|
||||
|
||||
### sendError(text)
|
||||
|
||||
Sends an error message to the device with will be shown on the TV screen for 30 seconds.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendError("Hello World")
|
||||
```
|
||||
|
||||
### sendError(text, timeout)
|
||||
|
||||
Sends an error message to the device with will be shown on the TV screen.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
| timeout | The timeout in seconds |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendError("Hello World", 10)
|
||||
```
|
||||
|
||||
### sendQuestion(text)
|
||||
|
||||
Sends a question message to the device with will be shown on the TV screen for 30 seconds.
|
||||
The answer is provided to the "answer"-channel.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendQuestion("Say hello?")
|
||||
```
|
||||
|
||||
### sendQuestion(text, timeout)
|
||||
|
||||
Sends an question message to the device with will be shown on the TV screen.
|
||||
The answer is provided to the "answer"-channel.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|----------------------------------------------------------------------|
|
||||
| text | The text to display |
|
||||
| timeout | The timeout in seconds |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendQuestion("Say hello?", 10)
|
||||
```
|
||||
|
||||
### sendRcCommand(button)
|
||||
|
||||
Sends a button press event to the device.
|
||||
|
||||
Parameters:
|
||||
|
||||
| Name | Description |
|
||||
|---------|------------------------------------------------------------------------|
|
||||
| button | see the supported buttons in chapter 'Remote Control Buttons' |
|
||||
|
||||
|
||||
The button parameter has only been tested on a Vu+Solo2 and this is a list of button codes that are known to work with this device.
|
||||
|
||||
| Code String |
|
||||
|---------------|
|
||||
| POWER |
|
||||
| KEY_0 |
|
||||
| KEY_1 |
|
||||
| KEY_2 |
|
||||
| KEY_3 |
|
||||
| KEY_4 |
|
||||
| KEY_5 |
|
||||
| KEY_6 |
|
||||
| KEY_7 |
|
||||
| KEY_8 |
|
||||
| KEY_9 |
|
||||
| ARROW_LEFT |
|
||||
| ARROW_RIGHT |
|
||||
| VOLUME_DOWN |
|
||||
| VOLUME_UP |
|
||||
| MUTE |
|
||||
| CHANNEL_UP |
|
||||
| CHANNEL_DOWN |
|
||||
| LEFT |
|
||||
| RIGHT |
|
||||
| UP |
|
||||
| DOWN |
|
||||
| OK |
|
||||
| EXIT |
|
||||
| RED |
|
||||
| GREEN |
|
||||
| YELLOW |
|
||||
| BLUE |
|
||||
| PLAY |
|
||||
| PAUSE |
|
||||
| STOP |
|
||||
| RECORD |
|
||||
| FAST_FORWARD |
|
||||
| FAST_BACKWARD |
|
||||
| TV |
|
||||
| RADIO |
|
||||
| AUDIO |
|
||||
| VIDEO |
|
||||
| TEXT |
|
||||
| INFO |
|
||||
| MENU |
|
||||
| HELP |
|
||||
| SUBTITLE |
|
||||
| EPG |
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
actions.sendRcCommand("KEY_1")
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user