Metainformationen zur Seite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
plugins:caldav_4_lox:start [2022/09/11 19:51] Michael Schlenstedtplugins:caldav_4_lox:start [2024/03/19 05:56] (aktuell) – Struct-Daten geändert Michael Schlenstedt
Zeile 1: Zeile 1:
-====== CalDAV-4-Lox  ======+====== CalDAV-4-Lox ======
  
 ++++ Version History...| ++++ Version History...|
Zeile 51: Zeile 51:
  
 ++++ ++++
- 
  
 ---- ----
Zeile 57: Zeile 56:
 ===== Konfigurationsoptionen ===== ===== Konfigurationsoptionen =====
  
-{{plugins:caldav_4_lox:1192493718.jpg?h=250}} +{{plugins:caldav_4_lox:1192493718.jpg?600}}
- +
  
-  * Depth: Als einzige Einstellung lässt sich das Plugin mit dieser Option an den verwendeten CalDAV-Server anpassen. Einige Server erwarten für die Abfrage eine Abfragetiefe von 0, andere eine 1. Da neuere Server meistens Depth 1 verwenden ist dies als Standard hier eingestellt. Sollte trotz korrekter URL zum Kalender kein Termin gefunden werden, kann die Einstellung 0 hier zum Erfolg führen.+  * ''Depth'': Als einzige Einstellung lässt sich das Plugin mit dieser Option an den verwendeten CalDAV-Server anpassen. Einige Server erwarten für die Abfrage eine Abfragetiefe von 0, andere eine 1. Da neuere Server meistens Depth 1 verwenden ist dies als Standard hier eingestellt. Sollte trotz korrekter URL zum Kalender kein Termin gefunden werden, kann die Einstellung 0 hier zum Erfolg führen.
  
 ===== Einrichtungshilfe ===== ===== Einrichtungshilfe =====
Zeile 75: Zeile 72:
 Wie funktioniert nun das Ganze? Wie funktioniert nun das Ganze?
  
-Das Plugin so konzipiert, dass im Plugin selbst keine Einstellungen vorgenommen werden müssen. Alle Daten, die zum Abfragen des Kalenders benötigt werden, werden in der URL des HTTP-Einganges als Parameter angegeben. So ist es auch möglich verschiedene Kalender auf unterschiedlichen Servern abzufragen.+Das Plugin ist so konzipiert, dass im Plugin selbst keine Einstellungen vorgenommen werden müssen. Alle Daten, die zum Abfragen des Kalenders benötigt werden, werden in der URL des HTTP-Einganges als Parameter angegeben. So ist es auch möglich verschiedene Kalender auf unterschiedlichen Servern abzufragen.
  
-Solch eine URL sieht in etwas so aus: http:%%//%%loxberry/plugins/caldav4lox/caldav.php?calURL=http%3A%%//%%localhost/remote.php/caldav/calendars/USER/defaultcalendar&user=USER&pass=PASSWORT&fwdays=5&events=abfuhr+Solch eine URL sieht in etwas so aus: 
 + 
 +**''http:%%//%%loxberry/plugins/caldav4lox/caldav.php?calURL=http%3A%%//%%localhost/remote.php/caldav/calendars/USER/defaultcalendar&user=USER&pass=PASSWORT&fwdays=5&events=abfuhr''**
  
 Die einzelnen Angaben bedeuten folgendes: Die einzelnen Angaben bedeuten folgendes:
  
-  * http:%%//%%loxberry/plugins/caldav4lox/caldav.php? - ist die Adresse des Plugin auf dem LoxBerry. Dieser ist unter Umständen anzupassen. +  * ''http:%%//%%loxberry/plugins/caldav4lox/caldav.php?'' - ist die Adresse des Plugin auf dem LoxBerry. Dieser ist unter Umständen anzupassen. 
-  * calURL - ist die URL des entsprechenden Kalenders so wie sie z.B. im Thunderbird/Lightning anzugeben ist. Bei den meisten Kalendern kann man diese URL in den Eigenschaften des Kalenders in Erfahrung bringen. Bei OwnCloud z.B. ist neben dem Kalendernamen auch ein Linksymbol mit dem Hilfetext "CalDAV-Link". Klickt man dieses Symbol an, erscheint unter den Kalendern ein Textfeld mit dem benötigten Link. Es ist aber darauf zu achten, dass hier der Doppelpunkt hinter http(s) in %3A geändert werden muss. +  * ''calURL'' - ist die URL des entsprechenden Kalenders so wie sie z.B. im Thunderbird/Lightning anzugeben ist. Bei den meisten Kalendern kann man diese URL in den Eigenschaften des Kalenders in Erfahrung bringen. Bei OwnCloud z.B. ist neben dem Kalendernamen auch ein Linksymbol mit dem Hilfetext "CalDAV-Link". Klickt man dieses Symbol an, erscheint unter den Kalendern ein Textfeld mit dem benötigten Link. Es ist aber darauf zu achten, dass hier der Doppelpunkt hinter http(s) in %3A geändert werden muss (Urlencoded). Tipp: Gebt die URL einmal im Browser ein, er wandelt sie automatisch "urlencoced" um
-  * user - Euer Benutzername für den Kalender +  * ''user'' - Euer Benutzername für den Kalender 
-  * pass - Euer Passwort für den Kalender +  * ''pass'' - Euer Passwort für den Kalender 
-  * fwdays - da man keine Möglichkeit hat eine flexible Zeitspanne in die URL einzufügen, habe ich diese Variante gewählt. hier wird die Anzahl der Tage angegeben, für die im Voraus im Kalender nachgesehen werden soll. Vom aktuellen Datum der Anfrage an. Null für nur den aktuellen Tag. Wird der Parameter nicht angegeben, wird 0 angenommen. +  * ''fwdays'' - da man keine Möglichkeit hat eine flexible Zeitspanne in die URL einzufügen, habe ich diese Variante gewählt. hier wird die Anzahl der Tage angegeben, für die im Voraus im Kalender nachgesehen werden soll. Vom aktuellen Datum der Anfrage an. Null für nur den aktuellen Tag. Wird der Parameter nicht angegeben, wird 0 angenommen. 
-  * delay (im Beispiel nicht benutzt) - ist die Anzahl der Minuten, die vor und nach der aktuellen Zeit nachgesehen wird. Wird der Parameter nicht angegeben, wird 60 bentzt. (Beispiel: ein Termin 14:30 - 15:00 Uhr im Kalender, wird zwischen 13:30Uhr und 16:00Uhr angezeigt wenn delay nicht angegeben wurde. +  * ''delay'' (im Beispiel nicht benutzt) - ist die Anzahl der Minuten, die vor und nach der aktuellen Zeit nachgesehen wird. Wird der Parameter nicht angegeben, wird 60 bentzt. (Beispiel: ein Termin 14:30 - 15:00 Uhr im Kalender, wird zwischen 13:30Uhr und 16:00Uhr angezeigt wenn delay nicht angegeben wurde. 
-  * events - eine Liste der Terminnamen im Kalender, nach denen gesucht werden soll mit Pipe/senkrechter Strich getrennt (ich habe keine Leerzeichen/Sonderzeichen getestet, doch ich denke mal, man sollte darauf verzichten). Es wird auch nach Wortteilen gesucht. Ein Termin "Muellabfuhr" wird also auch durch Angabe von "llabf" gefunden. +  * '' events'' - eine Liste der Terminnamen im Kalender, nach denen gesucht werden soll mit Pipe/senkrechter Strich getrennt (ich habe keine Leerzeichen/Sonderzeichen getestet, doch ich denke mal, man sollte darauf verzichten). Es wird auch nach Wortteilen gesucht. Ein Termin "Muellabfuhr" wird also auch durch Angabe von "llabf" gefunden. 
-  * cache (im Beispiel nicht benutzt) - ist die Anzahl der Minuten, die eine Google Kalenderabfrage auf dem LoxBerry zwischengespeichert und benutzt wird bis der Google Kalender erneut "befragt" wird.+  * ''cache'' (im Beispiel nicht benutzt) - ist die Anzahl der Minuten, die eine Google Kalenderabfrage auf dem LoxBerry zwischengespeichert und benutzt wird bis der Google Kalender erneut "befragt" wird.
  
 Hier noch ein paar Infos für die Google Jünger: Eine richtige CalDAV Abfrage mit Username und Passwort ist gegen den Google Kalender nicht so einfach. Die Alternative dazu ist die Verwendung der Privatadresse des Kalenders - siehe [[https://loxwiki.atlassian.net/wiki/pages/resumedraft.action?draftId=1192493719#EinrichteneinesGoogleKalenders|CalDAV-4-Lox#Einrichten eines Google Kalenders]] Hier noch ein paar Infos für die Google Jünger: Eine richtige CalDAV Abfrage mit Username und Passwort ist gegen den Google Kalender nicht so einfach. Die Alternative dazu ist die Verwendung der Privatadresse des Kalenders - siehe [[https://loxwiki.atlassian.net/wiki/pages/resumedraft.action?draftId=1192493719#EinrichteneinesGoogleKalenders|CalDAV-4-Lox#Einrichten eines Google Kalenders]]
Zeile 94: Zeile 93:
 Als Rückgabe erhält der virtuelle HTTP-Eingang Daten wie folgende: Als Rückgabe erhält der virtuelle HTTP-Eingang Daten wie folgende:
  
-<code>+<code json>
 { {
-</code> 
- 
-<code> 
 "Muellabfuhr": { "Muellabfuhr": {
-</code> 
- 
-<code> 
 "Start": 194832000, "Start": 194832000,
-</code> 
- 
-<code> 
 "End": 194918400, "End": 194918400,
-</code> 
- 
-<code> 
 "Description": "gelbe Tonne=1", "Description": "gelbe Tonne=1",
-</code> 
- 
-<code> 
 "fwDay": 1, "fwDay": 1,
-</code> 
- 
-<code> 
 "wkDay": 5 "wkDay": 5
-</code> 
- 
-<code> 
 } }
-</code> 
- 
-<code> 
 "MSTest": { "MSTest": {
-</code> 
- 
-<code> 
 "Start": 194802300, "Start": 194802300,
-</code> 
- 
-<code> 
 "End": 194804100, "End": 194804100,
-</code> 
- 
-<code> 
 "Description": "", "Description": "",
-</code> 
- 
-<code> 
 "fwDay": 0, "fwDay": 0,
-</code> 
- 
-<code> 
 "wkDay": 4 "wkDay": 4
-</code> 
- 
-<code> 
 } }
-</code> 
- 
-<code> 
 "now": 194801634 "now": 194801634
-</code> 
- 
-<code> 
 } }
 </code> </code>
  
-\\+Das Ergebnis ist wird im JSON Format ausgegeben. Für jeden Suchbegriff gibt es ein Objekt. Gibt es zu dem Suchbegriff keine aktuellen Termin, so sind die Werte **-1** und Description **""**. Die zurückgegebenen Zeitwerte sind Loxone Zeitwerte und können über ''<v.u>'' humanreadable angezeigt werden. Zum Vergleich der Zeit mit der aktuellen Loxone-Zeit muss erst aus den Zeitvariablen des Systems die Loxone-Zeit errechnet werden. Das geht über einen Formelbaustein mit Eingängen **AI1 = Tage seit 2009**, **AI2 = Stunde**, **AI3 = Minuten** und **AI3 = Sekunden** und der Formel ''((I1*24+I2)*60+I3)*60+I4''
  
- +**//Description//** sind die Notizen zum Termin. Hier unterscheide ich z.B. welche Tonne abgeholt wird. **//fwDay//** ist der Tag in der Zukunft, an dem der Termin stattfindet. Rufst Du Montags ab und hast ''fwdays=5'' angegeben und der Termin, der gefunden wurde ist am Mittwoch, so ist der Wert 2. **//wkDay//** ist der Wochentag des Termins 1=Mo bis 7=So. Im vorigen Beispiel wäre das also 3. **//now//** ist die aktuelle Zeit zur Antwortzeit. Diese kann für Vergleiche/Berechnungen im Programm verwendet werden.
-Das Ergebnis ist dann im JSON Format. Für jeden Suchbegriff gibt es ein Objekt. Gibt es zu dem Suchbegriff keine aktuellen Termin, so sind die Werte -1 und Description "". Die zurückgegebenen Zeitwerte sind Loxone Zeitwerte und können über <v.u> humanreadable angezeigt werden. Zum Vergleich der Zeit mit der aktuellen Loxone-Zeit muss erst aus den Zeitvariablen des Systems die Loxone-Zeit errechnet werden. Das geht über einen Formelbaustein mit Eingängen AI1 = Tage seit 2009, AI2 = Stunde, AI3 = Minuten und AI3 = Sekunden und der Formel ((I1*24+I2)*60+I3)*60+I4 +
- +
-Description sind die Notizen zum Termin ... hier kann man weitere Infos eingeben. Hier unterscheide ich z.B. welche Tonne abgeholt wird. fwDay ist der Tag in der Zukunft, an dem der Termin stattfindet. Rufst Du Montags ab und hast fwdays=5 angegeben und der Termin, der gefunden wurde ist am Mittwoch, so ist der Wert 2. wkDay ist der Wochentag des Termins 1=Mo 7=So. Im vorigen Beispiel wäre das also 3. now ist die aktuelle Zeit zur Antwortzeit. Diese kann für Vergleiche/Berechnungen im Programm verwendet werden.+
  
 ===== MQTT-Support ===== ===== MQTT-Support =====
  
-Mit Version 1.0.2 wurde der MQTT-Support eingefügt. Die MQTT Funktionalität bezieht sich in diesem Fall auf das Publizieren von Nachrichten. Für diese Funktion ist das installierte MQTT-Gateway Plugin von [[https://loxwiki.atlassian.net/wiki/people/6166fb1fc5388b0069f9351f?ref=confluence|Christian Fenzl]] notwendig und wird dann auch automatisch verwendet. Der Vorteil dieser Variante liegt darin, dass es auf diesem Weg z.B. einfach möglich wird, Texte auf den MiniServer zu übertragen.+Mit Version 1.0.2 wurde der MQTT-Support eingefügt. Die MQTT Funktionalität bezieht sich in diesem Fall auf das Publizieren von Nachrichten. Für diese Funktion ist das installierte MQTT-Gateway Plugin von [[https://loxwiki.atlassian.net/wiki/people/6166fb1fc5388b0069f9351f?ref=confluence|Christian Fenzl]] notwendig (in LoxBerry 3.0 ist es bereits enthalten!) und wird dann auch automatisch verwendet. Der Vorteil dieser Variante liegt darin, dass es auf diesem Weg z.B. einfach möglich wird, Texte auf den MiniServer zu übertragen.
  
-Die verwendeten Topics folgen einem Schema. Das Topic beginnt mit ''%%caldav4lox/events/%%''. Es folgt der übergebene Suchbegriff und daran anschließend dann sämtliche Werte, die auch im JSON übergeben werden. Wenn also als gesuchtes Event „Test“ angegeben wird, dann wäre das Topic ''%%caldav4lox/events/Test/%%''. Wenn man die Description dann im Miniserver erhalten will, würde man caldav4lox/events/Test/description verwenden. +Die verwendeten Topics folgen einem Schema. Das Topic beginnt mit ''%%caldav4lox/events/%%''. Es folgt der übergebene Suchbegriff und daran anschließend dann sämtliche Werte, die auch im JSON übergeben werden. Wenn also als gesuchtes Event „Test“ angegeben wird, dann wäre das Topic ''%%caldav4lox/events/Test/%%''. Wenn man die Description dann im Miniserver erhalten will, würde man ''caldav4lox/events/Test/description'' verwenden. 
  
 Einrichtung: Einrichtung:
Zeile 188: Zeile 136:
     - Die Virtuellen Ausgangsbefehle auf eine Seite ziehen und einen Trigger anschließen (z.B. Stundenimpuls)     - Die Virtuellen Ausgangsbefehle auf eine Seite ziehen und einen Trigger anschließen (z.B. Stundenimpuls)
     - Im MQTT Gateway die "Incoming Overview" öffnen. Dort werden die Daten angezeigt.     - Im MQTT Gateway die "Incoming Overview" öffnen. Dort werden die Daten angezeigt.
-    - Entsprechend [[plugins:mqtt_gateway:mqtt_schritt_fur_schritt_mqtt_loxone|MQTT - Schritt für Schritt: MQTT -> Loxone]] virtuelle Eingänge für die Daten von CalDAV anlegen+    - Entsprechend [[konfiguration:widget_help:widget_mqtt:mqtt_gateway:mqtt_schritt_fur_schritt_mqtt_loxone|MQTT - Schritt für Schritt: MQTT -> Loxone]] virtuelle Eingänge für die Daten von CalDAV anlegen
  
 Bitte beachten, dass das MQTT Gateway identische Daten nicht mehrfach an den Miniserver sendet (Cache).  Bitte beachten, dass das MQTT Gateway identische Daten nicht mehrfach an den Miniserver sendet (Cache). 
Zeile 202: Zeile 150:
 ===== Einrichtung eines iCloud Kalenders ===== ===== Einrichtung eines iCloud Kalenders =====
  
-Zuerst müsst ihr diese Anleitung abarbeiten: https://community.openhab.org/t/solved-apple-icloud-caldav-connection/32510\\ +Zuerst müsst ihr diese Anleitung abarbeiten: [[https://community.openhab.org/t/solved-apple-icloud-caldav-connection/32510]]\\  (Arbeitszeit ca. 15 Minuten)
-(Arbeitszeit ca. 15 Minuten)+
  
-Apple arbeitet auch mit **Depth:1.**\\ +Apple arbeitet auch mit **Depth:1.**\\  \\  Dann könnt ihr euren Link zu dem Kalender **URL des Kalenders:** eintragen. Im Anschluss gebt ihr noch euren Benutzernamen und als Passwort das bei Apple generierte Passowrt ein - **nicht euer Apple-ID Passwort!**
-\\ +
-Dann könnt ihr euren Link zu dem Kalender **URL des Kalenders:** eintragen. Im Anschluss gebt ihr noch euren Benutzernamen und als Passwort das bei Apple generierte Passowrt ein - **nicht euer Apple-ID Passwort!**+
  
-**{{plugins:caldav_4_lox:1244333272.png?h=250}}**+{{plugins:caldav_4_lox:1244333272.png?600}}
  
 ===== Einrichtung eines Nextcloud Kalenders ===== ===== Einrichtung eines Nextcloud Kalenders =====
  
-Meldet euch in der Nextcloud an und öffnet euren Kalender. In der Kalender APP könnt ihr den Kalender über "..." einen Link erzeugen.\\ +Meldet euch in der Nextcloud an und öffnet euren Kalender. In der Kalender APP könnt ihr den Kalender über "..." einen Link erzeugen.\\  \\
-\\+
  
- +{{plugins:caldav_4_lox:1254687438.png?250}}
-{{plugins:caldav_4_lox:1254687438.png?h=250}}+
  
 Den Wert "Depth:" stellt ihr auf **1.** Den Wert "Depth:" stellt ihr auf **1.**
Zeile 225: Zeile 168:
 Die Felder "**Kalender-User:**" und "**Passwort des Kalender-Users:**" füllt ihr mit euren Nextclouddaten. Die Felder "**Kalender-User:**" und "**Passwort des Kalender-Users:**" füllt ihr mit euren Nextclouddaten.
  
-{{plugins:caldav_4_lox:1254687439.png?h=250}}+{{plugins:caldav_4_lox:1254687439.png?600}}
  
 Wenn ihr nun auf "Angaben testen" klickt sollte euch der nächste Termin aus eurem Kalender angezeigt werden. Wenn ihr nun auf "Angaben testen" klickt sollte euch der nächste Termin aus eurem Kalender angezeigt werden.
  
-{{plugins:caldav_4_lox:1254687440.png?h=250}}+{{plugins:caldav_4_lox:1254687440.png?600}}
  
 Die "**URL für den virtuellen HTTP-Eingang:**" könnt ihr dann in der Loxone Config als Virtuellen HTTP Eingang benutzen. Die "**URL für den virtuellen HTTP-Eingang:**" könnt ihr dann in der Loxone Config als Virtuellen HTTP Eingang benutzen.
  
-{{plugins:caldav_4_lox:1254687441.png?h=216}}+{{plugins:caldav_4_lox:1254687441.png?450}}
  
 Den Abfragezyklus könnt ihr auf 86400 (ein Tag) einstellen. Den Abfragezyklus könnt ihr auf 86400 (ein Tag) einstellen.
Zeile 239: Zeile 182:
 ===== Einrichten eines Google Kalenders ===== ===== Einrichten eines Google Kalenders =====
  
-Depth: 1+''Depth: 1''
  
-Auf https://calendar.google.com/ zu den Einstellungen des Kalenders gehen (oben Zahnrad / "Einstellungen" / "Einstellungen für meine Kalender" / Kalender auswählen), dort dann unter "Kalender integrieren" die "Privatadresse im iCal Format" kopieren und im Feld URL des Kalenders eingeben+Auf [[https://calendar.google.com/]] zu den Einstellungen des Kalenders gehen (oben Zahnrad / "Einstellungen" / "Einstellungen für meine Kalender" / Kalender auswählen), dort dann unter "Kalender integrieren" die "Privatadresse im iCal Format" kopieren und im Feld URL des Kalenders eingeben
  
 User: und Passwort: leer lassen User: und Passwort: leer lassen
Zeile 254: Zeile 197:
  
 ===== Fehler melden ===== ===== Fehler melden =====
- 
  
 Fehlerberichte bitte direkt im [[https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/60811-loxberry-caldav-4-lox-plugin-verf%C3%BCgbar|Loxforum]] melden. Fehlerberichte bitte direkt im [[https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/60811-loxberry-caldav-4-lox-plugin-verf%C3%BCgbar|Loxforum]] melden.
- 
- 
- 
  
  
Zeile 266: Zeile 205:
 pluginuebersicht.logo : :plugins:caldav_4_lox:1192493679.png pluginuebersicht.logo : :plugins:caldav_4_lox:1192493679.png
 pluginuebersicht.status : STABLE pluginuebersicht.status : STABLE
-pluginuebersicht.version : 1.0.2+pluginuebersicht.version : 2.0.1.1
 pluginuebersicht.min_lb_version : 1.2 pluginuebersicht.min_lb_version : 1.2
-pluginuebersicht.url_release : https://github.com/svethi/LoxBerry-CalDAV4Lox/archive/caldav4lox-1.0.2.zip+pluginuebersicht.url_release : https://github.com/svethi/LoxBerry-CalDAV4Lox/archive/refs/tags/caldav4lox-2.0.1.1.zip
 pluginuebersicht.url_prerelease :  pluginuebersicht.url_prerelease : 
 pluginuebersicht.description : Das CalDAV Plugin bietet die Möglichkeit, Kalendereinträge in CalDAV oder Google Kalendern für Funktionen aller Art im Loxone MiniServer zu verwenden. pluginuebersicht.description : Das CalDAV Plugin bietet die Möglichkeit, Kalendereinträge in CalDAV oder Google Kalendern für Funktionen aller Art im Loxone MiniServer zu verwenden.