Calendar: retrieval failed with error message : malformed or unsupported URL

Begonnen von DeeSPe, 19 Februar 2021, 11:38:29

Vorheriges Thema - Nächstes Thema

DeeSPe

Ich habe ein Problem mit Calendar.
Wenn ich die URL meines Entsorgers abrufen will kommt im Event Monitor:
2021.02.19 11:29:26 4:  Calendar Restmuelltonne: Updating...
2021.02.19 11:29:26 1:  Calendar Restmuelltonne: retrieval failed with error message : malformed or unsupported URL
2021-02-19 11:29:26 Calendar Restmuelltonne state: error (<hidden>: malformed or unsupported URL)
2021.02.19 11:29:26 1:  Calendar Restmuelltonne: retrieved no or empty data
2021-02-19 11:29:26 Calendar Restmuelltonne state: error (no or empty data)
2021.02.19 11:29:26 4:  Calendar Restmuelltonne: Checking times...
2021-02-19 11:29:26 Calendar Restmuelltonne state: triggered
2021-02-19 11:29:26 Calendar Restmuelltonne nextWakeup: 2021-02-19 12:29:26
2021.02.19 11:29:26 4:  Calendar Restmuelltonne: Getting data from URL


Ich habe dann das Attribut "quirks" auf "noWildcards" gesetzt und dann erhalte ich:
2021.02.19 11:32:05 4:  Calendar Restmuelltonne: Updating...
2021.02.19 11:32:05 4:  Calendar Restmuelltonne: Getting data from URL
2021-02-19 11:32:05 Calendar Restmuelltonne reload
2021.02.19 11:32:05 1:  Calendar Restmuelltonne: retrieval failed with HTTP response code 500
2021-02-19 11:32:05 Calendar Restmuelltonne state: error (retrieval failed with HTTP response code 500)
2021.02.19 11:32:05 5:  Calendar Restmuelltonne: HTTP response header:
HTTP/1.1 500 Internal Server Error
Server: nginx
Date: Fri, 19 Feb 2021 10:32:05 GMT
Content-Type: text/calendar;charset=UTF-8
Content-Length: 0
Connection: close
Set-Cookie: PHPSESSID=kunckesglpvqh0rfkdo04vkobd3j2i7sahsbj6ucvd1r54rhfg80; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Disposition: attachment; filename="Abfuhrkalender.ics"
Content-Security-Policy: style-src 'unsafe-inline' *.bsr.de *.fonts.net *.doubleclick.net *.get-innovation.de *.typekit.net;
2021.02.19 11:32:05 1:  Calendar Restmuelltonne: retrieved no or empty data
2021-02-19 11:32:05 Calendar Restmuelltonne state: error (no or empty data)
2021.02.19 11:32:05 4:  Calendar Restmuelltonne: Checking times...
2021-02-19 11:32:05 Calendar Restmuelltonne state: triggered
2021-02-19 11:32:05 Calendar Restmuelltonne nextWakeup: 2021-02-19 12:32:05


Wie kann ich die Daten doch erfolgreich abrufen?
Die URL die ich abrufen will ist:
https://www.bsr.de/abfuhrkalender_ajax.php?script=dynamic_iCal_ajax&abf_strasse=Ludwig-Quidde-Str.,%2013127%20Berlin%20(Pankow)&abf_hausnr=101&tab_control=Liste&abf_config_weihnachtsbaeume=on&abf_config_restmuell=on&abf_config_biogut=on&abf_config_wertstoffe=on&abf_config_laubtonne=on&listitems=14

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

mumpitzstuff

Die Klammer da um Pankow würde mir Sorgen machen. Kann man das Escapen?

DeeSPe

Zitat von: mumpitzstuff am 19 Februar 2021, 12:27:44
Die Klammer da um Pankow würde mir Sorgen machen. Kann man das Escapen?

Danke, hatte ich auch schon gedacht!
Ist aber 1.) genau die URL wie sie auch von der Webseite kommt und auch funktioniert (zumindest der Download) und 2.) hab ich auch das uri_escape schon darauf probiert.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Die Klammern sind vermutlich nicht das Problem, sondern das Komma.
Aber selbst wenn man das Komma entsprechend codiert, kommt vom Server ein http Fehler 400 zurück.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Möchtest Du vielleicht wenigstens Deine Privatanschrift aus der URL hier im Thread entfernen?

Dass eine URL im Browser funktioniert und im Calendar device nicht, hat nichts zu sagen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Zitat von: betateilchen am 19 Februar 2021, 12:48:41
Möchtest Du vielleicht wenigstens Deine Privatanschrift aus der URL hier im Thread entfernen?

Danke für den Hinweis, ist aber nicht meine Adresse sondern nur ein Beispiel für eine komplette URL.

Zitat von: betateilchen am 19 Februar 2021, 12:48:41
Dass eine URL im Browser funktioniert und im Calendar device nicht, hat nichts zu sagen.

Was könnte ich also tun um doch an die Daten zu kommen?
Im Modul bsrabfallkalender klappt das mit der URL auch, nur möchte ich mich gerne von dieser Abhängigkeit lösen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

hast Du mal versucht, die URL mit wget aufzurufen? Da passieren ganz komische Sachen...

Offenbar sind schon die & in der URL ein Problem.


[1]   Exit 8                  wget https://www.bsr.de/abfuhrkalender_ajax.php?script=dynamic_iCal_ajax
[2]   Done                    abf_strasse=Ludwig-Quidde-Str.%44%2013127%20Berlin%20%40Pankow%41
[3]   Done                    abf_hausnr=10
[4]   Done                    tab_control=Jahr
[5]   Done                    abf_config_weihnachtsbaeume=
[6]   Done                    abf_config_restmuell=on
[7]   Done                    abf_config_biogut=on
[8]   Done                    abf_config_wertstoffe=on
[9]-  Done                    abf_config_laubtonne=on
[10]+  Done                    abf_selectmonth=2%202021
udo@mqtt:/tmp$ ls

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Zitat von: betateilchen am 19 Februar 2021, 12:56:37
hast Du mal versucht, die URL mit wget aufzurufen? Da passieren ganz komische Sachen...

Nein, habe ich noch nicht.
Aber mit HttpUtils_NonblockingGet funktioniert es.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Zitat von: DeeSPe am 19 Februar 2021, 12:55:35
Im Modul bsrabfallkalender klappt das mit der URL auch, nur möchte ich mich gerne von dieser Abhängigkeit lösen.

Ich habe gerade im besagten Modul nachgesehen. Dort wird die URL nicht als parameter beim define zusammengebaut, sondern im Modul selbst erzeugt.
Unter anderem wird beim Abruf der Informationen vom BSR Server auch ein UserAgent mitgegeben und andere Parameter so gesetzt, dass der URL Aufruf funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

ZitatWas könnte ich also tun um doch an die Daten zu kommen?
Mein pragmatischer Ansatz:
Da das Problem eventuell im neuen Jahr wieder ansteht (weil der Praktikant beim Entsorger eine neue Idee hatte) habe ich einen extra Googlekalender.
3 Tonnen (bei mir) bedeutet 3 Serientermine mit ca. 4 Ausnahmen im Jahr. Die Ausnahmen schreibe ich immer zwischen Weihnachten und Neujahr (wo soviel Zeit ist) - das dauert nur ein paar Minuten.

bevor Du jetzt Tage zubringst :)

Aktualisierungen gibt es bei mir über das Jahr (wie letzte Woche bei Schnee) vom Entsorger auch nicht im Kalender, bloß per Nachricht in eine App.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee


DeeSPe

Zitat von: Otto123 am 19 Februar 2021, 13:06:42
Mein pragmatischer Ansatz:
Da das Problem eventuell im neuen Jahr wieder ansteht (weil der Praktikant beim Entsorger eine neue Idee hatte) habe ich einen extra Googlekalender.
3 Tonnen (bei mir) bedeutet 3 Serientermine mit ca. 4 Ausnahmen im Jahr. Die Ausnahmen schreibe ich immer zwischen Weihnachten und Neujahr (wo soviel Zeit ist) - das dauert nur ein paar Minuten.

bevor Du jetzt Tage zubringst :)

Aktualisierungen gibt es bei mir über das Jahr (wie letzte Woche bei Schnee) vom Entsorger auch nicht im Kalender, bloß per Nachricht in eine App.

Danke Otto, aber diesen Ansatz hatte ich bisher immer parallel laufen und war nicht so glücklich damit. Und um nun diese Abhängigkeit von einem nicht offiziellem Modul zu lösen wollte ich das gerne mit Calendar und der offiziellen URL zur ics Datei machen.
Schade wenn das so nicht klappt. Dann werde ich mir doch was eigenes bauen.

Danke Euch.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

Mach ich auch nur mit Calendar und zwei UserReadings.
Oder nimm Thomas seinen Ansatz, die ändern die Datei sowieso nie. Außer nächstes Jahr :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: DeeSPe am 19 Februar 2021, 13:04:14
Aber mit HttpUtils_NonblockingGet funktioniert es.

Dann bau Dir eine Funktion in der 99_myUtils.pm mit der Du die Daten vom BSR Server holst und mit FileWrite() in eine Textdatei auf Deiner FHEM Plattform schreibst.
Und in Deinem Calendar device verwendest Du dann anstatt "ical url <url>" eben "ical file <fileName>".

Das läßt sich dann alles per at einmal in der Nacht abfrühstücken: Daten runterladen, Calendar aktualisieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Zitatdie ändern die Datei sowieso nie. Außer nächstes Jahr

ZitatDas läßt sich dann alles per at einmal in der Nacht abfrühstücken: Daten runterladen, Calendar aktualisieren.

Wenn mans genau nimmt eigentlich zweimal im Jahr, wenn der Zeitpunkt feststehen würde:

https://www.bsr.de/abfuhrkalender-20520.php
ZitatWarum soll ich meine Termine regelmäßig überprüfen?
Um stets so effektiv und effizient wie möglich zu arbeiten, optimieren wir unsere Touren regelmäßig. Die Tourenplanung wird in diesem Zuge zweimal pro Jahr – im April und im Oktober – angepasst. Dabei kann es zu Verlegungen der Abfuhrtage kommen.