An Arduino/esp8266/esp32 library to directly interface with DSC security systems.
GPL-3.0 License
Bot releases are hidden (Show)
KeypadInterface
and KeypadInterface-MQTT
example sketches - emulate a DSC panel to connect DSC PowerSeries and Classic keypads as physical input devices for any general purpose, without needing a DSC panel.HomeKit-HomeSpan
example sketch (esp32) - integrate directly with Apple HomeKit as a native standalone accessory using HomeSpan
KeypadInterface
.Homebridge-MQTT
supports switching armed modes while armedTwilio-SMS
handlePanel()
VirtualKeypad-Web
updated notes to switch to this fork of ESPAsyncWebServer to resolve crashes with iOS and macOS clients.Pushbullet
example sketch updated TLS security certificate fingerprintHomebridge-MQTT
handling exit delay states while multiple partitions are armingThanks to all for the feedback and special thanks to the folks that have been contributing to the development! Your work is much appreciated - Nikhil.
Published by taligentx over 3 years ago
Unlocker
example sketch - determines the panel installer codeTimeSyncNTP
example sketch - uses NTP to automatically set the panel timeextras
directory) - thanks to Dilbert66 for this contribution!TinyGMS-SMS
example sketch - sends status via SMS with a GSM modem - thanks to jvitkauskas for this contribution!KeybusReaderIP
example sketch enables Keybus data access over IP, thanks to aboulfad for this contribution!ready
and disabled
track partition statussetTime()
sets the panel date and timepgmOutputs[]
tracks the status of PGM outputs 1-14timestampChanged
tracks when the panel sends a timestampaccessCode
tracks the access code used to arm/disarmresetStatus()
triggers a full status update of all partitions and zones - for example, after initialization or a lost network connection.pauseStatus
pauses status updates if set to true
- for example, holding status changes during a lost network connectionstop()
disables the interface - for example, prior to starting OTA updatesappendPartition()
in example sketches simplifies adding partition numbers to messagespanelVersion
tracks the panel version number*1 bypass/re-activate
used to change stay/away mode while armedVirtualKeypad-Blynk
and VirtualKeypad-Web
display alarm memory, programming zone lights, and event bufferHomeAssistant-MQTT, Homebridge-MQTT, OpenHAB-MQTT
include PGM outputs 1-14 statuswrite()
for multiple keys can now be set to block until the write is complete with an optional parameter if the char array is ephemeralwriteReady
is typically no longer needed in the sketch, the library will block if a previous write is in progress - this can be checked if the sketch needs to wait until the library can perform a nonblocking writeHomeAssistant-MQTT
sketch now includes night arm and for esp8266/esp32 includes a sensor with partition status messageshandlePanel()
is now loop()
Homebridge-MQTT
sketch not handling HomeKit target stateswrite
Published by taligentx over 5 years ago
Published by taligentx over 6 years ago
dsc.keybusConnected
to check if data is being received from the DSC panelPublished by taligentx over 6 years ago
processModuleData
disabledconfiguration.yaml
error for alarm_control_panel
Published by taligentx over 6 years ago
Note: This release changes the library methods to accomodate multiple partitions, existing sketches will need to be updated to match the new example sketches.
dscPartitions
and dscZones
in dscKeybusInterface.h
0xE6
and 0xEB
processRedundantData
now true by default to prevent storing repetitive data, reduces memory usage.Published by taligentx over 6 years ago
This release adds a buffer for panel data to prevent messages from being lost if the sketch is busy - the Status-Email and Status-Pushbullet examples would previously lose some messages waiting for the sketch to complete sending data to the remote servers.
The buffer default is set to 10 commands for Arduino and 50 for esp8266 in src/dscKeybusInterface.h
- this can be adjusted lower to use less memory or increased if the sketch takes more time. Check if bufferOverflow
is true to determine if the buffer needs to be increased.