Учитель Начальной
Курс создания IOT устройств с помощью esphome

ГЛАВА 1. ВВЕДЕНИЕ В IoT И ESPHome

1.1. Что такое Internet of Things (IoT)

Internet of Things (Интернет вещей) — это сеть физических объектов, оснащённых

датчиками, исполнительными механизмами, микроконтроллерами и средствами связи.

Эти устройства собирают данные об окружающей среде, обмениваются ими и принимают

решения с минимальным участием человека.

Типичные сферы применения:

• Умный дом: освещение, климат, безопасность, энергомониторинг

• Промышленность: мониторинг оборудования, предиктивное обслуживание

• Сельское хозяйство: влажность почвы, теплицы, полив

• Медицина: носимые датчики, удалённый мониторинг пациентов

• Городская инфраструктура: освещение улиц, парковки, качество воздуха

Ключевые требования к IoT-устройству:

• Надёжность (стабильная работа месяцами без перезагрузки)

• Энергоэффективность (особенно для батарейных узлов)

• Безопасность (защита от несанкционированного доступа)

• Локальный контроль (работа без обязательного облака)

• Простота интеграции в существующую систему автоматизации

1.2. Почему именно ESPHome

ESPHome — open-source система, которая превращает микроконтроллеры ESP8266,

ESP32 (и ряд других платформ) в полноценные умные устройства. Вместо написания

прошивки на C++ вы описываете поведение устройства в YAML-файле. ESPHome

компилирует конфигурацию в оптимизированную прошивку и загружает её на чип.

Преимущества ESPHome:

• Нет необходимости писать C++ для 95% типичных задач

• Нативная интеграция с Home Assistant — сущности появляются автоматически

• Обновление прошивки по воздуху (OTA) без физического доступа

• Сотни готовых компонентов: сенсоры, дисплеи, реле, климат, медиа

• Локальный контроль: устройства работают в вашей сети без облака

• Активное сообщество, регулярные релизы, подробная документация

• Поддержка Arduino и ESP-IDF framework

• Возможность писать lambda (вставки C++) при необходимости

Альтернативы и сравнение:

• Tasmota — тоже YAML/веб-конфиг, силён в готовых прошивках для реле/розеток

• ESPEasy — гибкий, но сложнее в освоении

• Чистый Arduino / ESP-IDF — полный контроль, но больше кода и поддержки

• PlatformIO + свои скетчи — гибко, но интеграция с HA делается вручную

ESPHome особенно удобен, если у вас уже есть (или планируется) Home Assistant.

1.3. Как устроен процесс разработки

Типичный цикл:

1. Создаёте YAML-конфигурацию (через wizard, Device Builder или вручную)

2. ESPHome проверяет синтаксис и собирает прошивку (PlatformIO под капотом)

3. Загружаете прошивку на устройство:

— первый раз по USB (UART)

— далее — по OTA (Wi-Fi)

4. Устройство подключается к Wi-Fi, поднимает Native API

5. Home Assistant обнаруживает устройство и создаёт сущности

6. Настраиваете автоматизации в HA или прямо в ESPHome

Способы работы:

• Home Assistant Add-on (самый простой путь)

• ESPHome Device Builder (веб-UI, можно в Docker)

• Командная строка: esphome run / compile / upload / logs

• CI/CD (проверка конфигураций в git)

1.4. Что вы узнаете в этом курсе

Курс построен от простого к сложному:

• Главы 1–5 — фундамент (железо, установка, YAML, сеть)

• Главы 6–11 — компоненты (сенсоры, актюаторы, шины, дисплеи)

• Главы 12–16 — продвинутые возможности и эксплуатация

• Главы 17–18 — два полноценных проекта

• Главы 19–20 — кастомные компоненты, масштабирование, ресурсы

ГЛАВА 2. АППАРАТНАЯ ПЛАТФОРМА: ESP8266 И ESP32

2.1. Семейство ESP

Микроконтроллеры Espressif Systems стали стандартом DIY IoT благодаря:

• Низкой цене

• Встроенному Wi-Fi (и Bluetooth у большинства ESP32)

• Достаточному количеству GPIO и периферии

• Огромной экосистеме и поддержке сообществом

ESPHome официально поддерживает ESP8266, ESP32 и множество вариантов.

2.2. ESP8266

Характеристики (типичные):

• Одноядерный Tensilica L106, 80/160 МГц

• ~80 КБ RAM, доступной приложению

• Flash: обычно 1–4 МБ

• Wi-Fi 802.11 b/g/n

• Нет Bluetooth

• Ограниченное число безопасных GPIO

Популярные платы:

• NodeMCU v2 / v3

• Wemos D1 Mini

• ESP-01 / ESP-01S (очень мало пинов)

• Sonoff Basic (готовое реле с ESP8266)

Рекомендация ESPHome: для НОВЫХ проектов лучше брать ESP32-C3

(сопоставимая цена, больше RAM и flash, BLE). ESP8266 продолжают

поддерживаться, существующие устройства работают стабильно.

Особые пины ESP8266 (нельзя использовать свободно):

GPIO0, GPIO2, GPIO15 — влияют на режим загрузки

GPIO1, GPIO3 — UART0 (TX/RX)

GPIO6–11 — подключены к flash

2.3. ESP32 и варианты

Оригинальный ESP32:

• Двухъядерный Xtensa LX6, до 240 МГц

• ~320 КБ RAM, часто 4 МБ flash (+PSRAM на некоторых платах)

• Wi-Fi + Bluetooth Classic/BLE

• Богатая периферия (ADC, DAC, touch, hall, CAN и т.д.)

• Самый зрелый и рекомендуемый вариант для большинства проектов

Варианты:

ESP32-S2

Wi-Fi, без BLE, USB OTG, хорош для устройств с USB

ESP32-S3

Двухъядерный, Wi-Fi + BLE 5, больше AI/ускорителей, часто с PSRAM

ESP32-C3

Одноядерный RISC-V, Wi-Fi + BLE 5, позиционируется как замена ESP8266

Меньше GPIO, ниже потребление, отличный выбор для простых узлов

ESP32-C6

RISC-V, Wi-Fi 6 + BLE + Thread/Zigbee (OpenThread в ESPHome)

Хороший выбор для новых проектов с Mesh/Thread

ESP32-H2

BLE + Thread/Zigbee, без Wi-Fi — для чистых Thread-устройств

ESP32-P4

Высокопроизводительный RISC-V, для сложных задач (видео, UI)

Рекомендации ESPHome (актуальные):

• Лучший общий выбор: ESP32 (классический)

• Бюджетный/простой узел: ESP32-C3

• Новый проект с перспективой Thread: ESP32-C6

• Не рекомендуют для новых проектов: ESP8266

2.4. Выбор конкретной платы

На что смотреть:

• Чип и объём flash/PSRAM

• Наличие USB-UART (CP2102, CH340, встроенный USB у C3/S2/S3)

• Распиновка и удобство макетирования (DevKit vs модуль)

• Ethernet (Olimex ESP32-POE, WT32-ETH01)

• Дисплей на борту (LilyGO T-Display, M5Stack)

• Питание: 5 В USB, 3.3 В, Li-ion

Примеры board ID для ESPHome (PlatformIO):

esp32dev — универсальный ESP32

nodemcuv2 — NodeMCU ESP8266

esp32-c3-devkitm-1

esp32-s3-devkitc-1

mhetesp32devkit

lolin_s2_mini

Если точной платы нет в списке — почти всегда работает generic:

esp32dev / esp01_1m / esp32-c3-devkitm-1

2.5. Питание и надёжность

• Стабильные 3.3 В (не ниже 3.0 В под нагрузкой Wi-Fi)

• Condensators 100 nF + 10–100 µF рядом с модулем

• Для реле и мощных нагрузок — отдельное питание, общая земля

• Избегайте длинных тонких проводов питания

• Brownout detector на ESP32 может перезагружать устройство при просадках

ГЛАВА 3. УСТАНОВКА И НАСТРОЙКА СРЕДЫ РАЗРАБОТКИ

3.1. Способы установки

1) Home Assistant Add-on

Самый простой путь. В HA: Settings → Add-ons → Add-on Store → ESPHome.

После установки открывается веб-интерфейс Dashboard.

2) Docker

docker run -d --name esphome -v /path/to/config:/config \

-v /etc/localtime:/etc/localtime:ro --network host \

ghcr.io/esphome/esphome

3) pip (командная строка)

python3 -m venv esphome-venv

source esphome-venv/bin/activate # Windows: esphome-venv\Scripts\activate

pip install esphome

esphome version

4) ESPHome Device Builder (standalone веб-UI)

Можно запускать локально или в контейнере, удобен без полного HA.

3.2. Первая конфигурация через wizard

esphome wizard my_device.yaml

Мастер спросит:

• Имя устройства (hostname, латиница, без пробелов)

• Платформу (ESP32 / ESP8266)

• Плату (board)

• SSID и пароль Wi-Fi

Будет создан базовый YAML. Дальше редактируете его и запускаете:

esphome run my_device.yaml

Команда скомпилирует, предложит способ загрузки (USB / OTA) и сразу

покажет логи.

3.3. Структура каталога проектов

Рекомендуемая структура:

esphome-configs/

├── secrets.yaml

├── packages/

│ ├── base_wifi.yaml

│ ├── base_api.yaml

│ └── sensors_common.yaml

├── livingroom.yaml

├── bedroom_switch.yaml

└── weather_station.yaml

secrets.yaml (никогда не коммитьте в публичный репозиторий):

wifi_ssid: "MyHomeWiFi"

wifi_password: "supersecret"

api_encryption_key: "сгенерированный_ключ_base64"

ota_password: "ota_secret"

Генерация ключа шифрования API:

openssl rand -base64 32

3.4. Полезные команды CLI

esphome config device.yaml # только проверка конфигурации

esphome compile device.yaml # сборка без загрузки

esphome upload device.yaml # только загрузка

esphome logs device.yaml # логи (USB или API)

esphome run device.yaml # compile + upload + logs

esphome clean device.yaml # очистка сборочного кэша

esphome wizard new.yaml # мастер новой конфигурации

3.5. Первая прошивка по USB

1. Подключите устройство USB-кабелем (data-кабель, не charge-only)

2. На многих ESP32: зажмите BOOT, нажмите RESET, отпустите RESET, затем BOOT

3. Выберите порт в меню esphome run

4. Дождитесь окончания загрузки

5. После успеха устройство само подключится к Wi-Fi