Índice:

Alarme PIR para WiFi (e Domótica): 7 etapas (com fotos)
Alarme PIR para WiFi (e Domótica): 7 etapas (com fotos)

Vídeo: Alarme PIR para WiFi (e Domótica): 7 etapas (com fotos)

Vídeo: Alarme PIR para WiFi (e Domótica): 7 etapas (com fotos)
Vídeo: Tuya ZigBee Smart PIR Sensor | Use a Smart Motion Sensor to Turn on/off your Lights Automatically 2024, Julho
Anonim
Image
Image
Alarme PIR para WiFi (e automação residencial)
Alarme PIR para WiFi (e automação residencial)

Visão geral

Este instrutível lhe dará a capacidade de visualizar a última data / hora (e opcionalmente um histórico de tempos) de quando os PIRs (sensores infravermelhos passivos) do seu House Alarm foram acionados, no seu software de automação residencial. Neste projeto, discutirei como usar o OpenHAB (software de automação residencial gratuito, que eu uso pessoalmente), embora funcione com qualquer outro software ou aplicativo de automação residencial que suporte MQTT (também descrito mais adiante neste artigo). Este instrutível irá guiá-lo através das etapas necessárias sobre como conectar uma placa de circuito e Wemos D1 mini (uma placa IOT que utiliza um chip ESP8266) que se conecta às zonas de alarme em sua caixa de controle de alarme para que quando uma zona (que contém um ou mais PIRs) é acionado, o Wemos envia uma mensagem sem fio usando o protocolo MQTT para o seu software de automação residencial que por sua vez, exibe a última data / hora desse acionador. O código do Arduino para programar o Wemos também é fornecido.

Introdução

A imagem acima é o que eu vejo em uma das telas do aplicativo OpenHAB no meu iPhone. O texto de data / hora é codificado por cores para fornecer uma representação mais rápida de quando o PIR foi acionado - ele mostrará vermelho (acionado no último 1 minuto), laranja (acionado nos últimos 5 minutos), verde (acionado nos últimos 30 minutos), azul (disparado na última hora) ou, caso contrário, preto. Clicar na data / hora exibirá uma visão histórica dos gatilhos PIR, onde 1 significa disparado e 0 é inativo. Há muitos usos para isso, por exemplo, pode complementar sua solução de presença doméstica, pode detectar movimento se você estiver ausente e através das regras do OpenHAB, enviar notificações para o seu telefone, você poderia usá-lo como eu faço para ver se meus filhos estão levantar no meio da noite, desencadeado por um PIR que reside fora de seus quartos!

OpenHAB é simplesmente o software de automação residencial que uso, existem muitos outros - e se eles suportarem MQTT, então você pode facilmente adaptar este projeto para se adequar ao software que você usa.

Premissas

Este instrutivo assume que você já tem (ou irá configurar):

  • Obviamente, um sistema de alarme residencial com PIRs (sensores infravermelhos passivos) e que você tenha acesso à caixa de controle de alarme para conectar a fiação necessária
  • OpenHAB (software de automação residencial de código aberto gratuito) em execução, embora, conforme discutido, deva funcionar com qualquer software de automação residencial que possa incluir uma ligação MQTT. Como alternativa, você mesmo pode alterar o código para atender às suas necessidades.
  • Broker Mosquitto MQTT (ou similar) instalado e vinculado configurado com OpenHAB (MQTT é um protocolo do tipo de assinatura / publicação de mensagens que é leve e excelente para comunicação entre dispositivos)

Se você não executa o OpenHAB e um broker MQTT, consulte este excelente artigo no site MakeUseOf

O que eu preciso?

Para criar o controlador sem fio, você precisará fornecer as seguintes peças:

  • Wemos D1 mini V2 (tem um ESP8266 sem fio CHIP embutido)
  • Um comparador LM339 (fará a verificação de PIR ocioso vs acionado)
  • Uma fonte de alimentação de 5 Vcc para o Wemos (OU, um conversor de buck DC-DC. Observação: um regulador de tensão LM7805 pode não funcionar para esta aplicação, conforme discutido posteriormente neste projeto)
  • Dois resistores para um divisor de tensão (o tamanho dependerá das tensões de alarme, discutidas posteriormente no projeto)
  • Um resistor de 1K ohm para atuar como um resistor pull down para controlar a potência do LM339
  • Um MOSFET 2N7000 (ou similar) para ligar logicamente o LM339 (possivelmente opcional, discutido posteriormente no projeto)
  • Uma placa de ensaio de tamanho adequado para configuração e teste de circuito
  • Um monte de fios de placa de ensaio para conectar tudo junto
  • Ferramentas necessárias: cortadores laterais, fio de núcleo único
  • Um multímetro DC (obrigatório!)

Etapa 1: A caixa de controle do sistema de alarme

A caixa de controle do sistema de alarme
A caixa de controle do sistema de alarme

Primeiro, alguns avisos e isenções de responsabilidade

Pessoalmente, tenho um sistema de alarme Bosch. Eu recomendo que você baixe o manual relevante para o seu sistema de alarme específico e se familiarize com ele antes de começar, pois você precisará desligar o sistema de alarme para conectar as zonas. Eu também recomendo que você leia este artigo na íntegra antes de começar!

Abaixo está uma lista de algumas coisas que você deve saber antes de começar - certifique-se de ler e compreender cada uma delas antes de continuar! Não assumo qualquer responsabilidade se você bagunçar o seu sistema de alarme e / ou tiver que pagar o seu instalador para consertá-lo. Se você ler e entender o seguinte e tomar as precauções necessárias, você deve estar bem:

1. Meu sistema de alarme tinha uma bateria de backup dentro da caixa e também tinha um interruptor de tamper na parte interna da tampa (que dá acesso à placa do sistema de alarme), portanto desliguei o alarme externamente, ao remover o painel frontal do controle caixa disparou o alarme! Para contornar isso enquanto eu trabalhava no projeto, ignorei a proteção contra violação desconectando e causando um curto-circuito no interruptor de violação (o fio vermelho grosso, conforme mostrado na foto acima)

2. Ao ligar o sistema de alarme de volta, após aproximadamente 12 horas, o painel de controle de alarme começou a emitir um bipe com códigos de falha. Depois de determinar os códigos de falha por meio do manual, descobri que ele estava me avisando que:

  • A data / hora não foi definida (eu precisava do código mestre e da sequência de teclas do manual para reconfigurar)
  • Que a bateria de reserva não estava conectada (conserto fácil, eu apenas esqueci de reconectar a bateria)

3. No meu alarme, existem 4 blocos de conexão de zona (identificados como Z1-Z4) para os PIRs serem conectados na placa de alarme principal, no entanto - meu sistema de alarme é, na verdade, capaz de 8 zonas. Cada bloco de conexão de zona pode realmente executar 2 x zonas cada (Z1 faz Z1 e Z5, Z2 faz Z2 e Z6 e assim por diante). O sistema de alarme possui proteção contra violação embutida para impedir que alguém diga, abrindo a tampa do sistema de alarme conforme mencionado acima, ou cortando os fios para um PIR. Ele distingue entre cada violação de zona por meio de resistores EOL (fim de linha). Estes são resistores de tamanho específico que residem no "fim da linha" - em outras palavras, dentro do PIR (ou chave de sabotagem da caixa de controle, ou caixa da sirene ou o que quer que esteja conectado a essa zona). Conforme mencionado, esses resistores são usados como 'sabotagem proteção '- tecnicamente, se alguém cortar os cabos de um PIR - porque o sistema de alarme está esperando ver uma certa resistência daquele PIR, então se a resistência mudar, ele assume que alguém adulterou o sistema e irá disparar o alarme.

Por exemplo:

No meu alarme, a Zona "Z4" tem 2 fios, um vai para o PIR no meu corredor e o outro vai para o interruptor de tamper da caixa de controle de alarme. Dentro do corredor PIR, ele tem um resistor de 3300 ohms. O outro fio que vai até a chave de tamper da caixa de controle tem um resistor de 6.800 ohms conectado em série. É assim que o sistema de alarme (logicamente) distingue entre as violações "Z4" e "Z8". Da mesma forma, a zona "Z3" tem um PIR (com resistor de 3300 ohms) e também o interruptor de tamper da sirene (com resistor de 6800 ohms) que compõe "Z7". O instalador do alarme teria pré-configurado o sistema de alarme para saber qual dispositivo está conectado a cada zona (e alterado o tamanho do resistor EOL para se adequar, porque o sistema de alarme é programado para saber o tamanho dos diferentes resistores EOL. em nenhuma circunstância você deve alterar o valor desses resistores!)

Portanto, com base no acima exposto, porque cada zona pode ter vários dispositivos conectados a ela (com diferentes valores de resistência), e lembrando a fórmula V = IR (tensão = amperes x resistência), então isso também pode significar que cada zona pode ter tensões diferentes. O que nos leva à próxima etapa, medindo cada zona IDLE vs tensão TRIGGERED …

Etapa 2: Medir a tensão da zona de alarme

Medindo a tensão da zona de alarme
Medindo a tensão da zona de alarme
Medindo a tensão da zona de alarme
Medindo a tensão da zona de alarme

Depois de obter acesso à placa principal do sistema de alarme (e contornar o interruptor contra sabotagem, se houver; conforme a etapa anterior), ligue novamente o sistema de alarme. Agora precisamos medir a tensão de cada zona quando está IDLE (nenhum movimento na frente do PIR) vs TRIGGERED (PIR detectou movimento) Pegue uma caneta e papel para que você possa anotar suas leituras de tensão.

AVISO: É mais provável que a maior parte do seu sistema de alarme funcione com 12 Vcc, no entanto, ele terá sua alimentação inicial de 220 V (ou 110 V) CA, com um transformador que converte a energia de CA para CC. LEIA o manual e tome cuidado extra para garantir que você NÃO está medindo nenhum terminal CA !!! De acordo com a captura de tela do meu sistema de alarme nesta página, você pode ver que a parte inferior da imagem é a alimentação AC, transformada para 12 V DC. Estamos medindo 12 Vcc nas caixas vermelhas destacadas. Nunca toque na alimentação CA. Tenha muito cuidado!

Medindo a tensão PIR

Tenho 4 x PIRs conectados de Z1 a Z4. Meça cada uma de suas zonas da seguinte maneira.

  1. Primeiro, identifique o terminal GND e os terminais de zona no painel de alarme. Eu destaquei isso na imagem mostrada no manual do meu alarme Bosch.
  2. Pegue seu multímetro e defina sua medição de tensão para 20 V DC. Conecte o cabo preto (COM) do multímetro ao terminal GND do alarme. Coloque o fio vermelho (+) do multímetro na primeira zona - no meu caso, rotulado como "Z1". Anote a leitura da tensão. Execute as mesmas etapas para as zonas restantes. Minhas medições de tensão são as seguintes:
  • Z1 = 6,65V
  • Z2 = 6,65V
  • Z3 = 7,92 V
  • Z4 = 7,92 V

De acordo com o acima, minhas duas primeiras zonas têm apenas PIRs anexados a elas. As duas últimas zonas têm PIRs e proteção contra sabotagem conectados a eles (sabotagem da caixa de controle Z3, sabotagem da sirene Z4) Observe as diferenças de voltagem.

3. Provavelmente, você precisará de 2 pessoas para a próxima etapa. Você também precisará saber qual PIR está em qual zona. Volte e leia a tensão na primeira zona. Agora, peça a alguém da sua casa para andar na frente do PIR, a voltagem deve cair. Anote a nova leitura de tensão. No meu caso, as tensões são lidas da seguinte forma quando os PIRs são acionados:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4,30 V
  • Z4 = 4,30 V

Conforme acima, posso ver que quando as zonas 1 e 2 são acionadas, a tensão cai de 6,65 V para 0 V. No entanto, quando as zonas 3 e 4 são acionadas, a tensão cai de 7,92 V para 4,30 V.

Fonte de alimentação de medição de 12V

Estaremos usando o terminal de 12 Vcc da caixa de controle de alarme para alimentar nosso projeto. Precisamos medir a tensão da alimentação de 12 Vcc no alarme. Embora já indique 12V, precisamos saber uma leitura mais precisa. No meu caso, ele realmente lê 13,15V. Anote isso, você precisará desse valor na próxima etapa.

Por que estamos medindo a tensão?

O motivo pelo qual precisamos medir a tensão para cada PIR é o circuito que estaremos criando. Estaremos usando um chip comparador diferencial quádruplo LM339 (ou comparador amplificador operacional quádruplo) como o principal componente elétrico deste projeto. O LM339 tem 4 comparadores de tensão independentes (4 canais), onde cada canal leva 2 x tensões de entrada (uma entrada inversora (-) e uma entrada não inversora (+), consulte o diagrama) Se a tensão da tensão de entrada inversora cair abaixo de a tensão não inversora, então sua saída relacionada será direcionada para o aterramento. Da mesma forma, se a tensão de entrada não inversora cair abaixo da entrada inversora, a saída é aumentada para Vcc. Convenientemente, em minha casa eu tenho 4 x PIRs / zonas de alarme - portanto, cada zona será conectada a cada canal no comparador. Se você tiver mais de 4 x PIRs, precisará de um comparador com mais canais ou outro LM339!

Observação: o LM339 consome energia em nanoamperes, portanto, não afetará a resistência EOL do sistema de alarme existente.

Se isso for confuso, prossiga para a próxima etapa de qualquer maneira, ela começará a fazer mais sentido assim que ligarmos!

Etapa 3: Criação de um divisor de tensão

Image
Image

O que é um divisor de tensão?

Um divisor de tensão é um circuito com 2 x resistores (ou mais) em série. Fornecemos tensão em (Vin) para o primeiro resistor (R1). A outra perna de R1 se conecta à primeira perna do segundo resistor (R2) e a outra extremidade de R2 se conecta ao GND. Em seguida, pegamos uma tensão de saída (Vout) da conexão entre R1 e R2. Essa tensão se tornará nossa tensão de referência para o LM339. Para obter mais informações sobre como os divisores de tensão funcionam, veja o vídeo Adohms no youtube

(Nota: os resistores não têm polaridade, então eles podem ser conectados em qualquer uma das direções)

Calculando nossa tensão de referência

Supondo que a tensão caia quando seu PIR é acionado (este deve ser o caso para a maioria dos alarmes), o que estamos tentando alcançar é obter uma leitura de tensão que esteja praticamente no meio do caminho entre nossa tensão ociosa mais baixa e nossa tensão mais alta acionada, esta se tornará nossa voltagem de referência.

Tomando meu alarme como exemplo …

As tensões da zona ociosa foram Z1 = 6,65 V, Z2 = 6,65 V, Z3 = 7,92 V, Z4 = 7,92 V. A tensão ociosa mais baixa é, portanto, 6,65V

As tensões disparadas por zona foram: Z1 = 0V, Z2 = 0V, Z3 = 4,30V, Z4 = 4,30V. A maior tensão acionada é, portanto, 4,30 V

Portanto, precisamos escolher um número na metade do caminho entre 4,30 V e 6,65 V (não precisa ser exato, apenas aproximadamente). No meu caso, minha tensão de referência precisa estar em torno de 5,46 V. Nota: Se a menor ociosidade e a maior tensão acionada estiverem muito próximas uma da outra devido a várias zonas que causam uma gama de tensões diferentes, pode ser necessário criar 2 ou mais divisores de tensão.

Calculando nossos valores de resistor para o divisor de tensão

Agora que temos uma tensão de referência, precisamos calcular o tamanho dos resistores de que precisamos para criar um divisor de tensão que fornecerá nossa tensão de referência. Estaremos usando a fonte de tensão de 12 Vcc (Vs) do alarme. No entanto, de acordo com a etapa anterior, quando medimos a alimentação de 12 Vcc, na verdade obtivemos 13,15 V. Precisamos calcular o divisor de tensão usando esse valor como fonte.

Calcule Vout usando a lei de ohms …

Vout = Vs x R2 / (R1 + R2)

… Ou use uma calculadora divisora de tensão online:-)

Você precisará experimentar os valores do resistor até atingir a saída desejada. No meu caso, funcionou com R1 = 6,8k ohm e R2 = 4,7K ohm, calculado na forma longa da seguinte forma:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61.805 / 11.500

Vout = 5,37V

Etapa 4: Conecte o LM339

Fiação do Wemos D1 Mini
Fiação do Wemos D1 Mini

Divisor de tensão para entradas de inversão LM339

Conforme discutido anteriormente em relação ao comparador LM339, ele levará 2 x entradas. Um será uma tensão de cada PIR para cada terminal não inversor (+) dos canais, o outro será nossa tensão de referência para nosso terminal inversor (-). A tensão de referência precisa alimentar todas as 4 entradas de inversão do comparador. Desligue seu sistema de alarme antes de realizar essas etapas.

  • Passe um fio do bloco de 12 Vcc no sistema de alarme para o trilho + em sua placa de ensaio *
  • Passe um fio do bloco GND no sistema de alarme para o trilho em sua placa de ensaio **
  • Instale o comparador LM339 no meio da placa de ensaio (o entalhe indica o mais próximo ao pino 1)
  • Instale os 2 x resistores para criar um circuito divisor de tensão e conecte para a saída de tensão dividida
  • Passe os fios do Vout 'dividido por tensão' para cada terminal inversor LM339

* DICA: use uma garra jacaré para a alimentação, se possível, pois isso torna mais fácil fornecer energia LIGA / DESLIGA para seu projeto ** IMPORTANTE! Um MOSFET pode ser necessário SE você estiver ligando o Wemos a partir do painel de alarme! No meu caso, o LM339, Wemos e Alarm recebem energia da mesma fonte (ou seja: o próprio sistema de alarme). Isso me permite ligar a energia de tudo com uma única conexão de energia. No entanto, por padrão, os pinos GPIO no Wemos são definidos como pinos de "ENTRADA" - o que significa que eles pegam qualquer voltagem que for lançada neles e contam com essa fonte para fornecer níveis corretos de voltagem (níveis mínimo / máximo) para que o Wemos ganhe ' t bater ou queimar. No meu caso, o sistema de alarme obtém sua alimentação e começa a fazer sua sequência de inicialização muito rápido - tão rápido na verdade, que faz isso antes que o Wemos possa inicializar e declarar os pinos GPIO como "INPUT_PULLUP" (tensão puxada internamente dentro do lasca). Isso significa que as diferenças de voltagem fariam com que o Wemos travasse quando todo o sistema recebesse energia. A única maneira de contornar isso seria desligar e ligar o Wemos manualmente. Para resolver isso, um MOSFET é adicionado e atua como uma "chave lógica" para ligar o LM339. Isso permite que o Wemos inicialize, defina seus 4 pinos de comparação GPIO como "INPUT_PULLUP's", retarde alguns segundos e ENTÃO (por meio de outro pino GPIO D5 definido como uma SAÍDA) envie o sinal "HIGH" via pino GPIO D5 para o MOSFET, que liga logicamente o LM339. Eu recomendaria fazer a fiação como acima, mas SE você descobrir que o Wemos travou como eu, você terá que incluir o MOSFET com um resistor pull down de 1k ohm. Para obter mais informações sobre como fazer isso, consulte o final deste manual.

Zonas de alarme para entradas não inversoras LM339

Agora precisamos passar os fios de cada zona no painel de controle de alarme para as entradas do comparador LM339. Com o sistema de alarme ainda desligado, para cada zona alimente um fio para cada entrada não inversora (+) no comparador LM339. Por exemplo, em meu sistema:

  • O fio de Z1 vai para a entrada 1+ do LM339
  • O fio de Z2 vai para a entrada LM339 2+
  • O fio de Z3 vai para a entrada LM339 3+
  • O fio de Z4 vai para a entrada LM339 4+

Consulte a pinagem do LM339 na etapa 3 se tiver um lembrete (é codificado por cores com a imagem da breadboard). Uma vez feito isso, sua placa de ensaio deve ser semelhante à imagem mostrada nesta etapa.

Ligue o sistema de alarme e meça a tensão que sai do divisor de tensão para garantir que seja igual à tensão de referência calculada anteriormente.

Etapa 5: Fiação do Wemos D1 Mini

Fiação do Wemos D1 mini

Agora que cuidamos de todas as entradas do LM339, precisamos conectar o Wemos D1 mini. Cada pino de saída LM339 vai para um pino Wemos GPIO (entrada / saída de uso geral) que designaremos por código como um pino pullup de entrada. O Wemos leva até 5 V no máximo como sua tensão Vcc (fonte de entrada) (embora regule isso internamente para 3,3 V). Usaremos um regulador de tensão LM7805 muito comum (EDITAR: veja abaixo) para reduzir o trilho de 12 V na placa de ensaio para 5V para alimentar o Wemos. A folha de dados do LM7805 indica que precisamos de um capacitor conectado em cada lado do regulador para suavizar a energia, como mostrado na imagem da placa de ensaio. A perna mais longa do capacitor é positiva (+), portanto, certifique-se de que ele esteja conectado da maneira correta.

O regulador de tensão recebe a tensão de entrada (pino do lado esquerdo), terra (pino do meio) e a tensão de saída (pino do lado direito) Verifique novamente a pinagem se o seu regulador de tensão for diferente do LM7805.

(EDITAR: descobri que os amplificadores vindos do painel de alarme estavam muito altos para o LM7805 lidar. Isso estava causando muito calor no pequeno dissipador de calor do LM7805 e fazendo com que ele falhasse e, por sua vez, fazendo com que o Wemos parasse funcionando. Substituí o LM7805 e os capacitores por um conversor DC-DC e não tive problemas desde então. Eles são muito fáceis de conectar. Basta conectar a tensão de entrada do alarme, conectar primeiro a um multímetro e usar o parafuso do potenciômetro e ajuste até que a tensão de saída seja ~ 5V)

Pinos de entrada GPIO

Para este projeto, estamos usando os seguintes pinos:

  • zona Z1 => pino D1
  • zona Z2 => pino D2
  • zona Z3 => pino D3
  • zona Z4 => pino D5

Conecte as saídas do LM339 aos pinos GPIO relacionados na placa Wemos, de acordo com a imagem da breadboard mostrada nesta etapa. Novamente, codifiquei por cores as entradas e saídas correspondentes, para tornar mais fácil ver o que se refere a quê. Cada pino GPIO no Arduino é definido como um 'INPUT_PULLUP', o que significa que eles serão puxados para 3,3 V sob uso normal (IDLE) e o LM339 os puxará para o chão caso o PIR seja acionado. O código detecta a mudança de ALTO para BAIXO e envia uma mensagem sem fio para o software de automação residencial. Se você está tendo problemas com este funcionamento, é possível que você tenha suas entradas invertidas e não invertidas da maneira errada (se a tensão de seu PIR ficar alta quando acionado, como acontece com a maioria dos PIRs de hobby, então você vai querer as conexões do ao contrário)

IDE Arduino

Remova o Wemos da placa de ensaio, agora precisamos enviar o código para ele (link alternativo aqui). Não vou entrar em detalhes sobre como fazer isso, pois há muitos artigos na web sobre como enviar o código para Wemos ou outro ESP8266 placas de tipo. Conecte o cabo USB à placa Wemos e ao PC e acione o IDE do Arduino. Baixe o código e abra-o em seu projeto. Você precisará garantir que a placa correta esteja instalada e carregada para o seu projeto, bem como a porta COM correta selecionada (Ferramentas, Porta). Você também precisará das bibliotecas apropriadas instaladas (PubSubClient, ESP8266Wifi) Para incluir a placa Wemos em seu esboço, consulte este artigo.

Você precisará alterar as seguintes linhas de código e substituí-las por seu próprio SSID e senha para a conexão sem fio. Além disso, altere o endereço IP para apontar para seu próprio broker MQTT.

// Wi-fi

const char * ssid = "your_wifi_ssid_here"; const char * password = "your_wifi_password_here"; // MQTT Broker IPAddress MQTT_SERVER (172, 16, 223, 254)

Depois de alterado, verifique seu código e carregue-o na placa Wemos por meio de um cabo USB.

Notas:

  • Se estiver usando portas GPIO diferentes, você precisará ajustar o código. Se você estiver usando mais ou menos zonas do que eu, também precisará ajustar o código e TOTAL_ZONES = 4; constante para se adequar.
  • Na inicialização do meu sistema de alarme, o sistema de alarme faria um teste de energia para todos os 4 x PIRs que puxou todos os GPIO conectados para o terra, fazendo com que os Wemos pensassem que as zonas estavam sendo acionadas. O código irá ignorar o envio de mensagens MQTT se vir todas as 4 zonas ativas ao mesmo tempo, pois assume que o sistema de alarme está sendo inicializado.

Link de download alternativo para codificar AQUI

Etapa 6: Teste e configuração do OpenHAB

Teste e configuração de OpenHAB
Teste e configuração de OpenHAB

Teste MQTT

MQTT é um sistema de mensagens de "assinatura / publicação". Um ou mais dispositivos podem se comunicar com um "broker MQTT" e "assinar" um determinado tópico. Quaisquer mensagens recebidas de qualquer outro dispositivo que sejam "publicadas" no mesmo tópico, serão enviadas pelo corretor para todos os dispositivos que se inscreveram nele. É um protocolo extremamente leve e simples de usar e perfeito como um sistema de disparo simples como este aqui. Para teste, você pode visualizar as mensagens MQTT recebidas do Wemos para seu broker MQTT executando o seguinte comando em seu servidor Mosquitto (Mosquitto é um dos muitos softwares MQTT Broker disponíveis). Este comando se inscreve para receber mensagens keep-alive:

mosquitto_sub -v -t openhab / alarme / status

Você deve ver mensagens de entrada vindas do Wemos a cada 30 segundos ou mais com o número "1" (que significa "Estou vivo"). Se você vir os "0s" constantes (ou nenhuma resposta), não há comunicação. Depois de ver o número 1 chegando, significa que o Wemos está se comunicando com o corretor MQTT (pesquise "MQTT Last Will and Testament" para obter mais informações sobre como isso funciona ou veja esta entrada de blog realmente boa)

Depois de provar que a comunicação é funcional, podemos testar se um estado da zona está sendo relatado via MQTT. Inscreva-se no seguinte tópico (o # é um caractere curinga)

mosquitto_sub -v -t openhab / alarm / #

As mensagens de status normais devem vir, assim como o endereço IP do próprio Wemos. Ande na frente de um PIR, e você também deve ver a informação da zona entrar indicando que está ABERTA, então um segundo ou mais depois, que está FECHADA, semelhante ao seguinte:

openhab / alarme / status 1

openhab / alarme / zona1 ABERTO

openhab / alarme / zona1 FECHADO

Uma vez que isso esteja funcionando, podemos configurar o OpenHAB para ter isso bem representado na GUI.

Configuração OpenHAB

As seguintes alterações são necessárias para OpenHAB:

Arquivo de transformação 'alarm.map': (opcional, para teste)

CLOSED = IdleOPEN = TriggeredNULL = Desconhecido- = Desconhecido

Arquivo de transformação 'status.map':

0 = falhou

1 = Online - = BAIXO! NULL = desconhecido

arquivo de 'itens':

String alarmMonitorState "Monitor de alarme [MAP (status.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / status: state: default]"} String alarmMonitorIPAddress "IP do monitor de alarme [% s]" {mqtt = "<[mqttbroker: openhab / alarm / ipaddress: state: default]"} Número zone1_Chart_Period "Zone 1 Chart" Contact alarmZone1State "Zone 1 State [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / zone1: state: default "} String alarmZone1Trigger" Lounge PIR [% 1 $ ta% 1 $ tr] "Número zone2_Chart_Period" Gráfico da Zona 2 "Contato alarmZone2State" Estado da Zona 2 [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone2: state: default "} String alarmZone2Trigger" First Hall PIR [% 1 $ ta% 1 $ tr] "Número zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zona 3 Estado [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} String alarmZone3Trigger" Quarto PIR [% 1 $ ta% 1 $ tr] "Número zone4_Chart_Period "Gráfico da Zona 4" Contato alarmZone4State "Estado da Zona 4 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openha b / alarm / zone4: state: default "} String alarmZone4Trigger" Main Hall PIR [% 1 $ ta% 1 $ tr]"

Arquivo de 'mapa do site' (incluindo gráficos rrd4j):

Item de texto = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone1_Chart_Period label = "Period" mappings = [0 = "Hour", 1 = "Day", 2 = "Week"] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone1_Chart_Period == 0, zone1_Chart_Period = = Não inicializado] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone1_Chart_Period == 1] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone1_Chart_Period == 2]}} Item de texto = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone2_Chart_Period label = "Período" mappings = [0 = "Hora", 1 = "Dia", 2 = "Semana"] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone2_Chart_Period == 0, zone2_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 1] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibility = [zone2_Chart_Period == 2]}} Item de texto = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = mapeamentos de "Período" = [0 = "Hora", 1 = "Dia", 2 = "Semana"] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone3_Chart_Period == 0, zone3_Chart_Period == Não inicializado] Imagem url = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 1] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibility = [zone3_Chart_Period == 2]}} Texto item = alarmZone4Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " Período "mappings = [0 =" Hora ", 1 =" Dia ", 2 =" Semana "] URL da imagem =" https:// localhost: 8080 / rrdchart.png "visibilidade = [zone4_Chart_Period == 0, zone4_Chart_Period == Não inicializado] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone4_Chart_Period == 1] URL da imagem = "https:// localhost: 8080 / rrdchart.png" visibilidade = [zone4_Chart_Period == 2] }} // OPCIONAL, mas útil para diagnosticar status e endereço IP ss Item de texto = alarmMonitorState Item de texto = alarmMonitorIPAddress

arquivo de 'regras':

regra "Mudança de estado da Zona de Alarme 1"

quando o item alarmZone1State mudou para OPEN, em seguida, postUpdate (alarmZone1Trigger, novo DateTimeType ()) alarmZone1State.state = final FECHADO

regra "Mudança de estado da Zona de Alarme 2"

quando o item alarmZone2State mudou para OPEN, em seguida, postUpdate (alarmZone2Trigger, novo DateTimeType ()) alarmZone2State.state = final FECHADO

regra "Mudança de estado da Zona de Alarme 3"

quando o item alarmZone3State mudou para OPEN, em seguida, postUpdate (alarmZone3Trigger, novo DateTimeType ()) alarmZone3State.state = final FECHADO

regra "Mudança de estado da Zona de Alarme 4"

quando o item alarmZone4State mudou para OPEN, em seguida, postUpdate (alarmZone4Trigger, new DateTimeType ()) alarmZone4State.state = final FECHADO

Pode ser necessário alterar ligeiramente a configuração do OpenHAB acima para se adequar à sua própria configuração.

Se você tiver problemas com o disparo dos PIRs, comece do início e meça as tensões para cada parte do circuito. Quando estiver satisfeito com isso, verifique sua fiação, certifique-se de que haja um terreno comum, verifique as mensagens no Wemos por meio de um console de depuração serial, verifique a comunicação MQTT e verifique a sintaxe de sua transformação, itens e arquivos de mapa do site.

Boa sorte!

Recomendado: