Sommario:

Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail: 7 passaggi
Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail: 7 passaggi

Video: Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail: 7 passaggi

Video: Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail: 7 passaggi
Video: Raspberry Pi Pico and MAX6675 based Industrial Temperature Monitoring System, K type thermocouple 2024, Dicembre
Anonim
Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail
Monitoraggio della temperatura ambiente controllato da Raspberry Pi con output di immagini Gnuplot e capacità di avviso e-mail

Dove lavoro c'è una stanza molto importante che ospita molti computer. La temperatura ambiente di questa stanza deve essere molto bassa per ottimizzare le prestazioni di questi sistemi. Mi è stato chiesto di creare un sistema di monitoraggio che abbia la capacità di inviare una qualche forma di avviso ad alcune persone che avviseranno loro che qualcosa non va con l'aria condizionata in quella stanza. L'hardware per questa build, ho usato Raspberry pi e un sensore di temperatura e umidità USB. Per il monitoraggio, ho usato Gnuplot per tracciare tre grafici di temperatura e creare un'immagine di quei grafici. Ho quindi creato una pagina HTML dedicata che sarà ospitata sul Raspberry pi in modo che le condizioni attuali, quelle immagini di output di gnuplot, possano essere monitorate da una pagina Web all'interno della nostra rete. Per gli avvisi ho optato per Gmail. Avevo trovato del codice di esempio in una rivista per utenti Linux. (Naturalmente puoi utilizzare qualsiasi server di posta una volta che conosci le necessarie assegnazioni delle porte.) Per questo ho creato un account di posta elettronica Gmail dedicato per questi avvisi. Inoltre, come funzionalità aggiuntiva, quando viene attivato un avviso, allego un grafico all'e-mail in modo che la persona che riceve l'e-mail possa avere un'idea di quanto sia stato drastico un aumento che ha causato l'avviso.

Passaggio 1: la configurazione dell'hardware

La configurazione dell'hardware
La configurazione dell'hardware

Non c'è molto da configurare l'hardware. Il Raspberry pi esegue Raspian e il sensore di temperatura USB si collega semplicemente direttamente a una delle porte USB. Il consumo energetico di questo sensore è minimo e di conseguenza l'ho alimentato direttamente dal Raspberry pi. Tuttavia, per i dispositivi alimentati tramite USB con un consumo energetico leggermente maggiore, consiglierei di alimentarli tramite un hub USB alimentato e non direttamente dalla porta USB del Raspberry pi. Una volta alimentato, il sensore di temperatura fornisce una stringa seriale che contiene la temperatura e letture di umidità delle condizioni attuali. temperatura=20,9°C umidità=62,7% punto di rugiada=13,0°CA python script analizza questa stringa e memorizza i valori di temperatura e umidità in tre file di testo ogni cinque minuti; un file di testo giornaliero, 24 ore e 48 ore (le differenze verranno discusse più avanti nella sezione HTML). Da questi file Gnuplot genererà i grafici e successivamente le immagini del dataset in ogni file. Prima di discutere dello script Python parlerò della preparazione del Raspberry pi. Poiché il monitoraggio deve essere effettuato online, è necessario installare un server Web. Ne ho provati alcuni nel mio tempo sul Raspberry pi ma anche se è un po' grande preferisco Apache. Per installare Apache sul tuo Raspberry pi, digita semplicemente:sudo apt-get install apache2 Ti darà un prompt prima dell'installazione, premi "y" per sì e Apache verrà installato alcuni minuti a seconda del tuo Raspberry pi. Una volta che è fatto, devi installare due plug-in python: python-serial e il plug python-gnuplot. (Anche se mi sono reso conto che le build recenti di Raspian hanno lo standard del plug-in python-serial, ma solo per sicurezza.) Per installarli digita: sudo apt-get install python-serial python-gnuplot Ancora una volta dopo aver riconosciuto i prompt, questi plug -ins verrà installato. E con ciò la configurazione hardware è completa.

Passaggio 2: configurazione del software - Configurazione e-mail e destinatari

creare un indirizzo e-mailPrima di addentrarci troppo nel software, ora sarebbe un buon momento per creare un account Gmail da cui inviare gli avvisi e-mail. (Questo esempio utilizza GMail ma qualsiasi server di posta può essere utilizzato una volta che conosciamo le impostazioni della porta smtp) Il codice Python è piuttosto semplice ma le importazioni necessarie sono fondamentali. Senza di loro niente funzionerebbe.from time import *import time import serial import smtplib import Gnuplot import os import sysInfine, la mailing list. Ovviamente dobbiamo aggiungere i destinatari dell'e-mail. Ogni indirizzo email viene salvato in una variabile.from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' password = 'custom_email_password'

Passaggio 3: configurazione del software - configurazione e analisi seriali

Poi esaminiamo la configurazione seriale. Si tratta solo di impostare parametri che corrispondano all'uscita seriale dal sensore. Il sensore emette una stringa seriale a 9600 8 N 1 che è un formato standard. Dopo che la stringa è stata ricevuta, ci sono diversi modi per analizzare questa stringa in Python e molto probabilmente in modo più affidabile. Il modo in cui lo faccio è cercare i caratteri "temp" nella stringa seriale. Una volta individuato, si tratta semplicemente di leggere i successivi 46 caratteri seriali in una stringa. La stringa raccolta può ora essere indirizzata come elementi in un array. I dati desiderati vengono analizzati dalla stringa e salvati nei tre file insieme al relativo timestamp.timestamp = strftime("%d%b%Y %H:%M:%S ", localtime())

Passaggio 4: configurazione del software - Gnuplot

Configurazione software - Gnuplot
Configurazione software - Gnuplot
Configurazione software - Gnuplot
Configurazione software - Gnuplot
Configurazione software - Gnuplot
Configurazione software - Gnuplot

Gnuplot è uno strumento grafico a riga di comando. Una volta che hai capito le basi, può essere uno strumento piuttosto potente per la visualizzazione grafica dei set di dati. Gnuplot può tracciare direttamente da un file di testo formattato e ci capita di averne uno dalla fase di analisi precedente. Una volta che indichiamo a gnuplot dove nel file si trovano i dati, possiamo tracciare i valori desiderati. Userò il tempo sull'asse X e la nostra temperatura sull'asse Y. Tracciare il tempo dalla mia esperienza è il più difficile in quanto devi ottenere il formato dell'ora in gnuplot in modo che corrisponda al formato del file di testo. Dopo che tutte le opzioni di rappresentazione grafica sono state completate e secondo le tue preferenze, Gnuplot può quindi creare un'immagine di questo grafico. Questa sarà l'immagine che utilizzeremo in seguito sulla nostra pagina Web. Ho scelto di utilizzare un'immagine-p.webp

Passaggio 5: configurazione del software - impostazione della soglia e invio di e-mail

La soglia per l'avviso deve essere eseguita per tentativi ed errori per la configurazione. la stanza che ospita gli impianti non ha finestre quindi una volta che l'aria condizionata si ferma può diventare molto calda molto velocemente. Inizialmente ho esaminato il set di dati per alcuni giorni e ho osservato le variazioni di temperatura prima di decidere il valore di avviso di 30 gradi C. Questo è impostato come variabile all'interno dello scipt di Python. Questo potrebbe non sembrare molto alto, ma una volta che l'avviso è stato attivato, vuoi comunque darti il tempo di correggere il problema prima che diventi critico.

Per semplicità, sto inviando singole e-mail alla mailing list. Poiché la mailing list è corta, non mi sono mai preoccupato di inviare un'e-mail a più destinatari. Una cosa da notare qui, poiché eseguo questo script come cron job ogni 5 minuti, non vuoi inviare e-mail ogni 5 minuti una volta che la soglia è stata attivata. Per aggirare questo problema, scrivo la data e l'ora dell'avviso in un file e controllo questo file prima di inviare qualsiasi e-mail per vedere se il sistema è già in uno stato di avviso. Una volta in stato di avviso, invierà nuovamente un'e-mail ogni ora dopo il primo trigger finché il sistema è in stato di avviso. In questo modo Gmail non impedisce alla tua email di inviare troppe email in un breve periodo di tempo.

Passaggio 6: configurazione del software - HTML

Il monitoraggio dell'intero sistema viene effettuato tramite una pagina Web e per questo è necessario uno script html molto semplice. Le immagini che Gnuplot ha creato ho semplicemente riutilizzato le stesse dimensioni dell'immagine. Credo di aver esaminato circa 3 dimensioni per queste immagini che si adattavano meglio al mio schermo. Prima di creare lo script html, creiamo una cartella per esso. Per impostazione predefinita, la cartella dell'hosting web si trova in /var/www/. Sebbene l'unico scopo di questo Raspberry pi sia quello di monitorare questa stanza ed emettere avvisi e-mail, per una buona gestione della casa ho creato una cartella separata nella cartella /var/www/. Poiché questa cartella appartiene all'utente root, devi usare sudo per creare una cartella in questa posizione. sudo mkdir /var/www/temperatureIn questo esempio ho usato temperature come nome della cartella ma puoi usare qualsiasi nome qui ma ricorda che dovrà essere inserito nella barra degli indirizzi per visualizzare questa pagina. Questo percorso è memorizzato in una variabile all'interno dello script python. Nel caso in cui la posizione di hosting debba essere cambiata o lo script debba essere modificato per un altro sistema, può essere semplicemente cambiato da questa posizione. Ora possiamo creare il nostro script html in questa cartella ricordando di usare sudo davanti a qualsiasi comando tu vuole eseguire qui. Ti consiglierei di nominare lo script html "index.html" in quanto ciò semplificherebbe il tentativo di trovare questa pagina. La cosa fondamentale è assicurarsi che la dimensione dell'immagine sia la stessa della dimensione dell'immagine da Gnuplot. Per visualizzare questa pagina, devi semplicemente inserire l'indirizzo IP del Raspberry Pi seguito da /temperature (o come hai chiamato la tua cartella) Ho diversi sistemi al lavoro che monitorano cose diverse e tutti producono un output grafico dei loro risultati. Quindi ho creato una pagina che ha collegamenti a tutte queste pagine, così non devo preoccuparmi di inserire l'indirizzo ogni volta che voglio accedere a queste pagine.

Passaggio 7: sono vivo…

L'ho usato per monitorare la temperatura in una sala computer, ma potrebbero essere stati praticamente dati provenienti da qualsiasi fonte. Una volta che può essere memorizzato in un file di testo e sai che è il formato, Gnuplot può fare il resto. Una cosa che ho aggiunto di recente a questo progetto è inviare una sorta di email "heartbeat". Questo è il primo del mese alle 9 del mattino. Ho uno script in esecuzione che invia un'e-mail alla mailing list per far loro sapere che il sistema funziona come dovrebbe e tutto va bene nella stanza.

Usando l'elenco cronjob come:

Consigliato: