TecInforme
  • Login
  • Register
  • Notícias
  • Análise
  • Apps
  • Revisões
  • Info
  • Gadgets
  • Games
  • Mais
    • Geek
    • Dinheiro
    • Navegadores
    • Segurança
    • Sistema
    • Ciência
    • Tecnologia
    • Tutorial
No Result
View All Result
TecInforme
  • Notícias
  • Análise
  • Apps
  • Revisões
  • Info
  • Gadgets
  • Games
  • Mais
    • Geek
    • Dinheiro
    • Navegadores
    • Segurança
    • Sistema
    • Ciência
    • Tecnologia
    • Tutorial
No Result
View All Result
TecInforme
No Result
View All Result
Home Info Processadores

Controle seu clima com este tutorial de termostato Raspberry Pi

As casas inteligentes são o futuro, mas o que você faz se tiver um ar-condicionado ou aquecedor antigo em sua casa? Substituir dispositivos antigos nem sempre é viável, mas você pode automatizá-los com um Raspberry Pi.

Marcelino Silva by Marcelino Silva
3 de abril de 2022 - Updated On 21 de abril de 2022
in DEV, Hardware, Tecnologia, Tutorial
Reading Time: 11 mins read
A A
0
https://tecinforme.com.br/envios/speaker/post-14612.mp3?cb=1650581918.mp3

O ar condicionado em muitas casas carece de detalhes modernos, como automação central, termostatos programáveis, vários sensores ou controle de Wi-Fi. Mas a tecnologia de ar condicionado mais antiga ainda é confiável, portanto, em muitos casos, é improvável que seja atualizada em breve.

Isso, no entanto, exige que os usuários interrompam frequentemente o trabalho ou o sono para ligar ou desligar um ar condicionado. Isso é particularmente verdadeiro em casas com layouts apertados, como a minha:

Uma planta baixa com uma unidade de ar condicionado no topo, à direita do centro.  Sua saída tem que arredondar dois cantos para alcançar a maioria dos cômodos, incluindo o quarto no canto inferior esquerdo.
Minha planta pouco ortodoxa torna a refrigeração com uma única unidade de ar condicionado na janela um desafio. Não há linha de visão direta para controle remoto do quarto e nenhum caminho direto para o ar frio chegar a todos os quartos.

As casas dos EUA geralmente têm ar condicionado central, mas esse não é o caso globalmente. Não ter AC central limita as opções de automação, tornando mais difícil atingir a mesma temperatura em toda a casa. Em particular, torna difícil evitar flutuações de temperatura que podem exigir intervenção manual para resolver.

Como engenheiro e entusiasta da Internet das Coisas (IoT) , vi uma oportunidade de fazer algumas coisas úteis de uma só vez:

  • Ajude a economizar energia melhorando a eficiência do meu aparelho de ar condicionado autônomo
  • Torne minha casa mais confortável por meio da automação e da integração com o Google Home
  • Personalize minha solução exatamente do jeito que eu queria, em vez de ficar limitado às opções disponíveis comercialmente
  • Aprimore algumas das minhas habilidades profissionais, usando hardware testado e aprovado

Meu ar condicionado é um aparelho básico com um simples controle remoto infravermelho. Eu estava ciente de dispositivos que permitem que unidades de ar condicionado sejam usadas com sistemas domésticos inteligentes, como Sensibo ou Tado. Em vez disso, adotei uma abordagem DIY e criei um termostato Raspberry Pi, permitindo um controle mais sofisticado com base na entrada do sensor de várias salas.

Hardware do termostato Raspberry Pi

Eu já estava usando vários Raspberry Pi Zero Ws, acoplados a módulos de sensores DHT22 , para monitorar a temperatura e a umidade em diferentes salas. Por causa da planta segmentada, instalei os sensores para monitorar o calor em diferentes partes da minha casa.

Eu também tenho um sistema de vigilância doméstica (não necessário para este projeto) em um PC Windows 10 com WSL 2. Eu queria integrar as leituras do sensor nos vídeos de vigilância, como uma sobreposição de texto no feed de vídeo.

Fiação do sensor

Os sensores eram fáceis de conectar, tendo apenas três conexões:

A primeira conexão é "VCC do sensor para PIN1 - 3v3", a segunda é "DADOS do sensor para PIN7 - GPIO4" e a terceira é "GND do sensor para PIN9 - GND".
Um diagrama de fiação para o módulo DHT22, mostrando os pinos usados ​​para conectá-lo ao Raspberry Pi.

Usei o Raspberry Pi OS Lite, instalando o Python 3 com PiP e a biblioteca Adafruit_DHT para Python ler os dados do sensor. É tecnicamente obsoleto, mas mais simples de instalar e usar. Além disso, requer menos recursos para nosso caso de uso.

Eu também queria ter um log de todas as leituras, então usei um servidor de terceiros, ThingSpeak, para hospedar meus dados e servi-los por meio de chamadas de API. É relativamente simples e, como não precisava de leituras em tempo real, optei por enviar dados a cada cinco minutos.

import requests
import time
import random
import Adafruit_DHT
KEY = 'api key'
def pushData(temp:float, hum:float):
        '''Takes temp and humidity and pushes to ThingsSpeak'''
        url = 'https://api.thingspeak.com/update'
        params = {'api_key': KEY, 'field5': temp, 'field6': hum}
        res = requests.get(url, params=params)
def getData(sensor:int, pin:int):
    '''
    Input DHT sensor type and RPi GPIO pin to collect a sample of data

    Parameters:
    sensor: Either 11 or 22, depending on sensor used (DHT11 or DHT22)
    pin: GPIO pin used (e.g. 4)
    '''
    try:
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        return humidity, temperature
    except:
        Exception("Error reading sensor data")
        return False
if __name__ == "__main__":
    sensor = 22    # Change to 11 if using DHT11
    pin = 4 # I used GPIO pin 4
    while True:
        h, t = getData(sensor, pin)
        pushData(t, h)
        time.sleep(300)

No meu PC de vigilância dedicado, executando o WSL 2, configurei um script PHP que busca os dados do ThingSpeak, os formata e os grava em um .txtarquivo simples. Esse .txtarquivo é necessário para que meu software de vigilância o sobreponha ao fluxo de vídeo.

Como eu já tinha alguma automação na casa, incluindo lâmpadas inteligentes e várias rotinas no Google Home, seguia-se que eu usaria os dados do sensor como um termostato inteligente no Google Home. Meu plano era criar uma rotina do Google Home que ligasse ou desligasse o ar condicionado automaticamente com base na temperatura ambiente, sem a necessidade de entrada do usuário.

Uma fotografia de um dispositivo preto em forma de disco.
A unidade de controle remoto inteligente Wi-Fi PNI SafeHome PT11IR.

Soluções all-in-one mais caras, como as da Sensibo e Tado, exigem menos configuração técnica, mas por uma fração do custo, o PNI SafeHome PT11IR me permitiu usar meu telefone para controlar qualquer número de dispositivos infravermelhos dentro de seu alcance. O aplicativo de controle, Tuya, integra-se ao Google Home.

Como superar problemas de integração do Google Home

Com um ar condicionado habilitado para inteligência e dados do sensor disponíveis, tentei fazer com que o Raspberry fosse reconhecido como um termostato no Google Home, mas sem sucesso. Consegui enviar os dados do sensor para o Google IoT Cloud e seu serviço Pub/Sub, mas não havia como enviá-los para o Google Home para criar uma rotina com base nesses dados.

Depois de refletir sobre isso por alguns dias, pensei em uma nova abordagem. E se eu não precisar enviar os dados para o Google Home? E se eu pudesse verificar os dados localmente e enviar um comando para o Google Home para ligar ou desligar o ar condicionado? Testei comandos de voz com sucesso, então essa abordagem parecia promissora.

Uma pesquisa rápida revelou o Assistant Relay, um sistema com tecnologia Node.js que permite que um usuário envie comandos ao Google Assistant, permitindo que o usuário vincule qualquer coisa ao Google Assistant, desde que saiba o que fazer com a entrada recebida.

Melhor ainda, com o Assistant Relay, eu poderia encerrar comandos para meu Google Assistant simplesmente enviando solicitações POST para o dispositivo que executa o servidor Node.js (neste caso, meu Raspberry Pi Zero W) com alguns parâmetros necessários. É isso. O script está bem documentado, então não entrarei em muitos detalhes aqui.

Como os dados do sensor já estavam sendo lidos no PC de vigilância, imaginei que poderia integrar a solicitação ao script PHP para manter as coisas em um só lugar.

Como você provavelmente não tem o .txtrequisito de arquivo, pode simplificar o processo lendo diretamente os dados do sensor e emitindo comandos com base nesses dados para o serviço Google Assistant, por meio do Assistant Relay. Tudo isso pode ser feito a partir de um único dispositivo Raspberry Pi, sem a necessidade de hardware adicional. No entanto, como já tinha feito metade do trabalho, fazia sentido usar o que tinha. Ambos os scripts neste artigo podem ser usados ​​em uma única máquina; além disso, o script PHP pode ser reescrito em Python, se necessário.

Configurando Condições e Automatizando a Operação

Eu queria que o ciclo automático de energia acontecesse apenas durante a noite, então defini as horas para as quais eu queria automatizar a operação – 22h às 7h – e defini a temperatura preferida. Identificar os intervalos de temperatura corretos – para alcançar uma faixa confortável sem diminuir a vida útil da unidade de ar condicionado desligando sua energia com muita frequência – exigiu algumas tentativas para acertar.

O script PHP que criou a sobreposição de dados do sensor foi configurado para ser executado a cada cinco minutos por meio de um cron job, então as únicas coisas que adicionei a ele foram as condições e a solicitação POST.

No entanto, isso criou um problema. Se as condições fossem atendidas, o script enviaria um comando “ligar” a cada cinco minutos, mesmo que o ar condicionado já estivesse ligado. Isso fez com que a unidade apitasse irritantemente, mesmo no comando “desligar”. Para corrigir isso, eu precisava de uma maneira de ler o status atual da unidade.

A elegância não era uma prioridade, então criei um arquivo JSON contendo um array. Sempre que os comandos “ligar” ou “desligar” fossem concluídos com êxito, o script anexaria o último status a essa matriz. Isso resolveu a redundância; no entanto, dias particularmente quentes ou aquecimento excessivo durante o inverno podem fazer com que as condições sejam atendidas novamente. Decidi que uma substituição manual seria suficiente nessas situações. Deixarei a adição de um retorno antes do trecho de troca para este fim como um exercício para o leitor:

<?php

switch(true)
{
    case $temperature > 27:
        turnAc('on');
        break;
    case $temperature < 24:
        turnAc('off');
        break;
}

function turnAc($status)
{
    $command = 'turn on hallway ac'; // hallway ac is the Google Home device name for my AC
    if ($status == 'off')
    {
        $command = 'turn off hallway ac';
    }

    if ($status == 'on' && checkAc() == 'on')
    {
        return;
    }

    if ($status == 'off' && checkAc() == 'off')
    {
        return;
    }

    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => 'local assistant server ip',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => 'POST',
      CURLOPT_POSTFIELDS =>'{
        "command": '.$command.',
        "converse": false,
        "user": "designated user"
        }',
      CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
      ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    $obj = null;

    try {
        $obj = json_decode($response);
    } catch (Exception $e) {
    }

    if (!$obj || $obj->success != true)
    {
        markAc($status == 'on' ? 'off' : 'on'); // if error, mark it as opposite status
        return;
    }

    markAc($status);
}

function markAc($status)
{
    $file = __DIR__ . "/markAc.json";
    $json = json_decode(file_get_contents($file), true);
    $json[] = array(date('F j, Y H:i:s'), $status);

    $handler = fopen($file, "w") or die("Unable to open file!");
    $txt = json_encode($json);
    fwrite($handler, $txt);
    fclose($handler);
}

function checkAc()
{
    $file = __DIR__ . "/markAc.json";
    $json = json_decode(file_get_contents($file), true);
    $end = array_pop($json);
    return $end[1];
}

Isso funcionou, mas não na primeira tentativa. Eu tive que descobrir as coisas ao longo do caminho e ajustá-las conforme necessário. Espero que, com o benefício da minha experiência, você não precise fazer tanto para acertar na primeira vez.

O valor de um controlador de termostato Raspberry Pi

Fiquei motivado a automatizar meu ar condicionado porque o layout não convencional da minha casa às vezes resultava em temperaturas muito diferentes em diferentes cômodos. Mas automatizar o aquecimento e o resfriamento traz benefícios mesmo para quem não enfrenta esse problema específico.

Pessoas em todo o mundo vivem em vários climas e pagam preços diferentes pela energia (e taxas diferentes em diferentes momentos do dia), portanto, mesmo melhorias modestas na eficiência energética podem fazer a automação valer a pena em determinadas regiões.

Além disso, à medida que mais e mais casas se tornam automatizadas, há motivos para explorar o potencial de automatizar dispositivos e aparelhos mais antigos que consomem energia, como condicionadores de ar, aquecedores elétricos e aquecedores de água. Como esses dispositivos são geralmente volumosos, difíceis de instalar e caros para atualizar, muitas pessoas ficarão presas a eles nos próximos anos. Tornar esses dispositivos “burros” um pouco mais inteligentes pode não apenas melhorar o conforto e a eficiência energética, mas também prolongar sua vida útil.

Continue Reading
Tags: arduinoclimacontroleraspberry pitermostatotutorial
Marcelino Silva

Marcelino Silva

Apaixonado por tecnologia, Linux e tudo que tem botão liga/desliga, ele passou a maior parte do tempo desenvolvendo novas habilidades e aprendendo mais sobre o mundo da tecnologia. Vindo de uma sólida experiência na construção de PCs e desenvolvimento de software, com uma experiência completa em dispositivos baseados em toque, ele está constantemente atento ao que há de mais recente e melhor!

Artigos Relacionados

A agricultura avança em direção a tecnologias de ‘agricultura de precisão’
Sem categoria

A agricultura avança em direção a tecnologias de ‘agricultura de precisão’

17 de maio de 2022
0
O Gigalab 3D  portátil e fora da rede pode transformar lixo em tesouro
Ciência

O Gigalab 3D portátil e fora da rede pode transformar lixo em tesouro

13 de maio de 2022
10
cientistas coração estudos
Ciência

Cientistas constroem ventrículo em chip para estudar doenças cardíacas

10 de maio de 2022
7
trabalho
Empresas

Trabalho remoto 2 anos depois: o que aprendemos

10 de maio de 2022
9
node.js
DEV

Node.JS 18 lançado

10 de maio de 2022
7
jovem choi
Ciência

Jovem do ensino médio cria braço controlado pela mente e barato

6 de maio de 2022
6
0 0 votes
Article Rating
Subscribe
Login
Notify of
Please login to comment
0 Comentários
Inline Feedbacks
View all comments
TecInforme

TecInforme é um portal feito por entusiastas da tecnologia. Nós nos dedicamos a levar o melhor conteúdo do mundo tecnológico até você.

Posts recentes

  • A agricultura avança em direção a tecnologias de ‘agricultura de precisão’
  • 10 melhores aplicativos de monitoramento da condição da bateria para Android e iOS
  • Pleasure oferece uma visão inabalável da indústria de filmes adultos

Categorias

Receba novos posts por e-mail:
  • AdBlock
  • Privacidade
  • Termos

© 2022 TecInforme - Seu Portal de Notícias Tecnológica.

No Result
View All Result
  • Notícias
  • Análise
  • Apps
  • Revisões
  • Info
  • Gadgets
  • Games
  • Mais
    • Geek
    • Dinheiro
    • Navegadores
    • Segurança
    • Sistema
    • Ciência
    • Tecnologia
    • Tutorial

© 2022 TecInforme - Seu Portal de Notícias Tecnológica.

Welcome Back!

Login to your account below

Forgotten Password? Sign Up

Create New Account!

Fill the forms bellow to register

*Ao se registrar em nosso site, você concorda com os Termos e Condições e Privacy Policy.
All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply
Este site usa cookies. Ao continuar a utilizar este website está a consentir a utilização de cookies. Visite nosso Política de Privacidade e Cookies.