Статья

Home Assistant, статья 8 (MQTT)

Оглавление

Cтатья 1 (установка)
Cтатья 2 (базовая настройка)
Cтатья 3 (добавляем устройства)
Cтатья 4 (интеграция с HomeKit)
Статья 5 (автоматизации)Статья 6 (GUI)Статья 7 (Z-Wave)Статья 8 (MQTT)Статья 9 (HTTPS, SSL)

Предисловие

Про теорию MQTT брокера можно прочитать в отличной статье нашего коллеги тут. Home Assistant (далее HA) имеет встроенный MQTT брокер, но многие жалуются на его нестабильность и обрезанность, поэтому будем ставить и настраивать альтернативный MQTT брокер Mosquitto.

Установка альтернативного брокера

Для начала необходимо обновить состояние системы до актуальной. Подключаемся к малине по ssh и выполняем следующие команды:

sudo apt-get update sudo apt-get upgrade

Далее ставим брокер:

sudo apt-get install mosquitto mosquitto-clients

После установки брокера, необходимо защитить его от подписки кого бы то ни было при помощи связки логина пароля, для этого воспользуемся следующей командой:

sudo mosquitto_passwd -c /etc/mosquitto/passwd homeassistant

Далее надо будет ввести два раза пароль по запросу. Эта команда создаст связку логина homeassistant и пароля который вы задали в файле /etc/mosquitto/passwd и теперь нам надо натравить брокер на этот файл и запретить анонимные подключения к нему. Сделаем это так, откроем файл конфига брокера:

sudo nano /etc/mosquitto/conf.d/default.conf

И запишем туда следующие строки:

allow_anonymous false password_file /etc/mosquitto/passwd

сохраняем файл и перезагружаем брокер командой:

sudo systemctl restart mosquitto

Далее можем проверить, что все настроено правильно. Откроем параллельно два окна терминала и подключимся в обоих к нашей малине по ssh. Далее в одном из них напишем: 

mosquitto_sub -h localhost -t test -u "homeassistant" -P "ваш_пароль"

а в другом:

mosquitto_pub -h localhost -t "test" -m "Test message" -u "homeassistant" -P "ваш_пароль"

после этого в первом терминале мы увидим появившееся сообщение Test message. Если все так - вы все настроили верно! Можно приступать к настройке HA

Настройка стороннего брокера в HA

Открываем основной конфигурированиям HA любым удобным способом и дописываем в конец файла:

mqtt: broker: 192.168.1.100 port: 1883 client_id: home-assistant-1 keepalive: 60 username: !secret mqtt_login password: !secret mqtt_password protocol: 3.1 birth_message: topic: "tele/hass1/LWT" payload: "Online" qos: 1 retain: true will_message: topic: "tele/hass1/LWT" payload: "Offline" qos: 1 retain: true

Разберем по порядку:

  • broker ip адрес брокера в вашем случае IP адрес малины
  • client_id уникальное имя подключающегося клиента
  • keepalive промежуток времени, в через которое клиент будет слать брокеру сообщение "я живой"
  • username имя пользователя для подключения, задавали выше
  • password пароль для подключения к брокеру, так же задали выше
  • protocol версия протокола
  • birth_message/will_message сообщения о доступности/недоступности клиента
  • topic топик в котором размещается сообщение
  • payload текст сообщения
  • qos грубо говоря приоритет сообщения
  • retain будет ли сообщение передано другим клиентам 

Все что мы настроили - касается только информации о статусе самого HA в брокере

Добавляем устройство с MQTT

HA поддерживает довольно обширный список устройств, которые можно подключить таким способом. Покажу на примере реле с esp8266 на прошивке Tasmota, которая у меня управляет котлом отопления через сухие контакты. На ней у меня такие настройки:

при этом имеем такие топики:

tele/sonoff/STATE сюда пишется состояние реле
tele/sonoff/LWT, а сюда пишется сообщения "Я живой"

Теперь добавим свитч в HA, для этого в конфиг внесем несколько строчек: 

switch: - platform: mqtt name: "Ariston" state_topic: "stat/sonoff/POWER" command_topic: "cmnd/sonoff/POWER" availability_topic: "tele/sonoff/LWT" qos: 1 payload_on: "ON" payload_off: "OFF" payload_available: "Online" payload_not_available: "Offline" state_on: "ON" state_off: "OFF" retain: true

так же давайте разберем поподробнее что мы там понаписали:

platform ну тут понятно указываем что используем MQTT платформу
name название свитча, которое будет отображаться в HA, оно же идет в entity
state_topic топик откуда читаем состояние
command_topic топик в который будем передавать команды
availability_topic топик в котором пишется доступность устройства
qos рассматривали выше
payload_on сообщение о включении 
payload_off сообщение о выключение
payload_available сообщение о доступности
payload_not_available сообщение о недоступности
state_on статус который будет считаться включенным
state_off статус который будет считаться выключенным
retain рассматривали выше

сохраняем конфиг, проверяем, перезагружаем HA и можем проверить, что реле щелкает при переключении выключателя. Вот в принципе и все!) так же жду ваших вопросов и предложений!


Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Espressif Systems

ESP8266 NodeMcu v3

(16 отзывов)

Вернуться назад