Skip to content
ESPHome Developer Documentation
Search
Ctrl
K
Cancel
GitHub
Discord
RSS
Blog
Select theme
Dark
Light
Auto
Blog
Contributing
Creating a pull request from a fork
Setting up a development environment
Submitting your work
Contributing
Contributing to ESPHome
Contributing to `esphome.io`
Translating the ESPHome Device Builder
Architecture
Architectural Overview
Core Architecture
Components
Component Architecture
Common hardware interfaces
Interfacing via Bluetooth LE
Interfacing via GPIO
Interfacing via I2C
Infrared and RF frames with remote_base
Interfacing via SPI
Interfacing via Serial/UART
USB host
Implementing Automations
Socket Consumption API
TLS on ESP32
IPv4 allow list
TCP client link
TCP listener
mDNS Services
Decoding images from a source with runtime_image
Deep sleep
Advanced Topics
Entity base classes
Alarm Control Panel
Binary Sensor
Button
Climate
Cover
Display
Event
Fan
Light
Lock
Media Player
Microphone
Number
Output
Select
Sensor
Speaker
Switch
Text
Text Sensor
Time
Touchscreen
Valve
API
API
ESPHome API Protocol Details
Logging
Logging Overview
Logging Best Practices
CI
Continuous Integration (CI)
Component/platform test configurations
GitHub
Discord
RSS
Blog
Select theme
Dark
Light
Auto
Core Architecture
Copyright © 2026 ESPHome - A project from the
Open Home Foundation