Índice:

ANINHE seu termostato antigo: 4 etapas (com fotos)
ANINHE seu termostato antigo: 4 etapas (com fotos)

Vídeo: ANINHE seu termostato antigo: 4 etapas (com fotos)

Vídeo: ANINHE seu termostato antigo: 4 etapas (com fotos)
Vídeo: Гнездо с Google Home 2024, Novembro
Anonim
Image
Image
Como funciona um termostato
Como funciona um termostato

O sistema de aquecimento da minha casa é provavelmente tão antigo quanto a própria casa. Tem cerca de 30 anos, o que é bom em termos de anos de casa, mas praticamente preso na era do gelo no que diz respeito à tecnologia. Existem 2 problemas principais com soluções comerciais:

  • preços proibitivos
  • produto como serviço

Todos nós nos lembramos do que aconteceu com Revolv e não estou muito interessado em que isso aconteça comigo no meio do inverno. Com isso em mente, apresento-lhe um controlador NEST-Alike de aparência incrivelmente suspeita, mas funcional para seu antigo termostato. Não se preocupe, estou planejando um gabinete muito melhor para ser adicionado em breve!

Recursos:

  • capacidade de usar um termostato existente (no caso de a esposa reclamar)
  • acesso remoto
  • Modo AWAY
  • indicador de temperatura ideal
  • Funciona com Alexa

Em breve (verifique aqui as atualizações)

  • Página inicial do Google
  • calendário do Google
  • Sensores Múltiplos
  • Controles do radiador
  • Integrações IFTT
  • Suporte Tasker
  • Solicitações
  • Um gabinete muito mais bonito

Etapa 1: como funciona um termostato

Como funciona um termostato
Como funciona um termostato
Como funciona um termostato
Como funciona um termostato

O termostato provavelmente está conectado à ALTA TENSÃO! Não tente fazer nada a menos que tenha certeza de que o circuito está desligado. Você pode se machucar e causar danos ao equipamento conectado. Considere consultar um eletricista qualificado para garantir sua segurança

O termostato Honeywell é uma unidade montada na parede, alimentada pela rede elétrica (o básico do Sonoff precisa de 90 V, meu circuito tem 230 V). A caixa é conectada à unidade de controle principal (que é uma caixa mais avançada) e envia o sinal quando a temperatura cai abaixo do nível desejado. Embora sua unidade possa ser diferente, o princípio provavelmente é o mesmo. Se você tiver 3 fios e nenhuma conexão de rádio entre a unidade montada na parede - este é o tutorial para você.

Eu sei como os termostatos de 3 fios funcionam em um princípio, o que não me impediu de queimar um fusível por curto-circuito em 2 fios por acidente! Tenho 3 fios conectados à unidade (sendo o 4º o terra). Meu termostato Honeywell não é sem fio, então, para mudar o sinal, posso usar o Sonoff Basic. É hora de desmontá-lo e ver como o sinal é enviado para a unidade. Após uma inspeção mais detalhada, o terminal é conectado da seguinte maneira:

  1. (azul) - Terrestre
  2. (amarelo) - sinal, quando puxado para cima o aquecimento está ligado
  3. fora de uso
  4. (vermelho) - o fio energizado usado para puxar o sinal alto

Para atingir meu objetivo, tenho que colocar o fio energizado em curto com o fio de sinal quando quiser que o aquecimento seja ligado. Se você tiver um termostato conectado de forma semelhante, você está com sorte, pois o Sonoff Basic será suficiente para fazer o truque.

Etapa 2: Preparando o Sonoff Basic

Preparando o Sonoff Basic
Preparando o Sonoff Basic
Preparando o Sonoff Basic
Preparando o Sonoff Basic
Preparando o Sonoff Basic
Preparando o Sonoff Basic

Antes de começarmos a conectar os fios, temos que adicionar um sensor de temperatura (DHT11) à mistura. Certifique-se de ter o firmware Tasmota atualizado para seu dispositivo Sonoff (eu tenho um excelente guia de atualização aqui) e seu Sonoff habilitado para Tasmota está configurado corretamente (também já abordado por mim). Agora, tudo o que resta é conectar o sensor DHT11 ao Sonoff e configurá-lo para relatórios de temperatura.

O DHT11 vem com 3 pinos conectados: Sinal - GPIO14Vcc - 3.3VGND - GND

Eu abri um buraco, não estou incomodado com a aparência agora, tudo que preciso é a prova de conceito e a validação. Farei uma caixa bonita e brilhante assim que minha impressora 3D chegar. Prestei atenção extra em como faço a fiação do Sonoff, pois preciso ter certeza de que o fio ativo se conecta ao fio de sinal na outra extremidade do dispositivo Sonoff. A unidade Honeywell tem o resistor de carga (R) embutido que limita a corrente. Embora o circuito seja protegido pelo fusível 3A, é inteligente combinar a mesma resistência para proteção extra. Depois de preparar os fios, era hora de desligar a alimentação principal e conectar o Sonoff de volta.

Sonoff Tasmota - termostato Honeywell

INPUT Live - 4º terminal Live

INPUT GND - 1º terminal GND

Sinal de SAÍDA - Sinal do 2º terminal

Eu mencionei antes, por enquanto, não vou me estressar com a aparência disso. A esposa foi convencida e posso me concentrar na funcionalidade e na eliminação de quaisquer bugs que possam acontecer. O bom é que o termostato original ainda está funcionando. Se eu aumentar, ele substituirá o baseado em Sonoff Tasmota. Este deve ser um ótimo backup para quaisquer eventos inesperados.

Etapa 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Observe que o vídeo pode conter referências NodeRed mais antigas, estou constantemente trabalhando para melhorar o design. Estas são pequenas alterações e os arquivos do artigo são mantidos atualizados

Eu encontrei este design online. Parece ótimo, no entanto, após uma inspeção cuidadosa, o widget não é realmente adequado para NodeRED. Ele precisa de 5 cargas úteis para ser definido, o que não é como o design semelhante a nós funciona. Levei algum tempo para descobrir a melhor maneira de passar todas essas informações para atualizar o widget e mantê-lo funcional. Tenho certeza de que com o tempo passarei mais tempo no design para que possa enviar todas as atualizações necessárias com um único objeto msg. Por enquanto, é o que é.

Fluxo de temperatura

O DHT11 reporta a cada X segundos de volta ao servidor NodeRED. Aumentei essa frequência através do console do Tasmota. Basta executar o comando para definir a frequência em segundos:

TelePeriod Definir período de telemetria entre 10 e 3600 segundos

Isso é feito principalmente para testes, já que não quero esperar minutos para ver se minhas correções de bug funcionaram. Manter a frequência alta fará com que o aquecimento seja acionado com mais frequência por períodos mais curtos de tempo, portanto, evite configurá-lo para 10 segundos para fins que não sejam de teste. O nó MQTT extrai os dados de:

sonoff / tele / SENSOR

e mantém os dados mais úteis nos seguintes objetos:

msg.payload. DHT11. Temperature msg.payload. DHT11. Humidity

Para limitar os erros, adicionei o nó suave para calcular a média dos resultados e atualizei a variável de fluxo: NodeRED:

Nó de função - Atualizar o 'TempAmbient'

flow.set ('TempAmbient', msg.payload. DHT11. Temperature); return msg;

Atualização de widget

Decidi que 5 segundos é uma boa taxa de atualização, portanto, estou empurrando todos os valores necessários com esta frequência. A única exceção é o controle deslizante, que por motivos óbvios responde instantaneamente.

Cada nó correspondente envia a carga útil com o tópico atribuído ao widget semelhante ao ninho.

  • cor (aquecimento | resfriamento * | desligado e hvac_state)
  • folha (true | false & has_leaf)
  • ausente (verdadeiro | falso e ausente)
  • Temperatura ambiente (número e temperatura_ambiente)
  • Temperatura alvo (número e temperatura_alvo)

*fora de uso

NodeRED: Nó de Função - Atualização de Widget

cor

x = flow.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); //ambiente

if (z = x) {

flow.set ('heatState', "desligado"); flow.set ('heatSwitch', "OFF"); } msg.payload = z; msg.topic = "temperatura_ambiente"; return msg;

Folha

x = flow.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('folha', verdadeiro); msg.payload = true; msg.topic = "has_leaf"; return msg; } else {flow.set ('folha', falso); msg.payload = false; msg.topic = "has_leaf"; return msg; }

Substituição de cor

x = flow.get ('ausente'); if (x === true) {msg.topic = "hvac_state"; msg.payload = "desligado"; return msg; }

msg.topic = "hvac_state";

msg.payload = flow.get ('heatState');

return msg;

Longe

x = flow.get ('ausente'); if (x === true) {flow.set ('heatingSwitch', "OFF"); flow.set ('heatState', "desligado"); }

msg.topic = "ausente";

msg.payload = flow.get ('ausente'); return msg;

Temp alvo

if (msg.topic === "update") {msg.topic = "target_temperature"; msg.payload = flow.get ('TempTarget'); return msg; }

if (msg.command === "SetTargetTemperatureRequest") {

flow.set ('ausente', falso); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }

if (msg.topic === "slider") {

flow.set ('ausente', falso); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }

if (msg.command === "GetTemperatureReadingRequest") {}

return msg;

Como você pode ver, optei por não usar as variáveis de fluxo, para que pudesse me lembrar do valor a qualquer momento. Eu tenho um fluxo de depuração que basicamente lê todos os valores armazenados.

  • ‘TempAmbinet’ - armazena a temperatura atual
  • ‘TempTarget’ - mantém o valor da meta de temperatura
  • ‘Folha’ - exibe folha se necessário
  • 'Ausente' - exibe o status ausente, se necessário
  • ‘HeatState’ - muda a cor da tela
  • ‘HeatSwitch’ - controla o estado do relé.

O desafio era realmente ter certeza de que as informações são atualizadas na “atualização” e quando solicitadas por outros meios (Alexa, etc). É por isso que você verá condições diferentes no JavaScript. Cada vez que os valores são atualizados, são enviados para a variável de fluxo e o widget é atualizado.

Slider

O teste revelou que uma atualização adicional do controle deslizante (o controle deslizante empurra a temperatura desejada) é necessária. O controle deslizante envia a carga útil (número) com o tópico associado controle deslizante) quando é movido. Além disso, quero que o controle deslizante fique na posição correta se várias interfaces da web estiverem instaladas. Para fazer isso, a cada 5 segundos, simplesmente atualizo a posição do controle deslizante para a temperatura desejada atual.

NodeRED: Nó de Função - Atualizar controle deslizante '

msg.payload = flow.get ('TempTarget'); mensagem de retorno;

Controle de relé

O controlador de relé é simples, leva (por enquanto) duas entradas. Alexa é verdadeiro | falso e a interação que segue uma atualização para a variável de fluxo "Chave de aquecimento". Não há necessidade de uma ação instantânea, portanto, pela simplicidade, ele é executado na mesma frequência de atualização de 5 segundos que o resto do fluxo.

O relé é conectado via MQTT. O Node está postando comandos ON | OFF no tópico:

sonoff / cmnd / POWER1

O nó de função aceita o verdadeiro | falso de Alexa e também altera o estado da entrada de acordo com a variável de fluxo ‘heatingSwitch’.

NodeRED: Nó de Função - Relé de Controle '

if (msg.command === "TurnOffRequest") {msg.payload = "OFF"; return msg; }

if (msg.command === "TurnOnRequest") {

msg.payload = "ON"; flow.set ('TempTarget', 21); return msg; } if (msg.topic === "update") {msg.payload = flow.get ('heatingSwitch'); } return msg;

Integração Alexa

Este é o primeiro dispositivo que tive que desligar o “reconhecimento automático”. Em vez de assumir automaticamente uma resposta, gerei uma, pois desejo a capacidade de consultar a temperatura definida. Em princípio, msg.payload = true | false indica se a solicitação foi bem-sucedida e os modelos encontrados aqui fazem o resto. Se você é novo no Alexa e no NodeRed, certifique-se de ler isto.

Resolvi passar os agradecimentos em separado (sei que não é a melhor forma) para poder controlar tudo um pouco melhor. Cada resposta deve ser dada corretamente no final da cadeia de comando. O meu é arriscar não retornar erros, caso isso aconteça. Observe que, para ser consistente, eu apenas atualizo as variáveis, enquanto o loop de atualização envia os novos valores para o widget.

NodeRED: Nó de função - Respostas do processo Alexa '

// Qual é a temperatura desejada do termostatoif (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"value": x}, "applianceResponseTimestamp": new Date (). toISOString ()}; msg.payload = true; return msg; } // Defina a temperatura para (não inferior a 10 ou superior a 30) if (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = false; msg.extra = intervalo; } else {msg.extra = {targetTemperature: {value: msg.payload}}; msg.payload = true; } return msg; } // Ativar if (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ('ausente', falso); flow.set ('TempTarget', 21); return msg; } // Desativa if (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ('ausente', verdadeiro); return msg;

Etapa 4: Conclusão

Conclusão
Conclusão

Se você expor o painel do NodeRED à WAN, todo o sistema de aquecimento pode ser controlado remotamente. Recomendo que você leia os artigos a seguir para se familiarizar com a segurança do NodeRED e do NodeRED.

  • NodeRED para iniciantes
  • Segurança NodeRED

Além disso, se você deseja se informar sobre as atualizações deste projeto - considere me seguir na plataforma de sua escolha:

  • Instagram
  • Youtube

E se você tiver vontade de me comprar um café ou me apoiar de uma forma mais contínua:

  • Paypal
  • Patreon

Espero que tenham gostado do projeto!

Recomendado: