Key Takeaway: ESPHome lets you build a complete smart home sensor network using ESP32/ESP8266 microcontrollers with zero coding — just YAML configuration. Connected to Home Assistant, you get real-time temperature, humidity, motion, light, and door/window monitoring across multiple rooms for under ₹1,000 per sensor node.
Table of Contents

1. What Is ESPHome?
ESPHome is an open-source framework that turns ESP32 and ESP8266 microcontrollers into smart home sensors and actuators using simple YAML configuration files. Instead of writing Arduino code in C++, you define what your device should do in a YAML file, and ESPHome generates the firmware, compiles it, and wirelessly uploads it to the microcontroller.
Released in 2019 by Otto Winter, ESPHome has grown into one of the most popular platforms for DIY smart home projects, with over 800 built-in component integrations supporting sensors, displays, climate control, and automation logic. In 2026, ESPHome 2025.6+ includes native Bluetooth proxy support, improved OTA performance, and ESP32-S3 compatibility.
2. System Architecture
A typical ESPHome-based smart home system has three layers:
Layer 1 — Sensor Nodes: ESP32 or ESP8266 boards with connected sensors (DHT22, BME280, PIR, BH1750, reed switches). Each node runs ESPHome firmware that reads sensors and publishes data over WiFi.
Layer 2 — Communication: Sensor nodes communicate with Home Assistant over your local WiFi network. ESPHome supports the Native ESPHome API (recommended, built into Home Assistant) or MQTT if you prefer a broker-based setup.
Layer 3 — Home Assistant: The central hub receives sensor data and provides dashboards, automations, and notifications. ESPHome devices are auto-discovered by Home Assistant — no manual configuration needed.
3. Hardware Components
Per Sensor Node (approx cost ₹600-1,200):
- ESP32 Dev Board: ₹350-500 — Dual-core, WiFi + Bluetooth, plenty of GPIO. Choose ESP32-WROOM-32 or ESP32-S3 for larger memory
- DHT22 Temperature/Humidity Sensor: ₹200-350 — ±0.5°C accuracy, -40 to 80°C range
- Power Supply: 5V USB charger or HLK-PM01 AC-DC module for permanent installation
- Breadboard and jumper wires: ₹100 for prototyping; PCB/perfboard for permanent installation
Optional Add-ons:
- BME280: ₹350 — Temperature, humidity, and barometric pressure (replaces DHT22)
- HC-SR501 PIR Sensor: ₹100 — Motion detection for security and lighting automation
- BH1750 Light Sensor: ₹150 — Ambient light measurement for smart blinds and adaptive lighting
- Magnetic Reed Switch: ₹50 — Door/window open/close detection
- SSD1306 OLED Display: ₹250 — Local display of sensor readings
4. Installing ESPHome
Option 1: Home Assistant Add-on (Easiest)
If you already run Home Assistant, go to Settings → Add-ons → Add-on Store and search for ESPHome. Install the add-on, start it, and access the web UI at http://your-ha-ip:6052. This is the recommended method for most users.
Option 2: Standalone Installation
For users running ESPHome independently of Home Assistant, install via pip: pip install esphome. Then create a project directory and run esphome dashboard config/ to launch the web dashboard.
Option 3: ESPHome Web Installer
For first-time users, the ESPHome web installer (ESPHome Web) lets you flash firmware directly from a browser without installing any software. Connect your ESP32 via USB, visit the web installer, select a configuration, and click Install.
5. YAML Configuration Examples
Basic Temperature/Humidity Sensor:
esphome:
name: living-room-sensor
platform: ESP32
board: nodemcu-32s
wifi:
ssid: "YourWiFiSSID"
password: "YourWiFiPassword"
# Enable Home Assistant API
api:
encryption:
key: "your-encryption-key"
ota:
- platform: esphome
sensor:
- platform: dht
pin: GPIO4
model: DHT22
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
update_interval: 30s
Multi-Sensor Node (Temperature, Humidity, Motion, Light):
esphome:
name: multi-sensor-node
platform: ESP32
board: nodemcu-32s
wifi:
ssid: "YourWiFiSSID"
password: "YourWiFiPassword"
api:
encryption:
key: "your-key"
ota:
- platform: esphome
sensor:
- platform: bme280
i2c_id: i2c_bus
address: 0x76
temperature:
name: "Multi Sensor Temperature"
oversampling: 16x
pressure:
name: "Multi Sensor Pressure"
humidity:
name: "Multi Sensor Humidity"
- platform: bh1750
name: "Multi Sensor Illuminance"
address: 0x23
update_interval: 60s
binary_sensor:
- platform: gpio
pin: GPIO5
name: "Multi Sensor Motion"
device_class: motion
i2c:
sda: GPIO21
scl: GPIO22
scan: true
id: i2c_bus
Deploy via OTA: Once the first firmware is uploaded via USB, all subsequent updates happen Over-The-Air (OTA) through the ESPHome dashboard. This makes updating multiple sensor nodes across your house effortless.
6. Home Assistant Dashboard
Once your ESPHome devices are connected, Home Assistant automatically discovers them. Create a dashboard with:
- Temperature cards: Using Home Assistant’s thermostat card or simple sensor cards
- Humidity graph: History graph showing trends over 24 hours
- Motion triggers: When motion is detected, trigger lights or send a phone notification
- Door open alerts: Get a notification when a door or window opens
ESPHome entities appear in Home Assistant with the prefix sensor. or binary_sensor. followed by the node name. For example, the living room temperature sensor appears as sensor.living_room_temperature.
7. Advanced Automations
Climate-Controlled Fan:
Use a temperature sensor + smart plug to automatically turn on a fan when the room exceeds 30°C. In Home Assistant: when sensor.living_room_temperature > 30, turn on switch.fan.
Security System:
Combine PIR motion sensors and magnetic reed switches with Home Assistant’s Alarmo integration to create a DIY security system. When armed and motion is detected, send a notification and trigger a siren.
Energy-Saving Automation:
Use a BH1750 light sensor to automatically adjust smart blinds or turn off lights when natural light is sufficient. This can reduce daytime electricity consumption by 15-25%.
Leak Detection:
Add a water leak sensor (resistive probe + GPIO) near your water heater or washing machine. Send an immediate push notification when water is detected — could save thousands in water damage.
8. Frequently Asked Questions
Do I need Home Assistant to use ESPHome?
No, but Home Assistant provides the best experience. ESPHome devices can operate standalone, sending data to MQTT brokers, serial output, or web servers. Home Assistant adds dashboards, automations, and multi-device coordination.
Can I use ESP8266 instead of ESP32?
Yes, ESP8266 works well for basic sensor nodes with fewer GPIO requirements. Use ESP32 when you need: more GPIO pins, Bluetooth (for BLE sensors), more RAM, or multiple I2C devices.
How many ESPHome devices can Home Assistant handle?
Home Assistant can handle 50-100+ ESPHome devices on a Raspberry Pi 4 or better, provided your WiFi network can support them. For larger deployments, use multiple access points and consider MQTT for reduced network overhead.
Is ESPHome secure for home use?
Yes. ESPHome supports encryption for the Native API, WiFi WPA2/WPA3, and secure OTA updates. The encryption key is generated during device setup. For external access, use Home Assistant’s secure remote access (Nabu Casa or VPN) rather than exposing ESPHome directly to the internet.
Can I add a display to my ESPHome sensor?
Yes. ESPHome supports SSD1306 OLED displays, SH1106, and PCD8544 (Nokia 5110). Add a display: section to your YAML config and define what data to show. The display updates automatically when sensor values change.
Related Reading
- ESP32 Smart Home Automation Guide 2026
- DIY ESP8266 Temperature and Humidity Monitor with Home Assistant
Sources
- ESPHome Official Documentation — Configuration and Components
- Home Assistant ESPHome Integration Guide
- ESPHome GitHub Repository — Source Code and Examples
- Espressif – ESP32 Technical Reference Manual
Disclosure: As an Amazon Associate, we earn from qualifying purchases. Some links on this page are affiliate links that help support our content at no extra cost to you.

