Monitorando a operação de sistemas residenciais suburbanos: os primeiros passos para uma casa inteligente


O artigo anterior causou uma discussão bastante acalorada, e essa circunstância me convenceu da necessidade de continuar o que chamamos de "compartilhar experiência". Então, decidimos que, após o surgimento de fontes alternativas de energia na casa, principalmente o coletor solar, eu queria medir os parâmetros que acompanham seu trabalho. Por exemplo, para ver como a temperatura do líquido de arrefecimento solar muda, a água na caldeira superaquece, etc. É claro que a medição de algo em si mesma e até a transmissão dessas informações para o local de consumo (telemetria) não aumentam o conforto ou a segurança; portanto, imediatamente um item no controle remoto de vários atuadores foi adicionado ao "TK". Neste artigo, não darei listagens de código, detalhe todas as soluções técnicas nos mínimos detalhes. Meu objetivo é mostrar a linha de pensamento e as soluções técnicas adotadas, bem como o resultado delas. Quem quiser seguir um caminho semelhante ainda terá que resolver muitos problemas por conta própria.


Uma ligeira digressão lírica.

Em 2010, junto com um inversor / baterias, um sistema universal de alarme-controlador GSM da empresa russa RADS Electronics apareceu em casa. Este maravilhoso dispositivo universal foi usado além das funções de alarme com alertas GSM, também para controlar a luz na sala de estar e, o mais importante, para controlar a caldeira elétrica. Aprendi a controlar a temperatura, manter a temperatura e também aquecer a casa com antecedência, antes da chegada, há muito tempo. A conveniência de tais sistemas é bastante óbvia. No entanto, as capacidades do controlador são limitadas, de modo que o novo "TK" lançou as bases para a criação de um sistema paralelo, mesmo com funções parcialmente repetidas e, é claro, com acesso a informações de sensores e controle via Internet.


Portanto, os requisitos iniciais surgiram:


  1. Meça a temperatura nos 8 bicos da caldeira e nos 2 bicos da caldeira.
  2. Meça a temperatura e a umidade na sala da caldeira onde o equipamento está montado.
  3. Meça a temperatura e a umidade do ar externo. Um dia implementar o controle de aquecimento dependente do clima.
  4. Dirija uma caldeira elétrica enquanto mantém o sistema antigo. A caldeira é de três estágios, com ajuste da temperatura de aquecimento e feedback sobre a temperatura do líquido de refrigeração. No entanto, para fins de controle remoto, é suficiente ativar / desativar as etapas de aquecimento.
  5. Gerencie o aquecedor da caldeira.
  6. Coloque um mínimo de fios. Nem tanto para não incomodar, mas porque a decoração da casa já foi feita.
  7. Tenha uma interface conveniente para gerenciar e trabalhar com as leituras dos sensores. A interface deve estar acessível em dispositivos móveis.

E mais uma pequena digressão.

Na foto - um gerador com acionador de partida elétrico. Para iniciar o inverno, tive que colocar uma bateria e um carregador de carro. E use óleo sintético.


No mesmo ano de 2010, um gerador de gasolina instalou-se na garagem. E logo um controlador de partida automático foi adicionado, feito de forma independente com base no microcontrolador Arduino. O controlador observa não apenas a presença de uma rede de 220V, mas também o sinal do inversor sobre a descarga das baterias, e o próprio inversor fornece entrada automática do gerador. No total, foi possível implementar um algoritmo de controle do gerador bastante inteligente. Em geral, não havia medo de usar microcontroladores, tanto no sentido de conectar periféricos quanto no de programação. No passado, eu programava muito em C / C ++.


Os requisitos são, em geral, simples, se não triviais. Existem milhares de maneiras diferentes de implementá-las. E é por isso que a pedra angular é a escolha da arquitetura e a pilha tecnológica na qual o novo sistema será construído. A abordagem sistemática é exatamente o que é importante aqui, o entendimento de que soluções técnicas individuais devem estar ligadas entre si, o entendimento de que o sistema certamente se expandirá ainda mais, como já aconteceu com o sistema de fornecimento de energia em casa. E também é importante entender seus próprios recursos. Portanto, tive que procurar no Google, "ajudar a platéia" e "ligar para um amigo".


Na foto Arduino Nano e nRF24L01 + com antena
Comecei a procurar em sistemas baseados no padrão Z-Wave amplamente utilizado, isso influenciou bastante outras decisões, embora o Z-Wave tenha sido descartado no início. Como o Z-Wave é uma escolha óbvia para requisitos próximos aos meus, é importante entender por que ele foi descartado. Primeiro, é claro, o custo de um sensor. E eu só preciso medir a temperatura em uma caldeira em 8 pontos, cada ponto resulta em mais de 3000 rublos. Em segundo lugar, o fator de forma dos sensores padrão, que não permite seu uso em bicos de caldeiras. Terceiro, a escolha limitada de sistemas de controle e acesso remoto, que também são todos proprietários (você deve ler: “limitado”) e pago. No entanto, a própria idéia de uma rede auto-organizada com a possibilidade de comunicações ponto a ponto (associações) de um atuador sensor e um gerenciamento servidor-cliente centralizado é muito atraente. A conselho de um amigo, ele iniciou um projeto interessante , que inicialmente parecia uma extensão da funcionalidade dos sistemas Z-Wave baseados em controladores Vera, mas usando a abordagem DIY. O projeto usou transceptores sem fio Arduino, 2.4GHz nRF24L01 + e a biblioteca correspondente. Tudo junto é exatamente o que é necessário para minhas necessidades. O uso do Arduino abre possibilidades quase ilimitadas de automação residencial por dinheiro, uma ordem de magnitude (!) Menor que no caso do Z-Wave. Também é importante que o Arduino seja uma plataforma excepcionalmente estável. O controlador de partida automática do gerador, uma vez montado no Arduino, trabalha sem problemas há 7 anos. Dada a experiência de desenvolvimento, solda e programação, parei neste projeto.


E até continuou. No código, eu me recusei completamente a vincular a Vera. Em vez disso, ele escolheu um dos controladores de software recomendados pelo autor da biblioteca de mysensors. Depois de estudar os fóruns e sites de fabricantes, ele se tornou o projeto de código aberto openHAB . O fator decisivo, além de abertura, plataforma cruzada e poderosa linguagem de regras, presença de clientes móveis, foi a seguinte propriedade declarada: “um fornecedor e um agnóstico em tecnologia”. É exatamente disso que um especialista em TI com espírito de sistema precisa: a possibilidade de expandir o sistema no futuro, usando componentes de diferentes fabricantes e padrões, enquanto é mais adequado para fins específicos. I.e. Desde o início, houve um entendimento de que nem tudo precisa ser feito no Arduino e nem tudo é possível dentro dos limites do Z-Wave. Ao mesmo tempo, decidi aderir a uma lógica de gerenciamento centralizada, que, para começar, é bastante natural. I.e. nos dispositivos terminais montados no Arduino, haverá uma lógica de negócios mínima: ligar / desligar a luz de interruptores mecânicos convencionais antigos que simplesmente se tornam sensores, ler e converter informações de sensores de parâmetros físicos, transmitir dados ao servidor, receber e executar comandos do servidor. Não planejo nenhuma interação direta entre os nós da rede do dispositivo. Toda lógica real de gerenciamento de negócios é baseada em regras do openHAB. Agora, existem poucas coisas: escolha a plataforma de hardware e o sistema operacional para a parte do servidor, para o openHAB.


Muitos entusiastas de bricolage no openHAB escolhem o Raspberry Pi. E esta é uma ótima solução, econômica, compacta e silenciosa. No entanto, pareceu-me errado limitar-me ao poder de processamento, porque decidi imediatamente usar o futuro servidor como um dispositivo multifuncional, por exemplo, queria implantar o media center Kodi nele e, possivelmente, no futuro, algo mais, por exemplo, um gravador de vídeo de software. Olhando para o futuro, direi que, no final, o Kodi está integrado a uma casa inteligente, quando o vídeo começa, a luz apaga, quando para e acende. E o DVR também apareceu e também está integrado. Ao mesmo tempo, não tenho requisitos especiais para componentes de multimídia, basta que o servidor possua HDMI e S / PDIF. Em geral, no outono de 2015, a escolha caiu em um nettop sem ventilador da Hystou (veja no AliExpress): Intel Core i7, 8GB, SSD de 256GB, 8 portas USB, incluindo 4 3.0, 2 LAN, WiFi, 2 HDMI, S / PDIF, Leitor de cartões em geral, tudo o que você precisa para a felicidade de uma caixa de bricolage. Ele então custou cerca de 24 tr. Nunca me arrependi da escolha, embora deva dizer que o WiFi não é muito estável para ele. Mas, a experiência que se seguiu a tudo isso diz com segurança: onde quer que você possa colocar fios - coloque fios. Um canal de rádio, independentemente do padrão e da frequência (WiFi, Z-Wave, 433 MHz, 869 MHz, 2,4 GHz, etc.) é sempre pior que um fio. Portanto, o nettop está finalmente conectado ao fio da LAN doméstica. E vários outros sistemas diferentes se estabeleceram nele.
Quanto ao sistema operacional do servidor, eu recomendaria estabilidade e previsibilidade. As distribuições Linux com uma grande comunidade possuem essa propriedade. Eu estou mais familiarizado com o Ubuntu. Embora, graças à plataforma cruzada, tudo possa ser feito no Windows.


Então, arquitetura e pilha são selecionadas. Nós estamos agindo.


Tarefa 1. Selecione sensores e atuadores. A temperatura do líquido de arrefecimento e da água será medida nos bicos da caldeira e da caldeira. Para isso, utilizamos sensores DS18B20 de 1 fio em um invólucro vedado com metal, eles são convenientemente montados diretamente nos bicos, pelo lado de fora. E os próprios tubos com sensores na parte superior são cobertos com isolamento de espuma para tubos. Quando existem muitos sensores semelhantes, o barramento de 1 fio é muito conveniente. Para medir a temperatura e a umidade do ar na caldeira e na rua, escolhemos o DHT22, simplesmente porque essa é uma opção padrão de bricolage. Gerencie a caldeira separadamente por etapas - usando relés mecânicos convencionais de cinco volts, também familiares aos quadros de distribuição de bricolage. É importante observar que esses relés são conectados em paralelo com os interruptores de estágio da caldeira, e não os relés TEN, que são controlados pela automação da caldeira. Todos os periféricos selecionados são programados sem arte diretamente, como um relé, por exemplo, ou possuem as bibliotecas apropriadas para o Arduino, como 1-wire / DS18B20 / DHT22. Sem complicações.


Na foto, uma caldeira de 300l. Pode-se observar que um fio preto com um sensor na extremidade se aproxima de cada tubo de derivação, eles são combinados em uma caixa branca e um fio branco comum de 1 fio vai para o controlador.


Tarefa 2. Troque dados e comandos com o openHAB. Eu tive que mexer um pouco, porque com o openHAB eu ainda não estava “contigo”. A arquitetura dos mysensors implica a presença de um gateway (gateway) para conectar-se ao controlador / servidor central, ou seja, para abrir o HAB. O gateway em si é um controlador fisicamente separado no Arduino / nRF24L01 + e pode ser conectado ao servidor via LAN / WiFi ou Serial. Como estou no início do caminho, seleciono Serial e coloco o gateway ao lado do servidor. O gateway é usado para rotear as mensagens enviadas para a rede de mysensors através do gateway e se comunicar diretamente com o controlador central, o openHAB. As mensagens de Mysensors são de formato fixo e fáceis de analisar. Adicionamos ao Serial de ligação do openHAB para conectar o gateway via USB e escrevemos uma regra para analisar mensagens de dispositivos na rede de mysensors recebidos via USB do gateway. A regra do openHAB que analisa mensagens é baseada no código encontrado no fórum de mysensors. Em seguida, escrevemos as regras para os atuadores - relé de controle da caldeira, aquecedor da caldeira, luz etc.


A foto mostra um gateway, uma pequena caixa marrom com uma antena em um alto-falante.


Sobre o openHAB

openHAB - uma solução aberta, expandida com a ajuda da comunidade, desenvolvendo ligações para dispositivos específicos com os quais o openHAB irá interagir. Por exemplo, para interagir com dispositivos via USB, existe um Serial de ligação. Da mesma forma para outros dispositivos ou protocolos, por exemplo, Modbus, NTP, HTTP, Squeezebox, Kodi / XBMC, Z-Wave, ZigBee, Nest e assim por diante. Eu próprio participei do desenvolvimento como um testador de ligação Modbus ativo.


Enquanto eu estava ocupado conectando o gateway ao servidor openHAB, decidi finalizar o código do gateway (e o próprio gateway), retirado do mysensors.org e adicionar o sensor de temperatura e umidade DHT22 e o sensor de pressão atmosférica BMP180 a ele, e ao mesmo tempo encontrei o código fonte para previsão do tempo da dinâmica atmosférica pressão. Todas essas medições e previsões são transmitidas para o openHAB.
Na foto, o gateway está dentro. No fio branco é DHT22, a placa com pinos livres é Arduino, o canto inferior direito é nRF24L01 + e BMP180.


Tarefa 3. Interface e acesso remoto. O openHAB é um sistema totalmente personalizável, incluindo o layout da interface. E essa marcação é unificada, tanto para acesso comum por meio de um navegador quanto por um aplicativo móvel. A marcação universal, é claro, pode não ser o ideal, mas fica bem em um smartphone, e isso é importante. Resta decidir como acessar o servidor openHAB fora da rede local. Primeiro, você pode (e mais importante, opcionalmente) usar a nuvem myopenhab.org. O servidor openHAB se conecta diretamente à nuvem usando ligação especial. Esta solução é a mais simples e fornece funcionalidade completa de gerenciamento do sistema, exceto para a transferência de vídeo de câmeras IP. Em segundo lugar, para quem não gosta das nuvens e eu pertenço a elas, existem os meios usuais de acesso remoto, por exemplo, uma combinação de VPN + VNC, etc. Não divulgarei detalhes por motivos óbvios, principalmente porque esse problema não se relaciona diretamente ao tópico do artigo. Observo apenas que o cliente móvel do openHAB possui uma configuração para dois endereços. Passa para o primeiro, se ele vê um servidor openHAB neste endereço, para o segundo - se não vê. Este é um recurso muito conveniente da interface. Por exemplo, você pode especificar a nuvem como o segundo endereço e o openHAB estará sempre disponível sem manipulações adicionais com a conexão VPN. Ou especifique o endereço virtual obtido usando qualquer solução VPN. Ou algo mais.


Tela inicial da interfaceRolar a tela inicial para baixoO item de menu aberto "Light"

A marcação permite realizar formatação condicional, por exemplo, realçar a temperatura em vermelho quando exceder o valor especificado na marcação. Alguns itens são exibidos quando pressionados, por exemplo, "Aquecimento", "Luz", "Sirene" etc.


Só isso. Pegamos um ferro de soldar, depois um teclado. E gradualmente a primeira versão do sistema toma forma. Como você sabe, o apetite vem com a comida. Como resultado, novos sensores e até novos controladores são adicionados à primeira versão do sistema, por exemplo, para automatizar uma casa de hóspedes. Como resultado, no primeiro estágio, foi introduzido um sistema que:


  1. Mede a temperatura em 16 pontos.
  2. Mede a umidade em 4 pontos.
  3. Mede a tensão da rede de 220V na entrada da casa, para o estabilizador.
  4. Mede a luz ambiente. A iluminação é usada para ligar automaticamente a luz.
  5. Mede a pressão atmosférica e faz uma previsão do tempo na dinâmica da pressão.
  6. Detecta movimento em vários pontos.
  7. Controla o mundo inteiro em uma casa de hóspedes. Os interruptores se transformaram em sensores.
  8. Aciona sirenes.
  9. Controla separadamente três etapas de uma caldeira elétrica, preservando a funcionalidade do sistema antigo. Controla o aquecedor da caldeira.
  10. Verifica a presença de tensão na caldeira e os elementos de aquecimento da caldeira e também lê os fatos da inclusão dos elementos de aquecimento da caldeira. Isso é importante porque, em primeiro lugar, a caldeira tem feedback sobre a temperatura do líquido de arrefecimento e pode desligar os elementos de aquecimento propriamente ditos; em segundo lugar, um relé de limitação de carga de dois estágios é montado na blindagem, que desconecta a caldeira e a caldeira em série se o limiar de consumo na casa for excedido. Esses dados serão mais usados ​​em algoritmos de casa inteligente. Mas, nesta fase, eu não sabia exatamente como, apenas senti que elas seriam necessárias.
  11. Lê os fatos de ligar e desligar a bomba do circuito solar.
  12. Cria gráficos de temperatura para a semana, dia e hora.
  13. Envia notificações push sobre vários eventos. Os eventos podem ser praticamente qualquer movimento, por exemplo, na varanda, temperatura superior a um limite predeterminado, perda / aparência de eletricidade, etc. Um alerta por SMS também foi feito.
  14. O sistema antigo permaneceu física e logicamente separado do novo, embora os mesmos sensores sejam parcialmente reutilizados no novo. O sistema antigo mantinha as funções de segurança e um sistema de monitoramento / controle de backup.

A foto mostra o equipamento elétrico da casa de hóspedes. A caixa com a antena é o controlador, a “arruela” redonda é a sirene, entre eles está o sensor DHT22, sob a proteção há um sensor de movimento, à esquerda há uma fonte de alimentação ininterrupta de 12V.


Exemplo de operação do sistema

A cada 30 segundos, o controlador controla os sensores de temperatura. No caso de uma alteração nas leituras ou mediante solicitação do servidor, envia os dados para o gateway separadamente para cada sensor. O Gateway recebe dados e os envia via USB para o openHAB. No openHAB, uma regra é acionada, a mensagem é analisada, o valor da temperatura correspondente é atribuído ao item correspondente (o conceito básico do openHAB). É gerada uma regra configurada para alterar este item. Se alguma reação for fornecida pela lógica, por exemplo, “se a temperatura caiu abaixo de um determinado nível”, uma ação é executada, por exemplo, “ligue o aquecedor da caldeira”. Este comando é enviado via USB para o gateway. O Gateway envia um comando pelo rádio para o controlador, o controlador recebe o comando e liga o relé correspondente. Retorna uma confirmação de recebimento do comando. Algo assim se parece com o esquema geral de interação dos componentes do sistema.


O resultado. Metas iniciais alcançadas e ainda mais. As temperaturas são medidas e visualizadas em gráficos e na interface. De acordo com os resultados das observações, ficou claro que a temperatura da água quente nunca sobe acima de 55 graus, e o líquido de arrefecimento no circuito solar - 60, você não precisa se preocupar com superaquecimento. Pode-se observar que a temperatura do ar na sala das caldeiras às vezes excede 30 graus e é necessário instalar o ar-condicionado. Tornou-se conveniente controlar o aquecimento, basta tocar nos interruptores virtuais na tela do smartphone. Próximo. . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . I.e. .


, .

, . — 11.05.2018. , 49 . 38, 35 . . . .


. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .

Source: https://habr.com/ru/post/pt415477/


All Articles