Étape 6: Activer le chien de garde intégré
Étant donné que la Pi va s’exécuter sans assistance dans notre application, il est important qu’elle soit automatiquement redémarré après que tout d’un coup, il a gelé pour une raison quelconque.
Heureusement, le Raspberry Pi BCM2835 SoC (système sur la carte) a un « watchdog » basée sur le matériel à bord. La signification d’un chien de garde est bien expliquée ici. Il s’agit d’un compte à rebours qui compte de quelque valeur initiale jusqu'à zéro. Lorsque zéro est atteint, le temporisateur croit savoir que le système est accroché et il remet à zéro.
Donc, le temporisateur doit être mis à jour périodiquement avec une nouvelle valeur pour l’empêcher d’atteindre zéro et provoquant une réinitialisation. En d’autres termes, le RasPi doit nourrir son chien de garde périodiquement avec un battement de coeur du logiciel en cours d’exécution. Quand le RasPi est verrouillé par accomplir une certaine tâche et par conséquent ne peut pas mettre à jour le temporisateur plus, la minuterie atteindra inévitablement zéro et une réinitialisation se produit.
Un démon est nécessaire pour envoyer les battements de coeur. Nous n’utilisons pas le prêt-à-utiliser Linux watchdog-démon mais un wrapper python pour s’interfacer avec le démon-chien de garde de Linux comme décrit ici. Qui nous permet d’activer et désactiver le démon-chien de garde et d’engager les battements de coeur de notre script python.
Nous chargeons le module d’extension watchdogdev pour Python, c'est-à-dire le wrapper python :
CD/root
apt-get installer python-dev (s’est déjà fait lorsque vous configurez le GPIO de la Pi)
apt-get install python-pip
PIP installer watchdogdev
Redémarrage du système et le chargement du module noyau de chien de garde avec les commandes suivantes
remise à zéro
modprobe bcm2708_wdog
créera le fichier « chien de garde » dans le dossier « / dev ".
Il faut ajouter une ligne « bcm2708_wdog » dans le fichier « / etc/modules » afin de laisser la charge RasPi le module suivant le temps le système démarre.
nano/etc/modules (ajoutez la ligne « bcm2708_wdog »)