Índice:

Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail: 7 etapas
Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail: 7 etapas

Vídeo: Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail: 7 etapas

Vídeo: Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail: 7 etapas
Vídeo: 15 Sensores Digitais com Raspberry PI (INCRÍVEIS!!!) - Desafio Maker 2024, Junho
Anonim
Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail
Monitoramento de temperatura ambiente controlado do Raspberry Pi com saída de imagem Gnuplot e capacidade de alerta de e-mail

Onde eu trabalho, há uma sala muito importante que abriga muitos computadores. A temperatura ambiente desta sala deve ser muito baixa para otimizar o desempenho desses sistemas. Pediram-me para criar um sistema de monitoramento que tivesse a capacidade de enviar algum tipo de alerta a algumas pessoas que as notificaria de que algo estava errado com o ar condicionado daquela sala. O hardware para esta construção, usei Raspberry pi e um sensor USB de temperatura e umidade. Para monitoramento, usei o Gnuplot para traçar três gráficos de temperatura e criar imagens desses gráficos. Em seguida, criei uma página HTML dedicada que será hospedada no Raspberry pi para que as condições atuais, aquelas imagens de saída do gnuplot, possam ser monitoradas a partir de uma página da web em nossa rede. Para alertar, optei por usar o Gmail. Eu tinha encontrado alguns códigos de exemplo em uma revista Linux User. (Claro que você pode usar qualquer servidor de e-mail, uma vez que saiba as atribuições de porta necessárias.) Para isso, criei uma conta de e-mail do Gmail dedicada para esses alertas. Também como um recurso adicional, quando um alerta é acionado, eu anexei um gráfico ao e-mail para que a pessoa que recebesse o e-mail pudesse ter uma ideia de quão drástico foi o aumento que causou o alerta.

Etapa 1: A configuração do hardware

A configuração do hardware
A configuração do hardware

Não há muito para configurar o hardware. O Raspberry pi está executando Raspian e o sensor de temperatura USB simplesmente se conecta diretamente a uma das portas USB. O consumo de energia desse sensor é mínimo e, como resultado, liguei diretamente do Raspberry pi. No entanto, para dispositivos alimentados por USB com um pouco mais de consumo de energia, eu recomendaria alimentá-los por meio de um hub USB alimentado e não diretamente da porta USB do Raspberry pi. Uma vez que o sensor de temperatura é alimentado, ele fornece uma string serial que contém a temperatura e leituras de umidade das condições atuais. temperatura = 20,9 ° C umidade = 62,7% ponto de orvalho = 13,0 ° CA o script python analisa essa string e armazena os valores de temperatura e umidade em três arquivos de texto a cada cinco minutos; arquivos de texto diários de 24 horas e 48 horas (as diferenças serão discutidas posteriormente na seção HTML). A partir desses arquivos, o Gnuplot irá gerar os gráficos e posteriormente as imagens do conjunto de dados em cada arquivo. Antes de discutir o script python, falarei sobre como preparar o Raspberry pi. Como o monitoramento deve ser feito online, um servidor web precisa ser instalado. Já experimentei alguns deles no Raspberry pi, mas embora seja um pouco grande, prefiro o Apache. Para instalar o Apache no seu Raspberry pi, basta digitar: sudo apt-get install apache2 Ele lhe dará um prompt antes de instalar, pressione "y" para sim e o Apache será instalado alguns minutos dependendo do seu Raspberry pi. Uma vez que estiver pronto, você deve instalar dois plug-ins python: python-serial e o plug python-gnuplot. (Embora eu tenha percebido que versões recentes do Raspian têm o padrão de plug-in python-serial, mas apenas por segurança.) Para instalá-los, digite: sudo apt-get install python-serial python-gnuplotOnce novamente após reconhecer os prompts, estes plugam -ins será instalado. E com isso a configuração do hardware está completa.

Etapa 2: configuração do software - configuração do e-mail e destinatários

crie um endereço de e-mailAntes de entrarmos muito no software agora é um bom momento para criar uma conta do Gmail para enviar seus alertas de e-mail. (Este exemplo usa o GMail, mas qualquer servidor de e-mail pode ser usado uma vez que conheçamos as configurações da porta smtp) O código Python é bastante simples, mas as importações necessárias são críticas. Sem eles nada funcionaria.from time import * import time import serial import smtplib import Gnuplot import os import sysFinalmente, a lista de discussão. Claro que temos que adicionar os destinatários do e-mail. Cada endereço de e-mail é salvo em uma variável.from_address ='[email protected]'to_address1 = 'destinatário1.mail.com' para_address2 = 'destinatário2.mail.com'username =' [email protected] 'senha =' custom_email_password '

Etapa 3: configuração do software - configuração serial e análise

A seguir, verificamos a configuração serial. É apenas uma questão de configurar os parâmetros que correspondem à saída serial do sensor. O sensor emite uma string serial em 9600 8 N 1, que é um formato padrão. Após o recebimento da string, há várias maneiras de analisá-la em python e, possivelmente, de maneira mais confiável. A maneira como faço isso é procurando os caracteres "temporários" na string serial. Uma vez localizado, é simplesmente uma questão de ler os próximos 46 caracteres seriais em uma string. A string coletada agora pode ser endereçada como elementos em uma matriz. Os dados desejados são analisados a partir da string e salvos nos três arquivos junto com seu carimbo de hora correspondente.timestamp = strftime ("% d% b% Y% H:% M:% S", hora local ())

Etapa 4: Configuração do software - Gnuplot

Configuração do software - Gnuplot
Configuração do software - Gnuplot
Configuração do software - Gnuplot
Configuração do software - Gnuplot
Configuração de software - Gnuplot
Configuração de software - Gnuplot

Gnuplot é uma ferramenta gráfica de linha de comando. Uma vez que você tenha descoberto o básico, ele pode ser uma ferramenta muito poderosa para a exibição gráfica de conjuntos de dados. O GNUPLOT pode plotar diretamente de um arquivo de texto formatado e acontece que temos um da etapa de análise anterior. Assim que indicarmos ao gnuplot onde os dados estão localizados no arquivo, podemos plotar os valores desejados. Vou usar o tempo no eixo X e nossa temperatura no eixo Y. Plotar o tempo com a minha experiência é o mais difícil, pois você tem que obter o formato de hora no gnuplot para coincidir com o formato do arquivo de texto. Depois que todas as opções de gráfico estiverem completas e de acordo com sua preferência, o Gnuplot pode criar uma imagem desse gráfico. Esta será a imagem que usaremos em nossa página da Web posteriormente. Optei por uma imagem-p.webp

Etapa 5: Configuração do software - Configuração de limite e envio por e-mail

O limite para o alerta deve ser feito por tentativa e erro para sua configuração. o cômodo que abriga os sistemas não tem janelas, portanto, quando o ar condicionado é desligado, ele pode ficar muito quente e muito rápido. Inicialmente, olhei para o conjunto de dados por alguns dias e observei as variações de temperatura antes de decidir sobre o valor de alerta de 30 graus C. Isso é definido como uma variável no scipt python. Isso pode não parecer muito alto, mas uma vez que o alerta tenha sido acionado, você ainda deseja ter tempo para retificar o problema antes que ele se torne crítico.

Para simplificar, estou enviando e-mails individuais para a lista de mala direta. Como a lista de discussão é curta, nunca me preocupei em enviar um e-mail para vários destinatários. Uma coisa a ser observada aqui: como estou executando este script como um cron job a cada 5 minutos, você não deseja enviar e-mails a cada 5 minutos depois que o limite for acionado. Para contornar isso, escrevo a data e hora do alerta em um arquivo e verifico esse arquivo antes de enviar qualquer e-mail para ver se o sistema já está em estado de alerta. Uma vez em estado de alerta, ele só reenviará um e-mail a cada hora após o primeiro acionador, enquanto o sistema estiver em estado de alerta. Dessa forma, o Gmail não impede que seu e-mail envie muitos e-mails em um curto período de tempo.

Etapa 6: Configuração do software - HTML

O monitoramento de todo o sistema é feito através de uma página web e para isso é necessário um script html muito básico. As imagens que o Gnuplot criou eu simplesmente uso de volta as mesmas dimensões da imagem. Acredito que passei por cerca de 3 tamanhos para essas imagens que deram o melhor ajuste na minha tela. Antes de criarmos o script html, vamos criar uma pasta para ele. Por padrão, a pasta de hospedagem na web está localizada em / var / www /. Embora o único propósito do Raspberry pi 'seja monitorar esta sala e emitir alertas de e-mail, para uma boa manutenção, criei uma pasta separada na pasta / var / www /. Uma vez que esta pasta pertence ao usuário root, você deve usar sudo para criar uma pasta neste local. sudo mkdir / var / www / temperatureNeste exemplo usei a temperatura como o nome da pasta, mas você pode usar qualquer nome aqui, mas lembre-se, pois isso terá que ser inserido na barra de endereço para visualizar esta página. Este caminho é armazenado em uma variável dentro do script python. Mesmo que o local de hospedagem tenha que ser alterado ou o script tenha que ser modificado para outro sistema, ele pode ser apenas alterado a partir deste local. Agora podemos criar nosso script html nesta pasta lembrando de usar sudo na frente de quaisquer comandos que você deseja executar aqui. Eu recomendaria que você nomeasse o script html "index.html", pois isso simplificaria isso ao tentar encontrar esta página. O fundamental é ter certeza de que o tamanho da imagem é igual ao tamanho da imagem do Gnuplot. Para visualizar esta página, você simplesmente tem que inserir o endereço IP do Raspberry Pi seguido por / temperatura (ou o que quer que você nomeie sua pasta). Tenho vários sistemas em funcionamento monitorando coisas diferentes e todos eles produzem alguma saída gráfica de seus resultados. Portanto, criei uma página que contém links para todas essas páginas para que não precise me preocupar em inserir o endereço toda vez que quiser acessar essas páginas.

Etapa 7: I'm Alive…

Eu usei isso para monitorar a temperatura em uma sala de computador, mas podem ter sido dados de qualquer fonte. Uma vez que pode ser armazenado em um arquivo de texto e você conhece seu formato, o Gnuplot pode fazer o resto. Uma coisa que eu adicionei recentemente a este projeto é enviar uma espécie de e-mail de "pulsação". Isso é no primeiro dia do mês, às 9h, eu tenho um script que executa e-mails para a lista de e-mails para que saibam que o sistema está funcionando como deveria e que tudo está bem na sala.

Usando a lista de cronjob como:

Recomendado: