Table des matières:

Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail : 7 étapes
Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail : 7 étapes

Vidéo: Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail : 7 étapes

Vidéo: Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail : 7 étapes
Vidéo: Station de surveillance RASPBERRY PI - Caméra, température et relay 2024, Juin
Anonim
Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail
Surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail

Là où je travaille, il y a une pièce très importante qui abrite de nombreux ordinateurs. La température ambiante de cette pièce doit être très froide pour optimiser les performances de ces systèmes. On m'a demandé de proposer un système de surveillance qui a la capacité d'envoyer une forme d'alerte à quelques personnes qui les informeront que quelque chose ne va pas avec la climatisation dans cette pièce. Le matériel pour cette construction, j'ai utilisé Raspberry pi et un capteur de température et d'humidité USB. Pour la surveillance, j'ai utilisé Gnuplot pour tracer trois graphiques de température et créer une image de ces graphiques. J'ai ensuite créé une page HTML dédiée qui sera hébergée sur le Raspberry pi afin que les conditions actuelles, ces images de sortie gnuplot, puissent être surveillées à partir d'une page Web de notre réseau. Pour les alertes, j'ai choisi d'utiliser Gmail. J'avais trouvé un exemple de code dans un magazine Linux User. (Bien sûr, vous pouvez utiliser n'importe quel serveur de messagerie une fois que vous connaissez les affectations de ports nécessaires.) Pour cela, j'ai créé un compte de messagerie Gmail dédié à ces alertes. De plus, en tant que fonctionnalité supplémentaire, lorsqu'une alerte est déclenchée, je joins un graphique à l'e-mail afin que la personne qui reçoit l'e-mail puisse avoir une idée de l'augmentation drastique qui a provoqué l'alerte.

Étape 1: la configuration matérielle

La configuration matérielle
La configuration matérielle

Il n'y a pas grand chose à configurer le matériel. Le Raspberry pi exécute Raspian et le capteur de température USB se branche simplement directement sur l'un des ports USB. La consommation électrique de ce capteur est minime et par conséquent je l'ai alimenté directement depuis le Raspberry pi. Cependant, pour les appareils alimentés par USB avec un peu plus de consommation d'énergie, je recommanderais de les alimenter via un concentrateur USB alimenté et non directement depuis le port USB du Raspberry pi. Une fois que le capteur de température est alimenté, il fournit une chaîne série qui contient la température et lectures d'humidité des conditions actuelles. température=20,9°C humidité=62,7% point de rosée=13,0°CA le script python analyse cette chaîne et stocke les valeurs de température et d'humidité dans trois fichiers texte toutes les cinq minutes; un fichier texte quotidien, 24 heures et 48 heures (Les différences seront discutées plus loin dans la section HTML). À partir de ces fichiers, Gnuplot générera les graphiques et par la suite les images de l'ensemble de données dans chaque fichier. Avant de parler du script python, je parlerai de la préparation du Raspberry pi. Étant donné que la surveillance doit être effectuée en ligne, un serveur Web doit être installé. J'en ai essayé quelques-uns dans mon temps sur le Raspberry pi mais bien qu'il soit un peu gros, je préfère Apache. Pour installer Apache sur votre Raspberry pi, vous tapez simplement: sudo apt-get install apache2 Il vous donnera une invite avant l'installation, appuyez sur "y" pour oui et Apache sera installé quelques minutes en fonction de votre Raspberry pi. Une fois cela est fait, vous devez installer deux plug-ins python: python-serial et le plug python-gnuplot. (Bien que j'aie réalisé que les versions récentes de Raspian ont la norme de plug-in python-serial mais juste pour être sûr.) Pour installer ceux que vous tapez: sudo apt-get install python-serial python-gnuplot Encore une fois après avoir reconnu les invites, ces plug -ins sera installé. Et avec cela, la configuration matérielle est terminée.

Étape 2: Configuration du logiciel - Configuration de la messagerie et destinataires

créer une adresse e-mailAvant d'aller trop loin dans le logiciel, le moment serait venu de créer un compte Gmail à partir duquel envoyer vos alertes par e-mail. (Cet exemple utilise GMail mais n'importe quel serveur de messagerie peut être utilisé une fois que nous connaissons les paramètres du port smtp) Le code python est assez simple mais les importations nécessaires sont essentielles. Sans eux, rien ne fonctionnerait.from time import *import time import serial import smtplib import Gnuplot import os import sysEnfin, la liste de diffusion. Bien sûr, nous devons ajouter les destinataires de l'e-mail. Chaque adresse e-mail est enregistrée dans une variable.from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' password = 'custom_email_password'

Étape 3: Configuration du logiciel - Configuration série et analyse

Ensuite, nous examinons la configuration série. Il s'agit simplement de configurer des paramètres qui correspondent à la sortie série du capteur. Le capteur émet une chaîne série à 9600 8 N 1 qui est un format standard. Une fois la chaîne reçue, il existe plusieurs façons d'analyser cette chaîne en python et peut-être de manière plus fiable. La façon dont je le fais est de rechercher les caractères "temp" dans la chaîne série. Une fois localisé, il s'agit simplement de lire les 46 prochains caractères de la série dans une chaîne. La chaîne collectée peut maintenant être adressée comme des éléments dans un tableau. Les données souhaitées sont analysées à partir de la chaîne et enregistrées dans les trois fichiers avec l'horodatage correspondant.timestamp = strftime("%d%b%Y %H:%M:%S ", localtime())

Étape 4: Configuration du logiciel - Gnuplot

Configuration du logiciel - Gnuplot
Configuration du logiciel - Gnuplot
Configuration du logiciel - Gnuplot
Configuration du logiciel - Gnuplot
Configuration du logiciel - Gnuplot
Configuration du logiciel - Gnuplot

Gnuplot est un outil graphique en ligne de commande. Une fois que vous avez compris les bases, cela peut être un outil assez puissant pour l'affichage graphique des ensembles de données. Gnuplot peut tracer directement à partir d'un fichier texte formaté et il se trouve que nous en avons un de l'étape d'analyse précédente. Une fois que nous avons indiqué à gnuplot où se trouvent les données dans le fichier, nous pouvons tracer les valeurs souhaitées. Je vais utiliser le temps sur l'axe X et notre température sur l'axe Y. Le tracé de l'heure d'après mon expérience est le plus difficile car vous devez obtenir le format de l'heure dans gnuplot pour qu'il corresponde au format du fichier texte. Une fois toutes les options graphiques terminées et selon vos préférences, Gnuplot peut ensuite créer une image de ce graphique. Ce sera l'image que nous utiliserons plus tard sur notre page Web. J'ai choisi d'utiliser une image-p.webp

Étape 5: Configuration du logiciel - Paramétrage du seuil et envoi par e-mail

Le seuil pour l'alerte doit être fait par essais et erreurs pour votre configuration. la pièce qui abrite les systèmes n'a pas de fenêtre, donc une fois que la climatisation s'arrête, elle peut devenir très chaude très rapidement. Au départ, j'ai regardé l'ensemble de données pendant quelques jours et j'ai observé les variations de température avant de décider de la valeur d'alerte de 30 degrés C. Ceci est défini comme une variable dans le script Python. Cela peut ne pas sembler très élevé, mais une fois l'alerte déclenchée, vous voulez toujours vous donner le temps de rectifier le problème avant qu'il ne devienne critique.

Pour plus de simplicité, j'envoie des e-mails individuels à la liste de diffusion. Comme la liste de diffusion est courte, je n'ai jamais pris la peine d'envoyer un seul e-mail à plusieurs destinataires. Une chose à noter ici, puisque j'exécute ce script en tant que tâche cron toutes les 5 minutes, vous ne voulez pas envoyer d'e-mails toutes les 5 minutes une fois le seuil déclenché. Pour contourner ce problème, j'écris la date et l'heure de l'alerte dans un fichier et je vérifie ce fichier avant d'envoyer des e-mails pour voir si le système est déjà en état d'alerte. Une fois dans un état d'alerte, il ne renverra un e-mail que toutes les heures après le premier déclencheur tant que le système est en état d'alerte. De cette façon, Gmail n'empêche pas votre e-mail d'envoyer trop d'e-mails sur une courte période de temps.

Étape 6: Configuration du logiciel - HTML

La surveillance de l'ensemble du système se fait via une page Web et un script html très basique est nécessaire pour cela. Les images que Gnuplot a créées, j'utilise simplement les mêmes dimensions de l'image. Je crois que j'ai parcouru environ 3 tailles pour ces images qui ont donné le meilleur ajustement sur mon écran. Avant de créer le script html, créons un dossier pour celui-ci. Par défaut, le dossier d'hébergement Web est situé dans /var/www/. Bien que le seul but de ce Raspberry pi soit de surveiller cette pièce et d'émettre des alertes par e-mail, pour une bonne gestion de la maison, j'ai créé un dossier séparé dans le dossier /var/www/. Étant donné que ce dossier appartient à l'utilisateur root, vous devez utiliser sudo pour créer un dossier à cet emplacement. sudo mkdir /var/www/temperatureDans cet exemple, j'ai utilisé la température comme nom de dossier, mais vous pouvez utiliser n'importe quel nom ici, mais rappelez-vous que cela devra être entré dans la barre d'adresse pour afficher cette page. Ce chemin est stocké dans une variable dans le script python. Dans le cas où l'emplacement d'hébergement doit être modifié ou le script doit être modifié pour un autre système, il peut être simplement modifié à partir de cet emplacement. Nous pouvons maintenant créer notre script html dans ce dossier en n'oubliant pas d'utiliser sudo devant toutes les commandes que vous voulez exécuter ici. Je vous recommanderais de nommer le script html "index.html" car cela simplifierait cela lorsque vous essayez de trouver cette page. L'essentiel est de s'assurer que la taille de l'image est la même que la taille de l'image de Gnuplot. Pour afficher cette page, vous devez simplement entrer l'adresse IP du Raspberry Pi suivie de /temperature (ou quel que soit le nom que vous avez donné à votre dossier). J'ai plusieurs systèmes au travail qui surveillent différentes choses et ils produisent tous une sortie graphique de leurs résultats. J'ai donc créé une page qui contient des liens vers toutes ces pages afin que je n'aie pas à me soucier d'entrer l'adresse à chaque fois que je veux accéder à ces pages.

Étape 7: Je suis vivant…

Je l'ai utilisé pour surveiller la température dans une salle informatique, mais cela aurait pu être à peu près des données de n'importe quelle source. Une fois qu'il peut être stocké dans un fichier texte et que vous connaissez son format, Gnuplot peut faire le reste. Une chose que j'ai ajoutée récemment à ce projet est d'envoyer un e-mail de type "battement de cœur". C'est le premier du mois à 9 heures du matin, j'ai un script qui s'exécute qui envoie un e-mail à la liste de diffusion pour leur faire savoir que le système fonctionne comme il se doit et que tout va bien dans la pièce.

En utilisant la liste des tâches cron comme:

Conseillé: