Em uma sala de servidores, se os aparelhos de ar condicionado falharem a temperatura ambiente pode chegar fácil aos 70ºC. Isso seria fatal aos componentes dos servidores, principalmente as CPUs, que nessa situação, podem chegar a mais de 120ºC, literalmente 'fritando' os chips. Já tivemos ocorrências em que alguns servidores chegaram a desligar por alta temperatura.
Para contornar essa situação, a primeira coisa que vem à mente é um alarme de temperatura. Sim, essa seria uma boa solução, porém esses alarmes não seriam ouvidos por ninguém, já que as salas de servidores são fechadas. É claro que existem paliativos, como por exemplo uma instalação elétrica que leve o sinal do alarme a um outro local, porém o custo seria proibitivo. Outra solução seria um transmissor de alarme com chip 4G. Se o sinal 4G for confiável dentro da sala, seria uma outra boa opção, mas o custo destes transmissores é também elevado.
Foi pensando em todos estes problemas, que desenvolvemos um sistema de alarme de temperatura com um aparelho microprocessado de 4 dólares, o Raspberry Pi PICO. No post anterior já fizemos uma breve introdução ao mesmo. Porém, nest post trago o projeto completo, inclusive o código fonte.
O código fonte do PICO foi desenvolvido em PyTHON.
O primeiro passo para a programação da placa, foi a instalação da Thonny IDE, que é o ambiente onde desenvolvemos e pelo qual gravamos o código na placa. Para isso, basta fazer o download da IDE na página https://thonny.org/, e então escolha a opção certa para o seu sistema operacional. Para a instalação em computadores Linux não é necessário baixar um arquivo, apenas enviar o comando exibido na janela que é aberta ao colocar o mouse sobre a opção "Linux" pelo terminal de comando. No próprio site do Thonny você pode aprender os primeiros ´passos ´para programação do Raspberry Pi PICO.
Partindo para a solução implantada: Decidimos fazer um projeto em que um dos próprios servidores serviria como ponte entre o sensor de temperatura dentro do PICO e um email. Assim, a cada uma hora o sistema deveria enviar um email a uma lista de destinatários, enviando a temperatura daquele horário. Assim, mesmo que a temperatura não estivesse alta, este email serviria para sabermos que o sistema está em operação. Agora, se a temperatura passar de um limite máximo (estipulamos 32ºC), um email é enviado aos destinatários a cada 5 minutos, até que a temperatura volte ao normal.
Depois de 3 meses da implantação do projeto, todos os envolvidos (IT, manutenção e usduários) reconheceram que o sistema foi de absoluto sucesso, tanto pela sua simplicidade, baixo custo e alta eficiência.
Segue abaixo o código fonte desenvolvido:
import serial
#import datetime
from datetime import datetime
import smtplib
import email.message
import time
i = 0
def SendGmail(DataHora,Temp):
# def enviar_email():
corpo_email = 'Temperatura = ' + str(Temp) + " " + str(DataHora)[0:16]
msg = email.message.Message()
msg['Subject'] = 'Temperatura da Sala de Servidores - NILIT'
msg['From'] = 'datasigmabr@gmail.com'
msg['To'] = 'martigej@gmail.com'
password = '**********'
msg.add_header('Content-Type', 'text/html')
msg.set_payload(corpo_email)
s = smtplib.SMTP('smtp.gmail.com: 587')
s.starttls()
# Login Credentials for sending the mail
s.login(msg['From'], password)
s.sendmail(msg['From'], [msg['To']], msg.as_string().encode('utf-8'))
print('Email enviado')
HoraUltimoEnvio = (datetime.now())
#time.sleep(60)
ser = serial.Serial(port='COM3', baudrate=9600, timeout=1)
n=0
while n == 0:
i = i + 1
y_str = ser.readline()
y = y_str.decode("utf-8")
if(len(y)>0):
z = float(y[0:4])
agora = (datetime.now())
print(agora, " ", z)
print(i)
if(i > 82800):
SendGmail(agora, z)
i = 0
if(z > 32):
if(i > 900):
print("QUENTE!!!")
SendGmail(agora,z)
i = 0
No código pode-se perceber que utilizamos o próprio GMAIL como suporte para o envio dos emails.
Nos próximos posts estarei falando mais do surpreendente Raspberry Pi PICO!