J'utilise Raspberry Pi pour créer un kiosque Web non interactif - une page Web spécifique (mesures à partir d'une station de surveillance à distance) à afficher sur un écran en mode plein écran, le contenu est actualisé fréquemment via AJAX.
Maintenant, il existe de nombreuses solutions pour faire de la framboise un kiosque, et je suis sûr que je pourrai le faire très bien, mais le kiosque devrait être assez sans entretien. Surtout dans une situation où l'alimentation est coupée, puis revient, mais en quelque sorte l'infrastructure routeur / modem / réseau n'est pas tout à fait en ligne.
Dans cette situation, Midori proposera une page sur "incapable de se connecter" ou quelque chose comme ça et elle sera bloquée comme ça jusqu'à ce que quelqu'un redémarre le courant - car la page Web comprenant son propre mécanisme de rafraîchissement automatique n'a pas pu se charger!
Maintenant, comment puis-je forcer Midori à charger la page lorsque le réseau est à nouveau disponible, ou quelque chose de similaire (actualisation automatique toujours toutes les 15 minutes environ, ou continuer à rafraîchir jusqu'à ce que la page se charge ou quelque chose comme ça.)?
Si cette option n'est pas disponible pour Midori, pouvez-vous recommander une autre solution?
qdbus
(à partir du packagelibqt4-dbus
) ou un outil similaire et rechercher Midori là-dedans. Ensuite, vous pouvez très probablement déclencher une actualisation de la page.Réponses:
En supposant que vous avez Python sur votre système, il existe une alternative à
cron
. J'ai créé un script Python 2.7.3 rapide qui rechargera Midori toutes les 5 minutes.Si vous devez modifier la durée du repos, changez simplement la
rest_time
variable.Nouveau script
Comme vous avez dit que vous aviez besoin que le programme soit "intelligent", je l'ai modifié pour qu'il en soit ainsi. Lorsque vous utilisez ce programme, veuillez ne pas ouvrir Midori manuellement; ouvrez-le à partir du script. J'ai une étrange habitude de tomber en panne à cause de la numérotation rapide si vous faites autrement. Il fonctionne également sur Python 2.7.3. Si vous ne voulez pas faire tout ce copier-coller, veuillez visiter ma boîte à pâte du code.
la source
Juste au cas où quelqu'un viendrait et chercherait une réponse mise à jour, Midori a maintenant une option de ligne de commande
--inactivity-reset=SECONDS
(ou-i
pour faire court).Associé à cette
-a
option, vous pouvez obtenir un navigateur qui redémarre constamment en mode kiosque toutes les x secondes.par exemple
Ouvre http://www.google.com/ dans une fenêtre plein écran et actualise la page après 2 minutes d'inactivité. (
-e
exécute une commande)la source
J'ai décidé de l'aborder sous un angle différent, principalement indépendant du navigateur.
Le navigateur est démarré en mode kiosque, pointant vers un document local spécifique:
watchdog.html
Maintenant, dans ce fichier, la valeur du délai d'attente est ajustée pour contenir deux rafraîchissements automatiques normaux de la page distante plus certains, et
reload_url
est définie sur son URL.La page distante a un extrait qui est exécuté chaque fois que son rafraîchissement est effectué correctement:
En cas de problème - la page ne se charge pas, se charge en 404 ou en erreur ou son javascript s'arrête pour une raison quelconque, ou une redirection de détournement nous pousse vers une autre page, si deux messages de rafraîchissement consécutifs n'arrivent pas, le cadre du chien de garde réinitialise l'URL à l'original, qui effectue automatiquement le rechargement.
Remarque, le try ... catch est d'éviter les problèmes avec les navigateurs plus anciens qui peuvent ne pas prendre en charge postMessage. Ce ne sera pas un problème avec le kiosque puisque nous contrôlons l'environnement et pouvons toujours nous assurer que le bon navigateur sera utilisé. OTOH, sur des ordinateurs clients aléatoires sans que le cadre n'écoute les messages, l'opération postMessage n'est pas opérationnelle tant qu'elle ne provoque pas d'erreur d'abandon de script, essayez donc..catch.
la source
J'utilise xdotool pour simuler une pression de touche f5
puis dans mon crontab je lance ce script toutes les minutes
la source