How doorlockd/doorlockd-client works
Doorlockd-client is a configurable, modular door-access controller. Its runtime loads configured modules, runs their lifecycle, and waits for an abort or exit. The principal access path reads an RFID tag, evaluates access, and emits events that other modules can act on; hardware modules also provide GPIO, lock actuation, and user feedback. The README gives only install/config/run guidance, so it does not document more detailed product behavior. Edges reflect the shown startup, module, event, RFID, and I/O references; unsampled module internals are not expanded.
Main entry points: Module.py Module manager · PN532.py PN532 reader · Events.py Event bus and state · app.py Application entry
Components 25
Runtime and events
- Application entry
app.py - Module manager
libs/Module.py - Event bus and state
libs/Events.py - Shared data
libs/data_container.py - I/O port shelf
libs/IOWrapper/ioHelpers.py
RFID access
- PN532 reader
libs/module/PN532.py - PN532 GPIO
libs/pn532gpio.py - Backend RFID auth
libs/module/DjangoBackendRfidAuth.py - Simple RFID auth
libs/module/SimpleRfidAuth.py
Hardware and feedback
- Solenoid control
libs/module/Solenoid.py - Button input
libs/module/Button.py - Buzzer output
libs/module/Buzzer.py - LED feedback
libs/module/UILed4.py - GPIO interface
libs/IOWrapper/interface.py - gpiod adapter
libs/IOWrapper/gpiod.py - Adafruit GPIO adapter
libs/IOWrapper/Adafruit_BBIO.py - PN532 I/O adapter
libs/IOWrapper/PN532.py - BBIO module
libs/module/BBIO.py - gpiod module
libs/module/GPIOD.py - Test output module
libs/module/TestOutput.py - Test PN532 module
libs/module/TestPN532.py
Door operations
- Door logic
libs/module/HbwVoordeurLogic.py - Healthchecks
libs/module/Healthchecks.py - Debug REPL
libs/module/DebugREPL.py
Other components
- Operator
Connections 35
- Operator → Application entry: starts
README.md - Application entry → Module manager: creates and runs
app.py - Application entry → Event bus and state: creates
app.py - Application entry → I/O port shelf: initializes
app.py - Module manager → PN532 reader: loads and dispatches
libs/Module.py - Module manager → Backend RFID auth: loads and dispatches
libs/Module.py - Module manager → Simple RFID auth: loads and dispatches
libs/Module.py - Module manager → Door logic: loads and dispatches
libs/Module.py - Module manager → Solenoid control: loads and dispatches
libs/Module.py - Module manager → Button input: loads and dispatches
libs/Module.py - Module manager → Buzzer output: loads and dispatches
libs/Module.py - Module manager → LED feedback: loads and dispatches
libs/Module.py - Module manager → Healthchecks: loads and dispatches
libs/Module.py - Module manager → BBIO module: loads and dispatches
libs/Module.py - Module manager → gpiod module: loads and dispatches
libs/Module.py - Module manager → Debug REPL: loads and dispatches
libs/Module.py - Module manager → Test output module: loads and dispatches
libs/Module.py - Module manager → Test PN532 module: loads and dispatches
libs/Module.py - PN532 reader → PN532 GPIO: uses
libs/module/PN532.py - PN532 reader → Event bus and state: raises access events
libs/module/PN532.py - PN532 reader → Backend RFID auth: checks access
- PN532 reader → Simple RFID auth: checks access
- Backend RFID auth → Event bus and state: raises events
libs/module/DjangoBackendRfidAuth.py - Door logic → Event bus and state: uses events
libs/module/HbwVoordeurLogic.py - Solenoid control → Event bus and state: uses events
libs/module/Solenoid.py - Button input → Event bus and state: raises events
libs/module/Button.py - LED feedback → Event bus and state: uses events
libs/module/UILed4.py - PN532 reader → Shared data: uses shared data
libs/module/PN532.py - Backend RFID auth → Shared data: uses shared data
libs/module/DjangoBackendRfidAuth.py - GPIO interface → gpiod adapter: implemented by
libs/IOWrapper/gpiod.py - GPIO interface → Adafruit GPIO adapter: implemented by
libs/IOWrapper/Adafruit_BBIO.py - GPIO interface → PN532 I/O adapter: implemented by
libs/IOWrapper/PN532.py - gpiod module → gpiod adapter: uses
libs/module/GPIOD.py - BBIO module → Adafruit GPIO adapter: uses
libs/module/BBIO.py - PN532 reader → PN532 I/O adapter: exports I/O
libs/module/PN532.py