This is the hardware companion to the Home Intercom project — a Home Assistant add-on that turns any media_player into a whole-home intercom system. The button firmware POSTs audio to the Home Intercom server, which handles TTS playback on your smart speakers.
How it works: Press and hold the button, speak, release → your voice plays in the target room’s speaker. Each button is mapped to a specific room via config — living room, bedroom, cinema, or broadcast to all.
Prerequisites
This device requires the Home Intercom server running in Home Assistant. See:
Hardware
| Component | Cost |
|---|---|
| ESP32-S3-DevKitC (WROOM-1 N8) | already owned |
| MAX9814 electret mic with AGC | ¥5-6 (~$0.80) |
| Momentary push button | ¥2 (~$0.30) |
| Total BOM | ~¥8 (~$1.10) |
3 wires: GPIO1 (ADC) → MAX9814 OUT, GPIO4 → button → GND. Solder GAIN to GND for 50dB desktop sensitivity.
Stage: This is a functional demo/prototype. Future hardware iterations may evolve into a smart knob form factor — a rotary encoder with push-to-talk, volume control, and a small display — staying on the desk as a dedicated intercom controller.
Features (v0.1.0 just released)
- 16kHz 16-bit mono PCM recording via Timer ISR
- PSRAM ring buffer — up to 60 seconds continuous
- Home Assistant integration —
ha_token+ `Authorization: *** header - HTTPS support for remote HA instances
- Per-room config via JSON on LittleFS — same binary, different configs
- WiFi auto-reconnect with non-blocking connection
- WS2812 RGB status LED
- Non-blocking state machine: IDLE → RECORDING → UPLOADING
- Best-effort delivery: retries 3 times, treats audio delivery > HTTP ack
Architecture
ESP32-S3 Button ──WiFi──→ Home Intercom (HA) ──→ Smart Speaker (media_player)
│ │
│ POST /api/home_intercom/record?target=study
│ Content-Type: audio/wav
│ Authorization: ***
│
└── 16-bit PCM WAV, 16kHz
Links
- GitHub (firmware): GitHub - mdj2812/intercom-button: ESP32-S3 push-to-talk desktop button for home-intercom — press, record, broadcast. · GitHub
- Home Intercom (server): GitHub - mdj2812/home-intercom: Push-to-talk PWA family intercom for Home Assistant — works with any smart speaker. · GitHub
- Release v0.1.0: Release v0.1.0 · mdj2812/intercom-button · GitHub
- HA Community thread: Home Intercom — Push-to-Talk PWA for Any Smart Speaker via Home Assistant
Happy to answer questions or take feature requests!
