Information Density: ESPHome – Signal Evidence & AI Readability

ESPHome

(https://esphome.io) 📸 Data Snapshot: June 20, 2026
Information Density — The Lens

Classify each sentence as substantive or hollow. Grounding markers — numbers, currencies, dates, technical units, named entities — outweigh marketing adjectives. When fluff sits right next to hard evidence, the fluff is forgiven.

Info Density Power-words vs. Substance ratio.
30 Impact Weight: 30 / 100
100% Reputation

The information density is exceptionally high, with almost zero heading fluff. Headings like ‘Which microcontrollers does ESPHome support?’ and ‘Adding A Binary Sensor’ lead directly into technical implementation details. The body substance ratio is dense with hardware specs (ESP32, RP2040), specific C++ vs YAML comparisons, and memory allocation metrics (15–30 KB of SRAM). There is no detectable concept repetition; each page serves a distinct functional purpose without redundant value proposition restatements.

Information Density is read straight from the body copy: how much of the text carries grounded, checkable substance versus hollow filler. Below is the clean text the engine analyzed, then the industry’s known generic-claim patterns to weigh it against.

📝 The Narrative — clean text per page (the substance-vs-filler signal)
HOMEPAGE (https://esphome.io) ESPHome – Smart Home Made Simple
[IMG: ESPHome dashboard showing connected devices]
[H1] ESPHome
Turn your ESP32, ESP8266, BK72xx, RP2040, and other supported boards into powerful smart home devices with simple YAML configuration. Installation Guide Browse Components Device Database No Coding RequiredSimple YAML configuration files instead of complex C++ code.Wireless UpdatesUpdate your devices over-the-air without physical access.Modular DesignSupport for hundreds of sensors, displays, and other components.Local ControlDevices work locally without cloud dependencies.
[H2] Who Uses ESPHome?
Section titled “Who Uses ESPHome?”
DIY Enthusiasts - Create custom sensors, switches, and displays tailored to specific needs
Smart Home Hobbyists - Extend their home automation systems with affordable custom devices
Professional Integrators - Deploy reliable, locally-controlled smart devices for clients
Manufacturers - Create Made for ESPHome certified products with standardized firmware
[H2] Which microcontrollers does ESPHome support?
Section titled “Which microcontrollers does ESPHome support?”
Espressif ESP32 and ESP8266 - Wide support for ESP32 and ESP8266 microcontrollers, the heart of many IoT projects.
RP2040 - Support for Raspberry Pi's RP2040 microcontroller.
Others - Nordic Semiconductor nRF52, Realtek RTL87xx, and Beken BK72xx chips are supported.
Desktop - Many ESPHome components can be run on a desktop computer using the host platform!
[H2] Getting Started
Section titled “Getting Started”
From Home AssistantThe easiest way to get started with ESPHome is through the Home Assistant app.Home Assistant GuideCommand LineFor advanced users who prefer working with the command line.Command Line GuideReady-Made ProjectsStart with a pre-configured project for common use cases.Browse Projects
1781 chars
SUB-PAGE (https://esphome.io/guides/getting_started_hassio/) Getting Started with ESPHome and Home Assistant – ESPHome – Smart Home Made Simple
[H1] Getting Started with ESPHome and Home Assistant
In this guide, we'll walk you through how to install ESPHome onto a device/microcontroller using the ESPHome Device
Builder, installed as a Home Assistant app.
This is generally the easiest way to get started with ESPHome.
[H2] Introduction to ESPHome
Section titled “Introduction to ESPHome”
ESPHome allows you to create "configurations" which allow you to turn common microcontrollers into smart home devices.
A device "configuration" consists of one or more YAML files and, based on the
content of the file(s), ESPHome creates custom firmware which you can then install directly onto your device. Hardware
defined in the configuration--such as sensors, switches, lights, and so on--will automatically appear in Home
Assistant's user interface.
Note that there are two "parts" to ESPHome:
The part which runs on the device/microcontroller, and...
The part which runs on your computer system, whether that's a single-board computer (SBC) such as a Raspberry Pi or
a laptop/desktop-class system.
The ESPHome Device Builder provides a simple web user interface (UI) which allows you to create, edit and install your
device configurations onto your devices.
[H2] Installing ESPHome Device Builder
Section titled “Installing ESPHome Device Builder”
To install the ESPHome Device Builder in Home Assistant, click the following button:
[IMG: Open your Home Assistant instance and show the dashboard of an app.]
This should open the ESPHome app page; once you're there, just click the INSTALL button:
Installation of the app may take a moment or two. Once done, click "Start" and then click "Open Web UI".
NOTE
If you're running Home Assistant in a way that does not provide access to apps, you may
run the ESPHome Device Builder independently in Docker.
The web UI will present a wizard which will walk you through creating your first configuration:
The wizard begins by asking you how you'd like to create your configuration. You have three options:
New Device Setup: The wizard guides you through platform selection, board configuration, and Wi-Fi
setup to create a basic working configuration.
Import from File: Upload an existing ESPHome configuration file (.yaml or .yml). This is useful for
restoring backups and migrating configurations. You can browse for files or drag and drop them directly
onto the dialog.
Empty Configuration: Creates a minimal configuration file for advanced users who prefer to write
their own configuration from scratch or paste from devices.esphome.io.
After creating your first configuration, you'll need to install it on your device.
NOTE
The initial installation of ESPHome onto a new device is often the most difficult and/or intimidating part -- at
least until you've done it a few times.
If you haven't done this before, please see Physical Device Connection.
If you didn't do so when prompted upon creating your first device, you'll need to enter your Wi-Fi network credentials
immediately following installation so that your device can connect to your Wi-Fi network and subsequently communicate
with Home Assistant.
[H2] Device Builder Interface
Section titled “Device Builder Interface”
Let's take a quick tour of the ESPHome Device Builder interface.
The main page displays a list of all configuration files for nodes you've created. For each file, there are a few
actions you can perform:
UPDATE: This button appears when the device is running an ESPHome version which is older than that available in
the ESPHome Device Builder app.
EDIT: This will open the configuration editor.
LOGS: This allows you to view logs emitted by the device. If a device is connected via USB, you can choose to use
the USB/serial connection; otherwise, it will attempt to connect to the device and (once connected) display the logs
via the Wi-Fi connection.
Overflow menu: This is a dropdown menu which allows you to perform some additional actions. Of note are:
Validate: This will validate the configuration file.
Install: Opens the Install dialog.
Clean Build Files: This will delete all of the generated build files; it can help to resolve compile issues
should they occur. This is safe to perform at any time and you should try this before reporting bugs or other
issues.
Delete: This will delete the configuration file.
The configuration files for ESPHome are stored in the <HOME_ASSISTANT_CONFIG>/esphome/ directory. For example, the
configuration for the "Bedroom Light" node in the picture above can be found in /config/esphome/bedroom-light.yaml.
NOTE
Home Assistant apps run as individual containers; this can make accessing your configuration files/logs a bit
challenging. If you wish to do so, you'll need to install Home Assistant's
SSH app, configure it
with a username and password and also disable "Protection Mode" (please assess the risks associated with doing so).
Finally, to access the logs from a device through an SSH client, you can log in and use a command like
docker exec -it addon_15ef4d2f_esphome esphome logs /config/esphome/bedroom-light.yaml.
See Getting Started Command Line for more detail.
[H2] Adding Features
Section titled “Adding Features”
After stepping through the wizard, you should have a device configuration (YAML) file. In the ESPHome Device Builder,
click on "EDIT" to open that file and add a GPIO switch to the configuration
like this:
switch: - platform: gpio name: "Living Room Dehumidifier" pin: GPIO5
In Home Assistant, the example code above will look like this:
In the example above, we're simply adding a switch that's called "Living Room Dehumidifier" and is connected to the pin
GPIO5. This switch could really control anything -- lights or a tabletop fan, for example. Its name and function is
arbitrary and should be set as is appropriate for your particular application.
[H2] Adding A Binary Sensor
Section titled “Adding A Binary Sensor”
Next, let's add a binary sensor which will monitor a GPIO pin to
determine and report its state.
binary_sensor: - platform: gpio name: "Living Room Window" pin: number: GPIO0 inverted: true mode: input: true pullup: true
In Home Assistant, the example code above will look like this:
After adding this to your device's configuration file, be sure to click "SAVE" to save the changes you've made to your
configuration...and read on to the next section!
[H2] Updating your Device
Section titled “Updating your Device”
Any time you make changes to your device's configuration file, you'll need to update the associated physical device
with your modified configuration. Put another way, just saving the configuration file alone does not update the
ESPHome device with the changes you've made.
Each time you modify a device's configuration file, you need to update the device by clicking INSTALL to recompile
and reinstall your updated configuration onto the device.
Note that you won't need to have the device connected to your system with a USB data cable again, as (once ESPHome is
installed on your device) it can update the device over the air.
[H2] Connecting your device to Home Assistant
Section titled “Connecting your device to Home Assistant”
Once your configuration is installed on your device and it's connected to your Wi-Fi, Home Assistant will automatically
discover it (assuming your network permits this) and offer to configure it:
[IMG: Open your Home Assistant instance and show the ESPHome integration.]
Alternatively, you can manually add the device on the Home Assistant Integrations page. To do so, click on the "Add
Integration" button (bottom right), search for "ESPHome" and enter the ESPHome device's host name. The host name is
based on the name you've given to the device; if you named your device "living-room-lamp", its host name will be
living-room-lamp.local. You can also enter the device's IP address, if for some reason you prefer to use that.
You can repeat this process for each ESPHome device.
[H2] Where To Go Next
Section titled “Where To Go Next”
Great! ? You've successfully set up your first ESPHome project and installed your first ESPHome custom firmware to your
device. You've also learned how to enable some basic components via the configuration file.
Now is a great time to go take a look at the Components. Hopefully you'll find all the
hardware components you need there. If you're having any problems or want to request new features, please either create
a new issue on the GitHub issue tracker or find us on the
Discord chat. Be sure to read the FAQ, as well!
[H2] See Also
Section titled “See Also”
ESPHome Docs
Getting Started with the ESPHome Command Line
Security Best Practices
8611 chars
SUB-PAGE (https://esphome.io/components/) ESPHome Docs – ESPHome – Smart Home Made Simple
[H1] ESPHome Docs
This is the top-level ESPHome documentation index. Browse the tables below, use the sidebar menu, or the search
function to find the information you're looking for.
[H3] Help improve this documentation
Section titled “Help improve this documentation”
If you find any errors in this site, corrections are welcome. You can submit a Pull Request (PR) in the
GitHub repo with corrections. If you don't know how to create a PR you
can just use the "Edit this page on GitHub" link on the page in question which will take you to the source file
for that page.
Alternatively, post in the Documentation channel in the Discord server.
[H2] ESPHome Configuration
Section titled “ESPHome Configuration”
ESPHome is configured in YAML files - use these links for basic and advanced
information about ESPHome configuration files.
YAML ​Configuration Packages Substitutions External ​Components
[H2] Supported Microcontrollers
Section titled “Supported Microcontrollers”
ESP3​2​ ESP8​2​6​6​ RP2​0​4​0​ BK7​2​xx RTL8​7​xx LN8​8​2​x Host NRF5​2​
[H2] Microcontroller Peripherals
Section titled “Microcontroller Peripherals”
Peripherals which directly support the operation of the microcontroller's processor(s).
PSRAM Deep ​Sleep ESP3​2​-​P4​ ​LDO ​regulator
[H2] ESPHome Automations
Section titled “ESPHome Automations”
"When this happens, I want it to do that..."
Automations are how we customize ESPHome devices to respond/behave exactly how you want them to.
Overview Actions,​ ​Triggers,​ ​Conditions Templates
[H2] ESPHome Components
Section titled “ESPHome Components”
ESPHome-specific components or components supporting ESPHome device provisioning post-installation.
Core Captive ​Portal Copy Demo External ​Components Globals Improv ​via ​BLE Improv ​via ​Serial Interval JSON Mapping XXTEA Script Factory ​Reset
[H2] Network Hardware
Section titled “Network Hardware”
WiFi ESP3​2​ ​Hosted Ethernet OpenThread Zigbee
[H2] Network Protocols
Section titled “Network Protocols”
Network ​Core ESP-​NOW HTTP ​Request mDNS MQTT Native ​API Packet ​Transport Serial ​Proxy StatsD UDP WireGuard Zigbee
[H2] Bluetooth/BLE
Section titled “Bluetooth/BLE”
Bluetooth ​Proxy ESP3​2​ ​BLE ​Beacon ESP3​2​ ​BLE ​Client ESP3​2​ ​BLE ​Server ESP3​2​ ​BLE ​Tracker Improv ​via ​BLE Nordic ​UART ​Service ​(​NUS)​ RP2​0​4​0​ ​BLE Zephyr ​BLE ​Server
[H2] Management and Monitoring
Section titled “Management and Monitoring”
Debug ESP3​2​ ​Camera ​Web ​Server Logger Prometheus Safe ​Mode StatsD Syslog Web ​Server
[H2] Update Installation
Section titled “Update Installation”
Install updates over-the-air (OTA).
OTA ​Core OTA ​Updates OTA ​Updates ​for ​nRF5​2​ OTA ​Updates ​via ​HTTP ​Request
[H2] Update Management
Section titled “Update Management”
Create update entities simplifying management of OTA updates.
Update ​Core Managed ​Updates
[H2] Hardware Peripheral Interfaces/Busses
Section titled “Hardware Peripheral Interfaces/Busses”
1​-​Wire CAN ​Bus I²​C ​Bus I²​S ​Audio OpenTherm SPI ​Bus TinyUSB UART USB ​CDC-​ACM USB ​Host USB ​UART
[H2] I/O Expanders/Multiplexers
Section titled “I/O Expanders/Multiplexers”
CH4​2​2​G CH4​2​3​ MAX6​9​5​6​ ​-​ ​I²​C ​Bus MCP2​3​0​XX ​-​ ​I²​C ​Bus MCP2​3​SXX ​-​ ​SPI ​Bus PCA6​4​1​6​A PCA9​5​5​4​ PCF8​5​7​4​ PI4​IOE5​V6​4​0​8​ SN7​4​HC1​6​5​ SN7​4​HC5​9​5​ SX1​5​0​9​ TCA9​5​4​8​A ​I²​C ​Multiplexer TCA9​5​5​5​ WeiKai ​SPI/​I²​C ​UART/​IO ​Expander XL9​5​3​5​
[H2] 1-Wire Bus
Section titled “1-Wire Bus”
Platforms which specifically support or extend the index, allowing communication with
1-Wire-based devices.
DS2​4​8​4​ GPIO
[H2] CAN Bus
Section titled “CAN Bus”
Platforms which specifically support or extend the index, allowing communication with
CAN-based devices.
ESP3​2​ ​CAN MCP2​5​1​5​
[H2] Sensor Components
Section titled “Sensor Components”
Sensors are organized into categories; if a given sensor fits into more than one category, it will appear multiple times.
[H3] Core
Section titled “Core”
Sensor ​Core Template ​Sensor Home ​Assistant MQTT ​Subscribe Number ​Sensor Uptime ​Sensor WiFi ​Signal ​Strength
[H3] Air Quality
Section titled “Air Quality”
AGS1​0​ Volatile ​Organic ​Compound ​Sensor Air ​Quality ​Index AirThings ​BLE Radon ​&​ ​CO2​ ​&​ ​Volatile ​organics CCS8​1​1​ CO2​ ​&​ ​Volatile ​organics CM1​1​0​6​ CO2​ EE8​9​5​ CO2​ ​&​ ​Temperature ​&​ ​Pressure ENS1​6​0​ CO2​ ​&​ ​Air ​Quality GCJA5​ Particulate GP2​Y1​0​1​0​AU0​F Particulate Grove ​Multichannel ​Gas ​V2​ NO2​ ​&​ ​CO ​&​ ​Ethanol ​&​ ​Volatile ​organics HC8​ CO2​ ​&​ ​Temperature ​&​ ​Humidity HM3​3​0​1​ Particulate iAQ-​Core CO2​ ​&​ ​Volatile ​organics MH-​Z1​9​ CO2​ ​&​ ​Temperature MiCS-​4​5​1​4​ Gas ​concentration PM1​0​0​6​ ​Sensor Particulate PM2​0​0​5​ ​Sensor Particulate PMSA0​0​3​I Particulate PMSX0​0​3​ Particulate RadonEye ​BLE Radon SCD3​0​ CO2​ ​&​ ​Temperature ​&​ ​Humidity SCD4​X CO2​ ​&​ ​Temperature ​&​ ​Humidity SDS0​1​1​ ​Sensor Particulate SEN0​3​2​1​ Ozone SEN5​x Temperature ​&​ ​Humidity ​&​ ​Volatile ​organics ​&​ ​NOx SEN6​x Particulate ​&​ ​Temperature ​&​ ​Humidity ​&​ ​VOC ​&​ ​NOx ​&​ ​CO2​ SenseAir CO2​ SFA3​0​ Formaldehyde SGP3​0​ CO2​ ​&​ ​Volatile ​organics SGP4​x Volatile ​organics ​&​ ​NOx SM3​0​0​D2​ Air ​quality SPS3​0​ Particulate T6​6​1​3​/​1​5​ CO2​ ZyAura CO2​ ​&​ ​Temperature ​&​ ​Humidity
[H3] Analogue
Section titled “Analogue”
ADC ESP ​internal ADC1​2​8​S1​0​2​ 8​-​channel ​ADC ADS1​1​1​5​ 4​-​channel ​ADC ADS1​1​1​8​ 4​-​channel ​ADC CD7​4​HC4​0​6​7​ 1​6​-​channel ​analog ​multiplexer MCP3​0​0​8​ 8​-​channel ​ADC MCP3​2​0​4​ ​/​ ​MCP3​2​0​8​ 4​-​channel ​ADC MCP3​2​2​1​ ADC NAU7​8​0​2​ ADC Resistance
[H3] Bluetooth Low Energy (BLE)
Section titled “Bluetooth Low Energy (BLE)”
Alpha3​ AM4​3​ Lux ​&​ ​Battery ​level BLE ​Client ​Sensor BLE ​RSSI HHCCJCY1​0​ ​(​MiFlora ​Pink)​ Soil ​moisture ​&​ ​Temperature ​&​ ​Light Inkbird ​IBS-​TH1​ ​Mini Temperature ​&​ ​Humidity Mopeka ​Pro ​Check ​LP Tank ​level Mopeka ​Standard ​Check ​LP Tank ​level RuuviTag Temperature ​&​ ​Humidity ​&​ ​Accelerometer ThermoPro ​BLE Xiaomi ​BLE Various
[H3] Digital Signals
Section titled “Digital Signals”
Duty ​Cycle Pulse ​Counter Pulse ​Meter Pulse ​Width
[H3] Distance
Section titled “Distance”
A0​1​NYUB Acoustic ​distance A0​2​YYUW Acoustic ​distance GL-​R0​1​ ​Time ​of ​Flight ​Sensor IR ​optical ​distance HRXL ​MaxSonar ​WR Acoustic ​distance JSN-​SR0​4​T Acoustic ​distance TOF1​0​1​2​0​ IR ​optical ​distance Ultrasonic ​Sensor Acoustic ​distance VL5​3​L0​x IR ​optical ​distance Zio ​Ultrasonic ​Sensor Acoustic ​distance
[H3] Electricity
Section titled “Electricity”
ADE7​8​8​0​ Voltage ​&​ ​Current ​&​ ​Power ADE7​9​5​3​ Power ATM9​0​E2​6​ Voltage ​&​ ​Current ​&​ ​Power ATM9​0​E3​2​ Voltage ​&​ ​Current ​&​ ​Power BL0​9​0​6​ Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Energy BL0​9​3​9​ Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Energy BL0​9​4​0​ Voltage ​&​ ​Current ​&​ ​Power BL0​9​4​2​ Voltage ​&​ ​Current ​&​ ​Power CS5​4​6​0​A Voltage ​&​ ​Current ​&​ ​Power CSE7​7​6​1​ Voltage ​&​ ​Current ​&​ ​Power CSE7​7​6​6​ Voltage ​&​ ​Current ​&​ ​Power CT ​Clamp Alternating ​Current ​(​AC)​ Daly ​BMS Voltage ​&​ ​Current ​&​ ​Power DLMS ​Meter Electrical ​counter DSMR Electrical ​counter EmonTx Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Energy ​&​ ​Temperature HLW8​0​1​2​ Voltage ​&​ ​Current ​&​ ​Power HLW8​0​3​2​ Voltage ​&​ ​Current ​&​ ​Power INA2​1​9​ Direct ​Current ​(​DC)​ INA2​2​6​ Direct ​Current ​(​DC)​ ​&​ ​Power INA2​2​8​ DC ​Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Charge INA2​2​9​ DC ​Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Charge INA2​3​7​ DC ​Voltage ​&​ ​Current ​&​ ​Power INA2​3​8​ DC ​Voltage ​&​ ​Current ​&​ ​Power INA2​3​9​ DC ​Voltage ​&​ ​Current ​&​ ​Power INA2​6​0​ DC ​Current ​&​ ​Power INA3​2​2​1​ 3​-​Ch ​DC ​current Kamstrup ​KMP District ​Heating ​Meter MAX9​6​1​1​ Voltage ​&​ ​Current ​&​ ​Power ​&​ ​Temperature PZEM ​AC Voltage ​&​ ​Current ​&​ ​Power PZEM ​DC Voltage ​&​ ​Current ​&​ ​Power PZEM0​0​4​T Voltage ​&​ ​Current ​&​ ​Power SDM ​Meter Modbus ​energy ​monitor Selec ​Meter Modbus ​energy ​monitor Teleinfo Electrical ​counter Total ​Daily ​Energy
[H3] Environmental
Section titled “Environmental”
Absolute ​Humidity AHT1​0​ ​/​ ​AHT2​0​ ​/​ ​AHT2​1​ ​/​ ​DHT2​0​ Temperature ​&​ ​Humidity AirThings ​BLE Temperature ​&​ ​Humidity ​&​ ​Pressure AM2​3​1​5​C Temperature ​&​ ​Humidity AM2​3​2​0​ Temperature ​&​ ​Humidity b-​parasite Moisture ​&​ ​Temperature ​&​ ​Humidity ​&​ ​Light BH1​9​0​0​NUX Temperature BME2​8​0​ Temperature ​&​ ​Humidity ​&​ ​Pressure BME6​8​0​ Temperature ​&​ ​Humidity ​&​ ​Pressure ​&​ ​Gas BME6​8​0​ ​via ​BSEC Temperature ​&​ ​Humidity ​&​ ​Pressure ​&​ ​Gas BME6​8​x ​via ​BSEC2​ Temperature ​&​ ​Humidity ​&​ ​Pressure ​&​ ​Gas BMP0​8​5​ Temperature ​&​ ​Pressure BMP2​8​0​ Temperature ​&​ ​Pressure BMP3​8​8​ ​and ​BMP3​9​0​ Temperature ​&​ ​Pressure BMP5​8​1​ Temperature ​&​ ​Pressure Dallas ​DS1​8​B2​0​ Temperature Dew ​Point DHT Temperature ​&​ ​Humidity DHT1​2​ Temperature ​&​ ​Humidity DPS3​1​0​/​DPS3​6​8​ Temperature ​&​ ​Pressure EMC2​1​0​1​ Temperature ENS1​6​0​ CO2​ ​&​ ​Air ​Quality ENS2​1​0​ Temperature ​&​ ​Humidity HDC1​0​8​0​ Temperature ​&​ ​Humidity HDC2​0​1​0​ Temperature ​&​ ​Humidity HDC2​0​8​0​ Temperature ​&​ ​Humidity HDC3​0​2​x Temperature ​&​ ​Humidity HHCCJCY1​0​ ​(​MiFlora ​Pink)​ Soil ​moisture ​&​ ​Temperature ​&​ ​Light Honeywell ​ABP Pressure ​&​ ​Temperature Honeywell ​ABP2​ ​I2​C Pressure ​&​ ​Temperature Honeywell ​HIH ​I2​C Temperature ​&​ ​Humidity HTE5​0​1​ Temperature ​&​ ​Humidity HTU2​1​D ​/​ ​Si7​0​2​1​ ​/​ ​SHT2​1​ Temperature ​&​ ​Humidity HTU3​1​D Temperature ​&​ ​Humidity Hydreon ​Rain ​Sensor Rain HYT2​7​1​ Temperature ​&​ ​Humidity Inkbird ​IBS-​TH1​ ​Mini Temperature ​&​ ​Humidity Internal ​Temperature Temperature LM7​5​B Temperature LPS2​2​ Temperature ​&​ ​Barometric ​Pressure MCP9​8​0​8​ Temperature MH-​Z1​9​ CO2​ ​&​ ​Temperature MLX9​0​6​1​4​ Temperature MPL3​1​1​5​A2​ Temperature ​&​ ​Pressure MS5​6​1​1​ Pressure MS8​6​0​7​ Temperature ​&​ ​Humidity ​&​ ​Pressure NPI-​1​9​ Pressure NTC ​Thermistor Temperature PMWCS3​ Soil ​moisture ​&​ ​Temperature QMP6​9​8​8​ Temperature ​&​ ​Pressure RadonEye ​BLE Radon RuuviTag Temperature ​&​ ​Humidity ​&​ ​Accelerometer SCD3​0​ CO2​ ​&​ ​Temperature ​&​ ​Humidity SCD4​X CO2​ ​&​ ​Temperature ​&​ ​Humidity SDP3​x ​/​ ​SDP8​0​0​ ​Series Pressure SFA3​0​ Formaldehyde SHT3​X-​D Temperature ​&​ ​Humidity SHT4​X Temperature ​&​ ​Humidity SHTCx Temperature ​&​ ​Humidity SMT1​0​0​ Moisture ​&​ ​Temperature SPA0​6​ Temperature ​&​ ​Pressure STS3​X Temperature STTS2​2​H Temperature TC7​4​ Temperature TE-​M3​2​0​0​ Temperature ​&​ ​Pressure TEE5​0​1​ Temperature TMP1​0​2​ Temperature TMP1​0​7​5​ Temperature TMP1​1​7​ Temperature WTS0​1​ Temperature XDB4​0​1​ Pressure XGZP6​8​xx ​Series Differential ​Pressure
[H3] Health/Safety
Section titled “Health/Safety”
Seeed ​Studio ​MR6​0​BHA2​ ​mmWave Breathing ​&​ ​heartbeat ​detection Seeed ​Studio ​MR6​0​FDA2​ ​mmWave Presence ​&​ ​Fall ​detection
[H3] Light
Section titled “Light”
AM4​3​ Lux APDS9​3​0​6​ Lux APDS9​9​6​0​ Colour ​&​ ​Gesture AS7​3​4​1​ Spectral ​Color ​Sensor BH1​7​5​0​ Lux LTR3​0​1​ Lux LTR3​0​3​ Lux LTR3​2​9​ Lux LTR3​9​0​ Lux ​&​ ​UV LTR5​0​1​ Lux ​&​ ​Proximity LTR5​5​3​ Lux ​&​ ​Proximity LTR5​5​6​ Lux ​&​ ​Proximity LTR5​5​8​ Lux ​&​ ​Proximity LTR5​5​9​ Lux ​&​ ​Proximity LTR6​5​9​ Proximity MAX4​4​0​0​9​ Lux OPT3​0​0​1​ Lux TCS3​4​7​2​5​ Lux ​&​ ​RGB ​colour TSL2​5​6​1​ Lux TSL2​5​9​1​ Lux VEML3​2​3​5​ Lux VEML6​0​3​0​ Lux VEML7​7​0​0​ Lux
[H3] Magnetic
Section titled “Magnetic”
AS5​6​0​0​ 1​2​-​Bit ​Magnetic ​Position ​Sensor HMC5​8​8​3​L 3​-​Axis ​magnetometer MLX9​0​3​9​3​ 3​-​Axis ​magnetometer MMC5​6​0​3​ 3​-​Axis ​magnetometer MMC5​9​8​3​ 3​-​Axis ​magnetometer QMC5​8​8​3​L 3​-​Axis ​magnetometer
[H3] Miscellaneous
Section titled “Miscellaneous”
AS3​9​3​5​ Storm ​lightning b-​parasite Moisture ​&​ ​Temperature ​&​ ​Humidity ​&​ ​Light Binary ​Sensor ​Map Map ​binary ​to ​value Combination Duty ​Time EZO ​sensor ​circuits (​pH)​ FS3​0​0​0​ Air ​velocity GDK1​0​1​ Radiation Growatt ​Solar Solar ​rooftop Havells ​Solar Solar ​rooftop Integration Kuntze ​pool ​sensor LC7​0​9​2​0​3​F Battery ​Monitor LVGL ​widget M5​Stack ​Unit ​8​ ​Angle MAX1​7​0​4​3​ Battery MicroNova ​pellet ​stove Modbus ​Sensor Nextion Sensors ​from ​display Person ​Sensor ​(​SEN2​1​2​3​1​)​ Resol ​VBus Rotary ​Encoder Sendspin ​Sensor SMT1​0​0​ Moisture ​&​ ​Temperature Sound ​Level SY6​9​7​0​ Battery ​charge ​IC Tuya ​Sensor TX2​0​ Wind ​speed ​&​ ​Wind ​direction uFire ​EC ​sensor EC ​&​ ​Temperature uFire ​ISE ​sensor pH ​&​ ​Temperature WireGuard
[H3] Motion
Section titled “Motion”
APDS9​9​6​0​ Colour ​&​ ​Gesture BMI1​6​0​ Accelerometer ​&​ ​Gyroscope BMI2​7​0​ Accelerometer ​&​ ​Gyroscope LD2​4​1​0​ Motion ​&​ ​Presence LD2​4​1​2​ Motion ​&​ ​Presence LD2​4​2​0​ Motion ​&​ ​Presence LD2​4​5​0​ Motion ​&​ ​Presence LSM6​DS Accelerometer ​&​ ​Gyroscope Motion ​(​IMU)​ MPU6​0​5​0​ Accelerometer ​&​ ​Gyroscope MPU6​8​8​6​ Accelerometer ​&​ ​Gyroscope MSA3​0​1​ Accelerometer MSA3​1​1​ Accelerometer RD-​0​3​D Motion ​&​ ​Presence RuuviTag Temperature ​&​ ​Humidity ​&​ ​Accelerometer Seeed ​Studio ​MR2​4​HPC1​ ​mmWave Motion ​&​ ​Presence
[H3] Thermocouple
Section titled “Thermocouple”
KMeterISO K-​Type MAX3​1​8​5​5​ K-​Type MAX3​1​8​5​6​ All ​types MAX3​1​8​6​5​ Platinum ​RTD MAX6​6​7​5​ K-​Type MCP9​6​0​0​ All ​types
[H3] Weight
Section titled “Weight”
HX7​1​1​ Load ​cell ​amplifier Xiaomi ​Miscale
Looking for a sensor that outputs its values as an analog voltage? Have a look at the
ADC Sensor together with a formula like in the TEMT6000 configuration.
[H2] Binary Sensor Components
Section titled “Binary Sensor Components”
Binary Sensors are organized into categories; if a given sensor fits into more than one category, it will appear multiple times.
[H3] Core
Section titled “Core”
Binary ​Sensor ​Core Template ​Binary ​Sensor GPIO Home ​Assistant Host ​SDL2​ Status Switch
[H3] Capacitive Touch
Section titled “Capacitive Touch”
CAP1​1​8​8​ ​Capacitive ​Touch ​Sensor ESP3​2​ ​Touch ​Pad MPR1​2​1​ ​ ​Capacitive ​Touch ​Sensor TTP2​2​9​
[H3] Mechanical
Section titled “Mechanical”
Matrix ​Keypad TM1​6​3​7​ TM1​
15000 chars
SUB-PAGE (https://esphome.io/changelog/2026.6.0/) ESPHome 2026.6.0 – June 2026 – ESPHome – Smart Home Made Simple
[H1] ESPHome 2026.6.0 - June 2026
Motion ​(​IMU)​ BMI2​7​0​ Accelerometer ​&​ ​Gyroscope LSM6​DS Accelerometer ​&​ ​Gyroscope Router ​Speaker PCM5​1​2​2​ XDB4​0​1​ Pressure
[H2] Release Overview
Section titled “Release Overview”
ESPHome 2026.6.0 retires the legacy in-tree dashboard, replacing it with the new ESPHome Device Builder,
which reached 1.0.0 this release. The release also raises the default WiFi
security mode on ESP8266 to WPA2 and finally makes WiFi and ethernet enable_on_boot: false reclaim the
15–30 KB and 3–8 KB of internal SRAM they were always supposed to, and delivers up to 4.5× faster LVGL config
validation. A wide audio-stack modernization brings zero-copy ring buffers, any-bit-depth mixing, and a new
router speaker, while a multi-PR effort prepares the codebase for ESP-IDF 6 and native RISC-V clang-tidy. It
also adds a new motion IMU framework with BMI270 and LSM6DS drivers, two USB-serial drivers, a PCM5122 audio
DAC, YAML frontmatter, and a top-level build_flags option that finally works on native IDF.
[H2] Upgrade Checklist
Section titled “Upgrade Checklist”
If you use an ESP8266 on a legacy WPA-only (TKIP) router, pin min_auth_mode: WPA under wifi: or the device will stop associating
If you use the dsmr electricity_switch_position sensor, move it from sensor: to text_sensor:
If you use the nextion display with dump_device_info: true, remove that option (device info is always logged now)
If you still load components from a custom_components/ folder, migrate them to external_components:
If your time: component uses platform: homeassistant with an explicit timezone:, note that Home Assistant will no longer override your configured zone
If you use the dlms_meter component with the provider: option, expect a deprecation warning; the option is now ignored and will be removed in 2026.11.0
If you maintain external components calling mark_failed("...") or status_set_error("..."), switch to mark_failed(LOG_STR("...")) / status_set_error(LOG_STR("..."))
If you maintain external components using cv.only_with_esp_idf or CORE.using_esp_idf, replace them with cv.only_on_esp32 / CORE.is_esp32
If you have lambdas calling text_sensor->raw_state, switch to text_sensor->get_raw_state()
If you have lambdas referencing the mipi_dsi::MIPI_DSI C++ type, rename it to mipi_dsi::MipiDsi
[H2] ESPHome Device Builder Replaces the Legacy Dashboard
Section titled “ESPHome Device Builder Replaces the Legacy Dashboard”
The new ESPHome Device Builder, shipped as an opt-in public beta in 2026.5.0, reached
1.0.0 this release and replaces the legacy
in-tree dashboard, which is being retired. The Device Builder lives in two repos,
device-builder (Python backend) and
device-builder-frontend (web UI), and as of 2026.6.0 it
is the dashboard bundled by default in the official Home Assistant ESPHome add-on.
[IMG: The ESPHome Device Builder device list]
What it brings over the legacy dashboard:
Visual component and automation builder alongside a CodeMirror YAML editor, with a left-sidebar device
navigator. The legacy dashboard was a plain text editor over a .yaml file.
Component catalog with dependency resolution and a per-board pin info viewer that maps GPIO
capabilities and shows which component is using each pin.
Firmware job queue with progress, history, and cancel for compile / install / clean, replacing the
legacy one-operation-at-a-time model.
Remote builder: one Device Builder instance can offload OTA builds to another over a peer-paired link
(mDNS discovery, out-of-band fingerprint confirmation, identity rotation, per-peer auto-route).
Labels, areas, an editable friendly name, device cloning, and multi-select bulk actions
(update, delete, archive, and label across an arbitrary set of devices).
Out-of-sync detection: an encryption-state mismatch badge on every device, plus version and config-hash
in-sync diagnostics in the device drawer.
YAML diff view, cross-config YAML search with surrounding context, and a command palette
(⌘K / Ctrl-K).
Card and table views with configurable columns and faceted filters (platform / status / area / labels).
Real settings UI with light / dark / system theme and localization underway across multiple languages.
First-run WiFi onboarding and an expanded install-method dialog: Web Serial flashing, server-side USB
(relabeled for the Home Assistant host when running as the add-on), web.esphome.io download, and manual
.bin download.
The 2026.5.0 Use new Device Builder Preview opt-in toggle is gone; the Device Builder is simply the
dashboard now.
[H2] ESP8266 Default WiFi Security Raised to WPA2
Section titled “ESP8266 Default WiFi Security Raised to WPA2”
ESP8266 now defaults to min_auth_mode: WPA2, matching the ESP32 default that has shipped for years. ESPHome
has been printing a deprecation warning on every ESP8266 config without an explicit min_auth_mode since 2026.1,
calling out exactly this flip. With ~40% of ESPHome installs running on ESP8266 hardware, this is the broadest
platform-wide change in the release (#16682 by
@swoboda1337).
Configurations connecting to modern WPA2/WPA3 access points need no change. Devices on legacy WPA-only (TKIP)
routers must pin the old behavior explicitly:
wifi: min_auth_mode: WPA
[H2] WiFi and Ethernet Now Truly Free Their Memory When Disabled at Boot
Section titled “WiFi and Ethernet Now Truly Free Their Memory When Disabled at Boot”
enable_on_boot: false on wifi: and ethernet: previously skipped only the start() call, leaving the entire
driver resident in DMA-capable internal SRAM. Two PRs by @kbx81 split the heavy
allocation work into a lazy-init path that only runs when the interface is actually enabled, so a dormant
interface now costs zero internal RAM.
Reclaimed memory on ESP32:
WiFi: roughly 15–30 KB of DMA-capable internal SRAM freed when enable_on_boot: false
(#16606). Field-tested on ESP32-S3 with W5500 SPI ethernet
I2S audio + bluetooth_proxy: free internal SRAM under peak load went from ~14 KB to ~32 KB, with min-free
measurements reaching 78 KB in some configurations.
Ethernet: roughly 3–8 KB freed when enable_on_boot: false, matching parity with the WiFi lifecycle
(#16607). Brings ethernet.enable / ethernet.disable
actions and ethernet.connected / ethernet.enabled conditions, mirroring the WiFi automation surface.
This is groundwork for running WiFi and ethernet side by side in a single configuration: each interface can now
be brought up on demand without paying for the one that is not in use.
The W5500 SPI driver also got a CPU win in #16596 by
@kahrendt: large frame transfers now go through an interrupt-driven DMA path
instead of busy-waiting the CPU. Measured streaming 48 kHz 24-bit FLAC over W5500, ethernet task CPU usage
dropped from ~5% to ~3.8%, roughly a quarter lower.
[H2] LVGL Configuration Validation Up to 4.5× Faster
Section titled “LVGL Configuration Validation Up to 4.5× Faster”
The new device builder UI revalidates configurations on every save, which made esphome config latency a
direct UX cost. LVGL configs were the worst offender. A five-PR series by
@bdraco attacks the hot path in LVGL schema construction:
Memoize and lazily build container_schema (#16567) -
repeated validation median dropped from 210 ms to 17 ms on a representative LVGL config.
Build widget update action schemas lazily (#16569) -
saves roughly 200 ms at lvgl import time.
Merge dict-extend chains (#16614) - 2.81× speed-up
on read_config (0.246 s → 0.087 s on the lvtest host.yaml).
Memoize obj_schema by widget type (#16615) - 2.14×
speed-up stacked on top.
Build automation_schema event validators lazily (#16633)
4.5× reduction in per-call cost (281 ms → 63 ms across 29 widget types in a microbench).
The user-visible effect: every save in the device builder is noticeably snappier, especially on configurations
with large LVGL screens.
[H2] Audio Stack Modernization
Section titled “Audio Stack Modernization”
@kahrendt led a wide-ranging audio rework this cycle, replacing the
allocate-and-copy AudioSourceTransferBuffer pattern with a zero-copy RingBufferAudioSource across the
critical audio paths.
Zero-copy ring-buffer rollout eliminates one allocation and one extra copy per chunk of audio processing:
resampler (#16560)
AudioDecoder for the speaker media player (#16564)
micro_wake_word (#16595)
voice_assistant (#16597) - also drops two 1024-byte send
buffers in favor of reading directly from the ring buffer
Mixer supports any bit depth (#16524). The mixer speaker
now accepts 8, 16, 24, or 32 bits per sample, lifting the last remaining 16-bit-only restriction from the
audio stack. Backed by esp-audio-libs v3.1.0 / v3.2.0, with the upstream library using template
specializations to keep the new code paths as fast as the old 16-bit-only version.
Resampler bit-depth pass-through (#16892). Now that the
mixer handles any bit depth, the resampler defaults to passing the input audio's bit depth through unchanged
rather than auto-converting to match the output speaker. This avoids burning CPU cycles in the resampler when
the downstream mixer would do a faster conversion anyway.
New router speaker component (#16592) for switching
between output speakers at runtime via the router.speaker.switch_output action. A typical use case is
switching between SPDIF and analog I2S outputs live from a select entity, with audio staying in sync after
the switch. See router for details.
micro_wake_word task stack can live in PSRAM (#16632),
saving roughly 3 KB of internal SRAM on the ESP32-S3 with no measurable performance impact. Set
task_stack_in_psram: true.
PSRAM task-stack handling consolidated (#16628) so
audio_file, audio_http, mixer, resampler, sendspin, and speaker.media_player all share the same
validation pattern, with a bug fix for task_stack_in_psram: false on the speaker media player.
[H2] ESP-IDF 6 and Native RISC-V clang-tidy
Section titled “ESP-IDF 6 and Native RISC-V clang-tidy”
A multi-PR effort by @swoboda1337 makes static analysis substantially better
at catching real-firmware bugs:
script/clang-tidy now supports RISC-V targets natively (#16809)
clang's upstream RISC-V backend can now analyze ESP32-C3/C6/H2/P4 builds instead of falling back to the
32-bit x86 stand-in that was used for the Xtensa path.
Native ESP-IDF clang-tidy is now the comprehensive pass (#16823).
The arduino toolchain has a blind spot where its headers pull std:: float math overloads into the global
namespace, hiding performance-type-promotion-in-math-fn findings. The IDF toolchain catches them.
Float-to-double promotion fixed across the codebase
(#16812) - display, daikin_arc, nau7802, sgp4x,
thermopro_ble, tuya all switched from C <math.h> to the float-typed std:: overloads, keeping math
in float on 32-bit MCUs instead of needlessly promoting to double.
clang-tidy passes on ESP-IDF 6 (#16850) - sdkconfig
pinned to newlib, GCC-only flags stripped, ledc HAL guard added under static analysis. This is the
foundation for upcoming ESP-IDF 6 support.
arduino-esp32 stub for managed IDF components (#16695)
on PlatformIO, components like FastLED that declare REQUIRES arduino-esp32 now resolve to a stub that
re-exports the framework via CMake INTERFACE, instead of the IDF Component Manager trying to download a
duplicate.
100% patch coverage gating (#16827 by
@jesserockz) - new PRs must cover every changed line. The project-level
coverage stays informational so contributors are not penalized for pre-existing untested code.
[H2] New Components and Hardware Support
Section titled “New Components and Hardware Support”
@clydebarrow landed a coordinated IMU stack: a generic motion
hub component that provides acceleration, angular rate, and derived pitch/roll values, plus actions for
automatic pitch/roll calibration (#16226). Two concrete
drivers ride on top:
Bosch BMI270 (#16202) - used in M5Stack Tab5 and
Espressif's EchoEar
STMicro LSM6DS3TR-C (#16232) - used in the Seeed
ReTerminal D1001
New sensors and DACs:
PCM5122 audio DAC by @remcom
(#15709) - the Texas Instruments stereo I2S DAC popular in
Raspberry Pi HATs, with mute, digital volume, and four configurable GPIO pins exposed through the standard
pin schema.
XDB401 pressure sensor by @RT530
(#15108) - I2C pressure and temperature from the XIDIBEI
XDB401.
USB-serial drivers by @p1ngb4ck:
FTDI FT23XX family (#14587) - covers FT232R, FT2232C,
FT2232H, FT4232H, FT232H, FT230X, and AM/BM variants; chip type auto-detected from the USB descriptor;
multi-channel chips supported as separate channels.
Prolific PL2303 family (#16885) - covers the legacy
PL2303H/HX through the modern G-series; baud rate encoding selected per chip type.
New display: WAVESHARE-ESP32-S3-TOUCH-AMOLED-2.16 added to the mipi_spi driver
(#16887 by @clydebarrow).
[H2] DLMS Smart Meter Component Overhaul
Section titled “DLMS Smart Meter Component Overhaul”
@Tomer27cz refactored the dlms_meter component to use the external
dlms_parser library
(#15458), substantially broadening smart-meter support:
Dynamic OBIS code schema - define custom sensors, text sensors, or binary sensors by their OBIS code
(e.g. "1-0:99.99.9") instead of being limited to the hardcoded property list.
Binary sensor support is new.
Decryption key now optional - meters that broadcast plaintext are supported directly.
Flexible UART baud rate - the 2400-baud requirement is gone; configure the UART to whatever your meter
speaks.
New configuration variables - auth_key, custom_patterns, skip_crc, and receive_timeout for
meters with non-standard behavior.
The legacy schema continues to work and the provider key is now ignored with a deprecation warning, slated
for removal in 2026.11.0. Existing configurations should still validate without change.
The companion DSMR component also got a fix and feature pass
(#16561 by @PolarGoose),
including support for EON Hungary meters, custom auth keys, and automatic hex-string detection in equipment
ID fields. Note that electricity_switch_position moved from sensor to text_sensor, which may need a YAML
update.
[H2] Networking, Zephyr, and Platform Plumbing
Section titled “Networking, Zephyr, and Platform Plumbing”
Zephyr IPv6 networking on nRF52 (#16336 by
@Ardumine) is the first step toward OpenThread support on the nRF52840 via
Zephyr. Adds a Zephyr-specific IPAddress class backed by struct in6_addr, networking Kconfig, and three
new nRF52 network test fixtures. IPv6 defaults to enabled on nRF52.
RP2350 / RP2040 variant config (#16602 by
@jesserockz) brings the ESP32-style variant option to the rp2040
platform block, so the same platform can target the RP2040 or RP2350 and emits matching
USE_RP2040_VARIANT_<VARIANT> build flags. The variant is auto-derived from the board's MCU; specifying both
must match.
esp32_hosted PSRAM transport buffers
(#16627 by @swoboda1337) -
new use_psram: true option moves the esp_hosted transport mempool out of DMA-capable internal RAM and into
PSRAM, fixing boot-time sdio_mempool_create asserts on memory-tight ESP32-P4 + LVGL UI configur
15000 chars
🧭 Industry Context — common generic-claim patterns in Software, SaaS & Tech Products to weigh the text against
Generic Claims: the all-in-one platform, trusted by thousands of companies, increase productivity by X percent, save hours every week, the leading platform for, built for teams of all sizes…
Red Flags: AI claims without explaining what the AI does, customer logos without case study or testimonial evidence, no live product access or demo, SOC 2 claims without audit period or report availability, productivity claims without methodology, pricing hidden behind sales calls only…
Semantic Drift Patterns: homepage claims AI-powered but product is rules-based, claims enterprise-grade but pricing page shows startup tiers only, homepage shows Fortune 500 logos but case studies are small businesses, claims all-in-one but integration page shows critical missing pieces, free plan promoted but core features require expensive upgrade…
Proof Expectations: live product demo or free trial access, specific feature documentation with screenshots, verified customer logos with published case studies, third-party review scores on G2, Capterra, or TrustRadius, published uptime SLA and status page, security certifications with audit dates…