Das Modul verwaltet die Verbindung zu einem Online-Kalenderkonto und stellt die Kalender dieses Kontos den untergeordneten Modulen zur Verfügung.
Für Apple iCloud wird ein anwendungsspezifisches Passwort benötigt. Das normale Kennwort des Apple Accounts sollte nicht verwendet werden.
Unter Instanz hinzufügen das Modul Kalender Konto auswählen.
| Eigenschaft | Beschreibung |
|---|---|
| Aktiv | Aktiviert die regelmäßige Synchronisation |
| Anbieter | Apple iCloud, Google Calendar, Microsoft 365, generischer CalDAV-Server oder ICS/Webcal |
| Server-URL | Bei Apple vorbelegt; ansonsten URL des CalDAV-Servers. Bei ICS/Webcal bleibt hier ein bereits vorhandenes einzelnes Abonnement aus Kompatibilitätsgründen erhalten |
| Kalendername | Optionale Bezeichnung des bisherigen einzelnen iCalendar-Abonnements |
| Benutzername | Benutzername beziehungsweise E-Mail-Adresse des Kontos; beim bisherigen einzelnen iCalendar-Abonnement optional |
| Passwort | Passwort oder anwendungsspezifisches Passwort; beim bisherigen einzelnen iCalendar-Abonnement optional |
| iCalendar-Abonnements | Liste zusätzlicher Feeds mit Aktivierung, Name, URL, optionalen Zugangsdaten, Titelübersetzung, Aktualisierungsplan und optionaler Farbe |
| Aktualisierungsplan | Vorgegebener Rhythmus von fünf Minuten bis jährlich oder ausschließlich manuelle Synchronisation; bei ICS/Webcal steuert er die erneute Kontosuche |
| Benutzerdefiniertes Intervall | Eigener Abstand in Minuten; wird nur beim Zeitplan „Benutzerdefiniertes Intervall“ angezeigt |
| TLS-Zertifikat prüfen | Nur für eigene CalDAV-Server und ICS/Webcal-Feeds einstellbar; für Apple, Google, Microsoft und Symcon OAuth ist die Prüfung immer aktiv |
| Zeitlimit der Anfrage | Maximale Dauer einer HTTP-Anfrage |
Über Verbindung testen wird die Anmeldung geprüft und die Anzahl der gefundenen Kalender ausgegeben. Jetzt synchronisieren aktualisiert den internen Kalendercache und informiert die verbundenen Child-Instanzen.
Bestehende Instanzen behalten ihren bisherigen Minutenwert als benutzerdefiniertes Intervall. Bei ICS/Webcal sollte der Zeitplan des Kontos passend zum Zeitplan der zugehörigen Kalenderinstanz gewählt werden, da beide Instanzen den Feed für unterschiedliche Aufgaben abrufen.
Das Konto-Modul verarbeitet Zugangsdaten, OAuth-Tokens sowie Kalender- und Termindaten. Die Daten werden grundsätzlich lokal in Symcon gespeichert oder zwischengespeichert. Google und Microsoft verwenden den zentralen Symcon-OAuth-Dienst. Die eigentlichen Kalenderdaten werden direkt zwischen der Symcon-Installation und Google Calendar beziehungsweise Microsoft Graph übertragen.
Ausführliche Angaben zu Datenarten, Speicherung, Löschung und Drittanbietern finden sich in den Datenschutzhinweisen. Vor dem Verbinden eines externen Kontos sollten diese Hinweise gelesen werden.
Nach Auswahl von Google Calendar werden Server-URL, Benutzername und Passwort ausgeblendet. Eine eigene Client-ID oder ein Clientschlüssel ist nicht erforderlich. Mit Google-Konto verbinden öffnet Symcon den zentral registrierten OAuth-Ablauf im Browser.
Einrichtung:
Das Modul speichert den benutzerspezifischen Refresh-Token intern und erneuert kurzlebige Access-Tokens über den Symcon-OAuth-Dienst automatisch. Google-Konto trennen widerruft den Token nach Möglichkeit bei Google und entfernt die lokal gespeicherten OAuth-Daten.
Bestehende Verbindungen aus Versionen mit persönlicher Google-Client-ID müssen nach dem Modulupdate einmal über Google-Konto verbinden neu autorisiert werden. Das Modul erkennt solche älteren Tokens und verwendet sie nicht am zentralen Symcon-OAuth-Endpunkt.
Der zentrale Google-Client verwendet die Redirect-URI
https://oauth.ipmagic.de/forward/opencalendar_google und die Scopes
https://www.googleapis.com/auth/calendar.calendarlist.readonly sowie
https://www.googleapis.com/auth/calendar.events. Der Identifier
opencalendar_google muss einmalig vom Modulautor beim Symcon-OAuth-Dienst
registriert werden. Die gegebenenfalls notwendige Google-Verifizierung richtet
sich nach Nutzerkreis und angeforderten Berechtigungen. Da die Redirect-URI auf
der Symcon-Domain ipmagic.de liegt, ist die Einrichtung einschließlich der
Google-Domainprüfung mit Symcon abzustimmen.
Eine externe Google-App im Status Testing eignet sich nur für die Entwicklung: Das verwendete Google-Konto muss als Testnutzer eingetragen sein und das Refresh-Token läuft bei den angeforderten Kalenderscopes nach sieben Tagen ab. Für den dauerhaften Einsatz muss die App in den Produktivstatus überführt und gegebenenfalls von Google verifiziert werden.
Kalender mit den Google-Rollen owner und writer werden als les- und schreibbar erkannt. reader wird schreibgeschützt angeboten. Einträge mit ausschließlich freeBusyReader werden nicht angelegt, weil sie keine Termindetails liefern.
Nach Auswahl von Microsoft 365 werden keine Client-ID und kein Clientschlüssel abgefragt. Mit Microsoft-Konto verbinden öffnet Symcon den zentral registrierten OAuth-Ablauf im Browser. Der Anwender meldet sich direkt bei Microsoft an und bestätigt ausschließlich den Zugriff auf seine Kalender.
Unterstützt werden Microsoft-365-Geschäfts-/Schulkonten und persönliche
Microsoft-Konten wie Outlook.com. Das Modul verwendet delegierten
Calendars.ReadWrite-Zugriff und einen Refresh-Token für den Hintergrundbetrieb.
Mail, Kontakte, OneDrive oder andere Microsoft-Graph-Bereiche werden nicht
angefordert.
Nach erfolgreicher Anmeldung genügt Jetzt synchronisieren. Die gefundenen
Kalender werden danach wie gewohnt im zugehörigen Kalender Konfigurator
angeboten. Microsofts canEdit-Angabe bestimmt, ob eine Kalenderinstanz
schreibbar oder schreibgeschützt angelegt wird.
Für Terminabfragen verwendet das Modul calendarView, sodass einzelne
Vorkommen von Terminserien im angeforderten Zeitraum aufgelöst geliefert
werden. Für Outlook-Ressourcen wird Prefer: IdType="ImmutableId" gesendet,
damit gespeicherte Termin-IDs möglichst stabil bleiben. HTTP-Weiterleitungen
und von Graph gelieferte Folgeseiten werden auf die vertrauenswürdige Origin
https://graph.microsoft.com beschränkt.
Bei bestehenden Microsoft-Onlinebesprechungen wird die Beschreibung in der Kalenderansicht bewusst nicht bearbeitbar angeboten. Microsoft legt darin Besprechungsinformationen ab, die bei einem unvollständigen Überschreiben verloren gehen könnten. Titel, Ort und Zeit können weiterhin geändert werden.
Der Refresh-Token wird als internes Attribut gespeichert; Access-Tokens liegen nur kurzzeitig im Instanzpuffer. Microsoft-Konto trennen löscht die lokal gespeicherten Microsoft-Zugangsdaten.
Für die zentrale OAuth-Anbindung muss der Modulautor den Identifier
opencalendar_microsoft einmalig beim Symcon-OAuth-Dienst registrieren lassen.
Die zugehörige Microsoft-Entra-App verwendet als Redirect-URI
https://oauth.ipmagic.de/forward/opencalendar_microsoft. Diese Einrichtung
findet einmalig für das Modul statt und ist keine Aufgabe des Endanwenders.
Nach Auswahl von ICS/Webcal können in der Liste iCalendar-Abonnements mehrere private oder öffentliche Feeds gemeinsam verwaltet werden. Jeder Eintrag besitzt:
#RRGGBBBleibt die Farbe leer, verwendet das Modul – sofern vorhanden – die Farbe aus
dem Feed. webcal:// wird automatisch über HTTPS abgerufen. Ein eingetragener
Kalendername überschreibt die im Feed enthaltene Eigenschaft X-WR-CALNAME.
Das Profil Öffentliche Google-Kalender - Deutsch übersetzt ausschließlich
bekannte englische Termintitel der Google-Kalender für Mondphasen und
Kalendertage. Beispielsweise werden Full Moon zu Vollmond und
Day 205 of 2026 zu Tag 205 von 2026. Eine gegebenenfalls angehängte
englische Uhrzeit wird in das deutsche 24-Stunden-Format umgewandelt. Andere
Termintitel bleiben unverändert. Bei übersetzten Terminen enthält
originalSummary weiterhin den Originaltitel. Der heruntergeladene Feed und
sein persistenter Cache werden nicht verändert.
Die bisherigen Felder iCalendar-URL, Kalendername, Benutzername, Passwort und Titelübersetzung bleiben für bereits eingerichtete Einzel-Feed-Konten rückwärtskompatibel. Der dort konfigurierte Feed wird zusätzlich zu den Listeneinträgen angeboten. Ist dieselbe URL bereits in der Liste enthalten, wird sie nicht doppelt angelegt.
Nach der Kontosynchronisation zeigt der zugehörige Konfigurator alle aktiven Abonnements als einzelne Kalender an. Die Kalender-Instanzen müssen dort erstellt werden. Der für einen Listeneintrag gewählte Aktualisierungsplan wird als Anfangskonfiguration der neu erzeugten Kalender-Instanz übernommen. Spätere Änderungen des Instanzzeitplans erfolgen in der jeweiligen Kalender-Instanz.
iCalendar-Abonnements sind grundsätzlich schreibgeschützt. Die Feed-URL kann – etwa bei Googles „Privatadresse im iCal-Format“ – selbst ein Zugangsgeheimnis enthalten und sollte daher wie ein Passwort behandelt werden.
Terminserien aus einem Feed werden lokal für den von der Kalenderinstanz angeforderten Zeitraum aufgelöst. Unterstützt werden tägliche, wöchentliche, monatliche und jährliche RRULE-Serien einschließlich INTERVAL, COUNT, UNTIL, BYDAY, BYMONTH, BYMONTHDAY, BYSETPOS und WKST. RDATE ergänzt einzelne Vorkommen, EXDATE entfernt sie und über RECURRENCE-ID gelieferte Änderungen oder Absagen ersetzen das zugehörige Serienvorkommen. Lokale Uhrzeiten werden in der angegebenen Zeitzone erzeugt, sodass sie auch über Sommer- und Winterzeitwechsel konstant bleiben.
Geheime Feed-Adressen werden nicht in die Terminvariable oder die Konfiguration einer erzeugten Kalenderinstanz übernommen. Sie verbleiben in der zugehörigen Konto-Instanz.
Jedes aktive iCalendar-Abonnement besitzt einen eigenen persistenten Feed-Cache:
ETag oder Last-Modified, sendet das Modul bei der
nächsten Abfrage If-None-Match beziehungsweise If-Modified-Since.304 Not Modified wird die bereits geprüfte lokale Feed-Version
wiederverwendet.408, 425, 429 oder
Serverfehlern ab 500 werden weiterhin die letzten gültigen Kalenderdaten
geliefert und als veraltet markiert.404 werden nicht
durch Cache-Daten verborgen.Verbindung testen prüft immer den aktuellen Serverzustand. Der Test meldet einen Fehler, selbst wenn noch eine verwendbare ältere Feed-Version vorhanden ist. Dadurch bleibt die Kalenderanzeige robust, ohne Konfigurations- oder Zugriffsprobleme zu verschleiern.
Kontostatus anzeigen enthält je Abonnement lastCheck, lastDownload,
lastChange, stale und lastError. Feed-Adressen und Feed-Inhalte werden
dabei nicht ausgegeben. Cache leeren entfernt sowohl die gefundenen
Kalender als auch sämtliche gespeicherten Feed-Versionen.
Unterstützte Anforderungen von Child-Modulen:
GetCalendarsDiscoverCalendarsGetEventsCreateEventUpdateEventDeleteEventSynchronizeTestConnectionNach einer erfolgreichen Synchronisation sendet das Konto CalendarsUpdated an seine Children.
Beispiel einer Anforderung:
{
"DataID": "{4E535B1D-69C7-AC77-1372-0282B21BAEC9}",
"Operation": "GetCalendars",
"RequestID": "example-1"
}
string IPSKALACC_TestConnection(int $InstanzID);
bool IPSKALACC_Synchronize(int $InstanzID);
string IPSKALACC_GetCalendars(int $InstanzID);
string IPSKALACC_GetAccountStatus(int $InstanzID);
void IPSKALACC_ClearCache(int $InstanzID);
string IPSKALACC_ConnectGoogle(int $InstanzID);
bool IPSKALACC_DisconnectGoogle(int $InstanzID);
string IPSKALACC_ConnectMicrosoft(int $InstanzID);
bool IPSKALACC_DisconnectMicrosoft(int $InstanzID);
Die Methoden mit komplexen Rückgabewerten liefern JSON. Passwörter und OAuth-Tokens werden weder in Rückgabewerte noch in Debugmeldungen geschrieben.