Prefácio
2019 ano. Em quase todas as lojas de eletrônicos, você pode comprar um dos centenas de conjuntos possíveis de casas inteligentes. Faça e configure em “2 cliques”, conecte-se às nuvens, receba eventos push no aplicativo / SMS e, em geral, receba todas as informações necessárias em qualquer lugar do mundo.Ideal, mas no meu caso, não funcionou. Algumas decisões que caíram em minhas mãos acabaram sendo um conjunto limitado de determinadas funções, cobrindo apenas parte de minhas consultas e, além disso, impondo restrições quase intransponíveis. E, como geralmente acontece, quanto menos restrições, mais você precisa mergulhar na área de atuação, pensar independentemente em soluções, arquiteturas. Portanto - a fazenda coletiva nós mesmos :)
As tarefas
1. receber informações sobre a qualidade da rede de energia (sobretensões, desligamento completo, etc.).
2. Tenha monitoramento completo do no-break. Mas, de fato, ter esse mesmo no-break com base nas conseqüências do p2.
3. Receba informações de temperatura:
- na rua
- em casa
- no sótão (quando o lixo e os tomates jogados lá congelam)
4. Monitore o estado do consumo de água, alerta se o consumo aumentou (de repente um vazamento, você não pode pesar tudo com sensores de umidade).
5. Entenda quando alguém está em casa para automatizar o fechamento / abertura da água.
6. Leitura do medidor de gás e alerta quando a reserva paga acabar.
+ outros tipos de sensores (umidade, abertura, pressão da água, pressão no circuito de aquecimento, etc.).
O objetivo global é ter uma interface comum na qual você possa ver tudo isso. Receba notificações se algo der errado.
E para que não haja nada e não se dê muito dinheiro.
A composição do complexo no momento
- Bateria UPS Energy PN-750 + 100 Ah
- Conversor USB-> RS232 baseado em PL2303
- Roteador Tp-link tl-wr1043nd +
- Mestre de rede de 1 fio baseado em um termômetro USB adquirido DS18B20 + PL-2303TA
- 1 fio 3 sensores DS18B20
- 1wire radioseti DS2423 módulo medidor de água
Uma máquina virtual com um servidor Zabbix fora da rede doméstica.

Etapa 1. Preparação da infraestrutura
O primeiro passo foi a questão da reorganização física: o roteador foi movido para a mesa de cabeceira perto da mina de ventilação, onde a UPS estava planejada para ser instalada ainda mais. A antena do provedor de Internet Ubiquiti Nanostation Loco M2 PoE foi conectada à mesma tomada que o roteador, para continuar sendo alimentada pelo no-break.
Eu já tinha uma instalação dedicada do Zabbix em um servidor remoto e alguma experiência em trabalhar com esse aplicativo. Portanto, com a teoria da organização de alertas e até o próprio painel, não eram esperados problemas.
O roteador pisca no OpenWRT Chaos Calmer, uma VPN é configurada para a rede em que o servidor Zabbix estava localizado.
Eu imediatamente adicionei as métricas ao zabbix, tendo obtido o modelo do item para openwrt. Assim, tive a oportunidade de monitorar o sistema e, por exemplo, quantos e quais endereços MAC estão conectados ao ponto. O que no futuro deveria ter servido como uma decisão sobre o fechamento da água na casa.
Etapa 2. Escolhendo um no-break
Os critérios de seleção foram:
- a possibilidade de uma caldeira a gás (buderus)
- de 5 horas de autonomia da caldeira + equipamentos de Internet
- presença de uma interface de monitoramento
- baixo ruído (colocação - mesa de cabeceira na cozinha perto do poço de ventilação)
- devido a restrições de posicionamento e preço - de preferência um design de bateria única
Examinaremos a possibilidade de atender aos critérios em ordem.
A capacidade da caldeira a gás de funcionar é explicada pelo fato de que a caldeira requer um seno limpo; caso contrário, o motor da bomba vibrará e se desgastará. Sobre isso, você pode pesquisar no google muitos artigos.
Comum (UPS de computador) não fornece esse seno, emitindo uma onda senoidal aproximada.
O segundo fator importante é a presença de "neutro". Tudo é um pouco mais complicado aqui, mas também é fácil pesquisar no Google, então não vou parar. Só posso dizer uma coisa: sem um neutro completamente, o buderus não funcionou, ou melhor, caiu em erro, porque o sensor de ionização não funcionou e a caldeira simplesmente não viu chama.
Como um substituto para a UPS, houve uma mudança de foco em relação à UPS on-line e interativa por linha.
A partir de 5 horas de autonomia da caldeira + o equipamento da Internet fornece principalmente UPS com uma bateria externa.
Devido a restrições de localização e preço, é desejável um design com bateria única . A bateria de 100Ah deveria durar mais de 8 horas.
A presença de uma interface de monitoramento para, pelo menos, saber quando o sistema mudou para a bateria, para voltar para casa no inverno e ligar o gerador. Eu não tinha requisitos específicos aqui (assim como experiência em implementação). Eu estava procurando por tudo o que vem com a interface rs232 ou usb.
A exigência de um
baixo nível de ruído acabou sendo uma limitação séria e descartou toda uma classe de equipamentos - UPS online, pois todos eles trabalham no modo de ventilação constante do transformador (o ventilador não desliga).
Ligando para a loja de energia, recebi o último PN-750 com rs232 da loja. Barato o suficiente, já que não havia fios no kit.
Etapa 3: Configuração do no-break
Há problemas ao conectar o no-break. Comprei vários conversores USB-> RS232, li nos fóruns que a energia usa o protocolo Megatec padrão e você pode pelo menos trabalhar com ele através do software Upsilon2000. Mas não importa o quanto eu lutei, houve um silêncio completo na interface serial. Após uma semana de provações, decidi desmontar o no-break e ver o que havia lá, cuspir na garantia. O problema acabou sendo comum - a placa RS232 não estava conectada à placa principal do no-break e o conector estava ligeiramente quebrado. Troquei o conector, conectei e eis que tudo decolou, embora o firmware tenha dado o nome estranho UPS - SIN800 (parece que agora eu entendo por que a energia nos novos modelos foi cortada por rs232).
No OpenWRT, havia um P / O padrão para trabalhar com o UPS: ferramentas de rede, com tudo o que você precisa para exibir métricas no console.
root@OpenWrt:/
E o mais interessante é que, no Zabbix, existe um modelo pronto para a noz. Vobschem - estamos vendo no agente do zabbix o script de shell do kit tempate e temos uma bela imagem no zabbix na dinâmica. As tarefas 1 e 2, nesta fase, foram resolvidas (e a ideia de monitorar o consumo total de energia apareceu no futuro).
Etapa 4: 1 fio e temperatura
Há algum tempo, comprei um termômetro USB no ebay (uma placa conversora combinada e um sensor).
O OpenWRT também se mostrou um software adequado, o utilitário digitemp_DS9097. Ela exibiu a temperatura de um único sensor soldado. Depois de ler que existe 1 fio, percebi que você pode tentar não se limitar a um sensor e pegar um barramento inteiro para o conversor USB adquirido. Tendo levado vários microcircuitos DS18B20 e "barris" sob um par trançado na loja, construí um construto com o sensor removido fora do barril e conectado internamente com 3 fios.

Eu conheço esse design há muitos anos, usamos para fazer leituras em data centers, mas ainda não conhecia o 1wire. Ao conectar os barris uns aos outros com cabos de manobra padrão e mudar esta fazenda para um "termômetro USB", obtive os valores dos três sensores de temperatura.

Resta jogá-los pelos locais. O comprimento total do pneu era de cerca de 30 metros. O sinal não desaparece. Um barril colocado na rua é preenchido com uma pistola de cola. Viveu o inverno.
Etapa 5: água
Eu tive que trocar o hidrômetro na entrada (não era um pulso, sem um interruptor de palheta). Graças à vida em uma casa de campo, o encanamento não causa perguntas. Comprei na loja de encanamentos mais próxima e troquei. No novo medidor, um pulso ocorre a cada 10 litros de água. Agora, esses impulsos precisam ser considerados algo.
Por alguma razão, eles descontinuaram um microcircuito de contador digital interessante - DS2423. Mas os caras de Volgograd (radioseti) têm um dispositivo pronto que, graças à bateria embutida, também conta o valor do número de pulsos em caso de falta de energia. No entanto, o próprio dispositivo foi adaptado à sua própria arquitetura de rede. De conectores RJ-11 a uma fonte de alimentação separada de 12V. No meu caso, eu queria me limitar a alimentar o barramento existente (5V). Eu tive que contornar a cinta "extra" e a solda diretamente para as conclusões do DS2423 diretamente. Então o dispositivo funcionou, os valores do registro ficaram visíveis no barramento. Existem dois, o dispositivo implica conectar a dois hidrômetros ao mesmo tempo - água quente e água quente. Eu tenho apenas uma entrada de água, então eu uso o segundo registro apenas para testes.

O resultado final para a topologia 1wire:
root@OpenWrt:/etc/zabbix
A propósito, como um novo medidor de água foi instalado simultaneamente com um medidor de pulso digital, podemos tirar conclusões sobre a discrepância de leituras / rejeição de contatos. Visualmente, essas discrepâncias estão quase ausentes (até várias centenas de litros na leitura atual de 60.000).
Etapa 6: Alerta
Usando as informações coletadas, foi possível fazer alertas úteis:
- temperatura externa em sms todas as manhãs (+ participação do sensor no projeto narodmon)
- Mensagem de transferência da bateria do no-break
- Bateria do no-break fraca
- mensagem de baixa / alta tensão
- uma mensagem sobre o calor na mesa de cabeceira com o equipamento
- relatório de baixa temperatura no sótão (resgate de tomate)
- mensagem sobre o endereço MAC "estrangeiro / novo" na rede
- mensagem sobre o alto consumo de água (dentro de um certo tempo)
Etapa 7: o futuro
Um medidor digital foi adquirido no aliexpress com uma saída rs232 na forma de USB. Mas enquanto ele não brigou com ele, ele não responde aos pacotes. Vamos pensar mais. Espero apertar.
Eu pretendo comprar um relé de controle de válvula de esfera (a própria válvula já existe) para controle remoto da válvula e a possível implementação do desligamento automático da água na ausência de uma casa.
De alguma forma, integrar o medidor de gás digital gallus no circuito para notificar sobre um depósito em execução.
Por fim, alguns gráficos:



