Ce projet permet de gérer les mises à jour et les rollbacks de plusieurs Raspberry Pi à partir d'une interface graphique Qt. Les Raspberry Pi exécutent un serveur Flask qui reçoit les commandes de mise à jour et de rollback via des requêtes HTTP.
- Qt 5.15 ou supérieur
- Python 3.x
- Flask
wget(pour télécharger les fichiers de mise à jour)
- Clonez ce dépôt sur votre machine.
- Ouvrez le fichier
.proavec Qt Creator. - Configurez le projet en sélectionnant le kit approprié.
- Compilez et exécutez le projet.
- Scanner le Réseau : Cliquez sur le bouton "Scan Network" pour détecter les Raspberry Pi sur le réseau local.
- Sélectionner un Fichier de Mise à Jour : Cliquez sur "Select Update File" pour choisir le fichier de mise à jour.
- Lancer la Mise à Jour : Sélectionnez un ou plusieurs Raspberry Pi dans la liste et cliquez sur "Start Update".
- Lancer le Rollback : Sélectionnez un ou plusieurs Raspberry Pi dans la liste et cliquez sur "Send Rollback".
Assurez-vous que Python 3.x est installé sur chaque Raspberry Pi. Installez Flask en exécutant la commande suivante :
~ sudo pip install flask
- Copiez les fichiers app.py, update_script.sh, et rollback_script.sh sur chaque Raspberry Pi.
- Rendez les scripts exécutables : chmod +x update_script.sh rollback_script.sh
Sur chaque Raspberry Pi, lancez le serveur Flask avec la commande suivante : python3 app.py Le serveur Flask écoutera sur le port 5000 et sera prêt à recevoir des commandes de mise à jour et de rollback.
Pour effectuer l'update sur les Raspberry, nous utilisons un fichier contenant une liste de packages linux. Nous envoyons une requête http à la raspberry sur la route /update avec la liste des packages en base 64 dans le body. Le serveur reçoit la requête, décode les données et procède à l'installation en utilisant la commande "sudo apt-get install " pour chaque package de la requête. Nous enregistrons ensuite tous les packages ainsi que leur version dans le fichier "rollbackFile".
Lorsque le serveur reçoit une requête GET sur la route /rollback, il ouvre le fichier "rollbackFile" et réutilise la commande d'installation en ajoutant les version.
Cela fonctionne car lors d'un problème pendant une update, le fichier de rollback ne sera pas réécrit et aura donc les versions de la dernière update réussie.
Assurez-vous que les Raspberry Pi et la machine exécutant l'application Qt sont sur le même réseau local.
- Nous avons d'abord essayé avec MQTT, car nous étions plus familier avec cet outil. Cependant, on s'est vite rendu compte qu'installer MQTT sur Qt était extrêmement laborieux, cela nous a fait perdre pas mal de temps donc on a décidé de se tourner avec des serveurs HTTP.
- Nous n'avions pas de Raspberry chez nous donc nous avons testé en faisant tourner un serveur sur nos PC. Seules les personnes du groupe ayant encore les PFE et qui vont donc à l'école ont pu tester en conditions réelles avec les Raspberry.