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.
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.
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!):
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.
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.
É 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.
- (, , ).
: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