Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. ICal Mülltermine

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    ICal Mülltermine

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Hallo ihr Wissenden 😉

      Nachdem die Stadt Köln es https://www.offenedaten-koeln.de/anfragen/abfuhrtermine-im-ical-formatdie Abfuhrtermine im iCal Format bereitzustellen, hat jetzt jemand einen Umwandler gebastelt:

      https://asciidisco.github.io/awb2ics/

      Da die Touren aber oft kurzfristig immer wieder geändert werden ist so ein heruntergeladener Kalender nicht immer aktuell.

      Gibt es eine Möglichkeit diese Daten irgendwie regelmäßig automatisch zu aktualisieren?

      Anscheinend gibt es sogar ein npm Paket dafür.

      Danke

      Rainer

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo Rainer,

        ich bin leider noch nicht so weit, dass ich den Code so ändern kann, dass nicht ständing eine neue ics-Datei geladen wird, sondern die Daten vielleicht als JSON rauskommen.

        Du kannst aber vielleicht den ical-Adapter dazu bringen, eine lokal gespeicherte ics-Datei zu laden.

        Dann muss man nur noch das npm-Paket in den Javascript-Einstellungen speichern und im Javascript zB täglich oder wöchentlich per schedule die Abfrage starten und die ics-Datei lokal speichern.

        Also 'abfuhrkalender-awb-koeln' in die Adapter Einstellungen

        Dann vielleicht so:

        var awb2ics = require('abfuhrkalender-awb-koeln');
        
        function ermitteleJahr() {
            var date = new Date();
            var y = date.getFullYear();
            var m = date.getMonth();
            var d = date.getDate();
            if (m == 11 && d > 24) y++; // wenn Datum nach dem 24.12\. dann nächstes Jahr einstellen
            return (y);
        }
        
        var street_name = "Riehler Str.",
            building_number = "173",
            year = ermitteleJahr();
            zipcode = "50735";
        
        awb2ics(street_name, building_number, year, zipcode, (err, data) => {
            /*
             hier fehlt vielleicht noch der Pfad, wo die Datei hingespeichert wird. 
             Da kann ich nicht weiterhelfen. Ist ja auch abhänging von Hardware und Betriebssystem
            */
            log('Neuer Müllkalender geladen');
        });
        
        

        Der Code ist nicht getestet und einfach so in die Codetags geschrieben. Bitte rumprobieren.

        Viel Erfolg

        Pix

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          Hallo pix,

          Danke für deine Mühe.

          @pix:

          Du kannst aber vielleicht den ical-Adapter dazu bringen, eine lokal gespeicherte ics-Datei zu laden. `
          Dazu muss ich die Datei nur ins www-Verzeichnis auf dem Iobroker Server legen und von dort aufrufen.

          @pix:

          Dann muss man nur… ` 😉

          Klingt gut, jetzt brauch ich nur noch Zeit. Bei dem schönen Wetter ist im Moment erst mal der Garten und die Schönheitsreparaturen am Haus dran.

          Danke nochmals

          Rainer

          1 Reply Last reply Reply Quote 0
          • jens.maus
            jens.maus last edited by

            @Homoran:

            Nachdem die Stadt Köln es https://www.offenedaten-koeln.de/anfragen/abfuhrtermine-im-ical-formatdie Abfuhrtermine im iCal Format bereitzustellen, hat jetzt jemand einen Umwandler gebastelt: `

            Als was stellt die Stadt Köln denn den Müllkalender zur verfügung? Hier in Dresden gibt es auch kein ical sondern nur ein pdf das man täglich aktualisiert runterladen kann. Dafür hab ich mir ein shell Skript geschrieben das jede nach das pdf runterlädt und dann 'pdf2text" aufruft um Text daraus zu extrahieren und die richtigen Stellen dann zu parsen. Funktioniert seit >2 Jahren hier bereits wunderbar und ohne Probleme. Nur so als Hinweis für Alternativen.

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators last edited by

              Hallo Jens,
              @jens.maus:

              Als was stellt die Stadt Köln denn den Müllkalender zur verfügung? `
              Wahlweise als http://awbkoeln.de oder auch als pdf.

              Das letztere drucke ich mir aus und hänge es an den Kühlschrank 😛

              Aber etwa 1x om Quartal ändert sich was manchmal öfter. Zumindest war das eine zeitlang so.

              Gruß

              Rainer

              1 Reply Last reply Reply Quote 0
              • jens.maus
                jens.maus last edited by

                @Homoran:

                Hallo Jens,
                @jens.maus:

                Als was stellt die Stadt Köln denn den Müllkalender zur verfügung? `
                Wahlweise als http://awbkoeln.de oder auch als pdf.

                Das letztere drucke ich mir aus und hänge es an den Kühlschrank 😛

                Aber etwa 1x om Quartal ändert sich was manchmal öfter. Zumindest war das eine zeitlang so. `

                Wie gesagt, bei mir parse ich im Grunde das pdf (nachdem ich es mittels "pdftotext" konvertiert habe) mittels eines python skriptes und mache dann daraus eine iCal (ics) datei die ich dann ioBroker zur Verfügung stelle.

                Hier der python skript:

                ! ````
                #!/usr/bin/python3

                Müllkalender Abfragescript

                Copyright (c) 2015 Jens Maus mail@jens-maus.de#

                Requirements:

                - curl: apt-get install curl

                - pdftotext: apt-get install pdftotext

                ! import subprocess
                import icalendar
                import re
                import pytz
                from datetime import datetime
                ! # output path to .ics file generated
                output_ics = "/var/www/html/Muellkalender.ics"
                ! # location identifier
                location_id = "XXXXX"
                ! #################################################

                Main stuff starts here. No reason to change anything

                here

                muell_query_url="http://stadtplan2.dresden.de/project/cm3/Detail/STADTRAUM/ABFALL/GA_TONNE/kalender.asp?STANDORT=" + location_id

                ! task = subprocess.Popen('/usr/bin/curl -s "' + muell_query_url + '" | /usr/bin/pdftotext -raw - -', shell=True, stdout=subprocess.PIPE)
                output = task.stdout.read().decode("utf-8").splitlines()
                assert task.wait() == 0
                ! cal = icalendar.Calendar()
                cal.add('prod', '-//hm_ddtrash.py//jens-maus.de//')
                cal.add('version', '2.0')
                ! for line in output:
                line = line.strip()
                res = re.search('.(Gelbe Tonne|Restabfall|Bio-Tonne|Blaue Tonne):., ([0-9]{2}.[0-9]{2}.[0-9]{4})/mail@jens-maus.de>, line)
                if res:
                event = icalendar.Event()
                event.add('summary', res.group(1))
                event.add('dtstart', datetime.strptime(res.group(2), "%d.%m.%Y").date())
                event.add('dtend', datetime.strptime(res.group(2), "%d.%m.%Y").date())
                event['uid'] = res.group(2) + "-" + res.group(1)
                cal.add_component(event)
                ! f = open(output_ics, 'wb')
                f.write(cal.to_ical())
                f.close()/mail@jens-maus.de

                
                Das ganze funktioniert hier bisher recht problemlos seit > 2 Jahren. Aber das ganze setzt natürlich voraus das das pdf auch wohl definiert ist und man den Text nach dem konvertieren mit "pdftotext" auch wirklich geordnet Parsen kann. Daher würde ich an deiner stelle als erstes probieren ob 1.) man das pdf von immer der gleichen URL runterladen kann. Und 2.) ob pdftotext daraus eine brauchbare ausgabe erzeugt die man dann entsprechend mittels regular expressions Parsen kann wie ich das hier in dem python Skript tue.
                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  @pix:

                  Hallo Rainer,

                  Also 'abfuhrkalender-awb-koeln' in die Adapter Einstellungen

                  Dann vielleicht so:

                  var awb2ics = require('abfuhrkalender-awb-koeln');
                  
                  function ermitteleJahr() {
                      var date = new Date();
                      var y = date.getFullYear();
                      var m = date.getMonth();
                      var d = date.getDate();
                      if (m == 11 && d > 24) y++; // wenn Datum nach dem 24.12\. dann nächstes Jahr einstellen
                      return (y);
                  }
                  
                  var street_name = "Riehler Str.",
                      building_number = "173",
                      year = ermitteleJahr();
                      zipcode = "50735";
                  
                  awb2ics(street_name, building_number, year, zipcode, (err, data) => {
                      /*
                       hier fehlt vielleicht noch der Pfad, wo die Datei hingespeichert wird. 
                       Da kann ich nicht weiterhelfen. Ist ja auch abhänging von Hardware und Betriebssystem
                      */
                      log('Neuer Müllkalender geladen');
                  });
                  
                  

                  Der Code ist nicht getestet und einfach so in die Codetags geschrieben. Bitte rumprobieren.

                  Viel Erfolg

                  Pix `

                  Hallo Pix,

                  bin endlich dazu gekommen und habe das Skript getestet.

                  Läuft ohne Fehler durch und meldet brav: "Neuer Müllkalender geladen"

                  javascript.0	2017-04-18 11:17:23.623	info	script.js.allgemein.muelltermine: Neuer Müllkalender geladen
                  javascript.0	2017-04-18 11:17:22.375	info	script.js.allgemein.muelltermine: registered 0 subscriptions and 0 schedules
                  javascript.0	2017-04-18 11:17:22.299	info	Start javascript script.js.allgemein.muelltermine
                  javascript.0	2017-04-18 11:17:20.562	info	Stop script script.js.allgemein.Skript1
                  

                  natürlich habe ich den Pfad noch nicht eingegeben, sollte wohl /var/www sein.

                  Im moment suche ich die neue Datei 😉

                  Ich weiß nicht mal wonach ich suchen soll 😉

                  EDIT:

                  ich verstehe es langsam - laut github sollte es heißen

                   Usage: awb2ics <options>> my_cal.ics</options> 
                  

                  der letzte Teil fehlt im script, oder?

                  Gruß

                  Rainer

                  1 Reply Last reply Reply Quote 0
                  • N
                    novregen last edited by

                    Hallo,

                    ich habe von unserer Abfallgesellschaft ein ics Datei vorliegen.

                    Leider bekomme ich den Kalender nicht in ical eingelesen.

                    Ich habe die Datei in folgendes Verzeichnis getan und diesen Eintrag auch in der Instanz so eingetragen.

                    http://192.168.x.xx/opt/iobroker/iobroker-data/files/ical.admin/Abfuhrkalender.ics

                    Leider ohne erfolg.

                    Fehlermeldungen:

                    Error reading from URL "http://192.168.x.xx/opt/iobroker/iobroker-data/files/ical.admin/Abfuhrkalender.ics": Error: connect ECONNREFUSED 192.168.x.x:80

                    Wie muss ich eine lokale ics Datei angeben ?

                    1 Reply Last reply Reply Quote 0
                    • jens.maus
                      jens.maus last edited by

                      @novregen:

                      ich habe von unserer Abfallgesellschaft ein ics Datei vorliegen.

                      Leider bekomme ich den Kalender nicht in ical eingelesen.

                      Ich habe die Datei in folgendes Verzeichnis getan und diesen Eintrag auch in der Instanz so eingetragen.

                      http://192.168.x.xx/opt/iobroker/iobrok … lender.ics

                      […]

                      Wie muss ich eine lokale ics Datei angeben ? `

                      Einfach den Pfad ohne http und IP Adresse eingeben:

                      /opt/iobroker/iobroker-data/files/ical.admin/Abfuhrkalender.ics
                      

                      Dann sollte es gehen.

                      1 Reply Last reply Reply Quote 0
                      • N
                        novregen last edited by

                        Ich habe ihn jetzt in /opt/iobroker/node_modules/iobroker.admin/www/Abfuhrkalender.ics gelegt und mit

                        http://192.168.x.xx:8081/Abfuhrkalender.ics in ical angegeben.

                        Log zeigt jetzt:

                        processing URL: AWG http://192.168.0.20:8081/AbfuhrkalenderAWGBramstedt.ics

                        instance system.adapter.ical.0 terminated with code 0 (OK)

                        Jedoch bekomme ich in in ical0/data/html nichts angezeigt.

                        Auch dein hinweis führt im Log zum gleichen (positiven) Ausdruck, jedoch auch hier nichts in data/html

                        1 Reply Last reply Reply Quote 0
                        • S
                          sveni_lee last edited by

                          das hatte ich auch… wieviele Tage vorlauf hast Du im ical-Addapter eingestellt.

                          eventuell kann nichts angezeigt werden, weil in dem angegebenen Zeitzaum nicht

                          anliegt...

                          1 Reply Last reply Reply Quote 0
                          • N
                            novregen last edited by

                            Danke das wars =:-> stand nur auf 7 jetzt bei 14 kommt was ! Sehr gut mache erstmal schluss für heute.

                            Vielen Dank !

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              Ich möchte diesen Thread nochmal ausgraben.

                              Ich habe mich die Tage nochmal herangemacht und das Skript von @pix versucht ans laufen zu bekommen.

                              Zum schluss soll ja eine Datei my_cal.ics erzeugt werden.

                              Ich finde sie nirgendwo auf dem Tinkerboard, auf dem ich es diesmal teste. Nach wie vor keine Fehlermeldung beim Aktivieren des Skripts.

                              Daraufhin habe ich mir die ics-Datei online erstellen lassen und habe den ersten Schwachpunkt des awb2ics gefunden: Die Hausnummer darf keine Buchstaben enthalten, dann klappt es online auch nicht.

                              Also die Hausnummer des Nachbarn ohne Zusatz in das Skript eingegeben, aber auch da war keine Datei zu finden.

                              Dann habe ich die online generierte Datei heruntergeladen, und ebenso wie @novregen in den Pfad /opt/iobroker/node_modules/iobroker.admin/www/ und in ical den Pfat mit http://192.168.x.xx:8081/abfuhrkalender.ics angegeben.

                              Leider zeigt mir ical auch jetzt noch nichts an. Anzeigezeitraum ist 28 age

                              Ich habe mal die ics Datei hinten angehängt, die sieht mir sehr unsortiert aus. Endung ist eigentlich ics, dann klappte der upload aber nicht 😉 )

                              Gruß

                              Rainer
                              144_abfuhrkalender_2017.txt

                              1 Reply Last reply Reply Quote 0
                              • M
                                MyMeyer last edited by

                                Hallo zusammen,

                                und meine ICS-Datei sieht so aus !

                                ! BEGIN:VCALENDAR
                                ! VERSION:2.0
                                ! PRODID:http://mnbvcx.eu/abfallkalender/
                                ! BEGIN:VEVENT
                                ! UID:5a4ba52d15054@mnbvcx.eu
                                ! SUMMARY: Abfuhrtermin Altpapier (BLAU)
                                ! DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Abfuhrtermin Altpapier
                                ! DTSTART:20180105
                                ! DTEND:20180106
                                ! END:VEVENT
                                ! BEGIN:VEVENT
                                ! UID:5a4ba52d177b1@mnbvcx.eu
                                ! SUMMARY: Abfuhrtermin Restmüll (SCHWARZ)
                                ! DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Abfuhrtermin Restmüll
                                ! DTSTART:20180106
                                ! DTEND:20180107
                                ! …
                                ! ...
                                ! ...
                                Was ist den jetzt richtig ? Weil bei mir in VIS wird auch nichts angezeigt.

                                Die Daten liegt local im Verzeichnis "/opt/iobroker/iobroker-data/files/ical.admin/Abfuhrkalender.ics".

                                Einstellung unter Instanzen sehen so aus (siehe Anhang).
                                6198_instanz.jpg

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Karl_999 last edited by

                                  @MyMeyer:

                                  Hallo zusammen,

                                  und meine ICS-Datei sieht so aus !

                                  ! BEGIN:VCALENDAR
                                  ! VERSION:2.0
                                  ! PRODID:http://mnbvcx.eu/abfallkalender/
                                  ! BEGIN:VEVENT
                                  ! UID:5a4ba52d15054@mnbvcx.eu
                                  ! SUMMARY: Abfuhrtermin Altpapier (BLAU)
                                  ! DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Abfuhrtermin Altpapier
                                  ! DTSTART:20180105
                                  ! DTEND:20180106
                                  ! END:VEVENT
                                  ! BEGIN:VEVENT
                                  ! UID:5a4ba52d177b1@mnbvcx.eu
                                  ! SUMMARY: Abfuhrtermin Restmüll (SCHWARZ)
                                  ! DESCRIPTION;ENCODING=QUOTED-PRINTABLE:Abfuhrtermin Restmüll
                                  ! DTSTART:20180106
                                  ! DTEND:20180107
                                  ! …
                                  ! ...
                                  ! ...
                                  Was ist den jetzt richtig ? Weil bei mir in VIS wird auch nichts angezeigt.

                                  Die Daten liegt local im Verzeichnis "/opt/iobroker/iobroker-data/files/ical.admin/Abfuhrkalender.ics".

                                  Einstellung unter Instanzen sehen so aus (siehe Anhang). `
                                  Was hast du im Tab Ereignisse hinterlegt?

                                  Dort steht bei mir z.B. Restmüll. Damit werden dann die entsprechenden Ereignisse (Kalendereinträge) angezeigt.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MyMeyer last edited by

                                    Hi,

                                    ich habe das Problem jetzt anders gelöst !

                                    Ich habe den Abfallender einfach in Google-Kalender importiert und den Link dann in IOBroker hinterlegt. Jetzt werden die Termine

                                    auch gelesen und angezeigt im VIS.

                                    Für mich ist es damit erst mal gelöst: 🙂

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate
                                    FAQ Cloud / IOT
                                    HowTo: Node.js-Update
                                    HowTo: Backup/Restore
                                    Downloads
                                    BLOG

                                    615
                                    Online

                                    32.1k
                                    Users

                                    80.7k
                                    Topics

                                    1.3m
                                    Posts

                                    7
                                    16
                                    5281
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo