Updated external content (Jenkins build 423)

pull/1131/head
openHAB Build Server 2019-12-13 04:34:46 +00:00
parent 2b219e32e7
commit 380564bcd0
11 changed files with 334 additions and 280 deletions

View File

@ -28,34 +28,34 @@ For example, in the configuration `Kitchen_Player.id=de:ad:be:ef:12:34` would be
### Standard Actions ### Standard Actions
* `squeezeboxPower(String playerId, boolean power)` - `squeezeboxPower(String playerId, boolean power)`
* `squeezeboxMute(String playerId, boolean mute)` - `squeezeboxMute(String playerId, boolean mute)`
* `squeezeboxVolume(String playerId, int volume)` - `squeezeboxVolume(String playerId, int volume)`
* `squeezeboxPlay(String playerId)` - `squeezeboxPlay(String playerId)`
* `squeezeboxPause(String playerId)` - `squeezeboxPause(String playerId)`
* `squeezeboxStop(String playerId)` - `squeezeboxStop(String playerId)`
* `squeezeboxNext(String playerId)` - `squeezeboxNext(String playerId)`
* `squeezeboxPrev(String playerId)` - `squeezeboxPrev(String playerId)`
### Actions to play a URL on your Squeezebox devices ### Actions to play a URL on your Squeezebox devices
For example, start a radio stream when you wake up in the morning. 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)`: 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, int volume)`: Plays the URL on the specified player at the specified volume
### Actions to speak a message on your Squeezebox devices ### Actions to speak a message on your Squeezebox devices
* `squeezeboxSpeak(String playerId, String message)` - `squeezeboxSpeak(String playerId, String message)`
* `squeezeboxSpeak(String playerId, String message, int volume)` - `squeezeboxSpeak(String playerId, String message, int volume)`
* `squeezeboxSpeak(String playerId, String message, int volume, boolean resumePlayback)` - `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. 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/>. 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 You can check you have the url and api working by pasting it into a browser with some text at the end
``` ```java
https://api.voicerss.org/?key=YOUR_KEY_GOES_HERE&f=44khz_16bit_stereo&hl=en-gb&src=This is Major Tom to Ground Control https://api.voicerss.org/?key=YOUR_KEY_GOES_HERE&f=44khz_16bit_stereo&hl=en-gb&src=This is Major Tom to Ground Control
``` ```
@ -63,19 +63,19 @@ Then you can use the action in your rules however you want.
## Examples ## Examples
### Send an announcement to the specified player using the current volume Send announcement to specified player using current volume
```java ```java
squeezeboxSpeak("Kitchen_Player", "This is Major Tom to Ground Control") squeezeboxSpeak("Kitchen_Player", "This is Major Tom to Ground Control")
``` ```
### Send an announcement to the specified player at the specified volume Send announcement to specified player at specified volume
```java ```java
squeezeboxSpeak("Kitchen_Player", "I'm stepping through the door", 100) squeezeboxSpeak("Kitchen_Player", "I'm stepping through the door", 100)
``` ```
### Send an announcement to the specified player at the specified volume Send announcement to specified player at specified volume
If `resumePlayback=true` resume to actual playlist after finishing message. If `resumePlayback=true` resume to actual playlist after finishing message.
@ -85,7 +85,7 @@ You might have to tweak some settings on your Squeezebox server and player regar
squeezeboxSpeak("Kitchen_Player", "And I'm floating in a most peculiar way", 100, false) squeezeboxSpeak("Kitchen_Player", "And I'm floating in a most peculiar way", 100, false)
``` ```
### Generating dynamic strings Generating dynamic strings
```java ```java
squeezeboxSpeak("Kitchen_Player"," temperature outside is " + Weather_Temperature.state.format("%d") + " degrees celsius",75,true) squeezeboxSpeak("Kitchen_Player"," temperature outside is " + Weather_Temperature.state.format("%d") + " degrees celsius",75,true)

View File

@ -53,11 +53,14 @@ Used to execute commands through an event, triggered at the start or the end of
The event summary is free selectable. The event description must fullfill special syntax. The event summary is free selectable. The event description must fullfill special syntax.
Syntax is `<BEGIN|END>:<Item-Name>:<Command>`. Syntax is `<BEGIN|END>:<Item-Name>:<Command>`.
Each item trigger must be a single line without linebreaks. Every line which starts with "BEGIN" will be executed at the begin of the event. Each line with an "END" will be executed at the end of the event. You can define multiple lines, which must not be ordered. For example: Each item trigger must be a single line without linebreaks. Every line which starts with "BEGIN" will be executed at the begin of the event. Each line with an "END" will be executed at the end of the event. You can define multiple lines, which must not be ordered. For example:
<pre>BEGIN:Heater_Livingroom:22
```
BEGIN:Heater_Livingroom:22
BEGIN:Heater_Corridor:22 BEGIN:Heater_Corridor:22
END:Heater_Livingroom:16 END:Heater_Livingroom:16
END:Heater_Corridor:16 END:Heater_Corridor:16
END:Notification_Dummy:Heizung heruntergefahren</pre> END:Notification_Dummy:Heizung heruntergefahren
```
Additionaly you can define an item to listen to upcoming changes of an item (which will be triggered through an event). Two types are available the command which will be set and the trigger time. Additionaly you can define an item to listen to upcoming changes of an item (which will be triggered through an event). Two types are available the command which will be set and the trigger time.
Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<VALUE|DATE>"` Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<VALUE|DATE>"`
@ -65,7 +68,7 @@ Furthermore a switch can be defined to disable the automatic execution (through
Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<DISABLE>"` Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<DISABLE>"`
openhab.cfg openhab.cfg
`caldavCommand:readCalendars=<calendar-id>` (multiple calendars can be seperated by commas) `caldavCommand:readCalendars=<calendar-id>` (multiple calendars can be separated by commas)
## Description of type ## Description of type
* VALUE: the value which will send to the command (can be of any type, depends on command in event and accepted commands of item) * VALUE: the value which will send to the command (can be of any type, depends on command in event and accepted commands of item)
@ -74,7 +77,11 @@ openhab.cfg
## Default item ## Default item
Since 1.9.0, the CalDAV Command binding also supports a default item which may optionally be added to openhab.cfg: Since 1.9.0, the CalDAV Command binding also supports a default item which may optionally be added to openhab.cfg:
<pre>caldavCommand:defaultItemOnBegin=&lt;item&gt;</pre>
```
caldavCommand:defaultItemOnBegin=<item>
```
If the command calendar contains items whose description does not follow the `BEGIN/END:<item>:<value>` pattern AND a default item is specified, then the respective lines are interpreted as `BEGIN:<defaultItemOnBegin>:<line>` If the command calendar contains items whose description does not follow the `BEGIN/END:<item>:<value>` pattern AND a default item is specified, then the respective lines are interpreted as `BEGIN:<defaultItemOnBegin>:<line>`
This is really nice to use in combination with a rule such as used for [voice control](https://github.com/openhab/openhab/wiki/Controlling-openHAB-with-your-voice) - set the default item to: `caldavCommand:defaultItemOnBegin=VoiceCommand` This is really nice to use in combination with a rule such as used for [voice control](https://github.com/openhab/openhab/wiki/Controlling-openHAB-with-your-voice) - set the default item to: `caldavCommand:defaultItemOnBegin=VoiceCommand`
@ -96,8 +103,8 @@ Binding file: org.openhab.binding.caldav-personal-version.jar
* Used to show upcoming/active events in openhab. * Used to show upcoming/active events in openhab.
### openhab.cfg ### openhab.cfg
* `caldavPersonal:usedCalendars=<calendar-id>` (multiple calendars can be seperated by commas) * `caldavPersonal:usedCalendars=<calendar-id>` (multiple calendars can be separated by commas)
* `caldavPersonal:homeIdentifiers=<values seperated by commans>` (if one of these identifiers can be found inside the place of the event, this event will not be used for presence) * `caldavPersonal:homeIdentifiers=<values separated by commans>` (if one of these identifiers can be found inside the place of the event, this event will not be used for presence)
### items ### items
* `caldavPersonal="calendar:'<calendar-ids, comma separated>' type:'<UPCOMING|ACTIVE|EVENT>' eventNr:'<event-nr, first one is 1>' value:'<NAME|DESCRIPTION|PLACE|START|END|TIME>"'` * `caldavPersonal="calendar:'<calendar-ids, comma separated>' type:'<UPCOMING|ACTIVE|EVENT>' eventNr:'<event-nr, first one is 1>' value:'<NAME|DESCRIPTION|PLACE|START|END|TIME>"'`
@ -140,24 +147,34 @@ You've got the option to show just specific events.
# Tested calDAV Servers with examples # Tested calDAV Servers with examples
As far as i know are these As far as i know are these
## ownCloud (my reference implementation) ## ownCloud (my reference implementation)
caldavio:openhab_tasks:url=http://server.de/owncloud/remote.php/caldav/calendars/openHAB/tasks
caldavio:openhab_tasks:username=username ```
caldavio:openhab_tasks:password=password caldavio:openhab_tasks:url=http://server.de/owncloud/remote.php/caldav/calendars/openHAB/tasks
caldavio:openhab_tasks:reloadInterval=10 caldavio:openhab_tasks:username=username
caldavio:openhab_tasks:preloadTime=20000 caldavio:openhab_tasks:password=password
caldavio:openhab_tasks:reloadInterval=10
caldavio:openhab_tasks:preloadTime=20000
```
## baikal ## baikal
caldavio:kalendername:url=https://server_ip/baikal/cal.php/calendars/username/kalender_id
caldavio:kalendername:username=username ```
caldavio:kalendername:password=password caldavio:kalendername:url=https://server_ip/baikal/cal.php/calendars/username/kalender_id
caldavio:kalendername:reloadInterval=10 caldavio:kalendername:username=username
caldavio:kalendername:preloadTime=20000 caldavio:kalendername:password=password
caldavio:kalendername:reloadInterval=10
caldavio:kalendername:preloadTime=20000
```
## google (performance issue, because the timestamp of files is not correct) ## google (performance issue, because the timestamp of files is not correct)
caldavio:openhab_tasks:url=https://www.google.com/calendar/dav/email@gmail.com/events
caldavio:openhab_tasks:username=email@gmail.com ```
caldavio:openhab_tasks:password=password caldavio:openhab_tasks:url=https://www.google.com/calendar/dav/email@gmail.com/events
caldavio:openhab_tasks:reloadInterval=10 caldavio:openhab_tasks:username=email@gmail.com
caldavio:openhab_tasks:preloadTime=20000 caldavio:openhab_tasks:password=password
## (zarafa?) caldavio:openhab_tasks:reloadInterval=10
caldavio:openhab_tasks:preloadTime=20000
```
## Locate URL ## Locate URL
This site may help to find the Calendar URL (i.e. Google Shared Calendars): This site may help to find the Calendar URL (i.e. Google Shared Calendars):
@ -167,9 +184,13 @@ http://www.ict4g.net/adolfo/notes/2015/07/04/determingurlofcaldav.html
If 2-factor authentication has been enabled, create an application password using https://support.google.com/accounts/answer/185833?hl=en Use this password instead of your account password. If 2-factor authentication has been enabled, create an application password using https://support.google.com/accounts/answer/185833?hl=en Use this password instead of your account password.
# Persistence # Persistence
caldav-persistence:calendarId=history
caldav-persistence:duration=10 ```
caldav-persistence:singleEvents=false caldav-persistence:calendarId=history
caldav-persistence:duration=10
caldav-persistence:singleEvents=false
```
Saves the events to the calendar named history with a length of 10 minutes Saves the events to the calendar named history with a length of 10 minutes
# Presence Simulation # Presence Simulation
@ -192,60 +213,57 @@ In every case, the binding org.openhab.io.caldav-<version>.jar is needed. For ex
openhab.cfg openhab.cfg
################################ CalDav Binding ####################################### ```
# ################################ CalDav Binding #######################################
#caldavio:<calendar-id>:url=
#caldavio:<calendar-id>:username=
#caldavio:<calendar-id>:password=
#caldavio:<calendar-id>:reloadInterval=<minutes>
#caldavio:<calendar-id>:preloadTime=<minutes>
#caldavio:timeZone=<e. g. Europe/Berlin>
# Dienstlicher/privater Kalender # Dienstlicher/privater Kalender
caldavio:dienstlich:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/pers%C3%B6nlich caldavio:dienstlich:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/pers%C3%B6nlich
caldavio:dienstlich:username=user caldavio:dienstlich:username=user
caldavio:dienstlich:password=password caldavio:dienstlich:password=password
caldavio:dienstlich:reloadInterval=60 caldavio:dienstlich:reloadInterval=60
caldavio:dienstlich:preloadTime=2880 caldavio:dienstlich:preloadTime=2880
caldavio:timeZone=Europe/Berlin caldavio:timeZone=Europe/Berlin
# Müllkalender # Müllkalender
caldavio:muell:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/m%C3%BCll caldavio:muell:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/m%C3%BCll
caldavio:muell:username=user caldavio:muell:username=user
caldavio:muell:password=password caldavio:muell:password=password
caldavio:muell:reloadInterval=1440 caldavio:muell:reloadInterval=1440
caldavio:muell:preloadTime=2880 caldavio:muell:preloadTime=2880
caldavio:timeZone=Europe/Berlin caldavio:timeZone=Europe/Berlin
# Command-kalender`` # Command-kalender
caldavio:command:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/command caldavio:command:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/command
caldavio:command:username=user caldavio:command:username=user
caldavio:command:password=password caldavio:command:password=password
caldavio:command:reloadInterval=10 caldavio:command:reloadInterval=10
caldavio:command:preloadTime=1440 caldavio:command:preloadTime=1440
caldavio:timeZone=Europe/Berlin caldavio:timeZone=Europe/Berlin
# Additionally needed binding: org.openhab.binding.caldav-command-<version>.jar # Additionally needed binding: org.openhab.binding.caldav-command-<version>.jar
# used to execute commands by a triggered event # used to execute commands by a triggered event
# multiple calendars (calerdar-id) can be seperated by commas # multiple calendars (calerdar-id) can be separated by commas
#caldavCommand:readCalendars=<calendar-id> #caldavCommand:readCalendars=<calendar-id>
caldavCommand:readCalendars=command caldavCommand:readCalendars=command
# Additionally needed binding: org.openhab.binding.caldav-personal-<version>.jar # Additionally needed binding: org.openhab.binding.caldav-personal-<version>.jar
# used to record and simulate presence and to show upcoming/active events # used to record and simulate presence and to show upcoming/active events
# multiple calendars (calerdar-id) can be seperated by commas # multiple calendars (calerdar-id) can be separated by commas
#caldavPersonal:usedCalendars=<calendar-id> #caldavPersonal:usedCalendars=<calendar-id>
caldavPersonal:usedCalendars=dienstlich,muell caldavPersonal:usedCalendars=dienstlich
# If one of these identifiers can be found inside the place of the event, # If one of these identifiers can be found inside the place of the event,
# this event will not be used for presence # this event will not be used for presence
#caldavPersonal:homeIdentifiers=<values seperated by commas> #caldavPersonal:homeIdentifiers=<values separated by commas>
```
The items-File: The items-File:
String OfficeCalName0 "Termin jetzt [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events ```
DateTime OfficeCalTime0 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events String OfficeCalName0 "Termin jetzt [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
String OfficeCalName1 "nächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:NAME" } DateTime OfficeCalTime0 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
DateTime OfficeCalTime1 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:START" } String OfficeCalName1 "nächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:NAME" }
String OfficeCalName2 "übernächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:NAME" } DateTime OfficeCalTime1 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:START" }
DateTime OfficeCalTime2 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:START" } String OfficeCalName2 "übernächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:NAME" }
DateTime OfficeCalTime2 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:START" }
```

View File

@ -53,11 +53,14 @@ Used to execute commands through an event, triggered at the start or the end of
The event summary is free selectable. The event description must fullfill special syntax. The event summary is free selectable. The event description must fullfill special syntax.
Syntax is `<BEGIN|END>:<Item-Name>:<Command>`. Syntax is `<BEGIN|END>:<Item-Name>:<Command>`.
Each item trigger must be a single line without linebreaks. Every line which starts with "BEGIN" will be executed at the begin of the event. Each line with an "END" will be executed at the end of the event. You can define multiple lines, which must not be ordered. For example: Each item trigger must be a single line without linebreaks. Every line which starts with "BEGIN" will be executed at the begin of the event. Each line with an "END" will be executed at the end of the event. You can define multiple lines, which must not be ordered. For example:
<pre>BEGIN:Heater_Livingroom:22
```
BEGIN:Heater_Livingroom:22
BEGIN:Heater_Corridor:22 BEGIN:Heater_Corridor:22
END:Heater_Livingroom:16 END:Heater_Livingroom:16
END:Heater_Corridor:16 END:Heater_Corridor:16
END:Notification_Dummy:Heizung heruntergefahren</pre> END:Notification_Dummy:Heizung heruntergefahren
```
Additionaly you can define an item to listen to upcoming changes of an item (which will be triggered through an event). Two types are available the command which will be set and the trigger time. Additionaly you can define an item to listen to upcoming changes of an item (which will be triggered through an event). Two types are available the command which will be set and the trigger time.
Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<VALUE|DATE>"` Syntax is `caldavCommand="itemName:<Item-Name to listen to> type:<VALUE|DATE>"`
@ -74,7 +77,10 @@ openhab.cfg
## Default item ## Default item
Since 1.9.0, the CalDAV Command binding also supports a default item which may optionally be added to openhab.cfg: Since 1.9.0, the CalDAV Command binding also supports a default item which may optionally be added to openhab.cfg:
<pre>caldavCommand:defaultItemOnBegin=&lt;item&gt;</pre>
```
caldavCommand:defaultItemOnBegin=<item>
```
If the command calendar contains items whose description does not follow the `BEGIN/END:<item>:<value>` pattern AND a default item is specified, then the respective lines are interpreted as `BEGIN:<defaultItemOnBegin>:<line>` If the command calendar contains items whose description does not follow the `BEGIN/END:<item>:<value>` pattern AND a default item is specified, then the respective lines are interpreted as `BEGIN:<defaultItemOnBegin>:<line>`
This is really nice to use in combination with a rule such as used for [voice control](https://github.com/openhab/openhab/wiki/Controlling-openHAB-with-your-voice) - set the default item to: `caldavCommand:defaultItemOnBegin=VoiceCommand` This is really nice to use in combination with a rule such as used for [voice control](https://github.com/openhab/openhab/wiki/Controlling-openHAB-with-your-voice) - set the default item to: `caldavCommand:defaultItemOnBegin=VoiceCommand`
@ -132,31 +138,52 @@ You've got the option to show just specific events.
* NAMEANDTIME: name and start- to end time (itemtype:String) * NAMEANDTIME: name and start- to end time (itemtype:String)
# Logging # Logging
* `<logger name="org.openhab.binding.caldav_personal" level="TRACE"/>` * `<logger name="org.openhab.binding.caldav_personal" level="TRACE"/>`
* `<logger name="org.openhab.binding.caldav_command" level="TRACE"/>` * `<logger name="org.openhab.binding.caldav_command" level="TRACE"/>`
* `<logger name="org.openhab.io.caldav" level="TRACE"/>` * `<logger name="org.openhab.io.caldav" level="TRACE"/>`
# Tested calDAV Servers with examples # Tested calDAV Servers with Examples
As far as i know are these
## ownCloud (my reference implementation) ## ownCloud (my reference implementation)
caldavio:openhab_tasks:url=http://server.de/owncloud/remote.php/caldav/calendars/openHAB/tasks
caldavio:openhab_tasks:username=username ```
caldavio:openhab_tasks:password=password caldavio:openhab_tasks:url=http://server.de/owncloud/remote.php/caldav/calendars/openHAB/tasks
caldavio:openhab_tasks:reloadInterval=10 caldavio:openhab_tasks:username=username
caldavio:openhab_tasks:preloadTime=20000 caldavio:openhab_tasks:password=password
caldavio:openhab_tasks:reloadInterval=10
caldavio:openhab_tasks:preloadTime=20000
```
## baikal ## baikal
caldavio:kalendername:url=https://server_ip/baikal/cal.php/calendars/username/kalender_id
caldavio:kalendername:username=username ```
caldavio:kalendername:password=password caldavio:kalendername:url=https://server_ip/baikal/cal.php/calendars/username/kalender_id
caldavio:kalendername:reloadInterval=10 caldavio:kalendername:username=username
caldavio:kalendername:preloadTime=20000 caldavio:kalendername:password=password
caldavio:kalendername:reloadInterval=10
caldavio:kalendername:preloadTime=20000
```
## google (performance issue, because the timestamp of files is not correct) ## google (performance issue, because the timestamp of files is not correct)
caldavio:openhab_tasks:url=https://www.google.com/calendar/dav/email@gmail.com/events
caldavio:openhab_tasks:username=email@gmail.com ```
caldavio:openhab_tasks:password=password caldavio:openhab_tasks:url=https://www.google.com/calendar/dav/email@gmail.com/events
caldavio:openhab_tasks:reloadInterval=10 caldavio:openhab_tasks:username=email@gmail.com
caldavio:openhab_tasks:preloadTime=20000 caldavio:openhab_tasks:password=password
## (zarafa?) caldavio:openhab_tasks:reloadInterval=10
caldavio:openhab_tasks:preloadTime=20000
```
## Synology Calendar
```
caldavio:openhab_tasks:url=http://server_ip:server_port/homes/username/calendar_name/
caldavio:openhab_tasks:username=username
caldavio:openhab_tasks:password=password
caldavio:openhab_tasks:reloadInterval=10
caldavio:openhab_tasks:preloadTime=20000
```
## Locate URL ## Locate URL
This site may help to find the Calendar URL (i.e. Google Shared Calendars): This site may help to find the Calendar URL (i.e. Google Shared Calendars):
@ -166,16 +193,20 @@ http://www.ict4g.net/adolfo/notes/2015/07/04/determingurlofcaldav.html
If 2-factor authentication has been enabled, create an application password using https://support.google.com/accounts/answer/185833?hl=en Use this password instead of your account password. If 2-factor authentication has been enabled, create an application password using https://support.google.com/accounts/answer/185833?hl=en Use this password instead of your account password.
# Persistence # Persistence
caldav-persistence:calendarId=history
caldav-persistence:duration=10 ```
caldav-persistence:singleEvents=false caldav-persistence:calendarId=history
caldav-persistence:duration=10
caldav-persistence:singleEvents=false
```
Saves the events to the calendar named history with a length of 10 minutes Saves the events to the calendar named history with a length of 10 minutes
# Presence Simulation # Presence Simulation
You can simulate presence with this binding. You can simulate presence with this binding.
To do this you have to To do this you have to
* enable the caldav-command binding * enable the caldav-command binding
* enbale the caldav-persistence binding * enable the caldav-persistence binding
* configure the Items you need for simulation for caldav persistence * configure the Items you need for simulation for caldav persistence
* configure the caldav persistence to singleEvents=true and an offset you want. One week or two make sense. * configure the caldav persistence to singleEvents=true and an offset you want. One week or two make sense.
* keep openHAB running for a week or more and the persistent events will occur again in the future regarding the offset you set up * keep openHAB running for a week or more and the persistent events will occur again in the future regarding the offset you set up
@ -191,60 +222,49 @@ In every case, the binding org.openhab.io.caldav-<version>.jar is needed. For ex
openhab.cfg openhab.cfg
################################ CalDav Binding ####################################### ```
# ################################ CalDav Binding #######################################
#caldavio:<calendar-id>:url=
#caldavio:<calendar-id>:username=
#caldavio:<calendar-id>:password=
#caldavio:<calendar-id>:reloadInterval=<minutes>
#caldavio:<calendar-id>:preloadTime=<minutes>
#caldavio:timeZone=<e. g. Europe/Berlin>
# Dienstlicher/privater Kalender # Dienstlicher/privater Kalender
caldavio:dienstlich:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/pers%C3%B6nlich caldavio:dienstlich:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/pers%C3%B6nlich
caldavio:dienstlich:username=user caldavio:dienstlich:username=user
caldavio:dienstlich:password=password caldavio:dienstlich:password=password
caldavio:dienstlich:reloadInterval=60 caldavio:dienstlich:reloadInterval=60
caldavio:dienstlich:preloadTime=2880 caldavio:dienstlich:preloadTime=2880
caldavio:timeZone=Europe/Berlin caldavio:timeZone=Europe/Berlin
# Müllkalender # Command-kalender
caldavio:muell:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/m%C3%BCll caldavio:command:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/command
caldavio:muell:username=user caldavio:command:username=user
caldavio:muell:password=password caldavio:command:password=password
caldavio:muell:reloadInterval=1440 caldavio:command:reloadInterval=10
caldavio:muell:preloadTime=2880 caldavio:command:preloadTime=1440
caldavio:timeZone=Europe/Berlin caldavio:timeZone=Europe/Berlin
# Command-kalender`` # Additionally needed binding: org.openhab.binding.caldav-command-<version>.jar
caldavio:command:url=http://192.168.2.5/owncloud/remote.php/caldav/calendars/user/command # used to execute commands by a triggered event
caldavio:command:username=user # multiple calendars (calerdar-id) can be seperated by commas
caldavio:command:password=password #caldavCommand:readCalendars=<calendar-id>
caldavio:command:reloadInterval=10 caldavCommand:readCalendars=command
caldavio:command:preloadTime=1440
caldavio:timeZone=Europe/Berlin
# Additionally needed binding: org.openhab.binding.caldav-command-<version>.jar # Additionally needed binding: org.openhab.binding.caldav-personal-<version>.jar
# used to execute commands by a triggered event # used to record and simulate presence and to show upcoming/active events
# multiple calendars (calerdar-id) can be seperated by commas # multiple calendars (calerdar-id) can be seperated by commas
#caldavCommand:readCalendars=<calendar-id> #caldavPersonal:usedCalendars=<calendar-id>
caldavCommand:readCalendars=command caldavPersonal:usedCalendars=dienstlich
# Additionally needed binding: org.openhab.binding.caldav-personal-<version>.jar # If one of these identifiers can be found inside the place of the event,
# used to record and simulate presence and to show upcoming/active events # this event will not be used for presence
# multiple calendars (calerdar-id) can be seperated by commas #caldavPersonal:homeIdentifiers=<values seperated by commas>
#caldavPersonal:usedCalendars=<calendar-id> ```
caldavPersonal:usedCalendars=dienstlich,muell
# If one of these identifiers can be found inside the place of the event,
# this event will not be used for presence
#caldavPersonal:homeIdentifiers=<values seperated by commas>
The items-File: The items-File:
String OfficeCalName0 "Termin jetzt [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events ```
DateTime OfficeCalTime0 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events String OfficeCalName0 "Termin jetzt [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:NAME" } //eventNr for concurrent events
String OfficeCalName1 "nächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:NAME" } DateTime OfficeCalTime0 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:ACTIVE eventNr:1 value:START" } //eventNr for concurrent events
DateTime OfficeCalTime1 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:START" } String OfficeCalName1 "nächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:NAME" }
String OfficeCalName2 "übernächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:NAME" } DateTime OfficeCalTime1 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:1 value:START" }
DateTime OfficeCalTime2 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:START" } String OfficeCalName2 "übernächster Termin [%s]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:NAME" }
DateTime OfficeCalTime2 "Beginn [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:dienstlich type:UPCOMING eventNr:2 value:START" }
```

View File

@ -55,44 +55,42 @@ Each item binding should have this format:
- COMPLETED - COMPLETED
- ALL - ALL
## Examples
- Number Print_Jobs_Queued "Unfinished print jobs" (FF_Office) { cups="MX-870#NOT_COMPLETED" }
- Number Print_Jobs_Completed "Completed print jobs" (FF_Office) { cups="http://127.0.0.1:631/printers/MX-870" }
### Example Use Case ### Example Use Case
The CUPS Binding can be used to switch on a printer if there are print jobs in the queue and switch it off if the queue is empty. The CUPS Binding can be used to switch on a printer if there are print jobs in the queue and switch it off if the queue is empty.
#### Items #### Items
Number Print_Jobs_Queued "Unfinished print jobs" (FF_Office) { cups="MX-870#NOT_COMPLETED" } ```
Switch Printer "Printer" Number Print_Jobs_Completed "Completed print jobs" (FF_Office) { cups="http://127.0.0.1:631/printers/MX-870" }
Number Print_Jobs_Queued "Unfinished print jobs" (FF_Office) { cups="MX-870#NOT_COMPLETED" }
Switch Printer "Printer"
```
#### Rules #### Rules
import org.openhab.model.script.actions.Timer ```
import org.openhab.model.script.actions.Timer
var Timer printerTimer = null
var Timer printerTimer = null
rule "CUPS-Printer Queue"
when rule "CUPS-Printer Queue"
Item Print_Jobs_Queued changed when
then Item Print_Jobs_Queued changed
if (Print_Jobs_Queued.state>0) { then
if (printerTimer!=null) { if (Print_Jobs_Queued.state>0) {
printerTimer.cancel if (printerTimer!=null) {
printerTimer=null printerTimer.cancel
} printerTimer=null
if (Printer.state==OFF) { }
sendCommand(Printer,ON) if (Printer.state==OFF) {
} Printer.sendCommand(ON)
} }
else if (Printer.state==ON) { }
printerTimer = createTimer(now.plusMinutes(5)) [| else if (Printer.state==ON) {
sendCommand(Printer,OFF) printerTimer = createTimer(now.plusMinutes(5)) [|
] Printer.sendCommand(OFF)
} ]
end }
end
```

View File

@ -56,40 +56,46 @@ Item bindings can be either inbound or outbound.
### Inbound (readonly) item bindings ### Inbound (readonly) item bindings
// the temperature/humidity at the indoor unit ```
Number DaikinTempIn "Temp Inside [%.1f °C]" { daikin="<name>:tempin" } // the temperature/humidity at the indoor unit
Number DaikinHumidityIn "Humidity Inside [%.1f %%]" { daikin="<name>:humidityin" } Number DaikinTempIn "Temp Inside [%.1f °C]" { daikin="<name>:tempin" }
Number DaikinHumidityIn "Humidity Inside [%.1f %%]" { daikin="<name>:humidityin" }
// the temperature at the outdoor unit
Number DaikinTempOut "Temp Outside [%.1f °C]" { daikin="<name>:tempout" }
```
// the temperature at the outdoor unit
Number DaikinTempOut "Temp Outside [%.1f °C]" { daikin="<name>:tempout" }
### Outbound (command) item bindings ### Outbound (command) item bindings
// power ```
Switch DaikinPower "Power" { daikin="<name>:power" } // power
Switch DaikinPower "Power" { daikin="<name>:power" }
// mode of operation - one of Auto/Dry/Cool/Heat/Fan/Night
Number DaikinMode "Mode [%.0f]" { daikin="<name>:mode" } // mode of operation - one of Auto/Dry/Cool/Heat/Fan/Night
Number DaikinMode "Mode [%.0f]" { daikin="<name>:mode" }
// temperature set point
Number DaikinTemp "Temp [%.0f °C]" { daikin="<name>:temp" } // temperature set point
Number DaikinTemp "Temp [%.0f °C]" { daikin="<name>:temp" }
// fan mode - one of Auto/F1/F2/F3/F4/F5
Number DaikinFan "Fan [%.0f]" { daikin="<name>:fan" } // fan mode - one of Auto/F1/F2/F3/F4/F5
Number DaikinFan "Fan [%.0f]" { daikin="<name>:fan" }
// swing mode - one of Off/UpDown
Number DaikinSwing "Swing [%.0f]" { daikin="<name>:swing" } // swing mode - one of Off/UpDown
Number DaikinSwing "Swing [%.0f]" { daikin="<name>:swing" }
// timer mode - one of Off-Off/Off-On/On-Off/On-On (start/end timers)
Number DaikinTimer "Timer [%.0f]" { daikin="<name>:timer" } // timer mode - one of Off-Off/Off-On/On-Off/On-On (start/end timers)
Number DaikinTimer "Timer [%.0f]" { daikin="<name>:timer" }
```
### Sitemap Examples ### Sitemap Examples
Text item=DaikinTempOut ```
Switch item=DaikinPower Text item=DaikinTempOut
Text item=DaikinTemp Switch item=DaikinPower
Text item=DaikinHumidityIn Text item=DaikinTemp
Switch item=DaikinMode mappings=[0="Auto", 2="Dry", 3="Cool", 4="Heat", 6="Fan"] Text item=DaikinHumidityIn
Setpoint item=DaikinTemp minValue="16" maxValue="30" step="1" Switch item=DaikinMode mappings=[0="Auto", 2="Dry", 3="Cool", 4="Heat", 6="Fan"]
Switch item=DaikinFan mappings=[0="Auto", 1="F1", 2="F2", 3="F3", 4="F4", 5="F5"] Setpoint item=DaikinTemp minValue="16" maxValue="30" step="1"
Switch item=DaikinSwing mappings=[0="Off", 1="Vertical", 2="Horizontal", 3="Hor/Vert"] Switch item=DaikinFan mappings=[0="Auto", 1="F1", 2="F2", 3="F3", 4="F4", 5="F5"]
Switch item=DaikinSwing mappings=[0="Off", 1="Vertical", 2="Horizontal", 3="Hor/Vert"]
```

View File

@ -41,7 +41,9 @@ These are mutually exclusive and both must not be simultaneously configured.
Item bindings should conform to this format: Item bindings should conform to this format:
davis="<value-key>" ```
davis="<value-key>"
```
The following table defines the allowable values for `<value-key>`. The following table defines the allowable values for `<value-key>`.
@ -86,47 +88,49 @@ The following table defines the allowable values for `<value-key>`.
## Examples ## Examples
String StationType "StationType: [%s]" { davis="station_type" } ```
Number Receivers "Receivers: [%.0f]" { davis="receivers" } String StationType "StationType: [%s]" { davis="station_type" }
Number TransmitterBattery "Transmitter Battery [%.1f]" { davis="transmitter_battery_status" } Number Receivers "Receivers: [%.0f]" { davis="receivers" }
Number ConsoleBattVoltage "Console Battery [%.2f V]" { davis="console_battery_voltage" } Number TransmitterBattery "Transmitter Battery [%.1f]" { davis="transmitter_battery_status" }
Number ConsoleBattVoltage "Console Battery [%.2f V]" { davis="console_battery_voltage" }
DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY]" { davis="time" } DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY]" { davis="time" }
Number InsideTemp "Inside Temp [%.1f °C ]" { davis="inside_temp" } Number InsideTemp "Inside Temp [%.1f °C ]" { davis="inside_temp" }
Number OutsideTemp "Outside Temp [%.1f °C ]" { davis="outside_temp" } Number OutsideTemp "Outside Temp [%.1f °C ]" { davis="outside_temp" }
Number DewPoint "Dew Point [%.1f °C ]" { davis="dew_point" } Number DewPoint "Dew Point [%.1f °C ]" { davis="dew_point" }
Number HeatIndex "Heat Index [%.1f °C ]" { davis="heat_index" } Number HeatIndex "Heat Index [%.1f °C ]" { davis="heat_index" }
Number WindChill "Wind Chill [%.1f °C ]" { davis="wind_chill" } Number WindChill "Wind Chill [%.1f °C ]" { davis="wind_chill" }
Number THSWIndex "THSW Index[%.1f °C ]" { davis="thsw_index" } Number THSWIndex "THSW Index[%.1f °C ]" { davis="thsw_index" }
Number InsideHumidity "Inside Humidity [%.0f %% ]" { davis="inside_humidity" } Number InsideHumidity "Inside Humidity [%.0f %% ]" { davis="inside_humidity" }
Number OutsideHumidity "Outside Humidity [%.0f %% ]" { davis="outside_humidity" } Number OutsideHumidity "Outside Humidity [%.0f %% ]" { davis="outside_humidity" }
String BarTrend "Barometer Trend [%s]" { davis="bar_trend" } String BarTrend "Barometer Trend [%s]" { davis="bar_trend" }
Number Barometer "Barometer [%.0f hPa]" { davis="barometer" } Number Barometer "Barometer [%.0f hPa]" { davis="barometer" }
Number WindSpeed "Wind Speed [%.1f km/h]" { davis="wind_speed" } Number WindSpeed "Wind Speed [%.1f km/h]" { davis="wind_speed" }
Number WindSpeed10minAvg "Wind Speed 10min Avg [%.1f km/h]" { davis="wind_speed_10min_avg" } Number WindSpeed10minAvg "Wind Speed 10min Avg [%.1f km/h]" { davis="wind_speed_10min_avg" }
Number WindDirection "Wind Direction [%.0f °]" { davis="wind_direction" } Number WindDirection "Wind Direction [%.0f °]" { davis="wind_direction" }
Number WindSpeed10minHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_10min_avg_hires" } Number WindSpeed10minHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_10min_avg_hires" }
Number WindSpeed2minHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_2min_avg_hires" } Number WindSpeed2minHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_2min_avg_hires" }
Number WindSpeed10minGustHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_10min_gust_hires" } Number WindSpeed10minGustHiRes "Wind Speed 10min Avg HiRes [%.1f km/h]" { davis="wind_speed_10min_gust_hires" }
Number WindDirectionGust "Wind Direction Gust [%.0f °]" { davis="wind_direction_10min__gust" } Number WindDirectionGust "Wind Direction Gust [%.0f °]" { davis="wind_direction_10min__gust" }
Number RainRate "Rain Rate [%.1f mm/h ]" { davis="rain_rate" } Number RainRate "Rain Rate [%.1f mm/h ]" { davis="rain_rate" }
Number Rain15min "Rain Rate [%.1f mm/h ]" { davis="last_15min_rain" } Number Rain15min "Rain Rate [%.1f mm/h ]" { davis="last_15min_rain" }
Number Rainlast1h "Rain Rate [%.1f mm/h ]" { davis="last_hour_rain" } Number Rainlast1h "Rain Rate [%.1f mm/h ]" { davis="last_hour_rain" }
Number Rainlast24h "Rain Rate [%.1f mm/h ]" { davis="last_24h_rain" } Number Rainlast24h "Rain Rate [%.1f mm/h ]" { davis="last_24h_rain" }
Number UVIndex "UV Index [%.1f ]" { davis="uv" } Number UVIndex "UV Index [%.1f ]" { davis="uv" }
Number Solar "Solar Radiation [%.0f W/m²]" { davis="solar_radiation" } Number Solar "Solar Radiation [%.0f W/m²]" { davis="solar_radiation" }
String firmware_date "Firmware Date: [%s]" { davis="firmware_date" } String firmware_date "Firmware Date: [%s]" { davis="firmware_date" }
String firmware_version "Firmware Version: [%s]" { davis="firmware_version" } String firmware_version "Firmware Version: [%s]" { davis="firmware_version" }
String rx_total "RX Packets total: [%s]" { davis="rx_count_total" } String rx_total "RX Packets total: [%s]" { davis="rx_count_total" }
String rx_missed "RX Packets missed: [%s]" { davis="rx_count_missed" } String rx_missed "RX Packets missed: [%s]" { davis="rx_count_missed" }
String rx_resync "RX Resyncs: [%s]" { davis="rx_count_resync" } String rx_resync "RX Resyncs: [%s]" { davis="rx_count_resync" }
String rx_consec "RX Packets received in a row without error: [%s]" { davis="rx_count_consecutive" } String rx_consec "RX Packets received in a row without error: [%s]" { davis="rx_count_consecutive" }
String rx_crc "RX Packets CRC failes: [%s]" { davis="rx_count_crc" } String rx_crc "RX Packets CRC failes: [%s]" { davis="rx_count_crc" }
```

View File

@ -43,15 +43,18 @@ A binding beginning with `<` defines an input, while a binding beginning with `>
### diyonxbee.cfg ### diyonxbee.cfg
serialPort=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A702NX9M-if00-port0 ```
baudRate=9600 serialPort=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A702NX9M-if00-port0
baudRate=9600
```
### Items ### Items
Number Living_Temperature "Temperatur [%.1f °C]" <temperature> (GF_Living) { diyonxbee="<0013A20040B40F18:Temperature" } ```
Switch Living_Motion "Bewegung [MAP(de.map):%s]" <present> (GF_Living,GPresence) { diyonxbee="<0013A20040B40F18:MOTION" } Number Living_Temperature "Temperatur [%.1f °C]" <temperature> (GF_Living) { diyonxbee="<0013A20040B40F18:Temperature" }
Color Living_Stripe "Living RGB Stripe" <lights> (GF_Living) { diyonxbee="<0013A20040B40F18:Stripe" } Switch Living_Motion "Bewegung [MAP(de.map):%s]" <present> (GF_Living,GPresence) { diyonxbee="<0013A20040B40F18:MOTION" }
Color Living_Stripe "Living RGB Stripe" <lights> (GF_Living) { diyonxbee="<0013A20040B40F18:Stripe" }
```
## Notes ## Notes
@ -63,8 +66,10 @@ even without using the XBee (any serial console will do).
For the pure sensors, the Arduino has to send lines conaining key=value. From the For the pure sensors, the Arduino has to send lines conaining key=value. From the
example item configuration above, a valid message would be: example item configuration above, a valid message would be:
Temperature=21.3 ```
MOTION=ON Temperature=21.3
MOTION=ON
```
For the actors, the Arduino has to send the received command back to the sender; For the actors, the Arduino has to send the received command back to the sender;
this ensures that the openHAB item state is only updated when the command was this ensures that the openHAB item state is only updated when the command was

View File

@ -26,6 +26,7 @@ It has been tested on:
* 6360 Cable (v6.04) * 6360 Cable (v6.04)
* 6490 Cable (v7.02) * 6490 Cable (v7.02)
* 7490 * 7490
* 7580 (v7.12)
* 7590 (v6.92) * 7590 (v6.92)
## Features ## Features

View File

@ -31,7 +31,7 @@ Since MCP23017 is digital IO expander on I2C bus, only two types of items are su
* `Switch` for digital output. Find the example below. * `Switch` for digital output. Find the example below.
``` ```
Contact Test1 "Test 1" (Tests) { mcp23017="{ address:21, pin:'A0', mode:'DIGITAL_INPUT'}" } Contact Test1 "Test 1" (Tests) { mcp23017="{ address:20, pin:'A0', mode:'DIGITAL_INPUT'}" }
``` ```
configures pin 0 at bank A (GPA0 on datasheet) as input of the IC on address 0x21 configures pin 0 at bank A (GPA0 on datasheet) as input of the IC on address 0x21
@ -40,4 +40,4 @@ configures pin 0 at bank A (GPA0 on datasheet) as input of the IC on address 0x2
Switch Test2 "Test 2" (Tests) { mcp23017="{ address:21, pin:'B1', mode:'DIGITAL_OUTPUT', defaultState:'LOW'}" } Switch Test2 "Test 2" (Tests) { mcp23017="{ address:21, pin:'B1', mode:'DIGITAL_OUTPUT', defaultState:'LOW'}" }
``` ```
configures pin 1 at bank B (GPB1 on datasheet) as output of the IC on adress 0x21 configures pin 1 at bank B (GPB1 on datasheet) as output of the IC on address 0x21

View File

@ -24,6 +24,7 @@ This binding can be configured in the file `services/snmp.cfg`.
| Property | Default | Required | Description | | Property | Default | Required | Description |
|----------|---------|:--------:|-------------| |----------|---------|:--------:|-------------|
| community | public | No | default community for listening for traps (defaults to public). | | community | public | No | default community for listening for traps (defaults to public). |
| version | v1 | No | define snmp protocol-version (can be v1 or v2c). |
| port | 162 | No | listening port. See [Binding Port](#binding-port) below. | | port | 162 | No | listening port. See [Binding Port](#binding-port) below. |
| timeout | 1500 | No | timeout period (in milliseconds) when polling SNMP GET and SET requests. | | timeout | 1500 | No | timeout period (in milliseconds) when polling SNMP GET and SET requests. |
| retries | 0 | No | number of retries before giving up. The retries will be sent every `timeout` milliseconds. 0 means no retries. | | retries | 0 | No | number of retries before giving up. The retries will be sent every `timeout` milliseconds. 0 means no retries. |
@ -52,7 +53,7 @@ The syntax for the SNMP binding configuration string depending on whether you ar
GET GET
``` ```
snmp="<[<address>:<community>:<oid>:<update>]" snmp="<[<address>:<protocol-version>:<community>:<oid>:<update>]"
``` ```
SET SET
@ -70,6 +71,7 @@ snmp="<[<address>:<community>:<oid>:0]"
where: where:
* `<address>` is the IP address[/Port] of the SNMP device. The Port is optional, the default value is 161 * `<address>` is the IP address[/Port] of the SNMP device. The Port is optional, the default value is 161
* `<protocol-version>` where possible values for protocol-version are v1, v2c and v3 (v3 not supported by the binding at the moment, but possible in future enhancement).
* `<community>` is the SNMP community string * `<community>` is the SNMP community string
* `<oid>` is the object ID to GET or SET * `<oid>` is the object ID to GET or SET
* `<update>` is the amount of milliseconds the binding waits between periodic queries of the OID * `<update>` is the amount of milliseconds the binding waits between periodic queries of the OID
@ -78,9 +80,9 @@ where:
Here are some examples of valid binding configuration strings: Here are some examples of valid binding configuration strings:
``` ```
snmp="<[192.168.2.111:public:.1.3.6.1.2.1.2.2.1.10.10:10000]" snmp="<[192.168.2.111:v1:public:.1.3.6.1.2.1.2.2.1.10.10:10000]"
snmp=">[OFF:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:2]" snmp=">[OFF:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:2]"
snmp="<[192.168.2.111:public:.1.3.6.1.2.1.2.2.1.10.10:0]" snmp="<[192.168.2.111:v2c:public:.1.3.6.1.2.1.2.2.1.10.10:0]"
``` ```
## Examples ## Examples
@ -88,8 +90,8 @@ snmp="<[192.168.2.111:public:.1.3.6.1.2.1.2.2.1.10.10:0]"
items/snmpdemo.items items/snmpdemo.items
``` ```
Number Switch_POEState2 "PoE WiFi State [%s]" { snmp="<[192.168.2.111:public:.1.3.6.1.4.1.4526.11.16.1.1.1.6.1.2:10000]" } Number Switch_POEState2 "PoE WiFi State [%s]" { snmp="<[192.168.2.111:v1:public:.1.3.6.1.4.1.4526.11.16.1.1.1.6.1.2:10000]" }
Switch Switch_POEEnable2 "PoE WiFi Enable [%s]" { snmp="<[192.168.2.111:public:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:10000] >[OFF:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:2] >[ON:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:1]" } Switch Switch_POEEnable2 "PoE WiFi Enable [%s]" { snmp="<[192.168.2.111:v1:public:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:10000] >[OFF:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:2] >[ON:192.168.2.111:private:.1.3.6.1.4.1.4526.11.16.1.1.1.3.1.2:1]" }
String switch1p01desc "switch1 port 01 description [%s]" { snmp="<[192.168.3.222:public:.1.3.6.1.4.1.11863.1.1.3.2.1.1.1.1.2.1:10000]" } String switch1p01desc "switch1 port 01 description [%s]" { snmp="<[192.168.3.222:public:.1.3.6.1.4.1.11863.1.1.3.2.1.1.1.1.2.1:10000]" }
``` ```

View File

@ -181,7 +181,7 @@ Switch Power "Power" (Fan) {alexa="ToggleController.toggleState" [friendlyName
### Item State ### Item State
* Item states, reported back to Alexa, are formatted based on their [item state presentation](https://www.openhab.org/docs/configuration/items.html#state-presentation) definition if configured. This means you can control the precision of number values (e.g. `%.1f °C` will limit reported temperature value to one decimal point). * Item states, reported back to Alexa, are formatted based on their [item state presentation](https://www.openhab.org/docs/configuration/items.html#state-presentation) definition if configured. This means you can control the precision of number values (e.g. `%.1f °C` will limit reported temperature value to one decimal point).
* For items that don't have a state, these can be configured as not retrievable, automatically when the item is set as `autoupdate=false` or by using metadata parameter `itemStateRetrievable=false`. In that case, Alexa will not retrieve the given item state, and when a command is issued against that item, the requested state will be returned back without checking the current state in openHAB. If using this feature in a group endpoint, keep in mind that all associated items will need to be configured to either report or not report a state, otherwise the Alexa integration for that endpoint will be broken. * For items that don't have a state, these can be configured as not retrievable, automatically when the item [parameter `autoupdate`](https://www.openhab.org/docs/configuration/items.html#parameter-autoupdate) is set as `autoupdate=false` or by using metadata parameter `itemStateRetrievable=false`. In that case, Alexa will not retrieve the given item state, and when a command is issued against that item, the requested state will be returned back without checking the current state in openHAB. If using this feature in a group endpoint, keep in mind that all associated items will need to be configured to either report or not report a state, otherwise the Alexa integration for that endpoint will be broken.
### Item Unit of Measurement ### Item Unit of Measurement
* With the introduction of the [unit of measurement](https://www.openhab.org/docs/concepts/units-of-measurement.html) concept, the item unit can be automatically determined for thermostat and temperature using that feature, removing the need of having to set the metadata scale parameter for each of the relevant items or groups. * With the introduction of the [unit of measurement](https://www.openhab.org/docs/concepts/units-of-measurement.html) concept, the item unit can be automatically determined for thermostat and temperature using that feature, removing the need of having to set the metadata scale parameter for each of the relevant items or groups.