Casa inteligente. Cérebros

Quando todos os fios são colocados, os interruptores são instalados, o painel elétrico é feito (tudo isso é descrito na primeira parte ), e você pode prosseguir para a coisa mais interessante - programar o controlador. Como não usei um controlador especializado para uma casa inteligente, mas um controlador de automação industrial, tive que programar do zero - existem entradas, existem saídas, tudo o mais precisa ser programado - o que fazer pressionando um botão (interruptor sem consertar), como programar um dimmer , scripts etc.

imagem

Mas as primeiras coisas primeiro. Inicialmente, a arquitetura da minha casa inteligente incluía os seguintes componentes:
  • controlador industrial Áries de PLK110-32 (cérebro principal)
  • Módulo de saída analógica MU110-6U (usado para controlar dimmers)
  • módulo para entrada de sinais analógicos MV110-8A (adicionado posteriormente para a leitura de sensores).

Tudo isso é conectado através do RS-485 e da punção Modbus RTU. O controlador principal está conectado à Ethernet para comunicação com o mundo exterior.

Para controlar pelo telefone, inicialmente usei o Iridium Mobile , que os fabricantes gentilmente me forneceram (sim, usando minha posição oficial para fins pessoais!). Mais tarde, substituí-lo por um serviço da Web baseado no Nó JS. Mais tarde, também adicionou uma parte sem fio baseada em z-wave. Eu pretendo escrever sobre tudo isso separadamente, mas por enquanto voltamos às nossas ovelhas.

A programação do controlador é realizada no ambiente CoDeSys, que suporta 5 idiomas especializados, dos quais eu dominei dois - FBD (Function Block Language) e ST (Pascal-like language). Na verdade, inicialmente eu pensei em me contentar apenas com o FBD, já que a programação nessa linguagem parece fazer um gráfico em um editor.

imagem

Portanto, a sub-rotina FBD (ou melhor, o bloco de funções) de processar o comutador no corredor se parece com isso. Além de ligar e desligar a luz no corredor, esse interruptor é usado para desligar a luz em todo o apartamento. Um único toque muda a luz no corredor e um toque longo (1 segundo) ativa o comando para desligar todas as luzes.

À medida que mais e mais funções e recursos foram adicionados, cheguei à conclusão de que a linguagem dos diagramas funcionais não é tão conveniente - acaba sendo um código complicado, a programação é lenta e a depuração é muito inconveniente. Portanto, mudei gradualmente para o idioma ST e deixei de usar o idioma FBD.

Para comparação, parece que este é um pedaço do bloco de funções do dimmer na linguagem ST (concorde, isso é uma questão completamente diferente!):

imagem

Já que estamos falando de um dimmer, precisamos falar sobre isso especificamente. Como se viu, não é fácil encontrar um redutor (ferro) adequado para uma casa inteligente. Não considerei todos os tipos de opções de raça, já que toda a funcionalidade básica deveria ser implementada em tecnologias de cabos - escrevi sobre isso anteriormente. O preço dos dimmers que me apareceram não me agradou. Além disso, era necessário garantir a compatibilidade com minha casa inteligente. Inicialmente, decidi pelo INSYTE LDD-400D, controlado pelo ModBus, o que me permitiu conectá-lo diretamente ao controlador sem módulos adicionais, mas os amigos que o usaram em seus projetos de alguma maneira não falaram muito bem sobre isso e, como resultado, decidi pergunta com um dimmer então - coloque um relé de estado sólido.

imagem

O relé é controlado (através do módulo de saída analógica) com um sinal de 0-10V e gera 10-220V, respectivamente. Observe que a tensão mínima na saída do relé de estado sólido não é 0, mas 10V - nessa tensão, a espiral da lâmpada incandescente brilha visivelmente. Esse problema é resolvido da seguinte forma: além do relé de estado sólido, o circuito também contém o relé intermediário (mecânico) usual e, no nível do programa, quando é necessário desligar completamente a luz, o controlador desliga o relé intermediário e interrompe o circuito.

A segunda dificuldade com a organização de diminuir a luz é como fazer uma interface conveniente, levando em consideração o fato de eu usar um comutador convencional sem consertar como controle.

A primeira versão da interface era mais ou menos assim (agora não me lembro exatamente):
  • pressão curta - liga ou desliga a luz (a luz acende no último nível de brilho)
  • pressione e segure quando a luz estiver acesa - uma diminuição gradual no brilho e depois passando pelo aumento zero
  • pressão longa quando a luz está apagada - aumento suave de zero
  • um toque duplo acende a luz com brilho total.

Eu morei com essa opção por vários meses, mas cheguei à conclusão de que ainda não é muito conveniente e, na maioria das vezes, apenas três modos são usados ​​- a luz está acesa, a luz está apagada ou a luz é acesa com fúria mínima. Portanto, implementei uma opção discreta mais simples (que permanece até agora):
  • pressão curta - liga / desliga a luz (liga com brilho total)
  • pressão longa - acende a luz com 25% de brilho e muda para o modo mais escuro;
  • cada pressão subsequente passa para o próximo passo + 25%. Saia do modo dimmer - por tempo limite.

Como eu disse em um post anterior, o controle de botões únicos sem correção ainda não é a melhor solução. Além do exemplo com o dimmer que acabei de citar, também implementei um cenário complexo para acender a luz na sala de estar. Preferimos não usar a luz do teto na sala e acender imediatamente a lâmpada da mesa e as luzes do armário. Automatizei esse processo e agora o controle de luz na sala fica assim:
  • um clique (se a lâmpada estiver apagada) - acende a lâmpada e a luz de fundo
  • um clique (se a lâmpada estiver acesa) - liga ou desliga a luz superior
  • uma pressão imediatamente após a segunda (quando a luz do teto está apagada) - apaga a lâmpada da mesa
  • pressão longa - apaga todas as luzes da sala

Os dois primeiros pontos desse cenário são muito adequados do ponto de vista do modelo de comportamento. O último ponto é feito por analogia com o corredor. O terceiro parágrafo é altamente controverso e não é usado. O problema é que a família está reclamando, mas esse script é um corredor, mas nenhum hóspede pode lidar com a luz. Portanto, para scripts, você precisa de painéis de toque ou botões multifuncionais.

O sistema CoDeSys tem a capacidade de criar um painel de visualização e controle. O PLC110 não suporta a interface da web; portanto, a visualização funciona apenas no próprio complexo CoDeSys.

imagem

É assim que o painel de controle técnico da minha casa inteligente se parece. Técnico, porque na vida cotidiana ninguém o usa. Com uma pequena exceção, este painel serve como uma interface remota para gerenciar uma casa inteligente. Se precisar fazer algo remotamente, passo o TeamViewer em meu servidor doméstico e uso este painel. Essa necessidade surge muito raramente, então eu nem configurei o acesso remoto para o serviço da web.

Em conclusão, os prós e contras.

Prós:
  • Confiabilidade - a solução se provou muito bem (no entanto, é construída com base em componentes, usada para automação industrial). Durante todo o tempo, não houve uma única falha (!!!). Mesmo após picos de energia, o sistema foi iniciado sem problemas.
  • (, , ).

:
  • Modbus TCP — ( )

Como eu disse no primeiro artigo, agora eu procuraria mais de perto as alternativas, mas se alguém de repente quiser estudar essa solução, publiquei o código-fonte feito no CoDeSys no github . (apenas condescenda com a qualidade do código.

Nas partes a seguir - controle por telefone e soluções sem fio.

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


All Articles