57_Calendar.pm - Abruf von AWM München blockiert FHEM

Begonnen von weini, 21 Juni 2020, 10:50:08

Vorheriges Thema - Nächstes Thema

amenomade

#15
Anscheinend ist es die Webseite, die Probleme macht.
Wenn ich es richtig sehe, pflegt sie so eine Art Sitzung Cookie...

EDIT:
Ne, das ist nicht die Sitzung das Problem. Diese wird von der Webseite zwar mitgeschickt, aber scheint keinen Einfluss zu haben.
ABER: Die Webseite braucht ein "User-Agent"

wget -O test.ics 'https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1%5Bsection%5D=ics&tx_awmabfuhrkalender_pi1%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_pi1%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_pi1%5Bstrasse%5D=Landwehrstr.&tx_awmabfuhrkalender_pi1%5Bhausnummer%5D=10&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Brestmuell%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bpapier%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bbio%5D=70057572&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BR%5D=002%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BP%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_pi1%5Byear%5D=2020'
geht nicht.

wget -O test.ics --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0" 'https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1[section]=ics&tx_awmabfuhrkalender_pi1[standplatzwahl]=true&tx_awmabfuhrkalender_pi1[singlestandplatz]=false&tx_awmabfuhrkalender_pi1[strasse]=Landwehrstr.&tx_awmabfuhrkalender_pi1[hausnummer]=10&tx_awmabfuhrkalender_pi1[stellplatz][restmuell]=70057572&tx_awmabfuhrkalender_pi1[stellplatz][papier]=70057572&tx_awmabfuhrkalender_pi1[stellplatz][bio]=70057572&tx_awmabfuhrkalender_pi1[leerungszyklus][R]=001;U&tx_awmabfuhrkalender_pi1[leerungszyklus][P]=001;U&tx_awmabfuhrkalender_pi1[leerungszyklus][B]=1/2;U&tx_awmabfuhrkalender_pi1[year]=2020' also, das gleiche mit nur ein Header User-Agent dazu, geht

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Und das ist wahrscheinlich kein Server-seitiges Issue sondern eher ein Feature ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

weini

Bingo!

Genau in die Richtung wollte ich suchen, das hätte mich nur Ewigkeiten gekostet, weil ich in der Materie leider nicht so gut drin bin.
Ich denke nicht unbedingt, dass es ein "Featue" ist. Wie ich eingangs im Thread geschrieben habe, hat es bis vor gut einer Woche noch funktioniert. Sieht mir eher nach einer Systemumstellung mit Nebenwirkungen aus....

@Boris: Es gibt nicht zufällig einen Weg, für ein "Calendar" Objekt den User-Agent für den URL Abruf festzulegen?  ;-
Ich denke, ich bastle mir einen separaten HTTPS/wget/HTTPMOD what so ever Abruf und lasse Calendar dann das File laden.

Vielen Dank auch euch für die tolle Unterstützung!

Dr. Boris Neubert

Zitat von: weini am 22 Juni 2020, 20:00:34
@Boris: Es gibt nicht zufällig einen Weg, für ein "Calendar" Objekt den User-Agent für den URL Abruf festzulegen?  ;-

Neee.....

Ansonsten ist der Weg der Richtige. Allerdings dürften sich alle Module aus FHEM, die HttpUtils verwenden, gleich verhalten.


Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

amenomade

#19
Zitat von: Dr. Boris Neubert am 22 Juni 2020, 20:12:36
Allerdings dürften sich alle Module aus FHEM, die HttpUtils verwenden, gleich verhalten.

Ja, aber ggf erlauben diese Module das Setzen von Headers. Z.B. HTTPMOD.
Zitat von: httputils.pmheader => ("" or HASH)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dr. Boris Neubert

Zitat von: amenomade am 22 Juni 2020, 20:14:52
Ja, aber ggf erlauben diese Module das Setzen von Headers. Z.B. HTTPMOD.

Stimmt. Aber der User-Agent wird in HttpUtils::HttpUtils_Connect2() hart auf fhem gesetzt.

Man könnte nun natürlich...  :-X

Aber alles wegen einem Server, der sich so bekloppt verhält?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

weini

Definitiv, das ist viel zu exotisch...

Ich sehe mir mal an, wie man das in Anbetracht der Umstände möglichst "vernünftig" machen kann und lasse euch wissen, wie ich es gelöst habe.

amenomade

Zitat von: Dr. Boris Neubert am 22 Juni 2020, 20:29:49

Aber alles wegen einem Server, der sich so bekloppt verhält?
Entscheidung des Modulautors ;)
Ich würde es auch nicht machen, insb. weil es einen Umweg gibt, sprich was er schon gesagt hat: wget mit allem drum und dran, und dann die Datei statt die URL vom Modul lesen lassen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Zitat von: amenomade am 22 Juni 2020, 19:28:47
ABER: Die Webseite braucht ein "User-Agent"

wget -O test.ics 'https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1%5Bsection%5D=ics&tx_awmabfuhrkalender_pi1%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_pi1%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_pi1%5Bstrasse%5D=Landwehrstr.&tx_awmabfuhrkalender_pi1%5Bhausnummer%5D=10&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Brestmuell%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bpapier%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bbio%5D=70057572&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BR%5D=002%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BP%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_pi1%5Byear%5D=2020'

geht nicht.

Das funktioniert bei mir einwandfrei und liefert ein gültiges ics file zurück.


udo@cubie ~ $ wget -O test.ics 'https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1%5Bsection%5D=ics&tx_awmabfuhrkalender_pi1%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_pi1%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_pi1%5Bstrasse%5D=Landwehrstr.&tx_awmabfuhrkalender_pi1%5Bhausnummer%5D=10&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Brestmuell%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bpapier%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bbio%5D=70057572&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BR%5D=002%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BP%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_pi1%5Byear%5D=2020'
--2020-06-22 21:38:32--  https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1%5Bsection%5D=ics&tx_awmabfuhrkalender_pi1%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_pi1%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_pi1%5Bstrasse%5D=Landwehrstr.&tx_awmabfuhrkalender_pi1%5Bhausnummer%5D=10&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Brestmuell%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bpapier%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bbio%5D=70057572&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BR%5D=002%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BP%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_pi1%5Byear%5D=2020
Resolving www.awm-muenchen.de (www.awm-muenchen.de)... 2a00:1830:a001:f001:80::a187, 194.246.148.87
Connecting to www.awm-muenchen.de (www.awm-muenchen.de)|2a00:1830:a001:f001:80::a187|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1598 (1,6K) [text/html]
Saving to: 'test.ics'

test.ics              100%[=========================>]   1,56K  --.-KB/s    in 0s

2020-06-22 21:38:33 (4,49 MB/s) - 'test.ics' saved [1598/1598]

udo@cubie ~ $ cat test.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Abfallwirtschaftsbetrieb München//Abfuhrkalender//DE
CALSCALE:GREGORIAN
BEGIN:VEVENT
...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

#24
Und wie sieht die RRULE aus?
RRULE:FREQ=WEEKLY;UNTIL=20201231;BYDAY=;WKST=MO
= geht nicht, bzw ist nicht richtig

RRULE:FREQ=WEEKLY;UNTIL=20201231;BYDAY=MO,MO;WKST=MO
EXDATE;VALUE=DATE:20201221T000000
EXDATE;VALUE=DATE:20201228T000000
EXDATE;VALUE=DATE:20200406T000000
EXDATE;VALUE=DATE:20200413T000000
EXDATE;VALUE=DATE:20200504T000000
EXDATE;VALUE=DATE:20200601T000000

= geht, ist richtig
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

ok, dann war "geht nicht" für mich irreführend.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

weini

Ich habe jetzt ein einfaches DOIF gebaut:

defmod dif_Hole_Abfall_ICAL DOIF ([19:00|1]) {system("wget -O /var/lib/fhem/abfuhrkalender_marmolatastr_6.ics --header 'User-Agent: Mozilla/5.0 (Windows)' 'https://www.awm-muenchen.de/index/abfuhrkalender.html?tx_awmabfuhrkalender_pi1%5Bsection%5D=ics&tx_awmabfuhrkalender_pi1%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_pi1%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_pi1%5Bstrasse%5D=Landwehrstr.&tx_awmabfuhrkalender_pi1%5Bhausnummer%5D=10&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Brestmuell%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bpapier%5D=70057572&tx_awmabfuhrkalender_pi1%5Bstellplatz%5D%5Bbio%5D=70057572&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BR%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BP%5D=001%3BU&tx_awmabfuhrkalender_pi1%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_pi1%5Byear%5D=2020'")}

Beim Herumprobieren ist mir aufgefallen, dass der AWM Server durchaus diverse User-Agents akzeptiert. Ich habe den User-Agent String im Aufruf oben auch deutlich vereinfacht.

Zitat von: Dr. Boris Neubert am 22 Juni 2020, 20:29:49
Aber der User-Agent wird in HttpUtils::HttpUtils_Connect2() hart auf fhem gesetzt.

Der Server stößt sich meiner Meinung nach eher an der nicht vorhandenen Systematik von "User-Agent: fhem".
Hier gibt es dazu z. B. eine schöne Übersicht: https://deviceatlas.com/blog/list-of-user-agent-strings
Wenn FHEM in HttpUtils folgenden User-Agent String senden würde, dann würde FHEM sich mehr am "Standard" orientieren und die AWM Website würde korrekte Daten liefern.
"User-Agent: Mozilla/5.0 (Windows; FHEM)"  (alternativ auch Linux statt Windows)

Wäre das aus eurer Sicht sinnvoll?

amenomade

Ne, also fhem ist kein "Mozilla unter Betriebssystem  Fhem". Fhem ist Fhem
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

weini

So - und jetzt vergessen wir die ganze Bastelei, nehmen eine leicht modifizierte URL und alles funktioniert wieder wie früher:

defmod calAbfallTest Calendar ical url https://www.awm-muenchen.de/index/abfuhrkalender.html?text=1&tx_awmabfuhrkalender_pi1[section]=ics&tx_awmabfuhrkalender_pi1[standplatzwahl]=true&tx_awmabfuhrkalender_pi1[singlestandplatz]=false&tx_awmabfuhrkalender_pi1[strasse]=Landwehrstr.&tx_awmabfuhrkalender_pi1[hausnummer]=10&tx_awmabfuhrkalender_pi1[stellplatz][restmuell]=70057572&tx_awmabfuhrkalender_pi1[stellplatz][papier]=70057572&tx_awmabfuhrkalender_pi1[stellplatz][bio]=70057572&tx_awmabfuhrkalender_pi1[leerungszyklus][R]=001;U&tx_awmabfuhrkalender_pi1[leerungszyklus][P]=001;U&tx_awmabfuhrkalender_pi1[leerungszyklus][B]=1/2;U&tx_awmabfuhrkalender_pi1[year]=%Y 604800


Man beachte das zusätzliche "text=1" als ersten Parameter in der URL. Damit ist dann der User-Agent wieder egal. Wer bitte baut solche Webseiten?
Das ist jetzt hauptsächlich, falls noch andere Anwender aus München kommen und den Abfallkalender nutzen wollen.

Viele Grüße,
weini

Beta-User

Nur interessehalber: Wie oft ändert sich denn der Abfuhrkalender bei euch in München?
Unserer hier ist so statisch, wie er nur sein kann, daher lade ich das Ding einmal p.a. und das paßt dann auch das ganze Jahr so.

Auch wenn du das hier auf 1x pro Woche stehen hast, meine ich, dass das lokale Vorhalten eines solchen Kalenders die bessere Variante ist, denn:
Manchmal kommen Anbieter auf komische Ideen, wenn (aus deren Sicht zu) viele (automatisierte) Anfragen nach solchen Services kommen. U.a. deswegen scheint der eine oder andere Anbieter von Ferienkalendern dazu übergegangen zu sein, irgendwelche aufwändigeren "ich bin kein Roboter"-Verfahren zu implementieren (da gab es aber auch Spezialisten, die das mehrfach am Tag aktualisiert haben wollten...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files