CalDAV-Unterstützung, z. B. für ownCloud, mit Autorisierung

Begonnen von RobK, 23 Juli 2013, 23:47:20

Vorheriges Thema - Nächstes Thema

RobK

Guten Abend!

57_Calendar.pm unterstützt ausschließlich das iCal-Format und kein CalDAV, wie es owncloud bereitstellt und erlaubt keine Autorisierung via Username/Passwort. Ich nutze ein ownCloud und würde das gerne abfragen, um damit via FHEM Dinge zu steuern. Mein ownCloud erfordert aber ein Einloggen mit Username/Passwort und bietet eben kein iCal-Format an, sondern CalDAV.

An sich sieht es nicht unmöglich aus, 57_Calendar.pm aufzubohren, damit aus den CalDAV-Einträgen iCal-Einträge gemacht werden, und die wiederum von der bestehenden Logik verarbeitet werden können, aber: 57_Calendar.pm erfordert keines der bestehenden Perl-Module bzgl. iCal, das in Frage stehende Cal::DAV sehr wohl. Es sieht ein bisschen so aus, als sei 57_Calendar.pm eine reine Eigenentwicklung, kann das sein?

Bevor ich mich jetzt 'ranmache und in 57_Calendar.pm Dinge rein programmiere, die da gar nicht hingehören, die leise Frage in die Runde, ob jemand sich damit eventuell schon beschäftigt hat - eventuell Boris selber, der Autor von 57_Calendar.pm?

Wäre schön, wenn sachdienliche Hinweise kämen.

Mit fröhlichem Gruß,

Robert

borsti67

Hallo Robert,

wenn ich mich richtig erinnere, wurde das so entwickelt, weil vorhandene Module Abhängigkeiten beinhalteten, die nicht standardmäßig in PERL-Installationen z.B. auf der FritzBox drin sind. Da müsstest Du also bei der Implementation aufpassen, dass das Modul dann nicht bei anderen den Dienst einstellt!

Gruß
Borsti
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

RobK

Ach, da war's wieder: Nicht jede/r benutzt einen eigenen Debian-Server, sondern auch 'ne Fritz-Box, ja - irgendwas schwante mir. Das gilt es natürlich zu berücksichtigen!

Ich warte nun mal ab, was Boris dazu meint. :-)

Rob

Dr. Boris Neubert

Zitat von: RobK schrieb am Do, 25 Juli 2013 01:06Ich warte nun mal ab, was Boris dazu meint. :-)

Hallo,

ich bin einer Erweiterung des Moduls gegenüber aufgeschlossen, d.h. ich würde eine von Dir erweiterte Version akzeptieren und einchecken.

Es sollte gut getestet und immer noch wartbar sein und Abhängigkeiten sollten nur zuschlagen, wenn sie benötigt werden (require kann auch im Code benutzt werden, i.V. mit dem eval zum Abfangen von Exceptions). Die Wartung und den Support dieses Teils solltest Du übernehmen und die Doku natürlich auch.

Das define ist syntaktisch schon darauf ausgelegt, statt ical auch andere Formate zu akzeptieren.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

RobK

Dann will ich mich mal an die Arbeit machen, allerdings sind allzu schnell keine Ergebnisse zu erwarten. Ich kann zwar Perl (daher bin ich zu FHEM gekommen ;-) ), aber habe schlicht zu wenig Zeit, als dass ich in kurzer Zeit was zustande bekäme. :-)

Kommt Zeit, kommt Patch :)

Rob

ntruchsess

owncloud kann sehr wohl einen Kalender als iCal-datei exportieren:
http://doc.owncloud.org/server/4.5/user_manual/calendars.html#exporting-importing-events
wenn man die Einstellungen eines ownCloud-kalenders öffnet, ist unten ein link 'nur lesende(r) iCalender link(s)' zu finden. Der sieht im Prinzip so aus:
https://<server>/owncloud/remote.php/caldav/calendars/<user>/<kalendername>?export
https://<server>/owncloud/index.php/apps/calendar/export.php?calid=<calenderid> funktioniert genauso, man muss nur die Kalenderid kennen (der Link findet sich inklusive der Kalenderid im owncloud-Kalendereinstellungdialog oben rechts).
(gilt alles für ownCloud 5.0.x)
d.h. im Calender-modul fehlt eigentlich nur die Authentisierung.

Gruß,

Norbert
while (!asleep()) {sheep++};

Heiko R.

In meinem ersten Post möchte ich beim Thema CalDAV / ownCloud behilflich sein.

Ich selbst hinterlege meine Daten (insbesondere Dienstpläne und Schaltzeiten) auch nicht gerne bei irgendwelchen Anbietern, sonder lieber auf meinem eigenen Server. Daher habe ich eine Lösung gesucht, meine ownCloud-Kalender einzubinden. Und ich habe sie gefunden.

Zunächst habe ich mir im Home-Verzeichnis eine Datei "getcalendar.sh" angelegt:
#!/bin/sh

wget --auth-no-challenge \
  -O $HOME/calendar.ics "http://<servername + owncloud-verzeichnis>/remote.php/caldav/calendars/<benutzer>/<kalendername>?export"


Servername, ownCloud-Verzeichnis, Benutzer und Kalendername müssen angepasst werden, man sieht die richtige URL, wenn man mit der Maus bei "lesende(r) iCalender-Link(s)" über den entsprechenden Kalender fährt.

Danach habe ich die Zugriffsrechte gesetzt (chown pi.pi ..., chmod 700 ...)

Natürlich müssen noch Benutzername und Passwort übertragen werden. Dazu habe ich im Home-Verzeichnis die Datei .netrc angelegt:

machine <servername> login <benutzer> password <passwort>


Servername, Benutzer und Passwort müssen entsprechend angepasst werden. Die Zugriffsrechte wurden wieder gesetzt (chown pi.pi ..., chmod 600 ...)

Nun wollen wir nicht immer wieder das Shell-Script starten, daher noch ein Eintrag in die crontab. Ich habe eingetragen:

0,15,30,45 * * * * /home/pi/getcalendar.sh


Somit wird der Kalender alle 15 Minuten vom Server abgeholt und destruktiv in der Datei "/home/pi/calendar.ics" gespeichert.

Das Einbinden in FHEM ist jetzt wieder ganz einfach:

define Kalender_Heizung Calendar ical file /home/pi/calendar.ics 1800


Damit wird der Kalender alle 30 Minuten eingelesen.

Ich hoffe, ich konnte behilflich sein. (Mit https://... habe ich es nicht ausprobiert, Rückmeldungen wären schön.)

Viele Grüße,
Heiko
Cubietruck (Wheezy + FHEM) als FHEM-Server,  1x HMLAN, 6x HM-CC-RT-DN, 1x HM-TC-IT-WM-W-EU
RaspberryPi (Wheezy + FHEM) im Heizungsraum, HT3-USB-Adapter (Homebrew), Junkers Cerapur 14-4C 21, ST 120-5, FW 120

Wernieman

Kleiner Tip:
Wenn Du anstatt 0,15,30,45 dort einträgst */15 wird Dein Cron-Job auch alle 15 Minuten gestartet. Ist etwas besser lesbar bei festen Zeiten
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Heiko R.

Danke für den Tipp. Ich war mir nicht ganz sicher, ob */15 alle 15 Minuten ab dem letzten cronjob (ähnlich des Intervalls bei Calendar) oder wie gewünscht zur jeder vollen Viertelstunde startet.
Cubietruck (Wheezy + FHEM) als FHEM-Server,  1x HMLAN, 6x HM-CC-RT-DN, 1x HM-TC-IT-WM-W-EU
RaspberryPi (Wheezy + FHEM) im Heizungsraum, HT3-USB-Adapter (Homebrew), Junkers Cerapur 14-4C 21, ST 120-5, FW 120

Wernieman

Erklärung:

*/15 funktioniert wie folgt:
Wenn die Division eine "Ganzahl" ergibt, wird es ausgeführt
also bei 0, 15, 30, 45

dagegen z.B. */14:
0,14,28,42,56
zwischen 56 und 0 liegen "nur" 4 Minuten ......
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

holzwurm83

Hallo zusammen,  bin auch an dem Thema interessiert.  Ist man mit der Anbindung CalDAV own cloud schon weiter?
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

kvo1


ZitatAutor: holzwurm83
« am: 04 Oktober 2014, 23:44:33 »

Hallo zusammen,  bin auch an dem Thema interessiert.  Ist man mit der Anbindung CalDAV own cloud schon weiter?

scheinbar nicht , ich habe das gerade so wie von Heiko R. beschrieben umgesetzt !

kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Zephyr

Ein etwas einfacherer Workaround als ihn Heiko R. beschreibt findet sich hier: Da wird einfach die URL des ownCloud Servers mit Benutzername und Passwort angesprochen, unter dem sich der Kalender befindet. Eine spezielle Unterstützung von Seiten des Calendar-Moduls ist gar nicht notwendig.

http://forum.fhem.de/index.php/topic,28667.msg215133.html#msg215133
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

fhemtobi

#13
Hi Zephyr,

das Einbinden mit URL-Auth funktioniert, wenn man via SSL ein richtiges Zertifikat hat oder ohne SSL auf den OwnCloud-Kalender zugreift.

Bei selbst erstellen Zertifikaten oder über einen SSL-Proxy muss man weiterhin den "Umweg" nehmen, die ics erst via wget herunterzuladen und dann per ical file lokal einzubinden.

Via wget kann ich dann die Option --no-check-certificate wählen.

1.) getcalendar.sh erstellen
2.) nun benutze ich allerdings diese wget Funktion:
wget --auth-no-challenge --output-document="/home/pi/calendar.ics" --auth-no-challenge --no-check-certificate --http-user="<username>" --http-password="password>" "https://ssl.webpack.de/<domain>/<verzeichnis>/remote.php/caldav/calendars/<owncloud-username>/<kalendername>?export"
3.) Rechte setzen (chown pi.pi ..., chmod 700 ... auf die Datei)
4.) getcalendar.sh in crontab eintragen (bei mir zieht er die Datei alle 15 Minuten)
5.) In fhem.cfg Kalender definieren: define cal_heizung Calendar ical file /home/pi/calendar.ics 840
6.) Test mit get cal_heizung ful all

Dann klappt's wunderbar.

VG,
Tobi

kvo1

Hi Tobi,

(alles guet noch für 2015)

wäre es Dir möglich, Deine Konfig (ohne SSL) hier zu posten (oder PW etc versteht sich  ;)  )

danke
kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB