WebRTC intercom system for ESP32 devices with full Android WebRTC compatibility via ESPHome and Home Assistant integration.
This project provides:
- ESPHome Custom Component for WebRTC intercom functionality
- Full WebRTC Support using Espressif ESP WebRTC Solution
- Home Assistant Integration with sensors, switches, and automations
- Android Compatibility - Works with standard Android WebRTC devices
- Waveshare ESP32-P4-86 Support - Optimized for ESP32-P4 panel hardware
- ✅ WebRTC Signaling - WebSocket-based signaling compatible with Android
- ✅ Full WebRTC Peer Connection - DTLS-SRTP encryption, ICE candidate handling
- ✅ Audio I/O - I2S audio with ES8311 DAC and ES7210 ADC support
- ✅ Home Assistant Entities - Switches, sensors, and text sensors
- ✅ Auto-Connect - Automatic call establishment
- ✅ Auto-Accept - Automatic incoming call acceptance
- ✅ Call Management - Start, end, accept, and mute controls
-
Install ESPHome Component:
cp -r esphome/components/intercom ~/.esphome/components/ -
Add ESP WebRTC Solution:
cd ~/.esphome/components/intercom git submodule add https://github.com/espressif/esp-webrtc-solution.git esp-webrtc-solution cd esp-webrtc-solution && git submodule update --init --recursive
-
Use Configuration:
- Copy
esphome/intercom_waveshare.yamlto your ESPHome directory - Update WiFi credentials in
secrets.yaml - Compile and upload
- Copy
-
Configure in Home Assistant:
- Set target device ID in
input_text.intercom_target_device_id - Use
switch.start_intercom_callto initiate calls - Monitor status via sensors
- Set target device ID in
- ESPHome Quick Start - Quick setup and installation
- WebRTC Integration Guide - ESP WebRTC Solution setup
- Calling Guide - How to make and receive calls
- ESPHome Integration - Detailed integration guide
- Waveshare Hardware - Waveshare ESP32-P4-86 configuration
- General Hardware - General hardware setup guide
- Microcontroller: ESP32-P4
- Audio DAC: ES8311 (I2C 0x18)
- Audio ADC: ES7210 (I2C 0x40)
- I2S: Shared bus for microphone and speaker
- Sample Rates: 16kHz (mic), 48kHz (speaker)
See WAVESHARE_HARDWARE.md for pin configurations and setup.
esp32-intercom/
├── esphome/
│ ├── components/intercom/ # ESPHome custom component
│ └── intercom_waveshare.yaml # Complete configuration
├── main/ # ESP-IDF version (alternative)
├── docs/ # Additional documentation
└── README.md # This file
- ESPHome with ESP-IDF framework (v5.4.2+)
- ESP WebRTC Solution (as submodule)
- ESP32-P4 or compatible ESP32 variant
- Home Assistant (optional, for automation)
✅ Fully Compatible - Uses standard WebRTC with:
- DTLS-SRTP encryption
- ICE candidate processing
- Proper SDP generation
- Standard WebRTC media streaming
Works with unmodified Android WebRTC applications.
See LICENSE file.