GitHub - Taligentx - dscKeybusInterface - Una Biblioteca Arduino - Esp8266 - Esp32 para Interactuar Directamente Con Los Sistemas de Seguridad DSC
GitHub - Taligentx - dscKeybusInterface - Una Biblioteca Arduino - Esp8266 - Esp32 para Interactuar Directamente Con Los Sistemas de Seguridad DSC
GitHub - Taligentx - dscKeybusInterface - Una Biblioteca Arduino - Esp8266 - Esp32 para Interactuar Directamente Con Los Sistemas de Seguridad DSC
Maestro
Ir al archivo Código Sobre
Una biblioteca
Clon Arduino/esp8266/esp32 para
versión 3.0 de taligentx … on 18 Mar
397
interactuar directamente con los
HTTPS CLI de GitHub
ejemplos Versión 3.0 hace 3 meses sistemas de seguridad DSC.
extras Agregue archivos gerber para Wemos D1 Mini shield hace 2 años
https://github.com/taligentx/dscKeybusInte #
automatización del hogar
#
iot
#
arduino
#
sistema de seguridad
#
seguridad de casa
biblioteca.json Versión 3.0 hace 3 meses
#
esp32-arduino
#
esfoma
Licencia GPL-3.0
345 estrellas
50 viendo
Interfaz de bus de teclado DSC
95 tenedores
Lanzamientos
7
+ 6 lanzamientos
Colaboradores 12
Esto permite que las instalaciones de sistemas de seguridad DSC existentes conserven las C++ 97,4%
C 2,6%
Los ejemplos incorporados se pueden usar tal cual o como base para adaptarse a otros usos:
Integración domótica: Home Assistant , Apple HomeKit y Siri , Google Home , OpenHAB ,
Athom Homey
Control remoto: interfaz web, aplicación móvil Blynk , bot de Telegram (con
activación/desactivación remota a través de chat)
Notificaciones: Pushover , PushBullet , Pushsafer , Twilio SMS , TinyGSM SMS , correo
electrónico
Interfaz de teclado: emula un panel DSC para conectar teclados DSC como dispositivos
de entrada físicos para cualquier propósito general, sin un panel DSC.
Desbloqueo del código de instalador: búsqueda automática de códigos para
desbloquear paneles con códigos de instalador desconocidos
Ejemplos de integraciones:
Asistente de hogar :
OpenHAB MQTT:
robot de telegrama :
Inicio rápido
1. Instale la biblioteca de la interfaz Keybus de DSC:
Arduino IDE: Buscar DSC en el Administrador de bibliotecas - Sketch > Include
Library > Manage Libraries
¿Por qué?
Tenía : Un sistema de seguridad DSC que no estaba siendo monitoreado por un servicio de
terceros.
Estaba interesado en encontrar una solución que accediera directamente al par de líneas de
datos que usa DSC para su protocolo propietario Keybus para enviar datos entre el panel, los
teclados y otros módulos (en lugar de usar el módulo serial DSC IT-100). Aprovechar las
líneas de datos es una tarea ideal para un microcontrolador y también presentó una
oportunidad para trabajar con las plataformas Arduino y FreeRTOS (a través de esp-open-rtos
).
Si bien ha habido una excelente discusión sobre el protocolo DSC Keybus y varios proyectos
existentes, hubo algunos problemas que quedaron sin resolver:
Captura de datos Keybus propensa a errores.
Decodificación de datos limitada: hubo un buen progreso para los estados
armado/desarmado y el estado de zona parcial para una sola partición, pero por lo
demás, la mayoría de los datos no se descodificaron (en particular, faltaba el estado
activado por alarma).
Solo lectura: no se puede controlar el Keybus para que actúe como un teclado virtual.
No hay implementaciones para hacer un trabajo útil con los datos.
Características
Supervise el estado de todas las particiones:
Activación de alarma, armado/desarmado, retardo de entrada/salida, activación de
incendio, teclas de pánico del teclado
Supervisar el estado de las zonas:
Zonas abiertas/cerradas, zonas en alarma
Supervisar el estado del sistema:
Listo, problema, alimentación de CA, batería
Monitorear el estado de las salidas PGM 1-14
Teclado virtual:
Escribir claves en el panel para todas las particiones
Salidas de comando del panel de activación
Interfaz de teclado:
Emula un panel DSC para usar los teclados de las series DSC PowerSeries y Classic
como dispositivos de entrada físicos para cualquier propósito general, sin necesidad
de un panel DSC.
Hora del panel: recupere la fecha/hora actual del panel y configure una nueva
fecha/hora (incluido un ejemplo con sincronización NTP)
Desbloqueo del código de instalador del panel: determine el código de instalador del
panel de 4 dígitos
Expansor de zona virtual: la rama del expansor puede emular un módulo expansor de
zona DSC para agregar zonas al sistema de seguridad que son manejadas por el
microcontrolador. ¡Gracias a Dilbert66 por esta contribución!
Interfaz Keybus directa:
No requiere la interfaz serial DSC IT-100 .
Diseñado para una decodificación de datos y un rendimiento fiables:
Interrupciones de pin GPIO de hardware e interrupciones de temporizador para una
sincronización precisa de la captura de datos
Almacenamiento en búfer de datos: ayuda a evitar la pérdida de datos de Keybus si
el boceto está ocupado
Amplia decodificación de datos: la mayoría de los datos de Keybus, como se ve en la
guía del desarrollador de la interfaz de datos DSC IT-100, se han diseñado de forma
inversa y se han documentado en formato src/dscKeybusPrintData.cpp .
Código sin bloqueo: permite que los bocetos se ejecuten lo más rápido posible sin
usar delay o delayMicroseconds
Sistemas de seguridad soportados:
DSC PowerSeries : todos los paneles son compatibles, probados con: PC585,
PC1555MX, PC1565, PC1565-2P, PC5005, PC5010, PC5015, PC5020, PC1616, PC1808,
PC1832, PC1864
Serie clásica DSC : PC1500, PC1550, PC2550
Requiere configurar el panel a través de la programación *8 para habilitar PC16-
OUT: sección 19, opción 4.
PC2500 y PC3000 no se han probado, publique un problema si puede probar
estos paneles.
El DSC PowerSeries renombrado (como algunos sistemas ADT) también debería
funcionar con esta interfaz.
Sistemas de seguridad no soportados:
DSC Alexor (PC9155) es completamente inalámbrico y no tiene una interfaz Keybus
accesible.
La serie DSC Neo utiliza un protocolo de datos cifrados de mayor velocidad (Corbus)
que actualmente no es compatible.
Otras marcas (que no son sistemas DSC renombrados) usan protocolos diferentes y
no son compatibles.
Para Honeywell Ademco Vista 15P/20P, consulte el proyecto esphome-vistaECP
de Dilbert66
Para los sistemas Paradox, consulte el proyecto paradox-esp8266 de liaan
Microcontroladores compatibles:
Arduino :
Tableros: Uno, Mega, Leonardo, Mini, Micro, Nano, Pro, Pro Mini
Placas basadas en ATmega328P, ATmega2560 y ATmega32U4 a 16Mhz
esp8266:
Placas de desarrollo: NodeMCU v2 o v3, Wemos D1 Mini, etc.
Incluye soporte de marco Arduino y WiFi por ~ $ 3 USD enviados.
esp32:
Placas de desarrollo: NodeMCU ESP-32S, Doit ESP32 Devkit v1, Wemos Lolin
D32, etc.
Incluye compatibilidad con el marco Arduino (se requiere v2.0.2 o más
reciente), dos núcleos, Wi-Fi y Bluetooth por ~$5 USD enviados.
esp32-s2:
Incluye compatibilidad con el marco Arduino (se requiere v2.0.2 o posterior) y
WiFi.
Características posibles (¡PRs bienvenidos!):
Emulación DSC IT-100
Desbloquear códigos de instalador de 6 dígitos
Notas de lanzamiento
3.0
Nuevo: Soporte de panel de la serie DSC Classic: PC1500, PC1550, PC2550
Nuevo: KeypadInterface y KeypadInterface-MQTT bocetos de ejemplo: emule un
panel DSC para conectar teclados DSC PowerSeries y Classic como dispositivos de
entrada físicos para cualquier propósito general, sin necesidad de un panel DSC.
Nuevo: HomeKit-HomeSpan boceto de ejemplo (esp32): integre directamente con
Apple HomeKit como un accesorio independiente nativo usando HomeSpan
Nuevo: Bocetos de ejemplo de notificaciones Pushover y Pushsafer para
esp8266/esp32
Nuevo: compatibilidad con microcontrolador esp32-s2
Nuevo: el código se reestructuró para admitir nuevas funciones a partir de bocetos
utilizando indicadores #define: habilita la compatibilidad con la serie Classic y
KeypadInterface .
0.3
Nuevo: Estado para particiones 2-8, zonas 33-64
Nuevo: soporte de teclado virtual para la partición 2
Nuevo: boceto de ejemplo de integración de Athom Homey , ¡gracias a MagnusPer
por esta contribución!
Nuevo: diseños de PCB, aportados por sjlouw
Nuevo: Número configurable de particiones y zonas para personalizar el uso de la
memoria: dscPartitions y dscZones en dscKeybusInterface.h
Nuevo: KeybusReader decodificación de comandos 0xE6 y 0xEB
Cambiado: Dividir ejemplos por plataforma
Cambiado: los bocetos de Arduino ya no usan el pin 4 para evitar un conflicto con la
tarjeta SD en los protectores de Ethernet.
Cambiado: ejemplos de MQTT actualizados con campos de nombre de usuario y
contraseña
Cambiado: processRedundantData ahora verdadero de forma predeterminada para
evitar el almacenamiento de datos repetitivos, reduce el uso de memoria.
Nota: Esta versión cambia los métodos de la biblioteca para adaptarse a múltiples
particiones, los bocetos existentes deberán actualizarse para que coincidan con los
nuevos bocetos de ejemplo.
0.2
Nuevo: Estado para las zonas 9-32
Nuevo: boceto de ejemplo de integración de Home Assistant
Nuevo: almacenamiento en búfer de datos del panel, se agrega dscBufferSize para
dscKeybusInterface.h permitir la configuración de cuántos comandos del panel se
almacenan en el búfer para personalizar el uso de la memoria (usa 18 bytes de
memoria por comando almacenado en el búfer).
0.1 - Versión inicial
Ejemplos
Los ejemplos incluidos demuestran cómo usar la biblioteca y pueden usarse tal cual o
adaptarse para integrarse con otro software. Publique un problema/solicitud de extracción si
ha desarrollado (y le gustaría compartir) un boceto/integración que otros puedan usar.
Estado : procesa e imprime el estado del sistema de seguridad en una interfaz serial,
incluida la lectura de serial para el teclado virtual. Esto demuestra cómo determinar si el
estado del sistema de seguridad ha cambiado, qué ha cambiado y cómo tomar medidas
en función de esos cambios. Publique un problema/solicitud de extracción si tiene un
uso para estados adicionales del sistema; por ahora, solo se rastrea un subconjunto de
todos los comandos decodificados para el estado para limitar el uso de la memoria:
Particiones listas
Particiones armadas fuera/en casa/desarmadas
Particiones en alarma
Retardo de salida de particiones en progreso
Retraso de entrada de particiones en progreso
Alarma contra incendios para mamparas
Zonas abiertas/cerradas
Zonas en alarma
Salidas PGM 1-14
Teclado de alarma de fuego/auxiliar/pánico
Obtener/establecer la fecha y hora del panel
Número de código de acceso de usuario (1-40)
Alimentación de CA del panel
bateria panel
Problema del panel
Keybus conectado
HomeKit-HomeSpan (esp32): Se integra directamente con Apple HomeKit como un
accesorio nativo (para la aplicación Home y Siri) usando HomeSpan , sin necesidad de un
servicio o dispositivo por separado. Demuestra el armado/desarmado de particiones,
estado de zonas, alarmas de incendio, estado de salidas PGM y salidas de comando del
panel de control.
Esto se puede usar para enviar mensajes de texto SMS si el proveedor de servicios del
número tiene una puerta de enlace de correo electrónico a SMS ; ejemplos para EE. UU.:
T-móvil: [email protected]
Verizon: [email protected]
AT&T: [email protected]
Nota: Se recomienda instalar Blynk como un servidor local para mantener el control del
sistema de seguridad interno de su red.
KeybusReader : Decodifica e imprime datos desde Keybus a una interfaz serial, incluida
la lectura de serial para el teclado virtual. Esto se puede usar para ayudar a decodificar el
protocolo Keybus y también es útil como herramienta de solución de problemas para
verificar que los datos se muestren sin errores. Para esp8266/esp32,
KeybusReaderIP habilita la conectividad a través de WiFi.
Alambrado
El Keybus DSC PowerSeries opera a ~12.6v y la serie Classic opera a ~13.75v, un par de
resistencias por línea de datos reducirá esto a un voltaje apropiado para cada
microcontrolador.
Arduino:
La línea amarilla DSC (reloj) se conecta a un pin de interrupción de hardware :
para el Uno, estos son los pines 2 o 3. Los bocetos de ejemplo usan
dscClockPin: 3.
La línea verde DSC (datos) se puede conectar a cualquiera de los pines digitales
restantes 2-12. Los bocetos de ejemplo usan dscReadPin: 5 y dscWritePin: 6.
LÉAME.md
esp8266: conecte las líneas DSC a los pines GPIO que normalmente son bajos para
evitar poner datos falsos en el Keybus: D1 (GPIO5), D2 (GPIO4) y D8 (GPIO15). Los
bocetos de ejemplo utilizan dscClockPin: D1, dscReadPin: D2, dscWritePin: D8. Para
la serie Classic, dscPC16Pin: D7 (GPIO 13).
esp32: conecte las líneas DSC a los pines GPIO que no envían señales en el
arranque: 4, 13, 16-39. Para el teclado virtual, use los pines 4, 13, 16-33; los pines 34-
39 son solo de entrada y no se pueden usar. Los bocetos de ejemplo usan
dscClockPin: 18, dscReadPin: 19, dscWritePin: 21. Para la serie Classic, dscPC16Pin:
17.
El teclado virtual usa un transistor NPN y una resistencia para escribir en el Keybus. La
mayoría de los transistores NPN de señal pequeña deberían ser adecuados, por ejemplo:
2N3904
BC547, BC548, BC549
Ese NPN aleatorio en la parte inferior de su contenedor de piezas (mi elección)
Energía:
Las placas Arduino se pueden alimentar directamente desde el panel DSC
Las placas de desarrollo esp8266/esp32 deben usar un regulador de voltaje externo
configurado en 5v al pin de 5v:
Los módulos convertidores reductores reductores basados en LM2596 son
razonablemente eficientes y comúnmente disponibles por menos de $ 1 USD
enviados (eBay, Aliexpress, etc.): estos son los módulos que uso.
Los módulos convertidores reductores reductores basados en MP2307 (también
conocidos como Mini360) también están disponibles, pero algunas versiones se
calientan con una eficiencia casi tan pobre como la de los reguladores lineales.
Los reguladores de voltaje lineal (LM7805, etc.) funcionarán, pero son
ineficientes y se calientan; es posible que necesiten un disipador de calor.
Las placas esp8266/esp32 también pueden usar un regulador de voltaje externo
establecido en 3.3v al pin de 3.3v; esto evita el regulador de voltaje integrado del
módulo. Por ejemplo, algunos mini clones Wemos D1 usan reguladores de voltaje
de baja corriente que pueden causar problemas de estabilidad. Las placas
NodeMCU no se ven afectadas ya que utilizan el regulador AMS1117 más potente.
Las conexiones deben soldarse, las placas de prueba pueden causar problemas.
Teclado virtual
Esto permite que un boceto envíe teclas al panel DSC para emular los teclados DSC físicos y
permite el control total del panel desde el boceto u otro software.
Teclado: 0-9 * #
Armado fijo (requiere código de acceso si el armado rápido está deshabilitado): s
Armado total (requiere código de acceso si el armado rápido está deshabilitado): w
Armar sin demora de entrada (requiere código de acceso): n
Alarma de incendios: f
Alarma auxiliar: a
Alarma de pánico: p
Habilitar/deshabilitar timbre de puerta: c
Restablecimiento de fuego: r
Salida rápida: x
Cambiar partición: / + partition number o establecer writePartition el número de
partición. Ejemplos:
Cambiar a la partición 2 y enviar claves: /2 + 1234
Vuelva a la partición 1: /1
Establecer directamente en el croquis: dsc.writePartition = 8;
Salida de comando 1: [
Salida de comando 2: ]
Salida de comando 3: {
Salida de comando 4: }
Configuración DSC
Opciones del panel que afectan a esta interfaz, configuradas por *8 + installer code :
consulte el Unlocker esquema si no conoce el código de instalación de su panel. Consulte el
manual de instalación de DSC de su panel para configurar estas opciones:
void setup() {
...
ArduinoOTA.onStart([]() {
dsc.stop();
...
Los diseños de PCB están disponibles en : ¡ extras/PCB Layouts gracias a sjlouw por
contribuir con estos diseños!
El soporte para otras plataformas depende de ajustar el código para usar sus
temporizadores específicos de la plataforma. Además de las interrupciones de cambio de
pin de hardware para capturar el reloj DSC, esta biblioteca utiliza interrupciones de
temporizador específicas de la plataforma para capturar la línea de datos DSC sin
bloqueo 250 μs después de que cambia el reloj (sin usar delayMicroseconds() ). Esto es
necesario porque el reloj y los datos son asíncronos: he observado que los datos del
teclado se retrasan hasta 160 μs después de que cae el reloj.
Utilización de recursos:
Arduino: 1 pin digital de interrupción de hardware, 2 pines digitales (+1 para la serie
Classic), interrupción Timer1
esp8266: 3 pines digitales (+1 para la serie Classic), interrupción del temporizador 1
esp32/esp32-s2: 3 pines digitales (+1 para la serie Classic), interrupción timer0
Solución de problemas
Si tiene problemas:
1. Ejecute el KeybusReader boceto de ejemplo y vea la salida en serie para verificar que la
interfaz esté capturando datos correctamente sin informar errores de CRC.
Si los datos no aparecen o tienen errores, verifique el reloj y el cableado de la línea
de datos, las resistencias y todas las conexiones. Las placas de prueba pueden
causar problemas, las conexiones deben soldarse en su lugar.
2. Para el teclado virtual, ejecute el KeybusReader boceto de ejemplo e ingrese las teclas a
través de la serie y verifique que las teclas aparezcan en la salida y que el panel
responda.
Si las teclas no se muestran en la salida, verifique la distribución de pines del
transistor, la resistencia base y las conexiones de cableado.
3. Ejecute el Status boceto de ejemplo y vea la salida en serie para verificar que la interfaz
muestre correctamente los eventos del sistema de seguridad a medida que se arman las
particiones, se abren las zonas, etc.
Referencias
AVR Freaks - DSC Keybus Protocol : una excelente discusión sobre cómo se envían los datos
en el Keybus.
stagf15/DSC_Panel : una biblioteca que casi funciona para PC1555MX pero tenía errores de
tiempo y datos. Escribir esta biblioteca desde cero fue principalmente un ejercicio de
programación; de lo contrario, debería ser posible parchear la biblioteca DSC_Panel.