From 3538fcd5509d60786091e8c4fa2e430602affaa7 Mon Sep 17 00:00:00 2001 From: betateilchen <> Date: Sat, 16 Feb 2019 00:52:07 +0000 Subject: [PATCH] added: new command caldav git-svn-id: https://svn.fhem.de/fhem/trunk@18604 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/57_CalDav.pm | 84 ++++++++++++++++++++++++++++++++++++++++++ fhem/MAINTAINER.txt | 1 + 2 files changed, 85 insertions(+) create mode 100644 fhem/FHEM/57_CalDav.pm diff --git a/fhem/FHEM/57_CalDav.pm b/fhem/FHEM/57_CalDav.pm new file mode 100644 index 000000000..0679e35be --- /dev/null +++ b/fhem/FHEM/57_CalDav.pm @@ -0,0 +1,84 @@ +############################################## +# $Id$ +package main; + +use strict; +use warnings; +use HttpUtils; +use XML::LibXML; +use Data::Dumper; + +sub CalDav_Initialize($$) +{ + $cmds{caldav} = { Fn => "CommandCaldav", + Hlp=>"url"}; +} + +sub CommandCaldav($$) { + my ($cl, $params) = @_; + + my ($url,$options) = split (" ",$params,2); + $options //= ""; + $url .= "/" unless $url =~ /\/$/; + + my $hash = (); + $hash->{URL} = $url; + $hash->{NAME} = "caldav_"; + $hash->{OPTIONS} = $options; + + my %hu_hash = (); + $hu_hash{hash} = $hash; + $hu_hash{url} = $url; + $hu_hash{hideurl} = 1; + $hu_hash{timeout} = 30; + $hu_hash{noshutdown} = 1; + $hu_hash{header} = "Depth: 1\r\nContent-Type: application/xml; charset=utf-8"; + $hu_hash{method} = "PROPFIND"; + $hu_hash{callback} = \&CalDav_Process; + HttpUtils_NonblockingGet(\%hu_hash); +} + +sub CalDav_Process($$$) { + + my ($param, $errmsg, $data) = @_; + my $hash = $param->{hash}; + my $name = $hash->{NAME}; + my $url = $hash->{URL}; + my $options = $hash->{OPTIONS}; + + my $d = XML::LibXML->load_xml(string => $data); + + foreach my $r ($d->findnodes('/d:multistatus/d:response/d:href')) { + my $u = $r->to_literal(); + next if ($url =~ /$u/); + next if ($u =~ /(inbox|outbox)\/$/); + my @a = split(/\//,$u); + my $t = "define $name$a[-1] Calendar ical url $url$a[-1]$options"; + Log3 (3, "caldav", "Creating Calendar: $t"); + fhem $t; + } +} + +1; + +=pod +=item summary create single Calendar devices from webdav server +=item summary_DE erzeugt einzelne Calendar devices aus einem webdav Server +=item command +=begin html + + +

caldav

+ + +=end html + +=cut diff --git a/fhem/MAINTAINER.txt b/fhem/MAINTAINER.txt index bd60ca2be..e87d170c8 100644 --- a/fhem/MAINTAINER.txt +++ b/fhem/MAINTAINER.txt @@ -289,6 +289,7 @@ FHEM/55_DWD_OpenData.pm jensb Unterstuetzende Dienste/Wetter FHEM/55_InfoPanel.pm betateilchen Unterstuetzende Dienste FHEM/55_PIFACE.pm klaus.schauer Einplatinencomputer FHEM/56_POKEYS.pm axelberner Sonstiges +FHEM/57_CalDav.pm betateilchen Unterstuetzende Dienste/Kalendermodule FHEM/57_Calendar.pm neubert Unterstuetzende Dienste/Kalendermodule FHEM/57_CALVIEW.pm chris1284 Unterstuetzende Dienste/Kalendermodule FHEM/59_HCS.pm hjr Automatisierung (oder auch PM)