Ce projet utilise un Raspberry Pi Zero W, un Pimoroni Enviro+ et un capteur de qualité de l'air Plantower pour surveiller, afficher et rapporter les particules d'air, les gaz, la température, l'humidité, la pression atmosphérique, les niveaux de lumière et les niveaux de bruit. Il existe également la possibilité de surveiller les niveaux d'eCO2 et de TVOC en ajoutant un capteur SGP30. Le code est basé sur de nombreux exemples et bibliothèques Python publiés par Pimoroni, avec une série de modifications et d'améliorations.
Une fonction de prévision météorologique de base a été ajoutée, basée sur les niveaux et les changements de pression atmosphérique.
L'affichage du niveau de lumière dans le superbe Weather and Light a été modifié pour afficher les niveaux de qualité de l'air. La teinte d'arrière-plan représente désormais le niveau de qualité de l'air et la position du soleil est désormais affichée via une icône de soleil visible. Il fournit également des informations sur les prévisions météorologiques, les niveaux de bruit (si activé) et quelques modifications mineures de l'indicateur d'humidité.
La fonction Combiné a été modifiée pour offrir une meilleure visibilité de chaque graphique. Les couleurs du graphique sont basées sur des seuils de niveau pour chaque paramètre et affiche uniquement les paramètres qui ont été mesurés. La méthode 'display_everything' a également été modifiée pour afficher uniquement les paramètres de qualité de l'air, afin d'améliorer la lisibilité de l'affichage.
La fonction All in One a été modifiée pour permettre de parcourir toutes les fonctions de l'Enviro Monitor.
La précision des mesures de température et d'humidité a été améliorée grâce à des tests approfondis et à des analyses de régression (entre 0 et 40 degrés Celsius) afin de développer des algorithmes de compensation plus efficaces. Cependant, à eux seuls, même ces algorithmes améliorés n'ont pas fourni une précision suffisante et il a fallu utiliser un boîtier imprimé en 3D pour séparer l'Enviro+ du Raspberry Pi Zero W et les connecter via un câble plat.
En plus d'améliorer les mesures de température et d'humidité, des tests et des analyses de régression ont été entrepris pour fournir une compensation temporelle de la dérive, de la température, de l'humidité et de la pression atmosphérique pour les capteurs de gaz Enviro+. Des algorithmes et un étalonnage à l'air pur sont également utilisés pour fournir des lectures de capteurs de gaz en ppm. Une fonction d'enregistrement des données est fournie pour prendre en charge l'analyse de régression. Le fichier journal de cette analyse doit être activé et converti dans un format JSON valide avant d'entreprendre une analyse de régression plus approfondie.
La précision des lectures de pression atmosphérique est assurée par la compensation d'altitude. L'altitude est définie par le paramètre 'altitude' dans le fichier config.json.
Le boîtier n'est pas résistant à l'eau et doit être à l'abri des éléments. La base n'est requise que si l'unité n'est pas montée sur une surface verticale. Il existe une variante du boîtier et du couvercle pour le modèle Indoor Plus qui surveille les niveaux d'eCO2 et de TVOC. Cette variante du boîtier offre un espace et un flux d'air supplémentaires pour le capteur SGP30.
Le boîtier a également la possibilité d'ajouter une housse contre les intempéries pour fournir une protection supplémentaire contre les éléments. Lors de l'utilisation de cette couverture, il est nécessaire de définir "enable_display" dans le fichier config.json sur "false". Cela limite la fonctionnalité d'affichage à la teinte et au numéro de série basés sur la qualité de l'air, ainsi qu'à la modification des variables de compensation de température et d'humidité pour atténuer l'effet du couvercle sur le capteur de température et d'humidité.
Des mesures approximatives des niveaux de bruit ont été ajoutées à la version 6, sur la base de ce référentiel. Cette fonction n'a pas été calibrée et ne doit pas être utilisée pour des mesures précises du niveau sonore. La version 6.7 a amélioré la compensation de fréquence de la fonction de mesure du niveau de bruit, mais des travaux et un étalonnage supplémentaires sont encore nécessaires. Cette fonction de mesure du niveau de bruit nécessite une configuration supplémentaire (décrite ci-dessous) et après la configuration, doit être activée dans le fichier de configuration.
La prise en charge de mqtt est fournie pour permettre l'utilisation de capteurs externes de température et d'humidité (pour l'enregistrement des données et l'analyse de régression), l'interfonctionnement entre le moniteur Enviro et un système domotique et pour prendre en charge l'interfonctionnement entre les moniteurs Enviro extérieurs et intérieurs. Cet interfonctionnement permet à l'affichage d'un moniteur Enviro intérieur de alterner entre les lectures intérieures et extérieures.
Une alternative à l'utilisation de moniteurs Enviro intérieurs et extérieurs liés à mqtt pour obtenir des lectures extérieures sur un moniteur Enviro intérieur consiste à configurer le moniteur Enviro intérieur pour capturer les lectures Luftdaten ou les flux Adafruit IO à partir d'un autre moniteur Enviro.
L'interfonctionnement de Luftdaten a été modifié pour prendre en charge l'ajout de lectures de niveaux de bruit minimum, maximum et moyen. Les lectures du niveau de bruit peuvent être envoyées à Luftdaten en définissant « enable_luftdaten_noise » sur true dans le fichier config.json. Notez que Luftdaten ne peut actuellement pas être configuré avec trois capteurs par nœud, donc les relevés de niveau de bruit ne peuvent donc être envoyés à Luftdaten que si les relevés PM ou climatiques sont désactivés. Cela peut être fait en définissant "disable_luftdaten_sensor_upload" dans le fichier config.json sur "Climate" ou "PM".
La même configuration Enviro+ est utilisée pour configurer Enviro Monitor et les paramètres du fichier config.json sont utilisés pour personnaliser ses fonctionnalités. Une description des paramètres du fichier config.json est ici.
La mise en place des mesures du niveau de bruit nécessite les étapes supplémentaires suivantes :
L'exécution réussie de cette configuration est nécessaire avant d'activer la mesure du bruit dans le fichier de configuration.
sudo apt-get mise à jour
sudo apt-get mise à niveau
curl -sSL https://get.pimoroni.com/enviroplus | frapper
sudo python -m pip désinstaller le périphérique audio
sudo pip3 installer sounddevice==0.3.15
Pour les versions 6.7 et ultérieures, effectuez également :
sudo apt-get install python3-scipy
sudo pip3 install git+https://github.com/endolith/waveform_analysis.git@master
Suivez ensuite les instructions sur : https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-test, y compris « Ajout du contrôle du volume »
Utilisez ce qui suit au lieu du texte documenté pour ~/.asoundrc :
Pour les versions antérieures à la version 6.7 :
Utilisez alsamixer pour définir le niveau de capture adau7002 sur 50
Pour la version 6.7 et versions ultérieures :
Utilisez alsamixer pour définir le niveau de capture adau7002 sur 10
Un guide de l'utilisateur fournit des conseils sur l'utilisation de l'Enviro Monitor.
La prise en charge est fournie pour la diffusion en continu des prévisions météorologiques, de la qualité de l'air, de la température, de l'humidité, du point de rosée, de la pression atmosphérique, de la concentration de particules, de la concentration de gaz, des niveaux de lumière, des niveaux de bruit et, avec le capteur SGP30 en option, des données eCO2 et TVOC vers Adafruit IO. Cela peut être activé et configuré comme suit :
Les champs suivants du fichier config.json d'Enviro Monitor doivent être renseignés pour fournir des données aux flux IO d'Adafruit.
"enable_adafruit_io" : défini sur true pour activer et false pour désactiver les flux IO Adafruit,
"aio_user_name": "Votre nom d'utilisateur Adafruit IO",
"aio_key": "Votre clé IO Adafruit",
"aio_feed_window" : valeur comprise entre 0 et 9. Définit l'heure de début de la fenêtre de flux d'une minute (voir Adafruit Throttling Control). Réglez sur 0 si vous n'avez qu'un seul Enviro Monitor,
"aio_feed_sequence" : valeur comprise entre 0 et 3. Définit l'heure de début de la mise à jour du flux dans la fenêtre de mise à jour du flux d'une minute (voir Adafruit Throttling Control). Réglez sur 0 si vous n'avez qu'un seul Enviro Monitor,
"aio_household_prefix": "Le préfixe de clé Adafruit IO pour le foyer que vous surveillez (voir la convention de dénomination Adafruit IO)",
"aio_location_prefix": "Le préfixe de clé IO Adafruit pour l'emplacement de ce moniteur Enviro particulier. Utilisez 'indoor' pour un moniteur intérieur ou 'outdoor' pour un moniteur extérieur. (voir Convention de dénomination Adafruit IO)",
"aio_package" : défini sur "Premium Plus" ou "Premium Plus Noise" ou "Premium" ou "Premium Noise" ou "Basic Air" ou "Basic Combo"
Vous aurez besoin d'un compte Adafruit IO+ pour utiliser les forfaits « Premium Plus », « Premium Plus Noise », « Premium » ou « Premium Noise » et d'un Enviro Monitor Indoor Plus (équipé d'un capteur SGP30 eCO2/TVOC) pour le ' Packages Premium Plus' ou 'Premium Plus Noise' (voir Packages Adafruit IO)",
Le script configure les flux, tableaux de bord et blocs Adafruit IO d'Enviro Monitor comme dans cet exemple.
Le script peut configurer plusieurs foyers et emplacements en une seule fois, en remplissant le dictionnaire aio_feed_prefix avec les données requises. Le format de aio_feed_prefix est :
aio_feed_prefix = {'Nom du foyer 1' : {'key' : 'household1key', 'package' : 'aio_package', 'locations' : {'Location1Name' : 'location1key', 'Location2Name' : 'location2key'}, 'visibilité ' : 'public' ou 'privé'}, 'Nom du foyer 2' : {'clé' : 'household2key', 'package' : 'aio_package', 'locations' : {'Location1Name' : 'location1key'}, 'visibility' : 'public' ou 'private'}}
Les noms de foyer et les clés de foyer doivent être cohérents avec ceux définis dans les fichiers config.json des moniteurs Enviro concernés.
Par exemple, si vous n'avez qu'un seul Enviro Monitor pour votre foyer et si vous avez défini « aio_household_prefix » sur « home », « aio_location_prefix » sur « outdoor » et « aio_package » sur « Premium » dans votre fichier config.json pour cet Enviro Monitor, et si vous souhaitez que les flux, tableaux de bord et blocs soient définis avec une visibilité privée :
aio_feed_prefix = {'Accueil' : {'clé' : 'accueil', 'package' : Premium', 'emplacements' : {'Extérieur' : 'extérieur'}, 'visibilité' : 'privé'}}
Si vous disposez de deux moniteurs Enviro pour votre foyer et si vous avez défini les fichiers config.json comme « aio_household_prefix » sur « home » pour les deux moniteurs Enviro, « aio_location_prefix » sur « outdoor » pour le moniteur extérieur et « indoor » pour votre moniteur intérieur, "aio_package" à "Premium" pour votre moniteur extérieur et "Premium Plus" pour votre moniteur intérieur, et si vous souhaitez définir les flux, tableaux de bord et blocs avec une visibilité publique :
aio_feed_prefix = {'Accueil' : {'clé' : 'accueil', 'package' : Premium Plus', 'emplacements' : {'Extérieur' : 'extérieur', 'Intérieur' : 'intérieur'}, 'visibilité' : 'publique'}}
Les deux autres dictionnaires définis par l'utilisateur sont aio_user_name et aio_key. Ceux-ci doivent être renseignés avec le même nom d'utilisateur et la même clé que ceux que vous avez utilisés dans le fichier config.json de votre Enviro Monitor.
aio_user_name = "Votre nom d'utilisateur Adafruit IO"
aio_key = "Votre clé IO Adafruit"
Si cette option est activée, les mises à jour du flux Adafruit IO sont générées toutes les 10 minutes. Les variables aio_feed_window et aio_feed_sequence du fichier de configuration sont utilisées pour minimiser les erreurs de limitation d'Adafruit IO lors de la collecte de flux à partir de plusieurs moniteurs Enviro. La variable aio_feed_window peut avoir une valeur comprise entre 0 et 9 pour définir l'heure de début d'une fenêtre de mise à jour du flux d'une minute. 0 ouvre la fenêtre à 0, 10, 20, 30, 40 et 50 minutes après l'heure, 1 ouvre la fenêtre à 1, 11, 21, 31, 41 et 51 minutes après l'heure, 2 ouvre la fenêtre à 2, 12, 22, 32, 42 et 52 minutes après l'heure, et ainsi de suite. La variable aio_feed_sequence peut avoir une valeur comprise entre 0 et 3 pour définir l'heure de début de la mise à jour du flux dans la fenêtre de mise à jour du flux d'une minute. 0 démarre la mise à jour du flux immédiatement après l'ouverture de la fenêtre, 1 retarde le démarrage de 15 secondes, 2 de 30 secondes et 3 de 45 secondes.
La convention de dénomination pour chaque flux, tableau de bord ou bloc Adafruit IO d'Enviro Monitor consiste à utiliser le nom du foyer, suivi de l'emplacement de l'emplacement Enviro Monitor concerné au sein de ce foyer, comme préfixe pour chaque flux, tableau de bord ou bloc. Vous choisissez un nom approprié pour « aio_household_prefix », et « aio_location_prefix » peut être « intérieur » ou « extérieur ». Par exemple, définir « aio_household_prefix » sur « home » et « aio_location_prefix » sur « outdoor » définira le préfixe du nom de chaque flux sur « Home Outdoor » et le préfixe de la clé de chaque flux sur « home-outdoor- ». L'alimentation en température aura le nom « Température extérieure de la maison » et la clé « température extérieure de la maison ». Le tableau de bord aura le nom « Maison » et la clé « maison » et le bloc de jauge de température dans ce tableau de bord. portera le nom « Jauge de température extérieure » et la clé « jauge de température extérieure ».
Six options de package Adafruit IO sont disponibles : "Premium" avec 14 flux de données par Enviro, "Premium Noise" avec 17 flux de données par Enviro, "Premium Plus" avec 16 flux de données par Enviro (c'est-à-dire l'ajout d'eCO2 et de TVOC via l'option capteur SGP30), « Premium Plus Noise » avec 19 flux de données par Enviro qui nécessitent tous un compte Adafruit IO+ ; "Basic Air" avec 5 flux de données sur la qualité de l'air (niveau de qualité de l'air, texte sur la qualité de l'air, PM1, PM2,5 et PM10) et "Basic Combo" avec 5 flux de données sur la qualité de l'air/climat (niveau de qualité de l'air, icône de prévision météo, température, Humidité et pression atmosphérique).
L'utilisation des packages Adafruit IO « Premium Noise » et « Premium Plus Noise » nécessite la configuration et l'activation des mesures de bruit dans Enviro, à l'aide des instructions de configuration appropriées. La version 6.5 modifie les flux de bruit et les tableaux de bord pour afficher les niveaux de bruit maximum, minimum et moyen entre les mises à jour du flux, alors que les versions précédentes n'affichaient que les niveaux de bruit maximum entre les mises à jour du flux.
Ce projet est sous licence MIT - voir le fichier LICENSE.md pour plus de détails
Prévisions météorologiques basées sur www.worldstormcentral.co/law_of_storms/secret_law_of_storms.html par RJ Ellis