Автор Тема: ESPHome  (Прочитано 19 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр

  • Постоялец
  • ***
  • Сообщений: 162
  • Репутация: 1
  • Мощность альтернативной энергоустановки: 800
ESPHome
« : 30 Октябрь 2019, 11:10:42 »
Перевод материалов с https://esphome.io и собственный опыт по мере его накопления.
MQTT
Предупреждение
При включении MQTT, когда вы не используете «родной API» для Home Assistant, вы должны удалить строку api: из конфигурации ESPHome, в противном случае ESP будет перезагружаться каждые 5 минут, поскольку ни один клиент не подключен к нативному API.

# Пример конфигурации
mqtt:
  broker: 10.0.0.2
  username: livingroom
  password: MyMQTTPassword

Параметры конфигурации:

    broker (Обязательный, строка): Адрес MQTT брокера.
    port (Не обязательный, целое): Порт MQTT брокера. По умолчанию 1883.
    username (Не обязательный, строка): Логин для аутентификации. По умолчанию пустой (без утентификации).
    password (Не обязательный, строка): Пароль для аутентификации. По умолчанию пустой (без утентификации).
    client_id (Не обязательный, строка): Идентификатор клиента, используемый для открытия соединений. Смотрите Defaults для дополнительной инфомации.
    discovery (Не обязательный, логический): Для автоматического обнаружения Home Assistant должно быть включено. По умолчанию True.
    discovery_retain (Не обязательный, логический): Сохранять ли сообщения обнаружения MQTT для автоматического добавления объектов при перезапуске Home Assistant. По умолчанию True.
    discovery_prefix (Не обязательный, строка): Префикс, используемый для обнаружения MQTT Home Assistant. Не должен начинаться со слэша. По умолчанию homeassistant.
    topic_prefix (Не обязательный, строка): Префикс, используемый для всех сообщений MQTT. Не должен начинаться со слэша. По умолчанию <APP_NAME>.
    log_topic (Не обязательный, MQTTMessage) Топик для отправки сообщений журнала MQTT.
    birth_message (Не обязательный, MQTTMessage): Сообщение для отправки при установлении соединения с брокером. Смотреть Last Will And Birth Messages для дополнительной информации.
    will_message (Не обязательный, MQTTMessage): Сообщение для отправки при сбросе соединения с брокером. Смотреть Last Will And Birth Messages для дополнительной информации.
    shutdown_message (Не обязательный, MQTTMessage): Сообщение для отправки, когда узел выключается и соединение закрывается корректно. Смотреть Last Will And Birth Messages для дополнительной информации.
    ssl_fingerprints (Не обязательный, список): Только для ESP8266. Список хэшей SHA1, используемых для проверки соединений SSL. Смореть SSL Fingerprints для ополнительной информации.
    reboot_timeout (Не обязательный, время): Время ожидания перед перезагрузкой, если отсутствует соединение MQTT. Можно отключить, установив это значение в 0 с. По умолчанию 5 минут.
    keepalive (Не обязательный, время): Время, в течение которого сокет MQTT остается открытым, уменьшение может помочь с общей стабильностью из-за увеличения трафика WiFi с большим количеством пингов. По умолчанию 15 секунд.
    on_message (Не обязательный, Automation): Действие, которое нужно выполнить, когда получено сообщение в определнный топик MQTT. Смотреть on_message Trigger.
    on_json_message (Не обязательный, Automation): Действие, выполняемое при получении сообщения JSON в определнный топик MQTT. Смотреть on_json_message Trigger.
    id (Не обязательный, ID): Ручное указание идентификатора, используемого для генерации кода.

MQTTMessage
С помощью схемы сообщений MQTT вы можете указать ESPHome, как следует отправлять конкретное сообщение MQTT.
# Simple:
some_option: topic/to/send/to

# Disable:
some_option:

# Advanced:
some_option:
  topic: topic/to/send/to
  payload: online
  qos: 0
  retain: True

Параметры конфигурации:

    topic (Обязательный, строка): Топик MQTT для публикации сообщения.
    payload (Не обязательный, срока): Содержание сообщения. Будет заполнен фактической полезной нагрузкой с некоторыми опциями, такими как log_topic.
    qos (Не обязательный, целое): Уровень качества обслуживания по теме. По умолчанию 0.
    retain (Не обязательный, логический): Если опубликованное сообщение должно иметь флаг сохранения или нет. По умолчанию True.

Log_topic имеет дополнительную опцию конфигурации:

     level (Не обязательный, строка): уровень журнала, используемый для журналов MQTT. Смотреть Log Levels для вариантов.

Испльзование с Home Assistant.
Использовать ESPHome с Home Assistant очень просто, просто настройте брокер MQTT (например, mosquitto) и укажите Home Assistant и ESPHome на этого брокера. Затем включите обнаружение в конфигурации Home Assistant с помощью следующего:
# Example Home Assistant configuration.yaml entry
mqtt:
  broker: ...
  discovery: True
И это уже должно работать. Все устройства, определенные с помощью ESPHome, должны автоматически отображаться в разделе объектов Home Assistant.

При добавлении новых объектов у вас могут возникнуть проблемы со старыми объектами, которые все еще появляются в интерфейсе Home Assistant. Это связано с тем, что для того, чтобы Home Assistant «обнаружил» ваши устройства при перезапуске, все сообщения MQTT обнаружения должны быть сохранены. Поэтому старые сущности также будут появляться при каждом перезапуске Home Assistant, даже если они уже находятся в ESPHome.

Чтобы исправить это, ESPHome имеет простой вспомогательный скрипт, который удаляет устаревшие сохраненные сообщения для вас:
esphome configuration.yaml clean-mqttС докером:
docker run --rm -v "${PWD}":/config -it esphome/esphome configuration.yaml clean-mqttЭто удалит все сохраненные сообщения с темой <DISCOVERY_PREFIX> / + / NODE_NAME / #. Если вы хотите удалить другую тему, просто добавьте --topic <your_topic> в команду.

Значения по умолчанию

По умолчанию ESPHome будет префикс всех сообщений с вашим именем узла или topic_prefix, если вы указали его вручную. Идентификатор клиента будет автоматически создан с использованием имени вашего узла и добавления к нему MAC-адреса вашего устройства. Затем обнаружение включается по умолчанию с помощью префикса Home Assistant по умолчанию homeassistant.

Если вы хотите использовать префикс всех сообщений MQTT с другим префиксом, таким как home / living_room, вы можете указать свой собственный topic_prefix в конфигурации. Таким образом, вы можете использовать существующие символы подстановки, такие как home / + / #, вместе с ESPHome. Все остальные функции ESPHome (например, доступность) должны работать правильно.

Сообщения при старте и завершении работы.
ESPHome использует сообщения о старте и завершении работы в MQTT для создания отчетов о доступности для Home Assistant. Если узел не подключен к MQTT, Home Assistant покажет все его объекты как недоступные.
По умолчанию ESPHome отправляет сохраненное сообщение MQTT в <TOPIC_PREFIX> / status с полезной нагрузкой в режиме онлайн и сообщает брокеру отправить сообщение <TOPIC_PREFIX> / status с полезной нагрузкой в автономном режиме, если соединение разрывается.
Вы можете изменить эти сообщения, переопределив birth_message и will_message с помощью следующих параметров:
mqtt:
  # ...
  birth_message:
    topic: myavailability/topic
    payload: online
  will_message:
    topic: myavailability/topic
    payload: offline
Если сообщение о старте и завершении содержат пустые топики или топики, отличающиеся друг от друга - отчеты о доступности будут отключены.


 

Яндекс.Метрика