Hé! Vous semblez être en United States, souhaitez-vous utiliser notre site English ?
Switch to English site
Skip to main content

Projet AQ - Mode d'emploi - Partie 2 : Premier aperçu de l'application ESDK sur la qualité de l'air

L'application lit les capteurs, pilote l'affichage local et affiche les données sur la plateforme de mesure en nuage.

Le matériel du Kit de développement de capteurs environnementaux de DesignSpark (ESDK) est au cœur du projet de qualité de l'air de DesignSpark. Le module Python de DesignSpark ESDK permet de lire ses capteurs. Dans cet article, nous examinons l'application AQ qui s'appuie sur ce module pour afficher les relevés sur l'écran tactile de l'ESDK et envoyer les mesures vers une base de données et une plateforme d'analyse en nuage.

DesignSpark.ESDK

Le module de support Python de l'ESDK permet :

  • D'obtenir le numéro de série du Raspberry Pi
  • Sonder le bus I2C pour détecter les capteurs
  • Lire les modules de capteurs ESDK
  • Mettre en œuvre des algorithmes pour convertir les relevés bruts en valeurs significatives
  • Lire le GPS
  • Fournir des fonctions d'aide si nécessaire, par exemple en mettant en œuvre le contrôle de redondance cyclique (CRC)

Le module Python n'en est qu'à ses débuts et il évoluera au fil du temps, non seulement pour prendre en charge d'autres capteurs, mais aussi pour améliorer son architecture et ses caractéristiques.

Cette fonctionnalité est développée en tant que module – plutôt que d'être simplement intégrée dans l'application principale – et a été publiée dans le Python Package Index (PyPI), étant donné que le matériel ESDK pourrait être utilisé dans de nombreuses autres applications et que cela contribuera à la réutilisation du code.

Application

Python back-end

En bref, le code Python de l'application Qualité de l'air :

  • Lit les capteurs via DesignSpark.ESDK
  • Publie les relevés grâce à une API WebSocket
  • Publie les relevés via MQTT si un gestionnaire est configuré
  • Publie les données vers Prometheus si un ou plusieurs endpoints sont configurés

Nous reviendrons sur l'API WebSocket plus tard. MQTT est particulièrement utile si vous avez besoin d'un accès local aux relevés, ou peut-être d'un gestionnaire distant déjà configuré. Prometheus est une base de données de séries temporelles (ordonnées chronologiquement) utilisée par le nuage de DesignSpark Metrics. La plateforme cloud utilisée par le projet sur la qualité de l'air fera l'objet d'un article séparé.

Web front-end

Différentes options ont été envisagées pour créer l'interface utilisateur graphique de l'affichage local, comme la boîte à outils Qt widget. Finalement, il a été décidé de créer une page web et de l'afficher via un navigateur lancé en mode kiosque. Cette solution présente l'avantage d'abaisser la barrière à l'entrée pour l'ensemble de la communauté qui se lance dans la création d'interfaces personnalisées, étant donné que les compétences de base en HTML, CSS et JavaScript sont plus courantes que l'expérience des boîtes à outils d'interface graphique d'applications natives.

À l'heure actuelle, il existe une page web simple et unique comportant quatre cases : une pour la température et l'humidité, une pour le COVT, une pour le CO2 et une pour les particules. Les mesures sont mises à jour par un code JavaScript côté client, qui reçoit les données de l'application Python via l'API WebSocket.

Il est prévu de faire évoluer l'interface web au fil du temps et d'avoir plusieurs écrans, avec un support supplémentaire pour des éléments tels que les informations de configuration et d'état, les graphiques, et également l'accès au réseau avec un design réactif qui s'adapte à la taille de l'écran. Pour l'instant, l'interface est uniquement locale, mais en attendant, les personnes désireuses d'expérimenter peuvent facilement charger le code HTML dans un navigateur et le modifier.

L'installation

Une image Raspberry Pi préinstallée peut être téléchargée et doit être copiée sur une carte Micro SD d'au moins 8 Go. Sous Windows, vous pouvez le faire à l'aide d'un outil tel qu'Etcher. Sous Linux, vous pouvez le faire via la ligne de commande en utilisant  dd. Le processus d'écriture de l'image préinstallée est identique à celui de l'écriture d'une image de système d'exploitation Raspberry Pi normale.

À un moment donné, le processus d'installation s'interrompra pour installer d'abord la dernière version standard du Raspberry Pi OS, puis pour la démarrer et exécuter un script d'installation de l'application. Cela apportera surtout des avantages en termes de maintenance du projet et d'absence de distribution de gros fichiers d'images entières du système d'exploitation.

Configuration de l'application

L'application Qualité de l'air (AQ) est configurée via le fichier :

/boot/aq/aq.toml

La configuration a été placée sur la partition /boot car celle-ci est formatée en fat32, ce qui signifie qu'elle peut être installée sur les ordinateurs Windows, ainsi que Linux et Mac, pour faciliter les modifications.

Jetons un coup d'œil sur les options de configuration, en commençant par la section matérielle principale de l'ESDK.

[ESDK]
friendlyname = "bjonesoffice"
gps = false
latitude = 53.7129968
longitude = -1.9392022
debug = false

Le friendlyname est, comme il le suggère, une simple étiquette pratique à utiliser pour le périphérique. Idéalement, ce devrait être quelque chose de significatif, par exemple une combinaison du nom du propriétaire et d'un emplacement, mais ce n'est pas essentiel et n'a pas besoin d'être globalement unique, puisque le numéro de série du Raspberry Pi est utilisé comme le principal moyen de distinguer un ensemble de matériel ESDK d'un autre.

Si “gps = true” est défini et que le récepteur GPS a une position fixe, celle-ci sera utilisée pour étiqueter les lectures des capteurs avec la localisation. Cependant, si la valeur par défaut est “gps = false”,  une latitude et une longitude codées en dur seront utilisées à la place. Il s'agit de la valeur par défaut, car l'utilisation de l'appareil en intérieur est prévue dans un premier temps.

Il existe également une option de débogage, qui est désactivée par défaut.

[local]
csv = false

Ensuite, il y a une section pour l'enregistrement local et, à l'heure actuelle, il n'y a qu'une seule option, pour permettre l'enregistrement des lectures des capteurs dans des fichiers CSV sous /aq/data/. Ce dernier est situé sur une partition dédiée formatée avec le système de fichiers ext4 journalling. Les fichiers CSV générés devront être copiés sur le réseau à l'aide de scp (par exemple, sous Windows via WinSCP), ou copiés en éteignant le Raspberry Pi, en retirant la carte Micro SD et en l'insérant dans un autre ordinateur Linux.

[mqtt]
broker = "localhost"
basetopic = "airquality"
username = ""
password = ""

Par défaut, MQTT est configuré pour publier vers un courtier fonctionnant sur le Raspberry Pi, sans aucune authentification configurée, comme indiqué ci-dessus. Ceci peut être facilement modifié pour utiliser un courtier distant, activer l'authentification en définissant un nom d'utilisateur et un mot de passe, ou pour définir un sujet de base différent.

[prometheus.global]
instance = ""
key = "”
url = "prometheus-prod-01-eu-west-0.grafana.net/api/prom/push"
interval = 300

Il peut y avoir une ou plusieurs sections prometheus*. et celles-ci configurent les threads qui écrivent les relevés des capteurs dans les bases de données de séries temporelles Prometheus distantes. Le paramètre d'intervalle détermine la fréquence d'écriture des données du capteur, par exemple, dans ce cas, toutes les 300 secondes, soit 5 minutes. Prometheus n'est pas configuré par défaut et ce point sera abordé dans l'article consacré à la plateforme Cloud.

Mises à jour

Pour ce relâcher alpha initial, le code Python est simplement exécuté depuis le répertoire personnel de l'utilisateur pi et mis à jour via « git pull ». Cependant, l'application sera packagée en temps voulu et un mécanisme de mise à jour plus pratique est prévu. Ce mécanisme sera probablement déployé en même temps que l'interruption de l'utilisation d'un système d'exploitation Raspberry Pi avec un script pour installer l'application Qualité de l'air.

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.