Fehler: Netzwerk-Zeitüberschreitung Umleitung zu einer HTML Seite bei einer nicht zu erreichenden Seite

  • Hallo zusammen!
    Ich muss schon wieder einmal nachfragen, da meine Foren und Googlesuche, leider ohne zufriedenstellende Ergebisse verlief!
    Ich habe eine Zentrale HP auf einem Raspberry Pi 4 in meinen Heimnetzwerk laufen, Es funktioniert auch alles. Aber, da ich mehrere Raspis laufen habe, Werkstatt, Garage, 3D Drucker und CO2 Laser und ich die einzelnen Kameras über einen Kameraübersicht aufrufen kann, kommt es nun zu folgenden Problem.
    Es ist eigentlich nur eine optische Verschönerung und kein Problem, aber....

    Da nicht ständig alle Raspis gleichzeitig laufen, kommt es zu unschönen Fehlermeldungen, in der Kameraübersicht! Wenn der Raspi z.B. beim 3D Drucker nicht läuft kommt die Fehlermeldung Fehler: Netzwerk-Zeitüberschreitung...

    Und genau diese Meldung würde ich gerne druch eine eigende HTML Seite ersetzen, wo z.B. ein Bild abgebildet wird

    Geht das überhaupt, kann ich einen nicht zu erreichenden Raspi durch eine Umleitung zu einer html oder php Seite ersetzen?


    Hier mal meine HTML Seite mit den Kamerastreams:

    Vielen Dank

    Gruß

    Stephan

  • Du musst dann immer noch die Fehlerzeit warten.

    Eine Möglichkeit wäre es, wenn dein Webserver regelmäßig die Ziele abfragt, und dieses Ergebnis (ein Textdatei, für jeden eine Textdatei, ...) dann von der Startseite ausgewertet wird. Ist also das System nicht erreichbar, wird ein entsprechendes anderes Bild als der IFrame gezeigt.

    Dazu musst du deine Webseite eben nur dynamischer generieren.

    Selber denken,
    wie kann man nur?

    • Official Post

    Ist der Webserver ein Apache? Dann am einfachsten mit einer .htaccess-Datei in dem Du die Umleitung vom Fehlercode abhängig machen kannst.


    Einen kleinen Generator dafür habe ich gerade hier gefunden: https://www.manitu.de/service/…-fehlerseiten-definieren/


    Der Fehlercode könnte bei Dir 408, 504 oder sowas sein. Der sollte eigentlich angezeigt werden. Den musst Du statt der 401, 403, 404 oder 500 im Link verwenden.


    Oder ist das doch kein Apache, welcher dann?

  • Hallo Hyle, schön wieder von Dir zu lesen! Und wie immer, mit einen guten Tipp!! Danke dafür:thumbup::)
    Ja, es ist ein Apache2 Server!

    Hier die komplette Fehlermeldung, aber eine Nummer steht dort nicht


    __________________________________________

    Fehler: Netzwerk-Zeitüberschreitung


    Der Server unter 192.168.178.28 braucht zu lange, um eine Antwort zu senden.


    Die Website könnte vorübergehend nicht erreichbar sein, versuchen Sie es bitte später nochmals.

    Wenn Sie auch keine andere Website aufrufen können, überprüfen Sie bitte die Netzwerk-/Internetverbindung.

    Wenn Ihr Computer oder Netzwerk von einer Firewall oder einem Proxy geschützt wird, stellen Sie bitte sicher, dass Firefox auf das Internet zugreifen darf.

    __________________________________________

    Habe mir deinen Link eben mal schnell angesehen, das scheint aber nur mit den Fehlernummern 401,403,404,500 zu funktionieren, oder?

    Wie gesagt, ich habe keinen Fehlernummer!


    Danke

    Gruß

    Stephan

    Edited once, last by Traube: Text ergänzt ().

    • Official Post

    Habe gerade mal mit der .htaccess getestet und das will nicht bei mir. :shy:


    Also doch die dafür vorgesehene Konfigurationsdatei vom Apache2 verwenden:

    Code
    sudo nano /etc/apache2/conf-available/localized-error-pages.conf


    dort eine Zeile einfügen:

    Code
    ErrorDocument 408 /meine-fehlerseite.php

    Fast ganz oben stehen ein paar Beispiele, am besten gleich darunter eintragen.


    Deine Seite (/meine-fehlerseite.php) ist ausgehend vom Docroot-Verzeichnis (/var/www/html). Den Slash (/) vor meine-fehlerseite.php nicht vergessen!


    Den Fehlercode musst Du irgenwie rausfinden, vielleicht hilft Dir das weiter: https://de.wikipedia.org/wiki/HTTP-Statuscode.


    Nach der Änderung die Konfiguration neu einlesen:

    Code
    sudo service apache2 force-reload
  • Rasp-Berlin Sorry, habe ich völlig überlesen in der Eile!:(
    Wie genau meinst du es? Ich weiß was du meinst, aber wie stelle ich das an! Ich bin leider nicht so fit in html Programmierung.

    Hast du evtl. einen Link dazu?



    hyle mit 408 und 504 funktioniert es leider nicht. Ich versuche jetzt den Fehlercode bei google zu finden. In der Liste aus deinem Link steht leider nichts passendes dabei, außer die von dir genannten 408 und 504!

    • Official Post

    Mir ist da nochwas eingefallen. Du könntest die Seiten mit PHP abholen, z.B.

    PHP: garage.php
    <?php
    $garage = file_get_contents('http://garagenpi');
    
    echo $garage;
    ?>

    Wenn da nichts kommt, dann sollte das einen 404er zurückgeben, den Du ggf. direkt schon in PHP mittels if/else auswerten könntest.



    //Edit

    Sorry, habe ich völlig überlesen

    Ups... Ja ich auch, sorry Rasp-Berlin!

  • ich habe jetzt eine php Datei mit folgenden Code erstellt und auf dem Server abgeleget und aufgerufen.

    PHP
    <?php
    $garage = file_get_contents('http://192.168.178.28/garage/garagen.php');
    
    echo $garage;
    ?>

    Er wird ein paar Sekunden versucht die Seite aufzurufen und dann kommt eine weiße leere Seite! Keine Ausgabe!!?

    • Official Post

    Ich habe schon lange nicht mehr "richtig" mit PHP gearbeitet, von daher schon mal sorry!


  • hyle :):) Es sei dir verziehn!:):) Denn jetzt funktioniert es so wie es soll! Wenn du mir jetzt verraten könntest wie ich es mit den ifarmes aus dem ersten Post kombiniere, wäre das Traumhaft !
    Vielen Dank schon einmal im vorraus!! Es ist echt klasse, wie hier einen geholfen wird!:thumbup::thumbup:


    Ich würde jetzt die iframe Adresse auf eine weitere php Seite weiterleiten, wo dann die Abfrage passiert und erst dort die Stream URL einbetten, bzw die Ersatz URL aufrufen!
    Wäre das der richtige Weg oder kann ich es in der obigen Code mit den iframes kombinieren?

    Edited once, last by Traube: Lösungsvorschlag! ().

    • Official Post

    Pfff! Gute Frage... :conf: Entweder Du baust Dir für jeden Clienten (Garage, Werkstatt, usw.) eine eigene PHP-Datei im Webserver wie in #9 oder Du erstellst eine einzelne PHP-Datei und regelst das per Aufruf über Variablen. Dazu ein Beispiel zu erstellen habe ich aber heute aber keine Nerven mehr. ;)


    Diese PHP-Datei(en) bindest Du dann jeweils als iframe ein.


    Dein Edit habe ich erst jetzt gesehen, verstehe ich gerade nicht (mehr), aber ich denke mal wir meinen das gleiche.

  • Ohne Test:

    Ich habe drei Array genommen, man könnte auch alles in einem Mehrdimensionalen Array eintragen.

    In deiner ursprünglichen Seite sind nur drei Kameras definiert.

    In meinem Beispiel musst du die drei Array mit den passenden Werten Füllen.

    Im ersten Array ist der Aufruf der Kamera, im zweiten der Name, den diese Kamera auf der Webseite hat und im dritten, ob noch weitere Parameter benötigt werden.

    Wie viele Kameras angezeigt werden, ergibt sich aus der Anzahl Daten im ersten Array, auf das zweite und Dritte wird nur für die weiteren Daten (Name und Co) zugegriffen

    Selber denken,
    wie kann man nur?

    Edited once, last by Rasp-Berlin ().

  • Hallo Rasp-Berlin!
    Wow, da steig ich ja mal gar nicht durch! Vielen Dank für deine Mühe, das werde ich mir aber auf jedenfall mal genauer angucken und versuchen es zu verstehen!


    Ein Frage habe ich jetzt schon, was genau meinst du mit den drei Array ausfüllen, kannst du dafür ein Beispiel geben, was genau dort stehen muss?

    Danke ,

    Schöne Pfingsttage wünsche ich noch.....

    Edited once, last by Traube ().