parent
5597733082
commit
2defd2204f
|
@ -3,7 +3,7 @@ id: ciscospark
|
|||
label: Cisco Spark
|
||||
title: Cisco Spark - Actions
|
||||
type: action
|
||||
description: "Cisco Spark can be used to message individuals are _rooms_ when certain events take place in openHAB."
|
||||
description: "Cisco Spark can be used to message individuals are *rooms* when certain events take place in openHAB."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/action/org.openhab.action.ciscospark/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
|
@ -16,12 +16,15 @@ install: manual
|
|||
# Cisco Spark Action
|
||||
|
||||
|
||||
Cisco Spark can be used to message individuals are _rooms_ when certain events take place in openHAB.
|
||||
Cisco Spark can be used to message individuals are *rooms* when certain events take place in openHAB.
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration is very easy and only required an access token. To obtain this token, first log in to [Spark for Developers](https://developer.ciscospark.com/add-app.html) and add a new App. Make sure to select 'Create a Bot' and fill in the required fields. Once completed, you will be presented with an access token.
|
||||
Configuration is very easy and only required an access token.
|
||||
To obtain this token, first log in to [Spark for Developers](https://developer.ciscospark.com/add-app.html) and add a new App.
|
||||
Make sure to select 'Create a Bot' and fill in the required fields.
|
||||
Once completed, you will be presented with an access token.
|
||||
|
||||
Next, configure openHAB with the access token by adding following line to the file `services/ciscospark.cfg`:
|
||||
|
||||
|
@ -31,14 +34,16 @@ There's an optional convenience configuration option that allows you to set a de
|
|||
|
||||
defaultRoomId= << UUID of the default room >>
|
||||
|
||||
Note: you can find the uuids for rooms when using the [web client for Cisco Spark](https://web.ciscospark.com). When you navigate to a room, the uuid can be copied from the browsers location bar. The uuid looks like this:
|
||||
`24c617f0-fbe4-11e5-be0f-2fe93bbeddd9`
|
||||
Note: you can find the uuids for rooms when using the [web client for Cisco Spark](https://web.ciscospark.com).
|
||||
When you navigate to a room, the uuid can be copied from the browsers location bar.
|
||||
The uuid looks like this:
|
||||
`24c617f0-fbe4-11e5-be0f-2fe93bbeddd9`
|
||||
|
||||
## Actions
|
||||
|
||||
Send a message to a specific room
|
||||
|
||||
sparkMessage('message', 'roomId')
|
||||
sparkMessage('message', 'roomId')
|
||||
|
||||
Send a message to the default room (from config)
|
||||
|
||||
|
@ -47,4 +52,3 @@ Send a message to the default room (from config)
|
|||
Send a direct message to a person
|
||||
|
||||
sparkPerson('message', 'personEmail')
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ id: dscalarm
|
|||
label: DSC Alarm
|
||||
title: DSC Alarm - Actions
|
||||
type: action
|
||||
description: "This bundle exposes openHAB rule extensions to be used with the DSC Alarm Binding (1.x binding). It allows the sending of DSC Alarm specific commands from within rules."
|
||||
description: "This bundle exposes openHAB rule extensions to be used with the DSC Alarm Binding (1.x binding)."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/action/org.openhab.action.dscalarm/README.md
|
||||
since: 1x
|
||||
logo: images/addons/dscalarm.png
|
||||
|
@ -16,7 +16,8 @@ install: manual
|
|||
|
||||
# DSC Alarm Actions
|
||||
|
||||
This bundle exposes openHAB rule extensions to be used with the DSC Alarm Binding (1.x binding). It allows the sending of DSC Alarm specific commands from within rules.
|
||||
This bundle exposes openHAB rule extensions to be used with the DSC Alarm Binding (1.x binding).
|
||||
It allows the sending of DSC Alarm specific commands from within rules.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
@ -24,34 +25,35 @@ The DSC Alarm Action bundle relies on the DSC Alarm Binding (1.x) being installe
|
|||
|
||||
## Actions
|
||||
|
||||
* `sendDSCAlarmCommand(String command)` - sends a DSC Alarm command.
|
||||
* `sendDSCAlarmCommand(String command, String data)` - same as above but with command specific required data.
|
||||
* `sendDSCAlarmCommand(String command)` - sends a DSC Alarm command
|
||||
* `sendDSCAlarmCommand(String command, String data)` - same as above but with command specific required data
|
||||
|
||||
The `command` parameter is a string numeric code. The following table shows which commands are supported:
|
||||
The `command` parameter is a string numeric code.
|
||||
The following table shows which commands are supported:
|
||||
|
||||
| DSC Alarm Command Code | Description | Data | Supported Interface |
|
||||
|------------------------|-------------|------|---------------------|
|
||||
| `000` | Poll | NONE | Envisalink, IT100 |
|
||||
| `001` | Status Report | NONE | Envisalink, IT100 |
|
||||
| `002` | Labels Request | NONE | IT100 |
|
||||
| `005` | Network Login | 1-6 Character - [Password] | Envisalink |
|
||||
| `008` | Dump Zone Timers | NONE | Envisalink |
|
||||
| `010` | Set Time and Date | NONE | Envisalink, IT100 |
|
||||
| `020` | Command Output Control | 2 Characters - [Partition # (1-8)][PGM # (1-4)] | Envisalink, IT100 |
|
||||
| `030` | Partition Arm Control - Away | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `031` | Partition Arm Control - Stay | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `032` | Partition Arm Control - No Entry Delay | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `033` | Partition Arm Control - With User Code | 5-7 Characters - [Partition # (1-8)][User Code (4-6)] | Envisalink, IT100 |
|
||||
| `040` | Partition Disarm Control - With User Code | 5-7 Characters - [Partition # (1-8)][User Code (4-6)] | Envisalink, IT100 |
|
||||
| `055` | Time Stamp Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `056` | Time/Date Broadcast Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `057` | Temperature Broadcast Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `058` | Virtual Keypad Control | 1 Character - [On/Off (1,0)] | IT100 |
|
||||
| `060` | Trigger Panic Alarm | 1 Character - [1=Fire, 2=Ambulance, 3=Police] | Envisalink, IT100 |
|
||||
| `070` | Single Keystroke | 1 Character - [Single ASCII Character] | Envisalink, IT100 |
|
||||
| `071` | Keystroke String | 1-6 Characters - [1-6 ASCII Character String] | Envisalink |
|
||||
| `074` | Keep Alive | 1 Character - [Partition # (1-8)] | Envisalink |
|
||||
| `200` | Code Send | 4-6 Characters - [User Code (4-6)] | Envisalink, IT100 |
|
||||
| DSC Alarm Command Code | Description | Data | Supported Interface |
|
||||
|------------------------|-------------------------------------------|-------------------------------------------------------|---------------------|
|
||||
| `000` | Poll | NONE | Envisalink, IT100 |
|
||||
| `001` | Status Report | NONE | Envisalink, IT100 |
|
||||
| `002` | Labels Request | NONE | IT100 |
|
||||
| `005` | Network Login | 1-6 Character - [Password] | Envisalink |
|
||||
| `008` | Dump Zone Timers | NONE | Envisalink |
|
||||
| `010` | Set Time and Date | NONE | Envisalink, IT100 |
|
||||
| `020` | Command Output Control | 2 Characters - [Partition # (1-8)][PGM # (1-4)] | Envisalink, IT100 |
|
||||
| `030` | Partition Arm Control - Away | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `031` | Partition Arm Control - Stay | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `032` | Partition Arm Control - No Entry Delay | 1 Character - [Partition # (1-8)] | Envisalink, IT100 |
|
||||
| `033` | Partition Arm Control - With User Code | 5-7 Characters - [Partition # (1-8)][User Code (4-6)] | Envisalink, IT100 |
|
||||
| `040` | Partition Disarm Control - With User Code | 5-7 Characters - [Partition # (1-8)][User Code (4-6)] | Envisalink, IT100 |
|
||||
| `055` | Time Stamp Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `056` | Time/Date Broadcast Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `057` | Temperature Broadcast Control | 1 Character - [On/Off (1,0)] | Envisalink, IT100 |
|
||||
| `058` | Virtual Keypad Control | 1 Character - [On/Off (1,0)] | IT100 |
|
||||
| `060` | Trigger Panic Alarm | 1 Character - [1=Fire, 2=Ambulance, 3=Police] | Envisalink, IT100 |
|
||||
| `070` | Single Keystroke | 1 Character - [Single ASCII Character] | Envisalink, IT100 |
|
||||
| `071` | Keystroke String | 1-6 Characters - [1-6 ASCII Character String] | Envisalink |
|
||||
| `074` | Keep Alive | 1 Character - [Partition # (1-8)] | Envisalink |
|
||||
| `200` | Code Send | 4-6 Characters - [User Code (4-6)] | Envisalink, IT100 |
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -67,7 +69,7 @@ The following rule will trigger whenever the switch is turned ON:
|
|||
|
||||
```
|
||||
rule "PollCommand"
|
||||
when
|
||||
when
|
||||
Item PollCommand received command ON
|
||||
then
|
||||
sendDSCAlarmCommand("000")
|
||||
|
@ -84,7 +86,7 @@ This rule triggers when the switch is turned ON:
|
|||
|
||||
```
|
||||
rule "BypassZone1"
|
||||
when
|
||||
when
|
||||
Item BypassZone1 received command ON
|
||||
then
|
||||
sendDSCAlarmCommand("071","*101#")
|
||||
|
|
|
@ -20,21 +20,22 @@ The Ecobee Action bundle provides actions such as setting and clearing program h
|
|||
|
||||
## Prerequisites
|
||||
|
||||
The Ecboee Action bundle requires that the Ecobee Binding (1.x) is also installed. Read the [Ecobee function API documentation](https://www.ecobee.com/home/developer/api/documentation/v1/functions/using-functions.shtml) to be sure you know the rules for calling these actions.
|
||||
The Ecboee Action bundle requires that the Ecobee Binding (1.x) is also installed.
|
||||
Read the [Ecobee function API documentation](https://www.ecobee.com/home/developer/api/documentation/v1/functions/using-functions.shtml) to be sure you know the rules for calling these actions.
|
||||
|
||||
## Actions
|
||||
|
||||
* ecobeeAcknowledge(String selection, String thermostatIdentifier, String ackRef, String ackType, _Boolean remindMeLater_) - Acknowledge an alert.
|
||||
* ecobeeControlPlug(String selection, String plugName, String plugState, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Control the on/off state of a plug by setting a hold on the plug.
|
||||
* ecobeeCreateVacation(String selection, String name, Number coolHoldTemp, Number heatHoldTemp, _Date startDateTime_, _Date endDateTime_, _String fan_, _Number fanMinOnTime_) - Create a vacation event on the thermostat.
|
||||
* ecobeeDeleteVacation(String selection, String name) - Delete a vacation event from a thermostat.
|
||||
* ecobeeResetPreferences(String selection) - Set all user configurable settings back to the factory default values.
|
||||
* ecobeeResumeProgram(String selection, _Boolean resumeAll_) - Remove the currently running event providing the event is not a mandatory demand response event.
|
||||
* ecobeeSendMessage(String selection, String text) - Send an alert message to the thermostat.
|
||||
* ecobeeSetHold(String selection, _Number coolHoldTemp_, _Number heatHoldTemp_, _String holdClimateRef_, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Set the thermostat into a hold with the specified temperature.
|
||||
* ecobeeSetHold(String selection, `Map<String, Object>` params, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Set the thermostat into a hold with the specified event params.
|
||||
* ecobeeSetOccupied(String selection, Boolean occupied, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Switches a (EMS model only) thermostat from occupied mode to unoccupied, or vice versa.
|
||||
* ecobeeUpdateSensor(String selection, String name, String deviceId, String sensorId) - Update the name of an ecobee3 remote sensor.
|
||||
* ecobeeAcknowledge(String selection, String thermostatIdentifier, String ackRef, String ackType, _Boolean remindMeLater_) - Acknowledge an alert.
|
||||
* ecobeeControlPlug(String selection, String plugName, String plugState, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Control the on/off state of a plug by setting a hold on the plug.
|
||||
* ecobeeCreateVacation(String selection, String name, Number coolHoldTemp, Number heatHoldTemp, _Date startDateTime_, _Date endDateTime_, _String fan_, _Number fanMinOnTime_) - Create a vacation event on the thermostat.
|
||||
* ecobeeDeleteVacation(String selection, String name) - Delete a vacation event from a thermostat.
|
||||
* ecobeeResetPreferences(String selection) - Set all user configurable settings back to the factory default values.
|
||||
* ecobeeResumeProgram(String selection, _Boolean resumeAll_) - Remove the currently running event providing the event is not a mandatory demand response event.
|
||||
* ecobeeSendMessage(String selection, String text) - Send an alert message to the thermostat.
|
||||
* ecobeeSetHold(String selection, _Number coolHoldTemp_, _Number heatHoldTemp_, _String holdClimateRef_, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Set the thermostat into a hold with the specified temperature.
|
||||
* ecobeeSetHold(String selection, `Map<String, Object>` params, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Set the thermostat into a hold with the specified event params.
|
||||
* ecobeeSetOccupied(String selection, Boolean occupied, _Date startDateTime_, _Date endDateTime_, _String holdType_, _Number holdHours_) - Switches a (EMS model only) thermostat from occupied mode to unoccupied, or vice versa.
|
||||
* ecobeeUpdateSensor(String selection, String name, String deviceId, String sensorId) - Update the name of an ecobee3 remote sensor.
|
||||
|
||||
Parameters in _italics_ are optional, in which case each unused parameter must be replaced with `null`.
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ id: harmonyhub
|
|||
label: Logitech Harmony Hub
|
||||
title: Logitech Harmony Hub - Actions
|
||||
type: action
|
||||
description: "* `harmonyPressButton(<device>, <command>)`"
|
||||
description: "* `harmonyPressButton(<device>, <command>)`"
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/action/org.openhab.action.harmonyhub/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
|
@ -17,11 +17,10 @@ install: manual
|
|||
|
||||
## Actions
|
||||
|
||||
* `harmonyPressButton(<device>, <command>)`
|
||||
* `harmonyPressButton(<qualifier>, <device>, <command>)`
|
||||
* `harmonyStartActivity(<activity>)`
|
||||
* `harmonyStartActivity(<qualifier>,<activity>)`
|
||||
|
||||
* `harmonyPressButton(<device>, <command>)`
|
||||
* `harmonyPressButton(<qualifier>, <device>, <command>)`
|
||||
* `harmonyStartActivity(<activity>)`
|
||||
* `harmonyStartActivity(<qualifier>,<activity>)`
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -17,27 +17,29 @@ install: manual
|
|||
# Homematic Action
|
||||
|
||||
The Homematic action lets you send messages to a Homematic remote control with a display, currently the HM-RC-19-B (Radio remote control 19 button).
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
The Homematic Binding (1.x) must be installed and configured.
|
||||
|
||||
## Actions
|
||||
|
||||
* `sendHomematicDisplay(REMOTE_CONTROL_ADDRESS, TEXT)`
|
||||
* `sendHomematicDisplay(REMOTE_CONTROL_ADDRESS, TEXT, OPTIONS)`
|
||||
* `sendHomematicDisplay(REMOTE_CONTROL_ADDRESS, TEXT)`
|
||||
* `sendHomematicDisplay(REMOTE_CONTROL_ADDRESS, TEXT, OPTIONS)`
|
||||
|
||||
The remote control display is limited to five characters; a longer text is truncated.
|
||||
|
||||
|
||||
You have several additional options to control the display.
|
||||
|
||||
* `BEEP` _(TONE1, TONE2, TONE3)_ - let the remote control beep
|
||||
* `BACKLIGHT` _(BACKLIGHT_ON, BLINK_SLOW, BLINK_FAST)_ - control the display backlight
|
||||
* `UNIT` _(PERCENT, WATT, CELSIUS, FAHRENHEIT)_ - display one of these units
|
||||
* `SYMBOL` _(BULB, SWITCH, WINDOW, DOOR, BLIND, SCENE, PHONE, BELL, CLOCK, ARROW_UP, ARROW_DOWN)_ - display symbols, multiple symbols possible
|
||||
|
||||
You can combine any option, they must be separated by a comma. If you specify more than one option for BEEP, BACKLIGHT and UNIT, only the first one is taken into account and all others are ignored. For SYMBOL you can specify multiple options.
|
||||
|
||||
* `BEEP` _(TONE1, TONE2, TONE3)_ - let the remote control beep
|
||||
* `BACKLIGHT` _(BACKLIGHT_ON, BLINK_SLOW, BLINK_FAST)_ - control the display backlight
|
||||
* `UNIT` _(PERCENT, WATT, CELSIUS, FAHRENHEIT)_ - display one of these units
|
||||
* `SYMBOL` _(BULB, SWITCH, WINDOW, DOOR, BLIND, SCENE, PHONE, BELL, CLOCK, ARROW_UP, ARROW_DOWN)_ - display symbols, multiple symbols possible
|
||||
|
||||
You can combine any option, they must be separated by a comma.
|
||||
If you specify more than one option for BEEP, BACKLIGHT and UNIT, only the first one is taken into account and all others are ignored.
|
||||
For SYMBOL you can specify multiple options.
|
||||
|
||||
## Examples
|
||||
|
||||
Show message TEST:
|
||||
|
@ -51,19 +53,19 @@ Show message TEXT, beep once and turn backlight on:
|
|||
```
|
||||
sendHomematicDisplay("KEQ0012345", "TEXT", "TONE1, BACKLIGHT_ON");
|
||||
```
|
||||
|
||||
|
||||
Show message 15, beep once, turn backlight on and shows the Celsius unit:
|
||||
|
||||
```
|
||||
sendHomematicDisplay("KEQ0012345", "15", "TONE1, BACKLIGHT_ON, CELSIUS");
|
||||
```
|
||||
|
||||
|
||||
Show message ALARM, beep three times, let the backlight blink fast and shows a bell symbol:
|
||||
|
||||
```
|
||||
sendHomematicDisplay("KEQ0012345", "ALARM", "TONE3, BLINK_FAST, BELL");
|
||||
```
|
||||
|
||||
|
||||
Duplicate options (TONE3 is ignored, because TONE1 is specified previously):
|
||||
|
||||
```
|
||||
|
|
|
@ -3,7 +3,7 @@ id: mail
|
|||
label: Mail
|
||||
title: Mail - Actions
|
||||
type: action
|
||||
description: "This add-on provides SMTP services so your rules and scripts can send e-mails. The `to` paremeter can contain a semicolon-separated list of email addresses."
|
||||
description: "This add-on provides SMTP services so your rules and scripts can send e-mails."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/action/org.openhab.action.mail/README.md
|
||||
since: 1x
|
||||
install: auto
|
||||
|
@ -15,29 +15,30 @@ install: auto
|
|||
|
||||
# Mail Actions
|
||||
|
||||
This add-on provides SMTP services so your rules and scripts can send e-mails. The `to` paremeter can contain a semicolon-separated list of email addresses.
|
||||
This add-on provides SMTP services so your rules and scripts can send e-mails.
|
||||
The `to` paremeter can contain a semicolon-separated list of email addresses.
|
||||
|
||||
## Actions
|
||||
|
||||
- `sendMail(String to, String subject, String message)`: Sends an email via SMTP.
|
||||
- `sendMail(String to, String subject, String message, String attachmentUrl)`: Sends an email with attachment via SMTP.
|
||||
- `sendMail(String to, String subject, String message, List<String> attachmentUrlList)`: Sends an email with one or more attachments via SMTP.
|
||||
- `sendMail(String to, String subject, String message)`: Sends an email via SMTP.
|
||||
- `sendMail(String to, String subject, String message, String attachmentUrl)`: Sends an email with attachment via SMTP.
|
||||
- `sendMail(String to, String subject, String message, List<String> attachmentUrlList)`: Sends an email with one or more attachments via SMTP.
|
||||
|
||||
## Configuration
|
||||
|
||||
This action service can be configured via the `services/mail.cfg` file.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| hostname | | Yes | SMTP server hostname, e.g. "smtp.gmail.com" |
|
||||
| port | 25 (resp. 587 for TLS/SSL) | No | SMTP port to use |
|
||||
| username | | if the SMTP server at `<hostname>` and `<port>` requires authentication | SMTP user name |
|
||||
| password | | if the SMTP server at `<hostname>` and `<port>` requires authentication | SMTP password |
|
||||
| from | | Yes | Email address to use for sending mails |
|
||||
| tls | false | No | `true` if STARTTLS is enabled (not required) for the connection |
|
||||
| ssl | false | No | `true` if SSL negotiation should occur on connection. Do not set both `tls` and `ssl` to `true`. |
|
||||
| popbeforesmtp | false | No | set to `true` if POP before SMTP (another authentication mechanism) should be enabled. Username and password are taken from the above configuration |
|
||||
| charset | platform default | No | Character set used to encode the message body |
|
||||
| Property | Default | Required | Description |
|
||||
|---------------|----------------------------|:-----------------------------------------------------------------------:|-----------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| hostname | | Yes | SMTP server hostname, e.g. "smtp.gmail.com" |
|
||||
| port | 25 (resp. 587 for TLS/SSL) | No | SMTP port to use |
|
||||
| username | | if the SMTP server at `<hostname>` and `<port>` requires authentication | SMTP user name |
|
||||
| password | | if the SMTP server at `<hostname>` and `<port>` requires authentication | SMTP password |
|
||||
| from | | Yes | Email address to use for sending mails |
|
||||
| tls | false | No | `true` if STARTTLS is enabled (not required) for the connection |
|
||||
| ssl | false | No | `true` if SSL negotiation should occur on connection. Do not set both `tls` and `ssl` to `true`. |
|
||||
| popbeforesmtp | false | No | set to `true` if POP before SMTP (another authentication mechanism) should be enabled. Username and password are taken from the above configuration |
|
||||
| charset | platform default | No | Character set used to encode the message body |
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@ This bundle exposes openHAB Rule extensions to be used with the MiOS Binding (1.
|
|||
|
||||
It exposes the ability to do the following things in the MiOS HA Controller from within openHAB rules]:
|
||||
|
||||
* _Device Actions_ - Asynchronously invoke MiOS Device Actions involving 0, 1 or more parameters.
|
||||
* _Scenes Invocation_ - Asynchronously invoke MiOS Scenes
|
||||
* *Device Actions* - Asynchronously invoke MiOS Device Actions involving 0, 1 or more parameters.
|
||||
* *Scenes Invocation* - Asynchronously invoke MiOS Scenes
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
@ -28,9 +28,9 @@ The MiOS Action bundle relies upon the MiOS Binding (1.x) being installed and co
|
|||
|
||||
## Actions
|
||||
|
||||
* `sendMiosAction(Item item, String action)` - requests the _parameterless_ Device Action, specified through `action`, be invoked on the MiOS Device bound to `item`.
|
||||
* `sendMiosAction(Item item, String action, List<<String,Object>> params)` - as above, but for parameterized Device Actions.
|
||||
* `sendMiosScene(Item scene)` - requests the scene associated with the `scene` parameter be invoked on the MiOS Unit.
|
||||
* `sendMiosAction(Item item, String action)` - requests the *parameterless* Device Action, specified through `action`, be invoked on the MiOS Device bound to `item`.
|
||||
* `sendMiosAction(Item item, String action, List<<String,Object>> params)` - as above, but for parameterized Device Actions.
|
||||
* `sendMiosScene(Item scene)` - requests the scene associated with the `scene` parameter be invoked on the MiOS Unit.
|
||||
|
||||
The `action` argument of the `sendMiosAction` action is a string of the form:
|
||||
|
||||
|
@ -44,23 +44,23 @@ or
|
|||
<ServiceAlias>/<ServiceAction>
|
||||
```
|
||||
|
||||
where _ServiceURN_, _ServiceAlias_ and _ServiceAction_ have the same form as described in MiOS Binding (1.x) commands.
|
||||
where *ServiceURN*, *ServiceAlias* and *ServiceAction* have the same form as described in MiOS Binding (1.x) commands.
|
||||
|
||||
You can use the MiOS `invoke` URL to discover the *Actions*, and *Action-parameters*, your particular MiOS device supports:
|
||||
|
||||
You can use the MiOS `invoke` URL to discover the _Actions_, and _Action-parameters_, your particular MiOS device supports:
|
||||
|
||||
```
|
||||
http://<host>:3480/data_request?id=invoke
|
||||
```
|
||||
|
||||
The available _ServiceAction_'s are described in the [MiOS Luup UPnP Variables and Actions](http://wiki.micasaverde.com/index.php/Luup_UPnP_Variables_and_Actions) documentation.
|
||||
The available *ServiceAction*'s are described in the [MiOS Luup UPnP Variables and Actions](http://wiki.micasaverde.com/index.php/Luup_UPnP_Variables_and_Actions) documentation.
|
||||
|
||||
## Examples
|
||||
|
||||
* Invoking a Device Action and calling a Scene to turn off the AV.
|
||||
* Invoking a Device Action and calling a Scene to turn off the AV.
|
||||
|
||||
```
|
||||
rule "Test action rules Off"
|
||||
when
|
||||
when
|
||||
Time cron "0 45 23 * * ?"
|
||||
then
|
||||
sendMiosAction(FamilyMainLightsId, "Dimmer/SetLoadLevelTarget", newArrayList('newLoadlevelTarget' -> 0))
|
||||
|
@ -68,7 +68,7 @@ rule "Test action rules Off"
|
|||
end
|
||||
```
|
||||
|
||||
* Invoking a Sonos Device on MiOS to _say_ something
|
||||
* Invoking a Sonos Device on MiOS to *say* something
|
||||
|
||||
```
|
||||
rule "Test action say"
|
||||
|
@ -79,7 +79,7 @@ rule "Test action say"
|
|||
end
|
||||
```
|
||||
|
||||
* Disarm your Alarm Panel (Paradox, GE, Ademco/Vista, DSC, etc)
|
||||
* Disarm your Alarm Panel (Paradox, GE, Ademco/Vista, DSC, etc)
|
||||
|
||||
```
|
||||
rule "Test action Disarm"
|
||||
|
|
|
@ -24,4 +24,4 @@ In addition to the MQTT Action service, the MQTT binding (1.x) must be installed
|
|||
|
||||
## Action
|
||||
|
||||
* `publish(String brokerName, String topic, String message)`: Publish the message to topic using the specified MQTT broker.
|
||||
* `publish(String brokerName, String topic, String message)`: Publish the message to topic using the specified MQTT broker.
|
||||
|
|
|
@ -19,22 +19,22 @@ Sends push messages to your Android devices.
|
|||
|
||||
## Actions
|
||||
|
||||
- `notifyMyAndroid(String event, String description)`: Send a message to the pre-configured api key (account) and use the configured or default values for the other parameters. Event is the notification title, and description the details.
|
||||
- `notifyMyAndroid(String event, String description, int priority)`: Send a message to a the pre-configured api key (account) with priority level (-2 to 2, from very low to emergency) and use the configured or default values for the other parameters.
|
||||
- `notifyMyAndroid(String apiKey, String event, String description)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority, String url)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority, String url, boolean html)`: Send a message overwriting all configured parameters and using the specified values.
|
||||
- `notifyMyAndroid(String event, String description)`: Send a message to the pre-configured api key (account) and use the configured or default values for the other parameters. Event is the notification title, and description the details.
|
||||
- `notifyMyAndroid(String event, String description, int priority)`: Send a message to a the pre-configured api key (account) with priority level (-2 to 2, from very low to emergency) and use the configured or default values for the other parameters.
|
||||
- `notifyMyAndroid(String apiKey, String event, String description)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority, String url)`: Send a message to another api key than the configured or use this method if you have not configured a default api key
|
||||
- `notifyMyAndroid(String apiKey, String event, String description, int priority, String url, boolean html)`: Send a message overwriting all configured parameters and using the specified values.
|
||||
|
||||
## Configuration
|
||||
|
||||
This action service can be configured via the `services/nma.cfg` file.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| timeout | 10000 | No | Timeout for the communication with the NMA service |
|
||||
| developerKey | | No | An optional developer key from NMA |
|
||||
| apiKey | | if using action calls without `apiKey` parameter | Default API key to send messages to. API keys can be created in your account's dashboard. |
|
||||
| appName | openHAB | No | Application name which NMA will show |
|
||||
| defaultPriority | 0 | No | Priority to use for messages if not specified otherwise. Can range from -2 (lowest) to 2 (highest) |
|
||||
| defaultUrl | https://www.notifymyandroid.com/publicapi/notify | No | URL to attach to NMA messages by default if not specified otherwise. Can be left empty. |
|
||||
| Property | Default | Required | Description |
|
||||
|-----------------|--------------------------------------------------|:------------------------------------------------:|----------------------------------------------------------------------------------------------------|
|
||||
| timeout | 10000 | No | Timeout for the communication with the NMA service |
|
||||
| developerKey | | No | An optional developer key from NMA |
|
||||
| apiKey | | if using action calls without `apiKey` parameter | Default API key to send messages to. API keys can be created in your account's dashboard. |
|
||||
| appName | openHAB | No | Application name which NMA will show |
|
||||
| defaultPriority | 0 | No | Priority to use for messages if not specified otherwise. Can range from -2 (lowest) to 2 (highest) |
|
||||
| defaultUrl | https://www.notifymyandroid.com/publicapi/notify | No | URL to attach to NMA messages by default if not specified otherwise. Can be left empty. |
|
||||
|
|
|
@ -21,14 +21,13 @@ The OpenWebIf action allows you to send a message to enigma2-based Linux satelli
|
|||
|
||||
Configure your satellite receivers in `services/openwebif.cfg`.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| `receiver.<name>.host` | | | For example, `vusolo2` |
|
||||
| `receiver.<name>.port` | | | For example, `81` |
|
||||
| `receiver.<name>.user` | | | For example, `root` |
|
||||
| `receiver.<name>.password` | | | |
|
||||
| `receiver.<name>.https` | | | For example, `false` |
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------------------------|---------|:--------:|------------------------|
|
||||
| `receiver.<name>.host` | | | For example, `vusolo2` |
|
||||
| `receiver.<name>.port` | | | For example, `81` |
|
||||
| `receiver.<name>.user` | | | For example, `root` |
|
||||
| `receiver.<name>.password` | | | |
|
||||
| `receiver.<name>.https` | | | For example, `false` |
|
||||
|
||||
### Configuration Example
|
||||
|
||||
|
@ -44,15 +43,14 @@ receiver.main.https=false
|
|||
|
||||
Now you can send a message to the configured receiver:
|
||||
|
||||
* `sendOpenWebIfNotification(NAME, MESSAGE, TYPE, TIMEOUT)`
|
||||
* `sendOpenWebIfNotification(NAME, MESSAGE, TYPE, TIMEOUT)`
|
||||
|
||||
|
||||
| Parameter | Meaning |
|
||||
|-----------|---------|
|
||||
| NAME | The configured name of the satellite receiver |
|
||||
| MESSAGE | The message to send to the receiver |
|
||||
| TYPE | The message type (INFO, WARNING, ERROR) |
|
||||
| TIMEOUT | How long the text will stay on the screen in seconds |
|
||||
| Parameter | Meaning |
|
||||
|-----------|------------------------------------------------------|
|
||||
| NAME | The configured name of the satellite receiver |
|
||||
| MESSAGE | The message to send to the receiver |
|
||||
| TYPE | The message type (INFO, WARNING, ERROR) |
|
||||
| TIMEOUT | How long the text will stay on the screen in seconds |
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -15,35 +15,36 @@ install: auto
|
|||
|
||||
# Pebble Actions
|
||||
|
||||
The Pebble action service allows you to send pins and notifications directly to your Pebble watch.
|
||||
The Pebble action service allows you to send pins and notifications directly to your Pebble watch.
|
||||
|
||||
You'll need to install the openHAB app on your Pebble watch and lookup the Timeline token. This token is displayed at the bottom of the configuration page when you configure the app on your phone.
|
||||
You'll need to install the openHAB app on your Pebble watch and lookup the Timeline token.
|
||||
This token is displayed at the bottom of the configuration page when you configure the app on your phone.
|
||||
|
||||
## Configuration
|
||||
|
||||
You can either configure the required Pebble token in `services/pebble.cfg` and refer to it by name, or provide it explicitly in your action calls.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| `<name>.token` | | | A token to use in action calls by name |
|
||||
| Property | Default | Required | Description |
|
||||
|----------------|---------|:--------:|----------------------------------------|
|
||||
| `<name>.token` | | | A token to use in action calls by name |
|
||||
|
||||
### Configuration Example
|
||||
|
||||
```
|
||||
```text
|
||||
dave.token=88889999aaaabbbbccccddddeeeeffff
|
||||
```
|
||||
|
||||
## Actions
|
||||
|
||||
* `pebblePin(String instanceOrToken, Date time, String title, String body)`: Insert a pin at a given time with a title and body.
|
||||
* `pebblePin(String instanceOrToken, Date time, String pinTitle, String actionTitle, String url)`: Insert a pin at a given time with a title and add an action. This action is a simple HTTP GET on the given url.
|
||||
* `pebbleNotification(String instanceOrToken, String title, String body)`: Push a notification directly, with the given title and body.
|
||||
- `pebblePin(String instanceOrToken, Date time, String title, String body)`: Insert a pin at a given time with a title and body.
|
||||
- `pebblePin(String instanceOrToken, Date time, String pinTitle, String actionTitle, String url)`: Insert a pin at a given time with a title and add an action. This action is a simple HTTP GET on the given url.
|
||||
- `pebbleNotification(String instanceOrToken, String title, String body)`: Push a notification directly, with the given title and body.
|
||||
|
||||
All actions accept an instance name _or_ the timeline token as the first parameter.
|
||||
All actions accept an instance name *or* the timeline token as the first parameter.
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
```java
|
||||
pebblePin("88889999aaaabbbbccccddddeeeeffff", now.toDate, "Dave left", "Dave is on his way")
|
||||
pebblePin("dave", new DateTime().withHourOfDay(23).withMinuteOfHour(30).toDate, "Bed time", "Shutdown", "http://192.168.1.15:8090/CMD?Lights_All=OFF")
|
||||
pebbleNotification("dave", "Dave left", "Dave left the house")
|
||||
|
|
|
@ -19,5 +19,5 @@ Prowl lets you use push notifications on iOS devices (please check openhab.cfg f
|
|||
|
||||
## Actions
|
||||
|
||||
* `pushNotification(String subject, String message)`: Pushes a Prowl Notification
|
||||
* `pushNotification(String apikey, String subject, String message, int priority)`: Pushes a Prowl Notification with the given priority
|
||||
* `pushNotification(String subject, String message)`: Pushes a Prowl Notification
|
||||
* `pushNotification(String apikey, String subject, String message, int priority)`: Pushes a Prowl Notification with the given priority
|
||||
|
|
|
@ -23,8 +23,8 @@ The Pushbullet action allows you to notify iOS, Android & Windows 10 Phone & Des
|
|||
The following is a valid action call that can be made when the plugin is loaded.
|
||||
For specific information on each item, see the [Pushbullet API](https://docs.pushbullet.com/).
|
||||
|
||||
* `sendPushbulletNote(String receiver, String title, String message)`
|
||||
* `sendPushbulletNote(String botname, String receiver, String title, String message)`
|
||||
* `sendPushbulletNote(String receiver, String title, String message)`
|
||||
* `sendPushbulletNote(String botname, String receiver, String title, String message)`
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -32,29 +32,27 @@ For specific information on each item, see the [Pushbullet API](https://docs.pus
|
|||
sendPushbulletNote("mybot", "someone@somewhere.com", "this is the title", "And this is the body of the message")
|
||||
```
|
||||
|
||||
|
||||
## Creating an account for your bot(s)
|
||||
|
||||
The pushbullet accounts are bound to either Google or Facebook accounts.
|
||||
* Go to "https://www.pushbullet.com/"
|
||||
* Chose to either "Sign up with Google" or "Sign up with Facebook".
|
||||
* Complete the signup process as guided by the pushbullet web site.
|
||||
* Continue with "Obtaining an API key".
|
||||
* Go to "<https://www.pushbullet.com/>"
|
||||
* Chose to either "Sign up with Google" or "Sign up with Facebook".
|
||||
* Complete the signup process as guided by the pushbullet web site.
|
||||
* Continue with "Obtaining an API key".
|
||||
|
||||
## Obtaining an API key
|
||||
|
||||
The API keys are bound to the pushbullet account.
|
||||
* Go to the pushbullet site.
|
||||
* Log in with either your personal account or the one you created for your bot.
|
||||
* Go to "https://www.pushbullet.com/#settings/account"
|
||||
* Click on "Create Access Token".
|
||||
* Copy the token created on the site.
|
||||
* Go to the pushbullet site.
|
||||
* Log in with either your personal account or the one you created for your bot.
|
||||
* Go to "<https://www.pushbullet.com/#settings/account>"
|
||||
* Click on "Create Access Token".
|
||||
* Copy the token created on the site.
|
||||
|
||||
You must at least provide an API token (Private or Alias Key from Pushbullet.com) and a message in some manner before a message can be pushed.
|
||||
All other parameters are optional.
|
||||
If you use an alias key, the parameters (device, icon, sound, vibration) are overwritten by the alias setting on pushbullet.
|
||||
|
||||
|
||||
## Rate limits
|
||||
|
||||
As of June 2017, free accounts have a limit of 500 pushes per month.
|
||||
|
@ -67,5 +65,5 @@ Both of those libraries use various libraries themselves which makes integrating
|
|||
|
||||
## pushbullet API
|
||||
|
||||
* https://docs.pushbullet.com/
|
||||
* https://docs.pushbullet.com/#push-limit
|
||||
* <https://docs.pushbullet.com/>
|
||||
* <https://docs.pushbullet.com/#push-limit>
|
||||
|
|
|
@ -20,46 +20,49 @@ The Pushover action service allows you to notify mobile devices of a message usi
|
|||
|
||||
## Configuration
|
||||
|
||||
You may define default values for parameters to action calls in the file `services/pushover.cfg`. None of the configuration parameters are required as you can specify required configuration items in the action call, but you must at least provide an _API Token_, _User/Group Key_ and a _Message_ in some manner before a message can be pushed.
|
||||
You may define default values for parameters to action calls in the file `services/pushover.cfg`.
|
||||
None of the configuration parameters are required as you can specify required configuration items in the action call, but you must at least provide an *API Token*, *User/Group Key* and a *Message* in some manner before a message can be pushed.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| defaultTimeout | 10000 | No | Timeout in milliseconds for the connection to pushover.net |
|
||||
| defaultToken | | if using action call without `apiToken` parameter | Pushover [API token](https://pushover.net/api) to send to devices |
|
||||
| defaultUser | | if using action call without `userKey` parameter | Pushover User or Group key (not e-mail address) of your user (or you) to send to devices. |
|
||||
| defaultTitle | openHAB | No | Application title for the notification |
|
||||
| defaultPriority | 0 | No | Priority of the notification, from -2 (low priority) to 2 (high priority) |
|
||||
| defaultUrl | | No | URL to attach to the message if not specified in the command. This can be used to trigger actions on the device. |
|
||||
| defaultUrlTitle | | No | URL title to attach to the message if not specified in the command. This can be used to trigger actions on the device. |
|
||||
| defaultRetry | 300 | No | When priority is 2 (high priority), how often (in seconds) should messages be resent |
|
||||
| defaultExpire | 3600 | No | When priority is 2 (high priority), how long (in seconds) to continue resending messages until acknowledged |
|
||||
| Property | Default | Required | Description |
|
||||
|-----------------|---------|:-------------------------------------------------:|------------------------------------------------------------------------------------------------------------------------|
|
||||
| defaultTimeout | 10000 | No | Timeout in milliseconds for the connection to pushover.net |
|
||||
| defaultToken | | if using action call without `apiToken` parameter | Pushover [API token](https://pushover.net/api) to send to devices |
|
||||
| defaultUser | | if using action call without `userKey` parameter | Pushover User or Group key (not e-mail address) of your user (or you) to send to devices. |
|
||||
| defaultTitle | openHAB | No | Application title for the notification |
|
||||
| defaultPriority | 0 | No | Priority of the notification, from -2 (low priority) to 2 (high priority) |
|
||||
| defaultUrl | | No | URL to attach to the message if not specified in the command. This can be used to trigger actions on the device. |
|
||||
| defaultUrlTitle | | No | URL title to attach to the message if not specified in the command. This can be used to trigger actions on the device. |
|
||||
| defaultRetry | 300 | No | When priority is 2 (high priority), how often (in seconds) should messages be resent |
|
||||
| defaultExpire | 3600 | No | When priority is 2 (high priority), how long (in seconds) to continue resending messages until acknowledged |
|
||||
|
||||
## Actions
|
||||
|
||||
The following are valid action calls that can be made when the plugin is loaded. For specific information on each item, see the [Pushover API](https://pushover.net/api).
|
||||
The following are valid action calls that can be made when the plugin is loaded.
|
||||
For specific information on each item, see the [Pushover API](https://pushover.net/api).
|
||||
|
||||
* `pushover(String message)`
|
||||
* `pushover(String message, String device)`
|
||||
* `pushover(String message, int priority)`
|
||||
* `pushover(String message, int priority, String url)`
|
||||
* `pushover(String message, int priority, String url, String urlTitle)`
|
||||
* `pushover(String message, int priority, String url, String urlTitle, String soundFile)`
|
||||
* `pushover(String message, String device, int priority)`
|
||||
* `pushover(String message, String device, int priority, String url)`
|
||||
* `pushover(String message, String device, int priority, String url, String urlTitle)`
|
||||
* `pushover(String message, String device, int priority, String url, String urlTitle, String soundFile)`
|
||||
* `pushover(String apiToken, String userKey, String message)`
|
||||
* `pushover(String apiToken, String userKey, String message, String device)`
|
||||
* `pushover(String apiToken, String userKey, String message, int priority)`
|
||||
* `pushover(String apiToken, String userKey, String message, String device, int priority)`
|
||||
* `pushover(String apiToken, String userKey, String message, String device, String title, String url, String urlTitle, int priority, String soundFile)`
|
||||
- `pushover(String message)`
|
||||
- `pushover(String message, String device)`
|
||||
- `pushover(String message, int priority)`
|
||||
- `pushover(String message, int priority, String url)`
|
||||
- `pushover(String message, int priority, String url, String urlTitle)`
|
||||
- `pushover(String message, int priority, String url, String urlTitle, String soundFile)`
|
||||
- `pushover(String message, String device, int priority)`
|
||||
- `pushover(String message, String device, int priority, String url)`
|
||||
- `pushover(String message, String device, int priority, String url, String urlTitle)`
|
||||
- `pushover(String message, String device, int priority, String url, String urlTitle, String soundFile)`
|
||||
- `pushover(String apiToken, String userKey, String message)`
|
||||
- `pushover(String apiToken, String userKey, String message, String device)`
|
||||
- `pushover(String apiToken, String userKey, String message, int priority)`
|
||||
- `pushover(String apiToken, String userKey, String message, String device, int priority)`
|
||||
- `pushover(String apiToken, String userKey, String message, String device, String title, String url, String urlTitle, int priority, String soundFile)`
|
||||
|
||||
The action calls have to be configured in the above sequence, if you need to omit one of the call parameters you may use a null value or two double quotes. In this case any default values from `services/pushover.cfg` will be used.
|
||||
The action calls have to be configured in the above sequence, if you need to omit one of the call parameters you may use a null value or two double quotes.
|
||||
In this case any default values from `services/pushover.cfg` will be used.
|
||||
Note that you cannot use a null value for int priority.
|
||||
|
||||
### Example
|
||||
|
||||
Send a message without a sound, omit String url and String urlTitle.
|
||||
|
||||
* `pushover("test message", 1, null, null, "none")` or
|
||||
* `pushover("test message", 1, "", "", "none")`
|
||||
- `pushover("test message", 1, null, null, "none")` or
|
||||
- `pushover("test message", 1, "", "", "none")`
|
||||
|
|
|
@ -19,10 +19,13 @@ The Pushsafer action allows you to notify iOS, Android & Windows 10 Phone & Desk
|
|||
|
||||
## Actions
|
||||
|
||||
The following is a valid action call that can be made when the plugin is loaded. For specific information on each item, see the [Pushsafer API](https://www.pushsafer.com/en/pushapi).
|
||||
The following is a valid action call that can be made when the plugin is loaded.
|
||||
For specific information on each item, see the [Pushsafer API](https://www.pushsafer.com/en/pushapi).
|
||||
|
||||
```
|
||||
pushsafer(String apiToken, String message, String title, String device, String icon, String vibration, String sound)
|
||||
```
|
||||
|
||||
You must at least provide an API token (Private or Alias Key from Pushsafer.com) and a message in some manner before a message can be pushed. All other parameters are optional. If you use an alias key, the parameters (device, icon, sound, vibration) are overwritten by the alias setting on pushsafer.
|
||||
You must at least provide an API token (Private or Alias Key from Pushsafer.com) and a message in some manner before a message can be pushed.
|
||||
All other parameters are optional.
|
||||
If you use an alias key, the parameters (device, icon, sound, vibration) are overwritten by the alias setting on pushsafer.
|
||||
|
|
|
@ -23,29 +23,28 @@ Satel Binding v1.x must be installed and configured in order to use Satel action
|
|||
|
||||
## Actions
|
||||
|
||||
* `boolean satelIsConnected()` - returns `true` if connected to communication module and `false` otherwise
|
||||
* `Object[] satelReadEvent(int eventIndex)` - reads event log record for given index; records must be read one by one from most recent record under index `-1`; see record description below
|
||||
* `String satelReadDeviceName(String deviceType, int deviceNumber)` - reads description of a device; device type must be one of PARTITION, ZONE, USER, EXPANDER, LCD, OUTPUT, TIMER, TELEPHONE, OBJECT
|
||||
* `void satelSetUserCode(String newUserCode)` - overrides configured user code to a given one; allows to execute commands not available for default user configured in the settings
|
||||
* `void satelResetUserCode()` - reverts user code set by `satelSetUserCode(String newUserCode)` to the value configured in openhab.cfg/satel.cfg.
|
||||
* `boolean satelIsConnected()` - returns `true` if connected to communication module and `false` otherwise
|
||||
* `Object[] satelReadEvent(int eventIndex)` - reads event log record for given index; records must be read one by one from most recent record under index `-1`; see record description below
|
||||
* `String satelReadDeviceName(String deviceType, int deviceNumber)` - reads description of a device; device type must be one of PARTITION, ZONE, USER, EXPANDER, LCD, OUTPUT, TIMER, TELEPHONE, OBJECT
|
||||
* `void satelSetUserCode(String newUserCode)` - overrides configured user code to a given one; allows to execute commands not available for default user configured in the settings
|
||||
* `void satelResetUserCode()` - reverts user code set by `satelSetUserCode(String newUserCode)` to the value configured in openhab.cfg/satel.cfg.
|
||||
|
||||
### Event record fields
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| timestamp | DateTimeType | time when the event happened |
|
||||
| partition | Integer | partition number |
|
||||
| event class | Enum | one of ZONE_ALARMS, PARTITION_ALARMS, ARMING, BYPASSES, ACCESS_CONTROL, TROUBLES, USER_FUNCTIONS, SYSTEM_EVENTS |
|
||||
| event code | Integer | code of the event |
|
||||
| restoration flag | Boolean | |
|
||||
| event description | String | |
|
||||
| kind of description | Integer | |
|
||||
| source | Integer | |
|
||||
| object | Integer | |
|
||||
| user control number | Integer | |
|
||||
| next event index | Integer | index that must be passed to read next record from the log |
|
||||
| current event index | Integer | index of the current record |
|
||||
|
||||
| Field | Type | Description |
|
||||
|---------------------|--------------|-----------------------------------------------------------------------------------------------------------------|
|
||||
| timestamp | DateTimeType | time when the event happened |
|
||||
| partition | Integer | partition number |
|
||||
| event class | Enum | one of ZONE_ALARMS, PARTITION_ALARMS, ARMING, BYPASSES, ACCESS_CONTROL, TROUBLES, USER_FUNCTIONS, SYSTEM_EVENTS |
|
||||
| event code | Integer | code of the event |
|
||||
| restoration flag | Boolean | |
|
||||
| event description | String | |
|
||||
| kind of description | Integer | |
|
||||
| source | Integer | |
|
||||
| object | Integer | |
|
||||
| user control number | Integer | |
|
||||
| next event index | Integer | index that must be passed to read next record from the log |
|
||||
| current event index | Integer | index of the current record |
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -53,7 +52,7 @@ Satel Binding v1.x must be installed and configured in order to use Satel action
|
|||
|
||||
satel.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Satel Action test"
|
||||
when
|
||||
AlarmPart1 changed to ON
|
||||
|
@ -70,7 +69,7 @@ then
|
|||
val source = eventRec.get(7) as Integer
|
||||
val object = eventRec.get(8) as Integer
|
||||
val ucn = eventRec.get(9) as Integer
|
||||
|
||||
|
||||
if (kind == 0) {
|
||||
details = ""
|
||||
} else if (kind == 1) {
|
||||
|
@ -116,7 +115,7 @@ end
|
|||
|
||||
satel.items:
|
||||
|
||||
```
|
||||
```java
|
||||
Switch AlarmPart1 "Alarm on partition #1" { satel="partition:alarm_memory:1" }
|
||||
```
|
||||
|
||||
|
@ -126,7 +125,7 @@ After that time user code is reverted to the one configured in the Satel binding
|
|||
|
||||
satel.rules
|
||||
|
||||
```
|
||||
```java
|
||||
var String userCode = ""
|
||||
var Timer keypadTimer = null
|
||||
var Timer userCodeTimer = null
|
||||
|
@ -165,7 +164,7 @@ end
|
|||
|
||||
satel.items
|
||||
|
||||
```
|
||||
```java
|
||||
String Keypad_Char ">"
|
||||
```
|
||||
|
||||
|
|
|
@ -20,35 +20,38 @@ Interact directly with your Squeezebox devices from within rules and scripts.
|
|||
|
||||
## Prerequisites
|
||||
|
||||
You must install and configure the Squeezebox binding (1.x). The `id` you specify in your configuration will be used to identify which player to perform the specified action on. For example, in the configuration `Kitchen_Player.id=de:ad:be:ef:12:34` would be identified as `Kitchen_Player` in your rules.
|
||||
You must install and configure the Squeezebox binding (1.x).
|
||||
The `id` you specify in your configuration will be used to identify which player to perform the specified action on.
|
||||
For example, in the configuration `Kitchen_Player.id=de:ad:be:ef:12:34` would be identified as `Kitchen_Player` in your rules.
|
||||
|
||||
## Actions
|
||||
|
||||
### Standard Actions
|
||||
|
||||
* `squeezeboxPower(String playerId, boolean power)`
|
||||
* `squeezeboxMute(String playerId, boolean mute)`
|
||||
* `squeezeboxVolume(String playerId, int volume)`
|
||||
* `squeezeboxPlay(String playerId)`
|
||||
* `squeezeboxPause(String playerId)`
|
||||
* `squeezeboxStop(String playerId)`
|
||||
* `squeezeboxNext(String playerId)`
|
||||
* `squeezeboxPrev(String playerId)`
|
||||
* `squeezeboxPower(String playerId, boolean power)`
|
||||
* `squeezeboxMute(String playerId, boolean mute)`
|
||||
* `squeezeboxVolume(String playerId, int volume)`
|
||||
* `squeezeboxPlay(String playerId)`
|
||||
* `squeezeboxPause(String playerId)`
|
||||
* `squeezeboxStop(String playerId)`
|
||||
* `squeezeboxNext(String playerId)`
|
||||
* `squeezeboxPrev(String playerId)`
|
||||
|
||||
### Actions to play a URL on your Squeezebox devices
|
||||
|
||||
For example, start a radio stream when you wake up in the morning.
|
||||
|
||||
* `squeezeboxPlayUrl(String playerId, String url)`: Plays the URL on the specified player using the current volume
|
||||
* `squeezeboxPlayUrl(String playerId, String url, int volume)`: Plays the URL on the specified player at the specified volume
|
||||
* `squeezeboxPlayUrl(String playerId, String url)`: Plays the URL on the specified player using the current volume
|
||||
* `squeezeboxPlayUrl(String playerId, String url, int volume)`: Plays the URL on the specified player at the specified volume
|
||||
|
||||
### Actions to speak a message on your Squeezebox devices
|
||||
|
||||
* `squeezeboxSpeak(String playerId, String message)`
|
||||
* `squeezeboxSpeak(String playerId, String message, int volume)`
|
||||
* `squeezeboxSpeak(String playerId, String message, int volume, boolean resumePlayback)`
|
||||
* `squeezeboxSpeak(String playerId, String message)`
|
||||
* `squeezeboxSpeak(String playerId, String message, int volume)`
|
||||
* `squeezeboxSpeak(String playerId, String message, int volume, boolean resumePlayback)`
|
||||
|
||||
Note: You need to have filled in the `ttsurl` details within the Squeezebox section in the configuration. Given the changes Google have made to their TTS usage allowances, you might have better luck registering for a key at http://www.voicerss.org/api/ .
|
||||
Note: You need to have filled in the `ttsurl` details within the Squeezebox section in the configuration.
|
||||
Given the changes Google have made to their TTS usage allowances, you might have better luck registering for a key at <http://www.voicerss.org/api/>.
|
||||
|
||||
You can check you have the url and api working by pasting it into a browser with some text at the end
|
||||
|
||||
|
@ -87,4 +90,3 @@ squeezeboxSpeak("Kitchen_Player", "And I'm floating in a most peculiar way", 100
|
|||
```java
|
||||
squeezeboxSpeak("Kitchen_Player"," temperature outside is " + Weather_Temperature.state.format("%d") + " degrees celsius",75,true)
|
||||
```
|
||||
|
||||
|
|
|
@ -22,27 +22,29 @@ The Telegram Action service allows sending formatted messages to Telegram client
|
|||
As described in the Telegram Bot API, this is the manual procedure needed in order to get the necessary information.
|
||||
|
||||
1. Create the Bot and get the Token
|
||||
* On a Telegram client open a chat with BotFather.
|
||||
* write `/newbot` to BotFather, fill all the needed information, write down the token. This is the authentication token needed.
|
||||
1. Create the destination chat and get the chatId
|
||||
* Open a new chat with your new Bot and post a message on the chat
|
||||
* Open a browser and invoke `https://api.telegram.org/bot<token>/getUpdates` (where `<token>` is the authentication token previously obtained)
|
||||
* Look at the JSON result and write down the value of `result[0].message.chat.id`. That is the chatId.
|
||||
|
||||
- On a Telegram client open a chat with BotFather.
|
||||
- write `/newbot` to BotFather, fill all the needed information, write down the token. This is the authentication token needed.
|
||||
|
||||
2. Create the destination chat and get the chatId
|
||||
|
||||
- Open a new chat with your new Bot and post a message on the chat
|
||||
- Open a browser and invoke `https://api.telegram.org/bot<token>/getUpdates` (where `<token>` is the authentication token previously obtained)
|
||||
- Look at the JSON result and write down the value of `result[0].message.chat.id`. That is the chatId.
|
||||
|
||||
## Configuration
|
||||
|
||||
The action can be configured in `services/telegram.cfg`.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| bots | | Yes | Comma-separated list of `<bot-name>`s |
|
||||
| `<bot name>.chatId` | | Yes | chat id |
|
||||
| `<bot name>.token` | | Yes | authentication token |
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|---------------------|---------|:--------:|---------------------------------------|
|
||||
| bots | | Yes | Comma-separated list of `<bot-name>`s |
|
||||
| `<bot name>.chatId` | | Yes | chat id |
|
||||
| `<bot name>.token` | | Yes | authentication token |
|
||||
|
||||
### Configuration example
|
||||
|
||||
```
|
||||
```text
|
||||
bots=bot1,bot2
|
||||
|
||||
bot1.chatId=22334455
|
||||
|
@ -60,12 +62,12 @@ It this example two bots can be used (`bot1` and `bot2`).
|
|||
|
||||
telegram.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Send telegram with Fixed Message"
|
||||
when
|
||||
Item Foo changed
|
||||
Item Foo changed
|
||||
then
|
||||
sendTelegram("bot1", "item Foo changed")
|
||||
sendTelegram("bot1", "item Foo changed")
|
||||
end
|
||||
```
|
||||
|
||||
|
@ -73,12 +75,12 @@ end
|
|||
|
||||
telegram.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Send telegram with Formatted Message"
|
||||
when
|
||||
Item Foo changed
|
||||
Item Foo changed
|
||||
then
|
||||
sendTelegram("bot1", "item Foo changed to %s and number is %.1f", Foo.state.toString, 23.56)
|
||||
sendTelegram("bot1", "item Foo changed to %s and number is %.1f", Foo.state.toString, 23.56)
|
||||
end
|
||||
```
|
||||
|
||||
|
@ -86,7 +88,7 @@ end
|
|||
|
||||
telegram.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Send telegram with image and caption from image accessible by url"
|
||||
when
|
||||
Item Light_GF_Living_Table changed
|
||||
|
@ -98,7 +100,7 @@ end
|
|||
|
||||
telegram.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Send telegram with image without caption from image accessible by url"
|
||||
when
|
||||
Item Light_GF_Living_Table changed
|
||||
|
@ -112,7 +114,7 @@ In case your image is behind an authenticated web server (locked by username and
|
|||
|
||||
telegram.rules
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Send telegram with image without caption from image accessible by url"
|
||||
when
|
||||
Item Light_GF_Living_Table changed
|
||||
|
|
|
@ -16,7 +16,7 @@ install: manual
|
|||
|
||||
# TinkerForge Actions
|
||||
|
||||
The TinkerForge Action service provides direct interaction with some of the TinkerForge devices.
|
||||
The TinkerForge Action service provides direct interaction with some of the TinkerForge devices.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
@ -26,13 +26,13 @@ The action service depends on the TinkerForge Binding (1.x) being installed and
|
|||
|
||||
These action functions are available:
|
||||
|
||||
* `tfClearLCD(String uid)`
|
||||
- `tfClearLCD(String uid)`
|
||||
|
||||
Clears the display of the LCD with the given uid.
|
||||
Clears the display of the LCD with the given uid.
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "clear lcd"
|
||||
when
|
||||
Item ClearLCD received command ON
|
||||
|
@ -41,102 +41,102 @@ These action functions are available:
|
|||
end
|
||||
```
|
||||
|
||||
* `tfServoSetposition(String uid, String num, String position, String velocity, String acceleration)`
|
||||
- `tfServoSetposition(String uid, String num, String position, String velocity, String acceleration)`
|
||||
|
||||
Sets the position of a TinkerForge servo with the uid $uid and servo number to the position $position using the speed $speed and acceleration $acceleration.
|
||||
Sets the position of a TinkerForge servo with the uid $uid and servo number to the position $position using the speed $speed and acceleration $acceleration.
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
rule "move servo"
|
||||
when
|
||||
Item MoveServo received command ON
|
||||
then
|
||||
tfServoSetposition("6Crt5W", "servo0", "0", "65535", "65535")
|
||||
Thread::sleep(1000)
|
||||
tfServoSetposition("6Crt5W", "servo0", "-9000", "65535", "65535")
|
||||
Thread::sleep(1000)
|
||||
tfServoSetposition("6Crt5W", "servo0", "9000", "65535", "65535")
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
rule "move servo"
|
||||
when
|
||||
Item MoveServo received command ON
|
||||
then
|
||||
tfServoSetposition("6Crt5W", "servo0", "0", "65535", "65535")
|
||||
Thread::sleep(1000)
|
||||
tfServoSetposition("6Crt5W", "servo0", "-9000", "65535", "65535")
|
||||
Thread::sleep(1000)
|
||||
tfServoSetposition("6Crt5W", "servo0", "9000", "65535", "65535")
|
||||
end
|
||||
```
|
||||
|
||||
* `tfDCMotorSetspeed(String uid, String speed, String acceleration, String drivemode)`
|
||||
- `tfDCMotorSetspeed(String uid, String speed, String acceleration, String drivemode)`
|
||||
|
||||
Sets the speed of a TinkerForge DC motor with the given uid to $speed using the acceleration $acceleration and the drivemode $drivemode.
|
||||
Sets the speed of a TinkerForge DC motor with the given uid to $speed using the acceleration $acceleration and the drivemode $drivemode.
|
||||
|
||||
* speed: value between -32767 - 32767
|
||||
* drivemode is either "break" or "coast"
|
||||
- speed: value between -32767 - 32767
|
||||
- drivemode is either "break" or "coast"
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
rule "move motor"
|
||||
when
|
||||
Item DCMOVE received command ON
|
||||
then
|
||||
var String acceleration = "10000"
|
||||
var String speed = "15000"
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
rule "move motor"
|
||||
when
|
||||
Item DCMOVE received command ON
|
||||
then
|
||||
var String acceleration = "10000"
|
||||
var String speed = "15000"
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
end
|
||||
```
|
||||
|
||||
* `tfDCMotorSetspeed(String uid, Short speed, Integer acceleration, String drivemode)`
|
||||
- `tfDCMotorSetspeed(String uid, Short speed, Integer acceleration, String drivemode)`
|
||||
|
||||
Sets the speed of a TinkerForge DC motor with the given uid to $speed using the acceleration $acceleration and the drivemode $drivemode.
|
||||
Sets the speed of a TinkerForge DC motor with the given uid to $speed using the acceleration $acceleration and the drivemode $drivemode.
|
||||
|
||||
* speed: value between -32767 - 32767
|
||||
* drivemode is either "break" or "coast"
|
||||
- speed: value between -32767 - 32767
|
||||
- drivemode is either "break" or "coast"
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
rule "move motor"
|
||||
when
|
||||
Item DCMOVE received command ON
|
||||
then
|
||||
var Integer acceleration = 10000
|
||||
var Short speed = 15000
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
rule "move motor"
|
||||
when
|
||||
Item DCMOVE received command ON
|
||||
then
|
||||
var Integer acceleration = 10000
|
||||
var Short speed = 15000
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
Thread::sleep(1000)
|
||||
tfDCMotorSetspeed("62Zduj", speed, acceleration, "break")
|
||||
end
|
||||
```
|
||||
|
||||
* `tfRotaryEncoderClear(String uid)`
|
||||
- `tfRotaryEncoderClear(String uid)`
|
||||
|
||||
Clears the rotary encoder counter with the given uid.
|
||||
Clears the rotary encoder counter with the given uid.
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
rule "Clear"
|
||||
when Item Clear changed
|
||||
then
|
||||
tfRotaryEncoderClear("kHv")
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
rule "Clear"
|
||||
when Item Clear changed
|
||||
then
|
||||
tfRotaryEncoderClear("kHv")
|
||||
end
|
||||
```
|
||||
|
||||
* `tfLoadCellTare(String uid)`
|
||||
Sets tare on the load cell bricklet with the given uid.
|
||||
- `tfLoadCellTare(String uid)`
|
||||
Sets tare on the load cell bricklet with the given uid.
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
```
|
||||
rule "Tare"
|
||||
when
|
||||
Item Tare changed to ON
|
||||
then
|
||||
postUpdate(TareValue, Weight.state)
|
||||
tfLoadCellTare("v8V")
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
rule "Tare"
|
||||
when
|
||||
Item Tare changed to ON
|
||||
then
|
||||
postUpdate(TareValue, Weight.state)
|
||||
tfLoadCellTare("v8V")
|
||||
end
|
||||
```
|
||||
|
|
|
@ -16,32 +16,37 @@ install: auto
|
|||
|
||||
# Twitter Actions
|
||||
|
||||
Twitter can be used to "tweet" notifications when certain events take place in openHAB.
|
||||
Twitter can be used to "tweet" notifications when certain events take place in openHAB.
|
||||
|
||||
|
||||
## Actions
|
||||
|
||||
* `sendTweet(message)`: Send a Tweet
|
||||
* `sendDirectMessage('recipient', 'direct message')`: Send a direct message simply use the following syntax inside a rule or script;
|
||||
* `sendTweet(message)`: Send a Tweet
|
||||
* `sendDirectMessage('recipient', 'direct message')`: Send a direct message simply use the following syntax inside a rule or script;
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
The Twitter action service is one of the pre-defined set of actions that is automatically available, and can be used within rules and scripts. You will need to enable "tweeting" by adding the following to the file `services/twitter.cfg`:
|
||||
The Twitter action service is one of the pre-defined set of actions that is automatically available, and can be used within rules and scripts.
|
||||
You will need to enable "tweeting" by adding the following to the file `services/twitter.cfg`:
|
||||
|
||||
```
|
||||
enabled=true
|
||||
```
|
||||
|
||||
After enabling, you will then need to authenticate openHAB with Twitter. Typically a new Twitter account would be set up for openHAB, rather than using your personal account, but that is entirely up to you.
|
||||
After enabling, you will then need to authenticate openHAB with Twitter.
|
||||
Typically a new Twitter account would be set up for openHAB, rather than using your personal account, but that is entirely up to you.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You'll have to authorise openHAB to use Twitter. This is done using a two step process, similar to Dropbox authentication. openHAB requests a token which is used as a one-time-password to get hold of an authentication token (second step) which will be used for all future requests to Twitter.
|
||||
You'll have to authorise openHAB to use Twitter.
|
||||
This is done using a two step process, similar to Dropbox authentication.
|
||||
openHAB requests a token which is used as a one-time-password to get hold of an authentication token (second step) which will be used for all future requests to Twitter.
|
||||
|
||||
### Step 1
|
||||
### Step 1
|
||||
|
||||
This is performed by openHAB automatically after configuration above. You will find some entries like this in your `openhab.log` file:
|
||||
This is performed by openHAB automatically after configuration above.
|
||||
You will find some entries like this in your `openhab.log` file:
|
||||
|
||||
```text
|
||||
08:46:10.013 INFO o.openhab.io.net.actions.Tweet[:136] - ################################################################################################
|
||||
|
@ -57,12 +62,17 @@ This is performed by openHAB automatically after configuration above. You will f
|
|||
|
||||
### Step 2
|
||||
|
||||
|
||||
This steps needs your interaction. Copy the given URL to your browser and authorize openHAB to use Twitter. Be aware that the request token is only valid for the next five minutes, so don't wait too long. After successful authorization, you will be given an authentication PIN which you will need to copy to a new file you create in the `<openhabhome>` directory called `twitter.pin`. Please note that the PIN must be given in this format: `pin=<authpin>`.
|
||||
This steps needs your interaction.
|
||||
Copy the given URL to your browser and authorize openHAB to use Twitter.
|
||||
Be aware that the request token is only valid for the next five minutes, so don't wait too long.
|
||||
After successful authorization, you will be given an authentication PIN which you will need to copy to a new file you create in the `<openhabhome>` directory called `twitter.pin`.
|
||||
Please note that the PIN must be given in this format: `pin=<authpin>`.
|
||||
|
||||
### Step 3
|
||||
|
||||
This step is handled automatically by openHAB. It will detect the PIN file you just created and use it to generate an authentication token which it will store away for future use. openHAB will give up waiting after 5 minutes, so if you are not quick enough you will have to restart openHAB and begin the authentication process again.
|
||||
This step is handled automatically by openHAB.
|
||||
It will detect the PIN file you just created and use it to generate an authentication token which it will store away for future use.
|
||||
openHAB will give up waiting after 5 minutes, so if you are not quick enough you will have to restart openHAB and begin the authentication process again.
|
||||
|
||||
Once authenticated, you should see an entry in the log file to indicate authentication was successful.
|
||||
|
||||
|
@ -70,13 +80,16 @@ Once authenticated, you should see an entry in the log file to indicate authenti
|
|||
08:53:53.486 INFO o.openhab.io.net.actions.Twitter[:94] - TwitterAction has been successfully authenticated > awaiting your Tweets!
|
||||
```
|
||||
|
||||
And you will notice a new file is created in `etc` called `twitter.token`. This is where the authentication token is stored for future use. You can now safely delete the `twitter.pin` file if you wish as it is no longer required.
|
||||
And you will notice a new file is created in `etc` called `twitter.token`.
|
||||
This is where the authentication token is stored for future use.
|
||||
You can now safely delete the `twitter.pin` file if you wish as it is no longer required.
|
||||
|
||||
## Rate Limits
|
||||
|
||||
Please beware there are technical limits that apply to your account. The current limits are:
|
||||
Please beware there are technical limits that apply to your account.
|
||||
The current limits are:
|
||||
|
||||
* Direct messages: 250 per day.
|
||||
* Tweets: 1,000 per day. The daily update limit is further broken down into smaller limits for semi-hourly intervals. Retweets are counted as Tweets.
|
||||
* Following (daily): The technical follow limit is 1,000 per day. Please note that this is a technical account limit only, and there are additional rules prohibiting aggressive following behavior. Details about following limits and prohibited behavior are on the Follow Limits and Best Practices page.
|
||||
* Following (account-based): Once an account is following 2,000 other users, additional follow attempts are limited by account-specific ratios. The Follow Limits and Best Practices page has more information.
|
||||
* Direct messages: 250 per day.
|
||||
* Tweets: 1,000 per day. The daily update limit is further broken down into smaller limits for semi-hourly intervals. Retweets are counted as Tweets.
|
||||
* Following (daily): The technical follow limit is 1,000 per day. Please note that this is a technical account limit only, and there are additional rules prohibiting aggressive following behavior. Details about following limits and prohibited behavior are on the Follow Limits and Best Practices page.
|
||||
* Following (account-based): Once an account is following 2,000 other users, additional follow attempts are limited by account-specific ratios. The Follow Limits and Best Practices page has more information.
|
||||
|
|
|
@ -17,8 +17,8 @@ install: manual
|
|||
|
||||
The Weather Action service provides meteorological information to your scripts and rules.
|
||||
|
||||
* `getHumidex(double temperature, int hygro)`: Compute the Humidex index given temperature in Celsius and hygrometry (relative percent). Returns Humidex index value.
|
||||
* `getBeaufortIndex(double speed)`: Compute the [Beaufort scale](http://en.wikipedia.org/wiki/Beaufort_scale) for a given wind speed in m/s. Returns the Beaufort Index between 0 and 12. `transform/beaufort.map`:
|
||||
* `getHumidex(double temperature, int hygro)`: Compute the Humidex index given temperature in Celsius and hygrometry (relative percent). Returns Humidex index value.
|
||||
* `getBeaufortIndex(double speed)`: Compute the [Beaufort scale](http://en.wikipedia.org/wiki/Beaufort_scale) for a given wind speed in m/s. Returns the Beaufort Index between 0 and 12. `transform/beaufort.map`:
|
||||
|
||||
```
|
||||
0=Calm
|
||||
|
@ -36,5 +36,5 @@ The Weather Action service provides meteorological information to your scripts a
|
|||
12=Hurricane force
|
||||
```
|
||||
|
||||
* `getSeaLevelPressure(double pressure, double temp, double altitude)`: Compute the [Sea Level Pressure](http://keisan.casio.com/exec/system/1224575267), given absolute pressure in hPa, temperature in Celsius, and altitude in meters. Returns equivalent sea level pressure.
|
||||
* `getWindDirection(int degree)`: Transform an orientation angle (in degrees) to its cardinal string equivalent. Returns string representing the direction.
|
||||
* `getSeaLevelPressure(double pressure, double temp, double altitude)`: Compute the [Sea Level Pressure](http://keisan.casio.com/exec/system/1224575267), given absolute pressure in hPa, temperature in Celsius, and altitude in meters. Returns equivalent sea level pressure.
|
||||
* `getWindDirection(int degree)`: Transform an orientation angle (in degrees) to its cardinal string equivalent. Returns string representing the direction.
|
||||
|
|
|
@ -20,5 +20,5 @@ Sends notifications to the Kodi open source home theater software (formerly know
|
|||
|
||||
## Actions
|
||||
|
||||
* `sendXbmcNotification(host, port, title, message)`: Sends a message to a given XBMC instance
|
||||
* `sendXbmcNotification(host, port, title, message, image, displayTime)`: Sends a message to a given XBMC instance (image=a URL pointing to an image, displayTime=a display time for the message in milliseconds)
|
||||
* `sendXbmcNotification(host, port, title, message)`: Sends a message to a given XBMC instance
|
||||
* `sendXbmcNotification(host, port, title, message, image, displayTime)`: Sends a message to a given XBMC instance (image=a URL pointing to an image, displayTime=a display time for the message in milliseconds)
|
||||
|
|
|
@ -20,37 +20,38 @@ This set of actions allows you to send a message to an XMPP user or multi-user c
|
|||
|
||||
## Actions
|
||||
|
||||
* `sendXMPP(String to, String message)`: Sends a message to an XMPP user
|
||||
* `sendXMPP(String to, String message, String attachmentUrl)`: Sends a message with an attachment to an XMPP user
|
||||
* `chatXMPP(String message)`: Sends a message to a multi user chat
|
||||
* `sendXMPP(String to, String message)`: Sends a message to an XMPP user
|
||||
* `sendXMPP(String to, String message, String attachmentUrl)`: Sends a message with an attachment to an XMPP user
|
||||
* `chatXMPP(String message)`: Sends a message to a multi user chat
|
||||
|
||||
## Configuration
|
||||
|
||||
The XMPP Action service can be configured in `services/xmpp.cfg`.
|
||||
|
||||
| Property | Default | Required | Description |
|
||||
|----------|---------|:--------:|-------------|
|
||||
| username | | | The username of the XMPP account used by openHAB. Most services will require that you use only the localpart of the account's JID. For example if your accounts JID is `myuser@example.org`, then only configure `myuser`. |
|
||||
| password | | | The password of the XMPP account used by openHAB |
|
||||
| servername | | | The XMPP service to use, e.g. `jabber.de`. A list of public XMPP services can be found at https://xmpp.net/directory.php |
|
||||
| securitymode | `disabled` | No | The Security mode used for the XMPP connection. Can be either `required` or `disabled`. Defaults to `disabled`, which means that TLS will not be used. Warning: If you change this to non-disabled, then you must make sure that your TLS server certificate can be validated, otherwhise the connection will fail. |
|
||||
| tlspin | | | The TLS Pin used to verify the XMPP service's certificate. Set this in case openHAB's default `SSLContext` is unable to verfiy it (e.g. because the XMPP service uses a self-signed certificate). The PIN value is bascially the hash of the certificate in hexadecimal notation. You have to set `securitymode` to `required` to enable TLS for XMPP connections. For information on how to generate the PIN visit https://github.com/Flowdalic/java-pinning . Example: `tlspin=CERTSHA256:83:F9:17:1E:06:A3:13:11:88:89:F7:D7:93:02:BD:1B:7A:20:42:EE:0C:FD:02:9A:BF:8D:D0:6F:FA:6C:D9:D3`
|
||||
| proxy | | | The XMPP Proxyserver to use, e.g. `gmail.com` |
|
||||
| port | `5222` | | The server port to use |
|
||||
| consoleusers | | | A comma-separated list of users that are allowed to use the XMPP console |
|
||||
| chatroom | | | The multi user chat to join, e.g. `openhab@chat.example.com` |
|
||||
| chatnickname | `openhab-bot` | No | The nickname used in the multi-user chat |
|
||||
| chatpassword | | | The password required to join the multi user chat |
|
||||
| Property | Default | Required | Description |
|
||||
|--------------|---------------|:--------:|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| username | | | The username of the XMPP account used by openHAB. Most services will require that you use only the localpart of the account's JID. For example if your accounts JID is `myuser@example.org`, then only configure `myuser`. |
|
||||
| password | | | The password of the XMPP account used by openHAB |
|
||||
| servername | | | The XMPP service to use, e.g. `jabber.de`. A list of public XMPP services can be found at https://xmpp.net/directory.php |
|
||||
| securitymode | `disabled` | No | The Security mode used for the XMPP connection. Can be either `required` or `disabled`. Defaults to `disabled`, which means that TLS will not be used. Warning: If you change this to non-disabled, then you must make sure that your TLS server certificate can be validated, otherwhise the connection will fail. |
|
||||
| tlspin | | | The TLS Pin used to verify the XMPP service's certificate. Set this in case openHAB's default `SSLContext` is unable to verfiy it (e.g. because the XMPP service uses a self-signed certificate). The PIN value is bascially the hash of the certificate in hexadecimal notation. You have to set `securitymode` to `required` to enable TLS for XMPP connections. For information on how to generate the PIN visit https://github.com/Flowdalic/java-pinning . Example: `tlspin=CERTSHA256:83:F9:17:1E:06:A3:13:11:88:89:F7:D7:93:02:BD:1B:7A:20:42:EE:0C:FD:02:9A:BF:8D:D0:6F:FA:6C:D9:D3` |
|
||||
| proxy | | | The XMPP Proxyserver to use, e.g. `gmail.com` |
|
||||
| port | `5222` | | The server port to use |
|
||||
| consoleusers | | | A comma-separated list of users that are allowed to use the XMPP console |
|
||||
| chatroom | | | The multi user chat to join, e.g. `openhab@chat.example.com` |
|
||||
| chatnickname | `openhab-bot` | No | The nickname used in the multi-user chat |
|
||||
| chatpassword | | | The password required to join the multi user chat |
|
||||
|
||||
|
||||
Note: openHAB does not resolve SRV entries like other XMPP clients do, you have to setup the server details manually. Generally, if `joe@example.org` is your XMPP user ID and `xmpp.example.net` points to the server running the service, set `servername` to the actual server `xmpp.example.net`, the user name `username` to `joe` and `proxy` to the domain name part of your user ID `example.org`.
|
||||
Note: openHAB does not resolve SRV entries like other XMPP clients do, you have to setup the server details manually.
|
||||
Generally, if `joe@example.org` is your XMPP user ID and `xmpp.example.net` points to the server running the service, set `servername` to the actual server `xmpp.example.net`, the user name `username` to `joe` and `proxy` to the domain name part of your user ID `example.org`.
|
||||
|
||||
## Example: Google
|
||||
|
||||
```
|
||||
servername=talk.google.com
|
||||
securitymode=required
|
||||
# You need this "tlspin" if openhab cannot verify the certificat from the google server
|
||||
# You need this "tlspin" if openhab cannot verify the certificate from the google server
|
||||
tlspin=CERTSHA256:9e670d6624fc0c451d8d8e3efa81d4d8246ff9354800de09b549700e8d2a730a
|
||||
proxy=gmail.com
|
||||
username=my.openhab@gmail.com
|
||||
|
|
|
@ -19,13 +19,13 @@ This add-on provides xPL message sending on the network.
|
|||
|
||||
## Actions
|
||||
|
||||
* `sendxPLMessage(String target, String msgType, String msgClass, String bodyLine1, String bodyLine2 ...)` : Sends a message over the xPL network.
|
||||
* `sendxPLMessage(String target, String msgType, String msgClass, String bodyLine1, String bodyLine2 ...)` : Sends a message over the xPL network.
|
||||
|
||||
Parameters shall follow xPL message elements syntax.
|
||||
|
||||
| Parameter | Meaning |
|
||||
|-----------|---------|
|
||||
| target | string spelled vendor-device.instance |
|
||||
| msgType | being one of : command, trigger, status |
|
||||
| msgClass | string spelled class.type |
|
||||
| Parameter | Meaning |
|
||||
|-----------|----------------------------------------------------------------------------------------------------------------------------|
|
||||
| target | string spelled vendor-device.instance |
|
||||
| msgType | being one of : command, trigger, status |
|
||||
| msgClass | string spelled class.type |
|
||||
| bodyLineX | string containing key and value in the form of "bodykey1=bodyvalue1". There may be as many bodyLine parameters as needed. |
|
||||
|
|
|
@ -49,22 +49,19 @@ The thing has a few configuration parameters:
|
|||
| stationId | Unique ID of the measuring station. |
|
||||
| refresh | Refresh interval in minutes. Optional, the default value is 60 minutes. |
|
||||
|
||||
|
||||
For the location parameter, the following syntax is allowed (comma separated latitude and longitude):
|
||||
|
||||
```
|
||||
```java
|
||||
37.8,-122.4
|
||||
37.8255,-122.456
|
||||
```
|
||||
|
||||
If you always want to receive data from specific station and you know its unique ID, you can enter it instead of the coordinates.
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
The AirQuality information that is retrieved is available as these channels:
|
||||
|
||||
|
||||
| Channel ID | Item Type | Description |
|
||||
|-----------------|-----------|----------------------------------------------|
|
||||
| aqiLevel | Number | Air Quality Index |
|
||||
|
@ -82,17 +79,15 @@ The AirQuality information that is retrieved is available as these channels:
|
|||
| pressure | Number | Pressure level |
|
||||
| humidity | Number | Humidity level |
|
||||
|
||||
|
||||
`AQI Description` item provides a human-readable output that can be interpreted e.g. by MAP transformation.
|
||||
|
||||
*Note that channels like* `pm25`, `pm10`, `o3`, `no2`, `co` *can sometimes return* `UNDEF` *value due to the fact that some stations don't provide measurements for them.*
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
airquality.map:
|
||||
|
||||
```
|
||||
```text
|
||||
-=-
|
||||
UNDEF=No data
|
||||
NULL=No data
|
||||
|
@ -107,7 +102,7 @@ HAZARDOUS=Hazardous
|
|||
|
||||
airquality.things:
|
||||
|
||||
```
|
||||
```java
|
||||
airquality:aqi:home "AirQuality" @ "Krakow" [ apikey="XXXXXXXXXXXX", location="50.06465,19.94498", refresh=60 ]
|
||||
airquality:aqi:warsaw "AirQuality in Warsaw" [ apikey="XXXXXXXXXXXX", location="52.22,21.01", refresh=60 ]
|
||||
airquality:aqi:brisbane "AirQuality in Brisbane" [ apikey="XXXXXXXXXXXX", stationId=5115 ]
|
||||
|
@ -115,7 +110,7 @@ airquality:aqi:brisbane "AirQuality in Brisbane" [ apikey="XXXXXXXXXXXX", statio
|
|||
|
||||
airquality.items:
|
||||
|
||||
```
|
||||
```java
|
||||
Group AirQuality <flow>
|
||||
|
||||
Number Aqi_Level "Air Quality Index" <flow> (AirQuality) { channel="airquality:aqi:home:aqiLevel" }
|
||||
|
@ -139,7 +134,7 @@ Number Aqi_Humidity "Humidity" <humidity> (AirQuality) { channel="airqu
|
|||
|
||||
airquality.sitemap:
|
||||
|
||||
```
|
||||
```perl
|
||||
sitemap airquality label="Air Quality" {
|
||||
Frame {
|
||||
Text item=Aqi_Level valuecolor=[
|
||||
|
@ -186,7 +181,7 @@ sitemap airquality label="Air Quality" {
|
|||
|
||||
airquality.rules:
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Change lamp color to reflect Air Quality"
|
||||
when
|
||||
Item Aqi_Description changed
|
||||
|
|
|
@ -19,11 +19,11 @@ This binding integrates devices compatible with [Qualcomm AllPlay](https://www.q
|
|||
The binding uses native libraries for the AllJoyn framework.
|
||||
Libraries for the following platforms are already included in the binding:
|
||||
|
||||
* Linux ARM
|
||||
* Linux x86 (32 bit, AllJoyn v16.04a)
|
||||
* Linux x86-64 (64 bit, AllJoyn v16.04a)
|
||||
* Windows x86 (32 bit, AllJoyn v16.04a)
|
||||
* Windows x86-64 (64 bit, AllJoyn v16.04a)
|
||||
- Linux ARM
|
||||
- Linux x86 (32 bit, AllJoyn v16.04a)
|
||||
- Linux x86-64 (64 bit, AllJoyn v16.04a)
|
||||
- Windows x86 (32 bit, AllJoyn v16.04a)
|
||||
- Windows x86-64 (64 bit, AllJoyn v16.04a)
|
||||
|
||||
The Windows libraries have a dependency on the [Visual C++ Redistributable for Visual Studio 2015](https://www.microsoft.com/en-US/download/details.aspx?id=48145).
|
||||
If you are using Windows, please make sure to install these components before using the AllPlay binding.
|
||||
|
@ -49,8 +49,6 @@ The binding has the following configuration options, which can be set for "bindi
|
|||
| fastForwardSkipTimeInSec | Fast forward skip time (s) | Seconds to jump forward if the fastforward command is executed | yes |
|
||||
| callbackUrl | Callback URL | URL to use for playing audio streams, e.g. <http://192.168.0.2:8080> | no |
|
||||
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
AllPlay Players are identified by their device ID (e.g. 9fbe37ca-d015-47a2-b76e-8fce7bc25687). Available configuration parameters are:
|
||||
|
@ -61,8 +59,6 @@ AllPlay Players are identified by their device ID (e.g. 9fbe37ca-d015-47a2-b76e-
|
|||
| Device Name | deviceName | The device name of the speaker | false | |
|
||||
| Volume step size | volumeStepSize | Step size to use if the volume is changed using the increase/decrease command | true | 1 |
|
||||
| Zone Member Separator | zoneMemberSeparator | Separator which is used when sending multiple zone members to channel 'zonemembers' | true | , |
|
||||
|
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
|
@ -95,7 +91,6 @@ The devices support the following channels:
|
|||
| | | (This channel is currently only for setting the zone members. |
|
||||
| | | It does not update automatically if the zone members are changed from another source) |
|
||||
|
||||
|
||||
## Audio Support
|
||||
|
||||
All AllPlay speakers are registered as an audio sink in the framework.
|
||||
|
@ -105,13 +100,13 @@ Audio streams are sent to the `stream` channel.
|
|||
|
||||
demo.things:
|
||||
|
||||
```
|
||||
```java
|
||||
Thing allplay:speaker:mySpeaker [ deviceId="9fbe37ca-d015-47a2-b76e-8fce7bc25687"]
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
||||
```
|
||||
```java
|
||||
String All2Stream {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:stream"}
|
||||
Player All2Control {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:control"}
|
||||
Dimmer All2Volume "Volume" {channel="allplay:speaker:9fbe37ca-d015-47a2-b76e-8fce7bc25687:volume"}
|
||||
|
@ -123,22 +118,21 @@ String All2CoverUrl "Cover Art URL [%s]" {channel="allplay:speaker:9fbe37ca-d
|
|||
|
||||
demo.sitemap:
|
||||
|
||||
```
|
||||
sitemap demo label="Main Menu"
|
||||
{
|
||||
Frame label="All2" {
|
||||
Default item=All2Control
|
||||
Slider item=All2Volume
|
||||
Text item=All2Title
|
||||
Text item=All2Artist
|
||||
Text item=All2State
|
||||
}
|
||||
```perl
|
||||
sitemap demo label="Main Menu" {
|
||||
Frame label="All2" {
|
||||
Default item=All2Control
|
||||
Slider item=All2Volume
|
||||
Text item=All2Title
|
||||
Text item=All2Artist
|
||||
Text item=All2State
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
demo.rules:
|
||||
|
||||
```
|
||||
```java
|
||||
rule "Play Online Radio stream"
|
||||
when
|
||||
Item All2OnlineRadio changed to ON
|
||||
|
|
|
@ -73,8 +73,8 @@ sudo setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' $(realpath
|
|||
|
||||
On a Windows system there are two options to go with.
|
||||
|
||||
1. The preferred solution is [WinPcap](https://www.winpcap.org) if your network interface is supported.
|
||||
2. An alternative option is [npcap](https://github.com/nmap/npcap) with the settings "WinPcap 4.1.3 compatibility" and "Raw 802.11 Packet Capture"
|
||||
1. The preferred solution is [WinPcap](https://www.winpcap.org) if your network interface is supported.
|
||||
2. An alternative option is [npcap](https://github.com/nmap/npcap) with the settings "WinPcap 4.1.3 compatibility" and "Raw 802.11 Packet Capture"
|
||||
|
||||
### Installing libpcap on Other Operating Systems
|
||||
|
||||
|
@ -114,7 +114,9 @@ There is one supported Thing, the "Amazon Dash Button".
|
|||
|
||||
## Discovery
|
||||
|
||||
Background discovery is not supported as it is not possible to distinguish between a Dash Button and other Amazon devices like the Kindle, a Fire TV or an Echo speaker.
|
||||
Background discovery is not supported as it is not possible to distinguish
|
||||
between a Dash Button and other Amazon devices like the Kindle,
|
||||
a Fire TV or an Echo speaker.
|
||||
|
||||
You can start the discovery process for Dash Button devices manually.
|
||||
While openHAB is in the scanning process, press the button on the Dash to be recognized and added to your Inbox.
|
||||
|
@ -127,17 +129,19 @@ You can ignore these devices in your Inbox.
|
|||
|
||||
### Amazon Dash Button
|
||||
|
||||
* `macAddress` - The MAC address of the Amazon Dash Button.
|
||||
* `pcapNetworkInterfaceName` - The network interface which receives the packets of the Amazon Dash Button.
|
||||
* `packetInterval` - Often a single button press is recognized multiple times.
|
||||
You can specify how long any further detected button pressed should be ignored after one click was processed.
|
||||
The parameter is optional and 5000ms by default.
|
||||
- `macAddress` - The MAC address of the Amazon Dash Button.
|
||||
|
||||
- `pcapNetworkInterfaceName` - The network interface which receives the packets of the Amazon Dash Button.
|
||||
|
||||
- `packetInterval` - Often a single button press is recognized multiple times.
|
||||
You can specify how long any further detected button pressed should be ignored after one click was processed.
|
||||
The parameter is optional and 5000ms by default.
|
||||
|
||||
For manual defintion of a `dashbutton` Thing the MAC address can either be taken from the discovery output or can e.g. be captured through your router/DHCP frontend or with [Wireshark](https://wireshark.org).
|
||||
|
||||
## Channels
|
||||
|
||||
* **Press:** Trigger channel for recognizing presses on the Amazon Dash Button.
|
||||
- **Press:** Trigger channel for recognizing presses on the Amazon Dash Button.
|
||||
A trigger channel can directly be used in a rule, check the "Full Example" section for one example.
|
||||
|
||||
## Full Example
|
||||
|
|
|
@ -74,7 +74,7 @@ Optionally, a refresh `interval` (in seconds) can be defined to also calculate p
|
|||
* **group** `phase`
|
||||
* **channel**:
|
||||
* `firstQuarter, thirdQuarter, full, new` (DateTime)
|
||||
* `age, illumination` (Number)
|
||||
* `age, agePercent, ageDegree, illumination` (Number)
|
||||
* `name` (String), values: `NEW, WAXING_CRESCENT, FIRST_QUARTER, WAXING_GIBBOUS, FULL, WANING_GIBBOUS, THIRD_QUARTER, WANING_CRESCENT`
|
||||
* **group** `eclipse`
|
||||
* **channel**:
|
||||
|
|
|
@ -36,20 +36,21 @@ If "Telnet Login" is enabled ("Network" tab from the switch configuration UI), y
|
|||
|
||||
## Binding configuration
|
||||
|
||||
```
|
||||
```java
|
||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
||||
```
|
||||
|
||||
- ipAddress: Hostname or IP address of the matrix switch
|
||||
- userName: (optional) the username to login with (only if Telnet Login is enabled)
|
||||
- password: (optional) the password to login with (only if Telnet Login is enabled)
|
||||
- polling: (optional) the time (in seconds) to poll the state from the actual switch (default: 600)
|
||||
- ping: (optional) the time (in seconds) to ping the switch to keep our connection alive (default: 30)
|
||||
- retryPolling: (optional) the time (in seconds) to retry a connection if the connection has failed (default: 10)
|
||||
- `ipAddress`: Hostname or IP address of the matrix switch
|
||||
- `userName`: (optional) the username to login with (only if Telnet Login is enabled)
|
||||
- `password`: (optional) the password to login with (only if Telnet Login is enabled)
|
||||
- `polling`: (optional) the time (in seconds) to poll the state from the actual switch (default: 600)
|
||||
- `ping`: (optional) the time (in seconds) to ping the switch to keep our connection alive (default: 30)
|
||||
- `retryPolling`: (optional) the time (in seconds) to retry a connection if the connection has failed (default: 10)
|
||||
|
||||
### username/password
|
||||
|
||||
The userName/password configuration options are optional and are only required if you have your switch set with "Telnet Login" enabled (on the "Network" tab from the switch configuration UI). The user must be a valid user listed on the "Users" tab of the switch configuration UI in this case.
|
||||
The userName/password configuration options are optional and are only required if you have your switch set with "Telnet Login" enabled (on the "Network" tab from the switch configuration UI).
|
||||
The user must be a valid user listed on the "Users" tab of the switch configuration UI in this case.
|
||||
|
||||
### polling
|
||||
|
||||
|
@ -160,7 +161,6 @@ If it is higher than the "IP Timeout" value, the switch will timeout our connect
|
|||
| pro3-1616m | volume12#volume | Number | RW | Sets the volume of audio port #12 to the specified decibel level (between -79db to +15db) |
|
||||
| pro3-1616m | volume12#volumemute | Switch | RW | Mutes/Unmutes audio port #12 |
|
||||
|
||||
|
||||
### presetcmd
|
||||
|
||||
The presetcmd channel will take the following commands:
|
||||
|
@ -171,7 +171,6 @@ The presetcmd channel will take the following commands:
|
|||
| recallX | Sets the input/output to preset X |
|
||||
| clearX | Clears the preset X |
|
||||
|
||||
|
||||
Note: if X doesn't exist - nothing will occur.
|
||||
The # of presets allowed depends on the firmware you are using (5 presets up to rev 13, 10 for rev 14 and above).
|
||||
|
||||
|
@ -185,7 +184,6 @@ The matrixcmd channel will take the following commands:
|
|||
| resetports | Resets the ports back to their default values (outputX=inputX) |
|
||||
| allportsX | Sets all the output ports to the input port X |
|
||||
|
||||
|
||||
Note: if X doesn't exist - nothing will occur.
|
||||
The # of presets allowed depends on the firmware you are using (5 presets up to rev 13, 10 for rev 14 and above).
|
||||
|
||||
|
@ -194,16 +192,19 @@ The # of presets allowed depends on the firmware you are using (5 presets up to
|
|||
As of firmware 1.6.03 (rev 13), there are three issues on Atlona firmware (I've notified them on these issues):
|
||||
|
||||
- clearX command does not work. The TCP/IP command "ClearX" as specified in Atlona's protocol will ALWAYS return a "Command Failed". Please avoid this channel until atlona releases a new firmware.
|
||||
- There is no way to query what the current status is of: panellock, and irenable. This addon simply assumes that panellock is off and irenable is on at startup.
|
||||
- If you make a change in the switches UI that requires a reboot (mainly changing any of the settings on the "Network" tab in the switch configuration UI), this addon's connection will be inconsistently closed at different times. The thing will go OFFLINE and then back ONLINE when the reconnect attempt is made - and then it starts all over again. Please make sure you reboot as soon as possible when the switch UI notifies you.
|
||||
|
||||
- There is no way to query what the current status is of: panellock, and irenable. This addon simply assumes that panellock is off and irenable is on at startup.
|
||||
|
||||
- If you make a change in the switches UI that requires a reboot (mainly changing any of the settings on the "Network" tab in the switch configuration UI), this addon's connection will be inconsistently closed at different times.
|
||||
The thing will go OFFLINE and then back ONLINE when the reconnect attempt is made - and then it starts all over again. Please make sure you reboot as soon as possible when the switch UI notifies you.
|
||||
|
||||
- a bug in the firmware will sometimes cause memory presets to disappear after a reboot
|
||||
|
||||
As of firmware 1.6.8 (rev 14),
|
||||
|
||||
- The "clearX" command has been fixed and works now.
|
||||
- The number of presets have increased to 10
|
||||
- If telnet mode is enabled, you must use the admin username/password to issue a matrixreset
|
||||
|
||||
- The "clearX" command has been fixed and works now.
|
||||
- The number of presets have increased to 10
|
||||
- If telnet mode is enabled, you must use the admin username/password to issue a matrixreset
|
||||
|
||||
## Example
|
||||
|
||||
|
@ -211,19 +212,19 @@ As of firmware 1.6.8 (rev 14),
|
|||
|
||||
Here is an example with minimal configuration parameters (using default values with no telnet login):
|
||||
|
||||
```
|
||||
```java
|
||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30" ]
|
||||
```
|
||||
|
||||
Here is another example with minimal configuration parameters (using default values with telnet login):
|
||||
|
||||
```
|
||||
```java
|
||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345" ]
|
||||
```
|
||||
|
||||
Here is a full configuration example:
|
||||
|
||||
```
|
||||
```java
|
||||
atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345", polling=600, ping=30, retryPolling=10 ]
|
||||
```
|
||||
|
||||
|
@ -231,7 +232,7 @@ atlona:pro3-88m:home [ ipAddress="192.168.1.30", userName="me", password="12345"
|
|||
|
||||
Here is an example of items for the AT-UHD-PRO33-88M:
|
||||
|
||||
```
|
||||
```java
|
||||
Switch Atlona_Power "Power" { channel = "atlona:pro3-88m:home:primary#power" }
|
||||
Switch Atlona_PanelLock "Panel Lock" { channel = "atlona:pro3-88m:home:primary#panellock" }
|
||||
Switch Atlona_Presets "Preset Command" { channel = "atlona:pro3-88m:home:primary#presetcmd" }
|
||||
|
@ -274,9 +275,8 @@ Switch Atlona_VolumeMute6 "Mute 6" { channel = "atlona:pro3-88m:home:volume1#vol
|
|||
|
||||
### SiteMap
|
||||
|
||||
```
|
||||
sitemap demo label="Main Menu"
|
||||
{
|
||||
```perl
|
||||
sitemap demo label="Main Menu" {
|
||||
Frame label="Atlona" {
|
||||
Text label="Device" {
|
||||
Switch item=Atlona_Power
|
||||
|
@ -326,14 +326,14 @@ sitemap demo label="Main Menu"
|
|||
}
|
||||
```
|
||||
|
||||
# Transformation Maps
|
||||
## Transformation Maps
|
||||
|
||||
The following is some example transformation maps you can create.
|
||||
Be sure they are in sync with the mappings above.
|
||||
|
||||
### atlonainputports.map
|
||||
|
||||
```
|
||||
```text
|
||||
1=CableBox
|
||||
2=BluRay Player
|
||||
3=Roku
|
||||
|
@ -348,7 +348,7 @@ NULL=-
|
|||
|
||||
### atlonaoutputports.map
|
||||
|
||||
```
|
||||
```text
|
||||
1=Living Room
|
||||
2=Master Bed
|
||||
3=Kitchen
|
||||
|
|
|
@ -20,9 +20,8 @@ See [the Autelis website](http://www.autelis.com) and the [Autelis Command Prot
|
|||
|
||||
This binding supports:
|
||||
|
||||
* Read circuit, auxiliary, temperature, pump, chemistry and system values
|
||||
* Control circuit, auxiliary lighting scenes, and temperature set points
|
||||
|
||||
- Read circuit, auxiliary, temperature, pump, chemistry and system values
|
||||
- Control circuit, auxiliary lighting scenes, and temperature set points
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -39,7 +38,7 @@ The Autelis binding requires the host, port, username and password
|
|||
|
||||
In the thing file, this looks e.g. like
|
||||
|
||||
```
|
||||
```text
|
||||
Thing autelis:myPool [ host="192.168.1.10", port="80", user="admin", password="admin"]
|
||||
```
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ install: auto
|
|||
|
||||
The binding integrates the AHA ( [AVM Home Automation](http://avm.de/ratgeber/smart-home/) ) system.
|
||||
|
||||
|
||||
## Supported Things
|
||||
|
||||
### FRITZ!Box
|
||||
|
@ -44,7 +43,8 @@ This device does not contain a temperature sensor.
|
|||
|
||||
### FRITZ!DECT 301 / FRITZ!DECT 300 / Comet DECT
|
||||
|
||||
These devices [FRITZ!DECT 301](https://avm.de/produkte/fritzdect/fritzdect-301/), FRITZ!DECT 300 and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol.
|
||||
These devices [FRITZ!DECT 301](https://avm.de/produkte/fritzdect/fritzdect-301/),
|
||||
FRITZ!DECT 300 and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol.
|
||||
The FRITZ!Box can handle up to twelve heating thermostats.
|
||||
The binding provides channels for reading and setting the temperature.
|
||||
Additionally you can check the eco temperature, the comfort temperature and the battery level of the device.
|
||||
|
@ -58,34 +58,32 @@ The credentials given in the settings must have HomeAuto permissions.
|
|||
|
||||
If correct credentials are set in the bridge configuration, connected AHA devices are discovered automatically (may last up to 3 minutes).
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
### FRITZ!Box
|
||||
|
||||
* ipAddress (mandatory), default "fritz.box"
|
||||
* protocol (optional, http or https), default "http"
|
||||
* port (optional, 0 to 65335), no default (derived from protocol: 80 or 443)
|
||||
* password (optional), no default (depends on FRITZ!Box security configuration)
|
||||
* user (optional), no default (depends on FRITZ!Box security configuration)
|
||||
* pollingInterval (optional, 5 to 60), default 15 (in seconds)
|
||||
* asyncTimeout (optional, 1000 to 60000), default 10000 (in millis)
|
||||
* syncTimeout (optional, 500 to 15000), default 2000 (in millis)
|
||||
- ipAddress (mandatory), default "fritz.box"
|
||||
- protocol (optional, http or https), default "http"
|
||||
- port (optional, 0 to 65335), no default (derived from protocol: 80 or 443)
|
||||
- password (optional), no default (depends on FRITZ!Box security configuration)
|
||||
- user (optional), no default (depends on FRITZ!Box security configuration)
|
||||
- pollingInterval (optional, 5 to 60), default 15 (in seconds)
|
||||
- asyncTimeout (optional, 1000 to 60000), default 10000 (in millis)
|
||||
- syncTimeout (optional, 500 to 15000), default 2000 (in millis)
|
||||
|
||||
### FRITZ!Powerline 546E
|
||||
|
||||
* ipAddress (mandatory), default "fritz.powerline"
|
||||
* protocol (optional, http or https), default "http"
|
||||
* port (optional, 0 to 65335), no default (derived from protocol: 80 or 443)
|
||||
* password (optional), no default (depends on FRITZ!Powerline security configuration)
|
||||
* pollingInterval (optional, 5 to 60), default 15 (in seconds)
|
||||
* asyncTimeout (optional, 1000 to 60000), default 10000 (in millis)
|
||||
* syncTimeout (optional, 500 to 15000), default 2000 (in millis)
|
||||
- ipAddress (mandatory), default "fritz.powerline"
|
||||
- protocol (optional, http or https), default "http"
|
||||
- port (optional, 0 to 65335), no default (derived from protocol: 80 or 443)
|
||||
- password (optional), no default (depends on FRITZ!Powerline security configuration)
|
||||
- pollingInterval (optional, 5 to 60), default 15 (in seconds)
|
||||
- asyncTimeout (optional, 1000 to 60000), default 10000 (in millis)
|
||||
- syncTimeout (optional, 500 to 15000), default 2000 (in millis)
|
||||
|
||||
### AHA things connected to FRITZ!Box bridge
|
||||
|
||||
* AIN (mandatory), no default (AIN number of device)
|
||||
|
||||
- AIN (mandatory), no default (AIN number of device)
|
||||
|
||||
## Supported Channels
|
||||
|
||||
|
@ -107,12 +105,11 @@ If correct credentials are set in the bridge configuration, connected AHA device
|
|||
| next_temp | Number | Next Set Temperature if scheduler is activated in the FRITZ!Box settings (in °C) - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT |
|
||||
| battery_low | Switch | Battery Level Low (ON/OFF) - FRITZ!OS 6.80 | FRITZ!DECT 301, FRITZ!DECT 300, Comet DECT |
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
demo.things:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge avmfritz:fritzbox:1 @ "Office" [ ipAddress="192.168.x.x", password="xxx", user="xxx" ] {
|
||||
Thing FRITZ_DECT_200 xxxxxxxxxxxx "FRITZ!DECT 200 #1" @ "Living Room" [ ain="xxxxxxxxxxxx" ]
|
||||
Thing FRITZ_Powerline_546E yy_yy_yy_yy_yy_yy "FRITZ!Powerline 546E #2" @ "Office" [ ain="yy:yy:yy:yy:yy:yy" ]
|
||||
|
@ -122,7 +119,7 @@ Bridge avmfritz:fritzbox:1 @ "Office" [ ipAddress="192.168.x.x", password="xxx",
|
|||
|
||||
demo.items:
|
||||
|
||||
```
|
||||
```java
|
||||
Switch Outlet1 "Switchable outlet" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:outlet" }
|
||||
Number Temperature1 "Actual measured temperature [%.1f °C]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:temperature" }
|
||||
Number Energy1 "Accumulated energy consumption [%.3f Wh]" { channel="avmfritz:FRITZ_DECT_200:1:xxxxxxxxxxxx:energy" }
|
||||
|
@ -140,23 +137,25 @@ Switch COMETDECTBattery "Battery low" (gCOMETDECT) { channel="avmfritz:Comet_DEC
|
|||
|
||||
demo.sitemap:
|
||||
|
||||
```
|
||||
sitemap demo label="Main Menu"
|
||||
{
|
||||
Frame label="FRITZ!DECT 200 switchable outlet" {
|
||||
Switch item=Outlet1 icon="poweroutlet"
|
||||
Text item=Temperature1 icon="temperature"
|
||||
Text item=Energy1 icon="energy"
|
||||
Text item=Power1 icon="energy"
|
||||
}
|
||||
Frame label="FRITZ!Powerline 546E switchable outlet" {
|
||||
Switch item=Outlet2
|
||||
}
|
||||
Frame "Comet DECT heating thermostat" {
|
||||
Text item=COMETDECTActualTemp icon="temperature"
|
||||
Setpoint item=COMETDECTSetTemp minValue=8.0 maxValue=28.0 step=0.5 icon="temperature"
|
||||
Selection item=COMETDECTRadiatorMode mappings=["ON"="ON", "OFF"="OFF", "COMFORT"="COMFORT", "ECO"="ECO", "BOOST"="BOOST"]
|
||||
Switch item=COMETDECTBattery icon="battery"
|
||||
}
|
||||
```perl
|
||||
sitemap demo label="Main Menu"{
|
||||
|
||||
Frame label="FRITZ!DECT 200 switchable outlet" {
|
||||
Switch item=Outlet1 icon="poweroutlet"
|
||||
Text item=Temperature1 icon="temperature"
|
||||
Text item=Energy1 icon="energy"
|
||||
Text item=Power1 icon="energy"
|
||||
}
|
||||
|
||||
Frame label="FRITZ!Powerline 546E switchable outlet" {
|
||||
Switch item=Outlet2
|
||||
}
|
||||
|
||||
Frame "Comet DECT heating thermostat" {
|
||||
Text item=COMETDECTActualTemp icon="temperature"
|
||||
Setpoint item=COMETDECTSetTemp minValue=8.0 maxValue=28.0 step=0.5 icon="temperature"
|
||||
Selection item=COMETDECTRadiatorMode mappings=["ON"="ON", "OFF"="OFF", "COMFORT"="COMFORT", "ECO"="ECO", "BOOST"="BOOST"]
|
||||
Switch item=COMETDECTBattery icon="battery"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -24,7 +24,6 @@ There is a single thing created for each fan connected to the network.
|
|||
Each thing has channels that allow control of the fan and the optional LED light, as well as to monitor the status of the fan.
|
||||
When the fan is controlled from the remote control, Wall Controller, or smartphone app, the openHAB items linked to the fan's channels will be updated to reflect the fan's status.
|
||||
|
||||
|
||||
## Device Discovery
|
||||
|
||||
The BigAssFan binding discovers Haiku fans on the network, and creates an inbox entry for each discovered device.
|
||||
|
@ -34,17 +33,16 @@ Background discovery polls the network every few minutes for fans.
|
|||
Background discovery is **enabled** by default.
|
||||
To **disable** background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
||||
|
||||
```
|
||||
```text
|
||||
org.openhab.binding.bigassfan.discovery.BigAssFanDiscoveryService:backgroundDiscovery.enabled=false
|
||||
```
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The fan's IP address, MAC address, and name is set at time of discovery.
|
||||
However, in the event that any of this information changes, the fan's configuration must be updated.
|
||||
|
||||
#### Manual Thing Creation
|
||||
### Manual Thing Creation
|
||||
|
||||
Fans can be manually created in the *PaperUI* or *HABmin*, or by placing a *.things* file in the *conf/things* directory.
|
||||
See example below.
|
||||
|
@ -83,12 +81,11 @@ The following channels are supported for wall controllers:
|
|||
| motion | Switch | Motion was detected |
|
||||
| time | DateTime | Wall controllers date and time |
|
||||
|
||||
|
||||
## Fan Items
|
||||
|
||||
The following item definitions would be used to control the fan.
|
||||
|
||||
```
|
||||
```java
|
||||
Switch PorchFanPower { channel="bigassfan:fan:20F85EDAA56A:fan-power" }
|
||||
Dimmer PorchFanSpeed { channel="bigassfan:fan:20F85EDAA56A:fan-speed" }
|
||||
Switch PorchFanAuto { channel="bigassfan:fan:20F85EDAA56A:fan-auto" }
|
||||
|
@ -100,7 +97,7 @@ Dimmer PorchFanSpeedMax { channel="bigassfan:fan:20F85EDAA56A:fan-le
|
|||
|
||||
The following item definitions would be used to control the light.
|
||||
|
||||
```
|
||||
```java
|
||||
Switch PorchFanLightPower { channel="bigassfan:fan:20F85EDAA56A:light-power" }
|
||||
Dimmer PorchFanLightLevel { channel="bigassfan:fan:20F85EDAA56A:light-level" }
|
||||
Switch PorchFanLightAuto { channel="bigassfan:fan:20F85EDAA56A:light-auto" }
|
||||
|
@ -112,30 +109,28 @@ String PorchFanLightPresent { channel="bigassfan:fan:20F85EDAA56A:light-
|
|||
|
||||
The following readonly items are provided by the fan.
|
||||
|
||||
```
|
||||
```java
|
||||
Switch PorchFanMotionSensor { channel="bigassfan:fan:20F85EDAA56A:motion" }
|
||||
DateTime PorchFanTime { channel="bigassfan:fan:20F85EDAA56A:time" }
|
||||
```
|
||||
|
||||
|
||||
## Wall Controller Items
|
||||
|
||||
```
|
||||
```java
|
||||
Switch PorchControllerMotionSensor { channel="bigassfan:controller:20F85ED87F01:motion" }
|
||||
DateTime PorchControllerTime { channel="bigassfan:controller:20F85ED87F01:time" }
|
||||
```
|
||||
|
||||
|
||||
### Sitemap
|
||||
|
||||
This is an example of how to set up your sitemap.
|
||||
|
||||
```
|
||||
```perl
|
||||
Frame label="Control My BigAssFan" {
|
||||
Switch item=PorchFanPower label="Fan Power [%s]"
|
||||
Slider item=PorchFanSpeed label="Fan Speed [%s %%]"
|
||||
Switch item=PorchFanLightPower label="Light Power [%s]"
|
||||
Slider item=PorchFanLightSpeed label="Light Brightness [%s %%]"
|
||||
Slider item=PorchFanLightLevel label="Light Brightness [%s %%]"
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -144,7 +139,7 @@ Frame label="Control My BigAssFan" {
|
|||
Place a file named *bigassfan.things* in the *conf/things* directory.
|
||||
The file should contain lines formatted like this.
|
||||
|
||||
```
|
||||
```java
|
||||
bigassfan:fan:20F85EDAA56A [ label="Porch Fan", ipAddress="192.168.12.62", macAddress="20:F8:5E:DA:A5:6A" ]
|
||||
```
|
||||
|
||||
|
|
|
@ -31,11 +31,10 @@ The refresh interval is specified in seconds.
|
|||
|
||||
A possible entry in your thing file could be:
|
||||
|
||||
```
|
||||
```java
|
||||
boschindego:indego:lawnmower [username="myname@myhost.tld", password="idontneedtocutthelawnagain", refresh=120]
|
||||
```
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
| item-type | description | |
|
||||
|
@ -49,7 +48,7 @@ boschindego:indego:lawnmower [username="myname@myhost.tld", password="idontneedt
|
|||
|
||||
For example you can use this sitemap entry to control the mower manually:
|
||||
|
||||
```
|
||||
```perl
|
||||
Switch item=indegostate mappings=[ 1="Mow", 2="Return",3="Pause" ]
|
||||
```
|
||||
|
||||
|
@ -57,7 +56,7 @@ Switch item=indegostate mappings=[ 1="Mow", 2="Return",3="Pause" ]
|
|||
|
||||
You can use this as .map file
|
||||
|
||||
```
|
||||
```text
|
||||
0=Reading status
|
||||
257=Charging
|
||||
258=Docked
|
||||
|
|
|
@ -27,7 +27,11 @@ This can be configured on the binding level:
|
|||
|
||||
## Supported Things
|
||||
|
||||
The binding currently supports the "classic" Chromecast that is an HDMI dongle as well as the Chromecast Audio, which only does audio streaming and offers a headphone jack.
|
||||
| Things | Description | Thing Type |
|
||||
|--------------------|--------------------------------------------------------------------------------------|------------|
|
||||
| Chromecast | Classic HDMI video Chromecasts and Google Homes | chromecast |
|
||||
| Chromecast Audio | The Chromecast whichonly does audio streaming and offers a headphone jack | audio |
|
||||
| Audio Group | A Chromecast audio group for multi-room audio defined via the Chromecast app | audiogroup |
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -41,61 +45,84 @@ The only configuration parameter is the `ipAddress`.
|
|||
|
||||
## Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|-----------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| control | Player | Player control; currently only supports play/pause and does not correctly update, if the state changes on the device itself |
|
||||
| volume | Dimmer | Control the volume, this is also updated if the volume is changed by another app |
|
||||
| playuri | String | Can be used to tell the Chromecast to play media from a given url |
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| control | Player | Player control; currently only supports play/pause and does not correctly update, if the state changes on the device itself |
|
||||
| volume | Dimmer | Control the volume, this is also updated if the volume is changed by another app |
|
||||
| mute | Switch | Mute the audio |
|
||||
| playuri | String | Can be used to tell the Chromecast to play media from a given url |
|
||||
| appName | String | Name of currently running application |
|
||||
| appId | String | ID of currently running application |
|
||||
| idling | Switch | Read-only indication on weather Chromecast is on idle screen |
|
||||
| statustext | String | |
|
||||
| currentTime | Number | |
|
||||
| duration | Number | Duration of current track (null if between tracks) |
|
||||
| metadataType | String | Type of metadata, this indicates what metadata may be available. One of: GenericMediaMetadata, MovieMediaMetadata, TvShowMediaMetadata, MusicTrackMediaMetadata, PhotoMediaMetadata. |
|
||||
| subtitle | String | (GenericMediaMetadata) Descriptive subtitle of the content |
|
||||
| title | String | (GenericMediaMetadata) Descriptive title of the content |
|
||||
| image | Image | (GenericMediaMetadata) Image for current media |
|
||||
| imageSrc | String | (GenericMediaMetadata) URL of image for current media |
|
||||
| releaseDate | DateTime | (GenericMediaMetadata) ISO 8601 date and time this content was released |
|
||||
| albumArtist | String | (MusicTrackMediaMetadata) Name of the artist associated with the album featuring this track |
|
||||
| albumName | String | (MusicTrackMediaMetadata) Album or collection from which this track is drawn |
|
||||
| artist | String | (MusicTrackMediaMetadata) Name of the artist associated with the media track |
|
||||
| composer | String | (MusicTrackMediaMetadata) Name of the composer associated with the media track |
|
||||
| discNumber | Number | (MusicTrackMediaMetadata) Number of the volume (for example, a disc) of the album |
|
||||
| trackNumber | Number | (MusicTrackMediaMetadata) Number of the track on the album |
|
||||
| creationDate | DateTime | (PhotoMediaMetadata) ISO 8601 date and time this photograph was taken |
|
||||
| locationName | String | (PhotoMediaMetadata) Verbal location where the photograph was taken; for example, "Madrid, Spain." |
|
||||
| location | Point | (PhotoMediaMetadata) Geographical location of where the photograph was taken |
|
||||
| broadcastDate | DateTime | (TvShowMediaMetadata) ISO 8601 date and time this episode was released |
|
||||
| episodeNumber | Number | (TvShowMediaMetadata) Episode number (in the season) of the t.v. show |
|
||||
| seasonNumber | Number | (TvShowMediaMetadata) Season number of the t.v. show |
|
||||
| seriesTitle | String | (TvShowMediaMetadata) Descriptive title of the t.v. series |
|
||||
| studio | String | (TvShowMediaMetadata) Studio which released the content |
|
||||
|
||||
## Full Example
|
||||
|
||||
services.cfg:
|
||||
|
||||
```
|
||||
```java
|
||||
binding.chromecast:callbackUrl=http://192.168.30.58:8080
|
||||
```
|
||||
|
||||
demo.things:
|
||||
|
||||
```
|
||||
```java
|
||||
chromecast:audio:myCC [ ipAddress="192.168.xxx.xxx"]
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
||||
```
|
||||
```java
|
||||
Dimmer Volume { channel="chromecast:audio:myCC:volume" }
|
||||
Player Music { channel="chromecast:audio:myCC:control" }
|
||||
```
|
||||
|
||||
demo.rules:
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "Turn on kitchen speakers when Chromecast starts playing music"
|
||||
when
|
||||
Item chromecast_chromecast_38e621581281c7675a777e7b474811ed_appId changed
|
||||
then
|
||||
{
|
||||
logInfo("RULE.AUDIO", "Chromecast id changed!")
|
||||
logInfo("RULE.AUDIO", "Chromecast id changed!")
|
||||
|
||||
// 36061251 Pandora
|
||||
// 2872939A Google Play Music
|
||||
// 36061251 Pandora
|
||||
// 2872939A Google Play Music
|
||||
|
||||
if (chromecast_chromecast_38e621581281c7675a777e7b474811ed_appId.state == "36061251"
|
||||
|| chromecast_chromecast_38e621581281c7675a777e7b474811ed_appId.state == "2872939A") {
|
||||
kitchen_audio_power.sendCommand(ON)
|
||||
kitchen_audio_source.sendCommand(1)
|
||||
}
|
||||
}
|
||||
if (chromecast_chromecast_38e621581281c7675a777e7b474811ed_appId.state == "36061251"
|
||||
|| chromecast_chromecast_38e621581281c7675a777e7b474811ed_appId.state == "2872939A") {
|
||||
kitchen_audio_power.sendCommand(ON)
|
||||
kitchen_audio_source.sendCommand(1)
|
||||
}
|
||||
end
|
||||
```
|
||||
|
||||
demo.sitemap:
|
||||
|
||||
```
|
||||
sitemap demo label="Main Menu"
|
||||
{
|
||||
```perl
|
||||
sitemap demo label="Main Menu" {
|
||||
Frame {
|
||||
Default item=Music
|
||||
Slider item=Volume icon=soundvolume
|
||||
|
@ -103,13 +130,13 @@ sitemap demo label="Main Menu"
|
|||
}
|
||||
```
|
||||
|
||||
```
|
||||
```perl
|
||||
sitemap chromecast label="Chromecasts" {
|
||||
Frame label="Family Room: What's Playing" {
|
||||
Image item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_image
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_artist label="Artist [%s]"
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_title label="Title [%s]"
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_albumName label="Album [%s]"
|
||||
}
|
||||
Frame label="Family Room: What's Playing" {
|
||||
Image item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_image
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_artist label="Artist [%s]"
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_title label="Title [%s]"
|
||||
Text item=chromecast_chromecast_38e621581281c7675a777e7b474811ed_albumName label="Album [%s]"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -52,8 +52,8 @@ This binding captures those messages, decodes them and updates the item state.
|
|||
|
||||
The binding currently supports the following thing types:
|
||||
|
||||
* switch - which supports on and off states
|
||||
* dimmer - which can be dimmed in addition to turned on or off
|
||||
- switch - which supports on and off states
|
||||
- dimmer - which can be dimmed in addition to turned on or off
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -82,26 +82,30 @@ Each attached thing must specify the `houseUnitCode` set in the device (i.e. A1)
|
|||
|
||||
### Things
|
||||
|
||||
Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
|
||||
Thing switch SwitchA1 [ houseUnitCode="A1" ]
|
||||
Thing dimmer DimmerA2 [ houseUnitCode="A2" ]
|
||||
}
|
||||
```perl
|
||||
Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
|
||||
Thing switch SwitchA1 [ houseUnitCode="A1" ]
|
||||
Thing dimmer DimmerA2 [ houseUnitCode="A2" ]
|
||||
}
|
||||
```
|
||||
|
||||
### Items
|
||||
|
||||
Switch SwitchA1 "Kitchen Plug" <light> (someGroup) { channel="cm11a:switch:MyCm11a:SwitchA1:switchstatus" }
|
||||
Dimmer DimmerA2 "Porch lights" <slider> (someGroup) { channel="cm11a:dimmer:MyCm11a:DimmerA2:lightlevel" }
|
||||
|
||||
```java
|
||||
SwitchA1 "Kitchen Plug" <light> (someGroup) { channel="cm11a:switch:MyCm11a:SwitchA1:switchstatus" }
|
||||
DimmerA2 "Porch lights" <slider> (someGroup) { channel="cm11a:dimmer:MyCm11a:DimmerA2:lightlevel" }
|
||||
```
|
||||
|
||||
## Known issues
|
||||
|
||||
1. When openHAB starts up it doesn't restore the last state of each module.
|
||||
And, the cm11a does not provide a discovery service. Therefore it assumes everything off.
|
||||
|
||||
2. The dimmer slider can get out of sync with the actual light because of the way X10 works.
|
||||
On some switches if you turn them on they will go to full bright and some switches will return to the previous dim level.
|
||||
|
||||
## References
|
||||
|
||||
1. [CM11A (X10) Protocol Document](http://wanderingsamurai.net/electronics/cm11a-x10-protocol-document)
|
||||
2. [Heyu - control software for the cm11a](http://www.heyu.org/)
|
||||
3. cm11a Controllers are available for purchase from several sites on the internet
|
||||
1. [CM11A (X10) Protocol Document](http://wanderingsamurai.net/electronics/cm11a-x10-protocol-document)
|
||||
2. [Heyu - control software for the cm11a](http://www.heyu.org/)
|
||||
3. cm11a Controllers are available for purchase from several sites on the internet
|
||||
|
|
|
@ -23,13 +23,12 @@ The CoolMasterNet protocol does not support automatic discovery.
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
* `controller` is a openHAB "bridge", and represents a single CoolMasterNet device. A single controller supports one or more HVAC units.
|
||||
|
||||
* `hvac` is an HVAC device connected to a controller. Each `hvac` thing is identified by a CoolMasterNet UID (refer to CoolMasterNet controller documentation).
|
||||
- `controller` is a openHAB "bridge", and represents a single CoolMasterNet device. A single controller supports one or more HVAC units.
|
||||
- `hvac` is an HVAC device connected to a controller. Each `hvac` thing is identified by a CoolMasterNet UID (refer to CoolMasterNet controller documentation).
|
||||
|
||||
Example demo.things configuration for two HVAC devices connected to a CoolMasterNet device found at IP 192.168.0.100:
|
||||
|
||||
```
|
||||
```perl
|
||||
Bridge coolmasternet:controller:main [ host="192.168.0.100" ] {
|
||||
Thing hvac a [ uid="L1.100" ]
|
||||
Thing hvac b [ uid="L1.101" ]
|
||||
|
@ -38,43 +37,18 @@ Bridge coolmasternet:controller:main [ host="192.168.0.100" ] {
|
|||
|
||||
## Channels
|
||||
|
||||
<table>
|
||||
<tr><td><b>Channel</b></td><td><b>Item Type</b></td><td><b>Description</b></td></tr>
|
||||
<tr>
|
||||
<td>on</td>
|
||||
<td>Switch</td>
|
||||
<td>Turn HVAC unit on and off.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mode</td>
|
||||
<td>String</td>
|
||||
<td>HVAC Mode. "Auto", "Cool", "Heat", "Dry" or "Fan Only". Unit may not support all modes.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fan</td>
|
||||
<td>String</td>
|
||||
<td>Fan Mode. "Auto", "Low", "Medium", "High" or "Top". Unit may not support all speeds.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>set_temp</td>
|
||||
<td>Number</td>
|
||||
<td>Temperature target setpoint.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>current_temp</td>
|
||||
<td>Number</td>
|
||||
<td>Current temperature at HVAC unit.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>louvre</td>
|
||||
<td>String</td>
|
||||
<td>Louvre angle. "No Control", "Auto Swing", "Horizontal", "30 degrees", "45 degrees", "60 degrees" or "Vertical". Unit may not support all angles.</td>
|
||||
</tr>
|
||||
</table>
|
||||
| Channel | Item Type | Description |
|
||||
|--------------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| on | Switch | Turn HVAC unit on and off. |
|
||||
| mode | String | HVAC Mode. "Auto", "Cool", "Heat", "Dry" or "Fan Only". Unit may not support all modes. |
|
||||
| fan | String | Fan Mode. "Auto", "Low", "Medium", "High" or "Top". Unit may not support all speeds. |
|
||||
| set_temp | Number | Temperature target setpoint. |
|
||||
| current_temp | Number | Current temperature at HVAC unit. |
|
||||
| louvre | String | Louvre angle. "No Control", "Auto Swing", "Horizontal", "30 degrees", "45 degrees", "60 degrees" or "Vertical". Unit may not support all angles. |
|
||||
|
||||
## Item Configuration
|
||||
|
||||
```
|
||||
```java
|
||||
Switch ACOn "Lounge AC ON/OFF" { channel="coolmasternet:hvac:main:a:on"}
|
||||
String ACMode "Lounge AC Mode" { channel="coolmasternet:hvac:main:a:mode" }
|
||||
Number ACTemp "Lounge Temp" { channel="coolmasternet:hvac:main:a:current_temp" }
|
||||
|
|
|
@ -38,14 +38,14 @@ Once added the configuration must be updated to specify the PIN code located on
|
|||
|
||||
### DCH-S150
|
||||
|
||||
* **ipAddress** - Hostname or IP of the device
|
||||
* **pin** - PIN code from the back of the device
|
||||
- **ipAddress** - Hostname or IP of the device
|
||||
- **pin** - PIN code from the back of the device
|
||||
|
||||
To manually configure a DCH-S150 Thing you must specify its IP address and PIN code.
|
||||
|
||||
In the Thing file, this looks like e.g.
|
||||
|
||||
```
|
||||
```java
|
||||
Thing dlinksmarthome:DCH-S150:mysensor [ ipAddress="192.168.2.132" pin="1234" ]
|
||||
```
|
||||
|
||||
|
@ -53,13 +53,13 @@ In the Thing file, this looks like e.g.
|
|||
|
||||
### DCH-S150
|
||||
|
||||
* **motion** - Triggered when the sensor detects motion.
|
||||
- **motion** - Triggered when the sensor detects motion.
|
||||
|
||||
## Example usage
|
||||
|
||||
### DCH-S150
|
||||
|
||||
```
|
||||
```perl
|
||||
rule "Landing motion"
|
||||
when
|
||||
Channel "dlinksmarthome:DCH-S150:90-8D-78-XX-XX-XX:motion" triggered
|
||||
|
|
|
@ -18,22 +18,22 @@ install: auto
|
|||
The DSC PowerSeries Alarm System is a popular do-it-yourself home security system, which can be monitored and controlled remotely through a standard web-browser or mobile device.
|
||||
|
||||
This is the binding for the DSC PowerSeries Alarm System, utilizing either the EyezOn Envisalink 4/3/2DS interface or the DSC IT-100 RS-232 interface.
|
||||
It provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 4/3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface. Additionally, their is provision to connect to the DSC IT-100 interface through a TCP serial server.
|
||||
It provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 4/3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface.
|
||||
Additionally, their is provision to connect to the DSC IT-100 interface through a TCP serial server.
|
||||
|
||||
## Supported Things
|
||||
|
||||
This binding supports the following Thing types
|
||||
|
||||
<table>
|
||||
<tr><td><b>Thing</b></td><td><b>Thing Type</b></td><td><b>Description</b></td></tr>
|
||||
<tr><td>envisalink</td><td>Bridge</td><td>The EyezOn Envisalink 3/2DS interface.</td></tr>
|
||||
<tr><td>it100</td><td>Bridge</td><td>The DSC IT-100 RS-232 interface.</td></tr>
|
||||
<tr><td>tcpserver</td><td>Bridge</td><td>The DSC IT-100 TCP Server network interface.</td></tr>
|
||||
<tr><td>panel</td><td>Thing</td><td>The basic representation of the DSC Alarm System.</td></tr>
|
||||
<tr><td>partition</td><td>Thing</td><td>Represents a controllable area within a DSC Alarm system.</td></tr>
|
||||
<tr><td>zone</td><td>Thing</td><td>Represents a physical device such as a door, window, or motion sensor.</td></tr>
|
||||
<tr><td>keypad</td><td>Thing</td><td>Represents the central administrative unit.</td></tr>
|
||||
</table>
|
||||
| Thing | Thing Type | Description |
|
||||
|------------|------------|------------------------------------------------------------------------|
|
||||
| envisalink | Bridge | The EyezOn Envisalink 3/2DS interface. |
|
||||
| it100 | Bridge | The DSC IT-100 RS-232 interface. |
|
||||
| tcpserver | Bridge | The DSC IT-100 TCP Server network interface. |
|
||||
| panel | Thing | The basic representation of the DSC Alarm System. |
|
||||
| partition | Thing | Represents a controllable area within a DSC Alarm system. |
|
||||
| zone | Thing | Represents a physical device such as a door, window, or motion sensor. |
|
||||
| keypad | Thing | Represents the central administrative unit. |
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
|
@ -42,17 +42,23 @@ Most settings are through thing configuration parameters.
|
|||
|
||||
## Discovery
|
||||
|
||||
The DSC Alarm binding incorporates several discovery modes in order to find DSC Alarm systems. First, there is the Envisalink bridge discovery mode which performs a network query for any Envisalink adapters and adds them to the discovery inbox.
|
||||
The DSC Alarm binding incorporates several discovery modes in order to find DSC Alarm systems.
|
||||
First, there is the Envisalink bridge discovery mode which performs a network query for any Envisalink adapters and adds them to the discovery inbox.
|
||||
Second, there is The IT-100 bridge discovery mode which will search serial ports for any IT-100 adapters and add them to the discovery inbox.
|
||||
The bridge discovery modes are started manually through PaperUI. Third, after a bridge is discovered and available to openHAB, the binding will attempt to discover DSC Alarm things and add them to the discovery inbox. The TCP Server bridge does not implement bridge discovery but will utilize thing discovery once it is online.
|
||||
|
||||
Note: The Envisalink Bridge discovery does a TCP scan across your local network to find the interface. This may create issues on the network so it is suggested that caution be used when trying this discovery. The recommended method would be to manually add and configure the bridge through the 'dscalarm.thing' file or the PaperUI. And then allow the binding to discover the DSC Alarm things.
|
||||
|
||||
The bridge discovery modes are started manually through PaperUI.
|
||||
Third, after a bridge is discovered and available to openHAB, the binding will attempt to discover DSC Alarm things and add them to the discovery inbox.
|
||||
The TCP Server bridge does not implement bridge discovery but will utilize thing discovery once it is online.
|
||||
|
||||
Note:
|
||||
The Envisalink Bridge discovery does a TCP scan across your local network to find the interface.
|
||||
This may create issues on the network so it is suggested that caution be used when trying this discovery.
|
||||
The recommended method would be to manually add and configure the bridge through the 'dscalarm.thing' file or the PaperUI.
|
||||
And then allow the binding to discover the DSC Alarm things.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
DSC Alarm things can be configured either through the online configuration utility via discovery, or manually through the 'dscalarm.things' configuration file. The following table shows the available configuration parameters for each thing.
|
||||
DSC Alarm things can be configured either through the online configuration utility via discovery, or manually through the 'dscalarm.things' configuration file.
|
||||
The following table shows the available configuration parameters for each thing.
|
||||
|
||||
<table>
|
||||
<tr><td><b>Thing</b></td><td><b>Configuration Parameters</b></td></tr>
|
||||
|
@ -65,27 +71,28 @@ DSC Alarm things can be configured either through the online configuration utili
|
|||
<tr><td>keypad</td><td>No parameters</td></tr>
|
||||
</table>
|
||||
|
||||
The binding can be configured manually if discovery is not used. A thing configuration file in the format 'bindingName.things' would need to be created, and placed in the 'conf/things' folder. Here is an example of a thing configuration file called 'dscalarm.things':
|
||||
The binding can be configured manually if discovery is not used.
|
||||
A thing configuration file in the format 'bindingName.things' would need to be created, and placed in the 'conf/things' folder.
|
||||
Here is an example of a thing configuration file called 'dscalarm.things':
|
||||
|
||||
```
|
||||
Bridge dscalarm:envisalink:MyBridgeName [ ipAddress="192.168.0.100" ]
|
||||
{
|
||||
Thing panel panel
|
||||
Thing partition partition1 [ partitionNumber=1 ]
|
||||
Thing zone zone1 [ partitionNumber=1, zoneNumber=1 ]
|
||||
Thing zone zone9 [ partitionNumber=1, zoneNumber=9 ]
|
||||
Thing zone zone10 [ partitionNumber=1, zoneNumber=10 ]
|
||||
Thing zone zone11 [ partitionNumber=1, zoneNumber=11 ]
|
||||
Thing zone zone12 [ partitionNumber=1, zoneNumber=12 ]
|
||||
Thing zone zone13 [ partitionNumber=1, zoneNumber=13 ]
|
||||
Thing zone zone14 [ partitionNumber=1, zoneNumber=14 ]
|
||||
Thing zone zone15 [ partitionNumber=1, zoneNumber=15 ]
|
||||
Thing zone zone21 [ partitionNumber=1, zoneNumber=21 ]
|
||||
Thing zone zone22 [ partitionNumber=1, zoneNumber=22 ]
|
||||
Thing zone zone23 [ partitionNumber=1, zoneNumber=23 ]
|
||||
Thing zone zone24 [ partitionNumber=1, zoneNumber=24 ]
|
||||
Thing zone zone25 [ partitionNumber=1, zoneNumber=25 ]
|
||||
Thing keypad keypad
|
||||
```perl
|
||||
Bridge dscalarm:envisalink:MyBridgeName [ ipAddress="192.168.0.100" ] {
|
||||
Thing panel panel
|
||||
Thing partition partition1 [ partitionNumber=1 ]
|
||||
Thing zone zone1 [ partitionNumber=1, zoneNumber=1 ]
|
||||
Thing zone zone9 [ partitionNumber=1, zoneNumber=9 ]
|
||||
Thing zone zone10 [ partitionNumber=1, zoneNumber=10 ]
|
||||
Thing zone zone11 [ partitionNumber=1, zoneNumber=11 ]
|
||||
Thing zone zone12 [ partitionNumber=1, zoneNumber=12 ]
|
||||
Thing zone zone13 [ partitionNumber=1, zoneNumber=13 ]
|
||||
Thing zone zone14 [ partitionNumber=1, zoneNumber=14 ]
|
||||
Thing zone zone15 [ partitionNumber=1, zoneNumber=15 ]
|
||||
Thing zone zone21 [ partitionNumber=1, zoneNumber=21 ]
|
||||
Thing zone zone22 [ partitionNumber=1, zoneNumber=22 ]
|
||||
Thing zone zone23 [ partitionNumber=1, zoneNumber=23 ]
|
||||
Thing zone zone24 [ partitionNumber=1, zoneNumber=24 ]
|
||||
Thing zone zone25 [ partitionNumber=1, zoneNumber=25 ]
|
||||
Thing keypad keypad
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -191,7 +198,7 @@ DSC Alarm things support a variety of channels as seen below in the following ta
|
|||
|
||||
The following is an example of an item file (dscalarm.items):
|
||||
|
||||
```
|
||||
```java
|
||||
Group DSCAlarm
|
||||
Group DSCAlarmPanel (DSCAlarm)
|
||||
Group DSCAlarmPartitions (DSCAlarm)
|
||||
|
@ -401,7 +408,7 @@ Number KEYPAD_AC_LED "AC LED Status" <acLED> (DSCAlarmKeypads) {channel="dscalar
|
|||
|
||||
Here is an example sitemap:
|
||||
|
||||
```
|
||||
```perl
|
||||
Frame label="Alarm System" {
|
||||
Text label="DSC Alarm System" {
|
||||
Frame label="Panel" {
|
||||
|
@ -609,7 +616,7 @@ Here is an example sitemap:
|
|||
|
||||
Sample Rules for Sending a DSC Alarm Command
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "SendKeystrokeStringCommand"
|
||||
when
|
||||
Item SwitchItemName received command ON
|
||||
|
|
|
@ -18,64 +18,153 @@ This binding integrates the possibility to execute arbitrary shell commands.
|
|||
|
||||
## Supported Things
|
||||
|
||||
Currently, the binding supports a single type of Thing, being the ```command``` Thing.
|
||||
Currently, the binding supports a single type of Thing, being the `command` Thing.
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
The binding does not require any specific configuration.
|
||||
|
||||
Note that the commands are executed in the context and with the privileges of the process running the java virtual machine.
|
||||
|
||||
**Linux:**
|
||||
Note that the commands are executed in the context and with the privileges of the process running the Java Virtual Machine.
|
||||
On a Linux system the system user `openhab` needs to have the privileges needed to execute your intended command.
|
||||
It is advised to test the correct operation of the command in the scope of the `openhab` user on the command line first:
|
||||
|
||||
```shell
|
||||
sudo -u openhab <YOUR COMMAND>
|
||||
```
|
||||
It is not advised to run the virtual machine as superuser/root.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The `command` Thing requires the command to execute on the shell.
|
||||
.
|
||||
The "command" Thing requires the command to execute on the shell.
|
||||
Optionally one can specify:
|
||||
|
||||
- a transformation to apply on the execution result,
|
||||
- an interval, in seconds, the command will be repeatedly executed,
|
||||
- a time-out, in seconds, the execution of the command will time out, and lastly,
|
||||
- a boolean parameter to make the command execute immediately every time the state of the input channel has changed.
|
||||
|
||||
- `transform` - A [transformation](https://docs.openhab.org/addons/transformations.html) to apply on the execution result,
|
||||
- `interval` - An interval, in seconds, the command will be repeatedly executed,
|
||||
- `timeout` - A time-out, in seconds, the execution of the command will time out, and lastly,
|
||||
- `autorun` - A boolean parameter to make the command execute immediately every time the state of the input channel has changed.
|
||||
|
||||
For each command a separate Thing has to be defined.
|
||||
|
||||
```
|
||||
Thing exec:command:apc [command="/usr/local/bin/apcaccess status", interval=15, timeout=5, autorun=false]
|
||||
```java
|
||||
Thing exec:command:uniquename [command="/command/to/execute here", interval=15, timeout=5, autorun=false]
|
||||
```
|
||||
|
||||
`command` itself can be enhanced using the well known syntax of the **java.util.Formatter** class.
|
||||
|
||||
The `command` itself can be enhanced using the well known syntax of the [Java formatter class syntax](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax).
|
||||
The following parameters are automatically added:
|
||||
|
||||
- the current date (as java.util.Date, example: `%1$tY-%1$tm-%1$td`)
|
||||
- the current State of the input channel (see below, example: `%2$s`)
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
All Things support the following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|-----------|-----------------------------------------------------------------------------------------|
|
||||
| input | String | Input parameter to provide to the command |
|
||||
| output | String | Output of the last execution of the command |
|
||||
| exit | Number | The exit value of the last execution of the command |
|
||||
| run | Switch | Send ON to execute the command and the current state tells whether it is running or not |
|
||||
| lastexecution | DateTime | Time/Date the command was last executed, in yyyy-MM-dd'T'HH:mm:ss.SSSZ format |
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|-----------------|-----------|--------------------------------------------------------------------------------------|
|
||||
| input | String | Input parameter to provide to the command |
|
||||
| output | String | Output of the last execution of the command |
|
||||
| exit | Number | The exit value of the last execution of the command |
|
||||
| run | Switch | Send ON to execute the command, the current state tells whether it is running or not |
|
||||
| lastexecution | DateTime | Time/Date the command was last executed, in yyyy-MM-dd'T'HH:mm:ss.SSSZ format |
|
||||
|
||||
|
||||
**Example**
|
||||
## Minimal Example
|
||||
|
||||
**demo.things**
|
||||
|
||||
```
|
||||
Thing exec:command:apc [command="/usr/local/bin/apcaccess status", interval=15, timeout=5]
|
||||
```java
|
||||
Thing exec:command:apc [command="/usr/local/bin/apcaccess status", interval=15, timeout=5]
|
||||
Thing exec:command:myscript [command="php ./configurations/scripts/script.php %2$s", transform="REGEX((.*?))"]
|
||||
```
|
||||
|
||||
**demo.items**
|
||||
|
||||
```
|
||||
```java
|
||||
String APCRaw "[%s]" (All) {channel="exec:command:apc:output"}
|
||||
Switch APCRunning { channel="exec:command:apc:run"}
|
||||
Number APCExitValue {channel="exec:command:apc:exit"}
|
||||
DateTime APCLastExecution {channel="exec:command:apc:lastexecution"}
|
||||
String APCRunning {channel="exec:command:apc:run"}
|
||||
String APCExitValue {channel="exec:command:apc:exit"}
|
||||
String APCLastExecution {channel="exec:command:apc:lastexecution"}
|
||||
```
|
||||
|
||||
## Full Example
|
||||
|
||||
Following is an example how to set up an exec command thing, debug it with a rule and set the returned string to an Number Item.
|
||||
|
||||
**For this to work also the openHAB RegEx Transformation has to be installed**
|
||||
|
||||
**demo.things**
|
||||
|
||||
```java
|
||||
// "%2$s" will be replace by the input channel, this makes it possible to use one command line with different arguments.
|
||||
// e.g: "ls" as <YOUR COMMAND> and "-a" or "-l" as additional argument set to the input channel in the rule.
|
||||
Thing exec:command:yourcommand [ command="<YOUR COMMAND> %2$s", interval=0, autorun=false ]
|
||||
```
|
||||
|
||||
**demo.items**
|
||||
|
||||
```java
|
||||
Switch YourTrigger
|
||||
Number YourNumber "Your Number [%.1f <20>C]"
|
||||
|
||||
// state of the execution, is running or finished
|
||||
Switch yourcommand {channel="exec:command:yourcommand:run"}
|
||||
// Arguments to be placed for '%2$s' in command line
|
||||
String yourcommand_Args {channel="exec:command:yourcommand:input"}
|
||||
// Output of command line execution
|
||||
String yourcommand_out {channel="exec:command:yourcommand:output"}
|
||||
```
|
||||
|
||||
**demo.sitemap**
|
||||
|
||||
```java
|
||||
// Name of file and name of sitemap has to be the same
|
||||
sitemap demo label="Your Value"
|
||||
{
|
||||
Frame {
|
||||
Switch item=YourTrigger
|
||||
Text item=YourNumber
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**demo.rules**
|
||||
|
||||
```java
|
||||
rule "Your Execution"
|
||||
when
|
||||
Item YourTrigger changed
|
||||
then
|
||||
if(YourTrigger.state == ON){
|
||||
yourcommand_Args.sendCommand("Additional Argument to command line for ON")
|
||||
}else{
|
||||
yourcommand_Args.sendCommand("Additional Argument to command line for OFF")
|
||||
}
|
||||
|
||||
// wait for the command to complete
|
||||
// State will be NULL if not used before or ON while command is executed
|
||||
while(yourcommand.state != OFF){
|
||||
Thread::sleep(500)
|
||||
}
|
||||
|
||||
// Trigger execution
|
||||
yourcommand.sendCommand(ON)
|
||||
|
||||
// Logging of command line result
|
||||
logInfo("Your command exec", "Result:" + yourcommand_out.state )
|
||||
|
||||
// If the returned string is just a number it can be parsed
|
||||
// If not a regex or another transformation can be used
|
||||
YourNumber.postUpdate(
|
||||
(Integer::parseInt(yourcommand_out.state.toString) as Number )
|
||||
)
|
||||
end
|
||||
```
|
||||
|
||||
## Source
|
||||
|
||||
[OpenHAB community thread with a detailed example.](https://community.openhab.org/t/1-openhab-433mhz-radio-transmitter-tutorial/34977)
|
||||
|
|
|
@ -75,7 +75,7 @@ We specified only one register. If register name starts with "!" (exclamation m
|
|||
### Switch Items
|
||||
|
||||
```
|
||||
plcName:[!]REG1[[!]REG2]
|
||||
plcName:[!]REG1[:[!]REG2]
|
||||
```
|
||||
|
||||
* REG1 is used for read state of switch
|
||||
|
|
|
@ -18,7 +18,9 @@ This binding allows you to integrate feeds in the openHAB environment.
|
|||
The Feed binding downloads the content, tracks for changes, and displays information like feed author, feed title and description, number of entries, last update date.
|
||||
|
||||
It can be used in combination with openHAB rules to trigger events on feed change.
|
||||
It uses the [ROME library](http://rometools.github.io/rome/index.html) for parsing and supports a wide range of popular feed formats - RSS 2.00, RSS 1.00, RSS 0.94, RSS 0.93, RSS 0.92, RSS 0.91 UserLand, RSS 0.91 Netscape, RSS 0.90, Atom 1.0, Atom 0.3.
|
||||
It uses the [ROME library](http://rometools.github.io/rome/index.html) for parsing
|
||||
and supports a wide range of popular feed formats - RSS 2.00, RSS 1.00, RSS 0.94, RSS 0.93, RSS 0.92, RSS 0.91 UserLand,
|
||||
RSS 0.91 Netscape, RSS 0.90, Atom 1.0, Atom 0.3.
|
||||
|
||||
## Supported Things
|
||||
|
||||
|
@ -36,11 +38,11 @@ No binding configuration required.
|
|||
|
||||
Required configuration:
|
||||
|
||||
* **URL** - the URL of the feed (e.g <http://example.com/path/file>). The binding uses this URL to download data
|
||||
- **URL** - the URL of the feed (e.g <http://example.com/path/file>). The binding uses this URL to download data
|
||||
|
||||
Optional configuration:
|
||||
|
||||
* **refresh** - a refresh interval defines after how many minutes the binding will check, if new content is available. Default value is 20 minutes
|
||||
- **refresh** - a refresh interval defines after how many minutes the binding will check, if new content is available. Default value is 20 minutes
|
||||
|
||||
## Channels
|
||||
|
||||
|
@ -57,18 +59,18 @@ The binding supports following channels
|
|||
| last-update | DateTime | The last update date of the feed |
|
||||
| number-of-entries | Number | Number of entries in the feed |
|
||||
|
||||
**Example**
|
||||
## Example
|
||||
|
||||
Things:
|
||||
|
||||
```
|
||||
```java
|
||||
feed:feed:bbc [ URL="http://feeds.bbci.co.uk/news/video_and_audio/news_front_page/rss.xml?edition=uk"]
|
||||
feed:feed:techCrunch [ URL="http://feeds.feedburner.com/TechCrunch/", refresh=60]
|
||||
```
|
||||
|
||||
Items:
|
||||
|
||||
```
|
||||
```java
|
||||
String latest_title {channel="feed:feed:bbc:latest-title"}
|
||||
String latest_description {channel="feed:feed:bbc:latest-description"}
|
||||
DateTime latest_date {channel="feed:feed:bbc:latest-date"}
|
||||
|
|
|
@ -14,7 +14,7 @@ install: auto
|
|||
|
||||
# Feican Binding
|
||||
|
||||
This binding adds support for the Feican Wi-Fi version of the smart light led Bulb, the WiFi RGBW Bulb.
|
||||
This binding adds support for the Feican Wi-Fi version of the smart light led Bulb, the WiFi RGBW Bulb.
|
||||
|
||||
With this binding the light bulb can be switched on or off, set the color or set color based on color temperature.
|
||||
Set the brightness. And it contains a set of preset programs, where for some the program speed can be set.
|
||||
|
@ -42,7 +42,6 @@ Feican Android or iPhone DreamColor app.
|
|||
Devices can be auto discovered within the local network. It's possible to connect to devices in a different network,
|
||||
but these must be added manually.
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The thing has a one configuration parameter:
|
||||
|
@ -98,15 +97,15 @@ The program channel supports the following values:
|
|||
|
||||
## Full Example
|
||||
|
||||
### feican.things:
|
||||
**feican.things:**
|
||||
|
||||
```
|
||||
```java
|
||||
feican:bulb:home "Living Room" [ ipAddress="192.168.0.13" ]
|
||||
```
|
||||
|
||||
### feican.items:
|
||||
**feican.items:**
|
||||
|
||||
```
|
||||
```java
|
||||
Switch FC_1_Switch "Switch" { channel="feican:bulb:home:color" }
|
||||
Color FC_1_Color "Color" <slider> { channel="feican:bulb:home:color" }
|
||||
Dimmer FC_1_Dimmer "Brightness [%d]" <slider> { channel="feican:bulb:home:color" }
|
||||
|
|
|
@ -38,12 +38,11 @@ running openHAB, it is necessary to configure the Folding client to accept comma
|
|||
from a non-localhost address.
|
||||
Here is how to do it in the FAHControl application:
|
||||
|
||||
* Open FAHControl on the client to be added
|
||||
* Click on Configure, then the Remote Access tab
|
||||
* Enter a password twice (invent one)
|
||||
* Locate the Allow box under IP Address Restrictions
|
||||
* Append a space and the IP address of the machine running openHAB to the text
|
||||
in that box, so it reads something like `127.0.0.1 192.168.1.2`
|
||||
- Open FAHControl on the client to be added
|
||||
- Click on Configure, then the Remote Access tab
|
||||
- Enter a password twice (invent one)
|
||||
- Locate the Allow box under IP Address Restrictions
|
||||
- Append a space and the IP address of the machine running openHAB to the text in that box, so it reads something like `127.0.0.1 192.168.1.2`
|
||||
|
||||
You should now have access to the client, configure it using the password and
|
||||
IP address in the manual thing configuration interface.
|
||||
|
|
|
@ -31,7 +31,8 @@ This binding supports the following thing types:
|
|||
|
||||
## Discovery
|
||||
|
||||
The Freebox Revolution server is discovered automatically through mDNS in the local network. After a Freebox Revolution is discovered and available to openHAB, the binding will automatically discover phone, network devices / interfaces and AirPlay devices with video capability in the local network.
|
||||
The Freebox Revolution server is discovered automatically through mDNS in the local network.
|
||||
After a Freebox Revolution is discovered and available to openHAB, the binding will automatically discover phone, network devices / interfaces and AirPlay devices with video capability in the local network.
|
||||
Note that the discovered thing will be setup to use only HTTP API (and not HTTPS) because only an IP can be automatically determined while a domain name is required to use HTTPS with a valid certificate.
|
||||
|
||||
## Binding configuration
|
||||
|
@ -46,7 +47,7 @@ The binding has the following configuration options, which can be set for "bindi
|
|||
|
||||
### Server
|
||||
|
||||
The _server_ bridge thing requires the following configuration parameters:
|
||||
The *server* bridge thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required | Default |
|
||||
|-------------------------|-----------------|-----------------------------------------------------------------------------|----------|----------------------|
|
||||
|
@ -55,41 +56,37 @@ The _server_ bridge thing requires the following configuration parameters:
|
|||
| Refresh Interval | refreshInterval | The refresh interval in seconds which is used to poll given Freebox Server. | false | 30 |
|
||||
| Use only HTTP API | useOnlyHttp | Use HTTP API even if HTTPS is available. | false | false |
|
||||
|
||||
|
||||
If the parameter _ipAddress_ is not set, the binding will use the default address used by Free to access your Freebox Server (mafreebox.freebox.fr).
|
||||
The bridge thing will initialize only if a valid application token (parameter _appToken_) is filled.
|
||||
If the parameter *ipAddress* is not set, the binding will use the default address used by Free to access your Freebox Server (mafreebox.freebox.fr).
|
||||
The bridge thing will initialize only if a valid application token (parameter *appToken*) is filled.
|
||||
|
||||
### Phone
|
||||
|
||||
The _phone_ thing requires the following configuration parameters:
|
||||
The *phone* thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required | Default |
|
||||
|------------------------------|---------------------------|---------------------------------------------------------------------------------------------|----------|---------|
|
||||
| Phone State Refresh Interval | refreshPhoneInterval | The refresh interval in seconds which is used to poll given Freebox Server for phone state. | false | 2 |
|
||||
| Phone Calls Refresh Interval | refreshPhoneCallsInterval | The refresh interval in seconds which is used to poll given Freebox Server for phone calls. | false | 60 |
|
||||
|
||||
|
||||
### Network device
|
||||
|
||||
The _net_device_ thing requires the following configuration parameters:
|
||||
The *net_device* thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required |
|
||||
|-----------------|--------------|----------------------------------------|----------|
|
||||
| MAC Address | macAddress | The MAC address of the network device. | true |
|
||||
|
||||
|
||||
### Network interface
|
||||
|
||||
The _net_interface_ thing requires the following configuration parameters:
|
||||
The *net_interface* thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required |
|
||||
|-----------------|--------------|-----------------------------------------------------|----------|
|
||||
| IP Address | ipAddress | The IP address (v4 or v6) of the network interface. | true |
|
||||
|
||||
|
||||
### AirPlay device
|
||||
|
||||
The _airplay_ thing requires the following configuration parameters:
|
||||
The *airplay* thing requires the following configuration parameters:
|
||||
|
||||
| Parameter Label | Parameter ID | Description | Required |
|
||||
|-----------------|--------------|-----------------------------|----------|
|
||||
|
@ -103,7 +100,7 @@ Each Freebox server is now automatically assigned a random domain name (in addit
|
|||
This certificate is also valid for the domain name mafreebox.freebox.fr too.
|
||||
You must validate the certificate chain, by using the following Freebox ECC Root CA and Freebox RSA Root CA:
|
||||
|
||||
```
|
||||
```text
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICWTCCAd+gAwIBAgIJAMaRcLnIgyukMAoGCCqGSM49BAMCMGExCzAJBgNVBAYT
|
||||
AkZSMQ8wDQYDVQQIDAZGcmFuY2UxDjAMBgNVBAcMBVBhcmlzMRMwEQYDVQQKDApG
|
||||
|
@ -121,7 +118,7 @@ vxo6c0dSSNrr7dDN+m2/dRvgoIpGL2GauOGqDFY=
|
|||
-----END CERTIFICATE-----
|
||||
```
|
||||
|
||||
```
|
||||
```text
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFmjCCA4KgAwIBAgIJAKLyz15lYOrYMA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV
|
||||
BAYTAkZSMQ8wDQYDVQQIDAZGcmFuY2UxDjAMBgNVBAcMBVBhcmlzMRAwDgYDVQQK
|
||||
|
@ -165,13 +162,14 @@ sudo keytool -import -trustcacerts -file /freeboxECC.crt -alias Freebox -keystor
|
|||
sudo keytool -import -trustcacerts -file /freeboxRSA.crt -alias Freebox -keystore $JAVA_HOME/jre/lib/security/cacerts
|
||||
sudo rm /freeboxECC.crt /freeboxRSA.crt
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
You'll have to authorize openHAB to connect to your Freebox. Here is the process described :
|
||||
|
||||
**Step 1** At binding startup, if no token is recorded in the Freebox Server (bridge) configuration, the following message will be displayed in the OSGi console :
|
||||
|
||||
```
|
||||
```text
|
||||
####################################################################
|
||||
# Please accept activation request directly on your freebox #
|
||||
# Once done, record Apptoken in the Freebox Item configuration #
|
||||
|
@ -241,14 +239,14 @@ The following channels are supported:
|
|||
| airplay | playurl | String | W | Play an audio or video media from the given URL |
|
||||
| airplay | stop | Switch | W | Stop the media playback |
|
||||
|
||||
**Example**
|
||||
## Example
|
||||
|
||||
### Things
|
||||
|
||||
Here is an example with minimal configuration parameters (using default values).
|
||||
It will first connect to mafreebox.freebox.fr using HTTPS (and will failback to HTTP if HTTPS access is not available).
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge freebox:server:fb "Freebox Revolution" [ appToken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ] {
|
||||
Thing phone Phone "Phone"
|
||||
Thing net_device tv1 "TV living room" [ macAddress="XX:XX:XX:XX:XX:XX" ]
|
||||
|
@ -259,7 +257,7 @@ Bridge freebox:server:fb "Freebox Revolution" [ appToken="xxxxxxxxxxxxxxxxxxxxxx
|
|||
|
||||
Here is another example overwritting default configuration parameters:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge freebox:server:fb "Freebox Revolution" [ fqdn="abcdefgh.fbxos.fr", appToken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", refreshInterval=20, useOnlyHttp=false ] {
|
||||
Thing phone Phone "Phone" [ refreshPhoneInterval=10, refreshPhoneCallsInterval=120 ]
|
||||
Thing net_device tv1 "TV living room" [ macAddress="XX:XX:XX:XX:XX:XX" ]
|
||||
|
@ -270,7 +268,7 @@ Bridge freebox:server:fb "Freebox Revolution" [ fqdn="abcdefgh.fbxos.fr", appTok
|
|||
|
||||
### Items
|
||||
|
||||
```
|
||||
```java
|
||||
String Freebox_xdsl_status "Freebox state [%s]" {channel="freebox:server:fb:xdsl_status"}
|
||||
String Freebox_cs_state "State [%s]" {channel="freebox:server:fb:line_status"}
|
||||
String Freebox_cs_ipv4 "ipV4 [%s]" {channel="freebox:server:fb:ipv4"}
|
||||
|
|
|
@ -54,19 +54,19 @@ There are several settings for an account:
|
|||
|
||||
Minimal Thing configuration:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge gardena:account:home [ email="...", password="..." ]
|
||||
```
|
||||
|
||||
Configuration with refresh:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge gardena:account:home [ email="...", password="...", refresh=30 ]
|
||||
```
|
||||
|
||||
Configuration of multiple bridges:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge gardena:account:home1 [ email="...", password="..." ]
|
||||
Bridge gardena:account:home2 [ email="...", password="..." ]
|
||||
```
|
||||
|
@ -75,7 +75,7 @@ Once a connection to an account is established, connected Things are discovered
|
|||
|
||||
Alternatively, you can manually configure a Thing:
|
||||
|
||||
```
|
||||
```perl
|
||||
Bridge gardena:account:home [ email="...", password="..." ]
|
||||
{
|
||||
Thing mower myMower [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
|
||||
|
@ -86,7 +86,7 @@ Bridge gardena:account:home [ email="...", password="..." ]
|
|||
|
||||
In the items file, you can link items to channels of your Things:
|
||||
|
||||
```
|
||||
```java
|
||||
Number Battery_Level "Battery [%d %%]" {channel="gardena:mower:home:myMower:battery#level"}
|
||||
```
|
||||
|
||||
|
@ -94,20 +94,20 @@ Number Battery_Level "Battery [%d %%]" {channel="gardena:mower:home:myMower:batt
|
|||
|
||||
You can send a REFRESH command to items linked to these Sensor channels:
|
||||
|
||||
* ambient_temperature#temperature
|
||||
* soil_temperature#temperature
|
||||
* humidity#humidity
|
||||
* light#light
|
||||
- ambient_temperature#temperature
|
||||
- soil_temperature#temperature
|
||||
- humidity#humidity
|
||||
- light#light
|
||||
|
||||
In the console:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome:send ITEM_NAME REFRESH
|
||||
```
|
||||
|
||||
In scripts:
|
||||
|
||||
```
|
||||
```shell
|
||||
import org.eclipse.smarthome.core.types.RefreshType
|
||||
...
|
||||
sendCommand(ITEM_NAME, RefreshType.REFRESH)
|
||||
|
@ -117,13 +117,13 @@ sendCommand(ITEM_NAME, RefreshType.REFRESH)
|
|||
|
||||
If you want to see what's going on in the binding, switch the loglevel to TRACE in the Karaf console
|
||||
|
||||
```
|
||||
```shell
|
||||
log:set TRACE org.openhab.binding.gardena
|
||||
```
|
||||
|
||||
Set the logging back to normal
|
||||
|
||||
```
|
||||
```shell
|
||||
log:set INFO org.openhab.binding.gardena
|
||||
```
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ id: globalcache
|
|||
label: GlobalCache
|
||||
title: GlobalCache - Bindings
|
||||
type: binding
|
||||
description: "The [GlobalCache](http://www.globalcache.com) binding is used to enable communication between openHAB and GlobalCache [GC-100](http://www.globalcache.com/products/gc-100/) and [iTach](http://www.globalcache.com/products/itach/) family of devices."
|
||||
description: "The [GlobalCache](http://www.globalcache.com) binding is used to enable communication"
|
||||
since: 2x
|
||||
logo: images/addons/globalcache.png
|
||||
install: auto
|
||||
|
@ -15,7 +15,8 @@ install: auto
|
|||
|
||||
# GlobalCache Binding
|
||||
|
||||
The [GlobalCache](http://www.globalcache.com) binding is used to enable communication between openHAB and GlobalCache [GC-100](http://www.globalcache.com/products/gc-100/) and [iTach](http://www.globalcache.com/products/itach/) family of devices.
|
||||
The [GlobalCache](http://www.globalcache.com) binding is used to enable communication
|
||||
between openHAB and GlobalCache [GC-100](http://www.globalcache.com/products/gc-100/) and [iTach](http://www.globalcache.com/products/itach/) family of devices.
|
||||
Global Cache devices enable the control and automation of infrared, serial, and contact closure devices through an IP network (wired or wireless).
|
||||
|
||||
## Overview
|
||||
|
@ -31,15 +32,15 @@ Each thing has channels that correspond to the physical connectors on the device
|
|||
|
||||
Currently supported devices include:
|
||||
|
||||
* iTach WF2IR and IP2IR
|
||||
* iTach WF2CC and IP2CC
|
||||
* iTach WF2SL and IP2SL
|
||||
* iTach Flex Ethernet
|
||||
* iTach Flex Ethernet PoE
|
||||
* iTach Flex WiFi
|
||||
* GC-100-6
|
||||
* GC-100-12
|
||||
* ZMOTE Wi-Fi Universal Remote
|
||||
- iTach WF2IR and IP2IR
|
||||
- iTach WF2CC and IP2CC
|
||||
- iTach WF2SL and IP2SL
|
||||
- iTach Flex Ethernet
|
||||
- iTach Flex Ethernet PoE
|
||||
- iTach Flex WiFi
|
||||
- GC-100-6
|
||||
- GC-100-12
|
||||
- ZMOTE Wi-Fi Universal Remote
|
||||
|
||||
## Device Discovery
|
||||
|
||||
|
@ -49,7 +50,7 @@ The GlobalCache binding will automatically detect those devices, then add them t
|
|||
Background discovery is **enabled** by default.
|
||||
To disable background discovery, add the following line to the *conf/services/runtime.cfg* file:
|
||||
|
||||
```
|
||||
```text
|
||||
org.openhab.binding.globalcache.discovery.GlobalCacheDiscoveryService:backgroundDiscovery.enabled=false
|
||||
```
|
||||
|
||||
|
@ -74,12 +75,12 @@ The default is Infrared.
|
|||
The device's IP address is set at time of discovery.
|
||||
However, in the event that the device's IP address is changed, the device IP address must be changed in the thing's configuration.
|
||||
|
||||
#### Manual Thing Creation
|
||||
### Manual Thing Creation
|
||||
|
||||
Devices can be manually created in the *PaperUI* or *HABmin*, or by placing a *.things* file in the *conf/things* directory.
|
||||
See example below.
|
||||
|
||||
#### Binding Dependencies
|
||||
### Binding Dependencies
|
||||
|
||||
The GlobalCache binding uses the **transform** binding to map commands to IR and serial codes. See example below.
|
||||
|
||||
|
@ -87,10 +88,10 @@ The GlobalCache binding uses the **transform** binding to map commands to IR and
|
|||
|
||||
There are four *channel types* used across the GC-100 and iTach family of devices.
|
||||
|
||||
- Contact Closure (CC)
|
||||
- Infrared (IR)
|
||||
- Serial (SL)
|
||||
- Serial Direct (SL)
|
||||
- Contact Closure (CC)
|
||||
- Infrared (IR)
|
||||
- Serial (SL)
|
||||
- Serial Direct (SL)
|
||||
|
||||
*Channels* follow a naming convention that relates to the physical configuration of the Global Cache device -- specifically the **module** and **connector** numbers.
|
||||
For example, the channel name **m2c3** refers to connector 3 on module 2.
|
||||
|
@ -103,33 +104,33 @@ For example, the IR channel on connector 3 on module 1 is named ir-m1c2.
|
|||
The *Infrared channel* sends IR codes out the IR connector on the device.
|
||||
For example, the following item links to the module 1 / connector 2 channel on an iTach IR device.
|
||||
|
||||
```
|
||||
```java
|
||||
String SamsungTV "TV" (gTheater) { channel="globalcache:itachIR:000C1E0384A5:ir-m1#c2" }
|
||||
```
|
||||
|
||||
The item definition for an iTach Flex Ethernet device would look like this.
|
||||
|
||||
```
|
||||
```java
|
||||
String SamsungTV "TV" (gTheater) { channel="globalcache:itachFlexEth:000C1E077BE1:ir-m1#c2" }
|
||||
```
|
||||
|
||||
#### How to Specify IR Codes
|
||||
### How to Specify IR Codes
|
||||
|
||||
IR codes are contained in a MAP file contained within the conf/transform directory.
|
||||
See example below.
|
||||
|
||||
#### Supported IR Code Formats
|
||||
### Supported IR Code Formats
|
||||
|
||||
Two different formatting methods are supported: Global Cache and hex code.
|
||||
Here's an example of the Global Cache format:
|
||||
|
||||
```
|
||||
```text
|
||||
38000,1,1,340,170,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,21,21,21,21,21,21,21,21,63,21,63,21,63,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,21,21,21,21,1691,340,85,21,3753
|
||||
```
|
||||
|
||||
Here's an example of the hex code format:
|
||||
|
||||
```
|
||||
```text
|
||||
0000 006E 0000 0024 0154 00AA 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003F 0015 0015 0015 0015 0015 0015 0015 0015 0015 003F 0015 003F 0015 003F 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003F 0015 003F 0015 003F 0015 003F 0015 003F 0015 003F 0015 003F 0015 003F 0015 0015 0015 0015 0015 069B 0154 0055 0015 0EA9
|
||||
```
|
||||
|
||||
|
@ -148,13 +149,13 @@ Other settings, such as *Sensor In*, *Sensor Notify*, and *LED Lighting*, may be
|
|||
A *Contact Closure channel* activates the contact closure (relay) on the iTach or GC-100 device.
|
||||
For example, the following item links to the module 1, connector 1 channel on an iTach CC device.
|
||||
|
||||
```
|
||||
```java
|
||||
Contact MyRelay "My Relay [%s]" (gRelays) { channel="globalcache:itachCC:000C1E039BCF:cc-m1#c1" }
|
||||
```
|
||||
|
||||
The item definition for an iTach Flex WiFi device would look like this.
|
||||
|
||||
```
|
||||
```java
|
||||
String MyRelay "My Relay [%s]" (gRelays) { channel="globalcache:itachFlex:000C01AF4990:cc-m1#c1" }
|
||||
```
|
||||
|
||||
|
@ -163,7 +164,7 @@ String MyRelay "My Relay [%s]" (gRelays) { channel="globalcache:itachFlex
|
|||
An *SL channel* sends serial command strings out the serial connector on the device.
|
||||
For example, the following item links to the module 1 connector 1 channel on a GC-100-6 device.
|
||||
|
||||
```
|
||||
```java
|
||||
String RS232ME "My RS232-controlled Device" { channel="globalcache:gc100_6:000C459A120A:sl-m1#c1" }
|
||||
```
|
||||
|
||||
|
@ -177,7 +178,7 @@ The Serial Direct channel type enables serial commands to be sent directly to th
|
|||
This is useful in rules where the serial command might be constructed "on the fly" in the body of the rule.
|
||||
For example, the following item links to the module 1 connector 1 channel on an iTach Flex device.
|
||||
|
||||
```
|
||||
```java
|
||||
String RUSSCAA66 "Russound CAA66" { channel="globalcache:itachFlex:000C45D530B9:sl-m1#c1-direct" }
|
||||
```
|
||||
|
||||
|
@ -192,12 +193,13 @@ Use URL encoding for non-printable characters.
|
|||
For example, the following item links to the receive channel on module 1 connector 1 on a GC-100.
|
||||
A rule that looks for updates on this item will be able to process messages sent from the device connected to the GlobalCache's serial port.
|
||||
|
||||
```
|
||||
```java
|
||||
String RUSSCAA66_Receive "Russound CAA66 Receive" { channel="globalcache:gc100_06:000C1EFFF039:sl-m1#c1-receive" }
|
||||
```
|
||||
|
||||
Here are some examples of common **End-ofMessage** delimiters.
|
||||
|
||||
```
|
||||
```text
|
||||
%0D%0A Carriage return / Line feed
|
||||
%0D Carriage return
|
||||
%F7 Russound RNET message terminator
|
||||
|
@ -207,7 +209,7 @@ Here are some examples of common **End-ofMessage** delimiters.
|
|||
|
||||
### MAP File
|
||||
|
||||
```
|
||||
```text
|
||||
# Harmon Kardon AVR-245 Home Theater Receiver
|
||||
HKAVR245_POWER_ON = 38000,1,1,340,170,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,21,21,21,21,21,21,21,21,63,21,63,21,63,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,63,21,21,21,21,21,1691,340,85,21,3753
|
||||
HKAVR245_POWER_OFF = 38000,1,1,340,170,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,63,21,21,21,21,21,21,21,21,21,63,21,63,21,63,21,21,21,63,21,63,21,63,21,63,21,63,21,21,21,21,21,63,21,21,21,21,21,21,21,21,21,21,21,63,21,63,21,21,21,1691,340,85,21,3753
|
||||
|
@ -241,7 +243,7 @@ RS232ME_VOLUME_DOWN = VOLUME%20DOWN%0D%0A
|
|||
|
||||
### Items File
|
||||
|
||||
```
|
||||
```java
|
||||
Switch ContactClosure1 "Relay on Connector 1" { channel="globalcache:itachCC:000C1E017BCF:cc-m1#c1" }
|
||||
Switch ContactClosure2 "Relay on Connector 2" { channel="globalcache:itachCC:000C1E017BCF:cc-m1#c2" }
|
||||
Switch ContactClosure3 "Relay on Connector 3" { channel="globalcache:itachCC:000C1E017BCF:cc-m1#c3" }
|
||||
|
@ -264,7 +266,7 @@ String ZSAMSUNGHLS "Samsung HL-S DLP TV" { channel="globalcac
|
|||
|
||||
This is an example of how to use contact closure, infrared, and serial devices in a sitemap.
|
||||
|
||||
```
|
||||
```perl
|
||||
Frame label="Contact Closure" {
|
||||
Switch item=ContactClosure1 label="Open/Close Garage Door"
|
||||
Switch item=ContactClosure2 label="Light on Garage Door Opener"
|
||||
|
@ -298,7 +300,7 @@ Frame label="Garage Door" {
|
|||
|
||||
This is an example of how to use a Contact Closure channel within a rule to implement a momentary contact switch, which could be used to trigger a garage door opener.
|
||||
|
||||
```
|
||||
```javascript
|
||||
var boolean isRunning = false
|
||||
|
||||
rule "Example Garage Door Opener"
|
||||
|
@ -317,7 +319,7 @@ end
|
|||
|
||||
This is an example of how to send IR and/or serial commands from within a rule.
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "AV Power On/Off"
|
||||
when
|
||||
Item AVPowerOn received command
|
||||
|
@ -335,7 +337,7 @@ end
|
|||
|
||||
This is an example of how to send a serial command directly from within a rule.
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "Russound Set Zone 1 Volume to 20"
|
||||
when
|
||||
Item RussoundSetVolume received command
|
||||
|
@ -349,7 +351,7 @@ end
|
|||
Place a file named *globalcache.things* in the *conf/things* directory.
|
||||
The file should contain lines formatted like this.
|
||||
|
||||
```
|
||||
```java
|
||||
globalcache:itachCC:000CFF17B106 [ ipAddress="192.168.12.62" ]
|
||||
globalcache:itachIR:000C0B1E54A0 [ ipAddress="192.168.12.63", mapFilename="ir-codes.map" ]
|
||||
globalcache:itachSL:000CF886B107 [ ipAddress="192.168.12.64", mapFilename="serial-codes.map" ]
|
||||
|
|
|
@ -6,7 +6,7 @@ type: binding
|
|||
description: "This binding is for the local GPIO subsystem. It is currently only exposed to user space by [Linux GPIO framework](https://www.kernel.org/doc/Documentation/gpio/sysfs.txt). Being based on a kernel implementation, it's hardware agnostic and works on different boards without modification (this is on theory only, not all existing boards can be tested)."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.gpio/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
|
|
@ -51,7 +51,7 @@ To manually configure a Harmony Hub thing you may specify its host name ("host"
|
|||
|
||||
In the thing file, this looks e.g. like
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge harmonyhub:hub:GreatRoom [ host="192.168.1.100"]
|
||||
```
|
||||
|
||||
|
@ -60,7 +60,7 @@ Note that this is prefixed by the hub the device is controlled from.
|
|||
|
||||
In the thing file, this looks e.g. like
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge harmonyhub:hub:great [ name="Great Room"] {
|
||||
device denon [ name="Denon AV Receiver"]
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ Bridge harmonyhub:hub:great [ name="Great Room"] {
|
|||
|
||||
or
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge harmonyhub:hub:great [ name="Great Room"] {
|
||||
device denon [ id=176254]
|
||||
}
|
||||
|
@ -80,13 +80,13 @@ Hubs can report and change the current activity:
|
|||
|
||||
items:
|
||||
|
||||
```
|
||||
```java
|
||||
String HarmonyGreatRoomActivity "Current Activity [%s]" (gMain) { channel="harmonyhub:hub:GreatRoom:currentActivity" }
|
||||
```
|
||||
|
||||
Devices can send button presses
|
||||
|
||||
```
|
||||
```java
|
||||
String HarmonyGreatRoomDenon "Denon Button Press" (gMain) { channel="harmonyhub:device:GreatRoom:29529817:buttonPress" }
|
||||
```
|
||||
|
||||
|
@ -96,7 +96,7 @@ The name of the event is equal to the activity name, with all non-alphanumeric c
|
|||
|
||||
rules:
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "Starting TV"
|
||||
when
|
||||
Channel "harmonyhub:hub:GreatRoom:activityStarting" triggered Watch_TV
|
||||
|
@ -131,7 +131,7 @@ end
|
|||
Using the above things channels and items
|
||||
Sitemap:
|
||||
|
||||
```
|
||||
```perl
|
||||
sitemap demo label="Main Menu" {
|
||||
Frame {
|
||||
Switch item=HarmonyGreatRoomActivity mappings=[PowerOff="PowerOff", TIVO="TIVO", Music="Music","APPLE TV"="APPLE TV", NETFLIX="NETFLIX"]
|
||||
|
|
|
@ -19,16 +19,18 @@ This binding integrates with [HDanywhere](http://www.hdanywhere.co.uk) HDMI matr
|
|||
|
||||
HDanywhere is a manufacturer of multiroom/distributed audio/video equipment.
|
||||
This binding supports their V3 of the Multiroom+ HDMI matrix running firmware V1.2(20131222), as well as the newer MHUB series of matrices.
|
||||
These matrices support the highest HD resolutions, including 1080p 3D & 4K, use a single Cat5e/6/7 wiring structure with reliable performance up to 100m, have IR passback to allow you to select and control what you watch from every room and are fully compatible with universal remote controls
|
||||
These matrices support the highest HD resolutions, including 1080p 3D & 4K, use a single Cat5e/6/7 wiring structure with reliable performance up to 100m,
|
||||
have IR passback to allow you to select and control what you watch from every room and are fully compatible with universal remote controls
|
||||
|
||||
The matrices can be controlled by either UDP/IP and/or Serial connections, but due to the lack of feedback on the actual state of the HDMI matrix when using those methods, this binding operates by controlling the built-in webserver of the matrix.
|
||||
The matrices can be controlled by either UDP/IP and/or Serial connections,
|
||||
but due to the lack of feedback on the actual state of the HDMI matrix when using those methods, this binding operates by controlling the built-in webserver of the matrix.
|
||||
|
||||
## Supported Things
|
||||
|
||||
This binding currently supports the following thing types:
|
||||
|
||||
* *multiroomplus* : Multiroom+ V3 (**Note:** This product is no longer sold by HDanywhere)
|
||||
* *mhub4k431* : MHUB 4K (4X3+1)
|
||||
- *multiroomplus* : Multiroom+ V3 (**Note:** This product is no longer sold by HDanywhere)
|
||||
- *mhub4k431* : MHUB 4K (4X3+1)
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -40,9 +42,10 @@ This binding does not require any special configuration.
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
Each thing requires the IP address of the matrix, and the interval in between status updates that are fetched from the matrix. Additionally, the *multiroomplus* has an additional required parameter 'ports' to specify the number of physical ports (e.g. 4x4, 8x8,...) of the matrix.
|
||||
Each thing requires the IP address of the matrix, and the interval in between status updates that are fetched from the matrix.
|
||||
Additionally, the *multiroomplus* has an additional required parameter 'ports' to specify the number of physical ports (e.g. 4x4, 8x8,...) of the matrix.
|
||||
|
||||
```
|
||||
```java
|
||||
Thing hdanywhere:mhub4k431:m1 [ipAddress="192.168.0.89",interval=15]
|
||||
Thing hdanywhere:multiroomplus:m2 [ipAddress="192.168.0.88", ports=4, interval=15]
|
||||
```
|
||||
|
@ -63,13 +66,13 @@ The following channels are supported (actual number of channels is a function of
|
|||
|
||||
demo.Things:
|
||||
|
||||
```
|
||||
```java
|
||||
hdanywhere:mhub4k431:m1 [ipAddress="192.168.0.89",interval=15]
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
||||
```
|
||||
```java
|
||||
Number OutputPort1 "Output port 1 is currently connected to Source port [%d]" { channel="hdanywhere:mhub4k431:m1:port1" }
|
||||
Number OutputPort2 "Output port 2 is currently connected to Source port [%d]" { channel="hdanywhere:mhub4k431:m1:port2" }
|
||||
Number OutputPort3 "Output port 3 is currently connected to Source port [%d]" { channel="hdanywhere:mhub4k431:m1:port3" }
|
||||
|
|
|
@ -25,24 +25,10 @@ By using a Scene to control multiple shades at once, the shades will all begin m
|
|||
|
||||
## Supported Things
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Thing</b></td>
|
||||
<td><b>Thing Type</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PowerView Hub</td>
|
||||
<td>Bridge</td>
|
||||
<td>The PowerView Hub provides the interface between your network and the shade's radio network.
|
||||
It also contains channels used to interact with scenes.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PowerView Shade</td>
|
||||
<td>Thing</td>
|
||||
<td>A single motorized shade</td>
|
||||
</tr>
|
||||
</table>
|
||||
| Thing | Thing Type | Description |
|
||||
|-----------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| PowerView Hub | Bridge | The PowerView Hub provides the interface between your network and the shade's radio network. It also contains channels used to interact with scenes. |
|
||||
| PowerView Shade | Thing | A single motorized shade |
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -83,42 +69,16 @@ However, the configuration parameters are described below:
|
|||
|
||||
### PowerView Shade
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Channel</b></td>
|
||||
<td><b>Item Type</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>position</td>
|
||||
<td>Rollershutter</td>
|
||||
<td>The vertical position of the shade. Up/Down commands will move the shade to its completely up or completely down position. Move/Stop commands are ignored.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vane</td>
|
||||
<td>Dimmer</td>
|
||||
<td>The amount the slats on the shade are open. Setting this value will completely close the shade first, as the slats can only be controlled in that position.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>batteryLow</td>
|
||||
<td>Switch</td>
|
||||
<td>Indicates ON when the battery level of the shade is low, as determined by the Hub's internal rules</td>
|
||||
</tr>
|
||||
</table>
|
||||
| Channel | Item Type | Description |
|
||||
|------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| position | Rollershutter | The vertical position of the shade. Up/Down commands will move the shade to its completely up or completely down position. Move/Stop commands are ignored. |
|
||||
| vane | Dimmer | The amount the slats on the shade are open. Setting this value will completely close the shade first, as the slats can only be controlled in that position. |
|
||||
| batteryLow | Switch | Indicates ON when the battery level of the shade is low, as determined by the Hub's internal rules |
|
||||
|
||||
### PowerView Scene
|
||||
|
||||
Scenes channels are added to the Hub as they are discovered.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Channel</b></td>
|
||||
<td><b>Item Type</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>activate</td>
|
||||
<td>Switch</td>
|
||||
<td>Turning this to ON will activate the scene. Scenes are stateless in the PowerView hub - they have no on/off state. Include { autoupdate="false" } on your item configuration to avoid needing to toggle off and on.</td>
|
||||
</tr>
|
||||
</table>
|
||||
| Channel | Item Type | Description |
|
||||
|----------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| activate | Switch | Turning this to ON will activate the scene. Scenes are stateless in the PowerView hub - they have no on/off state. Include { autoupdate="false" } on your item configuration to avoid needing to toggle off and on. |
|
||||
|
|
|
@ -21,40 +21,45 @@ This binding allows you to integrate, view, control and configure all Homematic
|
|||
## Supported Bridges
|
||||
|
||||
All gateways which provides the Homematic BIN- or XML-RPC API:
|
||||
* CCU 1+2
|
||||
* [Homegear](https://www.homegear.eu)
|
||||
* [piVCCU](https://github.com/alexreinert/piVCCU)
|
||||
* [YAHM](https://github.com/leonsio/YAHM)
|
||||
* [Windows BidCos service](http://www.eq-3.de/downloads.html?kat=download&id=125)
|
||||
* [OCCU](https://github.com/eq-3/occu)
|
||||
|
||||
- CCU 1+2
|
||||
- [Homegear](https://www.homegear.eu)
|
||||
- [piVCCU](https://github.com/alexreinert/piVCCU)
|
||||
- [YAHM](https://github.com/leonsio/YAHM)
|
||||
- [Windows BidCos service](http://www.eq-3.de/downloads.html?kat=download&id=125)
|
||||
- [OCCU](https://github.com/eq-3/occu)
|
||||
|
||||
The Homematic IP Access Point does not support this API and can't be used with this binding.
|
||||
But you can control Homematic IP devices with a CCU2 with at least firmware 2.17.15.
|
||||
|
||||
These ports are used by the binding by default to communicate **TO** the gateway:
|
||||
* RF components: 2001
|
||||
* WIRED components: 2000
|
||||
* HMIP components: 2010
|
||||
* CUxD: 8701
|
||||
* TclRegaScript: 8181
|
||||
* Groups: 9292
|
||||
These ports are used by the binding by default to communicate **TO** the gateway:
|
||||
|
||||
- RF components: 2001
|
||||
- WIRED components: 2000
|
||||
- HMIP components: 2010
|
||||
- CUxD: 8701
|
||||
- TclRegaScript: 8181
|
||||
- Groups: 9292
|
||||
|
||||
And **FROM** the gateway to openHab:
|
||||
* XML-RPC: 9125
|
||||
* BIN-RPC: 9126
|
||||
|
||||
- XML-RPC: 9125
|
||||
- BIN-RPC: 9126
|
||||
|
||||
**Note:** The binding tries to identify the gateway with XML-RPC and uses henceforth:
|
||||
|
||||
* **CCU**
|
||||
* **RF**: BIN-RPC
|
||||
* **WIRED**: BIN-RPC
|
||||
* **HMIP**: XML-RPC
|
||||
* **CUxD**: BIN-RPC (CUxD version >= 1.6 required)
|
||||
* **Groups**: XML-RPC
|
||||
* **Homegear**
|
||||
* BIN-RPC
|
||||
* **Other**
|
||||
* XML-RPC
|
||||
- **CCU**
|
||||
- **RF**: BIN-RPC
|
||||
- **WIRED**: BIN-RPC
|
||||
- **HMIP**: XML-RPC
|
||||
- **CUxD**: BIN-RPC (CUxD version >= 1.6 required)
|
||||
- **Groups**: XML-RPC
|
||||
|
||||
- **Homegear**
|
||||
- BIN-RPC
|
||||
|
||||
- **Other**
|
||||
- XML-RPC
|
||||
|
||||
## Supported Things
|
||||
|
||||
|
@ -76,6 +81,7 @@ The difference is, that variables, scripts and device names are not supported, e
|
|||
## Bridge Configuration
|
||||
|
||||
There are several settings for a bridge:
|
||||
|
||||
- **gatewayAddress** (required)
|
||||
Network address of the Homematic gateway
|
||||
|
||||
|
@ -98,8 +104,9 @@ Callback port of the BIN-RPC openHAB server, default is 9126 and counts up for e
|
|||
The interval in seconds to check if the communication with the Homematic gateway is still alive. If no message receives from the Homematic gateway, the RPC server restarts (default = 300)
|
||||
|
||||
- **reconnectInterval DEPRECATED, not necessary anymore**
|
||||
The interval in seconds to force a reconnect to the Homematic gateway, disables aliveInterval! (0 = disabled, default = disabled).
|
||||
If you have no sensors which sends messages in regular intervals and/or you have low communication, the aliveInterval may restart the connection to the Homematic gateway to often. The reconnectInterval disables the aliveInterval and reconnects after a fixed period of time.
|
||||
The interval in seconds to force a reconnect to the Homematic gateway, disables aliveInterval! (0 = disabled, default = disabled).
|
||||
If you have no sensors which sends messages in regular intervals and/or you have low communication, the aliveInterval may restart the connection to the Homematic gateway to often.
|
||||
The reconnectInterval disables the aliveInterval and reconnects after a fixed period of time.
|
||||
Think in hours when configuring (one hour = 3600)
|
||||
|
||||
- **timeout**
|
||||
|
@ -122,31 +129,31 @@ The port number of the CUxD daemon (default = 8701)
|
|||
|
||||
The syntax for a bridge is:
|
||||
|
||||
```
|
||||
```java
|
||||
homematic:bridge:NAME
|
||||
```
|
||||
|
||||
- **homematic** the binding id, fixed
|
||||
- **bridge** the type, fixed
|
||||
- **name** the name of the bridge
|
||||
- **homematic** the binding id, fixed
|
||||
- **bridge** the type, fixed
|
||||
- **name** the name of the bridge
|
||||
|
||||
#### Example
|
||||
### Example
|
||||
|
||||
- minimum configuration
|
||||
- minimum configuration
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge homematic:bridge:ccu [ gatewayAddress="..."]
|
||||
```
|
||||
|
||||
- with callback settings
|
||||
- with callback settings
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge homematic:bridge:ccu [ gatewayAddress="...", callbackHost="...", callbackPort=... ]
|
||||
```
|
||||
|
||||
- multiple bridges
|
||||
- multiple bridges
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge homematic:bridge:lxccu [ gatewayAddress="..."]
|
||||
Bridge homematic:bridge:occu [ gatewayAddress="..."]
|
||||
```
|
||||
|
@ -157,7 +164,7 @@ Things are all discovered automatically, you can handle them in PaperUI.
|
|||
|
||||
If you really like to manually configure a thing:
|
||||
|
||||
```
|
||||
```java
|
||||
Bridge homematic:bridge:ccu [ gatewayAddress="..." ]
|
||||
{
|
||||
Thing HM-LC-Dim1T-Pl-2 JEQ0999999
|
||||
|
@ -168,27 +175,28 @@ The first parameter after Thing is the device type, the second the serial number
|
|||
If you are using Homegear, you have to add the prefix ```HG-``` for each type.
|
||||
This is necessary, because the Homegear devices supports more datapoints than Homematic devices.
|
||||
|
||||
```
|
||||
```java
|
||||
Thing HG-HM-LC-Dim1T-Pl-2 JEQ0999999
|
||||
```
|
||||
|
||||
As additional parameters you can define a name and a location for each thing.
|
||||
The Name will be used to identify the Thing in the Paper UI lists, the Location will be used in the Control section of PaperUI to sort the things.
|
||||
|
||||
```
|
||||
```java
|
||||
Thing HG-HM-LC-Dim1T-Pl-2 JEQ0999999 "Name" @ "Location"
|
||||
```
|
||||
|
||||
All channels have two configs:
|
||||
* **delay**: delays transmission of a command **to** the Homematic gateway, duplicate commands are filtered out
|
||||
* **receiveDelay**: delays a received event **from** the Homematic gateway, duplicate events are filtered out (OH 2.2)
|
||||
|
||||
- **delay**: delays transmission of a command **to** the Homematic gateway, duplicate commands are filtered out
|
||||
- **receiveDelay**: delays a received event **from** the Homematic gateway, duplicate events are filtered out (OH 2.2)
|
||||
|
||||
The receiveDelay is handy for dimmers and rollershutters for example.
|
||||
If you have a slider in a UI and you move this slider to a new position, it jumps around because the gateway sends multiple events with different positions until the final has been reached.
|
||||
If you set the ```receiveDelay``` to some seconds, these events are filtered out and only the last position is distributed to openHab.
|
||||
The disadvantage is of course, that all events for this channel are delayed.
|
||||
|
||||
```
|
||||
```java
|
||||
Thing HM-LC-Dim1T-Pl-2 JEQ0999999 "Name" @ "Location" {
|
||||
Channels:
|
||||
Type HM-LC-Dim1T-Pl-2_1_level : 1#LEVEL [
|
||||
|
@ -204,18 +212,18 @@ The Type is the device type, channel number and lowercase channel name separated
|
|||
|
||||
In the items file, you can map the datapoints, the syntax is:
|
||||
|
||||
```
|
||||
```java
|
||||
homematic:TYPE:BRIDGE:SERIAL:CHANNELNUMBER#DATAPOINTNAME
|
||||
```
|
||||
|
||||
* **homematic:** the binding id, fixed
|
||||
* **type:** the type of the Homematic device
|
||||
* **bridge:** the name of the bridge
|
||||
* **serial:** the serial number of the Homematic device
|
||||
* **channelnumber:** the channel number of the Homematic datapoint
|
||||
* **datapointname:** the name of the Homematic datapoint
|
||||
- **homematic:** the binding id, fixed
|
||||
- **type:** the type of the Homematic device
|
||||
- **bridge:** the name of the bridge
|
||||
- **serial:** the serial number of the Homematic device
|
||||
- **channelnumber:** the channel number of the Homematic datapoint
|
||||
- **datapointname:** the name of the Homematic datapoint
|
||||
|
||||
```
|
||||
```java
|
||||
Switch RC_1 "Remote Control Button 1" { channel="homematic:HM-RC-19-B:ccu:KEQ0099999:1#PRESS_SHORT" }
|
||||
Dimmer Light "Light [%d %%]" { channel="homematic:HM-LC-Dim1T-Pl-2:ccu:JEQ0555555:1#LEVEL" }
|
||||
```
|
||||
|
@ -227,7 +235,7 @@ Dimmer Light "Light [%d %%]" { channel="homematic:HM-LC-Dim1T-Pl-2:cc
|
|||
The binding supports one virtual device and some virtual datapoints.
|
||||
Virtual datapoints are generated by the binding and provides special functionality.
|
||||
|
||||
#### GATEWAY-EXTRAS
|
||||
### GATEWAY-EXTRAS
|
||||
|
||||
The GATEWAY-EXTRAS is a virtual device which contains a switch to reload all values from all devices and also a switch to put the gateway in the install mode to add new devices.
|
||||
If the gateway supports variables and scripts, you can handle them with this device too.
|
||||
|
@ -235,56 +243,58 @@ The type is generated: GATEWAY-EXTRAS-[BRIDGE_ID].
|
|||
Example: bridgeId=ccu, type=GATEWAY-EXTRAS-CCU
|
||||
Address: fixed GWE00000000
|
||||
|
||||
#### RELOAD_ALL_FROM_GATEWAY
|
||||
### RELOAD_ALL_FROM_GATEWAY
|
||||
|
||||
A virtual datapoint (Switch) to reload all values for all devices, available in channel 0 in GATEWAY-EXTRAS
|
||||
|
||||
#### RELOAD_RSSI
|
||||
### RELOAD_RSSI
|
||||
|
||||
A virtual datapoint (Switch) to reload all rssi values for all devices, available in channel 0 in GATEWAY-EXTRAS
|
||||
|
||||
#### RSSI
|
||||
### RSSI
|
||||
|
||||
A virtual datapoint (Number) with the unified RSSI value from RSSI_DEVICE and RSSI_PEER, available in channel 0 for all wireless devices
|
||||
|
||||
#### INSTALL_MODE
|
||||
### INSTALL_MODE
|
||||
|
||||
A virtual datapoint (Switch) to start the install mode on the gateway, available in channel 0 in GATEWAY-EXTRAS
|
||||
|
||||
#### INSTALL_MODE_DURATION
|
||||
### INSTALL_MODE_DURATION
|
||||
|
||||
A virtual datapoint (Integer) to hold the duration for the install mode, available in channel 0 in GATEWAY-EXTRAS (max 300 seconds, default = 60)
|
||||
|
||||
#### DELETE_MODE
|
||||
### DELETE_MODE
|
||||
|
||||
A virtual datapoint (Switch) to remove the device from the gateway, available in channel 0 for each device. Deleting a device is only possible if DELETE_DEVICE_MODE is not LOCKED
|
||||
|
||||
#### DELETE_DEVICE_MODE
|
||||
### DELETE_DEVICE_MODE
|
||||
|
||||
A virtual datapoint (Enum) to configure the device deletion with DELETE_MODE, available in channel 0 for each device
|
||||
* **LOCKED:** (default) device can not be deleted
|
||||
* **RESET:** device is reset to factory settings before deleting
|
||||
* **FORCE:** device is also deleted if it is not reachable
|
||||
* **DEFER:** if the device can not be reached, it is deleted at the next opportunity
|
||||
|
||||
- **LOCKED:** (default) device can not be deleted
|
||||
- **RESET:** device is reset to factory settings before deleting
|
||||
- **FORCE:** device is also deleted if it is not reachable
|
||||
- **DEFER:** if the device can not be reached, it is deleted at the next opportunity
|
||||
|
||||
**Note:** if you change the value and don't delete the device, the virtual datapoints resets to LOCKED after 30 seconds
|
||||
|
||||
#### ON_TIME_AUTOMATIC
|
||||
### ON_TIME_AUTOMATIC
|
||||
|
||||
A virtual datapoint (Number) to automatically set the ON_TIME datapoint before the STATE or LEVEL datapoint is sent to the gateway, available for all devices which supports the ON_TIME datapoint.
|
||||
This is usefull to automatically turn off the datapoint after the specified time.
|
||||
|
||||
#### DISPLAY_OPTIONS
|
||||
### DISPLAY_OPTIONS
|
||||
|
||||
A virtual datapoint (String) to control the display of a 19 button Homematic remote control (HM-RC-19), available on channel 18
|
||||
|
||||
The remote control display is limited to five characters, a longer text is truncated.
|
||||
|
||||
You have several additional options to control the display.
|
||||
* BEEP _(TONE1, TONE2, TONE3)_ - let the remote control beep
|
||||
* BACKLIGHT _(BACKLIGHT_ON, BLINK_SLOW, BLINK_FAST)_ - control the display backlight
|
||||
* UNIT _(PERCENT, WATT, CELSIUS, FAHRENHEIT)_ - display one of these units
|
||||
* SYMBOL _(BULB, SWITCH, WINDOW, DOOR, BLIND, SCENE, PHONE, BELL, CLOCK, ARROW_UP, ARROW_DOWN)_ - display symbols, multiple symbols possible
|
||||
|
||||
- BEEP *(TONE1, TONE2, TONE3)* - let the remote control beep
|
||||
- BACKLIGHT *(BACKLIGHT_ON, BLINK_SLOW, BLINK_FAST)* - control the display backlight
|
||||
- UNIT *(PERCENT, WATT, CELSIUS, FAHRENHEIT)* - display one of these units
|
||||
- SYMBOL *(BULB, SWITCH, WINDOW, DOOR, BLIND, SCENE, PHONE, BELL, CLOCK, ARROW_UP, ARROW_DOWN)* - display symbols, multiple symbols possible
|
||||
|
||||
You can combine any option, they must be separated by a comma.
|
||||
If you specify more than one option for BEEP, BACKLIGHT and UNIT, only the first one is taken into account and all others are ignored. For SYMBOL you can specify multiple options.
|
||||
|
@ -293,49 +303,49 @@ If you specify more than one option for BEEP, BACKLIGHT and UNIT, only the first
|
|||
|
||||
Assumed you mapped the virtual datapoint to a String item called Display_Options
|
||||
|
||||
```
|
||||
```java
|
||||
String Display_Options "Display_Options" { channel="homematic:HM-RC-19-B:ccu:KEQ0099999:18#DISPLAY_OPTIONS" }
|
||||
```
|
||||
|
||||
show message TEST:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome send Display_Options "TEST"
|
||||
```
|
||||
|
||||
show message TEXT, beep once and turn backlight on:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome send Display_Options "TEXT, TONE1, BACKLIGHT_ON"
|
||||
```
|
||||
|
||||
show message 15, beep once, turn backlight on and shows the celsius unit:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome send Display_Options "15, TONE1, BACKLIGHT_ON, CELSIUS"
|
||||
```
|
||||
|
||||
show message ALARM, beep three times, let the backlight blink fast and shows a bell symbol:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome send Display_Options "ALARM, TONE3, BLINK_FAST, BELL"
|
||||
```
|
||||
|
||||
Duplicate options: TONE3 is ignored, because TONE1 is specified previously.
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome send Display_Options "TEXT, TONE1, BLINK_FAST, TONE3"
|
||||
```
|
||||
|
||||
#### DISPLAY_SUBMIT
|
||||
### DISPLAY_SUBMIT
|
||||
|
||||
Adds multiple virtual datapoints to the HM-Dis-WM55 device to easily send colored text and icons to the display
|
||||
|
||||
Example: Display text at line 1,3 and 5 when the bottom button on the display is pressed
|
||||
|
||||
- Items
|
||||
- Items
|
||||
|
||||
```
|
||||
```java
|
||||
String Display_line_1 "Line 1" { channel="homematic:HM-Dis-WM55:ccu:NEQ0123456:1#DISPLAY_LINE_1" }
|
||||
String Display_line_3 "Line 3" { channel="homematic:HM-Dis-WM55:ccu:NEQ0123456:1#DISPLAY_LINE_3" }
|
||||
String Display_line_5 "Line 5" { channel="homematic:HM-Dis-WM55:ccu:NEQ0123456:1#DISPLAY_LINE_5" }
|
||||
|
@ -352,9 +362,9 @@ Switch Button_bottom "Button" { channel="homematic:HM-Dis-WM55:ccu:NEQ0123
|
|||
Switch Display_submit "Submit" { channel="homematic:HM-Dis-WM55:ccu:NEQ0123456:1#DISPLAY_SUBMIT" }
|
||||
```
|
||||
|
||||
- Rule
|
||||
- Rule
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "Display Test"
|
||||
when
|
||||
Item Button_bottom received update ON
|
||||
|
@ -375,14 +385,14 @@ then
|
|||
end
|
||||
```
|
||||
|
||||
#### PRESS
|
||||
### PRESS
|
||||
|
||||
A virtual datapoint (String) to simulate a key press, available on all channels that contains PRESS_ datapoints.
|
||||
Available values: SHORT, LONG, LONG_RELEASE
|
||||
Available values: SHORT, LONG, LONG_RELEASE, CONT
|
||||
|
||||
Example: to capture a key press on the 19 button remote control in a rule
|
||||
|
||||
```
|
||||
```javascript
|
||||
rule "example trigger rule"
|
||||
when
|
||||
Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#PRESS' triggered SHORT
|
||||
|
@ -391,7 +401,7 @@ then
|
|||
end
|
||||
```
|
||||
|
||||
### Troubleshooting
|
||||
## Troubleshooting
|
||||
|
||||
**SHORT & LONG_PRESS events of push buttons do not occur on the event bus**
|
||||
|
||||
|
@ -429,13 +439,13 @@ To reload all variable values, send a REFRESH command to any variable.
|
|||
e.g you have a item linked to a variable with the name Var_1
|
||||
In the console:
|
||||
|
||||
```
|
||||
```shell
|
||||
smarthome:send Var_1 REFRESH
|
||||
```
|
||||
|
||||
In scripts:
|
||||
|
||||
```
|
||||
```javascript
|
||||
import org.eclipse.smarthome.core.types.RefreshType
|
||||
...
|
||||
sendCommand(Var_1, RefreshType.REFRESH)
|
||||
|
@ -447,25 +457,25 @@ sendCommand(Var_1, RefreshType.REFRESH)
|
|||
|
||||
If you want to see what's going on in the binding, switch the loglevel to DEBUG in the Karaf console
|
||||
|
||||
```
|
||||
```shell
|
||||
log:set DEBUG org.openhab.binding.homematic
|
||||
```
|
||||
|
||||
If you want to see even more, switch to TRACE to also see the gateway request/response data
|
||||
|
||||
```
|
||||
```shell
|
||||
log:set TRACE org.openhab.binding.homematic
|
||||
```
|
||||
|
||||
Set the logging back to normal
|
||||
|
||||
```
|
||||
```shell
|
||||
log:set INFO org.openhab.binding.homematic
|
||||
```
|
||||
|
||||
To identify problems, i need a full startup TRACE log
|
||||
|
||||
```
|
||||
```shell
|
||||
stop org.openhab.binding.homematic
|
||||
log:set TRACE org.openhab.binding.homematic
|
||||
start org.openhab.binding.homematic
|
||||
|
|
|
@ -6,7 +6,7 @@ type: binding
|
|||
description: "This binding supports the horizon mediabox used by cable companies in the Netherlands and some other countries. The box is manufactured by Samsung and known as SMT-G7400 and SMT-G7401. This binding is tested with the SMT-G7401 but should also work with the SMT-G7400. The binding only works when your box is connected to your home network. When you are able to use the HorizonGo remote control app, you should also be able to use this binding."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.horizon/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
|
|
@ -6,7 +6,7 @@ type: binding
|
|||
description: "This binding is used to communicate to metering devices supporting serial communication according IEC 62056-21 mode C master. It can be used to read metering data from slaves such as gas, water, heat, or electricity meters."
|
||||
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/binding/org.openhab.binding.iec6205621meter/README.md
|
||||
since: 1x
|
||||
install: manual
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
|
|
@ -561,75 +561,3 @@ running. If new devices are linked, the binding must be restarted.
|
|||
database happens. Somehow the modem then stops sending the remaining link records and the binding no longer is able to address the missing devices. The fix is to simply restart the binding.
|
||||
4. The Insteon PLM device is know to break after about 2-3 years due to poorly sized capacitors of the power supply. With a bit of soldering skill you can repair it yourself, see http://pfrommer.us/home-automation or the original thread: http://forum.universal-devices.com/topic/13866-repair-of-2413s-plm-when-the-power-supply-fails/.
|
||||
5. Using the Insteon Hub 2014 in conjunction with other applications (such as the InsteonApp) is not supported. Concretely, OpenHab will not learn when a switch is flipped via the Insteon App until the next poll, which could take minutes.
|
||||
|
||||
### Device Permissions / Linux Device Locks
|
||||
|
||||
When OpenHAB is running as a non-root user (Linux/OSX) it is important to ensure it has write access not just to the PLM device, but to the os lock directory. Under openSUSE this is `/run/lock` and is managed by the **lock** group.
|
||||
|
||||
Example commands to grant OpenHAB access (adjust for your distribution):
|
||||
|
||||
````
|
||||
usermod -a -G dialout openhab
|
||||
usermod -a -G lock openhab
|
||||
````
|
||||
|
||||
Insufficient access to the lock directory will result in OpenHAB failing to access the device, even if the device itself is writable.
|
||||
|
||||
### Adding new device types (using existing device features)
|
||||
|
||||
Device types are defined in the file `device_types.xml`, which is inside the InsteonPLM bundle and thus not visible to the user. You can however load your own device_types.xml by referencing it in the openhab.cfg file like so:
|
||||
|
||||
insteonplm:more_devices=/usr/local/openhab/rt/my_own_devices.xml
|
||||
|
||||
Where the `my_own_devices.xml` file defines a new device like this:
|
||||
|
||||
```xml
|
||||
<xml>
|
||||
<device productKey="F00.00.XX">
|
||||
<model>2456-D3</model>
|
||||
<description>LampLinc V2</description>
|
||||
<feature name="dimmer">GenericDimmer</feature>
|
||||
<feature name="lastheardfrom">GenericLastTime</feature>
|
||||
</device>
|
||||
</xml>
|
||||
```
|
||||
|
||||
Finding the Insteon product key can be tricky since Insteon has not updated the product key table (http://www.insteon.com/pdf/insteon_devcats_and_product_keys_20081008.pdf) since 2008. If a web search does not turn up the product key, make one up, starting with "F", like: F00.00.99. Avoid duplicate keys by finding the highest fake product key in the `device_types.xml` file, and incrementing by one.
|
||||
|
||||
### Adding new device features
|
||||
|
||||
If you can't can't build a new device out of the existing device features (for a complete list see `device_features.xml`) you can add new features by specifying a file (let's call it `my_own_features.xml`) with the "more_devices" option in the `openhab.cfg` file:
|
||||
|
||||
insteonplm:more_features=/usr/local/openhab/rt/my_own_features.xml
|
||||
|
||||
In this file you can define your own features (or even overwrite an existing feature). In the example below a new feature "MyFeature" is defined, which can then be referenced from the `device_types.xml` file (or from `my_own_devices.xml`):
|
||||
|
||||
```
|
||||
<xml>
|
||||
<feature name="MyFeature">
|
||||
<message-dispatcher>DefaultDispatcher</message-dispatcher>
|
||||
<message-handler cmd="0x03">NoOpMsgHandler</message-handler>
|
||||
<message-handler cmd="0x06">NoOpMsgHandler</message-handler>
|
||||
<message-handler cmd="0x11">NoOpMsgHandler</message-handler>
|
||||
<message-handler cmd="0x13">NoOpMsgHandler</message-handler>
|
||||
<message-handler cmd="0x19">LightStateSwitchHandler</message-handler>
|
||||
<command-handler command="OnOffType">IOLincOnOffCommandHandler</command-handler>
|
||||
<poll-handler>DefaultPollHandler</poll-handler>
|
||||
</feature>
|
||||
</xml>
|
||||
```
|
||||
|
||||
If you cannot cobble together a suitable device feature out of existing handlers you will have to define new ones by editing the corresponding Java classes in the source tree (see below).
|
||||
|
||||
### Adding new handlers (for developers experienced with Eclipse IDE)
|
||||
|
||||
If all else fails there are the Java sources, in particular the classes MessageHandler.java (what to do with messages coming in from the Insteon network), PollHandler.java (how to form outbound messages for device polling), and CommandHandler.java (how to translate openhab commands to Insteon network messages). To that end you'll need to become a bonafide openHAB developer, and set up an openHAB Eclipse build environment, following the online instructions. Before you write new handlers have a good look at the existing ones, they are quite flexible and configurable via parameters in `device_features.xml`.
|
||||
|
||||
## Known Limitations and Issues
|
||||
|
||||
1. Devices cannot be linked to the modem while the binding is running. If new devices are linked, the binding must be restarted.
|
||||
2. Setting up Insteon groups and linking devices cannot be done from within openHAB. Use the [Insteon Terminal](https://github.com/pfrommerd/insteon-terminal) for that. If using Insteon Terminal (especially as root), ensure any stale lock files (For example, /var/lock/LCK..ttyUSB0) are removed before starting OpenHAB runtime. Failure to do so may result in "found no ports".
|
||||
3. Very rarely during binding startup, a message arrives at the modem while the initial read of the modem
|
||||
database happens. Somehow the modem then stops sending the remaining link records and the binding no longer is able to address the missing devices. The fix is to simply restart the binding.
|
||||
4. The Insteon PLM device is know to break after about 2-3 years due to poorly sized capacitors of the power supply. With a bit of soldering skill you can repair it yourself, see http://pfrommer.us/home-automation or the original thread: http://forum.universal-devices.com/topic/13866-repair-of-2413s-plm-when-the-power-supply-fails/.
|
||||
5. Using the Insteon Hub 2014 in conjunction with other applications (such as the InsteonApp) is not supported. Concretely, OpenHab will not learn when a switch is flipped via the Insteon App until the next poll, which could take minutes.
|
||||
|
|
|
@ -68,10 +68,26 @@ For all supported, you simply have to read the position of the switches and use
|
|||
{ culintertechno="type=classic;group=I;address=1" }
|
||||
```
|
||||
|
||||
### Intertechno V3
|
||||
|
||||
```
|
||||
{ culintertechno="type=v3;id=01101011000011110000000000;channel=2" }
|
||||
```
|
||||
|
||||
You have to provide the 26-digit id and the channel (0-15).
|
||||
Optional, you can provide the group parameter (with value "1") , which results in switching all items with the given id.
|
||||
|
||||
```
|
||||
{ culintertechno="type=v3;id=01101011000011110000000000;group=1" }
|
||||
```
|
||||
|
||||
|
||||
### Raw mode
|
||||
|
||||
If you have an unsupported intertechno device you can fallback to the raw mode
|
||||
|
||||
```
|
||||
{ culintertechno="type=raw;address=FF00FF00;commandOn=FF;commandOff=F0" }
|
||||
{ culintertechno="type=raw;commandOn=FF00FF00FF;commandOff=FF00FF00F0" }
|
||||
```
|
||||
|
||||
This configuration allows you to manual specify the base address and the appended on and off command.
|
||||
This configuration allows you to manually specify the complete commands to send in either ON or OFF state. The given commands will be sent directly to the CUL (prefixed with "is").
|
||||
|
|
|
@ -68,7 +68,7 @@ The IP address will be found by the auto-discovery feature.
|
|||
A manual setup through a `things/kodi.things` file could look like this:
|
||||
|
||||
```
|
||||
Thing kodi:kodi:myKodi "Kodi" @ "Living Room" [ipAddress="192.168.1.100", port="9090", httpPort="8080"]
|
||||
Thing kodi:kodi:myKodi "Kodi" @ "Living Room" [ipAddress="192.168.1.100", port=9090, httpPort=8080]
|
||||
```
|
||||
|
||||
## Channels
|
||||
|
@ -107,7 +107,7 @@ You can optionally configure an user-defined PVR channel group.
|
|||
A manual setup through a `things/kodi.things` file could look like this:
|
||||
|
||||
```
|
||||
Thing kodi:kodi:myKodi "Kodi" @ "Living Room" [ipAddress="192.168.1.100", port="9090"] {
|
||||
Thing kodi:kodi:myKodi "Kodi" @ "Living Room" [ipAddress="192.168.1.100", port=9090] {
|
||||
Channels:
|
||||
Type pvr-open-tv : pvr-open-tv [
|
||||
group="All channels"
|
||||
|
|
|
@ -91,6 +91,10 @@ All devices support some of the following channels:
|
|||
|
||||
The *color* and *brightness* channels have a "Power on brightness" configuration option that is used to determine the brightness when a light is switched on. When it is left empty, the brightness of a light remains unchanged when a light is switched on or off.
|
||||
|
||||
The *color* channels have a "Power on color" configuration option that is used to determine the hue, saturation, brightness levels when a light is switched on. When it is left empty, the color of a light remains unchanged when a light is switched on or off. Configuration options contains 3 comma separated values, where first value is hue (0-360), second saturation (0-100) and third brightness (0-100). If both "Power on brightness" and "Power on color" configuration options are defined, "Power on brightness" option overrides the brightness level defined on the "Power on color" configuration option.
|
||||
|
||||
The *temperature* channels have a "Power on temperature" configuration option that is used to determine the color temperature when a light is switched on. When it is left empty, the color temperature of a light remains unchanged when a light is switched on or off.
|
||||
|
||||
MultiZone lights (*colormzlight*) have serveral channels (e.g. *colorzone0*, *temperaturezone0*, etc.) that allow for controlling specific zones of the light. Changing the *color* and *temperature* channels will update the states of all zones. The *color* and *temperature* channels of MultiZone lights always return the same state as *colorzone0*, *temperaturezone0*.
|
||||
|
||||
|
||||
|
@ -123,6 +127,16 @@ Thing lifx:colorirlight:porch [ deviceId="D073D5B2B2B2", host="10.120.130.4", fa
|
|||
Type color : color [ powerOnBrightness=75 ]
|
||||
}
|
||||
|
||||
Thing lifx:colorirlight:porch [ deviceId="D073D5B2B2B2", host="10.120.130.4", fadetime=0 ] {
|
||||
Channels:
|
||||
Type temperature : temperature [ powerOnTemperature=20 ]
|
||||
}
|
||||
|
||||
Thing lifx:colorirlight:porch [ deviceId="D073D5B2B2B2", host="10.120.130.4", fadetime=0 ] {
|
||||
Channels:
|
||||
Type color : color [ powerOnColor="120,100,50" ] // Deep green, 50% brightness
|
||||
}
|
||||
|
||||
Thing lifx:colormzlight:ceiling [ host="10.120.130.5" ]
|
||||
|
||||
Thing lifx:whitelight:kitchen [ deviceId="D073D5D4D4D4", fadetime=150 ]
|
||||
|
|
|
@ -28,6 +28,8 @@ The following features are currently supported:
|
|||
* Management of a Websocket connection to the Miniserver and updating Thing status accordingly
|
||||
* Updates of openHAB channel's state in runtime according to control's state changes on the Miniserver
|
||||
* Passing channel commands to the Miniserver's controls
|
||||
* Hash-based and token-based authentication methods
|
||||
* Command encryption and response decryption
|
||||
|
||||
## Things
|
||||
|
||||
|
@ -71,11 +73,13 @@ There can be following reasons why Miniserver status is `OFFLINE`:
|
|||
|
||||
* __Configuration Error__
|
||||
* _Unknown host_
|
||||
* Miniserver host/ip address can't be resolved. No connection attempt will be made.
|
||||
* _User not authorized_
|
||||
* Miniserver host/ip address can't be resolved. No connection attempt will be made.
|
||||
* _User authentication error_
|
||||
* Invalid user name or password or user not authorized to connect to the Miniserver. Binding will make another attempt to connect after some time.
|
||||
* _Too many failed login attempts - stopped trying_
|
||||
* Miniserver locked out user for too many failed login attempts. In this case binding will stop trying to connect to the Miniserver. A new connection will be attempted only when user corrects user name or password in the configuration parameters.
|
||||
* _Enter password to generate a new token_
|
||||
* Authentication using stored token failed - either token is wrong or it. A password must be reentered in the binding settings to acquire a new token.
|
||||
* _Internal error_
|
||||
* Probably a code defect, collect debug data and submit an issue. Binding will try to reconnect, but with unknown chance for success.
|
||||
* _Other_
|
||||
|
@ -92,6 +96,24 @@ There can be following reasons why Miniserver status is `OFFLINE`:
|
|||
* _Other_
|
||||
* An exception occured and its details will be displayed
|
||||
|
||||
### Security
|
||||
|
||||
The binding supports the following authentication methods, which are selected automatically based on the firmware version. They can be also chosen manually in the advanced settings.
|
||||
|
||||
| Method | Miniserver Firmware | Authentication | Encryption | Requirements |
|
||||
|-------------|---------------------|--------------------------------------------------------------------------------|------------|-------------------------------------------------------|
|
||||
| Hash-based | 8.x | HMAC-SHA1 hash on user and password | None | None |
|
||||
| Token-based | 9.x | Token acquired on the first connection and used later instead of the password. | AES-256 | JRE must have unrestricted security policy configured |
|
||||
|
||||
For the token-based authentication, the password is required only for the first login and acquiring the token. After the token is acquired, the password is cleared in the binding configuration.
|
||||
|
||||
The acquired token will remain active for several weeks following the last succesful authentication with this token. If the connection is not established used during that period and the token expires, a user password has to be re-entered in the binding settings to acquire a new token.
|
||||
|
||||
In case a websocket connection to the Miniserver remains active for the whole duration of the token's life span, the binding will refresh the token one day before token expiration, without the need of providing the password.
|
||||
|
||||
|
||||
A method to enable unrestricted security policy depends on the JRE version and vendor, some examples can be found [here](https://www.petefreitag.com/item/844.cfm) and [here](https://stackoverflow.com/questions/41580489/how-to-install-unlimited-strength-jurisdiction-policy-files).
|
||||
|
||||
## Channels
|
||||
|
||||
This binding creates channels for controls that are [used in Loxone's user interface](https://www.loxone.com/enen/kb/user-interface-configuration/).
|
||||
|
@ -110,8 +132,7 @@ Currently supported controls are presented in the table below.
|
|||
| Radio | [Radio button 8x and 16x](https://www.loxone.com/enen/kb/radio-buttons/) | `Number` | `Decimal` (select output number 1-8/16 or 0 for all outputs off)<br>`OnOffType.OFF` (all outputs off) |
|
||||
| Switch | [Virtual inputs](https://www.loxone.com/enen/kb/virtual-inputs-outputs/) of switch type<br>[Push-button](https://www.loxone.com/enen/kb/push-button/) | `Switch` | `OnOffType.*` |
|
||||
| TextState | [State](https://www.loxone.com/enen/kb/state/) | `String` | none (read-only value) |
|
||||
| TimedSwitch | [Stairwell light switch](https://www.loxone.com/enen/kb/stairwell-light-switch/) or [Multifunction switch](https://www.loxone.com/enen/kb/multifunction-switch/) | `Switch` <br> <br> `Number` | `OnOffType.*` (ON send pulse to Loxone) <br> <br> Read-only countdown value to off |
|
||||
|
||||
| TimedSwitch | [Stairwell light switch](https://www.loxone.com/enen/kb/stairwell-light-switch/) or [Multifunction switch](https://www.loxone.com/enen/kb/multifunction-switch/) | `Switch` <br> <br> `Number` | `OnOffType.*` (ON sends pulse to Loxone) <br> <br> Read-only countdown value to off |
|
||||
|
||||
If your control is supported, but binding does not recognize it, please check if it is exposed in Loxone UI using [Loxone Config](https://www.loxone.com/enen/kb-cat/loxone-config/) application.
|
||||
|
||||
|
@ -131,7 +152,13 @@ If a parameter is not explicitly defined, binding will use its default value.
|
|||
|
||||
To define a parameter value in a .things file, please refer to it by parameter's ID, for example:
|
||||
|
||||
`keepAlivePeriod=120`
|
||||
keepAlivePeriod=120
|
||||
|
||||
### Security
|
||||
|
||||
| ID | Name | Values | Default | Description |
|
||||
|--------------|-----------------------|-------------------------------------------------|--------------|-------------------------------------------------------|
|
||||
| `authMethod` | Authentication method | 0: Automatic<br>1: Hash-based<br>2: Token-based | 0: Automatic | A method used to authenticate user in the Miniserver. |
|
||||
|
||||
### Timeouts
|
||||
|
||||
|
@ -155,13 +182,9 @@ They can be tuned, when abnormal behavior of the binding is observed, which can
|
|||
| `maxBinMsgSize` | Maximum binary message size (kB) | 0-100 MB | 3072 (3 MB) | For Websocket client, a maximum size of a binary message that can be received from the Miniserver. If you get communication errors with a message indicating there are too long binary messages received, you may need to adjust this parameter. |
|
||||
| `maxTextMsgSize` | Maximum text message size (kB) | 0-100 MB | 512 KB | For Websocket client, a maximum size of a text message that can be received from the Miniserver. If you get communication errors with a message indicating there are too long text messages received, you may need to adjust this parameter. |
|
||||
|
||||
|
||||
## Limitations
|
||||
|
||||
* As there is no push button item type in openHAB, Loxone's push button is an openHAB's switch, which always generates a short pulse on changing its state to on.
|
||||
If you use simple UI mode and framework generates items for you, switches for push buttons will still be toggle switches.
|
||||
To change it to the push button style, you have to create item manually with `autoupdate=false` parameter.
|
||||
An example of such item definition is given in the _Items_ section above.
|
||||
* As there is no push button item type in openHAB, Loxone's push button is an openHAB's switch, which always generates a short pulse on changing its state to on. If you use simple UI mode and framework generates items for you, switches for push buttons will still be toggle switches. To change it to the push button style, you have to create item manually with `autoupdate=false` parameter. An example of such item definition is given in the _Items_ section above.
|
||||
|
||||
## Automatic Configuration Example
|
||||
|
||||
|
@ -197,7 +220,7 @@ In this example we will manually configure:
|
|||
|
||||
```
|
||||
loxone:miniserver:504F2414780F [ user="kryten", password="jmc2017", host="192.168.0.220", port=80
|
||||
```
|
||||
```
|
||||
|
||||
### items/loxone.items:
|
||||
|
||||
|
|
|
@ -139,13 +139,13 @@ Limitations:
|
|||
# You have to link the items to the channels of your prefered group e.g. in paperui after you've saved
|
||||
# your items file.
|
||||
|
||||
# The command types nightMode and whiteMode should be configured as pushbuttons as they only support a trigger action:
|
||||
Switch Light_GroundfloorN {channel="milight:whiteLed:ACCF23A6C0B4:0:nightMode"} # Activate the NightMode for all bulbs
|
||||
# The command types nightMode and whiteMode are stateless and should be configured as pushbuttons as they only support a trigger action:
|
||||
Switch Light_GroundfloorN {channel="milight:whiteLed:ACCF23A6C0B4:0:lednightmode", autoupdate="false"} # Activate the NightMode for all bulbs
|
||||
|
||||
# The command types animation_mode_relative and animation_speed should be configured as pushbuttons as they only support INCREASE and DECREASE commands:
|
||||
# The command types animation_mode_relative and animation_speed are stateless and should be configured as pushbuttons as they only support INCREASE and DECREASE commands:
|
||||
|
||||
Dimmer AnimationMode {channel="milight:rgbLed:ACCF23A6C0B4:5:animation_mode_relative"}
|
||||
Dimmer AnimationSpeed {channel="milight:rgbLed:ACCF23A6C0B4:5:animation_speed"}
|
||||
Dimmer AnimationMode {channel="milight:rgbLed:ACCF23A6C0B4:5:animation_mode_relative", autoupdate="false"}
|
||||
Dimmer AnimationSpeed {channel="milight:rgbLed:ACCF23A6C0B4:5:animation_speed", autoupdate="false"}
|
||||
|
||||
# Animation Mode for RGBWW bulbs is different, it allows to pick a mode directly.
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ The account Thing Type does not have any channels.
|
|||
|-----------------------|-----------|---------------------------------------------------|:----------:|
|
||||
| app_url | String | The app URL to see the camera | R |
|
||||
| audio_input_enabled | Switch | If the audio input is currently enabled | R |
|
||||
| last_online_change | DateTime | Timestamp of the last online status change | R |
|
||||
| public_share_enabled | Switch | If public sharing is currently enabled | R |
|
||||
| public_share_url | String | The URL to see the public share of the camera | R |
|
||||
| snapshot_url | String | The URL to use for a snapshot of the video stream | R |
|
||||
|
@ -85,19 +86,21 @@ The account Thing Type does not have any channels.
|
|||
|
||||
### Smoke Detector Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description | Read Write |
|
||||
|--------------------|-----------|-----------------------------------------------------------------------------------|:----------:|
|
||||
| co_alarm_state | String | The carbon monoxide alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
|
||||
| low_battery | Switch | Reports whether the battery of the Nest protect is low (if it is battery powered) | R |
|
||||
| manual_test_active | Switch | Manual test active at the moment | R |
|
||||
| smoke_alarm_state | String | The smoke alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
|
||||
| ui_color_state | String | The current color of the ring on the smoke detector (GRAY, GREEN, YELLOW, RED) | R |
|
||||
| Channel Type ID | Item Type | Description | Read Write |
|
||||
|-----------------------|-----------|-----------------------------------------------------------------------------------|:----------:|
|
||||
| co_alarm_state | String | The carbon monoxide alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
|
||||
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
|
||||
| last_manual_test_time | DateTime | Timestamp of the last successful manual test | R |
|
||||
| low_battery | Switch | Reports whether the battery of the Nest protect is low (if it is battery powered) | R |
|
||||
| manual_test_active | Switch | Manual test active at the moment | R |
|
||||
| smoke_alarm_state | String | The smoke alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
|
||||
| ui_color_state | String | The current color of the ring on the smoke detector (GRAY, GREEN, YELLOW, RED) | R |
|
||||
|
||||
### Structure Channels
|
||||
|
||||
| Channel Type ID | Item Type | Description | Read Write |
|
||||
|------------------------------|-----------|--------------------------------------------------------------------------------------------------------|:----------:|
|
||||
| away | String | Away state of the structure (HOME, AWAY, AUTO_AWAY) | R/W |
|
||||
| away | String | Away state of the structure (HOME, AWAY) | R/W |
|
||||
| country_code | String | Country code of the structure ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)) | R |
|
||||
| co_alarm_state | String | Carbon Monoxide alarm state (OK, EMERGENCY, WARNING) | R |
|
||||
| eta_begin | DateTime | Estimated time of arrival at home, will setup the heat to turn on and be warm | R |
|
||||
|
@ -120,6 +123,7 @@ The account Thing Type does not have any channels.
|
|||
| has_fan | Switch | If the thermostat can control the fan | R |
|
||||
| has_leaf | Switch | If the thermostat is currently in a leaf mode | R |
|
||||
| humidity | Number | Indicates the current relative humidity | R |
|
||||
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
|
||||
| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R |
|
||||
| locked_max_set_point | Number | The locked range max set point in degrees Celsius | R/W |
|
||||
| locked_min_set_point | Number | The locked range min set point in degrees Celsius | R/W |
|
||||
|
@ -165,57 +169,61 @@ Bridge nest:account:demo_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589
|
|||
|
||||
```
|
||||
/* Camera */
|
||||
String Cam_App_URL "App URL [%s]" { channel="nest:camera:demo_account:fish_cam:app_url" }
|
||||
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:camera:demo_account:fish_cam:audio_input_enabled" }
|
||||
String Cam_Snapshot_URL "Snapshot URL [%s]" { channel="nest:camera:demo_account:fish_cam:snapshot_url" }
|
||||
Switch Cam_Streaming "Streaming" { channel="nest:camera:demo_account:fish_cam:streaming" }
|
||||
Switch Cam_Public_Share_Enabled "Public Share Enabled" { channel="nest:camera:demo_account:fish_cam:public_share_enabled" }
|
||||
String Cam_Public_Share_URL "Public Share URL [%s]" { channel="nest:camera:demo_account:fish_cam:public_share_url" }
|
||||
Switch Cam_Video_History_Enabled "Video History Enabled" { channel="nest:camera:demo_account:fish_cam:video_history_enabled" }
|
||||
String Cam_Web_URL "Web URL [%s]" { channel="nest:camera:demo_account:fish_cam:web_url" }
|
||||
String Cam_App_URL "App URL [%s]" { channel="nest:camera:demo_account:fish_cam:app_url" }
|
||||
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:camera:demo_account:fish_cam:audio_input_enabled" }
|
||||
DateTime Cam_Last_Online_Change "Last Online Change [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:camera:demo_account:fish_cam:last_online_change" }
|
||||
String Cam_Snapshot_URL "Snapshot URL [%s]" { channel="nest:camera:demo_account:fish_cam:snapshot_url" }
|
||||
Switch Cam_Streaming "Streaming" { channel="nest:camera:demo_account:fish_cam:streaming" }
|
||||
Switch Cam_Public_Share_Enabled "Public Share Enabled" { channel="nest:camera:demo_account:fish_cam:public_share_enabled" }
|
||||
String Cam_Public_Share_URL "Public Share URL [%s]" { channel="nest:camera:demo_account:fish_cam:public_share_url" }
|
||||
Switch Cam_Video_History_Enabled "Video History Enabled" { channel="nest:camera:demo_account:fish_cam:video_history_enabled" }
|
||||
String Cam_Web_URL "Web URL [%s]" { channel="nest:camera:demo_account:fish_cam:web_url" }
|
||||
|
||||
/* Smoke Detector */
|
||||
String Smoke_CO_Alarm "CO Alarm [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:co_alarm_state" }
|
||||
Switch Smoke_Battery_Low "Battery Low" { channel="nest:smoke_detector:demo_account:hallway_smoke:low_battery" }
|
||||
Switch Smoke_Manual_Test "Manual Test" { channel="nest:smoke_detector:demo_account:hallway_smoke:manual_test_active" }
|
||||
String Smoke_Smoke_Alarm "Smoke Alarm [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:smoke_alarm_state" }
|
||||
String Smoke_UI_Color "UI Color [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:ui_color_state" }
|
||||
String Smoke_CO_Alarm "CO Alarm [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:co_alarm_state" }
|
||||
Switch Smoke_Battery_Low "Battery Low" { channel="nest:smoke_detector:demo_account:hallway_smoke:low_battery" }
|
||||
Switch Smoke_Manual_Test "Manual Test" { channel="nest:smoke_detector:demo_account:hallway_smoke:manual_test_active" }
|
||||
DateTime Smoke_Last_Connection "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:smoke_detector:demo_account:hallway_smoke:last_connection" }
|
||||
DateTime Smoke_Last_Manual_Test "Last Manual Test [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:smoke_detector:demo_account:hallway_smoke:last_manual_test_time" }
|
||||
String Smoke_Smoke_Alarm "Smoke Alarm [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:smoke_alarm_state" }
|
||||
String Smoke_UI_Color "UI Color [%s]" { channel="nest:smoke_detector:demo_account:hallway_smoke:ui_color_state" }
|
||||
|
||||
/* Thermostat */
|
||||
Switch Thermostat_Can_Cool "Can Cool" { channel="nest:thermostat:demo_account:living_thermostat:can_cool" }
|
||||
Switch Thermostat_Can_Heat "Can Heat" { channel="nest:thermostat:demo_account:living_thermostat:can_heat" }
|
||||
Switch Thermostat_FT_Active "Fan Timer Active" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_active" }
|
||||
Number Thermostat_FT_Duration "Fan Timer Duration" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_duration" }
|
||||
DateTime Thermostat_FT_Timeout "Fan Timer Timeout [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_timeout" }
|
||||
Switch Thermostat_Has_Fan "Has Fan" { channel="nest:thermostat:demo_account:living_thermostat:has_fan" }
|
||||
Switch Thermostat_Has_Leaf "Has Leaf" { channel="nest:thermostat:demo_account:living_thermostat:has_leaf" }
|
||||
Number Thermostat_Humidity "Humidity [%.1f %%]" { channel="nest:thermostat:demo_account:living_thermostat:humidity" }
|
||||
Switch Thermostat_Locked "Locked" { channel="nest:thermostat:demo_account:living_thermostat:locked" }
|
||||
Number Thermostat_LMaxSP "Locked Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_max_set_point" }
|
||||
Number Thermostat_LMinSP "Locked Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_min_set_point" }
|
||||
Number Thermostat_Max_SP "Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:max_set_point" }
|
||||
Number Thermostat_Min_SP "Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:min_set_point" }
|
||||
String Thermostat_Mode "Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:mode" }
|
||||
String Thermostat_PreviousMode "Previous Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:previous_mode" }
|
||||
String Thermostat_State "State [%s]" { channel="nest:thermostat:demo_account:living_thermostat:state" }
|
||||
Number Thermostat_Set_Point "Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:set_point" }
|
||||
Switch Thermostat_SunlightCA "Sunlight Correction Active" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_active" }
|
||||
Switch Thermostat_SunlightCE "Sunlight Correction Enabled" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_enabled" }
|
||||
Number Thermostat_Temperature "Temperature [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" }
|
||||
Number Thermostat_TimeToTarget "Time To Target [%s]" { channel="nest:thermostat:demo_account:living_thermostat:time_to_target_mins" }
|
||||
Switch Thermostat_UsingEmHeat "Using Emergency Heat" { channel="nest:thermostat:demo_account:living_thermostat:using_emergency_heat" }
|
||||
Switch Thermostat_Can_Cool "Can Cool" { channel="nest:thermostat:demo_account:living_thermostat:can_cool" }
|
||||
Switch Thermostat_Can_Heat "Can Heat" { channel="nest:thermostat:demo_account:living_thermostat:can_heat" }
|
||||
Switch Thermostat_FT_Active "Fan Timer Active" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_active" }
|
||||
Number Thermostat_FT_Duration "Fan Timer Duration" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_duration" }
|
||||
DateTime Thermostat_FT_Timeout "Fan Timer Timeout [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:fan_timer_timeout" }
|
||||
Switch Thermostat_Has_Fan "Has Fan" { channel="nest:thermostat:demo_account:living_thermostat:has_fan" }
|
||||
Switch Thermostat_Has_Leaf "Has Leaf" { channel="nest:thermostat:demo_account:living_thermostat:has_leaf" }
|
||||
Number Thermostat_Humidity "Humidity [%.1f %%]" { channel="nest:thermostat:demo_account:living_thermostat:humidity" }
|
||||
DateTime Thermostat_Last_Conn "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:thermostat:demo_account:living_thermostat:last_connection" }
|
||||
Switch Thermostat_Locked "Locked" { channel="nest:thermostat:demo_account:living_thermostat:locked" }
|
||||
Number Thermostat_LMaxSP "Locked Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_max_set_point" }
|
||||
Number Thermostat_LMinSP "Locked Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:locked_min_set_point" }
|
||||
Number Thermostat_Max_SP "Max Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:max_set_point" }
|
||||
Number Thermostat_Min_SP "Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:min_set_point" }
|
||||
String Thermostat_Mode "Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:mode" }
|
||||
String Thermostat_Previous_Mode "Previous Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:previous_mode" }
|
||||
String Thermostat_State "State [%s]" { channel="nest:thermostat:demo_account:living_thermostat:state" }
|
||||
Number Thermostat_Set_Point "Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:set_point" }
|
||||
Switch Thermostat_Sunlight_CA "Sunlight Correction Active" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_active" }
|
||||
Switch Thermostat_Sunlight_CE "Sunlight Correction Enabled" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_enabled" }
|
||||
Number Thermostat_Temperature "Temperature [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" }
|
||||
Number Thermostat_Time_To_Target "Time To Target [%s]" { channel="nest:thermostat:demo_account:living_thermostat:time_to_target_mins" }
|
||||
Switch Thermostat_Using_Em_Heat "Using Emergency Heat" { channel="nest:thermostat:demo_account:living_thermostat:using_emergency_heat" }
|
||||
|
||||
/* Structure */
|
||||
String Home_Away "Away [%s]" { channel="nest:structure:demo_account:home:away" }
|
||||
String Home_CC "Country Code [%s]" { channel="nest:structure:demo_account:home:country_code" }
|
||||
String Home_COAS "CO Alarm State [%s]" { channel="nest:structure:demo_account:home:co_alarm_state" }
|
||||
DateTime Home_ETA "ETA [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:eta_begin" }
|
||||
DateTime Home_PPET "Peak Period End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:peak_period_end_time" }
|
||||
DateTime Home_PPST "Peak Period Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:peak_period_start_time" }
|
||||
String Home_PC "Postal Code [%s]" { channel="nest:structure:demo_account:home:postal_code" }
|
||||
Switch Home_RHR "Rush Hour Rewards" { channel="nest:structure:demo_account:home:rush_hour_rewards_enrollment" }
|
||||
String Home_SAS "Smoke Alarm State [%s]" { channel="nest:structure:demo_account:home:smoke_alarm_state" }
|
||||
String Home_TZ "Time Zone [%s]" { channel="nest:structure:demo_account:home:time_zone" }
|
||||
String Home_Away "Away [%s]" { channel="nest:structure:demo_account:home:away" }
|
||||
String Home_Country_Code "Country Code [%s]" { channel="nest:structure:demo_account:home:country_code" }
|
||||
String Home_CO_Alarm_State "CO Alarm State [%s]" { channel="nest:structure:demo_account:home:co_alarm_state" }
|
||||
DateTime Home_ETA "ETA [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:eta_begin" }
|
||||
DateTime Home_PP_End_Time "PP End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:peak_period_end_time" }
|
||||
DateTime Home_PP_Start_Time "PP Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:structure:demo_account:home:peak_period_start_time" }
|
||||
String Home_Postal_Code "Postal Code [%s]" { channel="nest:structure:demo_account:home:postal_code" }
|
||||
Switch Home_Rush_Hour_Rewards "Rush Hour Rewards" { channel="nest:structure:demo_account:home:rush_hour_rewards_enrollment" }
|
||||
String Home_Smoke_Alarm_State "Smoke Alarm State [%s]" { channel="nest:structure:demo_account:home:smoke_alarm_state" }
|
||||
String Home_Time_Zone "Time Zone [%s]" { channel="nest:structure:demo_account:home:time_zone" }
|
||||
```
|
||||
|
||||
## Known Issues
|
||||
|
|
|
@ -0,0 +1,189 @@
|
|||
---
|
||||
id: pentair
|
||||
label: Pentair Pool
|
||||
title: Pentair Pool - Bindings
|
||||
type: binding
|
||||
description: "This is an openHAB binding for a Pentair Pool System. It is based on combined efforts of many on the internet in reverse-engineering the proprietary Pentair protocol (see References section). The binding was developed and tested on a system with a Pentair EasyTouch controller, but should operate with other Pentair systems."
|
||||
since: 2x
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# Pentair Pool
|
||||
|
||||
This is an openHAB binding for a Pentair Pool System. It is based on combined efforts of many on the internet in reverse-engineering the proprietary Pentair protocol (see References section). The binding was developed and tested on a system with a Pentair EasyTouch controller, but should operate with other Pentair systems.
|
||||
|
||||
## Hardware Setup
|
||||
|
||||
> REQUISITE DISCLAIMER: CONNECTING 3RD PARTY DEVICES TO THE PENTAIR SYSTEM BUS COULD CAUSE SERIOUS DAMAGE TO THE SYSTEM SHOULD SOMETHING MALFUNCTION. IT IS NOT ENDORSED BY PENTAIR AND COULD VOID WARRENTY. IF YOU DECIDE TO USE THIS BINDING TO INTERFACE TO A PENTAIR CONTROLLER, THE AUTHOR(S) CAN NOT BE HELD RESPONSIBLE.
|
||||
|
||||
This binding requires an adapter to interface to the Pentair system bus. This bus/wire runs between the Pentair control system, indoor control panels, IntelliFlo pumps, etc. It is a standard RS-485 bus running at 9600,8N1 so any RS-485 adapter should work and you should be able to buy one for under $30. Pentair does not publish any information on the protocol so this binding was developed using the great reverse-engineering efforts of others made available on the internet. I have cited sevearl of those in the References section below.
|
||||
|
||||
### Connecting adapter to your system
|
||||
|
||||
A usb or serial RS-485 interface or IP based interface can be used to interface to the Pentair system bus. The binding includes 2 different bridge Things depending on which type of interface you use, serial_bridge or ip_bridge.
|
||||
|
||||
If your openHAB system is physically located far from your Pentair equipment or indoor control panel, you can use a Raspberry Pi or other computer to redirect USB/serial port traffic over the internet using a program called ser2sock (see Reference section). An example setup would run the following command: "ser2sock -p 10000 -s /dev/ttyUSB1 -b 9600 -d". Note: This is the setup utlized for the majority of my testing of this binding.
|
||||
|
||||
Note: if you are on a linux system, the framework may not see a symbolically linked device (i.e. /dev/ttyRS485). To use a symbolically linked device, add the following line to /etc/default/openhab2, `EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyRS485"`
|
||||
|
||||
Once you have the interface connected to your system, it is best to test basic connectivity. Note the protocol is a binary protocol (not ASCII text based) and in order to view the communication packets, one must use a program capable of a binary/HEX mode. If connected properly, you will see a periodic traffic with packets staring with FF00FFA5. This is the preamble for Pentairs communication packet. After you see this traffic, you can proceed to configuring the Pentair binding in openHAB.
|
||||
|
||||
#### USB/Serial interface
|
||||
|
||||
For a USB/Serial interface, you can use most terminal emulators. For linux, you can use minicom with the following options: `minicom -H -D /dev/ttyUSB1 -b 9600`
|
||||
|
||||
#### IP interface
|
||||
|
||||
For an IP based interface (or utilizing ser2sock) on a linux system, you can use nc command with the following options: `nc localhost 10000 | xxd`
|
||||
|
||||
### Pentair Controller panel configuration
|
||||
|
||||
In order for the Pentair EasyTouch controller to receive commands from this binding, you may need to enable "Spa-side" remote on the controller itself.
|
||||
|
||||
## Supported Things
|
||||
|
||||
This binding supports the following thing types:
|
||||
|
||||
| Thing | Thing Type | Description
|
||||
| _______________ | :________: | _______________________________________
|
||||
| ip_bridge | Bridge | A TCP network RS-485 bridge device.
|
||||
| serial_bridge | Bridge | A USB or serial RS-485 device.
|
||||
| EasyTouch | Thing | Pentiar EasyTouch pool controller.
|
||||
| Intelliflo Pump | Thing | Pentair Intelliflo variable speed pump.
|
||||
| Intellichlor | Thing | Pentair Intellichlor chlorinator.
|
||||
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
There are no overall binding configurations that need to be set up as all configuration is done at the "Thing" level.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
Pentair things can be configured either through the online Paper UI configuration, or manually through a 'pentair.thing' configuration file. The following table shows the available configuration parameters for each thing.
|
||||
|
||||
| Thing | Configuration Paramaters
|
||||
| _____________ | __________________________
|
||||
| ip_bridge | address - IP address for the RS-485 adapter - Required.
|
||||
| | port - TCP port for the RS-485 adapter - Not Required - default = 10000.
|
||||
| | id - ID to use when communciating on Pentair control bus - devault = 34.
|
||||
| serial_bridge | serialPort - Serial port for the IT-100s bridge - Required.
|
||||
| | baud - Baud rate of the IT-100 bridge - Not Required - default = 9600.
|
||||
| | pollPeriod - Period of time in minutes between the poll command being sent to the IT-100 bridge - Not Required - default=1.
|
||||
| | id - ID to use when communciating on Pentair control bus - devault = 34.
|
||||
|
||||
Currently automatic discovery is not supported and the binding requires configuration via the PaperUI or a file in the conf/things folder. Here is an example of a thing configuration file called 'pentair.thing':
|
||||
|
||||
Bridge pentair:ip_bridge:1 [ address="192.168.1.202", port=10001 ] {
|
||||
easytouch main [ id=16 ]
|
||||
intelliflo pump1 [ id=96 ]
|
||||
intellichlor ic40
|
||||
}
|
||||
|
||||
## Channels
|
||||
|
||||
Pentair things support a variety of channels as seen below in the following table:
|
||||
|
||||
| Channel | Item Type | Description
|
||||
| _______________ | __________ | __________________
|
||||
| EasyTouch Controller | |
|
||||
| pooltemp | Number | Current pool temperature (readonly)
|
||||
| spatemp | Number | Current spa temperature (readonly)
|
||||
| airtemp | Number | Current air temperature (readonly)
|
||||
| solartemp | Number | Current solar temperature (readonly)
|
||||
| poolheatmode | Number | Current heat mode setting for pool (readonly): 0=Off, 1=Heater, 2=Solar Preferred, 3=Solar
|
||||
| poolheatmodestr | String | Current heat mode setting for pool in string form (readonly)
|
||||
| spaheatmode | Number | Current heat mode setting for spa (readonly): 0=Off, 1=Heater, 2=Solar Preferred, 3=Solar
|
||||
| spaheatmodestr | String | Current heat mode setting for spa in string form (readonly)>
|
||||
| poolsetpoint | Number | Current pool temperature set point
|
||||
| spasetpoint | Number | Current spa temperature set point
|
||||
| heatactive | Number | Heater mode is active
|
||||
| pool | Switch | Primary pool mode
|
||||
| spa | Switch | Spa mode
|
||||
| aux1 | Switch | Aux1 mode
|
||||
| aux2 | Switch | Aux2 mode
|
||||
| aux3 | Switch | Aux3 mode
|
||||
| aux4 | Switch | Aux4 mode
|
||||
| aux5 | Switch | Aux5 mode
|
||||
| aux6 | Switch | Aux6 mode
|
||||
| aux7 | Switch | Aux7 mode
|
||||
| IntelliChlor | |
|
||||
| saltoutput | Number | Current salt output % (readonly)
|
||||
| salinity | Number | Salinity (ppm) (readonly)
|
||||
| IntelliFlo Pump | |
|
||||
| run | Number | Pump running (readonly)
|
||||
| drivestate | Number | Pump drivestate (readonly)
|
||||
| mode | Number | Pump mode (readonly)
|
||||
| rpm | Number | Pump RPM (readonly)
|
||||
| power | Number | Pump power in Watts (readonly)
|
||||
| error | Number | Pump error (readonly)
|
||||
| ppc | Number | Pump PPC? (readonly)
|
||||
|
||||
## Full Example
|
||||
|
||||
The following is an example of an item file (pentair.items):
|
||||
|
||||
Group gPool "Pool"
|
||||
|
||||
Number Pool_Temp "Pool Temp [%.1f °F]" <temperature> (gPool) { channel = "pentair:easytouch:1:main:pooltemp" }
|
||||
Number Spa_Temp "Spa Temp [%.1f °F]" <temperature> (gPool) { channel = "pentair:easytouch:1:main:spatemp" }
|
||||
Number Air_Temp "Air Temp [%.1f °F]" <temperature> (gPool) { channel = "pentair:easytouch:1:main:airtemp" }
|
||||
Number Solar_Temp "Solar Temp [%.1f °F]" <temperature> (gPool) { channel = "pentair:easytouch:1:main:solartemp" }
|
||||
|
||||
Number PoolHeatMode "Pool Heat Mode [%d]" (gPool) { channel="pentair:easytouch:1:main:poolheatmode" }
|
||||
String PoolHeatModeStr "Pool Heat Mode [%s]" (gPool) { channel="pentair:easytouch:1:main:poolheatmodestr" }
|
||||
Number SpaHeatMode "Spa Heat Mode [%d]" (gPool) { channel="pentair:easytouch:1:main:spaheatmode" }
|
||||
String SpaHeatModeStr "Spa Heat Mode [%s]" (gPool) { channel="pentair:easytouch:1:main:spaheatmodestr" }
|
||||
PoolSetPoint "Pool Set Point [%.1f °F]" (gPool) { channel="pentair:easytouch:1:main:poolsetpoint" }
|
||||
Number SpaSetPoint "Spa Set Point [%.1f °F]" (gPool) { channel="pentair:easytouch:1:main:spasetpoint" }
|
||||
Number HeatActive "Heat Active [%d]" (gPool) { channel="pentair:easytouch:1:main:heatactive" }
|
||||
|
||||
Switch Mode_Spa "Spa Mode" (gPool) { channel = "pentair:easytouch:1:main:spa" }
|
||||
Switch Mode_Pool "Pool Mode" (gPool) { channel = "pentair:easytouch:1:main:pool" }
|
||||
Switch Mode_PoolLight "Pool Light" (gPool) { channel = "pentair:easytouch:1:main:aux1" }
|
||||
Switch Mode_SpaLight "Spa Light" (gPool) { channel = "pentair:easytouch:1:main:aux2" }
|
||||
Switch Mode_Jets "Jets" (gPool) { channel = "pentair:easytouch:1:main:aux3" }
|
||||
Switch Mode_Boost "Boost Mode" (gPool) { channel = "pentair:easytouch:1:main:aux4" }
|
||||
Switch Mode_Aux5 "Aux5 Mode" (gPool) { channel = "pentair:easytouch:1:main:aux5" }
|
||||
Switch Mode_Aux6 "Aux6 Mode" (gPool) { channel = "pentair:easytouch:1:main:aux6" }
|
||||
Switch Mode_Aux7 "Aux7 Mode" (gPool) { channel = "pentair:easytouch:1:main:aux7" }
|
||||
|
||||
Number SaltOutput "Salt Output [%d%%]" (gPool) { channel = "pentair:intellichlor:1:ic40:saltoutput" }
|
||||
Number Salinity "Salinity [%d ppm]" (gPool) { channel = "pentair:intellichlor:1:ic40:salinity" }
|
||||
|
||||
Switch Pump_Run "Pump running [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:run" }
|
||||
Number Pump_DriveState "Pump drivestate [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:drivestate" }
|
||||
Number Pump_Mode "Pump Mode [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:mode" }
|
||||
Number Pump_RPM "Pump RPM [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:rpm" }
|
||||
Number Pump_Power "Pump Power [%d W]" (gPool) { channel = "pentair:intelliflo:1:pump1:power" }
|
||||
Number Pump_Error "Pump Error [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:error" }
|
||||
Number Pump_PPC "Pump PPC [%d]" (gPool) { channel = "pentair:intelliflo:1:pump1:ppc" }
|
||||
|
||||
Here is an example sitemap:
|
||||
|
||||
Frame label="Pool" {
|
||||
Switch item=Mode_Spa
|
||||
Switch item=Mode_PoolLight
|
||||
Switch item=Mode_SpaLight
|
||||
Switch item=Mode_Jets
|
||||
Text item=Pool_Temp valuecolor=[>82="red",>77="orange",<=77="blue"]
|
||||
Text item=Spa_Temp valuecolor=[>97="red",>93="orange",<=93="blue"]
|
||||
Setpoint item=SpaSetPoint minValue=85 maxValue=103 step=1.0
|
||||
Group item=gPool label="Advanced"
|
||||
}
|
||||
|
||||
|
||||
## References
|
||||
|
||||
Setting up RS485 and basic protocol - http://www.sdyoung.com/home/decoding-the-pentair-easytouch-rs-485-protocol/
|
||||
ser2sock Github - https://github.com/nutechsoftware/ser2sock
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- Add automatic discovery of devices on RS-485
|
||||
- Add in IntelliBrite light color selection (need to capture protocol on system that has this)
|
||||
- Add direct control of pump (non read-only channels)
|
||||
- Fix heat active - not working on my system.
|
|
@ -51,58 +51,59 @@ Thing sonos:PLAY1:1 [ udn="RINCON_000E58D8403A0XXXX", refresh=60]
|
|||
|
||||
The devices support the following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Access Mode | Description | Thing types |
|
||||
|---------------------|-----------|-------------|--------------|-------------|
|
||||
| add | String | W | Add the given Zone Player to the group of this Zone Player | all |
|
||||
| alarm | Switch | W | Set the first occurring alarm either ON or OFF. Alarms first have to be defined through the Sonos Controller app | all |
|
||||
| alarmproperties | String | R | Properties of the alarm currently running | all |
|
||||
| alarmrunning | Switch | R | Set to ON if the alarm was triggered | all |
|
||||
| clearqueue | Switch | W | Suppress all songs from the current queue | all |
|
||||
| control | Player | RW | Control the Zone Player, e.g. start/stop/next/previous/ffward/rewind | all |
|
||||
| coordinator | String | R | UDN of the coordinator for the current group | all |
|
||||
| currentalbum | String | R | Name of the album currently playing | all |
|
||||
| currentalbumart | Image | R | Cover art of the album currently playing | all |
|
||||
| currentalbumarturl | String | R | Cover art URL of the album currently playing | all |
|
||||
| currentartist | String | R | Name of the artist currently playing | all |
|
||||
| currenttitle | String | R | Title of the song currently playing | all |
|
||||
| currenttrack | String | R | Name of the current track or radio station currently playing | all |
|
||||
| currenttrackuri | String | R | URI of the current track | all |
|
||||
| currenttransporturi | String | R | URI of the current AV transport | all |
|
||||
| favorite | String | W | Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app | all |
|
||||
| led | Switch | RW | Set or get the status of the white led on the front of the Zone Player | all |
|
||||
| linein | Switch | R | Indicator set to ON when the line-in of the Zone Player is connected | PLAY5, CONNECT, CONNECTAMP, PLAYBASE |
|
||||
| localcoordinator | Switch | R | Indicator set to ON if the this Zone Player is the Zone Group Coordinator | all |
|
||||
| mute | Switch | RW | Set or get the mute state of the master volume of the Zone Player | all |
|
||||
| notificationsound | String | W | Play a notification sound by a given URI | all |
|
||||
| notificationvolume | Dimmer | RW | Set the volume applied to a notification sound | all |
|
||||
| playlinein | String | W | This channel supports playing the audio source connected to the line-in of the zoneplayer identified by the Thing UID or UPnP UDN provided by the String. | PLAY5, CONNECT, CONNECTAMP, PLAYBASE |
|
||||
| playlist | String | W | Play the given playlist. The playlist has to predefined in the Sonos Controller app | all |
|
||||
| playqueue | Switch | W | Play the songs from the current queue | all |
|
||||
| playtrack | Number | W | Play the given track number from the current queue | all |
|
||||
| playuri | String | W | Play the given URI | all |
|
||||
| publicaddress | Switch | W | Put all Zone Players in one group, and stream audio from the line-in from the Zone Player that triggered the command | all |
|
||||
| radio | String | W | Play the given radio station. The radio station has to be predefined in the Sonos Controller app | all |
|
||||
| remove | String | W | Remove the given Zone Player from the group of this Zone Player | all |
|
||||
| repeat | String | RW | Repeat the track or queue playback. The accepted values are OFF, ONE and ALL | all |
|
||||
| restore | Switch | W | Restore the state of the Zone Player | all |
|
||||
| restoreall | Switch | W | Restore the state of all the Zone Players | all |
|
||||
| save | Switch | W | Save the state of the Zone Player | all |
|
||||
| saveall | Switch | W | Save the state of all the Zone Players | all |
|
||||
| shuffle | Switch | RW | Shuffle the queue playback | all |
|
||||
| sleeptimer | Number | RW | Set/show the duration of the SleepTimer in seconds | all |
|
||||
| snooze | Number | W | Snooze the running alarm, if any, with the given number of minutes | all |
|
||||
| standalone | Switch | W | Make the Zone Player leave its Group and become a standalone Zone Player | all |
|
||||
| state | String | R | The State channel contains state of the Zone Player, e.g. PLAYING, STOPPED,... | all |
|
||||
| stop | Switch | W | Stop the Zone Player | all |
|
||||
| tuneinstationid | String | RW | Provide the current TuneIn station id or play the TuneIn radio given by its station id | all |
|
||||
| volume | Dimmer | RW | Set or get the master volume of the Zone Player | all |
|
||||
| zonegroupid | String | R | Id of the Zone Group the Zone Player belongs to | all |
|
||||
| zonename | String | R | Name of the Zone associated to the Zone Player | all |
|
||||
| Channel Type ID | Item Type | Access Mode | Description | Thing types |
|
||||
|---------------------|-----------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
|
||||
| add | String | W | Add the given Zone Player to the group of this Zone Player | all |
|
||||
| alarm | Switch | W | Set the first occurring alarm either ON or OFF. Alarms first have to be defined through the Sonos Controller app | all |
|
||||
| alarmproperties | String | R | Properties of the alarm currently running | all |
|
||||
| alarmrunning | Switch | R | Set to ON if the alarm was triggered | all |
|
||||
| clearqueue | Switch | W | Suppress all songs from the current queue | all |
|
||||
| control | Player | RW | Control the Zone Player, e.g. start/stop/next/previous/ffward/rewind | all |
|
||||
| coordinator | String | R | UDN of the coordinator for the current group | all |
|
||||
| currentalbum | String | R | Name of the album currently playing | all |
|
||||
| currentalbumart | Image | R | Cover art of the album currently playing | all |
|
||||
| currentalbumarturl | String | R | Cover art URL of the album currently playing | all |
|
||||
| currentartist | String | R | Name of the artist currently playing | all |
|
||||
| currenttitle | String | R | Title of the song currently playing | all |
|
||||
| currenttrack | String | R | Name of the current track or radio station currently playing | all |
|
||||
| currenttrackuri | String | R | URI of the current track | all |
|
||||
| currenttransporturi | String | R | URI of the current AV transport | all |
|
||||
| favorite | String | W | Play the given favorite entry. The favorite entry has to be predefined in the Sonos Controller app | all |
|
||||
| led | Switch | RW | Set or get the status of the white led on the front of the Zone Player | all |
|
||||
| linein | Switch | R | Indicator set to ON when the line-in of the Zone Player is connected | PLAY5, CONNECT, CONNECTAMP, PLAYBASE |
|
||||
| localcoordinator | Switch | R | Indicator set to ON if the this Zone Player is the Zone Group Coordinator | all |
|
||||
| mute | Switch | RW | Set or get the mute state of the master volume of the Zone Player | all |
|
||||
| notificationsound | String | W | Play a notification sound by a given URI | all |
|
||||
| notificationvolume | Dimmer | RW | Set the volume applied to a notification sound | all |
|
||||
| playlinein | String | W | This channel supports playing the audio source connected to the line-in of the zoneplayer identified by the Thing UID or UPnP UDN provided by the String. | PLAY5, CONNECT, CONNECTAMP, PLAYBASE |
|
||||
| playlist | String | W | Play the given playlist. The playlist has to predefined in the Sonos Controller app | all |
|
||||
| playqueue | Switch | W | Play the songs from the current queue | all |
|
||||
| playtrack | Number | W | Play the given track number from the current queue | all |
|
||||
| playuri | String | W | Play the given URI | all |
|
||||
| publicaddress | Switch | W | Put all Zone Players in one group, and stream audio from the line-in from the Zone Player that triggered the command | all |
|
||||
| radio | String | W | Play the given radio station. The radio station has to be predefined in the Sonos Controller app | all |
|
||||
| remove | String | W | Remove the given Zone Player from the group of this Zone Player | all |
|
||||
| repeat | String | RW | Repeat the track or queue playback. The accepted values are OFF, ONE and ALL | all |
|
||||
| restore | Switch | W | Restore the state of the Zone Player | all |
|
||||
| restoreall | Switch | W | Restore the state of all the Zone Players | all |
|
||||
| save | Switch | W | Save the state of the Zone Player | all |
|
||||
| saveall | Switch | W | Save the state of all the Zone Players | all |
|
||||
| shuffle | Switch | RW | Shuffle the queue playback | all |
|
||||
| sleeptimer | Number | RW | Set/show the duration of the SleepTimer in seconds | all |
|
||||
| snooze | Number | W | Snooze the running alarm, if any, with the given number of minutes | all |
|
||||
| standalone | Switch | W | Make the Zone Player leave its Group and become a standalone Zone Player | all |
|
||||
| state | String | R | The State channel contains state of the Zone Player, e.g. PLAYING, STOPPED, ... | all |
|
||||
| stop | Switch | W | Write `ON` to this channel: Stops the Zone Player player. | all |
|
||||
| tuneinstationid | String | RW | Provide the current TuneIn station id or play the TuneIn radio given by its station id | all |
|
||||
| volume | Dimmer | RW | Set or get the master volume of the Zone Player | all |
|
||||
| zonegroupid | String | R | Id of the Zone Group the Zone Player belongs to | all |
|
||||
| zonename | String | R | Name of the Zone associated to the Zone Player | all |
|
||||
|
||||
## Audio Support
|
||||
|
||||
All supported Sonos devices are registered as an audio sink in the framework.
|
||||
Audio streams are treated as notifications, i.e. they are fed into the `notificationsound` channel and changing the volume of the audio sink will change the `notificationvolume`, not the `volume`.
|
||||
Note that the `notificationvolume` is set by the binding during each start of the system to equal the master volume (resulting in a barely audible level), making the use of a persistence policy obsolete. In order to control the `notificationvolume` users have to set it manually or by a rule.
|
||||
Note that the Sonos binding has a limit of 20 seconds for notification sounds. Any sound that is longer than that will be cut off.
|
||||
|
||||
URL audio streams (e.g. an Internet radio stream) are an exception and do not get sent to the `notificationsound` channel. Instead, these will be sent to the `playuri` channel.
|
||||
|
|
|
@ -113,7 +113,7 @@ sitemap demo label="Main Menu"
|
|||
Slider item=Light2_Brightness label="Light2 Brightness [%.1f %%]"
|
||||
Slider item=Light2_ColorTemperature label="Light2 Color Temperature [%.1f %%]"
|
||||
Colorpicker item=ColorLight label="Color"
|
||||
Number item=RemoteControlBatteryLevel label="Battery level [%d %%]"
|
||||
Text item=RemoteControlBatteryLevel label="Battery level [%d %%]"
|
||||
Switch item=RemoteControlBatteryLow label="Battery low warning"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,6 +69,8 @@ For the location parameter, different syntaxes are possible:
|
|||
|
||||
It can happen that the service is not able to determine the station to use, for example when you select as location a city in which several stations are registered. In this case, the thing configuration will fail because the service will not return the data expected by the binding. The best solution in this case is to use as location latitude and longitude, the service will automatically select a station from this position.
|
||||
|
||||
For the language parameter Weather Underground uses a special set of language codes which are different from ISO 639-1 standard, for example for German use `DL` or Swedish use `SW`. See [Weather Underground language support documentation](https://www.wunderground.com/weather/api/d/docs?d=language-support) for a detailed list.
|
||||
|
||||
## Channels
|
||||
|
||||
The weather information that is retrieved is available as these channels:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
id: yamahareceiver
|
||||
label: Yamahareceiver
|
||||
title: Yamahareceiver - Bindings
|
||||
label: Yamaha Receiver
|
||||
title: Yamaha Receiver - Bindings
|
||||
type: binding
|
||||
description: "This binding connects openHAB with Yamaha Receivers of product line CX-A5000, RX-A30xx, RX-A20xx, RX-A10xx, RX-Vxxx, RX-Z7, DSP-Z7, RX-S600, RX-S601D, HTR-xxxx."
|
||||
since: 2x
|
||||
|
@ -13,7 +13,7 @@ install: auto
|
|||
|
||||
{% include base.html %}
|
||||
|
||||
# Yamahareceiver Binding
|
||||
# Yamaha Receiver Binding
|
||||
|
||||
This binding connects openHAB with Yamaha Receivers of product line CX-A5000, RX-A30xx, RX-A20xx, RX-A10xx, RX-Vxxx, RX-Z7, DSP-Z7, RX-S600, RX-S601D, HTR-xxxx.
|
||||
|
||||
|
@ -21,10 +21,8 @@ If your hardware is on the list but still does not work, please fill a bug repor
|
|||
|
||||
## Configuration
|
||||
|
||||
Just use the auto discovery feature or add a thing for the binding manually
|
||||
by providing host and port.
|
||||
Initially a thing for the main zone will be created. This will trigger a zone
|
||||
detection internally and all available additional zones will appear as new things.
|
||||
Just use the auto discovery feature or add a thing for the binding manually by providing host and port.
|
||||
Initially a thing for the main zone will be created. This will trigger a zone detection internally and all available additional zones will appear as new things.
|
||||
|
||||
When using zones feature, to manually add a receiver, use
|
||||
|
||||
|
@ -44,41 +42,41 @@ select radio stations from a configured menu.
|
|||
|
||||
The implemented channels for the AVR thing are:
|
||||
|
||||
* `power`: openHAB Type `Switch`, Switches the AVR ON or OFF. Your receiver has to be in network standby for this to work.
|
||||
* `power`: openHAB Type `Switch`, Switches the AVR ON or OFF. Your receiver has to be in network standby for this to work.
|
||||
|
||||
The implemented channels for a zone thing are grouped in three groups.
|
||||
|
||||
Zone control channels are:
|
||||
|
||||
* `power#zone_channels`: openHAB Type `Switch`, Switches the zone ON or OFF. Your receiver has to be in network standby for this to work.
|
||||
* `mute#zone_channels`: openHAB Type `Switch`, Mute or Unmute the receiver.
|
||||
* `volume#zone_channels`: openHAB Type `Dimmer`, Set's the receivers volume as percentage.
|
||||
* `volumeDB#zone_channels`: openHAB Type `Dimmer`, Set's the receivers volume in dB.
|
||||
* `input#zone_channels`: openHAB Type `String`, Set's the input selection, depends on your receiver's real inputs. Examples: HDMI1, HDMI2, AV4, TUNER, NET RADIO, etc.
|
||||
* `surroundProgram#zone_channels`: openHAB Type `String`, Set's the surround mode. Examples: 2ch Stereo, 7ch Stereo, Hall in Munic, Straight, Surround Decoder.
|
||||
* `power#zone_channels`: openHAB Type `Switch`, Switches the zone ON or OFF. Your receiver has to be in network standby for this to work.
|
||||
* `mute#zone_channels`: openHAB Type `Switch`, Mute or Unmute the receiver.
|
||||
* `volume#zone_channels`: openHAB Type `Dimmer`, Set's the receivers volume as percentage.
|
||||
* `volumeDB#zone_channels`: openHAB Type `Dimmer`, Set's the receivers volume in dB.
|
||||
* `input#zone_channels`: openHAB Type `String`, Set's the input selection, depends on your receiver's real inputs. Examples: HDMI1, HDMI2, AV4, TUNER, NET RADIO, etc.
|
||||
* `surroundProgram#zone_channels`: openHAB Type `String`, Set's the surround mode. Examples: 2ch Stereo, 7ch Stereo, Hall in Munic, Straight, Surround Decoder.
|
||||
|
||||
Playback control channels are:
|
||||
|
||||
* `preset#playback_channels`: Set a preset. Not supported by Spotify.
|
||||
* `playback#playback_channels`: Set a play mode or get the current play mode.
|
||||
* `playback_station#playback_channels`: Get the current played station (radio).
|
||||
* `playback_artist#playback_channels`: Get the current played artist.
|
||||
* `playback_album#playback_channels`: Get the current played album.
|
||||
* `playback_song#playback_channels`: Get the current played song.
|
||||
* `playback_song_image_url#playback_channels`: Get the current played song image URL (currently Spotify input only). openHAB Type `String`.
|
||||
* `tuner_band#playback_channels`: Set the band (FM or DAB) for tuner input when device supports DAB (e.g. RX-S601D). openHAB Type `String`.
|
||||
* `preset#playback_channels`: Set a preset. Not supported by Spotify.
|
||||
* `playback#playback_channels`: Set a play mode or get the current play mode.
|
||||
* `playback_station#playback_channels`: Get the current played station (radio).
|
||||
* `playback_artist#playback_channels`: Get the current played artist.
|
||||
* `playback_album#playback_channels`: Get the current played album.
|
||||
* `playback_song#playback_channels`: Get the current played song.
|
||||
* `playback_song_image_url#playback_channels`: Get the current played song image URL (currently Spotify input only). openHAB Type `String`.
|
||||
* `tuner_band#playback_channels`: Set the band (FM or DAB) for tuner input when device supports DAB (e.g. RX-S601D). openHAB Type `String`.
|
||||
|
||||
Navigation control channels are:
|
||||
|
||||
* `navigation_menu#navigation_channels`: Select or display the full or relative path to an item.
|
||||
* `navigation_current_item#navigation_channels`: Get the current item of the current menu.
|
||||
* `navigation_total_items#navigation_channels`: Get the total count items in the current menu.
|
||||
* `navigation_level#navigation_channels`: Get the current menu level.
|
||||
* `navigation_updown#navigation_channels`: Move the cursor up or down.
|
||||
* `navigation_leftright#navigation_channels`: Move the cursor to the left or right.
|
||||
* `navigation_select#navigation_channels`: Select the current item.
|
||||
* `navigation_back#navigation_channels`: Navigate to the parent menu.
|
||||
* `navigation_backtoroot#navigation_channels`: Navigate back to the root menu.
|
||||
* `navigation_menu#navigation_channels`: Select or display the full or relative path to an item.
|
||||
* `navigation_current_item#navigation_channels`: Get the current item of the current menu.
|
||||
* `navigation_total_items#navigation_channels`: Get the total count items in the current menu.
|
||||
* `navigation_level#navigation_channels`: Get the current menu level.
|
||||
* `navigation_updown#navigation_channels`: Move the cursor up or down.
|
||||
* `navigation_leftright#navigation_channels`: Move the cursor to the left or right.
|
||||
* `navigation_select#navigation_channels`: Select the current item.
|
||||
* `navigation_back#navigation_channels`: Navigate to the parent menu.
|
||||
* `navigation_backtoroot#navigation_channels`: Navigate back to the root menu.
|
||||
|
||||
Navigation is not supported by Spotify input.
|
||||
|
||||
|
@ -89,7 +87,7 @@ Navigation is not supported by Spotify input.
|
|||
##### For auto linking with Paper UI
|
||||
|
||||
Link the items to the channels of your preferred zone (here `Main_Zone`) in PaperUI after you've saved your items file.
|
||||
|
||||
|
||||
Items:
|
||||
|
||||
```
|
||||
|
@ -99,12 +97,12 @@ Switch Yamaha_Mute "Mute [%s]" <soundvolume
|
|||
String Yamaha_Input "Input [%s]" <video>
|
||||
String Yamaha_Surround "Surround [%s]" <video>
|
||||
```
|
||||
|
||||
|
||||
##### For manually linking
|
||||
|
||||
Replace the UPNP UDN (here: `9ab0c000_f668_11de_9976_00a0ded41bb7`) with the real UDN provided by your UPNP discovery.
|
||||
Also replace the zone name with your preferred zone (here `Main_Zone`).
|
||||
|
||||
|
||||
Items:
|
||||
|
||||
```
|
||||
|
@ -114,7 +112,7 @@ Switch Yamaha_Mute "Mute [%s]" <soundvolume
|
|||
String Yamaha_Input "Input [%s]" <video> { channel="yamahareceiver:zone:9ab0c000_f668_11de_9976_00a0ded41bb7:Main_Zone:zone_channels#input" }
|
||||
String Yamaha_Surround "Surround [%s]" <video> { channel="yamahareceiver:zone:9ab0c000_f668_11de_9976_00a0ded41bb7:Main_Zone:zone_channels#surroundProgram" }
|
||||
```
|
||||
|
||||
|
||||
Sitemap:
|
||||
|
||||
```
|
||||
|
@ -160,14 +158,14 @@ String Yamaha_Tuner_Band "Band [%s]" <video>
|
|||
String Yamaha_Input_Ex
|
||||
```
|
||||
|
||||
The synthetic `Yamaha_Input_Ex` will be calculated by a rule (see below) and will drive sitemap visibility (see below).
|
||||
The synthetic `Yamaha_Input_Ex` will be calculated by a rule (see below) and will drive sitemap visibility (see below).
|
||||
|
||||
Rules:
|
||||
```
|
||||
rule "Yamaha_Input_Ex"
|
||||
when
|
||||
Item Yamaha_Input changed or
|
||||
Item Yamaha_Tuner_Band changed
|
||||
Item Yamaha_Tuner_Band changed
|
||||
then
|
||||
var input = Yamaha_Input.state
|
||||
if (input != NULL) {
|
||||
|
@ -190,4 +188,4 @@ Selection item=Yamaha_Preset mappings=[2="Radio Krakow",3="PR Tro
|
|||
Selection item=Yamaha_Preset mappings=[1="FM-1",2="FM-2",3="FM-3"] visibility=[Yamaha_Input_Ex=="TUNER_DAB"]
|
||||
```
|
||||
|
||||
Notice how we have two preset mappings that each is meant for FM and DAB+ bands respectively. This enables to have different channel names per band.
|
||||
Notice how we have two preset mappings that each is meant for FM and DAB+ bands respectively. This enables to have different channel names per band.
|
||||
|
|
|
@ -3,7 +3,7 @@ id: zigbee
|
|||
label: ZigBee
|
||||
title: ZigBee - Bindings
|
||||
type: binding
|
||||
description: "The ZigBee binding supports an interface to a wireless ZigBee home automation network."
|
||||
description: "The ZigBee binding supports an interface to a wireless ZigBee home automation network and allows ZigBee devices from numerous manufacturers to be used without a system specific gateway."
|
||||
since: 2x
|
||||
logo: images/addons/zigbee.png
|
||||
install: auto
|
||||
|
@ -15,12 +15,14 @@ install: auto
|
|||
|
||||
# ZigBee Binding
|
||||
|
||||
The ZigBee binding supports an interface to a wireless ZigBee home automation network.
|
||||
The ZigBee binding supports an interface to a wireless ZigBee home automation network and allows ZigBee devices from numerous manufacturers to be used without a system specific gateway.
|
||||
|
||||
## Supported Things
|
||||
|
||||
### Coordinators
|
||||
|
||||
A ZigBee Coordinator is the network controller, and is therefore the heart of the ZigBee network. It also acts as the trust centre to control security access to the network.
|
||||
|
||||
Coordinators need to be installed manually and the serial port must be set.
|
||||
|
||||
#### TI2531 Coordinator
|
||||
|
@ -57,7 +59,7 @@ The following devices have been tested with the binding
|
|||
|
||||
| Device | Description |
|
||||
|----------------------------|--------------------------------|
|
||||
| Busch-Jaegar 6711 | Relay Insert |
|
||||
| Busch-Jaeger 6711 | Relay Insert |
|
||||
| Hue Bulbs | Color LED Bulb |
|
||||
| Hue Motion Sensor | Motion and Luminance sensor |
|
||||
| Osram Bulbs | |
|
||||
|
@ -70,12 +72,12 @@ The following devices have been tested with the binding
|
|||
|
||||
## Discovery
|
||||
|
||||
Once the binding is authorized, and an adapter is added, it automatically reads all devices that are set up on the ZigBee controller and puts them in the Inbox. When the binding is put into discovery mode, the network will have join enabled for 60 seconds.
|
||||
Once the binding is authorized, and an adapter is added, it automatically reads all devices that are set up on the ZigBee controller and puts them in the Inbox. When the binding is put into discovery mode via the user interface, the network will have join enabled for 60 seconds.
|
||||
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The binding will attempt to automatically detect new devices, giving them a type based on their information they report, and will read their supported clusters to define the supported channels.
|
||||
The binding will attempt to automatically detect new devices, giving them a type based on the information they report, and will read their supported clusters to define the supported channels.
|
||||
|
||||
### Thing Types
|
||||
|
||||
|
@ -101,6 +103,18 @@ The following channels are supported -:
|
|||
| sensor_occupancy | ```OCCUPANCY_SENSING``` (0x0406) | Switch | |
|
||||
|
||||
|
||||
### Updates
|
||||
|
||||
The binding will attempt to configure a connection with the device to receive automatic and instantaneous reports when the device status changes. Should this configuration fail, the binding will resort to using a fast polling (note that "fast" is approximately 10 seconds at this time).
|
||||
|
||||
|
||||
## When things don't appear to be working
|
||||
|
||||
When things don't appear to be working as expected you should check the logs to try and find what is happening. Debug logging can be enabled with the following Karaf commands -:
|
||||
|
||||
```
|
||||
log:set debug org.openhab.binding.zigbee
|
||||
log:set debug com.zsmartsystems.zigbee
|
||||
```
|
||||
|
||||
This will log data into the standard openhab.log file.
|
||||
|
|
|
@ -3,7 +3,7 @@ id: zoneminder
|
|||
label: Zoneminder
|
||||
title: Zoneminder - Bindings
|
||||
type: binding
|
||||
description: "This binding offers integration to a ZoneMinder Server. It currently only offers to integrate to monitors (eg. cameras in ZoneMinder). It also only offers access to a limited set of values, as well as a even more limited option to update values in ZoneMinder. It requires at least ZoneMinder 1.29 with API enabled (option 'OPT_USE_API' in ZoneMinder must be enabled). The option 'OPT_TRIGGERS' must be anabled to allow openHAB to trip the ForceAlarm in ZoneMinder."
|
||||
description: "This binding offers integration to a ZoneMinder Server. It currently only offers to integrate to monitors (eg. cameras in ZoneMinder)."
|
||||
since: 2x
|
||||
logo: images/addons/zoneminder.png
|
||||
install: auto
|
||||
|
@ -15,7 +15,10 @@ install: auto
|
|||
|
||||
# Zoneminder Binding
|
||||
|
||||
This binding offers integration to a ZoneMinder Server. It currently only offers to integrate to monitors (eg. cameras in ZoneMinder). It also only offers access to a limited set of values, as well as a even more limited option to update values in ZoneMinder. It requires at least ZoneMinder 1.29 with API enabled (option 'OPT_USE_API' in ZoneMinder must be enabled). The option 'OPT_TRIGGERS' must be anabled to allow openHAB to trip the ForceAlarm in ZoneMinder.
|
||||
This binding offers integration to a ZoneMinder Server. It currently only offers to integrate to monitors (eg. cameras in ZoneMinder).
|
||||
It also only offers access to a limited set of values, as well as a even more limited option to update values in ZoneMinder.
|
||||
It requires at least ZoneMinder 1.29 with API enabled (option 'OPT_USE_API' in ZoneMinder must be enabled).
|
||||
The option 'OPT_TRIGGERS' must be anabled to allow openHAB to trip the ForceAlarm in ZoneMinder.
|
||||
|
||||
## Supported Things
|
||||
|
||||
|
@ -29,32 +32,38 @@ This binding supports the following thing types
|
|||
|
||||
## Getting started / Discovery
|
||||
|
||||
The binding consists of a Bridge (the ZoneMinder Server it self), and a number of Things, which relates to the induvidual monitors in ZoneMinder. ZoneMinder things can be configured either through the online configuration utility via discovery, or manually through the 'zoneminder.things' configuration file. The Bridge will not be autodiscovered, this behaviour is by design. That is because the ZoneMinder API can be configured to communicate on custom ports, you can even change the url from the default /zm/ to something userdefined. That makes it meaningless to scan for a ZoneMinder Server. The Bridge must therefore be added manually, this can be done from PaperUI. After adding the Bridge it will go ONLINE, and after a short while and the discovery process for monitors will start. When a new monitor is discovered it will appear in the Inbox.
|
||||
|
||||
The binding consists of a Bridge (the ZoneMinder Server it self), and a number of Things, which relates to the induvidual monitors in ZoneMinder.
|
||||
ZoneMinder things can be configured either through the online configuration utility via discovery, or manually through the 'zoneminder.things' configuration file.
|
||||
The Bridge will not be autodiscovered, this behavior is by design.
|
||||
That is because the ZoneMinder API can be configured to communicate on custom ports, you can even change the url from the default /zm/ to something userdefined.
|
||||
That makes it meaningless to scan for a ZoneMinder Server.
|
||||
The Bridge must therefore be added manually, this can be done from PaperUI.
|
||||
After adding the Bridge it will go ONLINE, and after a short while and the discovery process for monitors will start.
|
||||
When a new monitor is discovered it will appear in the Inbox.
|
||||
|
||||
### Bridge
|
||||
|
||||
Channel | Type | Description
|
||||
-------------- | --------- | ----------------------------------
|
||||
online | Switch | Parameter indicating if the server is online
|
||||
CPU load | Text | Current CPU Load of server
|
||||
Disk Usage | text | Current Disk Usage on server
|
||||
| Channel | Type | Description |
|
||||
|------------|--------|----------------------------------------------|
|
||||
| online | Switch | Parameter indicating if the server is online |
|
||||
| CPU load | Text | Current CPU Load of server |
|
||||
| Disk Usage | text | Current Disk Usage on server |
|
||||
|
||||
### Thing
|
||||
|
||||
Channel | Type | Description
|
||||
-------------- | --------- | ----------------------------------
|
||||
online | Switch | Parameter indicating if the monitor is online
|
||||
enabled | Switch | Parameter indicating if the monitor is enabled
|
||||
force-alarm | Switch | Parameter indicating if Force Alarm for the the monitor is active
|
||||
alarm | Switch | true if monitor has an active alarm
|
||||
recording | Text | true if monitor is recording
|
||||
detailed-status| Text | Detailed status of monitor (Idle, Pre-alarm, Alarm, Alert, Recording)
|
||||
event-cause | Text | Empty when there is no active event, else it contains the text with the cause of the event
|
||||
function | Text | Text corresponding the value in ZoneMinder: None, Monitor, Modect, Record, Mocord, Nodect
|
||||
capture-daemon | Switch | Run state of ZMC Daemon
|
||||
analysis-daemon| Switch | Run state of ZMA Daemon
|
||||
frame-daemon | Switch | Run state of ZMF Daemon
|
||||
| Channel | Type | Description |
|
||||
|-----------------|--------|--------------------------------------------------------------------------------------------|
|
||||
| online | Switch | Parameter indicating if the monitor is online |
|
||||
| enabled | Switch | Parameter indicating if the monitor is enabled |
|
||||
| force-alarm | Switch | Parameter indicating if Force Alarm for the the monitor is active |
|
||||
| alarm | Switch | true if monitor has an active alarm |
|
||||
| recording | Text | true if monitor is recording |
|
||||
| detailed-status | Text | Detailed status of monitor (Idle, Pre-alarm, Alarm, Alert, Recording) |
|
||||
| event-cause | Text | Empty when there is no active event, else it contains the text with the cause of the event |
|
||||
| function | Text | Text corresponding the value in ZoneMinder: None, Monitor, Modect, Record, Mocord, Nodect |
|
||||
| capture-daemon | Switch | Run state of ZMC Daemon |
|
||||
| analysis-daemon | Switch | Run state of ZMA Daemon |
|
||||
| frame-daemon | Switch | Run state of ZMF Daemon |
|
||||
|
||||
## Manual configuration
|
||||
|
||||
|
@ -111,7 +120,7 @@ then
|
|||
}
|
||||
else if (zmMonitor1_EventState.state == OFF) {
|
||||
logInfo("zoneminder.rules", "ZoneMinder Alarm stopped")
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
rule "Monitor1 Recording State"
|
||||
|
@ -123,7 +132,7 @@ then
|
|||
}
|
||||
else if (zmMonitor1_Recording.state == OFF) {
|
||||
logInfo("zoneminder.rules", "ZoneMinder recording stopped")
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
@ -142,7 +151,6 @@ then
|
|||
end
|
||||
```
|
||||
|
||||
|
||||
### Sitemap configuration
|
||||
|
||||
```
|
||||
|
|
|
@ -3,7 +3,7 @@ id: zway
|
|||
label: Z-Way
|
||||
title: Z-Way - Bindings
|
||||
type: binding
|
||||
description: "Z-Way is a software to configure and control a Z-Wave network. The software comes with a full stack from Z-Wave transceiver with certified firmware to a REST API on high level."
|
||||
description: "Z-Way is a software to configure and control a Z-Wave network."
|
||||
since: 2x
|
||||
install: auto
|
||||
---
|
||||
|
@ -14,13 +14,14 @@ install: auto
|
|||
|
||||
# Z-Way Binding
|
||||
|
||||
Z-Way is a software to configure and control a Z-Wave network. The software comes with a full stack from Z-Wave transceiver with certified firmware to a REST API on high level.
|
||||
Z-Way is a software to configure and control a Z-Wave network.
|
||||
The software comes with a full stack from Z-Wave transceiver with certified firmware to a REST API on high level.
|
||||
|
||||
Z-Way comes in three parts [cf. [Z-Wave.Me]([Z-Wave.Me](https://www.z-wave.me/index.php?id=1))]:
|
||||
|
||||
- a firmware that runs on the Z-Wave transceiver chip
|
||||
- the communication stack that runs on different host Operating Systems
|
||||
- an automation engine and optionally a web server to implement a User Interface
|
||||
- a firmware that runs on the Z-Wave transceiver chip
|
||||
- the communication stack that runs on different host Operating Systems
|
||||
- an automation engine and optionally a web server to implement a User Interface
|
||||
|
||||
All parts together represents a smart home controller for Z-Wave.
|
||||
|
||||
|
@ -30,24 +31,38 @@ Please note the **known issues** below.
|
|||
|
||||
### Approach
|
||||
|
||||
The idea behind is the integration of Z-Wave through a bridge (Z-Way controller). The existing, certified Z-Way stack can be used to build, configure and control the Z-Wave network. By using the REST API all devices are loaded from Z-Way and represented as openHAB elements. The sensor data and actuator states are constantly updated and commands are passed to the Z-Way system.
|
||||
The idea behind is the integration of Z-Wave through a bridge (Z-Way controller).
|
||||
The existing, certified Z-Way stack can be used to build, configure and control the Z-Wave network.
|
||||
By using the REST API all devices are loaded from Z-Way and represented as openHAB elements.
|
||||
The sensor data and actuator states are constantly updated and commands are passed to the Z-Way system.
|
||||
|
||||
The Binding uses the Z-Way library for Java ([Github](https://github.com/pathec/ZWay-library-for-Java)).
|
||||
|
||||
## Supported Things
|
||||
|
||||
The Z-Way Binding provides different thing types. The core component is the bridge which represents the Z-Way server. For the integration of devices, two thing types are available. In Z-Way there are devices which represent physical devices and (virtual) devices which are defined in Apps. The difference is that physical devices usually have several functions.
|
||||
Z-Way server constructs (virtual) devices for each function, such as motion sensors or door contacts. In openHAB, these functions are bundled into physical devices and represented as things with channels for each function. This type of thing is a *Z-Wave Device*. On the other hand all virtual devices are mapped to *Z-Way Virtual Devices* with exactly one channel.
|
||||
The Z-Way Binding provides different thing types.
|
||||
The core component is the bridge which represents the Z-Way server.
|
||||
For the integration of devices, two thing types are available.
|
||||
In Z-Way there are devices which represent physical devices and (virtual) devices which are defined in Apps.
|
||||
The difference is that physical devices usually have several functions.
|
||||
Z-Way server constructs (virtual) devices for each function, such as motion sensors or door contacts.
|
||||
In openHAB, these functions are bundled into physical devices and represented as things with channels for each function.
|
||||
This type of thing is a *Z-Wave Device*.
|
||||
On the other hand all virtual devices are mapped to *Z-Way Virtual Devices* with exactly one channel.
|
||||
|
||||
- *Z-Way Server* (Bridge) represents a bridge with general settings and communication tasks.
|
||||
- *Z-Way Virtual Device* represents one (virtual) device with the corresponding channel. A bridge is necessary as an intermediary between openHAB thing and Z-Way device.
|
||||
- *Z-Wave Device* represents a device of real world. Each device function will be mapped to a separate channel. The bridge is necessary as an intermediary between openHAB thing and Z-Way device.
|
||||
- *Z-Way Server* (Bridge) represents a bridge with general settings and communication tasks.
|
||||
- *Z-Way Virtual Device* represents one (virtual) device with the corresponding channel. A bridge is necessary as an intermediary between openHAB thing and Z-Way device.
|
||||
- *Z-Wave Device* represents a device of real world. Each device function will be mapped to a separate channel. The bridge is necessary as an intermediary between openHAB thing and Z-Way device.
|
||||
|
||||
## Discovery
|
||||
|
||||
A discovery service for Z-Way servers scans local network and must always be started manually. Z-Way doesn't support any discovery protocol like UPnP for this purpose. That's why first all IP addresses in local network are checked on port 8083. If the server answers, a ZAutomation request (*/ZAutomation/api/v1/status*) is performed to ensure, the found server runs Z-Way.
|
||||
A discovery service for Z-Way servers scans local network and must always be started manually.
|
||||
Z-Way doesn't support any discovery protocol like UPnP for this purpose.
|
||||
That's why first all IP addresses in local network are checked on port 8083.
|
||||
If the server answers, a ZAutomation request (*/ZAutomation/api/v1/status*) is performed to ensure, the found server runs Z-Way.
|
||||
|
||||
Another discovery service provides available devices (a configured bridge is necessary). The device discovery service is performed at a specified interval, but can also be started manually.
|
||||
Another discovery service provides available devices (a configured bridge is necessary).
|
||||
The device discovery service is performed at a specified interval, but can also be started manually.
|
||||
|
||||
Note: In the Z-Way server device can be disabled or made invisible. Only for active and visible Z-Way devices channels will created.
|
||||
|
||||
|
@ -57,25 +72,27 @@ No configuration is necessary.
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
The textual configuration (via \*.thing files) isn't useful because the resulting elements are read-only. But the configuration and properties of things are changed at runtime and channels are dynamically added and removed.
|
||||
The textual configuration (via \*.thing files) isn't useful because the resulting elements are read-only.
|
||||
But the configuration and properties of things are changed at runtime and channels are dynamically added and removed.
|
||||
|
||||
### Z-Way Server (Bridge)
|
||||
|
||||
The information about accessing openHAB are needed so that the Observer mechanism works. Besides the username and password all required Z-Way information are found during discovery.
|
||||
The information about accessing openHAB are needed so that the Observer mechanism works.
|
||||
Besides the username and password all required Z-Way information are found during discovery.
|
||||
|
||||
| Configuration Name | Mandatory | Default | Desciption |
|
||||
| ------------------------- | --------- | ------- | ---------- |
|
||||
| openHABAlias | | | By default, the alias is generated during initialization or configuration update of thing handler. |
|
||||
| openHABIpAddress | | localhost | The IP address or hostname of the openHAB server. If Z-Way and openHAB are running on the same machine, the default value can be used. |
|
||||
| openHABPort | | 8080 | The port of the openHAB server (0 to 65335) |
|
||||
| openHABProtocol | | http | Protocol to connect to the openHAB server (http or https) |
|
||||
| zwayServerIpAddress | | localhost | The IP address or hostname of the Z-Way server. If Z-Way and openHAB are running on the same machine, the default value can be used. |
|
||||
| zwayServerPort | | 8083 | The port of the Z-Way server (0 to 65335) |
|
||||
| zwayServerProtocol | | http | Protocol to connect to the Z-Way server (http or https) |
|
||||
| zwayServerUsername | | admin | Username to access the Z-Way server. |
|
||||
| zwayServerPassword | X | | Password to access the Z-Way server. |
|
||||
| pollingInterval | | 3600 | Refresh device states and registration from Z-Way server in seconds (at least 60). |
|
||||
| observerMechanismEnabled | | true | The observer functionality is responsible for the item registration as observer in Z-Way. Attention: if disable this option, you have to setup an other synchronization mechanism like MQTT. |
|
||||
| Configuration Name | Mandatory | Default | Desciption |
|
||||
|--------------------------|-----------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| openHABAlias | | | By default, the alias is generated during initialization or configuration update of thing handler. |
|
||||
| openHABIpAddress | | localhost | The IP address or hostname of the openHAB server. If Z-Way and openHAB are running on the same machine, the default value can be used. |
|
||||
| openHABPort | | 8080 | The port of the openHAB server (0 to 65335) |
|
||||
| openHABProtocol | | http | Protocol to connect to the openHAB server (http or https) |
|
||||
| zwayServerIpAddress | | localhost | The IP address or hostname of the Z-Way server. If Z-Way and openHAB are running on the same machine, the default value can be used. |
|
||||
| zwayServerPort | | 8083 | The port of the Z-Way server (0 to 65335) |
|
||||
| zwayServerProtocol | | http | Protocol to connect to the Z-Way server (http or https) |
|
||||
| zwayServerUsername | | admin | Username to access the Z-Way server. |
|
||||
| zwayServerPassword | X | | Password to access the Z-Way server. |
|
||||
| pollingInterval | | 3600 | Refresh device states and registration from Z-Way server in seconds (at least 60). |
|
||||
| observerMechanismEnabled | | true | The observer functionality is responsible for the item registration as observer in Z-Way. Attention: if disable this option, you have to setup an other synchronization mechanism like MQTT. |
|
||||
|
||||
Only the Z-Way server can be configured textual (Attention! *openHABAlias* has to be set because the bridge configuration can not be changed at runtime):
|
||||
|
||||
|
@ -87,17 +104,18 @@ Bridge zway:zwayServer:192_168_2_42 [ openHABAlias="development", openHABIpAddre
|
|||
|
||||
### Z-Way Virtual Device
|
||||
|
||||
| Configuration Name | Mandatory | Default | Description |
|
||||
| ------------------ | ----------| ------- | ---------- |
|
||||
| deviceId | X | | Device ID of virtual device |
|
||||
| bridge reference | X | | ||
|
||||
| Configuration Name | Mandatory | Default | Description |
|
||||
|--------------------|-----------|---------|-----------------------------|
|
||||
| deviceId | X | | Device ID of virtual device |
|
||||
| bridge reference | X | | |
|
||||
|
||||
|
||||
### Z-Wave Device
|
||||
|
||||
| Configuration Name | Mandatory | Default | Description |
|
||||
| ------------------ | ----------| ------- | ---------- |
|
||||
| nodeId | X | | Node ID of the Z-Wave device |
|
||||
| bridge reference | X | | ||
|
||||
| Configuration Name | Mandatory | Default | Description |
|
||||
|--------------------|-----------|---------|------------------------------|
|
||||
| nodeId | X | | Node ID of the Z-Wave device |
|
||||
| bridge reference | X | | |
|
||||
|
||||
## Channels
|
||||
|
||||
|
@ -105,65 +123,77 @@ Bridge zway:zwayServer:192_168_2_42 [ openHABAlias="development", openHABIpAddre
|
|||
|
||||
The following channels are currently supported.
|
||||
|
||||
| Channel Type ID | Item Type | Category | Asssigned for Z-Way device type and probe type |
|
||||
| --------------- | --------- | -------- | ---------------------------------------------- |
|
||||
| sensorTemperature | Number | Temperature | SensorMultilevel - temperature |
|
||||
| sensorLuminosity | Number | Light | SensorMultilevel - luminosity |
|
||||
| sensorHumidity | Number | Humidity | SensorMultilevel - humidity |
|
||||
| sensorBarometer | Number | Pressure | SensorMultilevel - barometer |
|
||||
| sensorUltraviolet | Number | Light | SensorMultilevel - ultraviolet |
|
||||
| sensorCO2 | Number | CarbonDioxide | SensorMultilevel - *Special case:* no probe type for carbon dioxide sensors available - probe title *CO2 Level* acts as selection criterion |
|
||||
| sensorEnergy | Number | Energy | SensorMultilevel - energy |
|
||||
| sensorMeterKWh | Number | Energy | SensorMultilevel - meterElectric_kilowatt_per_hour |
|
||||
| sensorMeterW | Number | Energy | SensorMultilevel - meterElectric_watt |
|
||||
| sensorSmoke | Switch | Smoke | SensorBinary - smoke |
|
||||
| sensorCo | Switch | Gas | SensorBinary - co |
|
||||
| sensorFlood | Switch | Water | SensorBinary - flood |
|
||||
| sensorTamper | Switch | Alarm | SensorBinary - tamper |
|
||||
| sensorDoorWindow | Contact | Contact | SensorBinary - door-window |
|
||||
| sensorMotion | Switch | Motion | SensorBinary - general_purpose, motion |
|
||||
| switchPowerOutlet | Switch | PowerOutlet | SwitchBinary - *Special case:* no probe type for power outlet available - icon *switch* acts as selection criterion
|
||||
| switchColorTemperature | Dimmer | ColorLight | SwitchMultilevel - switchColor_soft_white, switchColor_cold_white |
|
||||
| thermostatMode | Switch | Temperature | SwitchBinary - thermostat_mode |
|
||||
| Channel Type ID | Item Type | Category | Asssigned for Z-Way device type and probe type |
|
||||
|------------------------|-----------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| sensorTemperature | Number | Temperature | SensorMultilevel - temperature |
|
||||
| sensorLuminosity | Number | Light | SensorMultilevel - luminosity |
|
||||
| sensorHumidity | Number | Humidity | SensorMultilevel - humidity |
|
||||
| sensorBarometer | Number | Pressure | SensorMultilevel - barometer |
|
||||
| sensorUltraviolet | Number | Light | SensorMultilevel - ultraviolet |
|
||||
| sensorCO2 | Number | CarbonDioxide | SensorMultilevel - *Special case:* no probe type for carbon dioxide sensors available - probe title *CO2 Level* acts as selection criterion |
|
||||
| sensorEnergy | Number | Energy | SensorMultilevel - energy |
|
||||
| sensorMeterKWh | Number | Energy | SensorMultilevel - meterElectric_kilowatt_per_hour |
|
||||
| sensorMeterW | Number | Energy | SensorMultilevel - meterElectric_watt |
|
||||
| sensorSmoke | Switch | Smoke | SensorBinary - smoke |
|
||||
| sensorCo | Switch | Gas | SensorBinary - co |
|
||||
| sensorFlood | Switch | Water | SensorBinary - flood |
|
||||
| sensorTamper | Switch | Alarm | SensorBinary - tamper |
|
||||
| sensorDoorWindow | Contact | Contact | SensorBinary - door-window |
|
||||
| sensorMotion | Switch | Motion | SensorBinary - general_purpose, motion |
|
||||
| switchPowerOutlet | Switch | PowerOutlet | SwitchBinary - *Special case:* no probe type for power outlet available - icon *switch* acts as selection criterion |
|
||||
| switchColorTemperature | Dimmer | ColorLight | SwitchMultilevel - switchColor_soft_white, switchColor_cold_white |
|
||||
| thermostatMode | Switch | Temperature | SwitchBinary - thermostat_mode |
|
||||
|
||||
Currently unsupported Z-Way probe types:
|
||||
|
||||
- SensorBinary: cooling, all alarm types (resulting from Z-Wave command class AlarmSensor(deprecated) and Alarm)
|
||||
- SensorMultilevel: meterElectric_pulse_count, meterElectric_voltage, meterElectric_ampere, meterElectric_power_factor
|
||||
- SensorBinary: cooling, all alarm types (resulting from Z-Wave command class AlarmSensor(deprecated) and Alarm)
|
||||
- SensorMultilevel: meterElectric_pulse_count, meterElectric_voltage, meterElectric_ampere, meterElectric_power_factor
|
||||
|
||||
### Universial channels for the devices
|
||||
|
||||
The following channels represent universial channels if no further device information are available, only depending on the Z-Way device types (for available device types see [Z-Way Documentation](http://docs.zwayhomeautomation.apiary.io/#reference/devices/device)).
|
||||
|
||||
| Channel Type ID | Item Type | Category | Assigned for Z-Way device type |
|
||||
| --------------- | --------- | -------- | ------------------------------ |
|
||||
| battery | Number | Battery | Battery |
|
||||
| doorlock | Switch | Door | Doorlock |
|
||||
| sensorBinary | Switch | Switch | SensorBinary |
|
||||
| sensorMultilevel | Number | - | SensorMultilevel |
|
||||
| switchBinary | Switch | Switch | SwitchBinary |
|
||||
| switchMultilevel | Dimmer | - | SwitchMultilevel |
|
||||
| switchColor | Color | ColorLight | SwitchRGBW |
|
||||
| switchControl | Switch | Switch | SwitchControl, ToggleButton, SwitchToggle |
|
||||
| thermostat | Number | Temperature | Thermostat |
|
||||
| sensorDiscrete | Number | - | SensorDiscrete |
|
||||
| Channel Type ID | Item Type | Category | Assigned for Z-Way device type |
|
||||
|------------------|-----------|-------------|-------------------------------------------|
|
||||
| battery | Number | Battery | Battery |
|
||||
| doorlock | Switch | Door | Doorlock |
|
||||
| sensorBinary | Switch | Switch | SensorBinary |
|
||||
| sensorMultilevel | Number | - | SensorMultilevel |
|
||||
| switchBinary | Switch | Switch | SwitchBinary |
|
||||
| switchMultilevel | Dimmer | - | SwitchMultilevel |
|
||||
| switchColor | Color | ColorLight | SwitchRGBW |
|
||||
| switchControl | Switch | Switch | SwitchControl, ToggleButton, SwitchToggle |
|
||||
| thermostat | Number | Temperature | Thermostat |
|
||||
| sensorDiscrete | Number | - | SensorDiscrete |
|
||||
|
||||
|
||||
Unsupported Z-Way device types: Camera, SensorMultiline, Text. The integration of these types isn't planned.
|
||||
|
||||
### Channels for the Z-Way Server (Bridge)
|
||||
|
||||
| Channel Type ID | Item Type | Category | Description |
|
||||
| --------------- | --------- | -------- | ----------- |
|
||||
| actions | String | - | It is currently possible to update all devices. |
|
||||
| secureInclusion | Switch | Switch | Change inclusion type for further inclusions. |
|
||||
| inclusion | Switch | Switch | Start inclusion mode (after a timeout the inclusion will be automatically finished). |
|
||||
| exclusion | Switch | Switch | Start exclusion mode (after a timeout the exclusion will be automatically finished). ||
|
||||
|
||||
Markdown Table Formatter
|
||||
|
||||
This tool formats basic MultiMarkdown style tables for easier plain text reading.
|
||||
It adds padding to all the cells to line up the pipe separators when using a mono-space font.
|
||||
|
||||
To see what it's all about, try one of these examples, or format your own.
|
||||
|
||||
Load: Example 1 - Example 2 - Example 3
|
||||
|
||||
For more information:
|
||||
I'm on Twitter as @TheIdOfAlan
|
||||
I sometimes post on my personal site alanwsmith.com
|
||||
This is an Open Source GitHub Project.
|
||||
It has a Jasmine Test Suite.
|
||||
What to show your appreciation? Buy me a book
|
||||
|
||||
## Locations
|
||||
|
||||
The locations of the Z-Way devices are loaded during the discovery. Based on the location ID of Z-Way device, the name of the Z-Way room is then allocated to the location property of the thing.
|
||||
The locations of the Z-Way devices are loaded during the discovery.
|
||||
Based on the location ID of Z-Way device, the name of the Z-Way room is then allocated to the location property of the thing.
|
||||
|
||||
## Full Example
|
||||
## Example
|
||||
|
||||
Because textual configuration isn't useful, follow the instructions in the [Getting Started](doc/GETTING_STARTED.md) document.
|
||||
|
||||
|
@ -171,7 +201,7 @@ Because textual configuration isn't useful, follow the instructions in the [Gett
|
|||
|
||||
### Known issues
|
||||
|
||||
- The Z-Way Binding only works, when simple mode of item linking is enabled during thing creation.
|
||||
- The Z-Way Binding only works, when simple mode of item linking is enabled during thing creation.
|
||||
|
||||
### Structure of Z-Way Binding
|
||||
|
||||
|
@ -179,15 +209,15 @@ Because textual configuration isn't useful, follow the instructions in the [Gett
|
|||
|
||||
### Features
|
||||
|
||||
- Discovery of the Z-Way server and devices
|
||||
- Control of the Z-Wave devices in openHAB
|
||||
- Receive updates of sensor data and actuator states in openHAB
|
||||
- Discovery of the Z-Way server and devices
|
||||
- Control of the Z-Wave devices in openHAB
|
||||
- Receive updates of sensor data and actuator states in openHAB
|
||||
|
||||
### Restrictions
|
||||
|
||||
- Z-Way device types (especially the probe types) supported by openHAB channels with detailed information (scale types and so on) are not complete.
|
||||
- Configuration of the Z-Wave network by the binding is currently not possible (physical device configuration)
|
||||
- Z-Way App "openHAB Connector" is required. Further versions will contain other mechanisms under usage of the WebSocket implementation of Z-Way or MQTT.
|
||||
- Z-Way device types (especially the probe types) supported by openHAB channels with detailed information (scale types and so on) are not complete.
|
||||
- Configuration of the Z-Wave network by the binding is currently not possible (physical device configuration)
|
||||
- Z-Way App "openHAB Connector" is required. Further versions will contain other mechanisms under usage of the WebSocket implementation of Z-Way or MQTT.
|
||||
|
||||
<br>
|
||||
<img src="doc/BMWi_4C_Gef_en.jpg" width="200">
|
||||
|
|
|
@ -16,13 +16,21 @@ install: auto
|
|||
|
||||
This is an add-on that exposes your openHAB system as a bridge over the HomeKit protocol.
|
||||
|
||||
Using this add-on, you will be able to control your openHAB system using Apple's Siri, or any of a number of HomeKit enabled iOS apps. In order to do so, you will need to make some configuration changes. HomeKit organizes your home into "accessories" that are made up of a number of "characteristics". Some accessory types require a specific set of characteristics.
|
||||
Using this add-on, you will be able to control your openHAB system using Apple's Siri, or any of a number of HomeKit enabled iOS apps.
|
||||
In order to do so, you will need to make some configuration changes.
|
||||
HomeKit organizes your home into "accessories" that are made up of a number of "characteristics".
|
||||
Some accessory types require a specific set of characteristics.
|
||||
|
||||
## Global Configuration
|
||||
|
||||
Your first step will be to create the homekit.cfg in your conf/services folder. At the very least, you will need to define a pin number for the bridge. This will be used in iOS when pairing. The pin code is in the form "###-##-###". Requirements beyond this are not clear, and Apple enforces limitations on eligible pins within iOS. At the very least, you cannot use repeating (111-11-111) or sequential (123-45-678) pin codes. If your home network is secure, a good starting point is the pin code used in most sample applications: 031-45-154.
|
||||
Your first step will be to create the homekit.cfg in your conf/services folder.
|
||||
At the very least, you will need to define a pin number for the bridge.
|
||||
This will be used in iOS when pairing. The pin code is in the form "###-##-###".
|
||||
Requirements beyond this are not clear, and Apple enforces limitations on eligible pins within iOS.
|
||||
At the very least, you cannot use repeating (111-11-111) or sequential (123-45-678) pin codes.
|
||||
If your home network is secure, a good starting point is the pin code used in most sample applications: 031-45-154.
|
||||
|
||||
Other settings, such as using fahrenheit temperatures, customizing the thermostat heat/cool/auto modes, and specifying the interface to advertise the Homekit bridge on are also illustrated in the following sample:
|
||||
Other settings, such as using Fahrenheit temperatures, customizing the thermostat heat/cool/auto modes, and specifying the interface to advertise the Homekit bridge on are also illustrated in the following sample:
|
||||
|
||||
```
|
||||
org.openhab.homekit:port=9124
|
||||
|
@ -38,9 +46,12 @@ org.openhab.homekit:networkInterface=192.168.0.6
|
|||
|
||||
## Item Configuration
|
||||
|
||||
After setting this global configuration, you will need to tag your openHAB items in order to map them to an ontology. For our purposes, you may consider HomeKit accessories to be of two forms: simple and complex.
|
||||
After setting this global configuration, you will need to tag your openHAB items in order to map them to an ontology.
|
||||
For our purposes, you may consider HomeKit accessories to be of two forms: simple and complex.
|
||||
|
||||
A simple accessory will be mapped to a single openHAB item (i.e. a Lighbulb is mapped to a Switch, Dimmer, or Color item). A complex accessory will be made up of multiple openHAB items (i.e. a Thermostat is composed of Heating and Cooling thresholds, a mode, and current temperature). Complex accessories require a tag on a Group indicating the accessory type, as well as tags on the items it composes.
|
||||
A simple accessory will be mapped to a single openHAB item (i.e. a Lighbulb is mapped to a Switch, Dimmer, or Color item).
|
||||
A complex accessory will be made up of multiple openHAB items (i.e. a Thermostat is composed of Heating and Cooling thresholds, a mode, and current temperature).
|
||||
Complex accessories require a tag on a Group indicating the accessory type, as well as tags on the items it composes.
|
||||
|
||||
A full list of supported accessory types can be found in the table below.
|
||||
|
||||
|
@ -115,10 +126,16 @@ String DownstairsThermostatHeatingCoolingMode "Downstairs Thermostat Heating/Coo
|
|||
|
||||
## Additional Notes
|
||||
|
||||
HomeKit allows only a single pairing to be established with the bridge. This pairing is normally shared across devices via iCloud. If you need to establish a new pairing, you'll need to clear the existing pairings. To do this, you can issue the command ```smarthome:homekit clearPairings``` from the OSGi console.
|
||||
HomeKit allows only a single pairing to be established with the bridge.
|
||||
This pairing is normally shared across devices via iCloud.
|
||||
If you need to establish a new pairing, you'll need to clear the existing pairings.
|
||||
To do this, you can issue the command ```smarthome:homekit clearPairings``` from the OSGi console.
|
||||
|
||||
HomeKit requires a unique identifier for each accessory advertised by the bridge. This unique identifier is hashed from the Item's name. For that reason, it is important that the name of your Items exposed to HomeKit remain consistent.
|
||||
HomeKit requires a unique identifier for each accessory advertised by the bridge.
|
||||
This unique identifier is hashed from the Item's name.
|
||||
For that reason, it is important that the name of your Items exposed to HomeKit remain consistent.
|
||||
|
||||
If you encounter any issues with the add-on and need support, it may be important to get detailed logs of your device's communication with openHAB. In order to get logs from the underlying library used to implement the HomeKit protocol, enable trace logging using the following command:
|
||||
If you encounter any issues with the add-on and need support, it may be important to get detailed logs of your device's communication with openHAB.
|
||||
In order to get logs from the underlying library used to implement the HomeKit protocol, enable trace logging using the following command:
|
||||
|
||||
```openhab> log:set TRACE com.beowulfe.hap```
|
||||
|
|
|
@ -18,10 +18,10 @@ Hue Emulation exposes openHAB items as Hue devices to other Hue HTTP API compati
|
|||
|
||||
## Features:
|
||||
|
||||
* UPNP automatic discovery
|
||||
* Support ON/OFF and Percent/Decimal item types
|
||||
* Can expose any type of item, not just lights
|
||||
* Pairing (security) can be enabled/disabled in real time using the configuration service (under services in the PaperUI for example)
|
||||
* UPNP automatic discovery
|
||||
* Support ON/OFF and Percent/Decimal item types
|
||||
* Can expose any type of item, not just lights
|
||||
* Pairing (security) can be enabled/disabled in real time using the configuration service (under services in the PaperUI for example)
|
||||
|
||||
## Configuration:
|
||||
|
||||
|
@ -38,7 +38,9 @@ org.openhab.hueemulation:discoveryIp=192.168.1.100
|
|||
```
|
||||
|
||||
## Device Tagging
|
||||
To expose an item on the service, apply a supported tag (which are "Lighting", "Switchable", "TargetTemperature") to it. The item label will be used as the Hue device name.
|
||||
|
||||
To expose an item on the service, apply a supported tag (which are "Lighting", "Switchable", "TargetTemperature") to it.
|
||||
The item label will be used as the Hue device name.
|
||||
|
||||
```
|
||||
Switch TestSwitch1 "Kitchen Switch" [ "Switchable" ]
|
||||
|
|
|
@ -28,20 +28,22 @@ The ImperiHome integration service can be installed through the Paper UI. Naviga
|
|||
### openHAB Add-on
|
||||
|
||||
To configure the ImperiHome integration add-on in openHAB, create a _imperihome.cfg_ file in the _conf/services_ directory. The following configuration options can be used:
|
||||
|
||||
|
||||
**System ID**
|
||||
|
||||
The ImperiHome integration service identifies itself to ImperiHome using a system ID. By default the unique identifier of your openHAB installation is used. To override the ID, use the _system.id_ configuration option.
|
||||
The ImperiHome integration service identifies itself to ImperiHome using a system ID. By default the unique identifier of your openHAB installation is used. To override the ID, use the _system.id_ configuration option.
|
||||
|
||||
```
|
||||
system.id=my-openhab-123
|
||||
```
|
||||
|
||||
*Warning*: the system ID can not contain the underscore character (_).
|
||||
_Warning_: the system ID can not contain the underscore character (_).
|
||||
|
||||
**Root URL**
|
||||
|
||||
Root URL of your openHAB installation. Should point to the openHAB welcome page. This option is currently only required when using the custom icon tag.
|
||||
Root URL of your openHAB installation.
|
||||
Should point to the openHAB welcome page
|
||||
This option is currently only required when using the custom icon tag.
|
||||
|
||||
```
|
||||
openhab.rootUrl=http://myserver.example.org:7070/
|
||||
|
@ -51,17 +53,22 @@ openhab.rootUrl=http://myserver.example.org:7070/
|
|||
|
||||
ImperiHome must be configured to connect to your openHAB instance.
|
||||
|
||||
Start ImperiHome, open the menu and go to My Systems. Add a new system (+) and choose 'ImperiHome Standard System' as the object type. Now enter the URL to your openHAB instance
|
||||
as Local URL, followed by _/imperihome/iss_. For example, if your openHAB instance is running at _http://192.168.1.10:8080/_, the Local URL would be _http://192.168.1.10:8080/imperihome/iss_.
|
||||
Start ImperiHome, open the menu and go to My Systems.
|
||||
Add a new system (+) and choose 'ImperiHome Standard System' as the object type.
|
||||
Now enter the URL to your openHAB instance as Local URL, followed by _/imperihome/iss_.
|
||||
For example, if your openHAB instance is running at _<http://192.168.1.10:8080/>_, the Local URL would be _<http://192.168.1.10:8080/imperihome/iss>_.
|
||||
|
||||
If you have port forwarding or similar set up to access your openHAB from the internet, you can also fill the Remote URL in the same way. For example:
|
||||
_http://my-openhab-url.dyndns.org:8080/imperihome/iss_. <b>Warning</b>: this service provides no authentication mechanism, so anyone could use the API to control your system when accessible from the internet. Add a secure proxy or use the openHAB Cloud proxy to protect your system ([more information](http://docs.openhab.org/installation/security.html)).
|
||||
If you have port forwarding or similar set up to access your openHAB from the internet, you can also fill the Remote URL in the same way. For example: _<http://my-openhab-url.dyndns.org:8080/imperihome/iss>_.
|
||||
_Warning_: this service provides no authentication mechanism, so anyone could use the API to control your system when accessible from the internet.
|
||||
Add a secure proxy or use the openHAB Cloud proxy to protect your system ([more information](http://docs.openhab.org/installation/security.html)).
|
||||
|
||||
Click Next to let ImperiHome validate the URL. After validation succeeded the system is added and you can continue to configure your Items for use in ImperiHome.
|
||||
Click Next to let ImperiHome validate the URL.
|
||||
After validation succeeded the system is added and you can continue to configure your Items for use in ImperiHome.
|
||||
|
||||
## Device Tagging
|
||||
|
||||
This service uses Item tags to determine how to expose your Items to ImperiHome. All tags are formatted like this:
|
||||
This service uses Item tags to determine how to expose your Items to ImperiHome.
|
||||
All tags are formatted like this:
|
||||
|
||||
```
|
||||
iss:<tagtype>:<value>
|
||||
|
@ -73,18 +80,19 @@ For example:
|
|||
iss:room:Kitchen
|
||||
```
|
||||
|
||||
If you've defined your Items in _.items_ files, tags can be added using the
|
||||
If you've defined your Items in _.items_ files, tags can be added using:
|
||||
|
||||
```
|
||||
[ "mytag" ]
|
||||
```
|
||||
```
|
||||
|
||||
syntax (after the _(Groups)_ and before the _{channel}_).
|
||||
If you created your items another way, e.g. using the Paper UI, [HABmin](https://github.com/openhab/org.openhab.ui.habmin) allows you to modify the tags.
|
||||
syntax (after the _(Groups)_ and before the _{channel}_).
|
||||
If you created your items another way, e.g. using the Paper UI, [HABmin](https://github.com/openhab/org.openhab.ui.habmin) allows you to modify the tags.
|
||||
|
||||
### Tag: _type_
|
||||
|
||||
Specifies the device type to expose to ImperiHome. Take a look at [Device types](#deviceTypes) below for the supported device types and how to configure them.
|
||||
Specifies the device type to expose to ImperiHome.
|
||||
Take a look at [Device types](#deviceTypes) below for the supported device types and how to configure them.
|
||||
If no type is specified, this service will try to auto-detect the type from the Item, based on supported value types (OnOff for a switch, HSB for color light) and Item name.
|
||||
|
||||
_Required_: no<br>
|
||||
|
@ -101,7 +109,7 @@ Specifies the room the device will show up in in ImperiHome.
|
|||
|
||||
_Required_: no<br>
|
||||
_Default_: 'No Room'<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:room:Kitchen
|
||||
|
@ -109,11 +117,13 @@ iss:room:Kitchen
|
|||
|
||||
### Tag: _label_
|
||||
|
||||
Sets the device label in ImperiHome. If no label is specified, the Item label is used if available. Otherwise the Item name will be used.
|
||||
Sets the device label in ImperiHome.
|
||||
If no label is specified, the Item label is used if available.
|
||||
Otherwise the Item name will be used.
|
||||
|
||||
_Required_: no<br>
|
||||
_Default_: Item label or name<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:label:Kitchen light
|
||||
|
@ -121,13 +131,13 @@ iss:label:Kitchen light
|
|||
|
||||
### Tag: _mapping_
|
||||
|
||||
Sets the mapping for a ImperiHome MultiSwitch device, just like an openHAB sitemap mapping does.
|
||||
In the example below, 'All off', 'Relax' and 'Reading' will be visible in ImperiHome. Clicking one of the options will send
|
||||
a 0, 1 or 2 value command to the openHAB item.
|
||||
Sets the mapping for a ImperiHome MultiSwitch device, just like an openHAB sitemap mapping does.
|
||||
In the example below, 'All off', 'Relax' and 'Reading' will be visible in ImperiHome.
|
||||
Clicking one of the options will send a 0, 1 or 2 value command to the openHAB item.
|
||||
|
||||
_Required_: only for MultiSwitch device<br>
|
||||
_Default_: none<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:mapping:0=All off,1=Relax,2=Reading
|
||||
|
@ -140,7 +150,7 @@ See [Device links](#deviceLinks) for details.
|
|||
|
||||
_Required_: no<br>
|
||||
_Default_: none<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:link:energy:Kitchen_Current_Consumption
|
||||
|
@ -153,7 +163,7 @@ The unit is only used to tell ImperiHome what to display; no conversion is perfo
|
|||
|
||||
_Required_: no<br>
|
||||
_Default_: none<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:unit:°C
|
||||
|
@ -165,7 +175,7 @@ Inverts the state of on/off devices such as switches and dimmers.
|
|||
|
||||
_Required_: no<br>
|
||||
_Default_: false<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:invert:true
|
||||
|
@ -173,23 +183,25 @@ iss:invert:true
|
|||
|
||||
### Tag: _icon_
|
||||
|
||||
Sets a custom icon to be shown in ImperiHome. You can use all icon names that are also available for use in your sitemaps, including custom icons.
|
||||
Sets a custom icon to be shown in ImperiHome.
|
||||
You can use all icon names that are also available for use in your sitemaps, including custom icons.
|
||||
To use this tag you must set the openHAB root URL in your [configuration](#configuration).
|
||||
|
||||
_Required_: no<br>
|
||||
_Default_: none<br>
|
||||
_Example_:
|
||||
_Example_:
|
||||
|
||||
```
|
||||
iss:icon:sofa
|
||||
```
|
||||
|
||||
<a name="deviceTypes"></a>
|
||||
<a name="deviceTypes"></a>
|
||||
|
||||
## Device types
|
||||
|
||||
The following table lists the ImperiHome API device types that you can use in a _iss:type_ tag. Not all device types are currently supported. For those that are supported,
|
||||
the Item types you can use them on are listed.
|
||||
The following table lists the ImperiHome API device types that you can use in a _iss:type_ tag.
|
||||
Not all device types are currently supported.
|
||||
For those that are supported, the Item types you can use them on are listed.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
@ -398,16 +410,18 @@ the Item types you can use them on are listed.
|
|||
</table>
|
||||
|
||||
<sup>(1)</sup> When using a String Item for trippable devices, any non-empty value other than 'ok' will set the device to tripped. This makes it compatible with the Nest Protect binding.
|
||||
|
||||
|
||||
<sup>(2)</sup> Thermostat devices require additional tags. See [Thermostat](#thermostat) for details.
|
||||
|
||||
<a name="deviceLinks"></a>
|
||||
<a name="deviceLinks"></a>
|
||||
|
||||
## Device links
|
||||
|
||||
Some devices can be linked to another device. This allows you to create combined devices reporting multiple values, or reporting the energy consumption with a switch device.
|
||||
Some devices can be linked to another device.
|
||||
This allows you to create combined devices reporting multiple values, or reporting the energy consumption with a switch device.
|
||||
|
||||
The _link_ tag refers to the name of the Item it should link to. The item must be an ImperiHome device itself, so it must have at least one _iss_ tag.
|
||||
The _link_ tag refers to the name of the Item it should link to.
|
||||
The item must be an ImperiHome device itself, so it must have at least one _iss_ tag.
|
||||
|
||||
### Switch energy consumption
|
||||
|
||||
|
@ -421,7 +435,8 @@ Number MyLightEnergy "My Light Usage [%.1f W]" ["iss:type:DevElectricity"]
|
|||
|
||||
### Total energy consumption
|
||||
|
||||
The _DevElectricity_ devices main value is the current consumption in Watts. To add the total consumption in KWh, link your electricity device to a generic sensor device containing the total energy consumption value:
|
||||
The _DevElectricity_ devices main value is the current consumption in Watts.
|
||||
To add the total consumption in KWh, link your electricity device to a generic sensor device containing the total energy consumption value:
|
||||
|
||||
```
|
||||
Number MyLight_Energy "My Light Usage [%.1f W]" ["iss:type:DevElectricity", "iss:link:kwh:MyLight_Total_Energy"] { channel="zwave:device:1:node14:meter_watts1" }
|
||||
|
@ -430,7 +445,8 @@ Number MyLight_Total_Energy "My Light Total usage [%.1f KWh]" ["iss:type:DevG
|
|||
|
||||
### TempHygro
|
||||
|
||||
ImperiHome recognizes the special _DevTempHygro_ device, combining a temperature and hydrometry sensor. You can create such a device by linking either from a temperature Item to a hygro Item:
|
||||
ImperiHome recognizes the special _DevTempHygro_ device, combining a temperature and hydrometry sensor.
|
||||
You can create such a device by linking either from a temperature Item to a hygro Item:
|
||||
|
||||
```
|
||||
Number MyTemp "Temperature [%.1f °C]" ["iss:type:DevTempHygro", "iss:link:hygro:MyHum"] { channel="zwave:device:1:node8:sensor_temperature" }
|
||||
|
@ -446,7 +462,8 @@ Number MyHum "Humidity [%d%%]" ["iss:type:DevTempHygro", "iss:link:temp
|
|||
|
||||
### Rain accumulation
|
||||
|
||||
The _DevRain_ devices main value is the current instant rain value (default in mm per hour). To add the total rain accumulation value, link your rain device to a generic sensor device:
|
||||
The _DevRain_ devices main value is the current instant rain value (default in mm per hour).
|
||||
To add the total rain accumulation value, link your rain device to a generic sensor device:
|
||||
|
||||
```
|
||||
Number RainCurrent "Rain current [%.1f mm/h]" ["iss:type:DevRain", "iss:link:accum:RainAccumulation"] { channel="..." }
|
||||
|
@ -455,37 +472,43 @@ Number RainAccumulation "Rain accumulation [%.1f mm]" ["iss:type:DevGenericSe
|
|||
|
||||
### Wind direction
|
||||
|
||||
The _DevWind_ devices main value is the current wind speed (default in km per hour). To add the wind direction value (default in degrees), link your wind device to a generic sensor device:
|
||||
The _DevWind_ devices main value is the current wind speed (default in km per hour).
|
||||
To add the wind direction value (default in degrees), link your wind device to a generic sensor device:
|
||||
|
||||
```
|
||||
Number WindSpeed "Wind speed [%.1f km/h]" ["iss:type:DevWind", "iss:link:direction:WindDirection"] { channel="..." }
|
||||
Number WindDirection "Wind direction [%d deg]" ["iss:type:DevGenericSensor", "iss:unit:deg"] { channel="..." }
|
||||
```
|
||||
|
||||
<a name="thermostat"></a>
|
||||
<a name="thermostat"></a>
|
||||
|
||||
### Thermostat
|
||||
|
||||
The _DevThermostat_ combines a setpoint, current temperature and mode in one ImperiHome device. To accomplish this using openHAB items, it uses a _curtemp_ and _curmode_ link and a few additional tags.
|
||||
|
||||
The _DevThermostat_ combines a setpoint, current temperature and mode in one ImperiHome device.
|
||||
To accomplish this using openHAB items, it uses a _curtemp_ and _curmode_ link and a few additional tags.
|
||||
|
||||
```
|
||||
Number Thermos_Setpoint "Thermostat" ["iss:room:Test", "iss:type:DevThermostat", "iss:step:0.5", "iss:minVal:15", "iss:maxVal:24", "iss:modes:Home,Away,Comfort,Sleeping", "iss:link:curmode:Thermos_Mode", "iss:link:curtemp:Thermos_Temp"] { channel="..." }
|
||||
Number Thermos_Temp "Thermos temp" ["iss:room:Test", "iss:type:DevTemperature", "iss:unit:K"] { channel="..." }
|
||||
String Thermos_Mode "Thermos mode" ["iss:room:Test", "iss:type:DevGenericSensor"] { channel="..." }
|
||||
```
|
||||
|
||||
The main _DevThermostat_ device must be the Item holding the setpoint. Using tags, this device specifies the minimum and maximum setpoint value, the setpoint step and the available modes. The two links specify what Items contain the current temperature and current mode. If you want to use a custom unit, set the _unit_ tag on the current temperature device.
|
||||
|
||||
The main _DevThermostat_ device must be the Item holding the setpoint.
|
||||
Using tags, this device specifies the minimum and maximum setpoint value, the setpoint step and the available modes.
|
||||
The two links specify what Items contain the current temperature and current mode.
|
||||
If you want to use a custom unit, set the _unit_ tag on the current temperature device.
|
||||
|
||||
### Shutter stopper
|
||||
|
||||
The _DevShutter_ device of ImperiHome support a 'stop' action. To use this, link a Switch item to your shutter item, like so:
|
||||
The _DevShutter_ device of ImperiHome support a 'stop' action.
|
||||
To use this, link a Switch item to your shutter item, like so:
|
||||
|
||||
```
|
||||
Dimmer MyShutter "Shutter" ["iss:room:Test", "iss:type:DevShutter", "iss:link:stopper:MyShutterStop"] { channel="..." }
|
||||
Switch MyShutterStop "Stop shutter" ["iss:room:Test", "iss:type:DevSwitch"] { channel="..." }
|
||||
```
|
||||
|
||||
Implement a Rule listening for the ON command on the switch to handle the stop action yourself.
|
||||
Implement a Rule listening for the ON command on the switch to handle the stop action yourself.
|
||||
|
||||
## Items example
|
||||
|
||||
|
@ -500,4 +523,3 @@ Number ENT_Temperature "Entrance temperature [%.1f °C]" (Temperature) ["
|
|||
Number ENT_Luminance "Entrance light [%d lm]" (Luminance) ["iss:room:Entrance", "iss:type:DevLuminosity", "iss:unit:lux"] { channel="zwave:device:1:node8:sensor_luminance" }
|
||||
Number ENT_Humidity "Entrance humidity [%d%%]" (Humidity) ["iss:room:Entrance", "iss:type:DevHygrometry"] { channel="zwave:device:1:node8:sensor_relhumidity" }
|
||||
```
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
---
|
||||
layout: documentation
|
||||
title: HABPanel
|
||||
source: https://github.com/openhab/org.openhab.ui.habpanel/blob/master/doc/habpanel.md
|
||||
---
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
<!-- Attention authors: If you want to improve or enhance this article, please go to: -->
|
||||
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/issues -->
|
||||
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/blob/master/docs/habpanel.md -->
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
# Designing dashboard interfaces with HABPanel
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ id: voicerss
|
|||
label: VoiceRSS Text-to-Speech
|
||||
title: VoiceRSS Text-to-Speech - Voices
|
||||
type: voice
|
||||
description: "VoiceRSS is an Internet based TTS service hosted at http://api.voicerss.org."
|
||||
description: "VoiceRSS is an Internet based TTS service hosted at <http://api.voicerss.org>."
|
||||
since: 2x
|
||||
logo: images/addons/voicerss.png
|
||||
install: auto
|
||||
|
@ -17,10 +17,11 @@ install: auto
|
|||
|
||||
## Overview
|
||||
|
||||
VoiceRSS is an Internet based TTS service hosted at http://api.voicerss.org.
|
||||
It requires an API Key to get access to this service. The free version allows to make up to 350 requests/day, for more you may need a commercial subscription.
|
||||
VoiceRSS is an Internet based TTS service hosted at <http://api.voicerss.org>.
|
||||
You must obtain an API Key to get access to this service.
|
||||
The free version allows you to make up to 350 requests per day; for more you may need a commercial subscription.
|
||||
|
||||
For more information, see http://www.voicerss.org/
|
||||
For more information, see <http://www.voicerss.org/>.
|
||||
|
||||
## Samples
|
||||
|
||||
|
@ -39,7 +40,7 @@ https://api.voicerss.org/?key=API_KEY&hl=de-de&f=44khz_16bit_mono&src=Hallo%20We
|
|||
|
||||
## Configuration
|
||||
|
||||
You have to add your API_KEY to your configuration, e.g. by adding a file "voicerss.cfg" to the services folder, with this entry:
|
||||
You must add your API_KEY to your configuration by adding a file "voicerss.cfg" to the services folder, with this entry:
|
||||
|
||||
```
|
||||
apiKey=1234567890
|
||||
|
@ -51,7 +52,8 @@ It actually supports only one voice: "voicerss:default", which is configured to
|
|||
|
||||
The VoiceRSS extension does cache audio files from previous requests, to reduce traffic, improve performance, reduce number of requests and provide same time offline capability.
|
||||
|
||||
For convenience, there is a tool where the audio cache can be generated in advance, to have a prefilled cache when starting this extension. You have to copy the generated data to your userdata/voicerss/cache folder.
|
||||
For convenience, there is a tool where the audio cache can be generated in advance, to have a prefilled cache when starting this extension.
|
||||
You have to copy the generated data to your userdata/voicerss/cache folder.
|
||||
|
||||
Synopsis of this tool:
|
||||
|
||||
|
@ -70,6 +72,6 @@ Sample: java org.openhab.voice.voicerss.tool.CreateTTSCache --api-key 1234567890
|
|||
|
||||
## Open Issues
|
||||
|
||||
* add all media formats
|
||||
* add all supported languages
|
||||
* do not log API-Key in plain text
|
||||
* add all media formats
|
||||
* add all supported languages
|
||||
* do not log API-Key in plain text
|
||||
|
|
|
@ -18,12 +18,13 @@ PowerOutlet,"Small devices to be plugged into a power socket in a wall which sti
|
|||
Projector,"Devices that project a picture somewhere",projector.png
|
||||
RadiatorControl,"Controls on radiators used to heat up rooms",
|
||||
Receiver,"Audio/Video receivers, i.e. radio receivers, satelite or cable receivers, recorders, etc.",receiver.png
|
||||
RemoteControl,"Any portable or hand-held device that controls the status of something, e.g. remote control, keyfob etc."
|
||||
Screen,"Devices that are able to show a picture",screen.png
|
||||
Sensor,"Device used to measure something",
|
||||
Siren,"Siren used by Alarm systems",siren.png
|
||||
SmokeDetector,"Smoke detectors",
|
||||
Speaker,"Devices that are able to play sounds",
|
||||
WallSwitch,"Any device attached to the wall that controls a binary status of something, for ex. a light switch",wallswitch.png
|
||||
WallSwitch,"Any device attached to the wall that controls the status of something, for ex. a light switch, dimmer",wallswitch.png
|
||||
WebService,"Account with credentials for a website",
|
||||
Window,"Window",window.png
|
||||
WhiteGood,"Devices that look like Waschingmachines, Dishwashers, Dryers, Fridges, Ovens, etc.",whitegood.png
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 21.
|
|
@ -20,7 +20,7 @@ The app follows the basic principles of the other openHAB UIs, like Basic UI, an
|
|||
## Features
|
||||
|
||||
* Control your openHAB server and/or [openHAB Cloud instance](https://github.com/openhab/openhab-cloud), e.g., an account with [myopenHAB](http://www.myopenhab.org/)
|
||||
* Receive notifications through an openHAB Cloud connection, [read more…](http://docs.openhab.org/addons/actions.html)
|
||||
* Receive notifications through an openHAB Cloud connection, [read more](https://docs.openhab.org/addons/actions.html#cloud-notification-actions)
|
||||
* Change items via NFC tags
|
||||
* Send voice commands to openHAB
|
||||
* Supports wall mounted tablets
|
||||
|
@ -33,31 +33,27 @@ The app follows the basic principles of the other openHAB UIs, like Basic UI, an
|
|||
## Getting Started
|
||||
|
||||
When first installed the app is in "Demo Mode".
|
||||
To connect to your own openHAB server, first navigate into the Settings menu and uncheck the "Demo Mode" option.
|
||||
To connect to your own openHAB server, navigate to the Settings menu and uncheck the "Demo Mode" option.
|
||||
Normally, after unchecking the Demo Mode, the app will be able to use multicast DNS to auto-detect your openHAB server if it is on the same network.
|
||||
|
||||
You also have the option to manually set the server URL in the settings.
|
||||
|
||||
**Local server settings:**
|
||||
Please enter the base URL to your openHAB server as you would enter it in the browser to reach the openHAB dashboard.
|
||||
|
||||
**Remote server settings:**
|
||||
If you want to use openHAB cloud, please enter URL, user and password of you cloud instance here.
|
||||
Please make sure to [secure this connection](http://docs.openhab.org/installation/security.html).
|
||||
|
||||
The URL might look like one of the following examples:
|
||||
The URL field(s) might look like one of the following examples:
|
||||
|
||||
* IP address: `http://192.168.1.3:8080`
|
||||
* Local DNS name: `http://openhabianpi:8080` respectively `http://openhabianpi.local:8080` (depending on your network)
|
||||
* Local hostname: `http://openhabianpi:8080` (depending on your network the suffix `.local` needs to be added to the hostname)
|
||||
* Remote domain name: `https://home.myopenhab.org` for an openHAB cloud account with [myopenHAB](http://www.myopenhab.org/)
|
||||
|
||||
Once the URL is set correctly, the display of the app will be determined by the sitemaps defined on your server.
|
||||
**Local server settings:**
|
||||
Please enter the base URL of your openHAB server, as you would enter it in the browser to reach the openHAB dashboard.
|
||||
|
||||
The option to set a "Remote URL" allows the app to be used when you are away from home.
|
||||
**Remote server settings:**
|
||||
If your openHAB instance is reachable via a public address/domain from outside your home network, these settings will be used when the local connection is not successful.
|
||||
Make sure to secure this connection against unauthorized access.
|
||||
There are a number of strategies available to provide [secure remote access]({{base}}/installation/security.html) to your openHAB server.
|
||||
|
||||
## Permanent Deployment
|
||||
|
||||
If you want to use openHAB Android on a wall mounted tablet, go to settings and tick `Disable display timer` and `Fullscreen`.
|
||||
If you want to use openHAB Android on a wall mounted tablet, go to settings and select `Disable display timer` and `Fullscreen`.
|
||||
|
||||
## Help and Technical Details
|
||||
|
||||
|
|
|
@ -6,29 +6,46 @@ layout: documentation
|
|||
|
||||
# Concepts
|
||||
|
||||
Eclipse SmartHome strictly differentiates between the physical view and the functional view on the system.
|
||||
While the physical view is required for setup, configuration, troubleshooting, etc., the functional side covers the information that matter to applications, such as user interfaces and automation logic.
|
||||
When first thinking about your home automation system, it may be helpful to bear in mind that there are two ways of thinking about or viewing your system; the physical view and the functional view.
|
||||
|
||||
## Things, Channels, Items and Links
|
||||
The physical view will be familiar to you.
|
||||
This view focuses on the devices in your system, the connections between these devices (e.g. wires, Z-Wave, WiFi hardware), and other physical aspects of the system.
|
||||
|
||||
**Things** are the entities that can be physically added to a system and which can potentially provide many functionalities at once. It is important to note that things do not have to be devices, but they can also represent a web service or any other manageable source of information and functionality.
|
||||
Things provide their functionality through a set of **Channels**. Channels are "passive" and can be regarded as a declaration of a Thing, what it can offer. It is up to the individual setup, which of the Channels are actively used through Items (see below).
|
||||
The functional view might be a new concept for you.
|
||||
The functional view focuses on how information about the devices, connections, and so on, is represented in user interfaces.
|
||||
The functional view includes focusing on how rules effect representations of physical devices in software.
|
||||
Perhaps most important to you, the functional view focuses on how an action in a user interface affects the software associated with the physical device it represents.
|
||||
|
||||
**Items** represent (fine-grained) functionality that is used by applications - as user interfaces or automation logic. Items have a state and they can receive commands.
|
||||
It is a bit of an over-simplification, but you can think of the physical view as being a view of the 'real world', and the functional view being a view of the 'software world'.
|
||||
|
||||
The glue between Things and Items are **Links**. Links are associations between exactly one Thing Channel and one Item.
|
||||
If a Channel is linked to an Item, it is "enabled", which means that the functionality that the Item represents is handled through the given Channel.
|
||||
Channels can be linked to multiple Items and Items can be linked to multiple Channels.
|
||||
## Things, Channels, Bindings, Items and Links
|
||||
|
||||
To illustrate these concepts, take a two-channel actuator that controls two lights:
|
||||
**Things** are entities that can be physically added to a system.
|
||||
Things may provide more than one function (for example, a Z-Wave multi-sensor may provide a motion detector and also measure room temperature).
|
||||
Things do not have to be physical devices; they can also represent a web service or any other manageable source of information and functionality.
|
||||
|
||||
Things expose their capabilities through **Channels**.
|
||||
Whether an installation takes advantage of a particular capability reflected by a Channel depends on whether it has been configured to do so.
|
||||
When you configure your system, you do not necessarily have to use every capability offered by a Thing.
|
||||
You can find out what Channels are available for a Thing by looking at the documentation of the Thing's Binding.
|
||||
|
||||
**Bindings** can be thought of as software adapters, making Things available to your home automation system.
|
||||
They are add-ons that provide a way to link Items to physical devices.
|
||||
They also abstract away the specific communications requirements of that device so that it may be treated more generically by the framework.
|
||||
|
||||
**Items** represent capabilities that can be used by applications, either in user interfaces or in automation logic.
|
||||
Items have a **State** and they may receive commands.
|
||||
|
||||
The glue between Things and Items are **Links**.
|
||||
A Link is an association between exactly one Channel and one Item.
|
||||
If a Channel is linked to an Item, it is "enabled", which means that the capability the Item represents is accessible through that Channel.
|
||||
Channels may be linked to multiple Items and Items may be linked to multiple Channels.
|
||||
|
||||
To illustrate these concepts, consider the example below of a two-channel actuator that controls two lights:
|
||||
|
||||
![](images/thing-devices-1.png)
|
||||
|
||||
The actuator is the _Thing_. This might be installed in the electrical cabinet, it has a physical address and needs to be setup and configured in order to be used.
|
||||
The user is instead interested in the two lights, which are located at different locations in his home. These lights are the desired functionality, thus the _Items_ and they are linked to the _Channels_ of the actuator.
|
||||
A _Link_ can be regarded like a physical wire in this example.
|
||||
|
||||
|
||||
|
||||
|
||||
The actuator is a Thing that might be installed in an electrical cabinet.
|
||||
It has a physical address and it must be configured in order to be used (remember the physical view introduced at the beginning of this article).
|
||||
|
||||
In order for the user to control the two lights, he or she access the capability of the actuator Thing (turning on and off two separate lights) through two Channels, that are Linked to two switch Items presented to the user through a user interface.
|
||||
|
|
|
@ -28,11 +28,43 @@ The following item types are currently available (alphabetical order):
|
|||
| String | Stores texts | String |
|
||||
| Switch | Typically used for lights (on/off) | OnOff |
|
||||
|
||||
Group Items can derive their own state depending on their member items.
|
||||
## Group Items
|
||||
|
||||
- AVG displays the average of the item states in the group.
|
||||
- OR displays an OR of the group, typically used to display whether any item in a group has been set.
|
||||
- other aggregations: AND, SUM, MIN, MAX, NAND, NOR
|
||||
Group items collect other items into groups.
|
||||
Group items can themselves be members of other group items.
|
||||
Cyclic membership is not forbidden but strongly not recommended.
|
||||
User interfaces might display group items as single entries and provide navigation to its members.
|
||||
|
||||
Example for a Group item as a simple collection of other items:
|
||||
```
|
||||
Group groundFloor
|
||||
Switch kitchenLight (groundFloor)
|
||||
Switch livingroomLight (groundFloor)
|
||||
```
|
||||
|
||||
### Derive Group State from Member Items
|
||||
|
||||
Group items can derive their own state from their member items.
|
||||
To derive a state the group item must be constructed using a base item and a group function.
|
||||
When calculating the state, group functions recursively traverse the group's members and also take members of subgroups into account.
|
||||
If a subgroup however defines a state on its own (having base item & group function set) traversal stops and the state of the subgroup member is taken.
|
||||
|
||||
Available group functions:
|
||||
|
||||
| Function | Parameters | Base Item | Description |
|
||||
|--------------------|-------------------------------|---------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| EQUALITY | - | \<all\> | Sets the state of the members if all have equal state. Otherwise UNDEF is set. |
|
||||
| AND, OR, NAND, NOR | <activeState>, <passiveState> | \<all\> (must match active & passive state) | Sets the \<activeState\>, if the member state \<activeState\> evaluates to `true` under the boolean term. Otherwise the \<passiveState\> is set.|
|
||||
| SUM, AVG, MIN, MAX | - | Number | Sets the state according to the arithmetic function over all member states. |
|
||||
| COUNT | <regular expression> | Number | Sets the state to the number of members matching the given regular expression with their states. |
|
||||
|
||||
|
||||
Examples for derived states on group items when declared in the item DSL:
|
||||
|
||||
- `Group:Number:COUNT(".*")` counts all members of the group matching the given regular expression, here any character or state (simply count all members).
|
||||
- `Group:Number:AVG` calculates the average value over all member states which can be interpreted as `DecimalTypes`.
|
||||
- `Group:Switch:OR(ON,OFF)` sets the group state to `ON` if any of its members has the state `ON`, `OFF` if all are off.
|
||||
- `Group:Switch:AND(ON,OFF)` sets the group state to `ON` if all of its members have the state `ON`, `OFF` if any of the group members has a different state than `ON`.
|
||||
|
||||
## State and Command Type Formatting
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
---
|
||||
layout: documentation
|
||||
title: HABPanel
|
||||
source: https://github.com/openhab/org.openhab.ui.habpanel/blob/master/doc/habpanel.md
|
||||
---
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
<!-- Attention authors: If you want to improve or enhance this article, please go to: -->
|
||||
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/issues -->
|
||||
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/blob/master/docs/habpanel.md -->
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
# Designing dashboard interfaces with HABPanel
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
---
|
||||
layout: documentation
|
||||
title: openHABian
|
||||
source: https://github.com/openhab/openhabian/blob/master/docs/openhabian.md
|
||||
---
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
<!-- Attention authors: If you want to improve or enhance this article, please go to: -->
|
||||
<!-- * https://github.com/openhab/openhabian/issues -->
|
||||
<!-- * https://github.com/openhab/openhabian/blob/master/docs/openhabian.md -->
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
# openHABian - Hassle-free openHAB Setup
|
||||
|
||||
|
|
Loading…
Reference in New Issue