ESPHome
(https://esphome.io) 📸 Data Snapshot: June 20, 2026Classify 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.
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
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
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” ESP32 ESP8266 RP2040 BK72xx RTL87xx LN882x Host NRF52 [H2] Microcontroller Peripherals Section titled “Microcontroller Peripherals” Peripherals which directly support the operation of the microcontroller's processor(s). PSRAM Deep Sleep ESP32-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 ESP32 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 ESP32 BLE Beacon ESP32 BLE Client ESP32 BLE Server ESP32 BLE Tracker Improv via BLE Nordic UART Service (NUS) RP2040 BLE Zephyr BLE Server [H2] Management and Monitoring Section titled “Management and Monitoring” Debug ESP32 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 nRF52 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” CH422G CH423 MAX6956 - I²C Bus MCP230XX - I²C Bus MCP23SXX - SPI Bus PCA6416A PCA9554 PCF8574 PI4IOE5V6408 SN74HC165 SN74HC595 SX1509 TCA9548A I²C Multiplexer TCA9555 WeiKai SPI/I²C UART/IO Expander XL9535 [H2] 1-Wire Bus Section titled “1-Wire Bus” Platforms which specifically support or extend the index, allowing communication with 1-Wire-based devices. DS2484 GPIO [H2] CAN Bus Section titled “CAN Bus” Platforms which specifically support or extend the index, allowing communication with CAN-based devices. ESP32 CAN MCP2515 [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” AGS10 Volatile Organic Compound Sensor Air Quality Index AirThings BLE Radon & CO2 & Volatile organics CCS811 CO2 & Volatile organics CM1106 CO2 EE895 CO2 & Temperature & Pressure ENS160 CO2 & Air Quality GCJA5 Particulate GP2Y1010AU0F Particulate Grove Multichannel Gas V2 NO2 & CO & Ethanol & Volatile organics HC8 CO2 & Temperature & Humidity HM3301 Particulate iAQ-Core CO2 & Volatile organics MH-Z19 CO2 & Temperature MiCS-4514 Gas concentration PM1006 Sensor Particulate PM2005 Sensor Particulate PMSA003I Particulate PMSX003 Particulate RadonEye BLE Radon SCD30 CO2 & Temperature & Humidity SCD4X CO2 & Temperature & Humidity SDS011 Sensor Particulate SEN0321 Ozone SEN5x Temperature & Humidity & Volatile organics & NOx SEN6x Particulate & Temperature & Humidity & VOC & NOx & CO2 SenseAir CO2 SFA30 Formaldehyde SGP30 CO2 & Volatile organics SGP4x Volatile organics & NOx SM300D2 Air quality SPS30 Particulate T6613/15 CO2 ZyAura CO2 & Temperature & Humidity [H3] Analogue Section titled “Analogue” ADC ESP internal ADC128S102 8-channel ADC ADS1115 4-channel ADC ADS1118 4-channel ADC CD74HC4067 16-channel analog multiplexer MCP3008 8-channel ADC MCP3204 / MCP3208 4-channel ADC MCP3221 ADC NAU7802 ADC Resistance [H3] Bluetooth Low Energy (BLE) Section titled “Bluetooth Low Energy (BLE)” Alpha3 AM43 Lux & Battery level BLE Client Sensor BLE RSSI HHCCJCY10 (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” A01NYUB Acoustic distance A02YYUW Acoustic distance GL-R01 Time of Flight Sensor IR optical distance HRXL MaxSonar WR Acoustic distance JSN-SR04T Acoustic distance TOF10120 IR optical distance Ultrasonic Sensor Acoustic distance VL53L0x IR optical distance Zio Ultrasonic Sensor Acoustic distance [H3] Electricity Section titled “Electricity” ADE7880 Voltage & Current & Power ADE7953 Power ATM90E26 Voltage & Current & Power ATM90E32 Voltage & Current & Power BL0906 Voltage & Current & Power & Energy BL0939 Voltage & Current & Power & Energy BL0940 Voltage & Current & Power BL0942 Voltage & Current & Power CS5460A Voltage & Current & Power CSE7761 Voltage & Current & Power CSE7766 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 HLW8012 Voltage & Current & Power HLW8032 Voltage & Current & Power INA219 Direct Current (DC) INA226 Direct Current (DC) & Power INA228 DC Voltage & Current & Power & Charge INA229 DC Voltage & Current & Power & Charge INA237 DC Voltage & Current & Power INA238 DC Voltage & Current & Power INA239 DC Voltage & Current & Power INA260 DC Current & Power INA3221 3-Ch DC current Kamstrup KMP District Heating Meter MAX9611 Voltage & Current & Power & Temperature PZEM AC Voltage & Current & Power PZEM DC Voltage & Current & Power PZEM004T 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 AHT10 / AHT20 / AHT21 / DHT20 Temperature & Humidity AirThings BLE Temperature & Humidity & Pressure AM2315C Temperature & Humidity AM2320 Temperature & Humidity b-parasite Moisture & Temperature & Humidity & Light BH1900NUX Temperature BME280 Temperature & Humidity & Pressure BME680 Temperature & Humidity & Pressure & Gas BME680 via BSEC Temperature & Humidity & Pressure & Gas BME68x via BSEC2 Temperature & Humidity & Pressure & Gas BMP085 Temperature & Pressure BMP280 Temperature & Pressure BMP388 and BMP390 Temperature & Pressure BMP581 Temperature & Pressure Dallas DS18B20 Temperature Dew Point DHT Temperature & Humidity DHT12 Temperature & Humidity DPS310/DPS368 Temperature & Pressure EMC2101 Temperature ENS160 CO2 & Air Quality ENS210 Temperature & Humidity HDC1080 Temperature & Humidity HDC2010 Temperature & Humidity HDC2080 Temperature & Humidity HDC302x Temperature & Humidity HHCCJCY10 (MiFlora Pink) Soil moisture & Temperature & Light Honeywell ABP Pressure & Temperature Honeywell ABP2 I2C Pressure & Temperature Honeywell HIH I2C Temperature & Humidity HTE501 Temperature & Humidity HTU21D / Si7021 / SHT21 Temperature & Humidity HTU31D Temperature & Humidity Hydreon Rain Sensor Rain HYT271 Temperature & Humidity Inkbird IBS-TH1 Mini Temperature & Humidity Internal Temperature Temperature LM75B Temperature LPS22 Temperature & Barometric Pressure MCP9808 Temperature MH-Z19 CO2 & Temperature MLX90614 Temperature MPL3115A2 Temperature & Pressure MS5611 Pressure MS8607 Temperature & Humidity & Pressure NPI-19 Pressure NTC Thermistor Temperature PMWCS3 Soil moisture & Temperature QMP6988 Temperature & Pressure RadonEye BLE Radon RuuviTag Temperature & Humidity & Accelerometer SCD30 CO2 & Temperature & Humidity SCD4X CO2 & Temperature & Humidity SDP3x / SDP800 Series Pressure SFA30 Formaldehyde SHT3X-D Temperature & Humidity SHT4X Temperature & Humidity SHTCx Temperature & Humidity SMT100 Moisture & Temperature SPA06 Temperature & Pressure STS3X Temperature STTS22H Temperature TC74 Temperature TE-M3200 Temperature & Pressure TEE501 Temperature TMP102 Temperature TMP1075 Temperature TMP117 Temperature WTS01 Temperature XDB401 Pressure XGZP68xx Series Differential Pressure [H3] Health/Safety Section titled “Health/Safety” Seeed Studio MR60BHA2 mmWave Breathing & heartbeat detection Seeed Studio MR60FDA2 mmWave Presence & Fall detection [H3] Light Section titled “Light” AM43 Lux APDS9306 Lux APDS9960 Colour & Gesture AS7341 Spectral Color Sensor BH1750 Lux LTR301 Lux LTR303 Lux LTR329 Lux LTR390 Lux & UV LTR501 Lux & Proximity LTR553 Lux & Proximity LTR556 Lux & Proximity LTR558 Lux & Proximity LTR559 Lux & Proximity LTR659 Proximity MAX44009 Lux OPT3001 Lux TCS34725 Lux & RGB colour TSL2561 Lux TSL2591 Lux VEML3235 Lux VEML6030 Lux VEML7700 Lux [H3] Magnetic Section titled “Magnetic” AS5600 12-Bit Magnetic Position Sensor HMC5883L 3-Axis magnetometer MLX90393 3-Axis magnetometer MMC5603 3-Axis magnetometer MMC5983 3-Axis magnetometer QMC5883L 3-Axis magnetometer [H3] Miscellaneous Section titled “Miscellaneous” AS3935 Storm lightning b-parasite Moisture & Temperature & Humidity & Light Binary Sensor Map Map binary to value Combination Duty Time EZO sensor circuits (pH) FS3000 Air velocity GDK101 Radiation Growatt Solar Solar rooftop Havells Solar Solar rooftop Integration Kuntze pool sensor LC709203F Battery Monitor LVGL widget M5Stack Unit 8 Angle MAX17043 Battery MicroNova pellet stove Modbus Sensor Nextion Sensors from display Person Sensor (SEN21231) Resol VBus Rotary Encoder Sendspin Sensor SMT100 Moisture & Temperature Sound Level SY6970 Battery charge IC Tuya Sensor TX20 Wind speed & Wind direction uFire EC sensor EC & Temperature uFire ISE sensor pH & Temperature WireGuard [H3] Motion Section titled “Motion” APDS9960 Colour & Gesture BMI160 Accelerometer & Gyroscope BMI270 Accelerometer & Gyroscope LD2410 Motion & Presence LD2412 Motion & Presence LD2420 Motion & Presence LD2450 Motion & Presence LSM6DS Accelerometer & Gyroscope Motion (IMU) MPU6050 Accelerometer & Gyroscope MPU6886 Accelerometer & Gyroscope MSA301 Accelerometer MSA311 Accelerometer RD-03D Motion & Presence RuuviTag Temperature & Humidity & Accelerometer Seeed Studio MR24HPC1 mmWave Motion & Presence [H3] Thermocouple Section titled “Thermocouple” KMeterISO K-Type MAX31855 K-Type MAX31856 All types MAX31865 Platinum RTD MAX6675 K-Type MCP9600 All types [H3] Weight Section titled “Weight” HX711 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” CAP1188 Capacitive Touch Sensor ESP32 Touch Pad MPR121 Capacitive Touch Sensor TTP229 [H3] Mechanical Section titled “Mechanical” Matrix Keypad TM1637 TM1
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) BMI270 Accelerometer & Gyroscope LSM6DS Accelerometer & Gyroscope Router Speaker PCM5122 XDB401 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
🧭 Industry Context — common generic-claim patterns in Software, SaaS & Tech Products to weigh the text against
This page presents a snapshot of public data from ESPHome, captured on June 20, 2026, to show how machine logic reads Information Density signals into an AI reputation evaluation.
Purpose: This data is presented under “Fair Use” for the purpose of independent signal analysis, allowing readers to see the raw signals behind the reputation score.
Notice to ESPHome: This analysis is part of a non-adversarial audit conducted by 1 Euro SEO. The results are intended as professional feedback to help improve any website’s machine-readability and authority signals. The evaluation is free, and any company can request a fresh audit at any time.
Any company can use the insights for free and improve its voice. When a company has updated its content, it can always submit a new audit request, which will be reflected in a new current score.
To all users: You are encouraged to visit the live site at https://esphome.io to view the most current version of its content and see directly what this company is about and what it offers.