[gelöst] Prüfung ob URL erreichbar ist

Begonnen von franky08, 30 September 2015, 09:36:37

Vorheriges Thema - Nächstes Thema

franky08

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

dein file ist noch gepackt. wenn du es umbenennst und mit gunzip auspackst steht dort glaube ich der html quelltext der deinem screenshot entspricht.

warum httpmod damit scheinbar nicht klar kommt sehe ich auf den ersten blick nicht. eventuell liegt es an der kompression oder an anderen fehlenden headern.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

In der Info zur Seite steht

Request-Header
Keine Request Header

Hab mir die Seite mal auf der Webinfo-Console angesehen, dass sieht so aus als wenn beim Zugriff kurz die Daten geladen werden und dann sofort wieder ein closed folgt.
Ich entpackte das File jetzt mal und dann kommt man vlt. weiter.
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Entpackt und mit Firefox geöffnet steht da

Ethersex ADC Status

drinn und das ist

<body>
<h1>Ethersex ADC Status</h1>
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

StefanStrobel

Hallo Frank,

Httpmod reagiert bisher auf Verbindungsfehler nur mit einem Log-Eintrag und ändert die Readings nicht.
In der nächsten Version wird es da aber eine Reaktionsmöglichkeit geben.
Was das Problem mit dem Seitenabruf angeht, so könnte das an der Kompression liegen. Httpmod verwendet ja auch nur die HttpUtils zum Abruf der Seite und da ist meines Wissens noch Kompression bisher nicht vorgesehen.
Zum Debuggen verwende ich immer die Burp Suite. Da kann man auch sehr schön mit den Headern spielen.

Gruß
    Stefan

franky08

@Stefan
Ich danke dir für die "Auflösung des Rätsels", dann warte ich mal auf deine neue Version. In der Zwischenzeit könnte man ja auch über at ein wget auf die url machen und mittels regex das OK (200) oder bad connection (400) auswerten, mal sehen. Habe leider z.Zt. nicht viel Muße für fhem, da jede Menge Arbeit in der Firma ansteht.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Mit {system("wget http://192.168.2.111/adc.ht")} bekomme ich zumindest im Log was, daran kann man ja arbeiten (aber die geladenen Daten müssten immer wieder verworfen werden)

--2015-10-01 22:50:50--  http://192.168.2.111/adc.ht
Connecting to 192.168.2.111:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 624 [text/html]
Saving to: `adc.ht'

     0K                                                       100% 66.7K=0.009s

2015-10-01 22:50:50 (66.7 KB/s) - `adc.ht' saved [624/624]


Aber das OK wäre ja das, was ich möchte  ;)
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Hallo, heute habe ich nun mal versucht eine Grundlage zum Abfragen present/absent zu schaffen. Leider fehlen mir dazu weiterreichende Kenntnisse in Perl.
Mit:
{system("wget http://192.168.2.111/adc.ht")}

kann ich adc.ht nach /opt/fhem downloaden, klappt das, dann ist der Server erreichbar.

Mit:
{system("rm /opt/fhem/adc.ht")}

verwerfe ich dann die Datei adc.ht wieder. Leider erzeugt wget im Log natürlich eine Meldung, wenn ich diesen Logeintrag als return auswerten könnte, wäre ich schon fast am Ziel.
Im Log erhalte ich:

--2015-10-03 10:51:13--  http://192.168.2.111/adc.ht
Connecting to 192.168.2.111:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 624 [text/html]
Saving to: `adc.ht'

     0K                                                       100% 67.0K=0.009s

2015-10-03 10:51:13 (67.0 KB/s) - `adc.ht' saved [624/624]


Jetzt könnte man das awaiting response... 200 OK oder 0K                                                       100% 67.0K=0.009s auswerten aber dafür fehlt mir das programmiertechnische Fingerspitzengefühl, leider.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

system sollte dir einen rückgabe wert liefern der dem exit value von weit entspricht. welche exit values du erwarten kannst steht in der wget manual page.

du kannst wget im quiet modus starten um die log meldungen los zu werden und du kannst den namen des ausgabe files fest vorgeben damit nicht jedes mal ein neues erzeugt wird.

wenn du über presence gehst würde ich nicht wget aufrufen sondern die httputils verwenden. entweder über die alten GetFileFromURLQuiet/GetFileFromURL/GetHttpFile varianten oder direkt über das neue HttpUtils_BlockingGet. mit über presence und system startest du bei jedem aufruf zwei prozesse statt nur einem wenn du über presence und die httputils gehst. über die httputils hast du auch gleich den response code aus dem header.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

#24
Zitatsystem sollte dir einen rückgabe wert liefern der dem exit value von weit entspricht

Da bekomme ich als Rückgabe leider nur -1

{system("wget -q - http://192.168.2.111/adc.ht")} unterdrückt die Logausgabe aber leider gibt es nur ein -1 zurück
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

du musst den rückgabe wert auch auswerten und dann in die 0 oder 1 die presence erwartet umwandeln

etwas in der art:{my $ret = system("wget -q -O /dev/null http://192.168.2.111/adc.ht"); return ($ret >> 8) ? 0 : 1;}

-q für quiet
-O /dev/null um die empfangenen daten weg zu schmeissen

wenn der exit code != 0 ist absent zurück gegeben sonst present. die auswertung des rückgabe wertes sollte man eventuell noch verfeinern. siehe z.b. hier: my $ret = system("wget -q -O /dev/null http://havanna");

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

#26
Hallo Andre,
ich hab das jetzt völlig trivial gelöst.

sub
AVR_Stat
{

{system("wget -q - http://192.168.2.111/adc.ht")};
my $dname = "adc.ht";
if(-e $dname){
fhem "set adc_dummy ja";
{system("rm /opt/fhem/adc.ht")};
}
else {
fhem "set adc_dummy nein";
}
}


funktioniert.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

aber diese variante blockiert fhem wenn dein host nicht richtig antwortet.



gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

Mmh, daran hab ich natürlich nicht gedacht, ich simuliere das heute Nachmittag mal, ist blos schlecht da dann die Steuerung der Heizungsanlage aus ist.
Sonst teste ich mal deine Variante.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Mit
{my $ret = system("wget -q -O /dev/null http://192.168.2.111/adc.ht"); return ($ret >> 8) ? 0 : 1;}

und eingebauten

Log 3, "$ret";
bekomme ich jedesmal -1 zurück, somit klappt die Auswertung auf != 0 absent sonst present leider nicht. Ich lasse das jetzt erst einmal ruhen. Richtig testen kann man es sowieso nur, wenn die Website unter realen Bedingungen nicht erreichbar sein sollte, wobei die ADC/DAC Steuerung dann ja trotzdem noch funktioniert und nur der Aufruf der Weboberfläche des Ethersex mit einem Timeout endet.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1