Updated external content (Jenkins build 54)
parent
90311ce89b
commit
2469e8612d
File diff suppressed because one or more lines are too long
|
@ -51,7 +51,7 @@ Go to Preferences/Connection and set:
|
|||
|
||||
### GPSLogger
|
||||
|
||||
Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device.
|
||||
Install [GPSLogger for Android](https://github.com/mendhak/gpslogger/releases) on your device.
|
||||
After the launch, go to General Options.
|
||||
Enable **Start on boot-up** and **Start on app launch**.
|
||||
|
||||
|
|
|
@ -20,12 +20,16 @@ Furthermore it is possible to embed `command tags` in the calendar event descrip
|
|||
|
||||
## Supported Things
|
||||
|
||||
The only thing type is the calendar.
|
||||
It is based on a single iCalendar file.
|
||||
The primary thing type is the calendar.
|
||||
It is based on a single iCalendar file and implemented as bridge.
|
||||
There can be multiple things having different properties representing different calendars.
|
||||
|
||||
Each calendar can have event filters which allow to get multiple events, maybe filtered by additional criteria. Time based filtering is done by each event's start.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
### Configuration for `calendar`
|
||||
|
||||
Each `calendar` thing requires the following configuration parameters:
|
||||
|
||||
| parameter name | description | optional |
|
||||
|
@ -37,20 +41,60 @@ Each `calendar` thing requires the following configuration parameters:
|
|||
| `maxSize` | The maximum size of the iCal-file in Mebibytes. | mandatory (default available) |
|
||||
| `authorizationCode` | The authorization code to permit the execution of embedded command tags. If set, the binding checks that the authorization code in the command tag matches before executing any commands. | optional |
|
||||
|
||||
### Configuration for `eventfilter`
|
||||
|
||||
Each `eventfilter` thing requires a bridge of type `calendar` and has following configuration options:
|
||||
|
||||
| parameter name | description | optional |
|
||||
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
|
||||
| `maxEvents` | The count of expected results. | mandatory |
|
||||
| `refreshTime` | The frequency in minutes the channels get refreshed. | mandatory (default available) |
|
||||
| `datetimeUnit` | A unit for time settings in this filter. Valid values: `MINUTE`, `HOUR`, `DAY` and `WEEK`. | optional (required for time-based filtering) |
|
||||
| `datetimeStart` | The start of the time frame where to search for events relative to current time. Combined with `datetimeUnit`. | optional |
|
||||
| `datetimeEnd` | The end of the time frame where to search for events relative to current time. Combined with `datetimeUnit`. The value must be greater than `datetimeStart` to get results. | optional |
|
||||
| `datetimeRound` | Whether to round the datetimes of start and end down to the earlier time unit. Example if set: current time is 13:00, timeunit is set to `DAY`. Resulting search will start and end at 0:00. | optional |
|
||||
| `textEventField` | A field to filter the events text-based. Valid values: `SUMMARY`, `DESCRIPTION`, `COMMENT`, `CONTACT` and `LOCATION` (as described in RFC 5545). | optional/required for text-based filtering |
|
||||
| `textEventValue` | The text to filter events with. | optional |
|
||||
| `textValueType` | The type of the text to filter with. Valid values: `TEXT` (field must contain value), `REGEX` (field must match value, completely, dot matches all, case insensetive). | optional/required for text-based filtering |
|
||||
|
||||
## Channels
|
||||
|
||||
The channels describe the current and the next forthcoming event.
|
||||
### Channels for `calendar`
|
||||
|
||||
The channels of `calendar` describe the current and the next forthcoming event.
|
||||
They are all read-only.
|
||||
|
||||
| Channel | Type | Description |
|
||||
|-------------------|-----------|--------------------------------------------------------------------------------|
|
||||
| current_presence | Switch | Current presence of an event, `ON` if there is currently an event, `OFF` otherwise |
|
||||
| current_title | String | Title of a currently present event |
|
||||
| current_start | DateTime | Start of a currently present event |
|
||||
| current_end | DateTime | End of a currently present event |
|
||||
| next_title | String | Title of the next event |
|
||||
| next_start | DateTime | Start of the next event |
|
||||
| next_end | DateTime | End of the next event |
|
||||
| Channel | Type | Description |
|
||||
|-------------------|-----------|-------------------------------------------------------------------------------------|
|
||||
| current_presence | Switch | Current presence of an event, `ON` if there is currently an event, `OFF` otherwise |
|
||||
| current_title | String | Title of a currently present event |
|
||||
| current_start | DateTime | Start of a currently present event |
|
||||
| current_end | DateTime | End of a currently present event |
|
||||
| next_title | String | Title of the next event |
|
||||
| next_start | DateTime | Start of the next event |
|
||||
| next_end | DateTime | End of the next event |
|
||||
|
||||
### Channels for `eventfilter`
|
||||
|
||||
The channels of `eventfilter` are generated using following scheme, all are read-only.
|
||||
|
||||
| Channel-scheme | Type | Description |
|
||||
|---------------------|-----------|------------------------|
|
||||
| `result_<no>#begin` | DateTime | The begin of an event |
|
||||
| `result_<no>#end` | DateTime | The end of an event |
|
||||
| `result_<no>#title` | String | The title of an event |
|
||||
|
||||
The scheme replaces `<no>` by the results index, beginning at `0`. An `eventfilter` having `maxEvents` set to 3 will have following channels:
|
||||
|
||||
* `result_0#begin`
|
||||
* `result_0#end`
|
||||
* `result_0#title`
|
||||
* `result_1#begin`
|
||||
* `result_1#end`
|
||||
* `result_1#title`
|
||||
* `result_2#begin`
|
||||
* `result_2#end`
|
||||
* `result_2#title`
|
||||
|
||||
## Command Tags
|
||||
|
||||
|
@ -90,16 +134,19 @@ The `Authorization_Code` may *optionally* be used as follows:
|
|||
All required information must be provided in the thing definition, either via UI or in the `.things` file..
|
||||
|
||||
```
|
||||
Thing icalendar:calendar:deadbeef "My calendar" @ "Internet" [ url="http://example.org/calendar.ical", refreshTime=60 ]
|
||||
Bridge icalendar:calendar:deadbeef "My calendar" @ "Internet" [ url="http://example.org/calendar.ical", refreshTime=60 ]
|
||||
Thing icalendar:eventfilter:feedd0d0 "Tomorrows events" (icalendar:calendar:deadbeef) [ maxEvents=1, datetimeUnit="DAY", datetimeStart=1, datetimeEnd=2, datetimeRound=true ]
|
||||
```
|
||||
|
||||
Link the channels as usual to items:
|
||||
|
||||
```
|
||||
String current_event_name "current event [%s]" <calendar> { channel="icalendar:calendar:deadbeef:current_title" }
|
||||
DateTime current_event_until "current until [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:calendar:deadbeef:current_end" }
|
||||
String next_event_name "next event [%s]" <calendar> { channel="icalendar:calendar:deadbeef:next_title" }
|
||||
DateTime next_event_at "next at [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:calendar:deadbeef:next_start" }
|
||||
String current_event_name "current event [%s]" <calendar> { channel="icalendar:calendar:deadbeef:current_title" }
|
||||
DateTime current_event_until "current until [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:calendar:deadbeef:current_end" }
|
||||
String next_event_name "next event [%s]" <calendar> { channel="icalendar:calendar:deadbeef:next_title" }
|
||||
DateTime next_event_at "next at [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:calendar:deadbeef:next_start" }
|
||||
String first_event_name_tomorrow "first event [%s]" <calendar> { channel="icalendar:eventfilter:feedd0d0:event_0#title" }
|
||||
DateTime first_event_at_tomorrow "first at [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:eventfilter:feedd0d0:event_0#begin" }
|
||||
```
|
||||
|
||||
Sitemap just showing the current event and the beginning of the next:
|
||||
|
@ -112,6 +159,10 @@ sitemap local label="My Calendar Sitemap" {
|
|||
Text item=next_event_name label="next event [%s]"
|
||||
Text item=next_event_at label="next at [%1$tT, %1$tY-%1$tm-%1$td]"
|
||||
}
|
||||
Frame label="tomorrow" {
|
||||
Text item=first_event_name_tomorrow
|
||||
Text item=first_event_at_tomorrow
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -128,3 +179,7 @@ Command tags in a calendar event (in the case that configuration parameter `auth
|
|||
BEGIN:Calendar_Test_Switch:ON
|
||||
END:Calendar_Test_Switch:OFF
|
||||
```
|
||||
|
||||
## Breaking changes
|
||||
|
||||
In OH3 `calendar` was changed from Thing to Bridge. You need to recreate calendars (or replace `Thing` by `Bridge` in your `.things` file).
|
||||
|
|
|
@ -75,7 +75,7 @@ This service can be configured in the file `services/jdbc.cfg`.
|
|||
| tableUseRealItemNames | `false` | No | table name prefix generation. When set to `true`, real item names are used for table names and `tableNamePrefix` is ignored. When set to `false`, the `tableNamePrefix` is used to generate table names with sequential numbers. |
|
||||
| tableIdDigitCount | 4 | No | when `tableUseRealItemNames` is `false` and thus table names are generated sequentially, this controls how many zero-padded digits are used in the table name. With the default of 4, the first table name will end with `0001`. For migration from the MySQL persistence service, set this to 0. |
|
||||
| rebuildTableNames | false | No | rename existing tables using `tableUseRealItemNames` and `tableIdDigitCount`. USE WITH CARE! Deactivate after Renaming is done! |
|
||||
| jdbc.maximumPoolSize | configured per database in package `org.openhab.persistence.jdbc.db.*` | No | Some embeded databases can handle only one connection. See [this link](https://github.com/brettwooldridge/HikariCP/issues/256) for more information |
|
||||
| jdbc.maximumPoolSize | configured per database in package `org.openhab.persistence.jdbc.db.*` | No | Some embedded databases can handle only one connection. See [this link](https://github.com/brettwooldridge/HikariCP/issues/256) for more information |
|
||||
| jdbc.minimumIdle | see above | No | see above |
|
||||
| enableLogTime | `false` | No | timekeeping |
|
||||
|
||||
|
@ -186,4 +186,3 @@ then
|
|||
}
|
||||
end
|
||||
```
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="calendar">
|
||||
<bridge-type id="calendar">
|
||||
<label>Calendar</label>
|
||||
<description>Calendar based on an iCal calendar.</description>
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</thing-type>
|
||||
</bridge-type>
|
||||
|
||||
<channel-type id="event_current_title">
|
||||
<item-type>String</item-type>
|
||||
|
@ -99,4 +99,113 @@
|
|||
<description>End of the next event in calendar</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="result_start">
|
||||
<item-type>DateTime</item-type>
|
||||
<label>Start of Result</label>
|
||||
<description>Start of the found result in calendar</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="result_end">
|
||||
<item-type>DateTime</item-type>
|
||||
<label>End of Result</label>
|
||||
<description>End of the found result in calendar</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="result_title">
|
||||
<item-type>String</item-type>
|
||||
<label>Title of Result</label>
|
||||
<description>Title of the found result in calendar</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-group-type id="result">
|
||||
<label>Result Event</label>
|
||||
<description>A resulting event found by filter</description>
|
||||
<channels>
|
||||
<channel typeId="result_start" id="begin"/>
|
||||
<channel typeId="result_end" id="end"/>
|
||||
<channel typeId="result_title" id="title"/>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
|
||||
<thing-type id="eventfilter">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="calendar"/>
|
||||
</supported-bridge-type-refs>
|
||||
<label>Event Filter</label>
|
||||
<description>Filtered Events from the calendar</description>
|
||||
|
||||
<config-description>
|
||||
<parameter-group name="general">
|
||||
<label>General Filter Options</label>
|
||||
</parameter-group>
|
||||
<parameter-group name="datetime_based">
|
||||
<label>Date and Time based Filter</label>
|
||||
</parameter-group>
|
||||
<parameter-group name="text_based">
|
||||
<label>Text based Filter</label>
|
||||
</parameter-group>
|
||||
|
||||
<parameter name="maxEvents" type="integer" min="0" groupName="general">
|
||||
<label>Maximum Matches</label>
|
||||
<required>true</required>
|
||||
</parameter>
|
||||
<parameter name="refreshTime" type="integer" min="1" groupName="general" unit="min">
|
||||
<label>Refresh Time</label>
|
||||
<description>The frequency in minutes the channels get refreshed</description>
|
||||
<required>true</required>
|
||||
<default>15</default>
|
||||
</parameter>
|
||||
<parameter name="datetimeUnit" type="text" groupName="datetime_based">
|
||||
<limitToOptions>true</limitToOptions>
|
||||
<options>
|
||||
<option value="MINUTE">minute</option>
|
||||
<option value="HOUR">hour</option>
|
||||
<option value="DAY">day</option>
|
||||
<option value="WEEK">week</option>
|
||||
</options>
|
||||
<default>HOUR</default>
|
||||
<label>Date or Time Unit for Start and End</label>
|
||||
</parameter>
|
||||
<parameter name="datetimeStart" type="integer" groupName="datetime_based">
|
||||
<label>Start</label>
|
||||
<description>Start date/time amount to find events relative to "now" (inclusive)</description>
|
||||
</parameter>
|
||||
<parameter name="datetimeEnd" type="integer" groupName="datetime_based">
|
||||
<label>End</label>
|
||||
<description>End date/time amount to find events relative to "now" (exclusive)</description>
|
||||
</parameter>
|
||||
<parameter name="datetimeRound" type="boolean" groupName="datetime_based">
|
||||
<label>Round to Date/Time unit</label>
|
||||
<description>Setting this will round start and end date/time to the unit down (e.g. if unit is day: start and end
|
||||
will be rounded to 0:00 day time)</description>
|
||||
</parameter>
|
||||
<parameter name="textEventField" type="text" groupName="text_based">
|
||||
<label>Event Field</label>
|
||||
<description>iCal field to match</description>
|
||||
<limitToOptions>true</limitToOptions>
|
||||
<options>
|
||||
<option value="SUMMARY">summary/subject</option>
|
||||
<option value="DESCRIPTION">description/content</option>
|
||||
<option value="COMMENT">comment</option>
|
||||
<option value="CONTACT">contact</option>
|
||||
<option value="LOCATION">location</option>
|
||||
</options>
|
||||
</parameter>
|
||||
<parameter name="textEventValue" type="text" groupName="text_based">
|
||||
<label>Event Value</label>
|
||||
</parameter>
|
||||
<parameter name="textValueType" type="text" groupName="text_based">
|
||||
<limitToOptions>true</limitToOptions>
|
||||
<options>
|
||||
<option value="REGEX">Regular Expression</option>
|
||||
<option value="TEXT">Text</option>
|
||||
</options>
|
||||
<default>TEXT</default>
|
||||
<label>Value Type</label>
|
||||
<description>"text" checks the value for containment, "regular expression" matches whole value</description>
|
||||
</parameter>
|
||||
</config-description>
|
||||
</thing-type>
|
||||
</thing:thing-descriptions>
|
||||
|
|
Loading…
Reference in New Issue