Ankündigung

Einklappen
Keine Ankündigung bisher.

calDAV Integration ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Heute Morgen sieht es wieder gut aus. Den Interval habe ich auf 10 gesetzt und keine Fehlermeldungen mehr im log.

    Kommentar


      Wahrscheinlich hat der nach einiger Zeit die Anfragen nicht mehr bearbeitet wenn jede Minute alle Termine abgefragt werden...

      Kommentar


        Hallo,

        ich nutze das Plugin um Mülltermine und Geburtstage aus einem Google Kalender anzuzeigen. Jetzt habe ich Datum und Name des Events zusammen in einer zeile. Allerdings hätte ich das Datum gerne links als Label und rechts den Text des Events. Leider scheint es in Obenhab nicht möglich zu sein den Inhalt einer Variable als Label zu nutzen. Oder habe ich da was übersehen?

        Anbei der Code um Datum und Ereignis in eine Zeile zu nehmen, falls das jemand braucht.

        Code:
        //items
        String GebCalName0 <calendar> {caldavPersonal="calendar:geburtstag type:EVENT eventNr:1 value:NAME"}
        DateTime GebCalTime0 <calendar> {caldavPersonal="calendar:geburtstag type:EVENT eventNr:1 value:START"}
        String GebCal0 <calendar>
        
        //rule
        rule "GebCal0 changed"
        when
            Time cron "1 0 0 * * ?" or
        then
            if(GebCalName0.state != Undefined) {
                var org.joda.time.DateTime myDateTime = new org.joda.time.DateTime((GebCalTime0.state as DateTimeType).calendar.timeInMillis)
                GebCal0.postUpdate(myDateTime.toString("dd.MM.") + " - " + GebCalName0.state.toString)
            }
        end
        
        //config
        caldavio:geburtstag:url=https://www.google.com/calendar/dav/%23contacts@group.v.calendar.google.com/events
        caldavio:geburtstag:username=xxx
        caldavio:geburtstag:password=xxx
        caldavio:geburtstag:reloadInterval=1440
        caldavio:geburtstag:preloadTime=40320
        Zuletzt geändert von irgendwer; 14.09.2015, 20:25.

        Kommentar


          Hallo zusammen,

          ich habe noch Probleme dieses Binding zum laufen zu bekommen.

          - im Google Calender habe ich einen Eintrag gemacht, siehe Screenshot
          Zwischenablage01.jpg

          - die verwendeten jar-Files habe ich aus dem Download gem. Wiki, Stand 09.09.2015
          - Konfiguation von items, sitemap und openhab.cfg wie nachfolgend (Input aus diese Thread übernommen)

          Leider bekomme ich den nachfolgenden Error im Server-Log nicht weg - die Schaltung klappt auch nicht.
          Code:
          2015-09-25 17:23:31.003 [INFO ] [.service.AbstractActiveService] - CalDav Loader has been started
          2015-09-25 17:23:31.043 [INFO ] [runtime.busevents             ] - Naechste_Licht_Schaltung state updated to Undefined
          2015-09-25 17:23:31.043 [INFO ] [runtime.busevents             ] - Termin_Licht_Schaltung state updated to Undefined
          2015-09-25 17:23:31.043 [INFO ] [runtime.busevents             ] - Naechste_Licht_Schaltung state updated to Undefined
          2015-09-25 17:23:31.043 [INFO ] [runtime.busevents             ] - Termin_Licht_Schaltung state updated to Undefined
          2015-09-25 17:23:41.390 [ERROR] [.i.c.internal.CalDavLoaderImpl] - error while loading calendar entries: Unexpected response
          com.github.sardine.impl.SardineException: Unexpected response
              at com.github.sardine.impl.handler.ValidatingResponseHandler.validateResponse(ValidatingResponseHandler.java:48) ~[na:na]
              at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:40) ~[na:na]
              at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:35) ~[na:na]
              at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:218) ~[na:na]
              at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160) ~[na:na]
              at com.github.sardine.impl.SardineImpl.execute(SardineImpl.java:828) ~[na:na]
              at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:355) ~[na:na]
              at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:347) ~[na:na]
              at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:324) ~[na:na]
              at org.openhab.io.caldav.internal.CalDavLoaderImpl.loadEvents(CalDavLoaderImpl.java:437) ~[na:na]
              at org.openhab.io.caldav.internal.CalDavLoaderImpl.access$3(CalDavLoaderImpl.java:431) ~[na:na]
              at org.openhab.io.caldav.internal.CalDavLoaderImpl$4.run(CalDavLoaderImpl.java:648) ~[na:na]
              at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_60]
              at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [na:1.8.0_60]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [na:1.8.0_60]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0_60]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_60]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_60]
              at java.lang.Thread.run(Unknown Source) [na:1.8.0_60]
          Habt ihr eine Idee, was falsch läuft?

          Danke & Gruss


          openhab.cfg
          Code:
          # Command-Kalender
          caldavio:command:url=https://apidata.googleusercontent.com/caldav/v2/xxxxxxxxxxxxxxxxxxx@group.calendar.google.com/events
          caldavio:command:disableCertificateVerification=true
          caldavio:command:username=xxx.yyy@gmail.com
          caldavio:command:password=password
          caldavio:command:reloadInterval=10
          caldavio:command:preloadTime=2880
          caldavio:timeZone=Europe/Berlin
          caldavCommand:readCalendars=command
          caldavPersonal:usedCalendars=command

          items
          Code:
          Number Naechste_Licht_Schaltung             "Nächste Lichtschaltung DG Zi3 Wand [%s]"    {caldavCommand="itemName:Licht_DG_Zi3_W type:VALUE"}
          DateTime Termin_Licht_Schaltung             "Nächster Termin Licht DG Zi3 Wand [%s]"    {caldavCommand="itemName:Licht_DG_Zi3_W type:DATE"}

          sitemap
          Code:
          Text item=Naechste_Licht_Schaltung
          Text item=Termin_Licht_Schaltung

          Kommentar


            Die URL sieht mir komisch aus. Wenn du die URL im Browser eingibst muss er eine *.ics Datei downloaden, ist das so?

            So sieht es bei mir aus...
            Code:
            caldavio:openhab_tasks:url=https://www.google.com/calendar/dav/username@gmail.com/events
            caldavio:openhab_tasks:username=username@gmail.com
            caldavio:openhab_tasks:password=passwort
            caldavio:openhab_tasks:reloadInterval=10
            caldavio:openhab_tasks:preloadTime=20000
            Zuletzt geändert von querdenker2k; 25.09.2015, 17:15.

            Kommentar


              Nein, ein *.ics-file wird nicht geladen :-(

              Die Informationen betr. URL-Handling habe ich von hier übernommen:
              https://developers.google.com/google..._caldav_server
              --> hier wird auf eine Kalender-ID referenziert, die eine kryptische Aneinanderreihung von Zahlen und Buchstaben ist

              Inzwischen habe ich verschiedene Variationen probiert:
              https://www.google.com/calendar/dav/mein.account@gmail.com/events
              --> Eingabefenster öffnet sich --> Username / PW eingegeben --> wird nicht akzeptiert --> Fehler im Browser: Login required
              --> gebe hier die gleichen Credentials ein wie beim direkten Zugang via gmail-website

              https://www.google.com/calendar/dav/kryptischeCalenderID@group.calendar.google.com/events
              --> invalid credentials

              https://apidata.googleusercontent.com/caldav/v2/mein.account@gmail.com/events
              --> ohne Eingabefenster --> Fehler im Browser: Login required

              https://apidata.googleusercontent.com/caldav/v2/kryptischeCalenderID@group.calendar.google.com/user
              --> HTTP method not allowed

              https://apidata.googleusercontent.com/caldav/v2/mein.account@gmail.com/user
              --> HTTP method not allowed

              Hast Du noch Ideen woran es liegen könnte?

              Danke & Gruss

              Kommentar


                Update:
                Zwischenzeitlich habe ich eine URL gefunden, die mir den download eines *.ics-files ermöglicht, siehe Screenshot.
                Diese URL sieht jedoch ebenfalls deutlich anders aus, als das Beispiel was Du mir genannt hast.
                Zwischenablage01.jpg

                Im Server-Log bekomme ich jedoch unverändert diesen Error:

                Code:
                2015-09-26 08:44:13.366 [INFO ] [.service.AbstractActiveService] - CalDav Loader has been started
                2015-09-26 08:44:13.405 [INFO ] [runtime.busevents             ] - Naechste_Licht_Schaltung state updated to Undefined
                2015-09-26 08:44:13.405 [INFO ] [runtime.busevents             ] - Termin_Licht_Schaltung state updated to Undefined
                2015-09-26 08:44:13.405 [INFO ] [runtime.busevents             ] - Naechste_Licht_Schaltung state updated to Undefined
                2015-09-26 08:44:13.410 [INFO ] [runtime.busevents             ] - Termin_Licht_Schaltung state updated to Undefined
                2015-09-26 08:44:24.188 [ERROR] [.i.c.internal.CalDavLoaderImpl] - error while loading calendar entries: Unexpected response
                com.github.sardine.impl.SardineException: Unexpected response
                    at com.github.sardine.impl.handler.ValidatingResponseHandler.validateResponse(ValidatingResponseHandler.java:48) ~[na:na]
                    at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:40) ~[na:na]
                    at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:35) ~[na:na]
                    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:218) ~[na:na]
                    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160) ~[na:na]
                    at com.github.sardine.impl.SardineImpl.execute(SardineImpl.java:828) ~[na:na]
                    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:355) ~[na:na]
                    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:347) ~[na:na]
                    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:324) ~[na:na]
                    at org.openhab.io.caldav.internal.CalDavLoaderImpl.loadEvents(CalDavLoaderImpl.java:437) ~[na:na]
                    at org.openhab.io.caldav.internal.CalDavLoaderImpl.access$3(CalDavLoaderImpl.java:431) ~[na:na]
                    at org.openhab.io.caldav.internal.CalDavLoaderImpl$4.run(CalDavLoaderImpl.java:648) ~[na:na]
                    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_60]
                    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [na:1.8.0_60]
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [na:1.8.0_60]
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0_60]
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_60]
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_60]
                    at java.lang.Thread.run(Unknown Source) [na:1.8.0_60]

                Kommentar


                  Genau auf dieser Seite habe ich auch meine URL her. Du musst die Deprecated Version nehmen.
                  Wenn du die so angibst:
                  Code:
                  https://www.google.com/calendar/dav/username/events
                  dann sollte er auch im Browser nach credentials fragen, wo du wieder den username mit dem passwort dazu eingibst.
                  So funktioniert das bei mir, gerade nochmal getestet.

                  OAuth kann das Binding nicht, müsste ich noch implementieren, deswegen geht nur die deprecated Version.

                  Kommentar


                    Zitat von udo1toni Beitrag anzeigen
                    Wenn Du nur einen Befehl schicken willst, ist die Laufzeit egal. Wenn Du aber Zeiträume definieren willst, benötigst Du Anfang und Ende eines Termins. Z.b. Heizung runter fahren von 22 bis 6 Uhr. Dann reicht Dir ein Event, Start 22 Uhr, Ende 6 Uhr, in dem Du mit BEGIN: die Absenkung aktivierst, und mit END: die Absenkung deaktivierst, beides untereinander im Body des Termins...

                    So, jetzt läuft es auch endlich bei mir :-) Danke Forum und einmal mehr udo1toni :-)

                    Eins noch: der oben zitierte Teil und insbesondere der fett gedruckte Abschnitt waren die Informationen, die mir gefehlt hatten - hab die auch nicht im Wiki des Bindings gefunden. Wäre gut die dort nachzutragen.

                    Kommentar


                      Hi,

                      Das steht aktuell im Wiki:
                      The event description must fullfill special syntax
                      Every line which starts with "BEGIN" will be executed at the begin of the event. Each line with an "END" will be executed at the end of the event
                      <pre>BEGIN:Heater_Livingroom:22
                      BEGIN:Heater_Corridor:22
                      END:Heater_Livingroom:16
                      END:Heater_Corridor:16
                      END:Notification_Dummy:Heizung heruntergefahren</pre>

                      Was genau an Information fehlt dir denn?

                      Du kannst aber mal um anderen mit dem Google Kalender zu helfen bitte deine Konfiguration beispielhaft unten anfügen.

                      Kommentar


                        Zitat von querdenker2k Beitrag anzeigen
                        Hi,
                        Was genau an Information fehlt dir denn?
                        Die entscheidende Information für mich war, dass die Event-Description im Body des Termins (nicht im Subject) stehen muss. Im Nachhinein betrachtet völlig logisch (wo sonst sollte man mehrere Events untereinander erfassen... ;-) ), aber beim ersten Setup hatte ich das nicht kapiert.

                        Zitat von querdenker2k Beitrag anzeigen
                        Du kannst aber mal um anderen mit dem Google Kalender zu helfen bitte deine Konfiguration beispielhaft unten anfügen.
                        openhab.cfg
                        Code:
                        # Command-Kalender
                        caldavio:command:url=https://www.google.com/calendar/dav/[B]mein.kalender@gmail.com[/B]/events
                        caldavio:command:disableCertificateVerification=true
                        caldavio:command:username=[B]mein.kalender@gmail.com[/B]
                        caldavio:command:password=[B]meinPassword[/B]
                        caldavio:command:reloadInterval=10
                        caldavio:command:preloadTime=2880
                        caldavio:timeZone=Europe/Berlin
                        Schlussendlich war es so wie Du geschrieben hattest - mit der deprecated-Version der URL hat es funktioniert - keine Ahnung, was ich im ersten Anlauf falsch gemacht hatte.

                        items
                        Code:
                        String         CalName0    "Termin jetzt [%s]"                                            <calendar>        { caldavPersonal="calendar:command type:ACTIVE eventNr:1 value:NAME" }
                        String         CalTime0    "TIME 0 [%s]"                                                <calendar>        { caldavPersonal="calendar:command type:ACTIVE eventNr:1 value:TIME" } 
                        DateTime     CalTime0B    "Beginn [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                    <calendar>        { caldavPersonal="calendar:command type:ACTIVE eventNr:1 value:START" }
                        DateTime     CalTime0E    "Ende [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                        <calendar>        { caldavPersonal="calendar:command type:ACTIVE eventNr:1 value:END" }
                        String         CalName1    "nächster Termin [%s]"                                        <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:1 value:NAME" }
                        String         CalTime1    "TIME 1 [%s]"                                                <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:1 value:TIME" }
                        DateTime     CalTime1B    "Beginn [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                    <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:1 value:START" }
                        DateTime     CalTime1E    "Ende [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                        <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:1 value:END" }
                        String         CalName2    "übernächster Termin [%s]"                                    <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:2 value:NAME" }
                        String         CalTime2    "TIME 2 [%s]"                                                <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:2 value:TIME" }
                        DateTime     CalTime2B    "Beginn [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                    <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:2 value:START" }
                        DateTime     CalTime2E    "Beginn [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"                    <calendar>        { caldavPersonal="calendar:command type:UPCOMING eventNr:2 value:END" }

                        sitemap
                        Code:
                        Frame label="CalDAV Test-Area" {
                            Text item=CalDAV    label="Haussteuerung über Termine"    icon="calendar"    {
                                Frame label="Termine vom Haus"    {
                                    Text item=CalName0
                                    Text item=CalTime0
                                    Text item=CalTime0B
                                    Text item=CalTime0E
                                    Text item=CalName1
                                    Text item=CalTime1
                                    Text item=CalTime1B
                                    Text item=CalTime1E
                                    Text item=CalName2
                                    Text item=CalTime2
                                    Text item=CalTime2B
                                    Text item=CalTime2E
                            }
                                Frame label="Google Kalender vom Haus"    {
                                    Webview url="https://www.google.com/calendar/embed?src=[B]mein.kalender[/B]%40gmail.com&ctz=Europe/Zurich" height=15
                                }
                            }
                        }
                        Konfiguration mit Outlook Client (ja, manch einer steht mehr auf Microsoft als auf Google... ;-) ):
                        derzeitiger Workaround sieht so aus, dass ich im Outlook Client meine "Haus-Termine" erfasse und an den Google-Kalender als "Invite" schicke - das funktioniert einwandfrei, Termin muss im Google-Kalender nicht mal akzeptiert werden.
                        Ebenfalls "in progress": anstelle Google einen OneDrive-Kalender einbinden, hab hier jedoch noch nicht viel Zeit investiert.

                        Ich würde auch an dem Wiki mitarbeiten, hab nur bisher keine Erfahrung mit GitHub.

                        Kommentar


                          Zitat von querdenker2k Beitrag anzeigen
                          Hi,

                          Das steht aktuell im Wiki:

                          <pre>BEGIN:Heater_Livingroom:22
                          BEGIN:Heater_Corridor:22
                          END:Heater_Livingroom:16
                          END:Heater_Corridor:16
                          END:Notification_Dummy:Heizung heruntergefahren</pre>
                          Bei mir sieht das so aus:
                          BEGIN:Jal_EG_WZ_Jalousie_S:20
                          BEGIN:Jal_EG_WZ_Jalousie_W:20
                          BEGIN:Jal_EG_Essen_Jalousie:20
                          END:Jal_EG_WZ_Jalousie_S:0
                          END:Jal_EG_WZ_Jalousie_W:0
                          END:Jal_EG_Essen_Jalousie:0

                          Der Event wird auch planmässig ausgeführt, jedoch nur die erste und vierte Zeile, also
                          BEGIN:Jal_EG_WZ_Jalousie_S:20
                          END:Jal_EG_WZ_Jalousie_S:0

                          Was läuft hier noch falsch?

                          Kommentar


                            querdenker2k hänge immer noch bei meinem letzten Problem - bei mir klappt das nicht mit der Ausführung mehrer Items zu einem definierten Zeitpunkt.
                            Habe inzwischen diverse Termine und items probiert - es sind auch keine Leerzeilen oder Leerzeichen eingefügt.

                            Any ideas?

                            Kommentar


                              Hi,

                              Sorry, der Fehler liegt im Binding. Ist bereits gefixt. Ich lasse das noch bei mir 1-2 Tage laufen zum Testen.

                              Kommentar


                                Wenn Du Test-Support brauchst stehe ich zur Verfügung.

                                Kommentar

                                Lädt...
                                X