Tutoriel : Partie 7 - Fichiers de gestion
- Ecriture de scripts de gestion
- Lancement des scripts depuis le cron
- Pouvoir se connecter en ssh à la raspberry depuis son téléphone mobile
- Réglages si la Raspberry fonctionne en WiFi
- Créer et ouvrir le fichier en écriture
nano ~/script/updateAndUpgradeAuto.sh - Ecrire le script en ajoutant les deux lignes
#!bin/bash sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y && sudo reboot - Il faut cependant être vigilant avec les mises à jour ; certaines d’entre elles pourraient empêcher que le serveur continue de bien fonctionner
- Il est préférable de les lancer manuellement de manière régulière
- Apporter un soin particulier aux mises à jour de
apache2qui peuvent corriger des failles de sécurité
- A chaque démarrage de la raspberry, un courriel est envoyé pour prévenir l’utilisateur.
- Ceci permet notamment de vérifier que les caméras se sont bien lancées.
- Les adresses mail de l’envoyeur et du destinataire (elles peuvent être différentes) ainsi que le mot de passe sont paramétrables dans configuration.ini.
- Créer et ouvrir le script en écriture
nano ~/script/mail_reboot.py - Copier/coller le contenu du fichier
mail_reboot.pydisponible ici
- Si une IP statique (fixe) n’est pas assujettie à la box, il faut être informé des changements d’IP.
- Créer et ouvrir en écriture le fichier ~/currentIP.txt
nano ~/currentIP.txt - Ecrire la ligne suivante
{"ip": " ", "date": " "}Si vous n’écrivez rien dans le fichier, lorsque le script se lancera il soulèvera une erreur.
- Créer et ouvrir en écriture le fichier
~/script/ipcheck.pynano ~/script/ipcheck.py - Copier/coller le contenu du fichier
ipcheck.pydisponible ici
- Éditer le crontab
crontab -e - Lancer le script de mise à jour tous les lundis à 4H10 en ajoutant la ligne
10 04 * * 1 sh /home/pi/script/updateAndUpgradeAuto.sh - Lancer l’envoi de courriel au redémarrage de la Raspberry en ajoutant la ligne
@reboot python3 /home/pi/script/mail_reboot.py - Lancer le script de contrôle de l’IP en ajoutant la ligne
*/10 * * * * python3 /home/pi/script/ipcheck.pyL’IP sera contrôlée toutes les 10 minutes.
- Au final le cron doit ressembler à ceci
@reboot python3 /home/pi/script/runCamera_1.py @reboot python3 /home/pi/script/runCamera_2.py @reboot python3 /home/pi/script/runCamera_py.py @reboot python3 /home/pi/script/getCamerasAndRegister.py 10 03 * * * python3 /home/pi/script/suppressFiles.py 10 02 3 */2 * sh /home/pi/script/certbotRenew.sh 10 04 * * 1 sh /home/pi/script/updateAndUpgradeAuto.sh # à commenter au besoin @reboot python3 /home/pi/script/mail_reboot.py */10 * * * * python3 /home/pi/script/ipcheck.py
- Il peut être nécessaire de se connecter à la raspberry pour modifier certains paramètres ou pour toute autre raison. Y compris depuis l’extérieur du réseau avec son téléphone mobile.
- Différentes applications permettant une connexion ssh depuis un mobile sont disponibles. Termius est particulièrement simple et a une offre gratuite amplement suffisante pour ce projet.
- Installer
Termiusdepuis l’App Store ou Google Play - Une fois
Termiusinstallée sur son mobile- Dans le menu choisir Hosts
- Créer un nouvel hôte en appuyant sur + et choisir
New host - Vous pouvez créer deux hôtes : un accès en réseau local et un accès depuis l’extérieur
- Accès extérieur
- Alias : rentrer l’étiquette de votre choix, par exemple :
Camera Ext - Hostname or IP Address : entrer l’ adresse IP de votre box
- Chosir le mode SSH en cliquant sur la case (a priori sélectionné par défaut)
- Port : entrer le port externe que vous avez attribué pour le ssh dans le NAT/PAT
- Username : pi (à moins que vous n’ayez changé de nom d’utilisateur)
- Password : entrer le mot de passe de la raspberry (en faisant un copier/coller)
- Valider en cliquant sur le symbole
∨en haut à droite de l’écran
- Alias : rentrer l’étiquette de votre choix, par exemple :
- Accès local
- Alias : rentrer l’étiquette de votre choix, par exemple :
Camera Local - Hostname or IP Address : entrer l’ adresse IP locale de la raspberry (par exemple 192.168.1.49)
- Chosir le mode SSH en cliquant sur la case (a priori sélectionné par défaut)
- Port : 22, qui est le port par défaut
- Username : pi (à moins que vous n’ayez changé de nom d’utilisateur)
- Password : entrer le mot de passe de la raspberry (en faisant un copier/coller)
- Valider en cliquant sur le symbole
∨en haut à droite de l’écran
- Alias : rentrer l’étiquette de votre choix, par exemple :
- A la première connexion, le logiciel demande de valider la clé : appuyer sur
Connect - Lors des changements d’IP de la box, il faut changer l’adresse IP de l’hôte de l’accès extérieur
- Si la Raspberry est connectée en WiFi et non en filaire, lors d’une panne de courant, la Raspberry se mettra en route AVANT que la WiFi ne soit disponible
- La Raspberry sera alors incapable de se connecter au WiFi
- Le logiciel sera opérationnel, avec prises de photos, stockage dans la base de données… Mais le site ne sera pas accessible
- La Raspberry ne sera même pas accessible en
sshet il ne sera donc pas possible de la rebooter à distance - La seule solution est alors de débrancher la Raspberry et de la rebrancher pour qu’elle se connecte au WiFi au redémarrage
- Une solution est proposée par dweeber
- Il s’agit d’un script qui va tester régulièrement si la Raspberry est sur le réseau et va redémarrer le WiFi dans le cas contraire
- Ce script est repris dans la procédure ci-dessous ; les seuls changements concernent le chemin d’accès du fichier
lockfile, notamment pour des questions de droits d’accès au répertoire/var/run/préconisé par Kevin Reed ainsi que la commandeifconfigde fin de script
- Créer le répertoire
/home/pi/WiFiqui est le répertoire du fichierlockfile
mkdir ~/WiFi
- Vérifier que la valeur du
wlanest bienwlan0
iwconfig wlan0
- Si la réponse est
wlan0 No such devicechercher cette valeur (éventuellement aprés avoir installé iw :sudo apt install iw)
iw dev
- Dans ce cas, dans le script, modifier la valeur de la variable
wlan - La valeur
pingipest fixée à192.168.1.1: la modifier au besoin - Créer le fichier
WiFiCheck.shen écriture
nano ~/script/WiFiCheck.sh
- Copier dans ce fichier le script disponible ici
- Sauvegarder et quitter l’éditeur
nano:Ctrl+0 Enter Ctrl+X - Ouvrir le crontab en édition
crontab -e
- Lancer le script toutes les 5 minutes, par exemple, en ajoutant à la fin du
crontab
/5 * * * * sh /home/pi/script/WiFiCheck.sh
- Sauvegarder et quitter le
crontab
Un système de surveillance en flux direct et avec enregistrement et stockage de photos a été mis en place pour être consultable, après authentification, depuis le web en utilisant mjpg-streamer, django et apache.
En jouant sur différents paramètres, notamment la fréquence de capture des images, on dispose, si on le souhaite, d’une surveillance qui peut être adaptée à d’autres projets.
Certaines faiblesses sont patentes ; par exemple le fait que si l’une des caméras ne se lance pas au départ, il n’y a ni procédure de relance ni message d’alerte.
De manière délibérée, il n’a pas été fait appel à un logiciel de détection de mouvements ni à un traitement des images permettant de ne sélectionner que les photos sur lesquelles un cheval apparaîtrait. Ceci pourrait faire l’objet d’autres projets.
Actuellement (septembre 2024) deux Raspberry travaillent de concert depuis un an et le système fonctionne bien. Des incidents mineurs (problème d’affichage des images, stockage dans la base de données..) ont pu nécessiter de rebooter le système.