NEWS
ICal Mülltermine
-
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/python3Mü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.deDas 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.
-
@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
-
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 ?
-
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.
-
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
-
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...
-
Danke das wars =:-> stand nur auf 7 jetzt bei 14 kommt was ! Sehr gut mache erstmal schluss für heute.
Vielen Dank !
-
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 -
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 -
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.
-
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: