Autor Thema: Notdienst Apotheke  (Gelesen 5186 mal)

Offline Vaddi

  • Full Member
  • ***
  • Beiträge: 121
Notdienst Apotheke
« 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 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/ 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
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.
« Letzte Änderung: 26 Mai 2018, 11:33:28 von Vaddi »
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte
Gefällt mir Gefällt mir x 8 Liste anzeigen

Offline stefanpf

  • Jr. Member
  • **
  • Beiträge: 64
Antw:Notdienst Apotheke
« Antwort #1 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äöüÄÖÜ ]+)

« Letzte Änderung: 24 April 2018, 19:53:20 von stefanpf »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Vaddi

  • Full Member
  • ***
  • Beiträge: 121
Antw:Notdienst Apotheke
« Antwort #2 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.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Online Ronny1979

  • New Member
  • *
  • Beiträge: 7
Notdienst Apotheke
« Antwort #3 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
« Letzte Änderung: 24 April 2018, 18:28:07 von Ronny1979 »

Offline rischbiter123

  • Full Member
  • ***
  • Beiträge: 137
Antw:Notdienst Apotheke
« Antwort #4 am: 25 April 2018, 20:29:07 »
Funktioniert bestens. Danke.
2*Raspi, Max Thermostate und Fensterkontakte, FB7590, Snips mit Ps3eye, Mysensors und NanoCUL, IT und Sonoff

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 357
Antw:Notdienst Apotheke
« Antwort #5 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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Cyrus SmartHome USB Dongle Z-Wave Plus

Offline knopf_piano

  • Full Member
  • ***
  • Beiträge: 345
Antw:Notdienst Apotheke
« Antwort #6 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

« Letzte Änderung: 26 April 2018, 19:05:33 von knopf_piano »
zotac nano, Bananapi-R1, fhem-trunk, hmlan, jeelink, zwave, tablet-ui,  ESPeasy, pywws, raspi, yamaha-671, ufs910-titan
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 357
Antw:Notdienst Apotheke
« Antwort #7 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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Cyrus SmartHome USB Dongle Z-Wave Plus

Offline Vaddi

  • Full Member
  • ***
  • Beiträge: 121
Antw:Notdienst Apotheke
« Antwort #8 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.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 357
Antw:Notdienst Apotheke
« Antwort #9 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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Cyrus SmartHome USB Dongle Z-Wave Plus

Offline Vaddi

  • Full Member
  • ***
  • Beiträge: 121
Antw:Notdienst Apotheke
« Antwort #10 am: 27 April 2018, 20:44:09 »
Hey, ersetze mal bitte
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<brdurch
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)Dann sollte es funktionieren.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 357
Antw:Notdienst Apotheke
« Antwort #11 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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Cyrus SmartHome USB Dongle Z-Wave Plus

Offline Christoph Morrison

  • Developer
  • Full Member
  • ****
  • Beiträge: 438
    • Private Website
Antw:Notdienst Apotheke
« Antwort #12 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.:&#;;_-]+)<brMatcht 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.
Informativ Informativ x 1 Liste anzeigen

Online Ronny1979

  • New Member
  • *
  • Beiträge: 7
Antw:Notdienst Apotheke
« Antwort #13 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.
« Letzte Änderung: 29 April 2018, 11:47:43 von Ronny1979 »

Offline Michael

  • Full Member
  • ***
  • Beiträge: 438
  • Rechtschreibfehler dürfen Behalten werden!
Antw:Notdienst Apotheke
« Antwort #14 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.
Gruß, Michael

FHEM 5.8 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301
FS20 ST-2/3 | BMP085(180) | 14x TX29DTH-IT | 2x TX25IT/Helligkeitssensor | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800)