Датчик температуры и влажности с OLED и интеграция в Home Assistant

Необходимо
Короткий список компонентов и инструментов. Если вы уже умеете паять и работали с ESP8266 — пропустите раздел инженеру.
- Датчик AHT10 — цифровой датчик температуры и влажности (высокая точность).
- Плата Wemos D1 Mini или NodeMCU (ESP8266).
- OLED‑дисплей SSD1306 128×64 (I2C).
- Проводки «Dupont» (мама‑папа или мама‑мама в зависимости от разъёма).
- Корпус (3D‑печать или готовый корпус).
- Паяльник и припой.
- Сервер Home Assistant (например, Raspberry Pi) с установленным аддоном ESPHome.
Примечание: NodeMCU работает на 3.3 В. На Wemos D1 Mini VIN можно подключать к 5 В, но при использовании модулей I2C обычно лучше питать их от 3.3 В, чтобы избежать уровней, несовместимых с ESP8266.
Шаг 1 — Подготовка прошивки (ESPHome)
- В Home Assistant откройте Settings → Add‑ons → Add‑on store.
- Найдите ESPHome (не берите dev или beta) и установите его.
- После установки нажмите Start и включите опции Start on boot, Watchdog и Show on sidebar.
- Откройте «Open Web UI» ESPHome и нажмите + New Device.
- Дайте имя устройству, например climate-sensor, и выберите конкретную плату Wemos D1 Mini (или ESP8266 при использовании NodeMCU).
- Выберите Skip при предложении автоматической конфигурации и откройте редактор YAML (Edit).
Добавьте в YAML ваши Wi‑Fi данные и конфигурацию. Пример корректного блока (уберите обратные кавычки если они сохранились):
wifi:
ssid: "Ваш_SSID"
password: "Ваш_Пароль"
web_server:
port: 80
i2c:
sda: D2
scl: D1
scan: True
time:
- platform: sntp
id: my_time
sensor:
- platform: aht10
temperature:
name: "Температура в комнате"
id: temp
humidity:
name: "Влажность в комнате"
id: hum
update_interval: 10s
- platform: uptime
name: "Время работы устройства"
- platform: wifi_signal
name: "Уровень WiFi"
update_interval: 30s
font:
- file: 'slkscr.ttf'
id: font1
size: 12
- file: 'BebasNeue-Regular.ttf'
id: font2
size: 15
- file: 'arial.ttf'
id: font3
size: 15
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
reset_pin: D0
address: 0x3C
rotation: 180°
lambda: |-
it.printf(64, 0, id(font1), TextAlign::TOP_CENTER, "Мой Дом");
if (id(temp).has_state()) {
it.printf(127, 23, id(font3), TextAlign::TOP_RIGHT , "Темп: %.1f°C", id(temp).state);
}
if (id(hum).has_state()) {
it.printf(127, 60, id(font3), TextAlign::BASELINE_RIGHT , "Влажн.: %.1f%%", id(hum).state);
}Советы:
- Переведённые имена сенсоров помогут в Home Assistant. При желании оставьте английские строки.
- rotation: 180° использует реальный символ градуса для удобства.
- Для SSD1306 адрес чаще 0x3C; при проблемах проверьте скан I2C.
После редактирования нажмите Save и Install → Plug into this computer чтобы запустить компиляцию. Сборка может занять 10–15 минут. Скачайте скомпилированный бинарный файл climate-sensor.bin.
Шаг 2 — Заливка прошивки на плату
Можно использовать встроенный веб‑установщик ESPHome (Open ESPHome web) либо отдельный ESPHome‑Flasher.
- Подключите плату к компьютеру.
- В ESPHome Web нажмите Connect, выберите COM‑порт и подключитесь. При проблемах установите драйвер CH340/CH341 (если требуется).
- Нажмите Install → Choose File и выберите climate-sensor‑factory.bin.
- Нажмите Install и дождитесь завершения прошивки.
После успешной прошивки в панели ESPHome устройство должно появиться как ONLINE.
Шаг 3 — Добавление устройства в Home Assistant
- В Home Assistant откройте Settings → Devices & Services.
- Должно обнаружиться устройство climate-sensor (ESPHome). Нажмите CONFIGURE и SUBMIT.
- Откройте устройство в списке ESPHome и нажмите ADD TO DASHBOARD → выберите комнату и подтвердите.
Показания обновляются в реальном времени. Для быстрой проверки подуйте на датчик — значение влажности и температура должны кратковременно измениться.
Шаг 4 — Подключение датчика и OLED
Схема подключения (I2C): SDA → D2, SCL → D1, GND → G, VCC → 3.3V (или VIN на Wemos, если используете USB‑питание через 5V и модуль допускает такое питание). Рекомендации:
- Подключайте оба устройства (AHT10 и OLED) к одной шине I2C.
- Обязательно общая земля (GND) между платой и сенсорами.
- Если OLED и модуль AHT10 имеют разные рабочие напряжения, используйте уровень‑преобразователь.
Пошагово:
- Соедините VIN AHT10 и VIN OLED с 3.3V (или 5V при Wemos D1 Mini, но лучше 3.3V).
- Соедините GND всех устройств с GND платы.
- Подключите SCL датчика и дисплея к D1.
- Подключите SDA датчика и дисплея к D2.
Если вы не уверены в пайке, потренируйтесь на макетной плате.
Пример автоматизации в Home Assistant
Автоматизация для включения вентилятора при высокой влажности:
alias: Включать вентилятор при влажности > 60%
description: Включает вентиляцию, если влажность в комнате превысила 60%.
trigger:
- platform: numeric_state
entity_id: sensor.vlazhnost_v_komnate
above: 60
condition: []
action:
- service: switch.turn_on
target:
entity_id: switch.fan_power
mode: singleЗамените entity_id на реальные идентификаторы ваших устройств.
Отладка и частые проблемы
- Устройство не подключается к Wi‑Fi: проверьте SSID/пароль в YAML и диапазон частоты (ESP8266 не поддерживает 5 GHz).
- OLED не отображает: проверьте адрес I2C (0x3C/0x3D) и правильность SDA/SCL. Выполните i2c scan в ESPHome (scan: True) и проверьте обнаружение устройств.
- Показания датчика нестабильны: разместите датчик вне прямого действия вентиляционных отверстий и избегайте резких температурных перепадов.
- Плата не определяется компилятором: установите драйвер CH340/CH341 или попробуйте другой USB‑кабель (многие кабели только для зарядки).
Важно: если устройство подключается к интернету и видимо из внешней сети, ограничьте доступ и используйте авторизацию Home Assistant.
Критерии приёмки
- Дисплей показывает температуру и влажность без ошибок.
- Данные в Home Assistant обновляются не реже чем раз в 10 секунд (по конфигурации).
- Устройство остаётся в состоянии ONLINE в ESPHome после перезагрузки.
- Автоматизация корректно срабатывает при достижении порога.
Тестовые случаи
- Проверка I2C: при включении устройство сообщает адреса I2C в логе.
- Проверка Wi‑Fi: устройство подключается к сети и получает IP.
- Проверка датчика: изменение влажности (подувание) отражается в показаниях.
- Проверка дисплея: все шрифты и строки читаемы при нормальном положении экрана.
Чек‑листы по ролям
Для сборщика (maker):
- Проверить полярность питания.
- Убедиться, что все провода заизолированы.
- Зафиксировать плату в корпусе, чтобы не было механического натяжения проводов.
Для администратора Home Assistant:
- Проверить наличие ESPHome в аддонах.
- Настроить резервную копию конфигурации.
- Проверить права доступа и безопасный удалённый доступ.
Для тестировщика автоматизации:
- Создать тестовую автоматизацию и имитировать событие для проверки срабатывания.
- Записать логи при срабатывании.
Альтернативные подходы и совместимость
- Если вы предпочитаете более точные датчики, рассмотрите SHT3x или BME280 (BME280 даёт ещё и давление).
- Для меньшего потребления энергии используйте ESP32‑S2 или модули с энергосбережением и питание от батареи; тогда потребуется оптимизация таймеров и режим глубокого сна.
- SSD1306 имеет несколько реализаций; если у вас SPI‑версия — конфигурация в ESPHome отличается.
Совместимость:
- NodeMCU / Wemos D1 Mini = ESP8266 (3.3V логика).
- ESP32 требует изменения платформы в ESPHome (platform: esp32) и пинов I2C.
Безопасность и приватность
- Не публикуйте прошивку с открытым доступом к домашней сети.
- Ограничьте внешний доступ к Home Assistant через VPN или прокси с авторизацией.
- Храните пароли Wi‑Fi и ключи от облачных интеграций в защищённом хранилище.
Руководство по откату (rollback)
Если новая прошивка некорректна:
- Подключите плату к компьютеру.
- В ESPHome Web выберите ранее скомпилированный стабильный бинарный файл и установите его.
- Если устройство не отвечает, используйте режим флэшера и установите factory‑bin, полученный ранее.
Небольшая методология проекта (микро‑SOP)
- Подготовьте список компонентов и проверьте совместимость напряжений.
- Настройте ESPHome и соберите базовую конфигурацию без дисплея.
- Проверьте работу датчика в логах ESPHome.
- Добавьте дисплей и отладьте вывод на экран.
- Установите в корпус и подключите к Home Assistant.
- Добавьте автоматизации и мониторинг состояния.
Часто задаваемые вопросы
Какой напряжение лучше использовать — 3.3V или 5V?
Для ESP8266 и AHT10 лучше использовать 3.3V. Некоторые Wemos D1 Mini допускают VIN=5V при наличии встроенного регулятора, но уровни логики остаются 3.3V.
Можно ли подключить несколько OLED и AHT10 к одной шине I2C?
Да, если у устройств уникальные I2C‑адреса. AHT10 обычно один адрес; дополнительные сенсоры потребуют мультиплексора I2C.
Как сократить потребление энергии для батарейного питания?
Переведите ESP8266 в глубокий сон (deep_sleep) и делайте периодические замеры. Учтите, OLED в этом режиме отключён.
Что делать, если дисплей показывает «мусор»?
Проверьте уровень питания, скорость I2C и адрес. Попробуйте другие шрифты и уменьшите частоту обновления.
Короткое резюме
Ваш Wi‑Fi датчик готов. Вы знаете, как прошить устройство через ESPHome, подключить AHT10 и SSD1306, добавить устройство в Home Assistant и создать базовую автоматизацию. Следуйте чек‑листам и тестовым случаям, чтобы обеспечить стабильную работу и безопасность.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone