ical
Einführung
Das iCal Plugin dient dazu, Kalender (online oder offline) einzulesen und nach Einträgen zu durchsuchen.
Konfiguration
Wichtig
Detaillierte Informationen zur Konfiguration des Plugins sind unter Plugin ‚ical‘ Konfiguration zu finden.
Kalenderdateien können in der etc/plugin.yaml als „Alias“ hinterlegt werden. Auf diese Kurznamen kann in weiterer Folge, z.B. in einer Logik referenziert werden.
# etc/plugin.yaml
ical:
plugin_name: ical
#calendars:
# - example:http://server.com/test.ics
#cycle: 3600
Außerdem können Kalender Items zugewiesen werden, indem das entsprechende Attribut im gewünschten Item angegeben wird. Das Item wird auf wahr gesetzt, sobald aktuell ein Event stattfindet.
# items/item.yaml
calendaritem:
type: bool
ical_calendar: test_downloaded.ics
Funktionen
Wichtig
Detaillierte Informationen zu den Funktionen des Plugins sind unter Plugin ‚ical‘ Konfiguration zu finden.
Beispiel
today = sh.now().date()
# To check a calendar file use one of the following three options:
# a) Local file
dir = sh.get_basedir()
calendarfile = '{}/var/ical/holidays.ics'.format(dir)
holidays = sh.ical(calendarfile)
# b) Reference a calendar defined in the etc/plugin.yaml. Query tomorrow
# The second found entry for an event should be considered.
holidays = sh.ical('holidays', delta=0, offset=1, prio=2)
# c) http(s) file, disabled https verification.
holidays = sh.ical('https://cal.server/holidays.ics', verify=false)
# Test if there is an entry for today or not.
if today in holidays:
logger.info('There is a calendar entry for today.')
else:
logger.info('No entry for today.')
# list all events of online calendar using given or default delta and offset
for day in holidays:
logger.info("Date: {0}".format(day))
for event in holidays[day]:
#The folloging code extracts the start time in python datetime format, already converted into the local time zone configured for smarthomeNG.
start = event['Start']
summary = event['Summary']
cal_class = event['Class']
logger.info("Time: {0} {1}".format(start, summary))
if 'testword' in str(summary).lower():
logger.info('calendar entry with testword found')
if start.date() == tomorrow:
logger.info('Testword calendar entry starts tommorrow')
if 'private' in str(cal_class).lower():
logger.info('Private calendar entry found.')