Rev 2026-06-25
TCEC Access Control System Documentation
CHAPTER 03Software Components
All software layers from Home Assistant OS through to ESPHome firmware and third-party services.
3.1 Platform
| Software | Detail | Access |
|---|
| Home Assistant OS | HAOS on Pi 5 | 192.168.191.121:8123 · ha.tcec.ca |
| AppDaemon | HA addon (a0d7b954_appdaemon) | HA → Settings → Add-ons → AppDaemon |
| ESPHome | HA addon | HA → Settings → Add-ons → ESPHome |
| Mosquitto MQTT | HA addon | Broker on 192.168.191.121:1883 |
| Nabu Casa | Cloud remote access / SSL | ha.tcec.ca · prox.tcec.ca |
| Blue Iris NVR | Windows app on 192.168.191.80 | 192.168.191.80:8081 (admin requires desktop app) |
| Viking PC Software | Windows — COM port directory upload | System Administrator workstation |
3.2 AppDaemon Applications
| App Name | Class | Module File | Purpose |
|---|
| prox_card | ProxCard | prox_card.py | Core access logic — MQTT listener, SQLite lookup, strike control, TTS |
| prox_ui | ProxUI | prox_ui.py | Web UI server — access log, arm/disarm, snapshot and manual serving |
| motion_monitor | MotionMonitor | motion_monitor.py | Camera motion event handler |
| VikingEntryLogger | (planned) | viking_entry_logger.py | Viking C-4000 LOG BUS serial reader — not yet deployed |
| hello_world | HelloWorld | hello.py | Diagnostic placeholder — safe to remove |
ℹ
Patch App Pattern: HTML modifications use a temporary AppDaemon app that edits the target file, runs once, then is removed. See Chapter 6.
3.3 ESPHome Devices
| Hostname | Board | Connection | Readers / Outputs | MQTT Topic |
|---|
| wiegand-readers | Freenove ESP32-WROOM #1 | WiFi EIS.local | 8 readers: 123b, boardroom, main, back, 122, kitchen, arm_station, 123d | woodhaven/prox/scan |
| wiegand-readers-2 | Freenove ESP32-WROOM #2 | WiFi EIS.local | 3 readers: 123c, 123e, server_room | woodhaven/prox/scan |
| access_control | Waveshare ESP32-S3-ETH | 192.168.191.100 Ethernet | 8 relay switch entities (door strikes) | ESPHome native API |
⚠
MQTT Topic Prefix: All Wiegand boards publish to woodhaven/prox/scan — a historical prefix. Do not change it without updating all ESPHome configs simultaneously.
3.4 Third-Party Services
| Service | Purpose | Config Location |
|---|
| ElevenLabs TTS | Primary voice — Sigma Centauri (bAq8AI9QURijOtmeFFqT), model eleven_turbo_v2_5 | apps.yaml → prox_card + prox_ui |
| Google TTS | Fallback if ElevenLabs API unavailable | Built into prox_card.py |
| Google Cast | Audio delivery to Nest Mini | HA media_player entity |
| Nabu Casa | SSL reverse proxy for ha.tcec.ca and prox.tcec.ca | HA → Settings → Home Assistant Cloud |