Índice:

Umidade na nuvem: 5 etapas
Umidade na nuvem: 5 etapas

Vídeo: Umidade na nuvem: 5 etapas

Vídeo: Umidade na nuvem: 5 etapas
Vídeo: Возведение перегородок санузла из блоков. Все этапы. #4 2024, Novembro
Anonim
Umidade na nuvem
Umidade na nuvem

O verão está chegando, e quem não tem ar-condicionado deve estar preparado para controlar a atmosfera dentro de casa manualmente. Neste post, estou descrevendo a forma moderna de medir os parâmetros mais importantes para o conforto humano: temperatura e umidade. Esses dados coletados são enviados para a nuvem e processados lá.

Suprimentos

Estou usando uma placa Raspberry Pi e o sensor DHT22. Você pode fazer o mesmo em qualquer computador que tenha Internet, GPIO e Python. O sensor DHT11 mais barato também funciona bem.

Etapa 1: Preparando o Hardware

Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware

Vamos começar do início, já que eu não usei meu Raspberry Pi por um longo tempo.

Nós vamos precisar:

  • Placa Raspberry Pi (ou outra plataforma orientada para IoT).
  • Cartão SD ou microSD (dependendo da plataforma).
  • 5V / 1A via cabo micro-USB. LAN, que fornece conexão com a Internet.
  • Monitor HDMI, monitor RCA ou porta UART (para habilitar SSH).

O primeiro passo é baixar o Raspbian. Eu escolhi a versão Lite, pois vou usar SSH em vez de display.

As coisas mudaram desde a última vez que fiz: agora existe um ótimo software de gravação chamado Etcher, que funciona perfeitamente e tem um design deslumbrante.

Depois que a gravação da imagem foi concluída, inseri o cartão SD no meu Pi, conectei os cabos LAN e de alimentação e, depois de um tempo, meu roteador registrou o novo dispositivo.

Excelente! Vamos continuar e SSH para isso.

Segurança está bem, eu gosto, mas isso torna as coisas um pouco mais difíceis. Vou usar o adaptador UART-USB para acessar o shell e habilitar o SSH …

Usar um display em vez do UART torna isso muito mais fácil.

Depois de reiniciar, finalmente estou dentro.

Comecemos pelo princípio, vamos atualizar:

sudo apt update && sudo apt upgrade -y

Agora vamos conectar este novo dispositivo à nuvem.

Etapa 2: Instalando Cloud4RPi

Instalando Cloud4RPi
Instalando Cloud4RPi

Decidi experimentar a plataforma de nuvem chamada Cloud4RPi, que é projetada para IoT.

De acordo com a documentação, precisamos dos seguintes pacotes para fazê-lo funcionar:

sudo apt install git python3 python3-pip -y

A biblioteca cliente pode ser instalada em um único comando:

sudo pip3 install cloud4rpi

Agora precisamos de algum código de amostra.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python

O script executável é control.py.

Precisamos de um token, que permite ao Cloud4RPi vincular os dispositivos às contas. Para obter um, crie uma conta em cloud4rpi.io e clique no botão Novo dispositivo nesta página. Substitua a string _YOUR_DEVICE_TOKEN_ no arquivo control.py pelo token do seu dispositivo e salve o arquivo. Agora estamos prontos para o primeiro lançamento.

sudo python3 control.py

Abra a página do dispositivo e verifique se os dados estão lá.

Agora vamos passar para os dados do mundo real.

Etapa 3: Conectando o Sensor

Conectando o Sensor
Conectando o Sensor

Nós vamos precisar:

  • Sensor de umidade DHT22 ou DHT11
  • Resistência de pull-up (5-10 KΩ)
  • WiresThe

O sensor DHT22 mede temperatura e umidade simultaneamente. O protocolo de comunicação não é padronizado, então não precisamos habilitá-lo no raspi-config - um simples pino GPIO é mais do que suficiente.

Para adquirir os dados, usarei a ótima biblioteca da Adafruit para sensores DHT, mas pode não funcionar como está. Certa vez, encontrei um estranho atraso constante no código, que não funcionava para o meu hardware e, depois de dois anos, minha solicitação de pull ainda estava pendente. Também mudei as constantes de detecção de placa porque meu Raspberry Pi 1 com BCM2835 foi surpreendentemente detectado como Raspberry Pi 3. Gostaria que fosse verdade … Portanto, recomendo usar meu garfo. Se você tiver algum problema com ele, tente o repositório original, talvez funcione para alguém, mas eu não sou um deles.

git clone https://github.com/Himura2la/Adafruit_Python_DHT.gitcd Adafruit_Python_DHT

Como a biblioteca é escrita em C, ela requer compilação, então você precisa dos pacotes build-essential e python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Enquanto os pacotes estão sendo instalados, conecte o DHT22 conforme mostrado na imagem.

E teste:

cd ~ python -c "importar Adafruit_DHT como d; imprimir d.read_retry (d. DHT22, 4)"

Se você vir algo como (39.20000076293945, 22.600000381469727), você deve saber que esta é a umidade em porcentagens e a temperatura em Celsius.

Agora, vamos montar tudo!

Etapa 4: envio de leituras de sensor para a nuvem

Envio de leituras de sensor para nuvem
Envio de leituras de sensor para nuvem
Envio de leituras de sensor para nuvem
Envio de leituras de sensor para nuvem

Vou usar o control.py como base e adicionar a interação DHT22 nele.

cp cloud4rpi-raspberrypi-python / control.py./cloud_dht22.pycp cloud4rpi-raspberrypi-python / rpi.py./rpi.pyvi cloud_dht22.py

Remova o código de amostra como na imagem acima.

Como o DHT22 retorna temperatura e umidade em uma única chamada, irei armazená-los globalmente e atualizar apenas uma vez em uma solicitação, supondo que o atraso entre eles seja de mais de 10 segundos. Considere o seguinte código, que adquire os dados DHT22:

importar Adafruit_DHT

temp, hum = Nenhum, Nenhum

last_update = time.time () - 20

def update_data ():

last_update, hum, temp global if time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time ()

def get_t ():

update_data () return round (temp, 2) se temp não for None else None def get_h (): update_data () return round (hum, 2) se hum não for None else None

Insira este código após as importações existentes e edite a seção de variáveis para que ela use as novas funções:

variáveis = {'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'tipo': 'numérico', 'vincular': cpu_temp}}

Se você achar que as manipulações são confusas, pegue a versão final deste arquivo. Pressione o botão vermelho para iniciar a transferência de dados:

Então você pode verificar a página do dispositivo.

python3 cloud_dht22.py

Então você pode verificar a página do dispositivo.

Pode deixar como está, mas prefiro ter um serviço para tudo. Isso garante que o script esteja sempre em execução. Criar um serviço com o script totalmente automatizado que você já possui no diretório cloud4rpi-raspberrypi-python:

service_install.sh cloud_dht22.py

Iniciando o serviço:

sudo service cloud4rpi start

E verificando:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l ● cloud4rpi.service - Cloud4RPi daemon Carregado: carregado (/lib/systemd/system/cloud4rpi.service; habilitado) Ativo: ativo (em execução) desde Quarta-feira 5-17 20: 22: 48 UTC; 1min atrás PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py

17 de maio 20:22:51 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]}

17 de maio 20:22:53 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 de maio 20: 22:53 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Se tudo funcionar como esperado, podemos continuar e usar os recursos da plataforma Cloud4RPi para manipular os dados.

Etapa 5: gráficos e alarmes

Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes

Em primeiro lugar, vamos representar graficamente as variáveis para ver como elas mudam. Isso pode ser feito adicionando um novo painel de controle e colocando nele os gráficos necessários.

Outra coisa que podemos fazer aqui é definir um Alerta. Este recurso permite que você configure o intervalo seguro para uma variável. Assim que o intervalo é ultrapassado, ele envia uma notificação por e-mail. Na página de edição do Painel de controle, você pode alternar para Alertas e configurar um.

Em seguida, a umidade do meu quarto começou a diminuir rapidamente sem nenhum motivo perceptível, e o alarme logo seguiu.

Você pode usar o Cloud4RPi gratuitamente com qualquer hardware capaz de executar Python. Quanto a mim, agora sempre sei quando devo ligar o umidificador de ar, e posso até conectá-lo a um relé para controle remoto via Cloud4RPi. Estou preparado para o calor! Bem-vindo verão!

Com o Cloud4RPi, você pode controlar seu Raspberry Pi e outros dispositivos IoT remotamente em tempo real. Visite nosso site e conecte dispositivos ilimitados gratuitamente.

Recomendado: