Keycard System


Main Server

WordPress site running in the Digital Ocean cloud.

Webhooks Server

Listens to the main server for updates to propagate membership actions.

  • denhac-webhooks
  • Get webhook events from main server
    • New Member Signup + Successful Payment
      • Add the member to the mailing list
      • Add the member to google groups
      • Invite the member to the slack workspace
      • Provision a new keycard for the member
      • etc

Card Access Computer

Workstation on-site running DSX door lock management software.

  • WinDSX – door access management interface software
  • Comm Server – command bridge between WinDSX and the DSX door lock controller hardware unit
  • denhac-cards – Python automation interface to connect WinDSX functions to the webhooks server
    • Sourcecode on Github
    • Handles requests for updating cards
      • Card activation
      • Card deactivation
    • Operates the WinDSX software in an environment shared with a manual user
      • Waits a set timeout for on-interaction (incase of a manual user present)
      • Launches WinDSX and logs in
      • Waits a set time
      • Kills WinDSX
  • DSX Inc – Door lock software & hardware vendor

Lock Control Hardware

DSX door lock security system.

  • Serial interface to a Windows host PC running control software
  • Interacts through Comm Server


  1. Comm Server program stops running
    1. Python automation could be updated to detect and auto-restart
    2. Investigate Windows Event Viewer for Windows Application Logs, possibly for CS.exe
  2. Lock Control Hardware stops responding to updates
    1. May occur in the acknowledgement stages when a new member’s ID is submitted as verified
    2. Possible firmware communication lock while updating itself; refusing comms for further updates
      1. Verified by requesting WinDSX perform a full upload to the control hardware, and having no actions takes place. The hardware refuses commands.
      2. Fix by flipping DIP switch 3 to set a new location value, which confuses the Comm Server. Toggle the switch back to the original location value. Communications are able to re-establishe between the comm server and controller.
    3. Unknown state, race condition between closing WinDSX too soon
Table of Contents