Tabla de contenido:

Alarma PIR a WiFi (y domótica): 7 pasos (con imágenes)
Alarma PIR a WiFi (y domótica): 7 pasos (con imágenes)

Video: Alarma PIR a WiFi (y domótica): 7 pasos (con imágenes)

Video: Alarma PIR a WiFi (y domótica): 7 pasos (con imágenes)
Video: 🔴 TUTORIAL COMPLETO: APRENDE COMO CONFIGURAR TU ALARMA WIFI GSM 2024, Noviembre
Anonim
Image
Image
Alarma PIR a WiFi (y domótica)
Alarma PIR a WiFi (y domótica)

Visión general

Este instructable le dará la capacidad de ver la última fecha / hora (y, opcionalmente, un historial de horas) de cuándo se activaron los PIR (sensores infrarrojos pasivos) de su alarma doméstica, en su software de automatización del hogar. En este proyecto, discutiré cómo usarlo con OpenHAB (software gratuito de automatización del hogar, que yo personalmente uso), aunque funcionará con cualquier otro software o aplicación de automatización del hogar que admita MQTT (también descrito más adelante en este artículo). Este instructivo lo guiará a través de los pasos necesarios sobre cómo conectar una placa de circuito y Wemos D1 mini (una placa IOT que utiliza un chip ESP8266) que se conecta a las zonas de alarma en su caja de control de alarma para que cuando una zona (que contiene uno o más PIR), Wemos envía un mensaje de forma inalámbrica utilizando el protocolo MQTT a su software de automatización del hogar que, a su vez, muestra la última fecha / hora de ese disparo. También se proporciona el código Arduino para programar Wemos.

Introducción

La imagen de arriba es lo que veo a través de una de las pantallas de la aplicación OpenHAB en mi iPhone. El texto de fecha / hora está codificado por colores para proporcionar una representación más rápida de cuándo se activó el PIR: se mostrará en rojo (se activó en el último minuto), naranja (se activó en los últimos 5 minutos), verde (se activó en los últimos 30 minutos), azul (activado en la última hora) o de otro modo, negro. Al hacer clic en la fecha / hora, se mostrará una vista histórica de los disparadores PIR, donde un 1 significa disparado y 0 está inactivo. Hay muchos usos para esto, por ejemplo, podría complementar su solución de presencia en el hogar, puede detectar movimiento si está ausente y, a través de las reglas de OpenHAB, enviar notificaciones a su teléfono, podría usarlo como yo para ver si mis hijos están levantarse en medio de la noche, provocado por un PIR que reside fuera de sus habitaciones!

OpenHAB es simplemente el software de automatización del hogar que utilizo, hay muchos otros, y si son compatibles con MQTT, puede adaptar fácilmente este proyecto para que se adapte al software que utiliza.

Supuestos

Este instructable asume que ya tiene (o configurará):

  • Obviamente un sistema de alarma para el hogar con PIR (sensores infrarrojos pasivos) y que tiene acceso a la caja de control de alarma para conectar el cableado necesario.
  • OpenHAB (software de automatización del hogar de código abierto gratuito) en ejecución, aunque, como se mencionó, debería funcionar con cualquier software de automatización del hogar que pueda incluir un enlace MQTT. Como alternativa, puede modificar el código usted mismo para adaptarlo a sus propias necesidades.
  • Broker Mosquitto MQTT (o similar) instalado y enlazado configurado con OpenHAB (MQTT es un protocolo de tipo suscripción / publicación de mensajería que es liviano y excelente para la comunicación entre dispositivos)

Si no ejecuta OpenHAB y un bróker MQTT, consulte este excelente artículo en el sitio web MakeUseOf

¿Qué necesito?

Para crear el controlador inalámbrico, deberá obtener las siguientes partes:

  • Wemos D1 mini V2 (tiene un CHIP inalámbrico ESP8266 incorporado)
  • Un comparador LM339 (esto hará la verificación de PIR inactivo vs activado)
  • Una fuente de alimentación de 5 V CC para Wemos (O, un convertidor reductor CC-CC. Nota: es posible que un regulador de voltaje LM7805 no funcione para esta aplicación, como se explica más adelante en este proyecto).
  • Dos resistencias para un divisor de voltaje (el tamaño dependerá de los voltajes de su alarma, discutidos más adelante en el proyecto)
  • Una resistencia de 1K ohmios para actuar como una resistencia desplegable para controlar la potencia del LM339
  • Un MOSFET 2N7000 (o similar) para encender lógicamente el LM339 (posiblemente opcional, discutido más adelante en el proyecto)
  • Una placa de pruebas de tamaño adecuado para la configuración y prueba de circuitos
  • Un montón de cables de tablero para conectar todo junto
  • Herramientas necesarias: cortadores laterales, alambre de un solo núcleo
  • Un multímetro de CC (¡obligatorio!)

Paso 1: Caja de control del sistema de alarma

La caja de control del sistema de alarma
La caja de control del sistema de alarma

Primero, algunas advertencias y exenciones de responsabilidad

Personalmente, tengo un sistema de alarma Bosch. Le recomiendo encarecidamente que descargue el manual correspondiente a su sistema de alarma en particular y se familiarice con él antes de comenzar, ya que deberá apagar el sistema de alarma para conectar las zonas. ¡También te recomendaría que leas este artículo en su totalidad antes de comenzar!

A continuación se muestra una lista de algunas cosas que debe saber antes de comenzar; asegúrese de leer y comprender cada una de ellas antes de continuar. No me hago responsable si estropea su sistema de alarma y / o tiene que pagarle a su instalador para que lo arregle. Sin embargo, si lee y comprende lo siguiente y toma las precauciones necesarias, debería estar bien:

1. Mi sistema de alarma tenía una batería de respaldo dentro de la caja y también tenía un interruptor de manipulación en el interior de la tapa (que brinda acceso a la placa del sistema de alarma), por lo que incluso apaga la alarma externamente, cuando se quita el panel frontal del control. caja que disparó la alarma! Para evitar esto mientras trabajaba en el proyecto, evité la protección contra manipulaciones desconectando y luego cortocircuitando el interruptor de manipulación (el cable rojo grueso como se muestra en la foto de arriba)

2. Al volver a encender el sistema de alarma, después de aproximadamente ~ 12 horas, el panel de control de alarma comenzó a emitir un pitido con códigos de falla. Después de determinar los códigos de falla a través del manual, descubrí que me estaba advirtiendo que:

  • No se configuró la fecha / hora (necesitaba el código maestro y la secuencia de teclas del manual para reconfigurar)
  • Que la batería de respaldo no estaba conectada (solución fácil, simplemente me olvidé de volver a enchufar la batería)

3. En mi alarma, hay 4 bloques de conexión de zona (etiquetados Z1-Z4) para que los PIR se conecten en el tablero de alarma principal, sin embargo, mi sistema de alarma es capaz de 8 zonas. Cada bloque de conexión de zona puede ejecutar 2 x zonas cada uno (Z1 hace Z1 y Z5, Z2 hace Z2 y Z6 y así sucesivamente). El sistema de alarma tiene una protección contra manipulaciones incorporada para evitar que alguien diga, abra la tapa del sistema de alarma como se mencionó anteriormente, o corte los cables a un PIR. Distingue entre el sabotaje de cada zona a través de resistencias EOL (fin de línea). Estos son resistores de tamaño específico que residen en el "final de la línea", en otras palabras, dentro del PIR (o interruptor de sabotaje de la caja de control, o caja de la sirena o lo que sea que esté conectado a esa zona) Como se mencionó, estos resistores se usan como 'sabotaje protección '- técnicamente, si alguien corta los cables a un PIR - porque el sistema de alarma espera ver una cierta resistencia de ese PIR, entonces si la resistencia cambia, asume que alguien ha manipulado el sistema y activará la alarma.

Por ejemplo:

En mi alarma, la Zona "Z4" tiene 2 cables, uno se apaga con el PIR en mi pasillo y el otro se apaga con el interruptor de sabotaje de la caja de control de la alarma. Dentro del PIR del pasillo, tiene una resistencia de 3300 ohmios. El otro cable que va al interruptor de sabotaje de la caja de control tiene una resistencia de 6800 ohmios cableada en serie. Así es como el sistema de alarma (lógicamente) distingue entre sabotajes "Z4" y "Z8". Asimismo, la zona "Z3" tiene un PIR (con una resistencia de 3300 ohmios) y también el interruptor de sabotaje de la sirena (con una resistencia de 6800 ohmios) que forma "Z7". El instalador de alarma habría preconfigurado el sistema de alarma para que sepa qué dispositivo está conectado a cada zona (y alterado el tamaño de la resistencia EOL para adaptarse, porque el sistema de alarma está programado para saber de qué tamaño son las diferentes resistencias EOL. ¡Ninguna circunstancia debe cambiar el valor de estas resistencias!)

Entonces, en base a lo anterior, debido a que cada zona puede tener múltiples dispositivos conectados también (con diferentes valores de resistencia), y recordando la fórmula V = IR (voltaje = amperios x resistencia), eso también puede significar que cada zona puede tener diferentes voltajes. Lo que nos lleva al siguiente paso, midiendo el voltaje de cada zona en INACTIVO vs ACTIVADO …

Paso 2: Medición del voltaje de la zona de alarma

Medición del voltaje de la zona de alarma
Medición del voltaje de la zona de alarma
Medición del voltaje de la zona de alarma
Medición del voltaje de la zona de alarma

Una vez que haya obtenido acceso a la placa principal de su sistema de alarma (y haya pasado por alto el interruptor de sabotaje si tiene uno; como en el paso anterior) encienda nuevamente su sistema de alarma. Ahora necesitamos medir el voltaje de cada zona cuando está inactivo (sin movimiento frente al PIR) vs ACTIVADO (el PIR ha detectado movimiento) Tome un lápiz y papel para que pueda escribir sus lecturas de voltaje.

ADVERTENCIA: Es más probable que la mayor parte de su sistema de alarma funcione con 12V CC, sin embargo, tendrá su alimentación de energía inicial a 220 V (o 110 V) CA, con un transformador que convierte la potencia de CA a CC. ¡LEA el manual y tome precauciones adicionales asegurándose de que NO está midiendo ningún terminal de CA! Según la captura de pantalla de mi sistema de alarma en esta página, puede ver que en la parte inferior de la imagen se encuentra la alimentación de CA, transformada a 12V CC. Estamos midiendo los 12V DC en los cuadros rojos resaltados. Nunca toque la alimentación de CA. ¡Ten mucho cuidado!

Medición de voltaje PIR

Tengo 4 x PIR conectados a Z1 hasta Z4. Mida cada una de sus zonas de la siguiente manera.

  1. Primero, identifique el terminal GND y los terminales de zona en el panel de alarma. Los he resaltado en la imagen que se muestra en el manual de mi alarma Bosch.
  2. Tome su multímetro y configure su medición de voltaje en 20 V CC. Conecte el cable negro (COM) de su multímetro al terminal GND de la alarma. Coloque el cable rojo (+) de su multímetro en la primera zona, en mi caso con la etiqueta "Z1". Anote la lectura de voltaje. Realice los mismos pasos para las zonas restantes. Mis medidas de voltaje son las siguientes:
  • Z1 = 6,65 V
  • Z2 = 6,65 V
  • Z3 = 7,92 V
  • Z4 = 7,92 V

Según lo anterior, mis dos primeras zonas solo tienen PIR adjuntos también. Las dos últimas zonas tienen PIR y protección contra manipulaciones conectadas a ellas (sabotaje de la caja de control Z3, sabotaje de la sirena Z4). Note las diferencias de voltaje.

3. Es probable que necesite 2 personas para este próximo paso. También necesitará saber qué PIR está en qué zona. Regrese y lea el voltaje en la primera zona. Ahora haga que alguien en su casa camine frente al PIR, el voltaje debería bajar. Tome nota de la nueva lectura de voltaje. En mi caso, los voltajes se leen de la siguiente manera cuando se activan los PIR:

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

Según lo anterior, puedo ver que cuando se activan las zonas 1 y 2, el voltaje cae de 6.65V a 0V. Sin embargo, cuando se activan las zonas 3 y 4, el voltaje cae de 7,92 V a 4,30 V.

Medición de la fuente de alimentación de 12V

Usaremos el terminal de 12V DC de la caja de control de alarma para alimentar nuestro proyecto. Necesitamos medir el voltaje de la alimentación de 12 V CC en la alarma. Aunque ya indica 12V, necesitamos saber una lectura más precisa. En mi caso, en realidad lee 13.15V. Anote esto, necesitará este valor en el siguiente paso.

¿Por qué medimos voltaje?

La razón por la que necesitamos medir el voltaje para cada PIR es por el circuito que crearemos. Utilizaremos un chip comparador diferencial cuádruple LM339 (o un comparador de amplificador operacional cuádruple) como componente eléctrico principal de este proyecto. El LM339 tiene 4 comparadores de voltaje independientes (4 canales) donde cada canal toma 2 x voltajes de entrada (una entrada inversora (-) y una entrada no inversora (+), ver diagrama) Si el voltaje de la entrada inversora cae por debajo de el voltaje no inversor, entonces su salida relacionada se dibujará a tierra. Del mismo modo, si el voltaje de entrada no inversora cae por debajo de la entrada inversora, entonces la salida se eleva a Vcc. Convenientemente, en mi casa tengo 4 x PIR / zonas de alarma, por lo tanto, cada zona se conectará a cada canal en el comparador. Si tiene más de 4 x PIR, necesitará un comparador con más canales u otro LM339.

Nota: El LM339 consume energía en nano-amperios, por lo que no afectará la resistencia EOL del sistema de alarma existente.

Si esto es confuso, continúe con el siguiente paso de todos modos, ¡comenzará a tener más sentido una vez que lo conectemos!

Paso 3: creación de un divisor de voltaje

Image
Image

¿Qué es un divisor de voltaje?

Un divisor de voltaje es un circuito con 2 x resistencias (o más) en serie. Proporcionamos voltaje en (Vin) a la primera resistencia (R1) La otra pata de R1 se conecta a la primera pata de la segunda resistencia (R2) y el otro extremo de R2 se conecta a GND. Luego tomamos un voltaje de salida (Vout) de la conexión entre R1 y R2. Ese voltaje se convertirá en nuestro voltaje de referencia para el LM339. Para obtener más información sobre cómo funcionan los divisores de voltaje, vea el video de youtube de Adohms

(Nota: las resistencias no tienen polaridad, por lo que se pueden conectar de cualquier manera)

Calculando nuestro voltaje de referencia

Suponiendo que el voltaje cae cuando se activa su PIR (este debería ser el caso para la mayoría de las alarmas), entonces lo que estamos tratando de lograr es obtener una lectura de voltaje que esté prácticamente a medio camino entre nuestro voltaje inactivo más bajo y nuestro voltaje activado más alto, este se convertirá en nuestro voltaje de referencia.

Tomando mi alarma como ejemplo …

Los voltajes inactivos de la zona fueron Z1 = 6.65V, Z2 = 6.65V, Z3 = 7.92V, Z4 = 7.92V. Por tanto, el voltaje inactivo más bajo es de 6,65 V

Los voltajes activados por la zona fueron: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. El voltaje de activación más alto es, por lo tanto, 4,30 V

Por lo tanto, debemos elegir un número a la mitad entre 4.30V y 6.65V (no tiene que ser exacto, solo aproximadamente) En mi caso, mi voltaje de referencia debe estar alrededor de 5.46V. Nota: Si el voltaje inactivo más bajo y el voltaje más alto activado están muy cerca uno del otro debido a que varias zonas causan un rango de voltajes diferentes, es posible que deba crear 2 o más divisores de voltaje.

Calculando nuestros valores de resistencia para el divisor de voltaje

Ahora que tenemos un voltaje de referencia, necesitamos calcular qué tamaño de resistencias necesitamos para crear un divisor de voltaje que proporcionará nuestro voltaje de referencia. Usaremos la fuente de voltaje de 12V CC (Vs) de la alarma. Sin embargo, según el paso anterior, cuando medimos la alimentación de 12 V CC, en realidad obtuvimos 13,15 V. Necesitamos calcular el divisor de voltaje usando este valor como fuente.

Calcule Vout usando la ley de ohmios …

Vout = Vs x R2 / (R1 + R2)

… o use una calculadora de divisores de voltaje en línea:-)

Deberá experimentar con los valores de la resistencia hasta que logre la salida deseada. En mi caso, funcionó con R1 = 6.8k ohmios y R2 = 4.7K ohmios, calculados en forma larga de la siguiente manera:

Vout = Vs x R2 / (R1 + R2)

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

Vout = 61, 805/11, 500

Vout = 5.37V

Paso 4: Conecte el LM339

Cableado del Wemos D1 Mini
Cableado del Wemos D1 Mini

Divisor de voltaje para entradas inversoras LM339

Como se discutió anteriormente con respecto al comparador LM339, tomará 2 entradas. Uno será el voltaje de cada PIR al terminal no inversor (+) de cada canal, el otro será nuestro voltaje de referencia a nuestro terminal inversor (-). El voltaje de referencia debe alimentar las 4 entradas inversoras del comparador. Apague su sistema de alarma antes de realizar estos pasos.

  • Ejecute un cable desde el bloque de 12V DC en el sistema de alarma hasta el riel + en su placa de pruebas *
  • Ejecute un cable desde el bloque GND en el sistema de alarma hasta el riel de su placa de pruebas **
  • Instale el comparador LM339 en el medio de la placa de pruebas (la muesca indica lo más cercano al pin 1)
  • Instale las 2 resistencias para crear un circuito divisor de voltaje y un cable para la salida de voltaje dividida
  • Ejecute cables desde la salida de 'voltaje dividido' a cada terminal inversor LM339

* SUGERENCIA: use una pinza de cocodrilo para la alimentación si es posible, ya que esto hace que sea más fácil proporcionar energía de encendido / apagado a su proyecto ** ¡IMPORTANTE! ¡Es posible que se requiera un MOSFET SI está alimentando el Wemos desde el panel de alarma! En mi caso, el LM339, Wemos y Alarm reciben energía de la misma fuente (es decir, el sistema de alarma en sí). Esto me permite encender todo con una sola conexión de energía. Sin embargo, de forma predeterminada, los pines GPIO en Wemos se definen como pines de "ENTRADA", lo que significa que toman cualquier voltaje que se les arroje y dependen de esa fuente para proporcionar los niveles correctos de voltaje (niveles mínimo / máximo) para que Wemos gane ' t chocar o quemar. En mi caso, el sistema de alarma obtiene su energía y comienza a hacer su secuencia de arranque muy rápido, tan rápido de hecho, que lo hace antes de que Wemos pueda arrancar y declarar los pines GPIO como "INPUT_PULLUP" (voltaje subido internamente dentro del chip). Esto significa que las diferencias de voltaje harían que el Wemos colapsara cuando todo el sistema tuviera energía. La única forma de evitarlo sería apagar y encender manualmente Wemos. Para resolver esto, se agrega un MOSFET que actúa como un "interruptor lógico" para encender el LM339. Esto permite que Wemos arranque, configure sus 4 pines GPIO comparadores como "INPUT_PULLUP's", demore unos segundos y LUEGO (a través de otro pin GPIO D5 definido como SALIDA) envíe la señal "HIGH" a través del pin GPIO D5 al MOSFET, que lógicamente enciende el LM339. Recomendaría conectar el cableado como se indicó anteriormente, pero si encuentra que el Wemos falla como lo hice yo, entonces tendrá que incluir el MOSFET con una resistencia desplegable de 1k ohmios. Para obtener más información sobre cómo hacer esto, consulte el final de este instructivo.

Zonas de alarma para entradas no inversoras LM339

Ahora necesitamos tender cables desde cada zona en el panel de control de alarma hasta las entradas del comparador LM339. Con el sistema de alarma aún apagado, para cada zona alimente un cable a cada entrada no inversora (+) en el comparador LM339. Por ejemplo, en mi sistema:

  • El cable de Z1 va a la entrada 1+ del LM339
  • El cable de Z2 va a la entrada 2+ del LM339
  • El cable de Z3 va a la entrada LM339 3+
  • El cable de Z4 va a la entrada LM339 4+

Consulte el pin-out del LM339 en el paso 3 si es un recordatorio (está codificado por colores con la imagen de la placa). Una vez hecho esto, su tablero debería verse similar a la imagen que se muestra en este paso.

Encienda el sistema de alarma y mida el voltaje que sale del divisor de voltaje para asegurarse de que sea igual al voltaje de referencia calculado anteriormente.

Paso 5: Cableado del Wemos D1 Mini

Cableado del Wemos D1 mini

Ahora que tenemos todas las entradas del LM339 atendidas, ahora necesitamos cablear el Wemos D1 mini. Cada pin de salida del LM339 va a un pin Wemos GPIO (entrada / salida de propósito general) que designaremos a través del código como un pin pullup de entrada. El Wemos toma hasta 5V como máximo como su voltaje Vcc (fuente de entrada) (aunque lo regula internamente hasta 3.3V) Usaremos un regulador de voltaje LM7805 muy común (EDITAR: ver más abajo) para dejar caer el riel de 12V en la placa de pruebas hasta 5V para alimentar los Wemos. La hoja de datos del LM7805 indica que necesitamos un condensador conectado a cada lado del regulador para suavizar la potencia, como se muestra en la imagen de la placa de pruebas. El tramo más largo del condensador es positivo (+), así que asegúrese de que esté conectado de la manera correcta.

El regulador de voltaje toma voltaje (pin del lado izquierdo), tierra (pin del medio) y voltaje de salida (pin del lado derecho). Verifique el pin-out si su regulador de voltaje varía del LM7805.

(EDITAR: encontré que los amperios provenientes del panel de alarma eran demasiado altos para que los manejara el LM7805. Esto estaba causando mucho calor en el pequeño disipador de calor del LM7805 y provocando que fallara, y a su vez causando que el Wemos se detuviera En su lugar, reemplacé el LM7805 y los condensadores con un convertidor reductor CC-CC y no he tenido problemas desde entonces. Son muy fáciles de conectar. Simplemente conecte el voltaje de entrada de la alarma, primero conéctelo a un multímetro y use el tornillo del potenciómetro y ajuste hasta que el voltaje de salida sea ~ 5 V)

Pines de entrada GPIO

Para este proyecto, usamos los siguientes pines:

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

Conecte las salidas desde el LM339 a los pines GPIO relacionados en la placa Wemos, según la imagen de la placa de pruebas que se muestra en este paso. Nuevamente, he codificado por colores las entradas y las salidas coincidentes, para que sea más fácil ver qué se refiere a qué. Cada pin GPIO en el Arduino se define como un 'INPUT_PULLUP', lo que significa que se elevarán a 3.3V bajo uso normal (IDLE) y el LM339 los bajará al suelo si se activa el PIR. El código detecta el cambio de ALTO a BAJO y envía un mensaje de forma inalámbrica a su software de automatización del hogar. Si tiene problemas con este funcionamiento, es posible que tenga sus entradas inversoras y no inversoras al revés (si el voltaje de su PIR es alto cuando se activa, como sucede con la mayoría de los PIR de pasatiempos, entonces querrá que las conexiones sean las otro camino alrededor)

IDE de Arduino

Quite el Wemos del tablero, ahora necesitamos cargarle el código (enlace alternativo aquí) No entraré en detalles sobre cómo hacer esto, ya que hay muchos artículos en la web sobre cómo cargar código en Wemos u otro ESP8266 tableros tipográficos. Conecte su cable USB a la placa Wemos y a su PC y encienda el Arduino IDE. Descarga el código y ábrelo en tu proyecto. Deberá asegurarse de que la placa correcta esté instalada y cargada para su proyecto, así como el puerto COM correcto seleccionado (Herramientas, Puerto). También necesitará las bibliotecas apropiadas instaladas (PubSubClient, ESP8266Wifi) Para que la placa Wemos se incluya en su boceto, consulte este artículo.

Deberá modificar las siguientes líneas de código y reemplazarlas con su propio SSID y contraseña para su conexión inalámbrica. Además, cambie la dirección IP para que apunte a su propio agente MQTT.

// Wifi

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

Una vez cambiado, verifique su código y luego cárguelo en la placa Wemos a través de un cable USB.

Notas:

  • Si está utilizando diferentes puertos GPIO, deberá ajustar el código. Si está utilizando más o menos zonas de las que tengo, también deberá ajustar el código y TOTAL_ZONES = 4; constante para adaptarse.
  • Al iniciar mi sistema de alarma, el sistema de alarma haría una prueba de potencia a los 4 x PIR que pusieron todos los GPIO conectados a tierra, haciendo que Wemos pensara que las zonas se estaban activando. El código ignorará el envío de mensajes MQTT si ve las 4 x zonas activas al mismo tiempo, ya que asume que el sistema de alarma se está encendiendo.

Enlace de descarga alternativo al código AQUÍ

Paso 6: Prueba y configuración de OpenHAB

Pruebas y configuración de OpenHAB
Pruebas y configuración de OpenHAB

Pruebas MQTT

MQTT es un sistema de mensajería de "suscripción / publicación". Uno o más dispositivos pueden hablar con un "agente de MQTT" y "suscribirse" a un tema determinado. Cualquier mensaje entrante de cualquier otro dispositivo que esté "publicado" en el mismo tema, será enviado por el corredor a todos los dispositivos que se hayan suscrito a él. Es un protocolo extremadamente liviano y fácil de usar y perfecto como un sistema de activación simple como el de aquí. Para realizar pruebas, puede ver los mensajes MQTT entrantes de Wemos a su agente MQTT ejecutando el siguiente comando en su servidor Mosquitto (Mosquitto es uno de los muchos software de agente MQTT disponibles). Este comando se suscribe a los mensajes keepalive entrantes:

mosquitto_sub -v -t openhab / alarm / status

Debería ver mensajes entrantes provenientes de Wemos cada 30 segundos aproximadamente con el número "1" (que significa "estoy vivo"). Si ve "0" constantes (o ninguna respuesta), entonces no hay comunicación. Una vez que vea aparecer el número 1, significa que Wemos se está comunicando con el corredor de MQTT (busque "MQTT Last Will and Testament" para obtener más información sobre cómo funciona esto, o vea esta muy buena entrada de blog)

Una vez que haya demostrado que la comunicación es funcional, podemos probar que el estado de una zona se informa a través de MQTT. Suscríbase al siguiente tema (el # es un comodín)

mosquitto_sub -v -t openhab / alarm / #

Deben aparecer los mensajes de estado habituales, al igual que la dirección IP del propio Wemos. Camine frente a un PIR, y también debería ver que la información de la zona ingresa indicando que está ABIERTA, luego, aproximadamente un segundo más tarde, que está CERRADA, similar a lo siguiente:

openhab / alarma / estado 1

openhab / alarm / zone1 OPEN

openhab / alarm / zone1 CERRADO

Una vez que esto esté funcionando, podemos configurar OpenHAB para que esto esté bien representado en la GUI.

Configuración de OpenHAB

Se requieren los siguientes cambios para OpenHAB:

Archivo de transformación 'alarm.map': (opcional, para prueba)

CLOSED = InactivoOPEN = TriggeredNULL = Desconocido- = Desconocido

Archivo de transformación 'status.map':

0 = Fallido

1 = En línea - = ¡ABAJO! NULL = desconocido

archivo 'elementos':

String alarmMonitorState "Alarm Monitor [MAP (status.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / status: state: default]"} String alarmMonitorIPAddress "Alarm Monitor IP [% 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" Zone 2 Chart "Contact alarmZone2State" Zone 2 State [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone2: state: default "} String alarmZone2Trigger" First Hall PIR [% 1 $ ta% 1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 Estado [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} Cadena alarmZone3Trigger" Dormitorio PIR [% 1 $ ta% 1 $ tr] "Número zone4_Chart_Period "Gráfico de zona 4" Alarma de contactoZone4State "Estado de zona 4 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openha b / alarm / zone4: estado: predeterminado "} String alarmZone4Trigger" PIR de la sala principal [% 1 $ ta% 1 $ tr]"

Archivo 'sitemap' (incluido el gráfico rrd4j):

Elemento de texto = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone1_Chart_Period label = Asignaciones de "período" = [0 = "Hora", 1 = "Día", 2 = "Semana"] URL de la imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone1_Chart_Period == 0, zone1_Chart_Period = = Sin inicializar] URL de imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone1_Chart_Period == 1] URL de imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone1_Chart_Period == 2]}} Elemento de texto = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone2_Chart_Period label = "Period" mappings = [0 = "Hora", 1 = "Día", 2 = "Semana"] URL de la imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone2_Chart_Period == 0, zone2_Chart_Period == Uninitialized] URL de la imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone2_Chart_Period == 1] URL de la imagen = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone2_Chart_Period == 2]}} Elemento de texto = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = Asignaciones "Period" = [0 = "Hora", 1 = "Día", 2 = "Semana"] Imagen url = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone3_Chart_Period == 0, zone3_Chart_Period == Sin inicializar] Imagen url = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone3_Chart_Period == 1] Imagen url = "https:// localhost: 8080 / rrdchart.png" visibilidad = [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 "mapeos = [0 =" Hora ", 1 =" Día ", 2 =" Semana "] URL de la imagen =" https:// localhost: 8080 / rrdchart.png "visibilidad = [zone4_Chart_Period == 0, zone4_Chart_Period == Sin inicializar] Imagen url = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone4_Chart_Period == 1] Imagen url = "https:// localhost: 8080 / rrdchart.png" visibilidad = [zone4_Chart_Period == 2] }} // OPCIONAL pero útil para diagnosticar el estado y la dirección IP ss Elemento de texto = alarmMonitorState Elemento de texto = alarmMonitorIPAddress

archivo 'reglas':

regla "Cambio de estado de la zona de alarma 1"

cuando el elemento alarmZone1State cambió a OPEN y luego postUpdate (alarmZone1Trigger, new DateTimeType ()) alarmZone1State.state = CLOSED end

regla "Cambio de estado de la zona de alarma 2"

cuando el elemento alarmZone2State cambió a OPEN y luego postUpdate (alarmZone2Trigger, new DateTimeType ()) alarmZone2State.state = CLOSED end

regla "Cambio de estado de la zona de alarma 3"

cuando el elemento alarmZone3State cambió a OPEN y luego postUpdate (alarmZone3Trigger, new DateTimeType ()) alarmZone3State.state = CLOSED end

regla "Cambio de estado de la zona de alarma 4"

cuando el elemento alarmZone4State cambió a OPEN y luego postUpdate (alarmZone4Trigger, new DateTimeType ()) alarmZone4State.state = CLOSED end

Es posible que deba cambiar ligeramente la configuración de OpenHAB anterior para que se adapte a su propia configuración.

Si tiene algún problema con la activación de los PIR, comience desde el principio y mida los voltajes para cada parte del circuito. Una vez que esté satisfecho con eso, verifique su cableado, asegúrese de que haya un terreno común, verifique los mensajes en Wemos a través de una consola de depuración en serie, verifique la comunicación MQTT y verifique la sintaxis de su transformación, elementos y archivos de mapa del sitio.

¡Buena suerte!

Recomendado: