Notdienst Apotheke via jsonmod

Begonnen von binford6000, 27 März 2023, 14:10:27

Vorheriges Thema - Nächstes Thema

WhyTea

Ok das war schon mal ein wichtiger Hinweis Du kein Fehler von mir übersehen wurde. Danke dafür!

Ich habe nun auch die Ursache gefunden. Ich habe Fhem angewiesen einen Proxy zu nutzen. Das war die Ursache.
Ich habe nun eine Ausnahme für .aponet.de eingetragen nu läuft es.

Gruß
Daniel

yersinia

Die token-Definition ist mal wieder geändert worden; update der RegEx notwendig:
attr NotApoToken get3Regex token(?:\W+|\s+)\"(.+?)\"ergibt derzeit gültiges token
READINGS:
  2024-11-21 07:16:54   pharmacymap     /Pharmacymap-BZ6vywlm.js
  2024-11-21 07:16:53   start-1         /_assets/vite/assets/Main.entry-DZdDTN-T.js?1732104008
  2024-11-21 07:16:53   start-2         /_assets/vite/assets/Main.entry-fydt2uR6.js?1732104008
  2024-11-21 07:16:55   token           216823d96ea25c051509d935955c130fbc72680fc1d3040fe3f8ca0e25f9cd02
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

KyleK

Hallo yersinia,

danke für den Fix. Hatte eben erst bemerkt dass der Dienst mal wieder nicht funktioniert :)
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

yersinia

Ohne das sich der token-wert geändert hat, ist die pharmacymap.js verschwunden und der Token befindet sich nun in der zweiten Main.entry.js. Aus Dokumentations-/Backup-Gründen habe ich eine Kopie angelegt und adaptiert sodass der token wieder gefunden werden kann (wenn jmd das DOIF Device zur Aktualisierung verwendet, muss auch dieses entsprechend angepasst werden).

NotApoToken2:
defmod NotApoToken2 HTTPMOD none 0
attr NotApoToken2 alignTime 08:55
attr NotApoToken2 event-on-change-reading .*
attr NotApoToken2 event-on-update-reading token
attr NotApoToken2 get1FollowGet token
attr NotApoToken2 get1Header01 User-Agent: Mozilla/5.0 (X11;; Linux x86_64;; rv:133.0) Gecko/20100101 Firefox/133.0
attr NotApoToken2 get1Header02 Referer: https://www.aponet.de/apotheke/notdienstsuche
attr NotApoToken2 get1Header03 Host: www.aponet.de
attr NotApoToken2 get1Header04 DNT: 1
attr NotApoToken2 get1Name start
attr NotApoToken2 get1Poll 1
attr NotApoToken2 get1RegOpt g
attr NotApoToken2 get1Regex src=\"(.+\/Main.entry-.*(?:\?\d+)?)\"
attr NotApoToken2 get1URL https://www.aponet.de/apotheke/notdienstsuche
attr NotApoToken2 get2Header01 User-Agent: Mozilla/5.0 (X11;; Linux x86_64;; rv:133.0) Gecko/20100101 Firefox/133.0
attr NotApoToken2 get2Header02 Referer: https://www.aponet.de/apotheke/notdienstsuche
attr NotApoToken2 get2Header03 Host: www.aponet.de
attr NotApoToken2 get2Header04 DNT: 1
attr NotApoToken2 get2Name token
attr NotApoToken2 get2OExpr $val=urlEncode($val)
attr NotApoToken2 get2Poll 1
attr NotApoToken2 get2PollDelay 5
attr NotApoToken2 get2Regex token(?:\W+|\s+)\"(.+?)\"
attr NotApoToken2 get2URL https://www.aponet.de%%me%%
attr NotApoToken2 group NotApo
attr NotApoToken2 replacement2Mode reading
attr NotApoToken2 replacement2Regex %%me%%
attr NotApoToken2 replacement2Value start-2
attr NotApoToken2 room NotApo
attr NotApoToken2 stateFormat { my $lastCheck = POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,"token","2000-01-01 00:00:00"))));;\
my $ret = '<div style="text-align: left;;">';;\
$ret .= 'Token: '.ReadingsVal($name,"token","-").' ('.$lastCheck.')';;\
$ret .= '</div>';;\
return $ret;;\
}
attr NotApoToken2 webCmd reread

Derzeitige Readings:
   READINGS:
     2024-12-26 20:02:55   start-1         /_assets/vite/assets/Main.entry-DB42wDuG.js?1735210061
     2024-12-26 20:02:55   start-2         /_assets/vite/assets/Main.entry-BO809Quc.js?1735210061
     2024-12-26 20:02:56   token           216823d96ea25c051509d935955c130fbc72680fc1d3040fe3f8ca0e25f9cd02
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

KyleK

#94
Hm, bei mir hat das Modul heute Früh um 8:28 Uhr eine neue Pharmacymap-*.js geladen, es wird auch die aktuelle Notdienst Apotheke angezeigt.


EDIT: Du hast Recht. Der Token wurde zuletzt am 24.12. von FHEM ausgelesen.
Aber er scheint noch zu funktionieren, ich bekomme jeden Tag eine neue Apotheke angezeigt.
Und: Der Token, der aktuell (29.12.24 12:14 Uhr) in der Main.entry-*.js steht, ist der gleiche, den FHEM sich am 24.12. geholt hat.


Ich bin... verwirrt.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

yersinia

Ja, der Token hat sich (noch) nicht geändert, daher funktioniert auch noch die Suche via JsonMod; aber es gibt (derzeit) keine Pharmacymap, die den Token beinhaltet. Es wird also zeitnah, wenn der Token wechselt, nicht mehr funktionieren. Ich hab in der zweiten Main.entry den Verweis auf den Token als Suchparamter an die API gefunden.

Das sieht man ganz gut an den ReadingTimestamps.

NotApoToken:
   READINGS:
     2024-12-18 09:06:03   pharmacymap     /Pharmacymap-Dt9RsFl9.js
     2024-12-29 09:08:04   start-1         /_assets/vite/assets/Main.entry-DB42wDuG.js?1735210061
     2024-12-29 09:08:04   start-2         /_assets/vite/assets/Main.entry-BO809Quc.js?1735210061
     2024-12-18 09:06:04   token           216823d96ea25c051509d935955c130fbc72680fc1d3040fe3f8ca0e25f9cd02
(pharmacymap und token sind seit dem 18.12. nicht mehr aktualisiert worden obwohl heute morgen gelaufen)

NotApoToken2:
   READINGS:
     2024-12-29 09:06:20   start-1         /_assets/vite/assets/Main.entry-DB42wDuG.js?1735210061
     2024-12-29 09:06:20   start-2         /_assets/vite/assets/Main.entry-BO809Quc.js?1735210061
     2024-12-29 09:06:20   token           216823d96ea25c051509d935955c130fbc72680fc1d3040fe3f8ca0e25f9cd02
(token Timestamp passt zu den Main.entrys)

Ich lass noch eine myUtils Funktion mit HttpUtils_NonblockingGet mitlaufen, die dann, bei Bedarf, gesprächiger ist. Wenn der Token im start-1 reading sein sollte, wird derzeit auch kein token gefunden werden...
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl