[PYTHON] Ce que j'ai fait pour garder une trace de l'humidité et de la température des archives

L'explication suivante est écrite dans la page de contrôle de la température et de l'humidité de la Bibliothèque nationale de l'alimentation.

========== La bibliothèque de la Bibliothèque nationale de la Diète est équipée d'un climatiseur qui peut contrôler la température et l'humidité, et la température et l'humidité à l'intérieur de la bibliothèque sont vérifiées avec diligence pour vérifier «la température à laquelle les gens peuvent travailler dans la bibliothèque» et «l'humidité de 65% ou moins». Nous visons à éviter les fluctuations soudaines de température et d'humidité tout au long de l'année et même pendant la journée. Nous essayons également de réduire au minimum la différence de température / humidité par rapport à la salle de lecture. ==========

Il indique également que plus la température est élevée, plus la quantité de vapeur d'eau saturée est élevée, il est donc nécessaire d'ajuster la température de manière optimale afin de contrôler l'humidité.

Je voudrais créer une alerte lorsque l'humidité dépasse 65%, mais avant cela, j'ai pensé à garder une humidité et une température horaires dans mon environnement, puis à garder une trace de la pression.

Je vais écrire ce que j'ai fait pour cela.

Ce que vous avez préparé

Raspberry Pi Zero W J'ai acheté un en-tête de broche séparément et l'ai soudé. Capteur infrarouge + environnemental pour Raspberry Pi Zero "RPZ-IR-Sensor" Rev2.0 (monté sur borne + capteur externe)

OS Debian GNU/Linux Linux raspberrypi 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l

Gardez I2C activé dans Rasperry Pi Settings-Interface. image.png

Assemblée

①Raspberry Pi Zero W ② Alimentation ③ À la souris et au clavier ④ Vers l'affichage ⑤ Capteur infrarouge + environnemental pour Raspberry Pi Zero ⑥ Capteur de température / humidité / pression ⑦ Borne montée + capteur externe température / humidité / pression ⑧ Terminal de communication infrarouge (non utilisé cette fois) ⑨ Capteur de lumière (éclairage) (non utilisé cette fois) Remarque: ⑥ détecte également la chaleur générée par Raspberry Pi Zero, utilisez donc la valeur mesurée de ⑦. image.png

Exemple de programme préparé

https://www.indoorcorgielec.com/products/rpz-ir-sensor/ J'ai décompressé l'exemple de programme rzp-sensor.zip et l'ai utilisé tel quel. image.png

La méthode de sortie du journal est décrite à la fin de readme.txt. image.png

Test de l'exemple de programme

$ python3 rpz_sensor.py
BME280 0x76
 Temp     : 19.9C
 Pressure : 1006.0hPa
 Humidity : 38.6%

BME280 0x77
 Temp     : 23.0C
 Pressure : 1005.6hPa
 Humidity : 35.0%

TSL2572
 Lux : 176.3lux

BME280 0x76 est la valeur mesurée de l'assemblage ⑦. BME280 0x77 est la valeur mesurée de l'assemblage ⑥. Il semble que la température supérieure à ⑦ d'environ 3 ℃ soit due à la chaleur générée par RaspberryPy Zero. La température étant supérieure à ⑦, la valeur d'humidité est faible. TSL2572 est la valeur mesurée de l'assemblage ⑨.

Créer un script shell pour tester la sortie du journal

do.sh

#!/bin/sh

date +"%Y/%m/%d %T"
cd rpz-sensor/python3
python3 ./rpz_sensor.py -l ./log/logfile.csv

Mettez le script shell en mode exécutable.

$ chmod +x do.sh

Je vais essayer.

$ rpz-sensor/do.sh
2020/04/14 18:37:07
BME280 0x76
 Temp     : 21.9C
 Pressure : 1008.8hPa
 Humidity : 45.7%

BME280 0x77
 Temp     : 22.7C
 Pressure : 1008.4hPa
 Humidity : 44.8%

TSL2572
 Lux : 170.7lux

Le journal est en cours de sortie.

$ cat logfile.csv
Time,Temp ch1,Temp ch2,Pressure ch1,Pressure ch2,Humidity ch1,Humidity ch2,Lux
2020/04/14 18:37,21.9,22.7,1008.8,1008.4,45.7,44.8,170.7

Paramètres d'exécution programmée

$ crontab -e

L'éditeur démarre, réglez-le pour qu'il mesure à zéro minute toutes les heures et affichez le journal.

# m h  dom mon dow   command
00 * * * * rpz-sensor/do.sh

Redémarrez cron pour que les paramètres prennent effet.

$ sudo /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.

Quand je l'ai vérifié quelques heures plus tard, le journal était sorti selon le scénario.

cat logfile.csv
Time,Temp ch1,Temp ch2,Pressure ch1,Pressure ch2,Humidity ch1,Humidity ch2,Lux
2020/04/14 18:37,21.9,22.7,1008.8,1008.4,45.7,44.8,170.7
2020/04/14 19:00,21.6,22.8,1009.6,1009.2,47.5,45.7,15.6
2020/04/14 20:00,18.7,22.4,1010.8,1010.3,60.6,50.2,87.9
2020/04/14 21:00,18.7,22.3,1011.3,1010.9,57.5,48.3,88.9

Structure du répertoire

Je l'ai essayé avec la configuration suivante. image.png

pi@raspberrypi:/home $ ls
pi
pi@raspberrypi:/home $ cd pi
pi@raspberrypi:~ $ ls
Desktop    Downloads  Music     Public     Videos
Documents  MagPi      Pictures  Templates  rpz-sensor
pi@raspberrypi:~ $ cd rpz-sensor
pi@raspberrypi:~/rpz-sensor $ ls
do.sh  python3  readme.txt
pi@raspberrypi:~/rpz-sensor $ cd python3
pi@raspberrypi:~/rpz-sensor/python3 $ ls
__pycache__  bme280i2c.py  log  rpz_sensor.py  tsl2561.py  tsl2572.py
pi@raspberrypi:~/rpz-sensor/python3 $ cd log
pi@raspberrypi:~/rpz-sensor/python3/log $ ls
logfile.csv

Livres de référence

Livre Razpai Zero Craft

Ce que je veux faire après ça

・ Automatisation de l'affichage graphique basé sur les données du journal ・ Alerte à LINE Bot lorsque l'humidité dépasse un certain niveau

Recommended Posts

Ce que j'ai fait pour garder une trace de l'humidité et de la température des archives
La ventilation est importante. Ce que j'ai fait pour garder une trace de la concentration de C02 dans la pièce
Ce que j'ai fait pour établir une connexion SSH à l'environnement VPS Ubuntu
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
Je veux connaître la nature de Python et pip
H29.2.27 ~ 3.5 Résumé de ce que j'ai fait
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
J'ai résumé comment changer les paramètres de démarrage de GRUB et GRUB2
Ce que j'ai fait pour économiser la mémoire Python
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler
[Chez Coder] Ce que j'ai fait pour atteindre le rang vert en Python
Ce que j'ai fait quand je ne pouvais pas trouver le point caractéristique avec le flux optique d'opencv et quand je l'ai perdu
Je souhaite visualiser l'état des transferts de la J League 2020, que dois-je faire?
Comment suivre le travail avec Powershell
L'histoire de l'adresse IPv6 que je souhaite conserver au minimum
[Python] Ce que j'ai fait pour faire un test unitaire
J'ai essayé de corriger la forme trapézoïdale de l'image
Ce que j'ai fait lors de la mise à jour de Python 2.6 vers 2.7
J'ai lu et implémenté les variantes de UKR
Je souhaite personnaliser l'apparence de zabbix
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
estimation personnelle en temps réel (que dois-je faire pour éviter l'estimation d'images en dehors de la catégorie) * Échec.
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Je veux grep le résultat de l'exécution de strace
J'ai essayé de résumer la forme de base de GPLVM
J'ai vérifié les versions de Blender et Python
Je veux bien comprendre les bases de Bokeh
J'ai vérifié le système d'exploitation et le shell par défaut de docker-machine
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
Je souhaite augmenter la sécurité de la connexion SSH
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de publier automatiquement sur ChatWork au moment du déploiement avec Fabric et ChatWork Api
Je veux trouver l'intersection d'une courbe de Bézier et d'une ligne droite (méthode de découpage de Bézier)
J'ai essayé de vérifier la classification yin et yang des membres hololive par apprentissage automatique
J'ai essayé de trouver l'entropie de l'image avec python
[Python] J'ai visualisé les paroles d'Arashi avec WordCloud et j'ai essayé de démêler ce que je voulais transmettre aux fans en 20e année de formation.
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Ce que je suis content d'avoir étudié en 2015 et ce que je pense apprendre en 2016
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
J'ai fait une fonction pour vérifier le modèle de DCGAN
J'ai essayé d'illustrer le temps et le temps du langage C
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
Accrocher à la première importation du module et imprimer le chemin du module