CHAPTER 01System Overview
The TCEC access control system is a Home Assistant-based proximity card platform replacing a legacy AS-400 controller at 880 Taylor Creek Drive. It manages up to nine door readers, with full audit logging, voice announcements, and a browser-based management UI.
1.1 Architecture
- Reader layer: ESP32 microcontrollers decode Wiegand card data and publish to MQTT.
- Controller layer: Home Assistant OS on Raspberry Pi 5 (192.168.191.121) receives MQTT events; AppDaemon Python apps execute access logic.
- Data layer: SQLite database (
/config/prox_cards.db) stores tenants, cards, doors, permissions, and access logs. - UI layer: AppDaemon web app at prox.tcec.ca — access log, arm/disarm, tenant management.
- Voice layer: ElevenLabs TTS (Sigma Centauri voice) or Google TTS fallback; played through Google Nest Mini in office 122A.
- Kiosk layer: Raspberry Pi 4 (192.168.191.109) runs Chromium in full-screen kiosk mode on the EIS.local WiFi network.
1.2 Signal Flow
Card swipe → Wiegand reader (D0/D1 open-collector lines)
→ ESP32 GPIO (pulldown, 26-bit Wiegand format)
→ MQTT publish:
→ AppDaemon
→
→
→ ElevenLabs TTS announcement → Nest Mini speaker
→ prox.tcec.ca UI updated
→ ESP32 GPIO (pulldown, 26-bit Wiegand format)
→ MQTT publish:
woodhaven/prox/scan→ AppDaemon
prox_card.py — card lookup in SQLite→
fire_strike() → HA switch entity → Waveshare relay → electric strike PENDING→
access_log row written (Granted / Denied / Armed / Disarmed)→ ElevenLabs TTS announcement → Nest Mini speaker
→ prox.tcec.ca UI updated
1.3 Deployment Phases
| Phase | Status | Scope |
|---|---|---|
| Phase 1 | ACTIVE | Suite 123B and Boardroom on new HA system. Legacy AS-400 continues on main entrance, back entrance, suite 122, and kitchen hallway. |
| Phase 2 | PLANNED | Full cutover — all doors migrated to HA system; AS-400 decommissioned. |
1.4 Covered Doors
| Door ID | Location | ESP32 Board | GPIO D0/D1 | Notes |
|---|---|---|---|---|
| 123b | Suite 123B entrance | Freenove #1 | 4 / 5 | Phase 1 — active |
| boardroom | Boardroom / Suite 115 | Freenove #1 | 16 / 17 | Phase 1 — active |
| main_entrance | Exterior main entrance | Freenove #1 | 18 / 19 | Phase 2 |
| back_entrance | Exterior back entrance | Freenove #1 | 21 / 22 | Phase 2 |
| suite_122 | Suite 122 | Freenove #1 | 25 / 26 | Phase 2 |
| kitchen_hallway | Kitchen hallway | Freenove #1 | 27 / 32 | Phase 2 |
| arm_station | Arming station | Freenove #1 | TBD | GPIO reassignment needed; Phase 2 |
| 123d | Suite 123D | Freenove #1 | 33 / 14 | Phase 2 |
| 123c | Suite 123C | Freenove #2 | 4 / 5 | Phase 2 |
Reader Model: All card readers are CDVI DGLP FN WLC26 Wiegand 26-bit, 5 V, open-collector D0/D1.