🟦 Этап 5. Расширенные возможности
На этом этапе ты познакомишься с продвинутыми функциями Home Assistant, которые открывают ещё больше гибкости и возможностей: интеграция с MQTT, самодельные устройства через ESPHome, визуальное программирование в Node-RED и использование шаблонов.
🔹 MQTT — лёгкий протокол для общения устройств
MQTT (Message Queuing Telemetry Transport) — это лёгкий сетевой протокол для обмена сообщениями между устройствами.
Где используется:
-
Перепрошитые устройства на Tasmota, ESP8266/ESP32
-
Сценарии со своими датчиками и исполнительными устройствами
-
Интеграция с Zigbee2MQTT
Установка:
-
Установи интеграцию Mosquitto Broker через “Дополнения” (Supervisor)
-
Добавь пользователя MQTT
-
Подключи устройства (например, Tasmota, Zigbee2MQTT, ESPHome)
🔹 ESPHome — управление самодельными устройствами
ESPHome — это система для прошивки микроконтроллеров ESP8266/ESP32 и интеграции их с Home Assistant.
Примеры:
-
Температурные датчики
-
Управление реле и светодиодами
-
Датчики движения, влажности, CO₂ и др.
Преимущества:
-
Прошивка создаётся через веб-интерфейс
-
Не нужно писать код вручную
-
Устройства автоматически интегрируются в HA
Пример конфигурации:
sensor:
- platform: dht
pin: D2
temperature:
name: "Температура в комнате"
humidity:
name: "Влажность в комнате"
🔹 Node-RED — визуальное программирование автоматизаций
Node-RED — это внешнее приложение с блоковой системой логики, которое можно подключить к Home Assistant.
Возможности:
-
Удобная настройка сложных сценариев «если – то – иначе»
-
Логическая обработка данных
-
Обработка задержек, циклов, ветвлений
Установка:
-
Установи Node-RED через Supervisor → Дополнения
-
Настрой токен доступа Home Assistant
-
Создавай автоматизации из блоков
Node-RED — отличная альтернатива YAML или визуальному редактору автоматизаций
🔹 Шаблоны (Templates) и Jinja2
Шаблоны позволяют использовать логические выражения и переменные в автоматизациях, скриптах и интерфейсе.
Примеры:
Показать имя человека, если он дома:
{{ state_attr('person.alex', 'friendly_name') if is_state('person.alex', 'home') else 'Нет дома' }}
Условие: если температура ниже 20° и дома кто-то есть: