Оглавление
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 и можем проверить, что реле щелкает при переключении выключателя. Вот в принципе и все!) так же жду ваших вопросов и предложений!