Nos sistemas inteligentes de orçamento doméstico, geralmente são usados comutadores padrão - seu tipo de saída também é chamado de
"contato seco" . No entanto, essa não é a única opção: em busca de um switch bonito, me deparei com dispositivos com o protocolo Modbus RTU dentro. Além da aparência bonita, eles permitem configurar o modo de operação de cada botão, controlar a luz de fundo em detalhes e conectá-los ao controlador central (usei a
Wiren Board 5 ), quatro fios são suficientes - energia, terra e duas linhas para o RS-485.
Como conectar esse switch e configurar o controle da luz e ventilação, veja abaixo. O artigo também descreverá em detalhes como trabalhar com dispositivos Modbus em geral.
Explicação do profissional de marketing da Wiren Board: Este artigo nasceu de um tópico criado por Kallyanbl4 em nosso fórum . Após nosso pedido, ele escreveu um artigo completo e permitiu publicá-lo em nosso blog, pelo qual muitos agradecimentos a ele. Todo o texto é escrito pelo autor, exceto as notas no final.Descrição dos switches
Tendo estudado o que está agora no mercado, comprei
esses switches interessantes dos chineses:

Suas vantagens:
- bom design;
- interruptores de toque, quando pressionados, piscam, iluminados no escuro em uma agradável cor branca;
- preço relativamente baixo - 2000 rublos cada. O preço inclui gravação a laser individual;
- interruptor programável - você pode definir o botão para praticamente qualquer ação: acenda a luz, controle os LEDs, levante / abaixe a cortina, ...
Especificações do Switch:
- tensão de alimentação - 12 V;
- taxa de transferência de dados - 19200 bit / s;
- número de bits transmitidos - 8;
- número de bits de parada - 1;
- controle de paridade - sem verificação.
Ao trabalhar no Modbus RTU, os dispositivos conectados possuem os chamados registradores - células nas quais as informações são armazenadas. Na captura de tela, uma descrição dos registros para o comutador de quatro teclas:

Quando você clica em um dos botões de toque, os valores nos registros 0-3 mudam de 0 para 1.
Disjuntor
No controlador Wiren Board 5, dependendo da configuração, existem de duas a quatro portas RS-485. Switches (no meu caso, existem 27 deles) devem estar conectados a essas portas.
Nesse caso, todos os comutadores podem operar em um barramento comum. Os switches podem ser conectados em série, levando o cabo de um switch para outro, mas eu decidi conectar todos os cabos em uma blindagem.
Cabo de conexão - Cat 5e UTP de oito núcleos. Você pode usar um núcleo de quatro núcleos, mas eu costumo fazer tudo "apenas por precaução". Você pode considerar outros cabos de quatro núcleos, mas o ponto importante é que o cabo deve ser blindado, porque, apesar das freqüências de sinal bastante baixas, perdas e captadores não são excluídos.
Como resultado, todos os comutadores são interconectados, como mostrado na figura:

Como pode ser visto na figura, todos os comutadores são interconectados usando um comutador UTP passivo. Para os núcleos 1 e 2 (laranja e branco-laranja) são transmitidos dados (linhas A e B), a energia de 12 V é conectada aos núcleos 7 e 8 (marrom e branco-marrom) .Eu uso o Mean Well NDR-75-12 como fonte de energia .
Eu não sabia como o comutador UTP chinês passivo se comportava, portanto, ao projetar a blindagem, forneci um local para um comutador RS-423 ativo. Noto que o circuito funciona tanto através de interruptores passivos quanto ativos. E mesmo quando eles estão conectados juntos.

Controle de luz por relé
De acordo com o meu projeto, 27 dispositivos independentes (luzes, ventiladores) estão planejados no apartamento, alimentados por 220 V. Foram
selecionados três módulos de relé
WBIO-DO-R10A-8 e um
WBIO-DO-R10R-4 para controlá-los. A escolha se deve ao fato de quase toda a iluminação do apartamento ser LED, que difere das lâmpadas incandescentes por uma alta corrente de partida. Os relés selecionados podem fornecer comutação de corrente de até 10 A por canal, o que, no meu caso, é desnecessário - mas, como mencionado anteriormente, "apenas no caso de uma margem".

A comutação de relé ocorre através da
interface da web do controlador . O procedimento é intuitivo, não são necessárias instruções ou dicas.
Parte do software
Arquivo de portaAprendemos com a
descrição de hardware da Wiren Board 5 que ela possui duas portas de dispositivo
/ dev / ttyAPP1 e
/ dev / ttyAPP4 correspondentes a duas portas RS-485. No meu caso, o switch está conectado à porta
/ dev / ttyAPP1 .
Endereço do dispositivo (comutador)Ao trocar dados usando o protocolo Modbus RTU, cada dispositivo é identificado por seu próprio número exclusivo - o endereço Modbus. Como regra, o fabricante indica esse endereço na forma de três dígitos no próprio dispositivo, mas se não houver esse número no dispositivo, você pode
iterar sobre os endereços na linha de comando (é usado que o endereço esteja armazenado no registro Modbus 0x80):
root@wirenboard:~
O resultado deve estar no formato:
Data: 0x008e
Resposta recebida no formato hexadecimal e corresponde a 142 em decimal.
Deve-se observar que toda vez que o utilitário
modbus_client é
chamado , o padrão do driver de polling
wb-mqtt-serial para o controlador deve ser interrompido; caso contrário, o utilitário
modbus_client não funcionará.
Troca de dados entre o switch e a placa WirenAcima, é escrito um loop que pesquisa todos os endereços Modbus possíveis e retorna o valor do endereço se um dispositivo for encontrado. O loop usa o utilitário
modbus_client , necessário para depurar dispositivos conectados. Nesse ponto, ao usá-lo, garantiremos que tudo esteja conectado corretamente e o switch interaja com o controlador corretamente. Para fazer isso, tente ler os dados no registro 0x01:
root@wirenboard:~
(uma descrição do utilitário e suas chaves está na documentação do controlador).
O resultado será o seguinte:
Opening /dev/ttyAPP1 at 19200 bauds (N, 8, 1) [8E][03][00][64][00][01][DA][EA] Waiting for a confirmation... <8E><03><02><00><01><2C><5B> SUCCESS: read 1 of elements: Data: 0x0001
Esse resultado significa que um valor discreto 1. é gravado no registro.Depois de pressionar um dos botões do comutador, o valor do registro mudará para o valor oposto:
SUCCESS: read 1 of elements: Data: 0x0000
Se o resultado for observado, como neste parágrafo, tudo estará conectado corretamente, a chave e o controlador se entenderão.
Driver nativo para o comutadorDepois de garantir que o controlador e o comutador se entendam, é hora de fazer uma descrição das chaves do comutador no nível do software. Os desenvolvedores sugerem adicionar uma descrição do dispositivo conectado ao arquivo /etc/wb-mqtt-serial.conf ou criar um modelo personalizado no formato do arquivo /usr/share/wb-mqtt-serial/templates/config-*.json
Eu segui o segundo caminho, meu modelo fica assim:
{ "device_type": "4-band-switch", "device": { "name": "4-band-switch", "id": "4bsw", "enabled": true, "channels": [{ "name": "All", "reg_type": "holding", "address": "0x00", "type": "switch" }, { "name": "Window", "reg_type": "holding", "address": "0x01", "type": "switch" }, { "name": "Side", "reg_type": "holding", "address": "0x02", "type": "switch" }, { "name": "Diode", "reg_type": "holding", "address": "0x03", "type": "switch" } ] } }
Uma descrição detalhada do modelo escrito acima está na
descrição do driver wb-mqtt-serial . Lidar brevemente com os campos:
- "Nome": "Todos" é o nome do botão. Se o modelo estiver escrito corretamente, esse botão aparecerá na guia Configurações com o endereço / devices / 4bsw_142 / controls / All
- "Reg_type": "holding" - tipo e tamanho do registro. O switch usa "holding" - um registro de 16 bits disponível para leitura e gravação.
- "Address": "0x00" - o endereço do registro do comutador a partir do qual o controlador lerá os dados.
- “Type”: “switch” - como o switch será exibido na interface da web. No caso de "switch" - na forma de um switch discreto.
Salve o modelo no controlador. Depois disso, na seção da interface da web (Configs -> /etc/wb-mqtt-serial.conf), você pode adicionar um novo dispositivo com esse modelo (switch de 4 bandas). Adicione nossa primeira opção e clique em Salvar.
A regra que ativa o relé quando o botão interruptor é pressionado
Dentro do controlador de estado, todos os dispositivos conectados são descritos por
mensagens MQTT . Os dispositivos também são controlados enviando mensagens MQTT. Os clientes da fila de mensagens do MQTT (broker) são a interface da web e
o mecanismo de regras .
Para maior clareza, veremos como a interface da web lida com a mensagem recebida. Abrimos a guia Configurações da interface da web e vemos o que acontece quando o botão Todos é pressionado no comutador: dentro do comutador, o valor do registro Modbus muda, o driver
wb-mqtt-serial consulta o comutador e, de acordo com o modelo do dispositivo, o comutador de 4 bandas envia uma mensagem MQTT no tópico
/ devices / 4bsw_142 / controls / All - e na página Configurações, o valor no tópico
/ devices / 4bsw_142 / controls / All mudará instantaneamente de 0 para 1.
Considere o segundo cliente - o mecanismo de regras. O mecanismo, como a interface da web, trabalha com a fila de mensagens e pode responder a alterações no valor - a função
whenChanged é usada para isso. No meu caso, a regra era assim:
Ficarei feliz em responder a todas as perguntas nos comentários.
Notas do comerciante
- É melhor instalar a linha RS-485 com um cabo KSPEVG 2x2x0.35 (custa apenas 30 rublos por metro), e não com uma estrela, mas com um ônibus.
- Recomendamos que você tome cuidado com as lâmpadas LED - a corrente inicial pode exceder a 150 vezes nominal (!) (Este será um artigo separado) - observe os poderosos módulos de relés WB-MR6 : corrente de 16 A por canal, incluindo corrente de irrupção de até 800 (!) Amp na modificação S.