Wen man seinen Kalender auf einem CalDAV-Server (z.B. mittels NextCloud) hat, lässt sich dieser via python einfach auslesen.
Dies ergibt interessante Anwendungen; so könnte man beispielsweise einen Ferienkalender erstellen und dann mittels einem python Script Aktionen auslösen, welche nur bei an- oder Abwesenheit erfolgen sollen
Ich nutze diese dies um bei meinem KNX-Smarthome an jeden „normalen“ Wochentag, morgens die Läden automatisch hochzufahren, ausgenommen ich habe an einem Wochentag zufällig Ferien. 😉
Dazu nötig ist das python Modul: python-caldav.
#!/usr/bin/python
### Imports
from datetime import datetime, timedelta, time
import caldav
### Variables
url = "https://myuser:secret@cloud.example.org/remote.php/dav/calendars/myuser/ferien/"
today = datetime.combine(datetime.today(), time(0,0))
### Main
client = caldav.DAVClient(url)
principal = client.principal()
calendars = principal.calendars()
if len(calendars) > 0:
calendar = calendars[0]
events = calendar.date_search(today, datetime.combine(today, time(23,59,59,59)))
if len(events) == 0:
print "No events today!"
else:
print "Total {num_events} events:".format(num_events=len(events))
for event in events:
event.load()
e = event.instance.vevent
if e.dtstart.value.strftime("%H:%M") == "00:00":
# This is an "allday" event
eventTime = e.dtstart.value.strftime("%D")
print "{eventTime} {eventSummary} ({eventLocation})".format(eventTime=eventTime, eventSummary=e.summary.value, eventLocation=e.location.value)
else:
# This is a "normal" event
eventTime = e.dtstart.value.strftime("%H:%M")
print "{eventTime} {eventSummary} ({eventLocation})".format(eventTime=eventTime, eventSummary=e.summary.value, eventLocation=e.location.value)