diff --git a/fhem/contrib/DS_Starter/57_SSCal.pm b/fhem/contrib/DS_Starter/57_SSCal.pm
index 5e4243d3a..12c4290db 100644
--- a/fhem/contrib/DS_Starter/57_SSCal.pm
+++ b/fhem/contrib/DS_Starter/57_SSCal.pm
@@ -252,7 +252,7 @@ sub SSCal_Define($@) {
readingsBeginUpdate ($hash);
readingsBulkUpdateIfChanged ($hash, "Errorcode", "none");
readingsBulkUpdateIfChanged ($hash, "Error", "none");
- readingsBulkUpdateIfChanged ($hash, "QueueLenth", 0); # Länge Sendqueue initialisieren
+ readingsBulkUpdateIfChanged ($hash, "QueueLength", 0); # Länge Sendqueue initialisieren
readingsBulkUpdate ($hash, "nextUpdate", "Manual"); # Abrufmode initial auf "Manual" setzen
readingsBulkUpdate ($hash, "state", "Initialized"); # Init state
readingsEndUpdate ($hash,1);
@@ -3168,7 +3168,7 @@ sub SSCal_updQLength ($;$) {
my $ql = keys %{$data{SSCal}{$name}{sendqueue}{entries}};
readingsBeginUpdate($hash);
- readingsBulkUpdate ($hash, "QueueLenth", $ql); # Länge Sendqueue updaten
+ readingsBulkUpdate ($hash, "QueueLength", $ql); # Länge Sendqueue updaten
readingsEndUpdate ($hash,1);
my $head = "next planned SendQueue start:";
@@ -3394,7 +3394,7 @@ sub SSCal_delReadings ($$) {
my ($name,$respts) = @_;
my ($lu,$rts,$excl);
- $excl = "Error|Errorcode|QueueLenth|state|nextUpdate";
+ $excl = "Error|Errorcode|QueueLength|state|nextUpdate";
$excl .= "|lastUpdate" if($respts);
my @allrds = keys%{$defs{$name}{READINGS}};
@@ -3991,7 +3991,7 @@ return $default;
1;
=pod
-=item summary module to integrate Synology Calendar
+=item summary Module to integrate Synology Calendar
=item summary_DE Modul zur Integration von Synology Calendar
=begin html
@@ -4011,7 +4011,522 @@ The guide for this module is currently only available in the german Wiki vorhanden.
+ Mit diesem Modul erfolgt die Integration des Synology Calendar Servers in FHEM.
+ Das Modul SSCal basiert auf Funktionen der Synology Calendar API.
+
+ Die Verbindung zum Kalenderserver erfolgt über eine Session ID nach erfolgreichem Login. Anforderungen/Abfragen des Servers
+ werden intern in einer Queue gespeichert und sequentiell abgearbeitet. Steht der Kalenderserver temporär nicht zur Verfügung,
+ werden die gespeicherten Abfragen nachgeholt sobald die Verbindung zum Server wieder funktioniert.
+
+ Es können sowohl Terminkalender (Events) und Aufgabenlisten (ToDo) verarbeitet werden. Für diese verschiedenen Kalenderarten
+ können verschiedene Device-Models definiert werden, Model Diary für Terminkalender und Model Tasks für
+ Aufgabenlisten.
+
+ Wenn sie über dieses Modul diskutieren oder zur Verbesserung des Moduls beitragen möchten, ist im FHEM-Forum ein Sammelplatz unter:
+ 57_SSCal - Modul für den Synology Kalender.
+
+ Weitere Infomationen zum Modul sind im FHEM-Wiki zu finden:
+ SSCal - Integration des Synology Calendar Servers.
+
+
+
+ Vorbereitung
+
+
+ Das Modul verwendet für HTTP-Calls die nichtblockierenden Funktionen von HttpUtils bzw. HttpUtils_NonblockingGet.
+ Weiterhin müssen diverse Perl-Module installiert sein wie unten angegeben.
+ Im Synology DSM wird ein User benutzt, der Mitglied der Administrator-Group sein muß und zusätzlich die benötigte Berechtigung
+ zum Lesen und/oder Schreiben der relevanten Kalender hat. Die Kalenderberechtigungen werden direkt in der
+ Synology Kalenderapplikation eingestellt.
+
+ Die Zugangsdaten werden später über ein Set credentials Kommando dem angelegten Device zugewiesen.
+
+
+ Überblick über die Perl-Module welche von SSCal genutzt werden:
+
+
+
+ JSON | |
+ Data::Dumper | |
+ MIME::Base64 | |
+ Time::HiRes | |
+ Encode | |
+ POSIX | |
+ HttpUtils | (FHEM-Modul) |
+ Blocking | (FHEM-Modul) |
+ Meta | (FHEM-Modul) |
+
+
+
+
+
+
+Definition
+
+
+ Bei der Definition wird zwischen einem Kalenderdevice für Termine (Events) und Aufagebn (Tasks) unterschieden.
+
+
+ Die Definition erfolgt mit:
+
+ define <Name> SSCal <ServerAddr> [<Port>] [<Protocol>] [Tasks]
+
+
+ Die Parameter beschreiben im Einzelnen:
+
+
+
+
+
+ Name | der Name des neuen Kalenderdevices in FHEM |
+ ServerAddr | die IP-Addresse der Synology DS. Hinweis: Wird ein Servername angegeben, sollte das Attribut dnsServer im glbal Device gesetzt werden ! |
+ Port | optional - Port der Synology DS (default: 5000). |
+ Protocol | optional - Protokoll zur Kommunikation mit dem Kalender-Server, http oder https (default: http). |
+ Tasks | optional - zur Definition einer Aufgabenliste wird "Tasks" hinzugefügt |
+
+
+
+
+ Beispiel:
+
+ define Appointments SSCal 192.168.2.10
+ define Appointments SSCal 192.168.2.10 5001 https
+ # erstellt Terminkalenderdevice mit Standardport (5000/http) bzw. https auf Port 5001
+
+ define Tasklist SSCal ds.myds.org 5001 https Tasks
+ # erstellt Aufgabenlistendevice mit https auf Port 5001
+
+
+ Nach der Definition eines Devices steht nur der set-Befehl credentials zur Verfügung.
+ Mit diesem Befehl werden zunächst die Zugangsparameter dem Device bekannt gemacht.
+
+ War der Login erfolgreich, werden alle dem User zugänglichen Kalender ermittelt und im
+ Attribut usedCalendars zur Auswahl bereitgestellt.
+
+
+
+
+Set
+
+
+
+ Die aufgeführten set-Kommandos sind sowohl für die Devicemodels Diary/Tasks oder teilweise nur für einen dieser Devicemodels gültig.
+
+
+
+
+ - calUpdate [<Kalenderliste>]
+
+ Ruft die Einträge der selektierten Kalender (siehe Attribut usedCalendars) ab.
+ Alternativ kann eine Komma getrennte Liste der abzufunden Kalender dem Befehl übergeben werden. Die Kalendernamen können Leerzeichen
+ enthalten.
+
+
+
+ Beispiel:
+
+ set Appointments calUpdate
+ # ruft die Einträge der im Attribut usedCalendars spezifizierten Kalender ab
+
+ set Appointments calUpdate Heikos Kalender,Abfall
+ # ruft die Einträge der Kalender "Heikos Kalender" und "Abfall" ab.
+
+
+
+
+
+
+
+ - cleanCompleteTasks (nur Model "Tasks")
+
+ In den selektierten Aufgabenlisten (siehe Attribut usedCalendars) werden alle
+ abgeschlossenen Aufgaben gelöscht.
+
+
+
+
+
+
+ - deleteEventId <Id>
+
+ Die angegebene Event Id (siehe Reading x_x_EventId) wird aus dem Kalender bzw. der Aufgabenliste gelöscht.
+
+
+
+
+
+
+ - credentials <User> <Passwort>
+
+ Speichert die Zugangsdaten.
+
+
+
+
+
+
+ - eraseReadings
+
+ Löscht alle Kalenderreadings.
+
+
+
+
+
+
+ - listSendqueue
+
+ Zeigt alle Einträge in der Sendequeue. Die Queue ist normalerweise nur kurz gefüllt, kann aber im Problemfall
+ dauerhaft Einträge enthalten. Dadurch kann ein bei einer Abrufaufgabe aufgetretener Fehler ermittelt und zugeordnet
+ werden.
+
+
+
+
+
+
+ - logout
+
+ Der User wird ausgeloggt und die Session mit der Synology DS beendet.
+
+
+
+
+
+
+ - purgeSendqueue
+
+ Löscht Einträge in der Sendequeue. Es stehen verschiedene Optionen je nach Situation zur Verfügung:
+
+
+
+ -all- | löscht alle in der Sendequeue vorhandenen Einträge |
+ -permError- | löscht alle Einträge, die durch einen permanenten Fehler von der weiteren Verarbeitung ausgeschlossen sind |
+ <Index> | löscht einen eindeutigen Eintrag der Sendequeue |
+
+
+
+
+
+
+
+
+ - restartSendqueue
+
+ Die Abarbeitung der Einträge in der Sendequeue wird manuell neu angestoßen. Normalerweise nicht nötig, da die Sendequeue bei der
+ Initialisierung jedes neuen Abrufs impliziz neu gestartet wird.
+
+
+
+
+
+
+
+Get
+
+
+
+
+
+ - apiInfo
+
+ Ruft die API Informationen des Synology Calendar Servers ab und öffnet ein Popup mit diesen Informationen.
+
+
+
+
+
+
+ - calAsHtml
+
+ Zeigt ein Popup mit einer Terminübersicht. In eigenen perl-Routinen und für die Einbindung in weblink kann
+ diese Übersicht aufgerufen werden mit:
+
+
+ { SSCal_calAsHtml ("<SSCal-Device>") }
+
+
+
+
+
+
+
+ - getCalendars
+
+ Ruft die auf der Synology vorhandenen Kalender ab und öffnet ein Popup mit Informationen über die jeweiligen Kalender.
+
+
+
+
+
+
+
+ - storedCredentials
+
+ Zeigt die gespeicherten User/Passwort Kombination.
+
+
+
+
+
+
+
+ - versionNotes
+
+ Zeigt Informationen und Hilfen zum Modul.
+
+
+
+
+
+
+
+Attribute
+
+
+
+
+
+ - asyncMode
+
+ Wenn "1" wird das Datenparsing in einen Hintergrundprozess ausgelagert und vermeidet Blockierungssituationen.
+ (default: 0)
+
+
+
+
+
+
+ - createATDevs
+
+ Wenn "1" werden bei der Erkennung von FHEM-Kommandos bzw. auszuführenden Perl-Routinen im Kalendereintrag durch SSCal
+ automatisiert at-Devices zur termingerechten Ausführung dieser Kommandos erstellt, geändert und gelöscht.
+ Auszuführende FHEM-Kommandos werden in { } eingeschlossen im Feld Beschreibung im Synology Kalender WebUI
+ hinterlegt, Perl Routinen werden in doppelte {{ }} eingeschlossen.
+ Lesen sie bitte dazu die detailliierte Beschreibung im Wiki Abschnitt
+ at-Devices für Steuerungen automatisch erstellen und verwalten lassen.
+
+ (default: 0)
+
+
+
+
+
+
+ - cutOlderDays
+
+ Terminkalendereinträge und Aufgabenkalendereinträge mit Fälligkeitstermin älter als die angegeben Tage werden von der
+ Verarbeitung ausgeschlossen.
+ (default: 5)
+
+
+ Beispiel:
+
+ attr <Name> cutOlderDays 30
+
+
+
+
+
+
+
+ - cutLaterDays
+
+ Terminkalendereinträge und Aufgabenkalendereinträge mit Fälligkeitstermin später als die angegeben Tage werden von der
+ Verarbeitung ausgeschlossen.
+ (default: 5)
+
+
+ Beispiel:
+
+ attr <Name> cutLaterDays 90
+
+
+
+
+
+
+
+ - filterCompleteTask (nur Model "Tasks")
+
+ Es werden Einträge in Aufgabenkalendern entsprechend der Fertigstellung gefiltert:
+
+
+
+
+ 1 | nur fertig gestellte Aufgaben werden angezeigt |
+ 2 | nur nicht fertige Aufgaben werden angezeigt |
+ 3 | es werden fertige und nicht fertige Aufgaben angezeigt (default) |
+
+
+
+
+
+
+
+
+ - filterDueTask (nur Model "Tasks")
+
+ Es werden Einträge in Aufgabenkalendern mit/ohne Fälligkeit gefiltert:
+
+
+
+
+ 1 | nur Einträge mit Fälligkeitstermin werden angezeigt |
+ 2 | nur Einträge ohne Fälligkeitstermin werden angezeigt |
+ 3 | es werden Einträge mit und ohne Fälligkeitstermin angezeigt (default) |
+
+
+
+
+
+
+
+
+ - interval
+
+ Automatischer Abrufintervall der Kalendereintträge in Sekunden. Ist "0" agegeben, wird kein automatischer Datenabruf
+ ausgeführt. (default)
+ Sollen z.B. jede Stunde die Einträge der gewählten Kalender abgerufen werden, wird das Attribut wie
+ folgt gesetzt:
+
+
+ attr <Name> interval 3600
+
+
+
+
+
+
+
+ - loginRetries
+
+ Anzahl der Versuche für das inititiale User login.
+ (default: 3)
+
+
+
+
+
+
+ - showRepeatEvent (nur Model "Diary")
+
+ Wenn "true" werden neben einmaligen Terminen ebenfalls wiederkehrende Termine ausgewertet.
+ (default: true)
+
+
+
+
+
+
+ - showPassInLog
+
+ Wenn "1" wird das Passwort bzw. die SID im Log angezeigt.
+ (default: 0)
+
+
+
+
+
+
+ - tableColumnMap
+
+ Legt fest, wie der Link zur Karte in der Tabellspalte "Map" bzw. "Karte" gestaltet wird:
+
+
+
+
+ icon | es wird ein durch den User anpassbares Symbol angezeigt (default) |
+ data | es werden die GPS-Daten angezeigt |
+ text | es wird ein durch den Nutzer einstellbarer Text verwendet |
+
+
+
+
+ Der Nutzer kann weitere Anpassungen des verwendeten Icons oder Textes in den Eigenschaften des Attributs tableSpecs
+ vornehmen. Für detailliierte Informationen dazu siehe Wiki-Kapitel
+ Darstellung der Übersichtstabelle in Raum- und Detailansicht beeinflussen.
+
+
+
+
+
+
+
+ - tableInDetail
+
+ Eine Termin/Aufgabenübersicht wird in der Detailansicht erstellt bzw. ausgeschaltet.
+ (default: 1)
+
+
+
+
+
+
+ - tableInRoom
+
+ Eine Termin/Aufgabenübersicht wird in der Raumansicht erstellt bzw. ausgeschaltet.
+ (default: 1)
+
+
+
+
+
+
+ - tableFields
+
+ Auswahl der in der Termin/Aufgabenübersicht (Raum- bzw. Detailansicht) anzuzeigenden Felder über eine Drop-Down
+ Liste.
+
+
+
+
+
+
+
+
+ - timeout
+
+ Timeout für den Datenabruf in Sekunden.
+ (default: 20)
+
+
+
+
+
+
+ - usedCalendars
+
+ Auswahl der abzurufenden Kalender über ein Popup. Die Liste der Kalender wird beim Start des Moduls initial gefüllt,
+ kann danach aber ebenfalls durch den Befehl:
+
+
+ get <Name> getCalendars
+
+
+
+ manuell ausgeführt werden.
+ Wurde noch kein erfolgreicher Kalenderabruf ausgeführt, enthält dieses Attribut lediglich den Eintrag:
+
+
+ --wait for Calendar list--
+
+
+
+
+
+
+
@@ -4046,6 +4561,7 @@ Die Beschreibung des Moduls ist momentan nur im