Я использую Raspberry Pi для создания неинтерактивного веб-киоска - конкретной веб-страницы (измерения с удаленной станции мониторинга), которая будет отображаться на экране в полноэкранном режиме, содержимое часто обновляется через AJAX.
Сейчас есть немало решений для превращения Raspberry в киоск, и я уверен, что смогу сделать это просто отлично, но киоск должен быть совершенно необслуживаемым. Особенно в ситуации, когда питание отключается, затем снова включается, но каким-то образом инфраструктура маршрутизатора / модема / сети не совсем подключилась.
В этой ситуации у Midori появится страница о «невозможности подключения» или о чем-то подобном, и она будет зависать до тех пор, пока кто-то снова не включит питание - поскольку веб-страница, включающая собственный механизм автообновления, не загружалась!
Теперь, как я могу заставить Midori загружать страницу, когда сеть снова становится доступной или что-то подобное (автоматическое обновление всегда каждые 15 минут или около того, или обновление до тех пор, пока страница не загрузится или что-то в этом роде)?
Если этот вариант недоступен для Midori, можете ли вы порекомендовать другое решение?
qdbus
(из пакетаlibqt4-dbus
) или какой-нибудь подобный инструмент и найти там Midori. Тогда вы, скорее всего, можете запустить обновление страницы.Ответы:
Предполагая, что у вас есть Python в вашей системе, есть альтернатива
cron
. Я создал быстрый скрипт Python 2.7.3, который будет перезагружать Midori каждые 5 минут.Если вам нужно изменить время отдыха, просто измените
rest_time
переменную.Новый скрипт
Поскольку вы сказали, что вам нужно, чтобы программа была «умной», я отредактировал ее, чтобы сделать так. При использовании этой программы, пожалуйста, не открывайте Midori вручную; откройте его из скрипта. У меня есть странная привычка сбой из-за Speed Dialer, если вы делаете иначе. Он также работает на Python 2.7.3. Если вы не хотите делать все эти копии и вставки, пожалуйста, посетите мой код вставки кода.
источник
На всякий случай, если кто-нибудь заходит и ищет обновленный ответ, Midori теперь имеет опцию командной строки
--inactivity-reset=SECONDS
(или-i
для краткости).В сочетании с этой
-a
опцией вы можете постоянно перезагружать браузер в режиме киоска каждые x секунд.например
Откроется http://www.google.com/ в полноэкранном окне и обновит страницу через 2 минуты бездействия. (
-e
выполняет команду)источник
Я решил подойти к этому с другой стороны, в основном независимо от браузера.
Браузер запускается в режиме киоска, указывая на определенный локальный документ:
watchdog.html
Теперь в этом файле значение тайм-аута настроено так, чтобы оно содержало два обычных автообновления удаленной страницы, плюс некоторые, и было
reload_url
установлено на ее URL.Удаленная страница имеет фрагмент, который выполняется каждый раз, когда ее обновление выполняется правильно:
Если случается что-то плохое - страница не загружается, загружается как 404, либо ошибка, либо ее javascript прекращается по какой-либо причине, либо какое-то переадресация угонщика подталкивает нас на другую страницу, если два последовательных сообщения обновления не приходят, фрейм сторожевого таймера сбрасывает URL-адрес к оригиналу, который автоматически выполняет перезагрузку.
Обратите внимание, что try ... catch предназначен для предотвращения проблем со старыми браузерами, которые могут не поддерживать postMessage. Это не будет проблемой для киоска, так как мы контролируем окружающую среду и всегда можем гарантировать, что будет использован правильный браузер. OTOH, на случайных клиентских компьютерах без фрейма, прослушивающего сообщения, операция postMessage не работает, если она не вызывает ошибку прерывания сценария, поэтому попытайтесь ... поймать
источник
Я использую xdotool для имитации нажатия клавиши F5
а затем в моем crontab я запускаю этот скрипт каждую минуту
источник