Как собрать умный датчик температуры и влажности с OLED и Home Assistant
Коротко: этот проект подходит для домашних мастеров и интеграторов умного дома. Он требует базовых навыков пайки, доступа к Home Assistant и базового понимания сетей Wi‑Fi.
Что вам понадобится
Ниже — комплект компонентов и краткие пояснения к каждому элементу.
- Датчик AHT10 — цифровой датчик температуры и влажности высокой точности. Кратко: измеряет температуру и относительную влажность.
- Wemos D1 Mini или NodeMCU — контроллер на ESP8266. NodeMCU совместим с тем же кодом, но может иметь другую раскладку выводов.
- OLED дисплей SSD1306 128x64 — для локального отображения показаний.
- Провода-перемычки (Dupont) — для соединений макетной платой или прямых разъёмов.
- Корпус (3D‑печатный или покупной) — защитит электронику и улучшит внешний вид.
- Паяльник и припой — для надёжного соединения проводов и контактов.
- Сервер Home Assistant (рекомендуется на Raspberry Pi или совместимом x86/x64) — для компиляции прошивки ESPHome, интеграции и автоматизаций.
Важно: если вы только начинаете, сначала познакомьтесь с Home Assistant и ESPHome — это упростит отладку и интеграцию.
Шаг 1: Подготовьте прошивку (ESPHome в Home Assistant)
- В Home Assistant откройте Settings > Add‑ons > Add‑On Store.
- Найдите ESPHome и установите официальный пакет (не dev и не beta).
- После установки нажмите Start и включите опции Start on boot, Watchdog, Show on sidebar.
- Откройте Web UI ESPHome и нажмите +New Device.
- Дайте устройству имя, например climate‑sensor, и нажмите Next.
- Выберите Pick a specific board и укажите Wemos D1 Mini (для NodeMCU выберите ESP8266 при необходимости).
- Нажмите Next > Skip, затем Edit для редактирования YAML.
Добавьте ваши Wi‑Fi‑учётные данные в раздел wifi:
wifi:
ssid: "YourWiFiSSID"
password: "WiFiPassword"Вставьте далее указанный ниже фрагмент сразу после строки captive_portal:
web_server:
port: 80
i2c:
sda: D2
scl: D1
scan: True
time:
- platform: sntp
id: my_time
sensor:
- platform: aht10
temperature:
name: "Living Room Temperature"
id: temp
humidity:
name: "Living Room Humidity"
id: hum
update_interval: 10s
- platform: uptime
name: "Station Bureau Uptime Sensor"
- platform: wifi_signal
name: "Station Bureau WiFi Signal"
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: |-
// Print "Ravi Smart Home" in top center.
it.printf(64, 0, id(font1), TextAlign::TOP_CENTER, "Ravi Smart Home");
// Print temperature (from AHT10 sensor)
if (id(temp).has_state()) {
it.printf(127, 23, id(font3), TextAlign::TOP_RIGHT , "Temperature: %.1f°", id(temp).state);
}
// Print Humidity (from AHT10 sensor)
if (id(hum).has_state()) {
it.printf(127, 60, id(font3), TextAlign::BASELINE_RIGHT , "Humidity: %.1f", id(hum).state);
}Замените строку “Ravi Smart Home” на нужный заголовок. Затем Save и Install.
Выберите опцию Plug into this computer для локальной прошивки через USB и дождитесь компиляции — это займёт примерно 10–15 минут в зависимости от нагрузки сервера Home Assistant.
Когда компиляция завершится, нажмите Download project, чтобы сохранить файл climate‑sensor.bin на вашем компьютере.
Важно: не вводите в YAML неверные индентации — YAML чувствителен к пробелам.
Шаг 2: Запишите прошивку на Wemos D1 Mini или NodeMCU
Вы можете прошить устройство через веб‑интерфейс ESPHome (Open ESPHome Web) или с помощью утилиты ESPHome‑Flasher (Windows/Linux/Mac).
Процедура через веб‑интерфейс:
- Нажмите Open ESPHome web в компаньоне после загрузки bin-файла.
- Нажмите Connect, выберите COM‑порт и нажмите Connect. Если плата не определяется — установите драйвер CH340/CH341.
- Нажмите Install > Choose File и выберите файл climate‑sensor‑factory.bin (или соответствующий вашей сборке).
- Нажмите Install и дождитесь окончания процесса. Инструмент покажет прогресс и логи.
После успешной прошивки устройство должно появиться в ESPHome dashboard и быть ONLINE.
Шаг 3: Добавьте датчик в интерфейс Home Assistant
- В Home Assistant откройте Settings > Devices & Services.
- Должно автоматически появиться обнаруженное устройство climate‑sensor. Нажмите CONFIGURE и затем SUBMIT.
- Откройте карточку climate‑sensor в разделе ESPHome и нажмите на ссылку 1 device.
- Нажмите ADD TO DASHBOARD > View > ADD TO DASHBOARD и выберите комнату.
Теперь показания температуры и влажности будут доступны на панели и в историях Home Assistant.
Шаг 4: Подключите AHT10 и OLED к плате
Стандартные соединения I2C между AHT10, OLED и ESP следующие:
- VIN AHT10 и OLED → 5V на Wemos D1 Mini или 3.3V на NodeMCU (проверьте совместимость платы и модулей).
- GND AHT10 и OLED → G (GND) на плате.
- SCL AHT10 и OLED → D1 (SCL) на NodeMCU/D1 Mini.
- SDA AHT10 и OLED → D2 (SDA) на NodeMCU/D1 Mini.
Если модули рассчитаны только на 3.3 В, используйте 3.3 В; подача 5 В может повредить плату или датчик. При сомнениях проверьте документацию модулей.
Требуется пайка для надёжных и компактных соединений; можно сначала собрать на макетной плате для теста.
Проверьте работу, поднеся влажный предмет или лёгко дунув на датчик — значения должны измениться почти мгновенно.
Пример автоматизации в Home Assistant
Ниже — простой пример автоматизации, которая выключает кондиционер (или релейный симулятор) при достижении заданной температуры и включает вентилятор при повышенной влажности. Этот YAML — пример; замените entity_id на ваши реальные сущности.
alias: "Автоматический контроль климата"
trigger:
- platform: numeric_state
entity_id: sensor.living_room_temperature
above: 26.0
- platform: numeric_state
entity_id: sensor.living_room_humidity
above: 65.0
condition: []
action:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.living_room_temperature
above: 26.0
sequence:
- service: switch.turn_off
target:
entity_id: switch.hvac_power
- conditions:
- condition: numeric_state
entity_id: sensor.living_room_humidity
above: 65.0
sequence:
- service: switch.turn_on
target:
entity_id: switch.fan
default: []
mode: singleКритерии приёмки
- Устройство подключается к Wi‑Fi и отображает состояние ONLINE в ESPHome.
- OLED корректно показывает температуру и влажность.
- Home Assistant получает показания и показывает графики истории.
- Тестовый сценарий (дунуть/остудить) изменяет показания в реальном времени.
Роль‑ориентированные чек‑листы
Для сборщика (hardware):
- Проверить совместимость питания модулей (3.3 В/5 В).
- Спаять контакты аккуратно и пропаять землю и питание.
- Убедиться в надёжном креплении в корпусе.
Для интегратора (software):
- Добавить корректные Wi‑Fi данные в YAML.
- Проверить адрес I2C (0x3C по умолчанию для SSD1306).
- Настроить автоматизации и уведомления в Home Assistant.
Для пользователя/администратора (maintenance):
- Настроить резервное копирование конфигурации ESPHome и Home Assistant.
- Проверять обновления ESPHome и устанавливать по необходимости.
Проверка и тесты приёмки
- Тест подключения: плата появляется в списке USB и успешно прошивается.
- Тест отображения: OLED показывает текст и числа без артефактов.
- Тест интеграции: Home Assistant показывает актуальные значения и историю.
- Нагрузочный тест: оставить устройство онлайн 24 часа и контролировать утечки памяти — ESPHome обычно стабилен, но Watchdog полезен.
Типичные проблемы и способы их устранения
Проблема: Плата не определяется по USB
- Проверьте драйвер CH340/CH341 и кабель (некоторые кабели только для зарядки).
Проблема: OLED не отображает текст
- Проверьте адрес I2C (некоторые модули используют 0x3D вместо 0x3C).
- Убедитесь, что SDA и SCL не перепутаны.
Проблема: Неверные значения температуры/влажности
- Проверьте питание датчика (шумы на питании могут влиять на точность).
- Подождите несколько секунд после включения — датчик может стабилизироваться.
Проблема: Устройство теряет Wi‑Fi
- Переместите роутер ближе или настройте статический IP/резерв в DHCP.
- Проверьте обновления прошивки и Watchdog.
Безопасность и приватность
- Поменяйте стандартные пароли Wi‑Fi и Home Assistant.
- Закройте доступ к ESPHome UI извне (используйте VPN или защищённый прокси), если не хотите открывать порт 80 наружу.
- Минимизируйте сбор персональных данных: сам датчик не собирает персональную информацию, но интеграция в Home Assistant может сохранять истории — управляйте retention и доступом.
- GDPR: если вы делитесь телеметрией с третьими сервисами, уведомите пользователей дома и настройте удаление данных по запросу.
Совместимость и миграция
- Контроллеры: плата ESP8266 (Wemos/NodeMCU) — совместима с ESPHome; ESP32 также поддерживается, но пины I2C и флеш-процесс отличаются.
- Датчики: AHT10 — типичный I2C‑датчик; если у вас DHT22/DHT11, потребуется другой платформенный драйвер и другая схемотехника (не I2C).
- OLED: SSD1306 128x64 часто использует адрес 0x3C; другие OLED-модули могут иметь другой адрес или использовать SPI.
Альтернативные подходы
- Готовые IoT‑модули: покупные Wi‑Fi датчики с поддержкой MQTT/HTTP позволят избежать пайки.
- Использовать ESP32: даёт больше памяти, Bluetooth и дополнительные пины для расширения.
- MQTT вместо ESPHome: если ваша архитектура основана на MQTT, можно прошить ESP с прошивкой, публикующей в MQTT‑брокер.
Когда этот подход не подходит
- Если вам нужны промышленные допуски (пыле/влагозащита, сертификация) — домашнее устройство не подойдёт.
- Если требуется длительная автономная работа от батарей — ESP8266 и OLED потребляют слишком много энергии без глубокой оптимизации.
Факт‑бокс: ключевые параметры
- Частота обновления датчика: обычно 10 с (в примере).
- I2C‑адрес OLED: 0x3C по умолчанию.
- Питание: 3.3 В или 5 В в зависимости от модулей (проверьте модуль).
- Платформа прошивки: ESPHome с ESP8266/ESP32.
Короткий словарь терминов
- I2C: простая двужильная шина данных для датчиков и дисплеев.
- ESPHome: фреймворк для создания прошивок для ESP‑устройств с интеграцией в Home Assistant.
- OLED SSD1306: популярный небольшой дисплей для вывода текста и графики.
Шаблон действий по инцидентам (если устройство упало)
- Проверьте питание и индикаторы платы.
- Подключитесь через USB и посмотрите логи в ESPHome Web.
- Если устройство не отвечает, перепрошите последнюю рабочую версию .bin.
- Если проблема повторяется, замените плату или проверьте помехи в питании.
Социальный превью и короткое объявление
OG title: Датчик температуры и влажности с OLED и Home Assistant OG description: Соберите Wi‑Fi датчик на AHT10 и ESP, интегрируйте его в Home Assistant для автоматизации климата.
Короткое объявление (100–200 слов): Соберите собственный умный датчик температуры и влажности на базе AHT10 и контроллера ESP (Wemos D1 Mini или NodeMCU). Подключите OLED‑дисплей для локального отображения и используйте ESPHome в Home Assistant для простой прошивки и интеграции. Такое устройство позволяет отслеживать условия в комнате в реальном времени и автоматически управлять климатическими устройствами — кондиционером, вентилятором или увлажнителем. В руководстве описаны список компонентов, подготовка прошивки, процесс прошивки, схемы подключения, примеры автоматизаций, чек‑листы и рекомендации по безопасности. Подойдёт как для новичков, так и для опытных энтузиастов умного дома.
Итог
Вы получили подробное руководство по созданию локального Wi‑Fi‑датчика температуры и влажности с OLED и интеграции в Home Assistant. После сборки и настройки вы сможете не только наблюдать значения, но и строить автоматизации для управления климатом в доме.
Важное: сохраняйте резервные копии конфигураций и закрепите устройство в защищённом корпусе, чтобы обеспечить надёжную и безопасную работу.