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.

2 of 3 phases built 100% local
Door & bell
ESP32
Home Assistant
 
Hold open
Postman
Phone

Press the bell, then try "Open" and "Hold door open" — this is a schematic model of the real system, not a live connection to my apartment.

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.

Done

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.

Done

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.

Planned

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.

Planned — not built

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.