Selected work — 03 / Door, answered
The door, answered.
An old analog intercom, taught a few new tricks by an ESP32 and Home Assistant — no app, no subscription, no camera in the cloud.
In short
No app, no camera, no way to know it exists unless you're standing in front of it — my building's intercom is a Comelit panel, analog, wired for one job: buzz the door open. I didn't want to replace it. I wanted to give it a few new senses.
A relay bridges the door-release button; an opto-isolator listens for a ring; Home Assistant sits in the middle deciding what either one should mean. Two phases are live, the third is still a sketch — the long version is 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 someone standing there pressing it.
Phase 2 — Knowing someone's there
An opto-isolator on the call line, debounced in firmware. Getting it to fire on a real ring — not just a bench test — took a trip to the datasheet.
Phase 3 — Hearing each other
Two-way audio through the same panel. Concept only for now — nothing below is wired to real hardware yet.
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 those same terminals, 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 one rule that mattered most: never let an ESP32 pin touch the intercom's own wiring directly. The relay is the only thing that ever crosses that boundary.
FIG 1A tap becomes a relay click becomes a fingertip on the real button.
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 doorbell press produced zero detection, even though a bench-test battery worked instantly. The datasheet explained why: the call line carries a burst of AC, not steady DC, and a single opto LED only conducts on the positive half-cycle. A small bridge rectifier turned that burst into something 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.
Opening the door and knowing someone's there both stop short of the obvious question: who is it? The panel already carries a mic and speaker line to the handset upstairs — the plan is to tap that same audio path from the ESP32 and stream it through Home Assistant, so a ring becomes a real conversation, not just a notification.
FIG 3Concept only — no audio hardware wired up yet.
No cloud, no subscription, no idea it's being modernised. Just a decades-old analog panel that finally answers back — and, one day, will actually talk. Phase three gets its own card the moment it stops being a sketch.