Selected work · 03 / Door, answered
The door, answered.
An old analog intercom taught new tricks by an ESP32 and Home Assistant. No app, no subscription, no camera in the cloud.
In short
No app, no camera, invisible unless you're standing in front of it. My building's intercom is an analog Comelit panel wired for one job: buzz the door open. I didn't want to replace it, just give it new senses.
A relay bridges the door-release button. An opto-isolator listens for a ring. Home Assistant sits in the middle, deciding what each one means. Two phases are live, the third is a sketch. Long version below.
Phase 1: Opening the door
A relay wired across the intercom's own door-release button. Pressing "open" from anywhere is electrically identical to pressing it in person.
Phase 2: Knowing someone's there
An opto-isolator on the call line, debounced in firmware. Firing on a real ring, not just a bench test, meant reading the datasheet.
Phase 3: Hearing each other
Two-way audio through the same panel. Concept only: nothing below is wired to real hardware.
Phase 1
A relay standing in for a fingertip.
The door-release is a dry contact: short two terminals and the lock lets go. A relay bridges them, triggered from Home Assistant. Nothing about the intercom changes. It can't tell a phone tap from a fingertip.
- Terminals bridgedA (lock) · C (common)
- Relay GPIOGPIO26, active-high
- Pulse length700ms
The rule that mattered most: never let an ESP32 pin touch the intercom's wiring. The relay is the only thing that crosses that boundary.
FIG 1Two paths, one pair of terminals: a fingertip, or a relay standing in for one.
Phase 2
The ring that refused to be detected.
Wire a PC817 opto-isolator to the call line, debounce in firmware, done. Except a real press produced zero detection, while a bench-test battery worked instantly. The datasheet explained: the line carries a burst of AC, not steady DC, and one opto LED conducts only on the positive half-cycle. A bridge rectifier made it steady enough to detect. It's worked on every real press since.
- Terminals usedD (call) · C (common)
- Sensor GPIOGPIO27, debounced 50ms
- Fixbridge rectifier + smoothing cap
FIG 2AC in, a diode in the way, steady pulsing DC out: the whole fix in one shape.
Phase 3
The last piece: an actual conversation.
Both built phases stop short of the obvious question: who is it? The panel already carries a mic and speaker line to the handset upstairs. The plan: tap that path from the ESP32 and stream it through Home Assistant, so a ring becomes a conversation, not a notification.
FIG 3Concept only. No audio hardware yet.
No cloud, no subscription, no idea it's being modernised. Just a decades-old analog panel that finally answers back. One day it will talk too. Phase three gets its own card when it stops being a sketch.