Проект представляет собой программно-аппаратный комплекс для мониторинга окружающей среды и управления бытовыми устройствами. Система обеспечивает автоматическое поддержание заданных параметров освещенности, влажности и качества воздуха (CO2).
Система строится по трехуровневой модели:
- Уровень управления (Core): Сервер Home Assistant (Raspberry Pi), выполняющий роль агрегатора данных, графического интерфейса и движка автоматизаций.
- Уровень связи (Transport): Протокол Native API ESPHome (Wi-Fi 802.11 b/g/n), обеспечивающий двустороннюю связь и автоматическое обнаружение устройств.
- Уровень исполнения (Edge): Микроконтроллер ESP32 с прошивкой ESPHome, осуществляющий низкоуровневый опрос сенсоров и управление нагрузкой.
Центральный узел:
- Контроллер: Raspberry Pi 4 model B.
- Среда исполнения: Home Assistant OS.
Исполнительный узел (ESP Node):
- Контроллер: ESP8266.
- Сенсоры:
- BME280: Температура, влажность, атмосферное давление (I2C).
- BH1750: Интенсивность освещения (I2C).
- Исполнительные устройства:
- Освещение/Увлажнитель: Блок реле с опторазвязкой (GPIO High/Low)
Данный конфиг инициализирует шину I2C для работы датчиков и определяет логику взаимодействия с аппаратной частью.
substitutions:
node_name: smart-climate-node
friendly_name: "Climate Controller"
esphome:
name: ${node_name}
esp32:
board: esp32dev
wifi:
ssid: "YOUR_SSID"
password: "YOUR_PASSWORD"
api:
encryption:
key: "YOUR_ENCRYPTION_KEY"
ota:
platform: esphome
i2c:
sda: 21
scl: 22
scan: true
sensor:
- platform: bme280
address: 0x76
temperature:
name: "Room Temperature"
id: room_temp
humidity:
name: "Room Humidity"
id: room_humidity
update_interval: 60s
- platform: bh1750
name: "Illuminance"
address: 0x23
update_interval: 30s
- platform: scd40
co2:
name: "CO2 Level"
id: room_co2
temperature:
name: "SCD41 Temperature"
humidity:
name: "SCD41 Humidity"
update_interval: 60s
switch:
- platform: gpio
pin: 12
name: "Main Light"
id: light_switch
- platform: gpio
pin: 14
name: "Humidifier"
id: humidifier_switch
ir_transmitter:
pin: 13
carrier_duty_percent: 50%
climate:
- platform: climate_ir
name: "Air Conditioner"
sensor: room_tempПосле завершения монтажа компонентов запуск системы происходит по следующему регламенту:
- Подача питания: При включении блока питания в розетку (5V DC), напряжение поступает на Raspberry Pi и ESP32.
- Загрузка HA Core: Raspberry Pi инициализирует Home Assistant OS (около 1.5 - 2 минут). Включаются службы БД (Recorder) и движок автоматизаций.
- Инициализация Node: ESP32 подает питание на сенсоры. Датчик SCD41 требует около 5 секунд на самодиагностику перед первой выдачей данных.
- Связь: ESP32 подключается к Wi-Fi роутеру и устанавливает зашифрованное соединение с Home Assistant по API.
- Готовность: Как только в Dashboard Home Assistant показатели датчиков (люкс, CO2, градусы) перестают быть в статусе
unavailable, система считается готовой к работе.
Управление стендом осуществляется через интерфейс Lovelace (Dashboard):
- Карточки
Buttonдля включения света и увлажнителя. - Карточка
Thermostatдля задания целевой температуры кондиционера.
Для проверки работоспособности и демонстрации эффекта в систему внедрены следующие сценарии:
А. Автоматизация освещения (по датчику BH1750):
При падении уровня освещенности ниже 100 lx и наличии кого-либо в комнате, активируется light_switch.
alias: "Auto Light On"
trigger:
- platform: numeric_state
entity_id: sensor.illuminance
below: 100
action:
- service: switch.turn_on
target:
entity_id: switch.main_lightБ. Контроль влажности (по датчику BME280): Если влажность падает ниже 40%, включается увлажнитель. При достижении 55% — выключается. Это позволяет наглядно увидеть работу реле при изменении условий.
В. Управление качеством воздуха (по датчику SCD41): При превышении уровня CO2 > 800 ppm, система отправляет уведомление или активирует приточную вентиляцию (если подключена).
- Запишите образ Home Assistant OS на SD-карту через BalenaEtcher.
- Запустите RPi и выполните первичную настройку пользователя по адресу
http://homeassistant.local:8123.
- В HA: Settings -> Add-ons -> Add-on Store -> ESPHome.
- Установите и запустите аддон.
- Откройте панель ESPHome. Нажмите + New Device.
- Скопируйте YAML-конфиг из Раздела 3 в открывшийся редактор.
- Подключите ESP32 к Raspberry Pi через USB.
- Нажмите Install -> Plug into this computer и выберите USB-порт.
- После прошивки зайдите в Settings -> Devices & Services.
- Нажмите Configure на обнаруженном устройстве "Climate Controller".
- Устройство и все его сущности готовы к использованию в автоматизациях.