LoxBerry: CalDAV-4-Lox Plugin verfügbar.

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • SmartRalf
    Dumb Home'r
    • 08.07.2020
    • 14

    Hallo zusammen,

    ich hatte das Plugin schon am Laufen. Inzwischen wurde aus meiner ownCloud eine nextCloud auf einem neuen Server und jetzt bekomm ich es nicht mehr hin. URL ist m. E. korrekt, Benutzername und Passwort ebenso - Sonderzeichen habe ich zum Test aus dem Passwort mal rausgenommen. Der Kalender "gehört" einem anderen User in meiner nextCloud, ist aber für meinen User "smarthome" freigegeben (mal nur lesen, mal auch schreibend).

    Beim Versuch über die nextCloud bekomme ich folgendes zurück (im Plugin wie über Browser - in Loxone kommt erwartungsgemäß dann nur die -1 an beim Filter auf Tage):
    401401{
    "": {
    "Start": -1,
    "End": -1,
    "Summary": "",
    "Description": "",
    "fwDay": -1,
    "wkDay": -1,
    "now": 473463482
    },
    "now": 473463482
    }​

    Ein Test mit meinem GMX-Account liefert folgendes Ergebnis:
    401400{
    "": {
    "Start": -1,
    "End": -1,
    "Summary": "",
    "Description": "",
    "fwDay": -1,
    "wkDay": -1,
    "now": 473463132
    },
    "now": 473463132
    }

    Möglicherweise ist der unterschiedliche erste Wert - 401401 bzw. 401400 - ein Hinweis auf ein Problem?

    LoxBerry habe ich bereits neu gestartet. Ich nutze LoxBerry 3.0.0.6 und das Plugin in Version 2.0.1.1​. Ich habe nun auch mal den LogLevel auf "Debug" gesestzt und diese - m. E. völlig fehlerfreie - Ausgabe im Log-Viewer gefunden:
    21:52:57.685 INFO: LoxBerry Version 3.0.0.6 ( is_raspberry.cfg is_arch_armv7l.cfg )
    21:52:57.685 INFO: CalDAV-4-Lox Version 2.0.1.1
    21:52:57.685 INFO: Loglevel: 7
    21:52:57.691 Read system settings
    21:52:57.698 Done
    21:52:57.698 retrieve values from URL
    21:52:57.700 Done
    21:52:57.700 read CalDAV-4-Lox settings
    21:52:57.701 Done
    21:52:57.701 retrieve the local ip
    21:52:57.758 localIP: 192.168.10.44
    21:52:57.758 Done
    21:52:57.758 retrieve the defaul gateway
    21:52:57.766 gateway: 192.168.10.1
    21:52:57.767 Done
    21:52:57.767 create the page - beginn
    21:52:57.767 print out the header
    21:52:57.927 create the content
    21:52:57.941 INFO: URL was given, generate answer
    21:52:57.941 test the calendar
    21:52:59.132 Done
    21:52:59.132 print out the footer
    Done
    02.01.2024 21:52:59 TASK FINISHED

    Hat noch jemand eine Idee? Bin für jeden Strohhalm dankbar...

    Viele Grüße
    Ralf

    Kommentar

    • svethi
      Lebende Foren Legende
      • 25.08.2015
      • 6292

      Warum arbeitest Du mit einer alten Version?
      Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

      Kommentar


      • SmartRalf
        SmartRalf kommentierte
        Kommentar bearbeiten
        Wenn das Plugin nichts findet, dann erscheinen die Nummern vor dem JSON. Sieht für mich sehr nach http-Fehlernummern aus. Die kommen aber immer, egal welches Log-Level - wenn das Plugin nichts findet oder irgendwas anderes nicht stimmt. Mit Log-Level "Debug" erscheinen die Angaben, die in meinem Post oben schon drinstehen.
        Hier hat das Plugin jetzt tatsächlich meinen Test-Termin im eigenen Kalender gefunden - wieso auch immer, Konfig ist m. E. gleich wie bisher.
        22:23:58.787 INFO: LoxBerry Version 3.0.0.6 ( is_raspberry.cfg is_arch_armv7l.cfg )
        22:23:58.788 INFO: CalDAV-4-Lox Version 2.0.2.0
        22:23:58.788 INFO: Loglevel: 7
        22:23:58.793 Read system settings
        22:23:58.800 Done
        22:23:58.800 retrieve values from URL
        22:23:58.801 Done
        22:23:58.801 read CalDAV-4-Lox settings
        22:23:58.802 Done
        22:23:58.802 retrieve the local ip
        22:23:58.858 localIP: 192.168.10.44
        22:23:58.858 Done
        22:23:58.858 retrieve the defaul gateway
        22:23:58.866 gateway: 192.168.10.1
        22:23:58.866 Done
        22:23:58.867 create the page - beginn
        22:23:58.867 print out the header
        22:23:59.023 create the content
        22:23:59.036 INFO: URL was given, generate answer
        22:23:59.036 test the calendar
        22:24:01.097 Done
        22:24:01.098 print out the footer
        Done
        08.01.2024 22:24:01 TASK FINISHED
        Die funktionierende CalDAV-URL kommt von "Interner Link: Ein privater Link, der mit externen Clients verwendet werden kann." (ich denke, "interner Link" ist eine schlechte Übersetzung).
        Mit dem freigegebenen Kalender hab ich es noch nicht hinbekommen. Da muss ich nochmal weiter experimentieren, mir ist noch nicht ganz klar, wie die URL aussehen muss für den freigegebenen Kalender. Das Log sieht dann aber genau gleich aus, keine Hinweise auf einen Fehler. Dann kommt aber dieses Mal "404404" vor dem JSON.
        Kann ich irgendwie die Rückgabe vom Kalender selbst aktivieren (irgendwas im Code patchen)? Das hilft mir vielleicht schon weiter...

      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Ja, das stimmt. Das ist doppelt eine HTTP Statuscode. 404 heißt nicht vorhanden. Das heißt die URL ist nicht korrekt.
        400 und 401 sind fehlende Zugriffsrechte.
        Wahrscheinlich sollte ich den Statuscode mal irgendwie ins JSON reinbringen

      • SmartRalf
        SmartRalf kommentierte
        Kommentar bearbeiten
        Ich hab jetzt kurzerhand den Müllkalender (auch) in den persönlichen Kalender von meinem "Loxone-User" der NextCloud eingefügt. Dann funktioniert es wenigstens - aktuell hab ich keinen Nerv, mich mit den Kalender-URLs für freigegebene Kalender zu beschäftigen. Wenn jemand dazu was weiß - gerne her mit den Infos. Solange es für mich beim Müllkalender bleibt, muss es erst mal so funktionieren.
        @svethi: Unterstützung zur Problemlösung durch weitere Debug-Ausgaben wird gern angenommen.
    • Blaubart
      LoxBus Spammer
      • 25.10.2015
      • 226

      Ich habe ein Update auf Loxberry 3.0.0.6 durchgeführt, und nun funktioniert das Plugin owncloud nicht mehr, weil owncloud veraltet ist. Ich habe die Termine mit CalDAV-4-Lox immer da heraus suchen lassen. Nun habe ich aber einen anderen Raspberry laufen, auf dem ich meine Kalender eh verwalte, so dass ich die für Loxone wichtigen Daten da auch Einpflegen kann. Aber diesen kann ich mit CalDAV-4-Lox irgendwie nicht nutzen. Die primäre CalDAV-Adresse, die ich in Loxone entnehmen kann, lautet:
      https://Mein-DynDNS.duckdns.org/remote.php/dav/calendars/User/mllabfuhr. Zu dem trage ich den Nextcloud Benutzernamen, das Passwort, den Suchbegriff und die Tage ein der Zukunft ein. Aber der Zugriff klappt offensichtlich nicht.

      Code:
      415{
      "Papiertonne": {
      "Start": -1,
      "End": -1,
      "Summary": "",
      "Description": "",
      "fwDay": -1,
      "wkDay": -1,
      "now": 476304554
      },
      "now": 476304554
      }​​
      Für Tips wäre ich dankbar!

      Achso, eins fällt mir noch ein. Ich habe bei der Nextcloud Zwei-Faktor-Authetifizierung aktiviert. Passwort ist also auch das, welches ch extra für eine App oder Sitzung generieren kann.
      Zuletzt geändert von Blaubart; 04.02.2024, 19:19.

      Kommentar


      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Nun, die URL ist ja noch nicht komplett, oder?

      • Blaubart
        Blaubart kommentierte
        Kommentar bearbeiten
        Stimmt, habe ich geändert! Danke!
    • Blaubart
      LoxBus Spammer
      • 25.10.2015
      • 226

      Gelöst!! Wer lesen kann ist klar im Vorteil!! In der Anleitung steht der entsprechende Schritt
      Meldet euch in der Nextcloud an und öffnet euren Kalender. In der Kalender APP könnt ihr den Kalender über "…" einen Link erzeugen.

      Kommentar

      • El_Corvateur
        Azubi
        • 21.09.2016
        • 2

        Hallo Zusammen,

        ich arbeite mit einem Buchungstool namens Lodgify, welche auch ein ICS File zur Verfügung stellen. Der Link sieht in etwa so aus:
        https://www.lodgify.com/d9324fa7-c21...ab86-fcd32.ics (leicht abgeändert).

        Wenn ich den Link ohne weitere Infos bei mir im Google Calender als weiteren calender hinzufüge, klappt es ohne Probleme. Wenn ich diesen Link bei Caldav4lo hinzufüge, bekomme ich folgende Meldung:

        error loading eventsSabre\VObject\ParseException Object
        (
        [messagerotected] => This parser only supports VCARD and VCALENDAR files
        [string:Exceptionrivate] =>
        [coderotected] => 0
        [filerotected] => /opt/loxberry/webfrontend/html/plugins/caldav4lox/vendor/sabre/vobject/lib/Parser/MimeDir.php
        [linerotected] => 163
        [trace:Exceptionrivate] => Array
        (
        [0] => Array
        (
        [file] => /opt/loxberry/webfrontend/html/plugins/caldav4lox/vendor/sabre/vobject/lib/Parser/MimeDir.php
        [line] => 90
        [function] => parseDocument
        [class] => Sabre\VObject\Parser\MimeDir
        [type] => ->
        )

        [1] => Array
        (
        [file] => /opt/loxberry/webfrontend/html/plugins/caldav4lox/vendor/sabre/vobject/lib/Reader.php
        [line] => 47
        [function] => parse
        [class] => Sabre\VObject\Parser\MimeDir
        [type] => ->
        )

        [2] => Array
        (
        [file] => /opt/loxberry/webfrontend/html/plugins/caldav4lox/caldav.php
        [line] => 241
        [function] => read
        [class] => Sabre\VObject\Reader
        [type] => ::
        )

        )

        [previous:Exceptionrivate] =>
        )
        {
        "": {
        "Start": -1,
        "End": -1,
        "Summary": "",
        "Description": "",
        "fwDay": -1,
        "wkDay": -1,
        "now": 477293666
        },
        "now": 477293666
        }


        Ich wette mein Fehler liegt zwischen den Ohren, ich finde Ihn aber gerade nicht.
        ​​

        Kommentar

        • Christian Fenzl
          Lebende Foren Legende
          • 31.08.2015
          • 11217

          iCal ist kein vCal.

          Aber wie soll man das analysieren, wenn du das nicht funktionierende ICS-File nicht bereitstellen willst?
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar


          • svethi
            svethi kommentierte
            Kommentar bearbeiten
            Anhand der Endung ics ist das schon korrekt. Ich vermute aber, dass hier Cookies o.ä. Nötig sind.
        • El_Corvateur
          Azubi
          • 21.09.2016
          • 2

          Ich Versuche nachher mal einen Testlink zu erstellen.

          Hier ist der Lodgify Knowledge Base Artikel, aus dem ich aber nicht schlau werde...

          Kommentar

          • MarkusCosi
            Extension Master
            • 28.09.2023
            • 199

            Hallo zusammen,

            vielen Dank für das schöne Plugin.

            Mit dem Apple iCloud Kalender hat es grundsätzlich funktioniert. Man musste ein "App-sopecific Password" anlegen, und dann seine iCloud ID + dieses App-specific Passwort benutzten. Den "App"-Namen den man dabei vergeben hat musste man wiederum nicht benutzten. Ich habe letztendlich die Daten dann per MQTT in Loxone bekommen (Virt. Texteingang für die Summary, Virt. Eingang für Start / Ende).

            Nun scheitere ich jedoch an der Anzeige in einem Status-Baustein, wie schon im Post (#84/#85). Kann mir jemand auf die Sprünge helfen wie man die Loxone Zeit (in Sek. seit 2009?) in eine human readable Form wie Datum + Uhrzeit bringt? Im Status-Bausteiun steht ja leider nur <v.m> und <v.d> zur Verfügung, nicht jedoch <v.u>. Wenn ich den Wert mit <v.u> im virt. Eingang interpretiere zeigt mir die Config zwar den korrekten Wert an (also interpretiert), aber im Status-Baustein mit <v> übernommen kommt wieder die Loxone Zeit an (nicht human readable).

            Für Hilfe wäre ich dankbar!

            Angehängte Dateien
            Zuletzt geändert von MarkusCosi; 01.03.2024, 08:41.

            Kommentar

            • Tico
              Lox Guru
              • 31.08.2016
              • 1035

              Leider scheint es keine Möglichkeit zu geben, den interpretierten Wert im Statusblock zu verwenden. Er kehrt immer in die nicht menschenlesbare Form zurück.

              Ein Workaround ist die Verwendung des Linked Function Blocks in Ihrem Statusblock. Hier können Sie den virtuellen Eingang in der interpretierten Form darstellen.


              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bins.png Ansichten: 0 Größe: 20,0 KB ID: 425234


              Wenn Sie mit dem virtuellen Eingangswert mathematische Funktionen ausführen möchten, vervollständigen Sie die mathematischen Funktionen und führen Sie die Antwort in einen "Virtuellen Statusblock" ein. Der virtuelle Statusblock kann dann mit dem Statusblock verknüpft werden und wird in menschenlesbarer Form angezeigt.


              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Linked Function block.png Ansichten: 0 Größe: 18,1 KB ID: 425235
              Zuletzt geändert von Tico; 03.03.2024, 05:17.
              Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

              Kommentar

              • MarkusCosi
                Extension Master
                • 28.09.2023
                • 199

                Lieber Tico,

                vielen Dank für deine Antwort. Das scheint in der Tat ein wunderbarer workaround zu sein. Und außerdem habe ich wieder eine Neue Funktionalität von Loxone gelernt. Besten Dank hierfür!

                Kommentar

                • Tico
                  Lox Guru
                  • 31.08.2016
                  • 1035

                  Die Statusblocksyntax <v.d> (Datum) und <v.m> (Zeit) sind dafür ausgelegt, EIB-formatierte Werte anzunehmen. Das funktioniert gut, wenn die Loxone-Epoche (Sekunden seit 2009) in das EIB-Format konvertiert werden kann.

                  Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Epoch to EIB.png Ansichten: 0 Größe: 16,5 KB ID: 425594


                  Der Programmbaustein wird benötigt und ein wenig PicoC-Code ist beigefügt. Der Vorteil des EIB-Formats ist, dass man etwas mehr Flexibilität hat, was die Anzeige der Loxone-Epoche angeht.

                  Datum: 2024-03-05

                  oder

                  Zeit: 21:33:51

                  oder

                  Datum/Uhrzeit: 2024-03-05 21:33:51


                  PicoC Code
                  Code:
                  unsigned int secondsSince2009;
                  int nEvents;
                  
                  while (TRUE) {
                      nEvents = getinputevent();
                      if (nEvents & 0x08) {
                          secondsSince2009 = getinput(0);
                  
                          // Extract year, month, day, hour, minute and second.
                          // Timezone is the same timezone referenced in input.
                          int year = getyear(secondsSince2009, 0);
                          int month = getmonth(secondsSince2009, 0);
                          int day = getday(secondsSince2009, 0);
                          int hour = gethour(secondsSince2009, 0);
                          int minute = getminute(secondsSince2009, 0);
                          int second = getsecond(secondsSince2009, 0);
                  
                          // Convert to EIB date and timegroup
                          int dategroup = day * 65536 + month * 256 + year - 2000; // EIB date
                          int timegroup = hour * 65536 + minute * 256 + second; // EIB time
                  
                          // Print dategroup, timegroup, year,
                          // month, day, hour, minute and second
                          setoutput(0, dategroup);
                          setoutput(1, timegroup);
                          setoutput(2, year);
                          setoutput(3, month);
                          setoutput(4, day);
                          setoutput(5, hour);
                          setoutput(6, minute);
                          setoutput(7, second);
                      }
                      sleep(500);
                  }​
                  Zuletzt geändert von Tico; 05.03.2024, 15:23.
                  Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                  Kommentar

                  • svethi
                    Lebende Foren Legende
                    • 25.08.2015
                    • 6292

                    Wenn man sich die Werte einzeln per MQTT zuschicken lässt, sollte es auch gehen, wenn man an die URL noch &debug=1 ranhängt
                    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                    Kommentar

                    • MarkusCosi
                      Extension Master
                      • 28.09.2023
                      • 199

                      vielen Dank euch beiden für die Hilfe und Optionen

                      Ich habe mich für das Skript entschieden.. Es funktioniert soweit wunderbar, danke! Da es ja eine Baustein-Begrenzung von 8 Programmen gibt (ich habe bereits mind. 2 am laufen), habe ich vorsichtshalber mal gleich im selben Programm das zweite Datum mit ausgewertet. Mit dieser "Bitmaske" der Input-Änderungen(?) komme ich jedoch nicht klar, bzw. obgleich es bereits funktioniert habe ich das Gefühl als müsste hier das 0x08 für I1 (erste Epoche) und I2 (hier übergebe ich die zweite Epoche) ändern?

                      Könnte man außerdem den Wochentag mit ausgeben? Hier hattest du ja mal, lieber Tico, eine schöne Lösung per Status-Block beschrieben: hier. Wäre natürlich cool, wenn das alles aus einem Baustein herauspurzeln würde... Gibts da vllt. auch eine standard C-Funktion dafür die PicoC erlaubt?

                      Danke!

                      Kommentar


                      • Tico
                        Tico kommentierte
                        Kommentar bearbeiten
                        if (nEvents & 0x18) will check the 4th and 5th least significant bits for changes (ie. inputs I1 and I2, skipping T1, T2 and T3). I'd like to look at having the Txt1 output abbreviated Month (Jan, Feb etc.) and Txt2 output day (Mon, Tues etc.). I'll hopefully get a change in the next couple of weeks.
                    • svethi
                      Lebende Foren Legende
                      • 25.08.2015
                      • 6292

                      Das Plugin liefert ja den Wochentag. Das kannst Du doch im Statusbaustein verarbeiten. Wenn Du es im PicoC haben willst, musst Du den Wochentag mit ans PicoC übergeben und dann dort den Tag ins gewünschte Format übersetzen.
                      Ich kann nur immer wieder betonen, dass das Plugin nicht für irgendwelche Kalenderübersichten entwickelt wurde sondern um Termingerecht irgendwelche Schaltvorgänge etc. auszulösen.
                      Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                      Kommentar

                      • MarkusCosi
                        Extension Master
                        • 28.09.2023
                        • 199

                        Hallo sventhi,

                        danke dir für den Hinweis, das hatte ich tatsächlich übersehen! Dann schaue ich mal wie ich das mit PicoC umsetzen kann (hab damit noch nicht gearbeitet, muss ich mich erst reinfuchsen).

                        Was mir auffiel: ich habe mehr als einen Kalender (privat & Arbeit). Leider kommen beide im selben MQTT Ausgang an (e.g. "caldav4lox_events_next_Summary"). Lediglich wenn ich einen Suchbegriff übergebe wird ein neuer MQTT Ausgang erzeugt (e.g. "caldav4lox_events_<Suchbegriff>_Summary") den ich dediziert abgreifen kann. Wäre oder ist es möglich eine ID mitzugeben, sodass die Ausgabe an "caldav4lox_events_<ID>_Summary" erfolgt?

                        Kommentar


                        • svethi
                          svethi kommentierte
                          Kommentar bearbeiten
                          Ist alles schon sehr lange her, aber ich denke, das geht nicht so einfach
                      Lädt...