FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Vaddi am 24 April 2018, 01:39:35

Titel: Notdienst Apotheke
Beitrag von: Vaddi am 24 April 2018, 01:39:35
Hallo zusammen,

die Idee dazu kam mir, als meine Tochter 1,5 Jahre alt war und zum ersten mal
eine gute Freundin auf sie aufgepasst hat, damit meine Frau und ich einen netten
Abend verbringen können.
Also hab ich mich ans dran gesetzt und für mein Tablet UI eine "SOS" Seite erstellt, wo
z.B. alle wichtigen Telefonnummern drauf stehen (Notruf Giftzentrale, usw.).
Neben den wichtigen Nummern, habe ich auch eine Anzeige für die nächstegelegene
Notdienst Apotheke hinzugefügt und diesen Codeschnipsel möchte ich nun mit euch teilen.

Ich möchte noch anmerken, dass ich kein Profi in Sachen RegEx bin.
Bei mir funktioniert das ganze allerdings ohne Probleme.

Die Daten werden von https://www.aponet.de (https://www.aponet.de) via HTTPMOD geholt.
Nun gibt es zwei Möglichkeiten:

Ihr wohnt in einem kleine Dorf/Gemeinte
Hier reicht die Eingabe der Postleitzahl eigentlich aus.
Ihr geht also auf https://www.aponet.de/ (https://www.aponet.de/) und gebt oben rechts
eure Postleitzahl ein. Den Link aus der Adresszeile kopiert ihr euch.
Der Link sollte so aussehen
https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ.html

Ihr wohnt in einer Großstadt
Hier macht eine Adresseingabe Sinn, da ja die nächstgelegene Apotheke angezeigt
wird.
Ihr geht auf https://www.aponet.de/service/notdienstapotheke-finden/erweiterte_suche.html (https://www.aponet.de/service/notdienstapotheke-finden/erweiterte_suche.html)
und tragt unten eure Daten ein.
GANZ WICHTIG: In dem Feld Datum tragt ihr eine 0 ein! Dadurch wird immer die aktuelle Notdienst
Apotheke angezeigt.
Dann auf Suche klicken und den Link aus der Adresszeile kopieren.
Dieser sollte ungefähr so aussehen
https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ/EURE-ADRESSE.html

Hier folgt nun meine Raw definition
defmod NotdienstApotheke HTTPMOD !!!HIER-MUSS-EUER-LINK-HIN!!! 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([ a-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([ a-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([ 0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse


Da der Notdienst in der Regel von 9:00 - 9:00 geht, habe ich noch ein AT definiert, welches
ein reread um 9:30 Uhr durchführt.
defmod AT.Apotheke at *09:30:00 set NotdienstApotheke reread

Ich hoffe der eine oder andere kann damit etwas anfangen.
Anbei noch zwei Screenshots, einmal die Anzeige in fhem und die Anzeige im Tablet UI.
Titel: Antw:Notdienst Apotheke
Beitrag von: stefanpf am 24 April 2018, 06:24:55
Danke für's Teilen.

Gibt aktuell nur zwei Auffälligkeiten:
- aponet.de hat das Syntax Zertifikat nicht rechtzeitig ersetzt und HSTS aktiviert :(
- Die Ergebnisse werden beim Auftreten von Umlauten abgeschnitten (z.B. bei PLZ 32312 oder 32361)
  Durch ein bißchen basteln am Regex scheint das aber korrigierbar zu sein (bin selbst regex Dilettant)


attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)

Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 24 April 2018, 16:51:23
Vielen Dank für die Korrekturen.
Ich war mal so frei und habe diese beiden Einträge in meinem obigen Beitrag
aktualisiert.
Titel: Notdienst Apotheke
Beitrag von: Ronny1979 am 24 April 2018, 18:11:41
Hallo,

Irgendwie wird mir die falsche Apotheke angezeigt, wenn ich diesen Link in den Browser eingebe kommt das richtige.


https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/oschatz/Schulstrasse.html


Nehme ich den Link in Fhem wird mir eine Apotheke ca 30 km entfernt angezeigt.
Musste den Ortsnamen nehmen und nicht die plz. Da es bei uns viele Ortsteile mit der selben plz und Straße gibt.

define NotdienstApotheke HTTPMOD https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/oschatz/Schulstrasse.html 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([ a-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([ a-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([ 0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse
define AT.Apotheke at *17:20:00 set NotdienstApotheke reread[\CODE]

Gruß
Ronny


Gesendet von iPhone mit Tapatalk
Titel: Antw:Notdienst Apotheke
Beitrag von: rischbiter123 am 25 April 2018, 20:29:07
Funktioniert bestens. Danke.
Titel: Antw:Notdienst Apotheke
Beitrag von: Deckoffizier am 26 April 2018, 13:21:03
Hallo,

sieht schon fast gut aus, die Adresse wird richtig angezeigt aber die Telefonnummer leider von einer anderen Apotheke.
Kann mir bitte jemand einen Tipp zur Abhilfe geben.

Danke für die Umsetzung soweit und schön auf die Schnelle die richtige Apotheke zur Hand zu Haben.

Gruß
Hans-Jürgen
Titel: Antw:Notdienst Apotheke
Beitrag von: knopf_piano am 26 April 2018, 18:20:09
in die regex muss ein \s damit das Leerzeichen gefunden wird:
Habe noch die Entfernung ergänzt


defmod NotdienstApotheke HTTPMOD <url> 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex reading06Name reading06Regex
attr NotdienstApotheke alias Notdienst-Apotheke
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([\sa-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([\sa-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([\sa-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)
attr NotdienstApotheke reading06Name NotdienstEntfernung
attr NotdienstApotheke reading06Regex <p class="distance">Entfernung:.*\n([\sa-zA-Z0-9,]+)
attr NotdienstApotheke room test
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2, NotdienstEntfernung
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse NotdienstEntfernung

Titel: Antw:Notdienst Apotheke
Beitrag von: Deckoffizier am 27 April 2018, 08:37:50
Hallo knopf_piano,

habe Deinen geänderten Code soweit übernommen leider wird immer noch eine falsche Telefonnummer von einer anderen Apotheke
eingesetzt.

Was mir auffiel ist beim Codeimport sind nur jeweils ein Semikolon nach abspeichern,
anpassen hat aber auch nicht weiter etwas geändert am Problem der richtigen Telefonnummer Zuordnung.

Klappt es bei Euch wirklich richtig, irgendwie komisch wenn es nur bei mir nicht stimmig ist.

Gruß
Hans-Jürgen
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 27 April 2018, 08:51:29
Poste doch mal die von dir genutzte URL, dann kann
das jemand anderes mal testen und besser nachvollziehen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Deckoffizier am 27 April 2018, 13:11:14
Hallo,

hier mal die URL https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/17235.html 0

ergibt Notdienst-Apotheke
   
Apotheke am Markt, 03307 2207, Am Markt 9 in 17235 Neustrelitz, 1,87 km


Rückwärtssuche bringt für  03307 2207    Markt Apotheke Zehdenik Klosterstr. 1, 16792 Zehdenick

richtig wäre 03981 206522 für die Neustrelitzer Apotheke etwas verwundert bleibt ;)

Gruß
Hans-Jürgen
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 27 April 2018, 20:44:09
Hey, ersetze mal bitte
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<br
durch
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)
Dann sollte es funktionieren.
Titel: Antw:Notdienst Apotheke
Beitrag von: Deckoffizier am 27 April 2018, 20:56:45
Hallo Vaddi,

Perfekt haut jetzt hin.

Danke für Deine Mühe!
Hatte schon mal den Fall und den Notdienst der Apotheke benötigt und jetzt wo der kleine Enkel da ist, schön die
Information schnell zur Hand zu haben.

Gruß
Hans-Jürgen
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 29 April 2018, 00:39:05
Ich hab mal ein paar der Regexp bei Regex101 getestet.

attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([\sa-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">


Könnte man durch <div class="box_adress"><h2>([^<]+)</h2><p class="distance"> vereinfachen. Gleicher Aufwand, aber kompakter zu lesen.

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)

Ich habe nur Adressen gefunden, in denen statt <br/> das Element <br> vorkam.

attr NotdienstApotheke reading06Regex <p class="distance">Entfernung:.*\n([\sa-zA-Z0-9,]+)
Hier müsste <p class="distance">Entfernung:\s*(.*) reichen.

attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<br
Matcht auch nicht. Da kommt im Resultset von ApoNet </p> bei mir, kein <br
Mit Tel\.:\s*([\s0-9.:&#;;_-]+) funktioniert der bei mir aber ausreichend.


Aber Psst:
curl 'http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=33330' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6' -H 'User-Agent: whatever' -H 'Accept: */*' -H 'Referer: http://apothekenfinder.mobi/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --compressed

Und man bekommt eine JSON-kodierte Liste aller gerade aktuellen Notdienstapotheken um 33330 Gütersloh (durch eigene Daten ersetzen), ganz ohne nervige tag soup.

Aponet bezieht die Daten bei der Abda, sind also identisch.
Titel: Antw:Notdienst Apotheke
Beitrag von: Ronny1979 am 29 April 2018, 10:02:01
Bei mir gehts jetzt auch, es fehle noch bei reading05Regex das "ß". Darum konnte er die Adresse nicht auslesen.

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜß]+)

Doch noch was in der Suche kam jetzt das:

<div class="box_adress premium_search_result"><h2><a href="service/apotheke/loewen-apotheke-04758.html">Löwen-Apotheke</a></h2><p class="distance">Entfernung: 1,89 km

Also ist das reading01Regex damit wieder hinfällig.
Titel: Antw:Notdienst Apotheke
Beitrag von: Michael am 29 April 2018, 13:41:42
Moin Vaddi

Vielen Dank hier für.

Hätte einen Vorschlag bzw brauche eure Hilfe.  :o
Ich habe leider keine Ahnung von Regex.

Ich würde gern das von Datum und Uhrzeit sowie
das bis Datum und Uhrzeit in einzelne Readings haben.

Nur ich schaffe es nicht.
Könnt Ihr mir helfen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 29 April 2018, 14:19:53
Hey, folgendes sollte funktionieren.
attr NotdienstApotheke reading06Name DatumVon
attr NotdienstApotheke reading06Regex <p>Notdienst\n.*vom([ 0-9.:&#;;_-]+)
attr NotdienstApotheke reading07Name UhrzeitVon
attr NotdienstApotheke reading07Regex <p>Notdienst\n.*vom.*um([ 0-9.:&#;;_-]+)
attr NotdienstApotheke reading08Name DatumBis
attr NotdienstApotheke reading08Regex <span>([ a-zA-Z0-9.:&#;;_-]+)um
attr NotdienstApotheke reading09Name UhrzeitBis
attr NotdienstApotheke reading09Regex <span>.*um([ 0-9:&#;;_-]+)

attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse DatumVon UhrzeitVon DatumBis UhrzeitBis


Wie ich bereits erwähnt habe, bin ich absolut kein Profi in Sachen Regex, der von mir gepostete
Code darf also gerne verbessert werden ;)
Titel: Antw:Notdienst Apotheke
Beitrag von: stefanpf am 29 April 2018, 17:38:20
Zitat von: Christoph Morrison am 29 April 2018, 00:39:05

Und man bekommt eine JSON-kodierte Liste aller gerade aktuellen Notdienstapotheken um 33330 Gütersloh (durch eigene Daten ersetzen), ganz ohne nervige tag soup.
Besserwisser  ;)
Finde ich gut...Motivation hat ausgereicht sich tiefergehend mit Httpmod zu beschäftigen.

defmod NotdienstApotheke2 HTTPMOD http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 0
attr NotdienstApotheke2 userattr get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
attr NotdienstApotheke2 enableControlSet 1
attr NotdienstApotheke2 reading01Encode UTF-8
attr NotdienstApotheke2 reading01JSON result_01_name
attr NotdienstApotheke2 reading01Name Name
attr NotdienstApotheke2 reading02JSON result_01_street
attr NotdienstApotheke2 reading02Name Strasse
attr NotdienstApotheke2 reading03JSON result_01_plz
attr NotdienstApotheke2 reading03Name Plz
attr NotdienstApotheke2 reading04JSON result_01_place
attr NotdienstApotheke2 reading04Name Ort
attr NotdienstApotheke2 reading05JSON result_01_number
attr NotdienstApotheke2 reading05Name Telefon
attr NotdienstApotheke2 reading06JSON result_01_fax
attr NotdienstApotheke2 reading06Name Telefax
attr NotdienstApotheke2 reading07JSON result_01_start
attr NotdienstApotheke2 reading07Name Beginn
attr NotdienstApotheke2 reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading08JSON result_01_end
attr NotdienstApotheke2 reading08Name Ende
attr NotdienstApotheke2 reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading09JSON result_01_lng
attr NotdienstApotheke2 reading09Name Längengrad
attr NotdienstApotheke2 reading10JSON result_01_lat
attr NotdienstApotheke2 reading10Name Breitengrad
attr NotdienstApotheke2 reading11JSON result_01_distance
attr NotdienstApotheke2 reading11Name Entfernung
attr NotdienstApotheke2 readingEncode UTF-8
attr NotdienstApotheke2 requestHeader2 Accept-Encoding: gzip, deflate
attr NotdienstApotheke2 requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
attr NotdienstApotheke2 requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
attr NotdienstApotheke2 requestHeader5 Referer: http://apothekenfinder.mobi/
attr NotdienstApotheke2 requestHeader6 X-Requested-With: XMLHttpRequest
attr NotdienstApotheke2 requestHeader7 Connection: keep-alive
attr NotdienstApotheke2 showBody 0
attr NotdienstApotheke2 stateFormat Name, Telefon, Strasse in Plz Ort
attr NotdienstApotheke2 verbose 0



Macht doch mit JSON mehr Spaß. 
Titel: Antw:Notdienst Apotheke
Beitrag von: MoneyBox76 am 03 Mai 2018, 17:08:12
Bin Aufruf der URL: http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 bekomme ich keine Daten zurück. ich gehe mal davon  aus, dass 32361 eine PLZ ist.

Ausgabe:
{"result":"","status":"0"}

Wie hast Du die URL herausgefunden?
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 03 Mai 2018, 19:37:22
Zitat von: MoneyBox76 am 03 Mai 2018, 17:08:12
Bin Aufruf der URL: http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 bekomme ich keine Daten zurück. ich gehe mal davon  aus, dass 32361 eine PLZ ist.

Ausgabe:
{"result":"","status":"0"}

Wie hast Du die URL herausgefunden?

Über die Chrome Entwicklertools. Für apothekenfinder muss das so aussehen, als würde man einen XHR-Request machen, deshalb auch die anderen Header.
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 26 Mai 2018, 10:27:44
Hallo,

vielen Dank für den Codeschnipsel. Ich habe ihn bei mir erfolgreich eingebaut. Naja, erfolgreich heißt von der grundsätzlichen Funktionalität her; jedoch habe ich bei der Darstellung ein kleines Problem.

Wenn ich die eigentliche Website aufrufe bekomme ich für heute die Notdienstapotheken angezeigt, die ich als Apo_Bild1 angefügt habe.

In FHEM wird mir das Ergebnis aber wie im angefügten Apo_Bild2 angezeigt.

Das heißt die erste Notdienstapotheke wird mir als Name und Telefonnummer angezeigt, die Adresse stammt aber von der zweiten Notdienstapotheke

Ich habe schon versucht im Quelltext der Seite etwas zu finden, an dem ich einen Unterschied feststellen kann. Aber die HTML-Tags sind beides mal die gleichen:
<div class="search_results"><div class="box_search_pharmacy"><div class="box_result_abstract"><h2>Wir haben 19 Notdienstapotheken im Umkreis gefunden.</h2><form method="post" action="/service/notdienstapotheke-finden/suchergebnis/0/Stuttgart/Friedrich-Ebert-Str%2B19.html"><fieldset><label>Suche verfeinern:</label><select name="location_alternative"><option value="32f89a4d89b275a673b0a99119e4fc28">70191, Stuttgart&nbsp;Mönchhalde&nbsp;Friedrich-Ebert-Straße</option><option value="c64350a1790d48d34a25aa8afc818453">70191, Stuttgart&nbsp;Stuttgart-Nord&nbsp;Friedrich-Ebert-Straße</option><option value="b86126f34351bc81dc4a5a33e8a059ab">70191, Stuttgart&nbsp;Weißenhof&nbsp;Friedrich-Ebert-Straße</option></select><input class="refresh" type="submit" value="" id="submit_refresh_data"/></fieldset></form><ul class="search_date"><li class="enhanced"><a href="/service/notdienstapotheke-finden/erweiterte_suche.html">erweiterte Suche</a></li><li class="date"><span style="color:#E2001A;">Jetzt</span><a class="tomorrow" href="/service/notdienstapotheke-finden/suchergebnis/26.05.2018/Stuttgart/Friedrich-Ebert-Str%2B19.html" title="Notdienstbeginn am 26.05.2018">26.05.2018</a></li><li class="new_search"><a href="/service/notdienstapotheke-finden/neue_suche.html">neue Suche</a></li></ul><div class="clearer"></div></div><div class="box_result_list teaser_list"><div id="map_canvas"><p style="text-align: center; padding-top: 160px;">Damit die Übersichtskarte angezeigt werden kann, aktivieren Sie bitte Javascript in Ihrem Browser!</p></div><div class="box_category_switcher"><div class="line"></div><div class="clearer"></div></div><div class="box_adress"><h2>Anemonen-Apotheke</h2><p class="distance">Entfernung:
                    2,40 km
                </p><p>Notdienst
                    vom 26.05.2018 um 08:30 Uhr
                   
                    bis <span>27.05.2018 um 08:30 Uhr.</span></p><h3>Kontakt</h3><p class="adress">Haußmannstr. 136<br/>70188 Stuttgart<br/><a href="                            http://reiseauskunft.bahn.de/bin/query.exe/dn?Z=70188+Stuttgart+Hau%C3%9Fmannstr.+136&amp;ZADR=1&amp;dbkanal_004=L01_S01_D001_KPK0097_LZ01                    " target="_blank" title="mit Bus / Bahn erreichen"><img style="vertical-align: middle;width: 18px;display: inline;margin-right: 5px;" alt="mit Bus / Bahn erreichen" src="https://cd6.aponet.de/fileadmin/aponet/mobile/img/layout/DB_Logobox_4c_50.jpg"/>
                    mit Bus / Bahn erreichen
                    </a></p><p class="contact">Tel.:
                        0711 2623814<br/>Fax:
                        0711 2868337</p><div class="line"></div></div><div class="box_adress"><h2>Apotheke am Berliner Platz</h2><p class="distance">Entfernung:
                    2,55 km
                </p><p>Notdienst
                    vom 26.05.2018 um 08:30 Uhr
                   
                    bis <span>27.05.2018 um 08:30 Uhr.</span></p><h3>Kontakt</h3><p class="adress">Fritz-Elsas-Str. 51<br/>70174 Stuttgart<br/><a href="                            http://reiseauskunft.bahn.de/bin/query.exe/dn?Z=70174+Stuttgart+Fritz-Elsas-Str.+51&amp;ZADR=1&amp;dbkanal_004=L01_S01_D001_KPK0097_LZ01                    " target="_blank" title="mit Bus / Bahn erreichen"><img style="vertical-align: middle;width: 18px;display: inline;margin-right: 5px;" alt="mit Bus / Bahn erreichen" src="https://cd6.aponet.de/fileadmin/aponet/mobile/img/layout/DB_Logobox_4c_50.jpg"/>
                    mit Bus / Bahn erreichen
                    </a></p><p class="contact">Tel.:
                        0711 6153707<br/>Fax:
                        0711 6153762</p><div class="line"></div></div><div class="box_adress"><h2>Freiberg-Apotheke</h2><p class="distance">Entfernung:
                    5,13 km


Kann mir das eventuell jemand erklären und mir einen Tip geben, wie ich die Daten der ersten (mit der kürzesten Entfernung) Apotheke angezeigt bekomme?

Danke und Gruß
Wolle

Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 26 Mai 2018, 11:08:43
Moin,

eine gute Anwendung, habe ich sofort in den Test genommen ! Danke !

ZitatDas heißt die erste Notdienstapotheke wird mir als Name und Telefonnummer angezeigt, die Adresse stammt aber von der zweiten Notdienstapotheke

Das Problem hatte ich gestern auch, allerdings war die Adresse von der 3. Apotheke aus der Liste. Heute ist wieder alles ok !
Komisch - was kann das sein ? Es gab ja ein paar Code-Updates und ich habe vielleicht etwas übersehen ???

Die Version mit JSON hat keine Probleme gehabt.

Moin
Bernd
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 26 Mai 2018, 11:33:09
Hallo zusammen.
Das er bei dir, Wolle02, die Adresse von der zweiten Apotheke nimmt, liegt an dem ß
im Straßennamen. Hatte ich wohl im meinem Codeschnipsel nicht berücksichtigt.
Um den Fehler zu beheben, bitte attr NotdienstApotheke reading05Regex ändern in:

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)

Dann sollte es funktionieren.
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 26 Mai 2018, 13:33:25
Hach, wenn man weiß wonach man suchen muss, kann es ja so einfach sein. Rückblickend betrachtet hätte ich da auch selber drauf kommen können.  ;D

Vielen Dank Vaddi. Der Vaddi ist halt der Beste  ;)

Gruß
Wolle
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 27 Mai 2018, 18:35:52
Nehmt wirklich lieber die JSON-Variante. Das Tag-Soup-Geparse ist doch nichts ordentliches.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 08 Juni 2018, 11:04:53
Servus Zusammen,

habe mal ein bissl rumgespielt und das auf meinem Testsystem installiert- funzt aber nicht so.
habe hier siesen Code von User stenapf genommen....die http adresse gegen meine getauscht:
defmod NotdienstApotheke2 HTTPMOD http://meine PLZ

attr NotdienstApotheke2 userattr get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
attr NotdienstApotheke2 enableControlSet 1
attr NotdienstApotheke2 reading01Encode UTF-8
attr NotdienstApotheke2 reading01JSON result_01_name
attr NotdienstApotheke2 reading01Name Name
attr NotdienstApotheke2 reading02JSON result_01_street
attr NotdienstApotheke2 reading02Name Strasse
attr NotdienstApotheke2 reading03JSON result_01_plz
attr NotdienstApotheke2 reading03Name Plz
attr NotdienstApotheke2 reading04JSON result_01_place
attr NotdienstApotheke2 reading04Name Ort
attr NotdienstApotheke2 reading05JSON result_01_number
attr NotdienstApotheke2 reading05Name Telefon
attr NotdienstApotheke2 reading06JSON result_01_fax
attr NotdienstApotheke2 reading06Name Telefax
attr NotdienstApotheke2 reading07JSON result_01_start
attr NotdienstApotheke2 reading07Name Beginn
attr NotdienstApotheke2 reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading08JSON result_01_end
attr NotdienstApotheke2 reading08Name Ende
attr NotdienstApotheke2 reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading09JSON result_01_lng
attr NotdienstApotheke2 reading09Name Längengrad
attr NotdienstApotheke2 reading10JSON result_01_lat
attr NotdienstApotheke2 reading10Name Breitengrad
attr NotdienstApotheke2 reading11JSON result_01_distance
attr NotdienstApotheke2 reading11Name Entfernung
attr NotdienstApotheke2 readingEncode UTF-8
attr NotdienstApotheke2 requestHeader2 Accept-Encoding: gzip, deflate
attr NotdienstApotheke2 requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
attr NotdienstApotheke2 requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
attr NotdienstApotheke2 requestHeader5 Referer: http://apothekenfinder.mobi/
attr NotdienstApotheke2 requestHeader6 X-Requested-With: XMLHttpRequest
attr NotdienstApotheke2 requestHeader7 Connection: keep-alive
attr NotdienstApotheke2 showBody 0
attr NotdienstApotheke2 stateFormat Name, Telefon, Strasse in Plz Ort
attr NotdienstApotheke2 verbose 0


nach einem reload bzw. neustert habe ich nur Name, Telefon, Strasse in Plz Ort als Anzeige...

habs mal mit PLZ probiert und auch nur mit Ortsnamen....

Gruss
Titel: Antw:Notdienst Apotheke
Beitrag von: JoWiemann am 08 Juni 2018, 13:13:25
Hm, warum anonymisierts Du die url? So können wir Dir nicht helfen.

Grüße Jörg


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 08 Juni 2018, 14:08:49
Hallo Jo,

o.k. sorry..hier die URL:

https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/69493.html

Gruss
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 08 Juni 2018, 17:19:19
Deine URL funktioniert so nicht, da sie kein JSON Format liefert.

So sollte deine Definition aussehen:
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493 0
Titel: Antw:Notdienst Apotheke
Beitrag von: Polamare am 08 Juni 2018, 18:06:14
Ist auf jeden Fall zu empfehlen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 09 Juni 2018, 19:21:38
Zitat von: Vaddi am 08 Juni 2018, 17:19:19
Deine URL funktioniert so nicht, da sie kein JSON Format liefert.

So sollte deine Definition aussehen:
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493 0

Danke Dir...so hats funktioniert !!
Gruss
Titel: Antw:Notdienst Apotheke
Beitrag von: WhyTea am 03 Juli 2018, 14:38:55
Hallo

Ich habe mal beide Varianten regex und json ausprobiert.
Beide funktionieren und das Ergebnis ist identisch.

Kann mir jemand die Vor- bzw. Nachteile der beiden Varainten erklären?
Welche wird den weiter gepflegt?

Gruß
Daniel
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 03 Juli 2018, 19:42:05
Zitat von: WhyTea am 03 Juli 2018, 14:38:55
Kann mir jemand die Vor- bzw. Nachteile der beiden Varainten erklären?

Für dich als Endanwender ist die Version nur insofern wichtig, als dass die JSON-Version vermutlich langfristig zuverlässige Ergebnisse liefert. Allerdings können die auch morgen die JSON-API ändern und keiner wird es vermutlich mitbekommen, bis es irgendwo knallt.

Zitat von: WhyTea am 03 Juli 2018, 14:38:55
Welche wird den weiter gepflegt?

Keine der Versionen ist ein offizielles Modul oder so, sondern nur ein Codesnippet und es gibt auch keinen Maintainer. Also gibt es darauf keine Antwort, die dir helfen würde.
Titel: Antw:Notdienst Apotheke
Beitrag von: koma am 03 August 2018, 19:51:33
vielen Dank, bei mir funktioniert es auch wunderbar!
Titel: Antw:Notdienst Apotheke
Beitrag von: hartenthaler am 04 August 2018, 14:08:57
Ich finde die JSON-Version auch besser, aber
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493
liefert kein Ergebnis mehr ab.

Hat jemand einen JSON-Link, der funktioniert und kann sagen wie man den "search=" Parameter genau befüllen muss?
Titel: Antw:Notdienst Apotheke
Beitrag von: hartenthaler am 04 August 2018, 14:25:58
Nun habe ich mal die Version aus dem ersten Post ausprobiert. Funktioniert für den Namen der Apotheke und die Adresse. Die gefundene Telefonnummer gehört aber nicht zu dieser Apotheke, sondern zur dritten in der Trefferliste.
https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/04.08.2018/13465/Am%2BEichenhain%2B74.html
Hat schon jemand diesen Fehler behoben oder muss ich mal selber reinwühlen? Wie bereits gesagt: bei JSON könnte das nicht passieren.
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 04 August 2018, 14:46:16
Also ich bekomme mit folgender Definition ein Ergebnis

http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493 0
Titel: Antw:Notdienst Apotheke
Beitrag von: hartenthaler am 05 August 2018, 15:21:54
Wenn ich den Link im Browser eingebe, dann bekomme ich auch kein Ergebnis. Das mag damit zusammenhängen, dass der Server nur selektiv auf bestimmte Browser antwortet. Daher vermute ich, dass mit einem meiner requestHeader-Parameter etwas nicht stimmt. Hier ein List meines Device:

Internals:
   DEF        http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=13465 0
   Interval   0
   JSONEnabled 1
   MainURL    http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=13465
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       NotdienstApotheke
   NR         818
   STATE      Name, Telefon, Strasse in Plz Ort
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
Attributes:
   DbLogExclude .*
   enableControlSet 1
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
   reading08JSON result_01_end
   reading08Name Ende
   reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
   reading09JSON result_01_lng
   reading09Name Längengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       Gesundheit
   showBody   0
   stateFormat Name, Telefon, Strasse in Plz Ort
   userattr   reading01Encode reading01JSON reading01Name reading01Regex reading02JSON reading02Name reading02Regex reading03JSON reading03Name reading03Regex reading04JSON reading04Name reading04Regex reading05-1Name reading05-2Name reading05JSON reading05Name reading05Regex reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
   verbose    0
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 05 August 2018, 15:31:37
Im normalen Browser bekomme ich auch nichts brauchbares angezeigt.
Ich habe deine requestHeader gerade mal mit meinen verglichen, stimmen 100%ig überein.
Deine letzte Definition mit der PLZ 13465 liefert bei mir auch ein Ergebnis in Fhem.
Ansonsten vllt ein mal das Device löschen neu anlegen und set reread nicht vergessen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 05 August 2018, 19:50:05
Ich möchte übrigens gesagt haben, dass Längengrad kein gültiger Reading-Name ist, da er einen Umlaut enthält.
Titel: Antw:Notdienst Apotheke
Beitrag von: hartenthaler am 07 August 2018, 09:59:25
Danke, jetzt geht die JSON-Variante (nach set reread). Also muss ich den Fehler wg. Telefonnummer in der alten Variante nicht mehr suchen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 07 August 2018, 14:11:37
Hallo Zusammen, ich muss immer in fhem erst auf "reread" klicken dann gehts.. woran liegt das?

Gruss


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Notdienst Apotheke
Beitrag von: ToM_ToM am 07 August 2018, 15:56:04
ZitatHallo Zusammen, ich muss immer in fhem erst auf "reread" klicken dann gehts.. woran liegt das?

Daran dass das Interval noch nicht erreicht ist. Gibst du z.B. als Intervall 600 ein, dann holt er erst nach 10 Minuten die Daten.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 07 August 2018, 18:11:42
Danke Dir
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 11 August 2018, 14:53:10
Hi, habe den intervall jetzt mal mit set auf 86400sec. Gestellt..das wären 24h

Wenn ich nach der Zeit draufschaue hat sich aber nix geändert..muss erst wieder reread drücken...was mach ich falsch???
Gruss
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 11 August 2018, 15:00:21
Also, ich habe bei ein at erstellt, welches jeden Morgen um 9:30 uhr
ein reread ausführt, da sich um 9 Uhr die Notdienst Apotheke ändert.
Titel: Antw:Notdienst Apotheke
Beitrag von: rischbiter123 am 11 August 2018, 16:36:47
Dito
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 11 August 2018, 17:12:15
Ok danke..
Nochwas..wer hat Notdienst Apo in Zabletui integriert und kann hier mal seinen Html code zur Verfügung stellen?
Vielen Dank
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 11 August 2018, 21:54:20
                <div data-type="label" data-device="NotdienstApotheke" data-get="Name"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Beginn"></div> bis
<div data-type="label" data-device="NotdienstApotheke" data-get="Ende" class="inline"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Telefon"></div>

Das ganze einfach noch mit Adresse usw. erweitern.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 12 August 2018, 11:00:09
Danke Dir...funzt einwandfrei auch mit dem "at" jetzt!!

Stelle jetzt mal meinen Code hier zur Verfügung :-*
<li data-row="3" data-col="6" data-sizex="3" data-sizey="2">

<header>
<div data-type="label" class="medium">Notdienst Apotheke</div>
</header>
<div data-type="label" data-device="NotdienstApotheke" data-get="Name"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Beginn"></div> bis
<div data-type="label" data-device="NotdienstApotheke" data-get="Ende" class="inline"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Telefon"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Strasse"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Plz"></div>
<div data-type="label" data-device="NotdienstApotheke" data-get="Ort"></div>

</li>
Titel: Antw:Notdienst Apotheke
Beitrag von: Canon.Fritz am 16 August 2018, 08:24:17
@ Vaddi

Danke für den Code. Funktioniert wirklich super  :)
Titel: Antw:Notdienst Apotheke
Beitrag von: Mave am 31 August 2018, 23:25:53
Bei mir wird seit Tagen nicht mehr aktualisiert. Wenn ich die URL aufrufe, erscheint das als Antwort:
{"result":"","status":"0"}

Geändert habe ich nichts.

Was könnte das Problem sein?

Vielen Dank.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 02 September 2018, 10:41:12
Bei mir auch...


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Notdienst Apotheke
Beitrag von: Vaddi am 02 September 2018, 11:16:27
Bei mir momentan das gleiche.
Da müsst ihr wohl oder übel vorerst auf die HTTPMOD Variante ohne JSON umsteigen.
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 10 September 2018, 09:01:07
Es sieht so aus als wäre die Gegenstelle sehr langsam geworden. Ich habe meiner Abfrage einen längeren Timeout gegönnt: Standard ist 2, ich habe 60 gesetzt, und bekomme nun auch wieder JSON-Daten.   
Titel: Antw:Notdienst Apotheke
Beitrag von: Mave am 10 September 2018, 11:39:49
Super, vielen Dank.
Titel: Antw:Notdienst Apotheke
Beitrag von: Kusselin am 26 Oktober 2018, 11:48:31
Zitat von: Christoph Morrison am 10 September 2018, 09:01:07
Es sieht so aus als wäre die Gegenstelle sehr langsam geworden. Ich habe meiner Abfrage einen längeren Timeout gegönnt: Standard ist 2, ich habe 60 gesetzt, und bekomme nun auch wieder JSON-Daten.

gebe ich da im DEF Feld einfach hinten dran dann die zahl 60 ein?

Gruss
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 26 Oktober 2018, 12:25:19
Zitat von: Kusselin am 26 Oktober 2018, 11:48:31
gebe ich da im DEF Feld einfach hinten dran dann die zahl 60 ein?

Nein, timeout ist ein Attribut. Die Zahl in der DEF ist der Interval in der die Seiten geholt werden und den kannst du ruhig auf einen hohen Wert stellen, da die Daten nur einmal morgens um ca. 9 Uhr aktualisiert werden.
Ich habe dort 24 Stunden drin, da ich den Abruf über ein DOIF at jeden morgen um 9:05 Uhr explizit triggere.
Titel: Antw:Notdienst Apotheke
Beitrag von: Mave am 02 Juni 2019, 13:26:14
Ich bekomme keine Daten mehr..... ???


Der JSON String scheint nicht mehr zu stimmen.

<br />
<b>Warning</b>:  sizeof(): Parameter must be an array or an object that implements Countable in <b>/srv/aponet/docroot/include/class.conditionengine.php</b> on line <b>40</b><br />
{"result":"","status":"0"}
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 02 Juni 2019, 17:33:42
Offenbar funktioniert die Suche nach PLZ dort nicht mehr / zur Zeit nicht korrekt. Die Suche mit Positionsangaben liefert aber noch Daten. Die Auslieferung über HTTP wird übrigens auch nicht mehr unterstützt (wird weitergeleitet):


curl 'https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=33330' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6,lb;q=0.5' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36' -H 'Accept: */*' -H 'Referer: https://apothekenfinder.mobi/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --compressed


<br />
<b>Warning</b>:  sizeof(): Parameter must be an array or an object that implements Countable in <b>/srv/aponet/docroot/interface/json.php</b> on line <b>85</b><br />
{"result":[{"id":"1074015","name":"Rosen-Apotheke","street":"Rhedaer Str. 12","plz":"33330","place":"G\u00fctersloh","distance":"2.19","start":1559458800,"end":1559545200,"number":"05241 531791","fax":"05241 531793","lng":"8.36682957","lat":"51.89590265"},{"id":"1024016","name":"Forum Apotheke","street":"Deckertstr. 52 - 54","plz":"33617","place":"Bielefeld","distance":"14.00","start":1559458800,"end":1559545200,"number":"0521 140443","fax":"0521 140445","lng":"8.5183635","lat":"52.0040985"},{"id":"1024006","name":"Amts-Apotheke","street":"Wertherstr. 434","plz":"33619","place":"Bielefeld","distance":"15.92","start":1559458800,"end":1559545200,"number":"0521 105330","fax":"0521 109124","lng":"8.45664","lat":"52.04878"},{"id":"1024084","name":"Apotheke am Vorwerk","street":"Engersche Str. 79","plz":"33611","place":"Bielefeld","distance":"19.21","start":1559458800,"end":1559545200,"number":"0521 84780","fax":"0521 4008769","lng":"8.549483","lat":"52.0497289"},{"id":"1210002","name":"B\u00e4ren-Apotheke","street":"Ravensberger Str. 18","plz":"33775","place":"Versmold","distance":"20.57","start":1559458800,"end":1559545200,"number":"05423 6667","fax":"05423 472865","lng":"8.15562","lat":"52.04157"},{"id":"1044005","name":"Rosen-Apotheke","street":"Auf der Bache 24","plz":"33129","place":"Delbr\u00fcck","distance":"21.28","start":1559458800,"end":1559545200,"number":"05250 52238","fax":"05250 933830","lng":"8.6119808","lat":"51.792556"},{"id":"1055009","name":"Maximilian-Apotheke","street":"Bahnhofstr. 4 c","plz":"59320","place":"Ennigerloh","distance":"25.53","start":1559458800,"end":1559545200,"number":"02524 3566","fax":"02524 262485","lng":"8.0252929","lat":"51.836435"},{"id":"1216013","name":"Apotheke im Gesundheitszentrum","street":"Am Krankenhaus 4","plz":"48231","place":"Warendorf","distance":"26.00","start":1559458800,"end":1559545200,"number":"02581 7899690","fax":"02581 7899691","lng":"8.0026526","lat":"51.9601923"},{"id":"1196002","name":"Barbara-Apotheke","street":"Lange Str. 32","plz":"32139","place":"Spenge","distance":"26.23","start":1559458800,"end":1559545200,"number":"05225 4646","fax":"05225 1019","lng":"8.4832389","lat":"52.1409065"},{"id":"1482083","name":"Eulen-Apotheke","street":"Beckumer Str. 27","plz":"59555","place":"Lippstadt","distance":"26.57","start":1559458800,"end":1559545200,"number":"02941 9795181","fax":"02941 9518007","lng":"8.3341811","lat":"51.6776294"},{"id":"1088023","name":"Vital-Apotheke im Marktkauf","street":"Deichkamp 13","plz":"32051","place":"Herford","distance":"29.39","start":1559458800,"end":1559545200,"number":"05221 178825","fax":"05221 178869","lng":"8.6586762","lat":"52.1127322"}],"search":{"latitude":51.909671,"longitude":8.369734900000001},"status":"1"}



curl 'https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=51.929366699999996&long=8.377279000000044' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6,lb;q=0.5' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36' -H 'Accept: */*' -H 'Referer: https://apothekenfinder.mobi/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --compressed |jq

{
  "result": [
    {
      "id": "1074015",
      "name": "Rosen-Apotheke",
      "street": "Rhedaer Str. 12",
      "plz": "33330",
      "place": "Gütersloh",
      "distance": "3.79",
      "start": 1559458800,
      "end": 1559545200,
      "number": "05241 531791",
      "fax": "05241 531793",
      "lng": "8.36682957",
      "lat": "51.89590265"
    },
    {
      "id": "1024016",
      "name": "Forum Apotheke",
      "street": "Deckertstr. 52 - 54",
      "plz": "33617",
      "place": "Bielefeld",
      "distance": "12.76",
      "start": 1559458800,
      "end": 1559545200,
      "number": "0521 140443",
      "fax": "0521 140445",
      "lng": "8.5183635",
      "lat": "52.0040985"
    },
    {
      "id": "1024006",
      "name": "Amts-Apotheke",
      "street": "Wertherstr. 434",
      "plz": "33619",
      "place": "Bielefeld",
      "distance": "14.36",
      "start": 1559458800,
      "end": 1559545200,
      "number": "0521 105330",
      "fax": "0521 109124",
      "lng": "8.45664",
      "lat": "52.04878"
    },
    {
      "id": "1024084",
      "name": "Apotheke am Vorwerk",
      "street": "Engersche Str. 79",
      "plz": "33611",
      "place": "Bielefeld",
      "distance": "17.86",
      "start": 1559458800,
      "end": 1559545200,
      "number": "0521 84780",
      "fax": "0521 4008769",
      "lng": "8.549483",
      "lat": "52.0497289"
    },
    {
      "id": "1210002",
      "name": "Bären-Apotheke",
      "street": "Ravensberger Str. 18",
      "plz": "33775",
      "place": "Versmold",
      "distance": "19.67",
      "start": 1559458800,
      "end": 1559545200,
      "number": "05423 6667",
      "fax": "05423 472865",
      "lng": "8.15562",
      "lat": "52.04157"
    },
    {
      "id": "1044005",
      "name": "Rosen-Apotheke",
      "street": "Auf der Bache 24",
      "plz": "33129",
      "place": "Delbrück",
      "distance": "22.19",
      "start": 1559458800,
      "end": 1559545200,
      "number": "05250 52238",
      "fax": "05250 933830",
      "lng": "8.6119808",
      "lat": "51.792556"
    },
    {
      "id": "1196002",
      "name": "Barbara-Apotheke",
      "street": "Lange Str. 32",
      "plz": "32139",
      "place": "Spenge",
      "distance": "24.64",
      "start": 1559458800,
      "end": 1559545200,
      "number": "05225 4646",
      "fax": "05225 1019",
      "lng": "8.4832389",
      "lat": "52.1409065"
    },
    {
      "id": "1216013",
      "name": "Apotheke im Gesundheitszentrum",
      "street": "Am Krankenhaus 4",
      "plz": "48231",
      "place": "Warendorf",
      "distance": "25.93",
      "start": 1559458800,
      "end": 1559545200,
      "number": "02581 7899690",
      "fax": "02581 7899691",
      "lng": "8.0026526",
      "lat": "51.9601923"
    },
    {
      "id": "1055009",
      "name": "Maximilian-Apotheke",
      "street": "Bahnhofstr. 4 c",
      "plz": "59320",
      "place": "Ennigerloh",
      "distance": "26.31",
      "start": 1559458800,
      "end": 1559545200,
      "number": "02524 3566",
      "fax": "02524 262485",
      "lng": "8.0252929",
      "lat": "51.836435"
    },
    {
      "id": "1088023",
      "name": "Vital-Apotheke im Marktkauf",
      "street": "Deichkamp 13",
      "plz": "32051",
      "place": "Herford",
      "distance": "28.08",
      "start": 1559458800,
      "end": 1559545200,
      "number": "05221 178825",
      "fax": "05221 178869",
      "lng": "8.6586762",
      "lat": "52.1127322"
    },
    {
      "id": "1482083",
      "name": "Eulen-Apotheke",
      "street": "Beckumer Str. 27",
      "plz": "59555",
      "place": "Lippstadt",
      "distance": "28.18",
      "start": 1559458800,
      "end": 1559545200,
      "number": "02941 9795181",
      "fax": "02941 9518007",
      "lng": "8.3341811",
      "lat": "51.6776294"
    }
  ],
  "status": "1"
}


(Wer sich die Mühe machen will: Meine Adresse steht auf meiner Website, die hier verlinkt ist, ihr braucht die Positionsdaten deshalb nicht bei Google Maps suchen ;-))
Titel: Antw:Notdienst Apotheke
Beitrag von: sven.scherf am 24 August 2020, 18:30:29
Hallo,

ich musste nun feststellen das hier über die URL http://apothekenfinder.mobi kein json mehr ausgeliefert wird.

Gibt es hier schon andere Lösungen ?

Viele Grüße

Sven
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 24 August 2020, 21:25:03
Zitat von: sven.scherf am 24 August 2020, 18:30:29
ich musste nun feststellen das hier über die URL http://apothekenfinder.mobi kein json mehr ausgeliefert wird.

Wie kommst du darauf? Hab eben noch mal getestet - alles wie beschrieben.
Titel: Antw:Notdienst Apotheke
Beitrag von: sven.scherf am 24 August 2020, 22:14:14
Hi Christoph,

ich bekomme kein Ergebnis zurück.

Dies ist meine Abfrage:    
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=64572

und dies bekomme ich zurück.

{"result":"","status":"0"}


Bei dir sieht dies anders aus ?

Viele Grüße

Sven
Titel: Antw:Notdienst Apotheke
Beitrag von: sven.scherf am 25 August 2020, 16:17:09
Hi,

done.

Vielen Dank es funktioniert nun wieder.

Im Browser bekommt man kein Ergebnis wie meine Vorgänger schon geschrieben hatten.
Vielleicht kann mir jemand erklären warum dem so ist und warum es in fhem funktioniert.  ::)

mit set reread geht es wieder.

Ich habe mir einen AT Befehl angelegt welcher mit vormittags die Apotheke neu einliest.

Vielen Dank und Grüße

Sven
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 25 August 2020, 18:46:30
Zitat von: sven.scherf am 25 August 2020, 16:17:09
Im Browser bekommt man kein Ergebnis wie meine Vorgänger schon geschrieben hatten.
Vielleicht kann mir jemand erklären warum dem so ist und warum es in fhem funktioniert.  ::)

Der Service will mehr als nur eine normale GET-Anfrage, wie man sie mit dem Browser üblicherweise macht. Deshalb liefert die API auch bei einem normalen Request nichts zurück.
Titel: Antw:Notdienst Apotheke
Beitrag von: Hugo Becker am 21 Oktober 2020, 13:32:47
Hallo,

seit heute scheint das Datum / Uhrzeit im Linuxformat (1603261800 = 21.10.2020 - 08:30:00) angegeben zu sein.
Kann das jemand bestätigen ?

Gruß
Hugo
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 21 Oktober 2020, 14:05:19
Zitat von: Hugo Becker am 21 Oktober 2020, 13:32:47
seit heute scheint das Datum / Uhrzeit im Linuxformat (1603261800 = 21.10.2020 - 08:30:00) angegeben zu sein.
Kann das jemand bestätigen ?

Hm, ich glaube das war schon immer so. Poste mal ein list deines Devices.
Titel: Antw:Notdienst Apotheke
Beitrag von: Hugo Becker am 21 Oktober 2020, 14:33:27
Hallo Christoph,

vielen Dank dafür, das Du einmal drüberschaust. Ich habe den Verdacht, das es an dem Modul HTTPMOD liegen könnte. Erst heute nach einem längeren Update, trat der Fehler auf.
Hier das List...

Internals:
   .getList   
   .setList   interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
   .updateRequestHash 1
   BUSY       0
   DEF        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
   FUUID      5c4332a1-f33f-1f9d-9e53-841d4e6da88f8488
   Interval   300
   JSONEnabled 1
   LASTSEND   1603282449.09014
   MainURL    https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       NotApotheke
   NOTIFYDEV  global
   NR         3618
   NTFY_ORDER 50-NotApotheke
   STATE      Luther Apotheke, 05031 71222, Hauptstr. 38 a, 31515 Wunstorf
   TRIGGERTIME 1603282749.08259
   TRIGGERTIME_FMT 2020-10-21 14:19:09
   TYPE       HTTPMOD
   addr       https://apothekenfinder.mobi:443
   auth       0
   buf       
   code       200
   data       
   displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
   header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
   host       apothekenfinder.mobi
   httpheader HTTP/1.1 200 OK
Date: Wed, 21 Oct 2020 12:08:51 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 893
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
   httpversion 1.0
   ignoreredirects 1
   loglevel   4
   path       /interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
   protocol   https
   redirects  0
   timeout    2
   url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
   value      0
   .attraggr:
   .attrminint:
   .readingParseList:
     01
     02
     03
     04
     05
     06
     07
     08
     09
     10
     11
   .userReadings:
     HASH(0x55fa160)
     HASH(0x56495f8)
   QUEUE:
   READINGS:
     2020-10-21 14:09:09   Beginn          1603261800
     2020-10-21 14:09:09   Breitengrad     52.4267926504515
     2020-10-21 14:09:09   Ende            1603348200
     2020-10-21 14:09:09   Entfernung      0.38
     2020-10-21 14:09:09   Längengrad     9.4714842932537
     2020-10-21 14:09:09   Name            Luther Apotheke
     2020-10-21 14:09:09   Ort             Wunstorf
     2020-10-21 14:14:11   PLZort          31515 Wunstorf
     2020-10-21 14:09:09   Plz             31515
     2020-10-21 14:09:09   Strasse         Hauptstr. 38 a
     2020-10-21 14:09:09   Telefax         05031 74440
     2020-10-21 14:09:09   Telefon         05031 71222
     2020-10-21 14:14:11   VonBis          Notdienst von 1603261800 bis 1603348200
   REQUEST:
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&lat=52.42863&long=9.466728
     value      0
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Längengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Längengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Längengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
   sslargs:
Attributes:
   enableControlSet 1
   icon       apotheke
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading08JSON result_01_end
   reading08Name Ende
   reading09JSON result_01_lng
   reading09Name Längengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       hidden
   showBody   0
   stateFormat Name, Telefon, Strasse, Plz Ort
   userReadings PLZort { ReadingsVal("NotApotheke","Plz",0)." ".ReadingsVal("NotApotheke","Ort",0) },
VonBis { "Notdienst von ".ReadingsVal("NotApotheke","Beginn",0)." bis ".ReadingsVal("NotApotheke","Ende",0) }
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
   verbose    0


Gruß Hugo
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 21 Oktober 2020, 14:42:10
Setze mal folgendes:

reading07JSON result_01_start
reading07Name Beginn
reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
reading08JSON result_01_end
reading08Name Ende
reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)


Bei mir hat das schon immer funktioniert, weil ich, warum auch immer, die Zeiten schon auswerte.
strftime kannst du dir anpassen wie es beliebt. Die Formate findest du in der Dokumentation (https://metacpan.org/pod/POSIX::strftime::GNU).
Titel: Antw:Notdienst Apotheke
Beitrag von: Hugo Becker am 21 Oktober 2020, 14:56:15
Hallo Christoph,

nun funktioniert es einwandfrei !!!  ;D
Vielen Dank noch einmal für die ultraschnelle Hilfe, KLASSE.

Gruß
Hugo
Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 23 Oktober 2020, 00:46:53
Moin,

ich kann Hilfe gebrauchen, komme nicht weiter :(
ZitatSetze mal folgendes:
Code: [Auswählen]

reading07JSON result_01_start
reading07Name Beginn
reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
reading08JSON result_01_end
reading08Name Ende
reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)

geht nicht, kann beide Attribute reading..OExpr nicht setzen. Fehlermeldung bei der Eingabe:

Invalid Expression strftime "%a %e.%m.%Y %H:%M" , localtime($val)



Und im Log:

2020.10.23 00:32:31.972 3: NotdienstApotheke2: attr reading08OExpr with expresion my $timeDiff = $oRef->{'$timeDiff'};my @matchlist = @{$oRef->{'@matchlist'}};return undef;strftime "%a %e.%m.%Y %H:%M" , localtime($val) created warning: String found where operator expected at (eval 23557) line 1, near "strftime "%a %e.%m.%Y %H:%M""

2020.10.23 00:32:31.973 3: NotdienstApotheke2: attr reading08OExpr with expresion my $timeDiff = $oRef->{'$timeDiff'};my @matchlist = @{$oRef->{'@matchlist'}};return undef;strftime "%a %e.%m.%Y %H:%M" , localtime($val) created warning: (Do you need to predeclare strftime?)

2020.10.23 00:32:31.974 3: NotdienstApotheke2: attr reading08OExpr with expression my $timeDiff = $oRef->{'$timeDiff'};my @matchlist = @{$oRef->{'@matchlist'}};return undef;strftime "%a %e.%m.%Y %H:%M" , localtime($val) on  created error: syntax error at (eval 23557) line 1, near "strftime "%a %e.%m.%Y %H:%M""


Test in einer Perl-Subrutine in der myUtils
my$hallo = strftime "%a %e.%m.%Y %H:%M", localtime(1603432800);
Log3 ($name, 4, "$name $sub_name: timestamp = $hallo ");

funktioniert strftime und bringt die gewünschte Formatierung.

Ich bin ratlos, hat jemand vielleicht eine Idee ?

Moin
Bernd

Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 23 Oktober 2020, 00:55:53
sorry, vergessen, list vom Entity:

Internals:
   BUSY       0
   CFGFN      FHEM/myxx.cfg
   DEF        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=24.... 3600
   FUUID      5c4b88a9-f33f-5817-d4b4-730d180dcbcd262b
   Interval   3600
   MainURL    https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=24...
   ModuleVersion 4.0.09 - 16.10.2020
   NAME       NotdienstApotheke2
   NOTIFYDEV  global
   NR         1141
   NTFY_ORDER 50-NotdienstApotheke2
   STATE      Schloss-Apotheke.....
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://apothekenfinder.mobi:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=24...
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     host       apothekenfinder.mobi
     httpheader HTTP/1.1 200 OK
Date: Thu, 22 Oct 2020 22:26:47 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 924
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /interface/json.php?device=web&source=not&search=24...
     protocol   https
     redirects  0
     timeout    60
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=24...
     sslargs:
   QUEUE:
   READINGS:
     2020-10-23 00:27:07   Beginn          Thu Oct 22 08:00:00 2020
     2020-10-23 00:27:07   Breitengrad     54.15
     2020-10-23 00:27:07   Ende           
     2020-10-23 00:27:07   Entfernung      11.77
     2020-10-23 00:27:07   Längengrad     10.4
     2020-10-23 00:27:07   Name            Schloss-Apotheke
     2020-10-23 00:27:07   Ort             Büttenwarder
     2020-10-23 00:27:07   Plz             12345
     2020-10-23 00:27:07   Strasse         Markt 15
     2020-10-23 00:27:07   Telefax         04...
     2020-10-23 00:27:07   Telefon         04...
     2020-10-23 00:27:07   update          1603432800
   REQUEST:
     context    reading
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     num        0
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=24601
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Längengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
       update     reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Längengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
       update     20
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Längengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
         update     reading 20
Attributes:
   alias      Apotheken Notdienst

   enableControlSet 1
   event-on-change-reading Name
   event-on-update-reading update
   group      Info
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading07OExpr localtime($val)
   reading08JSON result_01_end
   reading08Name Ende
   reading08OExpr strftime("%a %e.%m.%Y %H:%M", localtime($val))
   reading09JSON result_01_lng
   reading09Name Längengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   reading20JSON result_01_end
   reading20Name update
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       -Notruf,Buero
   showBody   0
   stateFormat Name<br>Strasse<br>Plz Ort<br>Telefon<br><br>Beginn bis Ende
   timeout    60
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name reading20JSON reading20Name reading20OExpr readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
   verbose    3
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 23 Oktober 2020, 01:39:15
Probiere mit
reading07OExpr strftime("%a %e.%m.%Y %H:%M", localtime($val))
Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 23 Oktober 2020, 10:41:54
moin,

leider auch nicht. Kann ich zwar eingeben, bei reread kommt aber kein Ergebnis und im Log:
2020.10.23 10:38:34.816 3: NotdienstApotheke2: perl expression eval with expression my $timeDiff = $oRef->{'$timeDiff'};strftime("%a %e.%m.%Y %H:%M", localtime($val)) on 1603519200 created error: Undefined subroutine &FHEM::HTTPMOD::Utils::strftime called at (eval 40600) line 1.

undefined subroutine ? Sehr komisch  :(
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 23 Oktober 2020, 11:15:42
Und wenn du POSIX::strftime absolut addressierst?
Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 23 Oktober 2020, 13:08:52
Moin,
ZitatUnd wenn du POSIX::strftime absolut addressierst?

JA das war es !
POSIX::strftime("%a %e.%m.%Y %H:%M", localtime($val))
und alles ist gut - jedenfalls bei mir. Wieso geht es bei anderen, fehlt mir irgendwo eine grundsätzliche Systemdefinition ?

... und schon habe ich als Linux-Depp wieder etwas zu lernen, Thema POSIX

Danke für Eure Hilfe ! und moin
Bernd
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 23 Oktober 2020, 18:54:46
Nein, das ist normal, und das hätte meinen nächsten Vorschlag gewesen.
Das ist so, weil der POSIX Perl-Modul nicht vom HTTPMOD Modul geladen wird.

Es kann sein, dass es mit vorherigen Versionen von HTTPMOD funktioniert hat.
Titel: Antw:Notdienst Apotheke
Beitrag von: pwlr am 24 Oktober 2020, 02:03:52
ok, das beruhigt.

Danke für Deine Info !
Moin
Bernd
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 25 Oktober 2020, 15:34:29
Zitat von: amenomade am 23 Oktober 2020, 18:54:46
Es kann sein, dass es mit vorherigen Versionen von HTTPMOD funktioniert hat.

Ich lade POSIX in den MyUtils (und importiere dort auch strftime), deshalb kann ich das ohne absolute Adressierung aufrufen. Man sollte sich einfach die absolute Adressierung angewöhnen und immer verwenden.
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 30 November 2020, 23:00:03
Hallo,
seid dem 26.11 funktioniert es nicht mehr!
Hat jemand eine Lösung ?

Gruß
Wendelin
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 30 November 2020, 23:10:33
Zitat von: wendeling am 30 November 2020, 23:00:03
Hallo,
seid dem 26.11 funktioniert es nicht mehr!
Hat jemand eine Lösung ?

Ja. Ein list auf dein Notdienst-Device. "Funktioniert nicht" ist keine echte Fehlerbeschreibung.
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 30 November 2020, 23:24:05

Internals:
   .JSONEnabled 1
   .LASTSEND  1606774902.92794
   .LastUpdate 1606774901.82857
   .TRIGGERTIME 1606775201.82857
   .getList   
   .setList   interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
   .updateRequestHash 1
   BUSY       0
   DEF        https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/91320.html
   FUUID      5ed68268-f33f-8758-accf-80bd9627ef697450
   Interval   300
   MainURL    https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/91320.html
   ModuleVersion 4.0.12 - 24.10.2020
   NAME       NotdienstApotheke
   NOTIFYDEV  global
   NR         92
   NTFY_ORDER 50-NotdienstApotheke
   STATE      Stadt-Apotheke, Bamberger Str. 51 in 91301 Forchheim,                     vom 26.11.2020 um 08:00 Uhr bis 27.11.2020 um 08:00 Uhr., Tel.:                         09191 65577
   TYPE       HTTPMOD
   value     
   .attraggr:
   .attrminint:
   .readingParseList:
     01
     02
     03
     04
     05
     06
     07
     08
     09
   .userReadings:
   CompiledRegexes:
   HTTPCookieHash:
     PHPSESSID;/:
       Name       PHPSESSID
       Options    path=/
       Path       /
       Value      m3bdp9srkcpi0u4usjsu4hnak5
     fe_typo_user;/:
       Name       fe_typo_user
       Options    path=/
       Path       /
       Value      0e2ea7c72d06ccffcd48cb6f88d1e12b
   HttpUtils:
     NAME       
     addr       https://www.aponet.de:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.aponet.de/apotheke/notdienstsuche/91320
     header     Cookie: PHPSESSID=m3bdp9srkcpi0u4usjsu4hnak5; fe_typo_user=0e2ea7c72d06ccffcd48cb6f88d1e12b
     host       www.aponet.de
     httpheader HTTP/1.1 200 OK
Date: Mon, 30 Nov 2020 22:21:42 GMT
Server: Apache/2.4.38 (Debian)
Content-Language: de
Upgrade: h2
Connection: Upgrade, close
Cache-Control: max-age=0
Expires: Mon, 30 Nov 2020 22:21:42 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
X-UA-Compatible: IE=edge
X-Content-Type-Options: nosniff
Content-Length: 8016
Content-Type: text/html; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /apotheke/notdienstsuche/91320
     protocol   https
     redirects  0
     timeout    2
     url        https://www.aponet.de/apotheke/notdienstsuche/91320
     sslargs:
   QUEUE:
   READINGS:
     2020-11-26 10:26:36   DatumBis        27.11.2020
     2020-11-26 10:26:36   DatumVon         26.11.2020
     2020-11-26 10:26:36   NotName         Stadt-Apotheke
     2020-11-26 10:26:36   NotdienstAdresse-1 Bamberger Str. 51
     2020-11-26 10:26:36   NotdienstAdresse-2 91301 Forchheim
     2020-11-26 10:26:36   NotdienstBis    27.11.2020 um 08:00 Uhr.
     2020-11-26 10:26:36   NotdienstTelefon                         09191 65577
     2020-11-26 10:26:36   NotdienstVon                        vom 26.11.2020 um 08:00 Uhr
     2020-11-26 10:26:36   UhrzeitBis       08:00
     2020-11-26 10:26:36   UhrzeitVon       08:00
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        0
     priority   1
     retryCount 0
     type       update
     url        https://www.aponet.de/apotheke/notdienstsuche/91320
   defptr:
     readingBase:
       DatumBis   reading
       DatumVon   reading
       NotName    reading
       NotdienstAdresse-1 reading
       NotdienstAdresse-2 reading
       NotdienstBis reading
       NotdienstTelefon reading
       NotdienstVon reading
       UhrzeitBis reading
       UhrzeitVon reading
     readingNum:
       DatumBis   08
       DatumVon   06
       NotName    01
       NotdienstAdresse-1 05
       NotdienstAdresse-2 05
       NotdienstBis 03
       NotdienstTelefon 04
       NotdienstVon 02
       UhrzeitBis 09
       UhrzeitVon 07
     readingOutdated:
     readingSubNum:
       NotdienstAdresse-1 -1
       NotdienstAdresse-2 -2
     requestReadings:
       update:
         DatumBis   reading 08
         DatumVon   reading 06
         NotName    reading 01
         NotdienstAdresse-1 reading 05-1
         NotdienstAdresse-2 reading 05-2
         NotdienstBis reading 03
         NotdienstTelefon reading 04
         NotdienstVon reading 02
         UhrzeitBis reading 09
         UhrzeitVon reading 07
Attributes:
   DbLogExclude .*
   enableControlSet 1
   group      Außen
   icon       message_medicine@red
   reading01Name NotName
   reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;_-]+)<\/h2><p class="distance">
   reading02Name NotdienstVon
   reading02Regex <p>Notdienst.*\n([ a-zA-Z0-9.:&#;_-]+)
   reading03Name NotdienstBis
   reading03Regex <span>([ a-zA-Z0-9.:&#;_-]+)<\/span>
   reading04Name NotdienstTelefon
   reading04Regex Tel.:.*\n([\s0-9.:&#;_-]+)
   reading05Name NotdienstAdresse
   reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜß.&#;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜß]+)
   reading06Name DatumVon
   reading06Regex <p>Notdienst\n.*vom([ 0-9.:&#;_-]+)
   reading07JSON result_01_start
   reading07Name Beginn
   reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
   reading07Regex <p>Notdienst\n.*vom.*um([ 0-9.:&#;_-]+)
   reading08JSON result_01_end
   reading08Name Ende
   reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
   reading08Regex <span>([ a-zA-Z0-9.:&#;_-]+)um
   reading09Name UhrzeitBis
   reading09Regex <span>.*um([ 0-9:&#;_-]+)
   room       0_Info_2
   stateFormat NotName, NotdienstAdresse-1 in NotdienstAdresse-2, NotdienstVon bis NotdienstBis, Tel.: NotdienstTelefon
   userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse DatumVon UhrzeitVon DatumBis UhrzeitBis
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex reading06Name reading06Regex reading07JSON reading07Name reading07OExpr reading07Regex reading08JSON reading08Name reading08OExpr reading08Regex reading09Name reading09Regex

Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 01 Dezember 2020, 20:21:52
Besteht das Problem noch immer?
Titel: Antw:Notdienst Apotheke
Beitrag von: rischbiter123 am 01 Dezember 2020, 20:49:35
Moin,

habe gerade mal nachgesehen, letzter Eintrag vom 26.11.

War auf aponet.de, die haben umgebaut. Die URL hat sich geändert.

LG

Andreas
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 01 Dezember 2020, 21:30:06
Gibt es eine Lösung ?
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 01 Dezember 2020, 22:59:44
Zitat von: wendeling am 01 Dezember 2020, 21:30:06
Gibt es eine Lösung ?
Ja, auf apothenkenfinder wechseln, und das Template pharmacy_emergency_service_germany nutzen.
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 01 Dezember 2020, 23:22:01
Ansonsten kann man mit folgender URL spielen:
https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=91320&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=&tx_aponetpharmacy_search[search][radius]=5&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=1982

Alle Regex müssen aber umgebaut werden
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 01 Dezember 2020, 23:43:47
defmod apo3 HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=91320&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=&tx_aponetpharmacy_search[search][radius]=5&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=1982 0
attr apo3 userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading25Name reading25Regex
attr apo3 reading01Name NotName
attr apo3 reading01Regex class="name">(.*?)<\/h4>
attr apo3 reading02Name NotdienstVon
attr apo3 reading02Regex Notdienst vom(.*?Uhr)
attr apo3 reading03Name NotdienstBis
attr apo3 reading03Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr apo3 reading04Name NotdienstTelefon
attr apo3 reading04Regex href="tel:(.*?)"
attr apo3 reading05Name NotdienstAdresse
attr apo3 reading05Regex (?s)strasse">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+).*?plz">(\d+)
attr apo3 reading06Name DatumVon
attr apo3 reading06Regex Notdienst vom ([ 0-9.:&#;;_-]+)
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 01 Dezember 2020, 23:56:42
Zitat von: amenomade am 01 Dezember 2020, 22:59:44
Ja, auf apothenkenfinder wechseln, und das Template pharmacy_emergency_service_germany nutzen.

ok, und wie muss ich das machen?
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 02 Dezember 2020, 00:03:18
Zitat von: wendeling am 01 Dezember 2020, 23:56:42
ok, und wie muss ich das machen?

Wie in der Doku des Templates (erreichbar durch "set <httpmodName> attrTemplate ?") beschrieben

Zitatpharmacy_emergency_service_germany
Gets the current emergency service of a pharmacy closeby your postal code
Define a HTTPMOD device like
define DEVICE HTTPMOD http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=1337 0
Change the postalcode (1337 in this example) to yours

also
define NotdienstApotheke2 HTTPMOD http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=91320 3600
set NotdienstApotheke2 attrTemplate pharmacy_emergency_service_germany
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 02 Dezember 2020, 00:17:18
Zitat von: amenomade am 01 Dezember 2020, 23:43:47
defmod apo3 HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=91320&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=&tx_aponetpharmacy_search[search][radius]=5&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=1982 0
attr apo3 userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading25Name reading25Regex
attr apo3 reading01Name NotName
attr apo3 reading01Regex class="name">(.*?)<\/h4>
attr apo3 reading02Name NotdienstVon
attr apo3 reading02Regex Notdienst vom(.*?Uhr)
attr apo3 reading03Name NotdienstBis
attr apo3 reading03Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr apo3 reading04Name NotdienstTelefon
attr apo3 reading04Regex href="tel:(.*?)"
attr apo3 reading05Name NotdienstAdresse
attr apo3 reading05Regex (?s)strasse">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+).*?plz">(\d+)
attr apo3 reading06Name DatumVon
attr apo3 reading06Regex Notdienst vom ([ 0-9.:&#;;_-]+)


Super damit geht es wieder!
Was muss ich noch machen , dass ich den Ort auch noch bekomme . Die PLZ ist ja schon da n

Gruß
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 02 Dezember 2020, 00:18:57
Die entspr. Regex ergänzen
Titel: Antw:Notdienst Apotheke
Beitrag von: wendeling am 02 Dezember 2020, 00:50:55
Hallo , habe es jetzt mit den Apothekenfinder gelöst .

Vielen Dank für die Hilfe

Gruß
Wendelin
Titel: Antw:Notdienst Apotheke
Beitrag von: meier81 am 27 Dezember 2020, 09:23:16
Hi und guten Morgen,

hab mal ne Frage bezüglich dem Apotheken-Notdienst über das Template "pharmacy_emergency_service_germany".

Hab das soweit alles definiert und es läuft auch soweit, aktualisieren tue ich es jeden Morgen um 8:30 da um die Uhrzeit bei uns der Wechsel der Apotheken ist.

Ich bekomme aber immer einen Error-Eintrag im Log, dieser lautet:

2020.12.27 08:30:00.061 3: Notdienst_Apotheke: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE HTML PUBLI...") at lib/FHEM/HTTPMOD/Utils.pm line 668.

Ein List meines Devices:

Internals:
   BUSY       0
   DEF        http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098 0
   FUUID      5fe1b6e9-f33f-c2d2-80f0-0056be89f6c71fd9
   FVERSION   98_HTTPMOD.pm:0.233300/2020-12-12
   Interval   0
   MainURL    http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
   ModuleVersion 4.0.16 - 5.12.2020
   NAME       Notdienst_Apotheke
   NOTIFYDEV  global
   NR         247
   NTFY_ORDER 50-Notdienst_Apotheke
   STATE      Rathaus-Apotheke, 06326 1535, Weinstr. 44 in 67146 Deidesheim
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://apothekenfinder.mobi:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     host       apothekenfinder.mobi
     httpheader HTTP/1.1 200 OK
Date: Sun, 27 Dec 2020 07:30:12 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 884
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /interface/json.php?device=web&source=not&search=67098
     protocol   https
     redirects  0
     timeout    60
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
     sslargs:
   QUEUE:
   READINGS:
     2020-12-27 08:30:01   Beginn          2020-12-27 08:30:00
     2020-12-27 08:30:01   Breitengrad     49.407193
     2020-12-27 08:30:01   Ende            2020-12-28 08:30:00
     2020-12-27 08:30:01   Entfernung      6.70
     2020-12-27 08:30:01   Laengengrad     8.186982
     2020-12-27 08:30:01   Name            Rathaus-Apotheke
     2020-12-27 08:30:01   Ort             Deidesheim
     2020-12-27 08:30:01   Plz             67146
     2020-12-27 08:30:01   Strasse         Weinstr. 44
     2020-12-27 08:30:01   Telefax         06326 7437
     2020-12-27 08:30:01   Telefon         06326 1535
     2020-12-22 10:06:52   attrTemplateVersion 20201129
   REQUEST:
     context    reading
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     num        0
     priority   1
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Laengengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Laengengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Laengengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
Attributes:
   model      pharmacy_emergency_service_germany
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading07OExpr FmtDateTime($val)
   reading08JSON result_01_end
   reading08Name Ende
   reading08OExpr FmtDateTime($val)
   reading09JSON result_01_lng
   reading09Name Laengengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       Testbereich->Testdevices
   showBody   0
   stateFormat Name, Telefon, Strasse in Plz Ort
   timeout    60
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL requestHeader requestHeader1


Hat da jemand eine Idee?

Gruß Markus
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 27 Dezember 2020, 12:02:22
Das kommt weil er ein redirect auf sich selbst zuerst macht:

2020.12.27 11:55:01 4: apotheke: Read callback: request type was update retry 0,

header: HTTP/1.1 301 Moved Permanently

Date: Sun, 27 Dec 2020 10:55:13 GMT

Server: Apache

Location: https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098

Content-Length: 298

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1, body length 298
2020.12.27 11:55:01 5: apotheke: Read callback: body

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098">here</a>.</p>
</body></html>

Und dieses Zwischenergebnis kann er nicht parsen.

Ich weiss nicht, wie es zu vermeiden.
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 27 Dezember 2020, 12:56:49
Zitat von: meier81 am 27 Dezember 2020, 09:23:16
Hat da jemand eine Idee?

Ja. Mach mal aus
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
bitte
https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098
(https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=67098)
Grüße aus OWL in meine Pälzer Heimad
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 27 Dezember 2020, 13:09:19
Tatsächlich, das hatte ich übersehen! Ich muss das template auch anpassen. Danke.

EDIT: eingecheckt.
Titel: Antw:Notdienst Apotheke
Beitrag von: Christoph Morrison am 27 Dezember 2020, 13:11:01
Ich bin gerade einigermaßen schockiert, dass HTTPMOD mit (standardkonformen) Redirects nicht richtig umgehen kann?!
Titel: Antw:Notdienst Apotheke
Beitrag von: amenomade am 27 Dezember 2020, 14:08:14
Ja, eigentlich sollte er, wenn enabaleRedirects gesetzt ist, gar nicht versuchen das JSON der 301 Seite zu parsen. ABer gut...
Titel: Antw:Notdienst Apotheke
Beitrag von: meier81 am 27 Dezember 2020, 16:56:24
Super, danke euch, hab ich eben mal geändert, ist ja morgen auch in den Templates dabei  ;).


Gruß zurück nach Gütersloh aus der Pfalz ;D
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 23 September 2021, 16:47:22
Für alle, die den Standort der Apotheke auf einer Karte angezeigt haben wollen, können sich mit OSM (https://www.openstreetmap.org) einen Kartenlink generieren (raw):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

erzeugt ein userReading OSMLink wie diesen:
   2021-09-23 16:45:17   OSMLink         https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
Entspricht diesem link: https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891 (https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891)
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 25 September 2021, 14:28:07
Zitat von: yersinia am 23 September 2021, 16:47:22
Für alle, die den Standort der Apotheke auf einer Karte angezeigt haben wollen, können sich mit OSM (https://www.openstreetmap.org) einen Kartenlink generieren (raw):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

erzeugt ein userReading OSMLink wie diesen:
   2021-09-23 16:45:17   OSMLink         https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
Entspricht diesem link: https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891 (https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891)

.... und wer lieber GoogleMaps verwendet für den wäre hier der passende Code:

attr DEVICE userReadings GoogleLink {my $ret = "https:\/\/www.google.com\/maps\/search\/?api=1";;\
    $ret .= "&query=".ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    return $ret;; }
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 28 September 2021, 12:23:53
Alternativ:
attr DEVICE userReadings GoogleLink {my $ret = "https:\/\/www.google.com\/maps\/search\/";;\
    $ret .= ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    $ret .= "\/\@".ReadingsVal($name,"Breitengrad","0");;\
    $ret .= ",".ReadingsVal($name,"Laengengrad","0");;\
    $ret .= ",18z";;\
    return $ret;; }

Erzeugt diesen Link mit Zentrierung und Zoom: https://maps.google.com/maps/search/51.1873547,10.0575891/@51.1873547,10.0575891,18z (https://maps.google.com/maps/search/51.1873547,10.0575891/@51.1873547,10.0575891,18z)
Titel: Antw:Notdienst Apotheke
Beitrag von: caldir65 am 07 Februar 2022, 10:53:35
Hallo,

ich habe den OSM-Link versucht, umzusetzen, jedoch kommt bei mir nur der folgende Fehler:
Error evaluating NotdienstApotheke userReading OSMLink: Can't modify single ref constructor in concatenation (.) or string at (eval 4505466) line 2, at EOF

Was übersehe ich da jetzt bloß?

Das Device:
Internals:
   BUSY       0
   DEF        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324 0
   FUUID      5db338f9-f33f-378b-3622-385c1dfe29ce8674
   FVERSION   98_HTTPMOD.pm:0.247080/2021-07-06
   Interval   0
   MainURL    https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       NotdienstApotheke
   NOTIFYDEV  global
   NR         1228
   NTFY_ORDER 50-NotdienstApotheke
   STATE      Neue Apotheke Bruchmühlen, 05226 982222, Kilverstraße 169 -173 in 32289 Rödinghausen
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://apothekenfinder.mobi:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     host       apothekenfinder.mobi
     httpheader HTTP/1.1 200 OK
Date: Mon, 07 Feb 2022 09:47:52 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 922
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /interface/json.php?device=web&source=not&search=49324
     protocol   https
     redirects  0
     timeout    2
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
     sslargs:
   QUEUE:
   READINGS:
     2022-02-07 10:47:39   Beginn          1644220800
     2022-02-07 10:47:39   Breitengrad     52.20131
     2022-02-07 10:47:39   Ende            1644307200
     2022-02-07 10:47:39   Entfernung      8.56
     2022-02-07 10:47:39   Laengengrad     8.45689
     2022-02-07 10:38:59   Längengrad     8.45689
     2022-02-07 10:47:39   Name            Neue Apotheke Bruchmühlen
     2022-02-07 10:47:39   OSMLink         Error evaluating NotdienstApotheke userReading OSMLink: Can't modify single ref constructor in concatenation (.) or string at (eval 4505466) line 2, at EOF

     2022-02-07 10:47:39   Ort             Rödinghausen
     2022-02-07 10:47:39   Plz             32289
     2022-02-07 10:47:39   Strasse         Kilverstraße 169 -173
     2022-02-07 10:47:39   Telefax         05226 984749
     2022-02-07 10:47:39   Telefon         05226 982222
   REQUEST:
     context    reading
     data       
     header     Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
Referer: http://apothekenfinder.mobi/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=49324
   defptr:
     readingBase:
       Beginn     reading
       Breitengrad reading
       Ende       reading
       Entfernung reading
       Laengengrad reading
       Längengrad reading
       Name       reading
       Ort        reading
       Plz        reading
       Strasse    reading
       Telefax    reading
       Telefon    reading
     readingNum:
       Beginn     07
       Breitengrad 10
       Ende       08
       Entfernung 11
       Laengengrad 09
       Längengrad 09
       Name       01
       Ort        04
       Plz        03
       Strasse    02
       Telefax    06
       Telefon    05
     readingOutdated:
     requestReadings:
       update:
         Beginn     reading 07
         Breitengrad reading 10
         Ende       reading 08
         Entfernung reading 11
         Laengengrad reading 09
         Längengrad reading 09
         Name       reading 01
         Ort        reading 04
         Plz        reading 03
         Strasse    reading 02
         Telefax    reading 06
         Telefon    reading 05
Attributes:
   DbLogExclude .*
   enableControlSet 1
   event-on-change-reading .*
   group      A_SOS
   icon       message_attention
   reading01Encode UTF-8
   reading01JSON result_01_name
   reading01Name Name
   reading02JSON result_01_street
   reading02Name Strasse
   reading03JSON result_01_plz
   reading03Name Plz
   reading04JSON result_01_place
   reading04Name Ort
   reading05JSON result_01_number
   reading05Name Telefon
   reading06JSON result_01_fax
   reading06Name Telefax
   reading07JSON result_01_start
   reading07Name Beginn
   reading08JSON result_01_end
   reading08Name Ende
   reading09JSON result_01_lng
   reading09Name Laengengrad
   reading10JSON result_01_lat
   reading10Name Breitengrad
   reading11JSON result_01_distance
   reading11Name Entfernung
   readingEncode UTF-8
   requestHeader2 Accept-Encoding: gzip, deflate
   requestHeader3 Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6
   requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
   requestHeader5 Referer: http://apothekenfinder.mobi/
   requestHeader6 X-Requested-With: XMLHttpRequest
   requestHeader7 Connection: keep-alive
   room       Flur
   showBody   0
   stateFormat Name, Telefon, Strasse in Plz Ort
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }
   userattr   get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading07OExpr reading08OExpr requestHeader requestHeader1


Gruß, Christoph
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 07 Februar 2022, 12:22:22
Da stimmt was mit deinem userReading nicht.
Das list(-Auszug) deines Devices ist
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

versus welche ich nutze ohne Fehlermeldung (ebenfalls list-Auszug):
   userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");
$ret .= "#map=18";
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");
return $ret; }


Hast du ggf das raw-Format als userReading kopiert? Wenn ja, probier mal die Version fürs Frontend (über Attribut userReading und dann einfach reinkopieren):
OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");
$ret .= "#map=18";
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");
return $ret; }
Titel: Antw:Notdienst Apotheke
Beitrag von: caldir65 am 07 Februar 2022, 14:38:32
Danke,

manchmal ist man ja auch schlicht blind  ::) Jetzt funktioniert es

Gruß, Christoph
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 02 August 2022, 09:41:32
Zitat von: yersinia am 23 September 2021, 16:47:22
Für alle, die den Standort der Apotheke auf einer Karte angezeigt haben wollen, können sich mit OSM (https://www.openstreetmap.org) einen Kartenlink generieren (raw):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

erzeugt ein userReading OSMLink wie diesen:
   2021-09-23 16:45:17   OSMLink         https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891
Entspricht diesem link: https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891 (https://www.openstreetmap.org/?mlat=51.1873547&mlon=10.0575891#map=18/51.1873547/10.0575891)
Und für diejenigen, die auch noch eine Routenbeschreibung über OSM haben möchten und den eigenen Standord als lat/long im global Device gepflegt haben (bzw. irgendwo im FHEM gepflegt haben), können sich über ein weiteres userReading einen solchen Link generieren (raw zum Kopieren; der Vollständigkeit-halber ist das userReading OSMLink mit enthalten):
attr DEVICE userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "mlat=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "&mlon=".ReadingsVal($name,"Laengengrad","0");;\
$ret .= "#map=18";;\
$ret .= "\/".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "\/".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; },\
OSMRoute { my $ret = "https:\/\/www.openstreetmap.org\/directions?";;\
$ret .= "engine=graphhopper_car";;\
$ret .= "&from=".AttrVal("global","latitude","0");;\
$ret .= "%2C".AttrVal("global","longitude","0");;\
$ret .= "&to=".ReadingsVal($name,"Breitengrad","0");;\
$ret .= "%2C".ReadingsVal($name,"Laengengrad","0");;\
return $ret;; }

Generiert ein userReading OSMRoute mit einen Link wie https://www.openstreetmap.org/directions?engine=graphhopper_car&from=51.18668%2C10.00639&to=51.1873547%2C10.0575891 (https://www.openstreetmap.org/directions?engine=graphhopper_car&from=51.18668%2C10.00639&to=51.1873547%2C10.0575891).

Die engine kann beliebig gewechselt werden (einfach den Teil $ret .= "engine=graphhopper_car";;\ entsprechend ersetzen):
Auto (GraphHopper) => graphhopper_car
Auto (OSRM) => fossgis_osrm_car
Fahrrad (GraphHopper) => graphhopper_bicycle
Fahrrad (OSRM) => fossgis_osrm_bike
Fuß (GraphHopper) => graphhopper_foot
Fuß (OSRM) => fossgis_osrm_foot
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 17 Januar 2023, 14:59:22
Mir düngt, dass seit dem 10.1.23 die Schnittstelle nicht mehr funktioniert. Hat schon jemand eine Alternative aufgetan?
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 17 Januar 2023, 19:18:37
Ja, die neue URL ist jetzt https://www.aponet.de/apotheke/notdienstsuche. Grundsätzlich funktioniert das alles schon noch wie vorher auch. Man müsste jetzt nur die Attribute entsprechend anpassen. Leider bin ich aufgrund der schlechten Bedienbarkeit des HTTPMOD-Moduls und der ausschließlich englischen Dokumentation völlig überfordert.
Titel: Antw:Notdienst Apotheke
Beitrag von: OdfFhem am 17 Januar 2023, 21:03:20
Ich habe ein Test-Device für den Apotheken-Notdienst angelegt - basierend auf attrTemplate "aponet_pharmacy_emergency_service_germany" (20201202).

Es liefert nach wie vor Daten und erzeugt die gewünschten Readings ...

War es nur ein temporäres Problem ?
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 18 Januar 2023, 06:43:17
Super Tip. Habe auch ein neues Device mit dem attr-Template angelegt. Damit funktionierts wieder. Nur die Koordinaten für den Google-Link kommen nicht. Mal schauen, ob man da noch was drehen kann.
Vielen Dank.
Titel: Antw:Notdienst Apotheke
Beitrag von: OdfFhem am 18 Januar 2023, 08:43:44
Zitat von: Wolle02 am 18 Januar 2023, 06:43:17
Nur die Koordinaten für den Google-Link kommen nicht. Mal schauen, ob man da noch was drehen kann.

Da hätte ich eine gute Nachricht für Dich
... "könnte man auf andere Datenbasis umbauen und hat dann auch Koordinaten"
aber auch eine schlechte
... "mit dem Wechsel der Datenbasis würden die von-bis-Zeiten verlorengehen"

oder

man versucht den auf der jetzigen Seite integrierten Kartenlink zu "zerlegen" ...
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 18 Januar 2023, 08:47:18
Zitat von: OdfFhem am 18 Januar 2023, 08:43:44

man versucht den auf der jetzigen Seite integrierten Kartenlink zu "zerlegen" ...

Das versuche ich grade schon seit einer Weile, aber ich scheitere mal wieder am Thema Regex, da ich es nicht schaffe einen Ausdruck zu kreieren, der die URL zurückgibt bzw. findet.
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 18 Januar 2023, 15:28:31
So, nach viel rumprobieren habe ich nun folgende Attribute bei mir noch eingefügt:

reading11Name Entfernung
reading11Regex Entfernung: </span>(.?)

reading12Name GoogleLink
reading12Regex href="(http:\/\/.*?)"


Damit wird die Entfernungsangabe noch anzeigt und der Link zu Google funktioniert auch wieder.
Titel: Antw:Notdienst Apotheke
Beitrag von: OdfFhem am 18 Januar 2023, 18:02:11
Zitat von: Wolle02 am 18 Januar 2023, 15:28:31
Damit wird die Entfernungsangabe noch anzeigt und der Link zu Google funktioniert auch wieder.

Angenommen, es geht um aponet.de ... dann kann ich Dein Ergebnis nicht nachvollziehen:

- die nächstgelegene Apotheke ist 12.36 km entfernt ... im Reading steht nur eine 1
- die nächstgelegene Apotheke hat auch eine Webseite ... im Reading steht nicht der Link zur Karte, sondern zur Webseite der Apotheke
Titel: Antw:Notdienst Apotheke
Beitrag von: DeeSPe am 18 Januar 2023, 19:00:13
Zitat von: OdfFhem am 18 Januar 2023, 18:02:11
Angenommen, es geht um aponet.de ... dann kann ich Dein Ergebnis nicht nachvollziehen:

- die nächstgelegene Apotheke ist 12.36 km entfernt ... im Reading steht nur eine 1
- die nächstgelegene Apotheke hat auch eine Webseite ... im Reading steht nicht der Link zur Karte, sondern zur Webseite der Apotheke

Probier mal:
reading11Name Entfernung
reading11Regex (\d{1,}\.?\d{1,2}?\skm)

reading12Name GoogleLink
reading12Regex "showapo".*?"(http:\/\/.*?)"


Gruß
Dan
Titel: Antw:Notdienst Apotheke
Beitrag von: Wolle02 am 18 Januar 2023, 19:00:54
Tja, da sieht man halt, dass ich von Regex nicht wirklich viel Ahnung habe und mit Try and Error mein Glück versuche.

Zitatdie nächstgelegene Apotheke ist 12.36 km entfernt ... im Reading steht nur eine 1

Das liegt daran, dass bei mir in der Stadt keine Apotheke mehr als 10 Kilometer weg ist. Deshalb wird nur nach einer Stelle gesucht. Bei mir hat das halt zum gewünschten Ergebnis geführt.
Aber diese leichte Modifikation gibt wohl auch 2 Stellen zurück. Mehr als 100 km wird wohl keiner zu einer Notdienstapotheke fahren müssen.
Entfernung: <\/span>(..?)

Zitatdie nächstgelegene Apotheke hat auch eine Webseite ... im Reading steht nicht der Link zur Karte, sondern zur Webseite der Apotheke

Ja, hab ich jetzt auch gesehen, dass manche Apotheken noch einen Link vor dem Googlelink haben. Das ist blöd. Weiß ich gerade nicht wie man da besser sucht. Ich probier mal weiter.
Wenn da aber jemand den entscheidenden Tip hat wär das toll.


EDIT:
Ahhh, da hat DeeSPe ein paar Sekunden vor mir gepostet. Ja das mit dem Googlelink sieht so wohl besser aus. Vielen Dank.
Titel: Antw:Notdienst Apotheke
Beitrag von: JoWiemann am 18 Januar 2023, 20:38:28
Hallo,

falls noch jemand direkt in Fhem auf den Link zur Route klicken möchte:


attr <DeviceName> userReadings GoogleMaps {return("<html><a href='" . ReadingsVal("<DeviceName>", "GoogleLink", ""). "/' target='_blank'>Route zur Apotheke</a></html>") }


Grüße Jörg

PS: Ich habe das Template mal testweise auf folgendes erweitert:


par:SEARCHZIPCODE;Zip code of the city you want to search around;
par:SEARCHCITY;city you want to search around;
par:SEARCHSTREET;Street in the city you want to search around;
par:SEARCHNUMBER;Building nummber you want to search around;
par:SEARCHRADIUS;Radius in km for the search;
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
defmod DEVICE HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=SEARCHZIPCODE%20SEARCHCITY&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=SEARCHSTREET%20SEARCHNUMBER&tx_aponetpharmacy_search[search][radius]=SEARCHRADIUS&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=1982 0
...
attr DEVICE reading07Name NotdienstEntfernung
attr DEVICE reading07Regex Entfernung:.<\/span>(\d{1,}\.?\d?\d?\skm)
attr DEVICE reading08Name GoogleLink
attr DEVICE reading08Regex href="(http:\/\/maps\.google\.de\/maps.*?)">Google Navigation
attr DEVICE stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2 NotdienstAdresse-3
attr DEVICE userReadings GoogleMaps {return("<html><a href='" . ReadingsVal("DEVICE", "GoogleLink", ""). "/' target='_blank'>Route zur Apotheke</a></html>") }


Bei Flächengemeinden ist die Straße schon wichtig. Da sind dann einige Kilometer relevant.
Titel: Antw:Notdienst Apotheke
Beitrag von: DeeSPe am 18 Januar 2023, 20:53:34
Zitat von: JoWiemann am 18 Januar 2023, 20:38:28
falls noch jemand direkt in Fhem auf den Link zur Route klicken möchte:

Ich habe das über stateFormat gelöst, inklusive anklickbarer Telefonnummer:
attr DEVICE stateFormat NotName (ca. Entfernung entfernt)<br>\
<a target="_blank" href="GoogleLink">NotdienstAdresse-1</a><br>\
NotdienstAdresse-2 NotdienstAdresse-3<br>\
Tel.: <a href="tel:NotdienstTelefon">NotdienstTelefon</a><br>\
<b>Bereitschaft</b><br>\
von NotdienstVon<br>\
bis NotdienstBis


Gruß
Dan
Titel: Antw:Notdienst Apotheke
Beitrag von: JoWiemann am 18 Januar 2023, 21:58:31
Hallo,

hier noch etwas "verfeinert"


GoogleMaps {
my $street = "Strasse";
my $number = "Hausnummer";
my $city = "Stadt";
my $plz = "PLZ";
my $oLink = ReadingsVal("NotdienstApotheke", "GoogleLink", "");
my $mLink .= "<html><a href='https://www.google.de/maps/dir/?api=1&origin=";
$mLink .= $street . "+" . $number . ",+" . $plz . "+" . $city . "&destination=" . substr($oLink,index($oLink, "?", 0) + 3);
$mLink .= "&travelmode=driving/' target='_blank'>Route zur Apotheke</a></html>";
return $mLink;;
}
Titel: Antw:Notdienst Apotheke
Beitrag von: OdfFhem am 18 Januar 2023, 22:05:18
... da war man wohl zu langsam, aber schicken kann man es trotzdem ...


Weiteres RegExp-Beispiel für Entfernung:

Entfernung:\s[^\d]*([\d.]*)\skm


Weiteres RegExp-Beispiel für Link:

<a\s[^>]*href="([^>]*)"[^>]*>Google Navigation<\/a>


Benötigt man nicht beide Readings (GoogleLink,GoogleMaps), könnte man bereits von HTTPMOD den "fertigen" Link generieren lassen:

attr DEVICE reading08OExpr "<html><a href='".$val."' target='_blank'>Karte für Apotheke</a></html>"
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 19 Januar 2023, 09:22:47
Danke an alle für die Tipps und Optimierungen. :)
Zitat von: JoWiemann am 18 Januar 2023, 20:38:28Bei Flächengemeinden ist die Straße schon wichtig. Da sind dann einige Kilometer relevant.
Der Suchlink akzeptiert auch Koordinaten.  ;)

Ich würde noch reread hinzufügen und das interval auf täglich (43200s) mit aligntime 09:03 hinzufügen (die Notdienstzeiten sind imho immer von 9Uhr bis 9uhr).

Hier mein Beispiel für das erweiterte Template aponet_pharmacy_emergency_service_germany:
defmod NotApo HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=%%PLZ%%&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=%%STREET%%&tx_aponetpharmacy_search[search][radius]=%%RADIUS%%&tx_aponetpharmacy_search[search][lat]=%%LAT%%&tx_aponetpharmacy_search[search][lng]=%%LONG%%&type=1982 43200
attr NotApo alignTime 09:03
attr NotApo model aponet_pharmacy_emergency_service_germany
attr NotApo reading01Name NotName
attr NotApo reading01Regex class="name">(.*?)<\/h4>
attr NotApo reading02Name NotdienstVon
attr NotApo reading02Regex Notdienst vom(.*?Uhr)
attr NotApo reading03Name NotdienstBis
attr NotApo reading03Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr NotApo reading04Name NotdienstTelefon
attr NotApo reading04Regex href="tel:(.*?)"
attr NotApo reading05Name NotdienstAdresse
attr NotApo reading05Regex (?s)strasse">([\sa-zA-Z0-9äöüÄÖÜß.&#;;;;_-]+).*?plz">(\d+).*?ort">([\sa-zA-Z0-9äöüÄÖÜß.&#;;;;_-]+)<
attr NotApo reading06Name DatumVon
attr NotApo reading06Regex Notdienst vom ([ 0-9.:&#;;;;_-]+)
attr NotApo replacement01Mode text
attr NotApo replacement01Regex %%PLZ%%
attr NotApo replacement01Value %20
attr NotApo replacement02Mode text
attr NotApo replacement02Regex %%RADIUS%%
attr NotApo replacement02Value 10
attr NotApo replacement03Mode text
attr NotApo replacement03Regex %%STREET%%
attr NotApo replacement03Value %20
attr NotApo replacement04Mode expression
attr NotApo replacement04Regex %%LAT%%
attr NotApo replacement04Value AttrVal("global","latitude","")
attr NotApo replacement05Mode expression
attr NotApo replacement05Regex %%LONG%%
attr NotApo replacement05Value AttrVal("global","longitude","")
attr NotApo room CoViD-19
attr NotApo stateFormat { my $ret .= "<div style=\"display:table;;width:100%;;\">";; #table\
$ret .= "<div style=\"display:table-row;;width:100%;;\">";; #row\
$ret .= "<div style=\"display:table-cell;;padding:3pt;;width:50%;;text-align:left;;\">";; #cell\
$ret .= "<a href=\"".ReadingsVal($name,"OSMLink","https:\/\/www.osm.org");;\
$ret .= "\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"font-weight:bold;;\">".ReadingsVal($name,"NotName","?")."</a><br \/>";;\
$ret .= ReadingsVal($name,"NotdienstAdresse-1","")."<br /\>";;\
$ret .= ReadingsVal($name,"NotdienstAdresse-2","")."&nbsp;;".ReadingsVal($name,"NotdienstAdresse-3","");;\
$ret .= "</div>";; #/cell\
$ret .= "<div style=\"display:table-cell;;width:50%;;text-align:left;;\">";; #cell\
my $numberlink = ReadingsVal($name,"NotdienstTelefon","");;\
$numberlink =~ s/\s+//g;;\
$ret .= "Tel.: <a href=\"tel:+49".substr($numberlink, 1)."\">".ReadingsVal($name,"NotdienstTelefon","")."</a>";;\
$ret .= "</div>";; #/cell\
$ret .= "</div>";; #/row\
$ret .= "<div style=\"display:table-row;;width:100%;;\">";; #row\
$ret .= "<div style=\"display:table-cell;;padding:3pt;;width:50%;;text-align:left;;\">";; #cell\
$ret .= "Von ".ReadingsVal($name,"NotdienstVon","");;\
$ret .= "</div>";; #/cell\
$ret .= "<div style=\"display:table-cell;;width:50%;;text-align:left;;\">";; #cell\
$ret .= "Bis ".ReadingsVal($name,"NotdienstBis","");;\
$ret .= "</div>";; #/cell\
$ret .= "</div>";; #/row\
$ret .= "</div>";; #/table\
return $ret;;\
}
attr NotApo timeout 30
attr NotApo userReadings OSMLink { my $ret = "https:\/\/www.openstreetmap.org\/?";;\
$ret .= "query=".ReadingsVal($name,"NotdienstAdresse-1","0");;\
$ret .= ",%20".ReadingsVal($name,"NotdienstAdresse-2","0");;\
$ret .= "%20".ReadingsVal($name,"NotdienstAdresse-3","0");;\
return $ret;; }
attr NotApo webCmd reread

Da es keine Koordinaten der Apothekenadresse gibt, kann zumindest ich kein Routing bilden - aber man kann OSM nach der Adresse anfragen.

Die Koordinaten kommen aus dem global Device:
attr NotApo replacement04Mode expression
attr NotApo replacement04Regex %%LAT%%
attr NotApo replacement04Value AttrVal("global","latitude","")
attr NotApo replacement05Mode expression
attr NotApo replacement05Regex %%LONG%%
attr NotApo replacement05Value AttrVal("global","longitude","")


Alternativ kann man auch die Adresse angeben (radius ist mit 10(km) vorbelegt):
attr NotApo replacement01Mode text
attr NotApo replacement01Regex %%PLZ%%
attr NotApo replacement01Value %20
attr NotApo replacement02Mode text
attr NotApo replacement02Regex %%RADIUS%%
attr NotApo replacement02Value 10
attr NotApo replacement03Mode text
attr NotApo replacement03Regex %%STREET%%
attr NotApo replacement03Value %20

Anstelle der %20 (= Leerzeichen) einfach für PLZ die PLZ mit optionaler Stadt (12345 Musterstadt) und Straße inkl. bedarfsweise Hausnummer angeben (Musterweg 25).
Titel: Antw:Notdienst Apotheke
Beitrag von: JoWiemann am 19 Januar 2023, 10:21:23
Hallo,

ich habe jetzt eine Vorschlag für das attrTemplate:


#Pharmacy emergency service Germany - aponet, Forum https://forum.fhem.de/index.php/topic,87234.0.html
name:aponet_pharmacy_emergency_service_germany
filter:TYPE=HTTPMOD
desc: Gets the current emergency service of a pharmacy closeby your postal code from aponet.de<br />Define an empty HTTPMOD device with <br />define DEVICE HTTPMOD none 0<br /><a href="https://forum.fhem.de/index.php/topic,87234.0.html">Source: Forum</a><br />
order:DIV02
par:SEARCHZIPCODE;Zip code of the city you want to search around;
par:SEARCHCITY;city you want to search around;
par:SEARCHSTREET;Street in the city you want to search around;
par:SEARCHNUMBER;Building nummber you want to search around;
par:SEARCHRADIUS;Radius in km for the search;
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
defmod DEVICE HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=SEARCHZIPCODE%20SEARCHCITY&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=SEARCHSTREET%20SEARCHNUMBER&tx_aponetpharmacy_search[search][radius]=SEARCHRADIUS&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=1982 0
attr DEVICE reading01Name NotName
attr DEVICE reading01Regex class="name">(.*?)<\/h4>
attr DEVICE reading02Name NotdienstVon
attr DEVICE reading02Regex Notdienst vom(.*?Uhr)
attr DEVICE reading03Name NotdienstBis
attr DEVICE reading03Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr DEVICE reading04Name NotdienstTelefon
attr DEVICE reading04Regex href="tel:(.*?)"
attr DEVICE reading05Name NotdienstAdresse
attr DEVICE reading05Regex (?s)strasse">([\sa-zA-Z0-9äöüÃ,,ÖÜß.&#;;_-]+).*?plz">(\d+).*?ort">([\sa-zA-Z0-9äöüÃ,,ÖÜß.&#;;_-]+)<
attr DEVICE reading06Name DatumVon
attr DEVICE reading06Regex Notdienst vom ([ 0-9.:&#;;_-]+)
attr DEVICE reading07Name NotdienstEntfernung
attr DEVICE reading07Regex Entfernung:.<\/span>(\d{1,}\.?\d?\d?\skm)
attr DEVICE reading08Name GoogleLink
attr DEVICE reading08Regex href="(http:\/\/maps\.google\.de\/maps.*?)">Google Navigation
attr DEVICE stateFormat {my $Apo = ReadingsVal("DEVICE", "NotName", "") . " (" . ReadingsVal("DEVICE", "NotdienstTelefon", "") . ") ";\
$Apo .=   ReadingsVal("DEVICE", "NotdienstAdresse-1", "") . " in ";\
$Apo .=   ReadingsVal("DEVICE", "NotdienstAdresse-2", "") . " " . ReadingsVal("DEVICE", "NotdienstAdresse-3", "");\
my $oLink = ReadingsVal("DEVICE", "GoogleLink", "");\
my $mLink .= "<html><a href='https://www.google.de/maps/dir/?api=1&origin=";\
$mLink .= "SEARCHSTREET" . "+" . "SEARCHNUMBER" . ",+" . "SEARCHZIPCODE" . "+" . "SEARCHCITY" . "&destination=" . substr($oLink,index($oLink, "?", 0) + 3);\
$mLink .= "&travelmode=driving/' target='_blank'>$Apo</a></html>";\
return $mLink;}
attr DEVICE model aponet_pharmacy_emergency_service_germany
setreading DEVICE attrTemplateVersion 20201202


Es wird nun eine stateFormat geniert, das für "Apotheke, Telefonnummer und Adresse" ein GoogleMaps Link hinterlegt.

Vielleicht findet die Änderung ja Zustimmung.

Grüße Jörg
Titel: Antw:Notdienst Apotheke
Beitrag von: caldir65 am 19 Januar 2023, 10:48:19
Moin

Zitat von: yersinia am 19 Januar 2023, 09:22:47
Ich würde noch reread hinzufügen und das interval auf täglich (43200s) mit aligntime 09:03 hinzufügen (die Notdienstzeiten sind imho immer von 9Uhr bis 9uhr).

Bei uns steht immer von/bis 8:30 Uhr - da sollte man die Abfrage vlt. etwas flexibler gestalten ...

Gruß, Christoph
Titel: Antw:Notdienst Apotheke
Beitrag von: yersinia am 19 Januar 2023, 10:49:57
Zitat von: caldir65 am 19 Januar 2023, 10:48:19Bei uns steht immer von/bis 8:30 Uhr - da sollte man die Abfrage vlt. etwas flexibler gestalten ...
Interessant. Dann setz doch das Attribut (!) aligntime auf 8:33...
Titel: Antw:Notdienst Apotheke
Beitrag von: OdfFhem am 23 Januar 2023, 07:08:37
Am Wochenende habe ich mich ein wenig näher mit dem "offiziellen Gesundheitsportal der deutschen ApothekerInnen" beschäftigt und das vorhandene Template u.a. an die neuen Erkenntnisse angepasst.

- zwei Parameter zur Festlegung der "Basis" werden als Attribut abgelegt und bei wiederholter Anwendung des Templates ausgelesen
- alignTime und Interval werden ebenso wie room bei wiederholter Anwendung des Templates ausgelesen
- das bislang existierende FHEM-Device wird resettet ... Reading und Attribute
- FHEM-Device führt zwei Anfragen durch ... eine für die ständig wechselnden Daten (neu) ... eine für den Notdienst-Zeitraum (alt, aber jetzt nach Datum und Zeit getrennt)
- generiert je ein Karten- sowie Routing-Reading für OSM bzw. Google
- Statusanzeige enthält "viele" Informationen, aber trifft im Zweifel nicht  jeden Geschmack


#Pharmacy emergency service Germany - aponet, Forum https://forum.fhem.de/index.php/topic,87234.0.html
name:aponet_pharmacy_emergency_service_germany
filter:TYPE=HTTPMOD
desc: Gets the current emergency service of a pharmacy closeby your postal code from aponet.de<br />Define an empty HTTPMOD device with <br />define DEVICE HTTPMOD none 0<br /><a href="https://forum.fhem.de/index.php/topic,87234.0.html">Source: Forum</a><br />
order:DIV02
par:SEARCHZIPCODE;Zip code of the city you want to search around; {AttrVal("DEVICE","parSearchZipCode",undef)}
par:SEARCHRADIUS;Radius in km for the search; {AttrVal("DEVICE","parSearchRadius",undef)}
par:ALIGNTIME;Aligns each periodic read request to this base time, defaults to 09:15; {AttrVal("DEVICE","alignTime","09:15")}
par:INTERVAL;Repeats the read request every interval seconds, defaults to 86400; {InternalVal("DEVICE","Interval",86400)}
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD")}
defmod DEVICE HTTPMOD none INTERVAL
deletereading -q DEVICE .*
deleteAttr DEVICE .*
attr DEVICE userattr parSearchRadius parSearchZipCode
attr DEVICE parSearchRadius SEARCHRADIUS
attr DEVICE parSearchZipCode SEARCHZIPCODE
attr DEVICE get100Name Notdienst1
attr DEVICE get100Poll 1
attr DEVICE get100URL %%base_url%%1982
attr DEVICE reading102Name NotdienstVonDatum
attr DEVICE reading102OExpr $val =~ s/(.*) um (.*) Uhr/$1/;; return $val;;
attr DEVICE reading102Regex Notdienst vom(.*?Uhr)
attr DEVICE reading103Name NotdienstVonZeit
attr DEVICE reading103OExpr $val =~ s/(.*) um (.*) Uhr/$2/;; return $val;;
attr DEVICE reading103Regex Notdienst vom(.*?Uhr)
attr DEVICE reading105Name NotdienstBisDatum
attr DEVICE reading105OExpr $val =~ s/(.*) um (.*) Uhr/$1/;; return $val;;
attr DEVICE reading105Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr DEVICE reading106Name NotdienstBisZeit
attr DEVICE reading106OExpr $val =~ s/(.*) um (.*) Uhr/$2/;; return $val;;
attr DEVICE reading106Regex Notdienst vom.*?Uhr bis(.*?Uhr)
attr DEVICE get200ExtractAllJSON 0
attr DEVICE get200Name Notdienst2
attr DEVICE get200Poll 1
attr DEVICE get200URL %%base_url%%1981
attr DEVICE reading201JSON features_01_properties_name
attr DEVICE reading201Name NotdienstName
attr DEVICE reading202JSON features_01_properties_strasse
attr DEVICE reading202Name NotdienstStrasse
attr DEVICE reading203JSON features_01_properties_plz
attr DEVICE reading203Name NotdienstPlz
attr DEVICE reading204JSON features_01_properties_ort
attr DEVICE reading204Name NotdienstOrt
attr DEVICE reading205JSON features_01_properties_telefon
attr DEVICE reading205Name NotdienstTelefon
attr DEVICE reading206JSON features_01_properties_fax
attr DEVICE reading206Name NotdienstTelefax
attr DEVICE reading207JSON features_01_geometry_coordinates_0
attr DEVICE reading207Name NotdienstLaengengrad
attr DEVICE reading208JSON features_01_geometry_coordinates_1
attr DEVICE reading208Name NotdienstBreitengrad
attr DEVICE reading209JSON features_01_properties_distanz
attr DEVICE reading209Name NotdienstEntfernung
attr DEVICE reading210JSON features_01_properties_email
attr DEVICE reading210Name NotdienstEmail
attr DEVICE readingMaxAge 60
attr DEVICE readingMaxAgeReplacementMode delete
attr DEVICE replacement01Mode text
attr DEVICE replacement01Regex %%base_url%%
attr DEVICE replacement01Value https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[controller]=Search&tx_aponetpharmacy_search[search][plzort]=SEARCHZIPCODE&tx_aponetpharmacy_search[search][date]=&tx_aponetpharmacy_search[search][street]=&tx_aponetpharmacy_search[search][radius]=SEARCHRADIUS&tx_aponetpharmacy_search[search][lat]=&tx_aponetpharmacy_search[search][lng]=&type=
attr DEVICE alignTime ALIGNTIME
attr DEVICE room WHICHROOM
attr DEVICE showError 1
attr DEVICE webCmd reread
attr DEVICE stateFormat NotdienstName, NotdienstStrasse in NotdienstPlz NotdienstOrt\
<br>\
NotdienstVonDatum, NotdienstVonZeit - NotdienstBisDatum, NotdienstBisZeit ... Tel.: NotdienstTelefon\
<br>\
NotdienstGOOGLEmap NotdienstGOOGLEroute NotdienstEntfernung km NotdienstOSMmap NotdienstOSMroute
attr DEVICE userReadings \
  NotdienstGOOGLEmap:(NotdienstBreitengrad|NotdienstLaengengrad):.* {\
    my $link = "https:\/\/www.google.com\/maps\/search";;\
    $link .= "\/".ReadingsVal($name,"NotdienstBreitengrad","0");;\
    $link .= ",".ReadingsVal($name,"NotdienstLaengengrad","0");;\
    return "<html><a href='".$link."' target='_blank'>Google-Karte</a></html>";;\
  },\
  NotdienstGOOGLEroute:(NotdienstBreitengrad|NotdienstLaengengrad):.* {\
    my $link = "https:\/\/www.google.com\/maps\/dir";;\
    $link .= "\/".AttrVal("global","latitude","0");;\
    $link .= ",".AttrVal("global","longitude","0");;\
    $link .= "\/".ReadingsVal($name,"NotdienstBreitengrad","0");;\
    $link .= ",".ReadingsVal($name,"NotdienstLaengengrad","0");;\
    return "<html><a href='".$link."' target='_blank'>Google-Route</a></html>";;\
  },\
  NotdienstOSMmap:(NotdienstBreitengrad|NotdienstLaengengrad):.* { \
    my $link = "https:\/\/www.openstreetmap.org\/?";;\
    $link .= "mlat=".ReadingsVal($name,"NotdienstBreitengrad","0");;\
    $link .= "&mlon=".ReadingsVal($name,"NotdienstLaengengrad","0");;\
    $link .= "#map=18";;\
    $link .= "\/".ReadingsVal($name,"NotdienstBreitengrad","0");;\
    $link .= "\/".ReadingsVal($name,"NotdienstLaengengrad","0");;\
    return "<html><a href='".$link."' target='_blank'>OSM-Karte</a></html>";;\
  },\
  NotdienstOSMroute:(NotdienstBreitengrad|NotdienstLaengengrad):.* { \
    my $link = "https:\/\/www.openstreetmap.org\/directions?";;\
    $link .= "engine=graphhopper_car";;\
    $link .= "&from=".AttrVal("global","latitude","0");;\
    $link .= "%2C".AttrVal("global","longitude","0");;\
    $link .= "&to=".ReadingsVal($name,"NotdienstBreitengrad","0");;\
    $link .= "%2C".ReadingsVal($name,"NotdienstLaengengrad","0");;\
    return "<html><a href='".$link."' target='_blank'>OSM-Route</a></html>";;\
  }
attr DEVICE model aponet_pharmacy_emergency_service_germany
setreading DEVICE attrTemplateVersion 20230123
Titel: Aw: Notdienst Apotheke
Beitrag von: binford6000 am 22 März 2023, 08:06:58
Moin Zusammen,
funktioniert bei euch noch die Abfrage der Notdienst Apotheke über aponet?
Ich habe sowohl das attrTemplate von Jörg als auch von OldFhem getestet. Jeweils ohne das Readings erstellt wurden.

DatumVon 10.03.20232023-03-10 08:33:00

VG Sebastian
Titel: Aw: Notdienst Apotheke
Beitrag von: caldir65 am 22 März 2023, 08:46:56
Moin,

bei mir kommt auch nichts mehr seit dem 10.03.2023 ... bzw. der letzte Eintrag ist vom 10.03.

Gruß, Christoph
Titel: Aw: Notdienst Apotheke
Beitrag von: DeeSPe am 22 März 2023, 09:42:21
Das Template für den Notdienst der Apotheken muss komplett überarbeitet werden denn die abgefragte URL liefert nun JSON zurück und das klappt mit dem bisherigen Template nicht mehr.

Gruß
Dan
Titel: Aw: Notdienst Apotheke
Beitrag von: binford6000 am 22 März 2023, 10:00:02
Zitat von: DeeSPe am 22 März 2023, 09:42:21Das Template für den Notdienst der Apotheken muss komplett überarbeitet werden denn die abgefragte URL liefert nun JSON zurück und das klappt mit dem bisherigen Template nicht mehr.

Gruß
Dan
Hi Dan,
das Template von OldFhem (mit JSON) hat ja immerhin bis zum 10.03. funktioniert. Anscheinend gabs da wieder eine Änderung...
VG Sebastian
Titel: Aw: Notdienst Apotheke
Beitrag von: Wolle02 am 23 März 2023, 06:09:43
Wenn ich das Attribut 'ExtractAllJSON' auf 1 setze, dann kommen wieder Daten rein. Die vielen Readings kann man mit dem Attribut 'ExtractAllJSONFilter' eingrenzen.
Jetzt müsste man nur noch die Userreadings für die Links und das stateFormat anpassen. Vielleicht komme ich heute Abend dazu.
Titel: Aw: Notdienst Apotheke
Beitrag von: Wolle02 am 26 März 2023, 16:33:26
StateFormat habe ich jetzt bei mir so umgestellt:

<hr />results_apotheken_apotheke_01_name, results_apotheken_apotheke_01_strasse in results_apotheken_apotheke_01_plz results_apotheken_apotheke_01_ort, Tel: results_apotheken_apotheke_01_telefon, von results_apotheken_apotheke_01_startdatum, results_apotheken_apotheke_01_startzeit Uhr bis results_apotheken_apotheke_01_enddatum, results_apotheken_apotheke_01_endzeit Uhr<br><a href="GoogleLink_UR" target="_blank">Map</a><hr />
Die Userreadings für die Links lauten bei mir jetzt so:

OSMLink_UR { my $ret = "https:\/\/www.openstreetmap.org\/?";
$ret .= "mlat=".ReadingsVal($name,"results_apotheken_apotheke_01_latitude","0");
$ret .= "&mlon=".ReadingsVal($name,"results_apotheken_apotheke_01_longitude","0");
$ret .= "#map=18";
$ret .= "\/".ReadingsVal($name,"results_apotheken_apotheke_01_latitude","0");
$ret .= "\/".ReadingsVal($name,"results_apotheken_apotheke_01_longitude","0");
return $ret; },

GoogleLink_UR {my $ret = "https:\/\/www.google.com\/maps\/search\/?api=1";
    $ret .= "&query=".ReadingsVal($name,"results_apotheken_apotheke_01_latitude","0");
    $ret .= ",".ReadingsVal($name,"results_apotheken_apotheke_01_longitude","0");
    return $ret; }

Damit läuft es bei mir wieder wie vorher.
Titel: Aw: Notdienst Apotheke
Beitrag von: DeeSPe am 27 März 2023, 16:28:31
Zitat von: binford6000 am 22 März 2023, 10:00:02Hi Dan,
das Template von OldFhem (mit JSON) hat ja immerhin bis zum 10.03. funktioniert. Anscheinend gabs da wieder eine Änderung...
VG Sebastian

Hi Sebastian,

dass die auf JSON umgestellt haben hatte ich nicht mitbekommen.
Habe jetzt aber auch wieder eine lauffähige Version mittels HTTPMOD hinbekommen:
defmod NotAppo HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[search][plzort]=12345&tx_aponetpharmacy_search[search][radius]=2&type=1982 86400
attr NotAppo alias Apotheken-Notdienst
attr NotAppo alignTime 08:56
attr NotAppo bodyEncode utf8
attr NotAppo extractAllJSON 1
attr NotAppo extractAllJSONFilter results_apotheken_apotheke_01.*
attr NotAppo stateFormat results_apotheken_apotheke_01_name (ca. results_apotheken_apotheke_01_distanz km entfernt)<br>\
<a target="_blank" href="results_apotheken_apotheke_01_goo" title="zu Google Maps">results_apotheken_apotheke_01_strasse</a><br>\
<a target="_blank" href="results_apotheken_apotheke_01_osm" title="zu OpenStreet Maps">results_apotheken_apotheke_01_plz results_apotheken_apotheke_01_ort</a><br>\
Tel.: <a href="tel:results_apotheken_apotheke_01_telefon" title="results_apotheken_apotheke_01_name anrufen">results_apotheken_apotheke_01_telefon</a><br>\
<b>Notdienst im Zeitraum</b><br>\
vom results_apotheken_apotheke_01_startdatum results_apotheken_apotheke_01_startzeit<br>\
bis results_apotheken_apotheke_01_enddatum results_apotheken_apotheke_01_endzeit
attr NotAppo userReadings results_apotheken_apotheke_01_goo { my $ret = 'https://www.google.com/maps/place/';;\
    $ret .= urlEncode(ReadingsVal($name,'results_apotheken_apotheke_01_strasse',''));;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_plz','');;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_ort','');;\
    $ret },\
results_apotheken_apotheke_01_osm { my $ret = 'https://www.openstreetmap.org/search?query=';;\
    $ret .= urlEncode(ReadingsVal($name,'results_apotheken_apotheke_01_strasse',''));;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_plz','');;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_ort','');;\
    $ret }

Gruß
Dan

P.S. Mit gesetztem Attribut "bodyEncode utf8" klappt es auch mit den Umlauten und sonstigen Sonderzeichen.
Titel: Aw: Notdienst Apotheke
Beitrag von: binford6000 am 27 März 2023, 17:23:33
ZitatP.S. Mit gesetztem Attribut "bodyEncode utf8" klappt es auch mit den Umlauten und sonstigen Sonderzeichen.
Hmmm, ich hatte nur mit bodyDecode utf8 erfolglos probiert... 🤔
Hab dann aber jetzt eh umgestellt auf JsonMod (https://forum.fhem.de/index.php?topic=132883.0).

VG Sebastian
Titel: Aw: Notdienst Apotheke
Beitrag von: wendeling am 14 Juni 2023, 00:44:15
Hallo,
leider funktioniert das bei mir nicht. Es kommen keine Daten.
Muss ich ein spezielles template verwenden ?

Gruß
Wendelin



Zitat von: DeeSPe am 27 März 2023, 16:28:31
Zitat von: binford6000 am 22 März 2023, 10:00:02Hi Dan,
das Template von OldFhem (mit JSON) hat ja immerhin bis zum 10.03. funktioniert. Anscheinend gabs da wieder eine Änderung...
VG Sebastian

Hi Sebastian,

dass die auf JSON umgestellt haben hatte ich nicht mitbekommen.
Habe jetzt aber auch wieder eine lauffähige Version mittels HTTPMOD hinbekommen:
defmod NotAppo HTTPMOD https://www.aponet.de/apotheke/notdienstsuche?tx_aponetpharmacy_search[action]=result&tx_aponetpharmacy_search[search][plzort]=12345&tx_aponetpharmacy_search[search][radius]=2&type=1982 86400
attr NotAppo alias Apotheken-Notdienst
attr NotAppo alignTime 08:56
attr NotAppo bodyEncode utf8
attr NotAppo extractAllJSON 1
attr NotAppo extractAllJSONFilter results_apotheken_apotheke_01.*
attr NotAppo stateFormat results_apotheken_apotheke_01_name (ca. results_apotheken_apotheke_01_distanz km entfernt)<br>\
<a target="_blank" href="results_apotheken_apotheke_01_goo" title="zu Google Maps">results_apotheken_apotheke_01_strasse</a><br>\
<a target="_blank" href="results_apotheken_apotheke_01_osm" title="zu OpenStreet Maps">results_apotheken_apotheke_01_plz results_apotheken_apotheke_01_ort</a><br>\
Tel.: <a href="tel:results_apotheken_apotheke_01_telefon" title="results_apotheken_apotheke_01_name anrufen">results_apotheken_apotheke_01_telefon</a><br>\
<b>Notdienst im Zeitraum</b><br>\
vom results_apotheken_apotheke_01_startdatum results_apotheken_apotheke_01_startzeit<br>\
bis results_apotheken_apotheke_01_enddatum results_apotheken_apotheke_01_endzeit
attr NotAppo userReadings results_apotheken_apotheke_01_goo { my $ret = 'https://www.google.com/maps/place/';;\
    $ret .= urlEncode(ReadingsVal($name,'results_apotheken_apotheke_01_strasse',''));;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_plz','');;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_ort','');;\
    $ret },\
results_apotheken_apotheke_01_osm { my $ret = 'https://www.openstreetmap.org/search?query=';;\
    $ret .= urlEncode(ReadingsVal($name,'results_apotheken_apotheke_01_strasse',''));;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_plz','');;\
    $ret .= '%20'.ReadingsVal($name,'results_apotheken_apotheke_01_ort','');;\
    $ret }

Gruß
Dan

P.S. Mit gesetztem Attribut "bodyEncode utf8" klappt es auch mit den Umlauten und sonstigen Sonderzeichen.
Titel: Aw: Notdienst Apotheke
Beitrag von: yersinia am 14 Juni 2023, 13:50:12
schau mal hier >> https://forum.fhem.de/index.php?topic=132883.0