FHEM > Codeschnipsel

Notdienst Apotheke

(1/21) > >>

Vaddi:
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

--- Code: ---https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ.html
--- Ende Code ---

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

--- Code: ---https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ/EURE-ADRESSE.html
--- Ende Code ---

Hier folgt nun meine Raw definition

--- Code: ---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
--- Ende Code ---

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.

--- Code: ---defmod AT.Apotheke at *09:30:00 set NotdienstApotheke reread
--- Ende Code ---

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.

stefanpf:
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)


--- Code: ---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äöüÄÖÜ ]+)


--- Ende Code ---

Vaddi:
Vielen Dank für die Korrekturen.
Ich war mal so frei und habe diese beiden Einträge in meinem obigen Beitrag
aktualisiert.

Ronny1979:
Hallo,

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


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

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.


--- Code: --- 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
--- Ende Code ---

rischbiter123:
Funktioniert bestens. Danke.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln