Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

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 capable 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 au sein de notre réseau.

Pour les alertes, j'ai opté pour 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 a été 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 du matériel

Il n'y a pas grand chose à mettre en place pour 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 une consommation d'énergie un peu plus élevée, 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 les lectures de température et d'humidité des conditions actuelles.

température=20,9°C humidité=62,7% point de rosée=13,0°C

Un 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, il vous suffit de taper :

sudo apt-get install apache2

Il vous donnera une invite avant l'installation, appuyez sur "y" pour oui et
et Apache sera installé quelques minutes en fonction de votre Raspberry pi.

Une fois cela 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

Une fois de plus, après avoir reconnu les invites, ces plug-ins seront installés.

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-mail

Avant 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.

à partir de l'heure d'importation *
heure d'importation

importer la série

importer smtplib

importer Gnuplot

système d'importation

importer le système

Enfin, 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'

nom d'utilisateur ="[email protected]@gmail.com"

mot de passe ='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 suffit de lire les 46 prochains caractères de 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

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 alors créer une image de ce graphique. Ce sera l'image que nous utiliserons plus tard sur notre page Web. J'ai opté pour une image .png et comme je veux remplacer l'ancienne image sur la page Web, chaque image a le même nom donc cette ligne de code n'a pas à changer.

Le réglage de la taille de l'image est lié à l'optimisation de la page html. J'ai d'abord joué avec des tailles standard, puis j'ai expérimenté pour adapter l'image à mon écran. Pour ce projet, je ne stocke pas d'anciennes images, donc la taille physique du fichier stocké n'est pas un facteur majeur sur le précieux stockage Raspberry Pi.

Voici un extrait de code pour créer et stocker l'image graphique daily.png.

g =Gnuplot.Gnuplot(debug=debug)

g('cd "' + chemin + '"' )
g('set xdata time')

g('set timefmt "%d%b%Y %H:%M:%S"')

g('définir le format x "%H:%M\\n%d%b"')

g(‘définir le titre « Affichage de la température actuelle quotidienne »‘)

g(‘Désactiver la touche’)

g('définir la grille') g('définir xlabel "Heure\\nDate"')

g(‘définir yrange [15.0:35.0]’)

g('set ylabel " Température "')

g('définir le fichier de données manquant "NaN"')

g('définir la taille du terminal png 800,400')

g('définir la sortie "daily.png"')

g('tracer "daily.dat" en utilisant 1:($3) avec des lignes')

REMARQUE : La ligne qui lit g('set datafile missing "NaN"'), le but de cette ligne est de tracer un espace vide dans le tracé. La variable "NaN" est écrite dans le fichier si le script python détecte quelque chose d'étrange pour une lecture donnée ou une transmission en série.

Comme vous pouvez le voir sur les trois graphiques ci-dessus, le daily.png vous donne un affichage de l'heure actuelle des données tandis que le 24_hour.png a les mêmes informations affichées sur une échelle de 24 heures. Le graphique 48_hour.png montre les dernières 48 heures de données du capteur.

Pour plus de détails :surveillance de la température ambiante contrôlée par Raspberry Pi avec sortie d'image Gnuplot et capacité d'alerte par e-mail


Processus de fabrication

  1. Contrôle d'accès avec QR, RFID et vérification de la température
  2. Mesure des températures avec un capteur DS18B20 1 fil et Raspberry Pi
  3. Surveillance de la température ambiante avec un Raspberry Pi et Nagios
  4. Lire la température avec DS18B20 | Raspberry Pi 2
  5. Moniteur de température et d'humidité domestique (pièce) avec graphique Web – Raspberry Pi
  6. Surveillance de la température sur le Raspberry Pi
  7. Mesure de la température avec RASPBERRY PI
  8. Capteur de température Python et Raspberry Pi
  9. Surveillance de la température ambiante avec Moteino's et Raspberry Pi