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

SoftwareDetailAccess
Home Assistant OSHAOS on Pi 5192.168.191.121:8123 · ha.tcec.ca
AppDaemonHA addon (a0d7b954_appdaemon)HA → Settings → Add-ons → AppDaemon
ESPHomeHA addonHA → Settings → Add-ons → ESPHome
Mosquitto MQTTHA addonBroker on 192.168.191.121:1883
Nabu CasaCloud remote access / SSLha.tcec.ca · prox.tcec.ca
Blue Iris NVRWindows app on 192.168.191.80192.168.191.80:8081 (admin requires desktop app)
Viking PC SoftwareWindows — COM port directory uploadSystem Administrator workstation

3.2 AppDaemon Applications

App NameClassModule FilePurpose
prox_cardProxCardprox_card.pyCore access logic — MQTT listener, SQLite lookup, strike control, TTS
prox_uiProxUIprox_ui.pyWeb UI server — access log, arm/disarm, snapshot and manual serving
motion_monitorMotionMonitormotion_monitor.pyCamera motion event handler
VikingEntryLogger(planned)viking_entry_logger.pyViking C-4000 LOG BUS serial reader — not yet deployed
hello_worldHelloWorldhello.pyDiagnostic 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

HostnameBoardConnectionReaders / OutputsMQTT Topic
wiegand-readersFreenove ESP32-WROOM #1WiFi EIS.local8 readers: 123b, boardroom, main, back, 122, kitchen, arm_station, 123dwoodhaven/prox/scan
wiegand-readers-2Freenove ESP32-WROOM #2WiFi EIS.local3 readers: 123c, 123e, server_roomwoodhaven/prox/scan
access_controlWaveshare ESP32-S3-ETH192.168.191.100 Ethernet8 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

ServicePurposeConfig Location
ElevenLabs TTSPrimary voice — Sigma Centauri (bAq8AI9QURijOtmeFFqT), model eleven_turbo_v2_5apps.yaml → prox_card + prox_ui
Google TTSFallback if ElevenLabs API unavailableBuilt into prox_card.py
Google CastAudio delivery to Nest MiniHA media_player entity
Nabu CasaSSL reverse proxy for ha.tcec.ca and prox.tcec.caHA → Settings → Home Assistant Cloud
← Previous2 · HardwareNext →4 · Configuration