This binding can be used to connect through the CalDAV Interface to calendars.
First of all you need to add the org.openhab.io.caldav-version.jar to the addons folder.

Newest
Newest Version can be downloaded from the build-agent

openhab.cfg

caldavio:<calendar-id>:url=

caldavio:<calendar-id>:username=

caldavio:<calendar-id>:password=

caldavio:<calendar-id>:reloadInterval=<minutes>

caldavio:<calendar-id>:preloadTime=<minutes>

caldavio:<calendar-id>:historicLoadTime=<minutes>

caldavio:<calendar-id>:disableCertificateVerification=<true|false>

caldavio:<calendar-id>:charset=<well formed charset name>

caldavio:timeZone=<Timezone>

Restrictions

The calendar-id must be just upper- and lowercase characters. (e. g. private or work, something like 1 or private-home is not allowed)

disableCertificateVerification can just be set to true (default is false) if ssl is used.

timeZone must just be used if the local timezone of the pc is not the correct one. E. g. if you are living in Berlin and your calendar timezone is Berlin and your local pc timezone is Berlin you must not define this setting

'' for item configurations are optional (eventNr:1 and eventNr:'1' is the same). I prefer to use ''

The CalDAV binding is compatible with openHAB 2 just like any other openHAB 1.x binding. There is currently just one bug in the way the configuration file is parsed. Create the configuration file caldavio.cfg with the additional prefix caldavio:. Do the same for caldavCommand.cfg and caldavCommandPersonal.cfg.
For more details see the discussion here.

Used to execute commands through an event, triggered at the start or the end of an event.
The event summary is free selectable. The event description must fullfill special syntax.
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:

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>"
Furthermore a switch can be defined to disable the automatic execution (through calendar) of an item.
Syntax is caldavCommand="itemName:<Item-Name to listen to> type:<DISABLE>"

openhab.cfg
caldavCommand:readCalendars=<calendar-id> (multiple calendars can be seperated by commas)

Since 1.9.0, the CalDAV Command binding also supports a default item which may optionally be added to openhab.cfg:

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>

This is really nice to use in combination with a rule such as used for voice control - set the default item to: caldavCommand:defaultItemOnBegin=VoiceCommand

Then you can use the very same logic of your voice commands also in your calendar events (which should also improve the WAF 😉).
Depending on your rule implementation, it is possible to use event entries like these:

just showing events for the next garbage pick-up
caldavPersonal="calendar:'common' type:'EVENT' eventNr:'1' value:'START' filter-category:'Müllabholung'"

item config showing the next event in which we are sending a heat event to the bathroom :DateTime bathroom_NextEventDate "bathriil next evt. [%1$tT, %1$td.%1$tm.%1$tY]" <calendar> { caldavPersonal="calendar:chauffagecmd type:UPCOMING eventNr:1 value:'START' filter-category-any:'bathroom,wholefloor'"}
==> if you have one event at 8pm with 1 category "bathroom" (setting heater on), and another event at 9pm with category "wholefloor" (setting heaterS on), then this item will match both events.

There are three calendars defined. One of them is used just for executing commands in openhab (Command-kalender). The others are used to show the upcoming events (Müllkalender, Dienstlicher/privater Kalender).
In every case, the binding org.openhab.io.caldav-<version>.jar is needed. For executing commands the additional binding org.openhab.binding.caldav-command-<version>.jar is needed. For upcoming events or presence simulation the binding org.openhab.binding.caldav-personal-<version>.jar needs to be included.