Używam Raspberry Pi do stworzenia nieinteraktywnego kiosku internetowego - konkretnej strony internetowej (pomiary ze zdalnej stacji monitorującej), która ma być wyświetlana na ekranie w trybie pełnoekranowym, treść odświeżana często przez AJAX.
Teraz istnieje kilka rozwiązań, aby przekształcić Raspberry w kiosk i jestem pewien, że będę w stanie zrobić to dobrze, ale kiosk powinien być dość bezobsługowy. Zwłaszcza w sytuacji zaniku zasilania, a następnie powrotu, ale w jakiś sposób infrastruktura routera / modemu / sieci nie dołączyła do sieci.
W takiej sytuacji Midori wyświetli stronę o „niemożności połączenia” lub coś w tym rodzaju i utknie w ten sposób, dopóki ktoś nie włączy zasilania ponownie - ponieważ strona zawierająca własny mechanizm automatycznego odświeżania nie załadowała się!
Teraz, jak mogę zmusić Midori do załadowania strony, gdy sieć jest ponownie dostępna, lub coś z podobnym efektem (automatyczne odświeżanie zawsze co około 15 minut, lub odświeżanie aż do załadowania strony lub coś takiego).
Jeśli ta opcja jest niedostępna dla Midori, czy możesz polecić jakieś inne rozwiązanie?
qdbus
(z pakietulibqt4-dbus
) lub podobne narzędzie i poszukać tam Midori. Wtedy najprawdopodobniej możesz uruchomić odświeżanie strony.Odpowiedzi:
Zakładając, że masz Python w swoim systemie, istnieje alternatywa dla
cron
. Stworzyłem szybki skrypt Python 2.7.3, który będzie ładował Midori co 5 minut.Jeśli chcesz zmienić czas odpoczynku, po prostu zmień
rest_time
zmienną.Nowy skrypt
Jak powiedziałeś, że potrzebujesz, aby program był „inteligentny”, edytowałem go, aby tak było. Podczas korzystania z tego programu nie otwieraj Midori ręcznie; otwórz go ze skryptu. Mam dziwny nawyk zawieszania się z powodu szybkiego wybierania, jeśli zrobisz inaczej. Działa również w Pythonie 2.7.3. Jeśli nie chcesz wykonywać całej tej kopii i wklejania, odwiedź moją stronę kodu źródłowego.
źródło
Na wypadek, gdyby ktoś wpadł i szukał zaktualizowanej odpowiedzi, Midori ma teraz opcję wiersza poleceń
--inactivity-reset=SECONDS
(lub-i
w skrócie).W połączeniu z tą
-a
opcją, możesz uzyskać stale restartującą się przeglądarkę w trybie kiosku co x sekundy.na przykład
Otworzy http://www.google.com/ w oknie pełnoekranowym i odświeży stronę po 2 minutach bezczynności. (
-e
wykonuje polecenie)źródło
Postanowiłem podejść do tego z innej strony, głównie niezależnej od przeglądarki.
Przeglądarka jest uruchamiana w trybie kiosku, wskazując na konkretny dokument lokalny:
watchdog.html
Teraz w tym pliku wartość limitu czasu jest dostosowywana, aby zawierała dwa normalne automatyczne odświeżanie strony zdalnej plus niektóre, i
reload_url
jest ustawiana na jej adres URL.Strona zdalna ma fragment, który jest wykonywany za każdym razem, gdy jego odświeżanie jest wykonywane poprawnie:
Jeśli dzieje się coś złego - strona nie ładuje się, ładuje się jako 404 lub błąd lub jego javascript zatrzymuje się z jakiegokolwiek powodu, lub przekierowanie przechwytujące popycha nas na inną stronę, jeśli dwa kolejne komunikaty odświeżające nie dotrą, ramka watchdog resetuje adres URL do oryginału, który automatycznie wykonuje przeładowanie.
Uwaga: try ... catch ma na celu zapobieganie problemom ze starszymi przeglądarkami, które mogą nie obsługiwać postMessage. Nie będzie to problemem z kioskiem, ponieważ kontrolujemy środowisko i zawsze możemy zapewnić, że zostanie użyta odpowiednia przeglądarka. OTOH, na losowych komputerach klienckich bez ramki nasłuchującej wiadomości, operacja postMessage nie działa, o ile nie powoduje błędu przerywania skryptu, dlatego spróbuj..catch.
źródło
Używam xdotool do symulacji naciśnięcia klawisza f5
a następnie w moim crontabie uruchamiam ten skrypt co minutę
źródło