Ich verwende Raspberry Pi, um einen nicht interaktiven Webkiosk zu erstellen - eine bestimmte Webseite (Messungen von einer Fernüberwachungsstation), die im Vollbildmodus auf einem Bildschirm angezeigt wird und deren Inhalte häufig über AJAX aktualisiert werden.
Jetzt gibt es einige Lösungen, um Raspberry zu einem Kiosk zu machen, und ich bin mir ziemlich sicher, dass ich das ganz gut kann, aber der Kiosk sollte ziemlich wartungsfrei sein. Besonders in Situationen, in denen der Strom ausfällt und dann wieder eingeschaltet wird, aber irgendwie war die Router- / Modem- / Netzwerkinfrastruktur nicht ganz online.
In dieser Situation wird Midori eine Seite über "Verbindung nicht möglich" oder ähnliches erstellen, die so lange hängen bleibt, bis jemand die Stromversorgung wieder aus- und wieder einschaltet - da die Webseite mit ihrem eigenen automatischen Aktualisierungsmechanismus nicht geladen werden konnte!
Wie kann ich nun Midori zwingen, die Seite zu laden, wenn das Netzwerk wieder verfügbar ist, oder etwas Ähnliches (automatische Aktualisierung immer alle 15 Minuten oder so oder so lange aktualisieren, bis die Seite geladen wird oder so ähnlich)?
Wenn diese Option für Midori nicht verfügbar ist, können Sie eine andere Lösung empfehlen?
qdbus
(aus dem Paketlibqt4-dbus
) oder einem ähnlichen Tool auszuführen und dort nach Midori zu suchen. Dann können Sie höchstwahrscheinlich eine Aktualisierung der Seite auslösen.Antworten:
Angenommen, Sie haben Python auf Ihrem System, gibt es eine Alternative zu
cron
. Ich habe ein schnelles Python 2.7.3-Skript erstellt, das Midori alle 5 Minuten neu lädt.Wenn Sie die Ruhezeit ändern müssen, ändern Sie einfach die
rest_time
Variable.Neues Skript
Als Sie sagten, dass das Programm "intelligent" sein muss, habe ich es bearbeitet, um es so zu machen. Wenn Sie dieses Programm verwenden, öffnen Sie Midori bitte nicht manuell. Öffnen Sie es aus dem Skript. Ich habe die seltsame Angewohnheit, aufgrund des Kurzwahlgeräts abzustürzen, wenn Sie etwas anderes tun. Es läuft auch auf Python 2.7.3. Wenn Sie nicht alles kopieren und einfügen möchten, besuchen Sie bitte meinen Pastebin des Codes.
quelle
Für den Fall, dass jemand vorbeikommt und nach einer aktualisierten Antwort sucht, hat Midori jetzt eine Befehlszeilenoption
--inactivity-reset=SECONDS
(oder-i
kurz).In Verbindung mit der
-a
Option können Sie alle x Sekunden einen ständig neu startenden Browser im Kioskmodus erreichen.z.B
Öffnet http://www.google.com/ in einem Vollbild - Fenster und aktualisieren Sie die Seite nach 2 Minuten Inaktivität. (
-e
führt einen Befehl aus)quelle
Ich beschloss, es von einer anderen Seite aus zu betrachten, meistens browserunabhängig.
Der Browser wird im Kioskmodus gestartet und zeigt auf ein bestimmtes lokales Dokument:
watchdog.html
In dieser Datei wird der Zeitlimitwert so angepasst, dass er zwei normale automatische Aktualisierungen der Remote-Seite sowie einige enthält, und
reload_url
auf ihre URL festgelegt.Die Remote-Seite verfügt über ein Snippet, das jedes Mal ausgeführt wird, wenn die Aktualisierung korrekt ausgeführt wird:
Wenn etwas Schlimmes passiert - die Seite kann nicht geladen werden, wird als 404 oder Fehler geladen oder ihr Javascript wird aus irgendeinem Grund gestoppt oder eine Hijack-Umleitung führt uns zu einer anderen Seite. Wenn zwei aufeinanderfolgende Aktualisierungsnachrichten nicht eintreffen, setzt der Watchdog-Frame die URL zurück zum Original, das automatisch neu lädt.
Beachten Sie, dass mit try ... catch Probleme mit älteren Browsern vermieden werden sollen, die postMessage möglicherweise nicht unterstützen. Dies ist kein Problem mit dem Kiosk, da wir die Umgebung kontrollieren und immer sicherstellen können, dass der richtige Browser verwendet wird. OTOH, auf zufälligen Client-Computern, ohne dass der Frame die Nachrichten abhört, ist die postMessage-Operation nicht aktiv, solange sie keinen Fehler beim Abbrechen des Skripts verursacht. Versuchen Sie also..catch.
quelle
Ich benutze das xdotool, um einen f5-Tastendruck zu simulieren
und dann führe ich in meinem crontab das Skript jede Minute aus
quelle