Статья

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


Отличная статья, все настроил. Вот бы еще пару примеров настройки датчика темпиратуры и влажности. 

У меня на данный момент нет таких датчиков, вскоре постараюсь по возможности дополнить



сам спросил сам и отвечу. У меня sonoff th10 с датчиком температуры и влажности AM2301 на прошивке tasmota, ниже рабочий конфиг. Соответственно то, что желтым (topic) у вас может отличаться. 


2000x2000x_image.jpeg?1541458866

Как выдать кнопку xiaomi датчиком движения? Вроде как выдал, отображается как датчик движения но не срабатывает на нажатие. Для этого нужна автоматизация?

Смотря что вы хотите сделать.

Хочу чтоб кнопка имитировала датчик движения при ее нажатии, и потом перебросит в homekit. 

Ты очень доступно пишешь, хороший слог

Вопрос по во этому месту

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

client_id: home-assistant-1  Это кто?  Сам HomeAssistant?  Если так, то как сам 

HomeAssistant узнает что он 

home-assistant-1?  Прошу прощения если вопрос глупый но только начал в этом копаться и ничего не ясно пока что)

Если хоум ассистант установлен из докер контейнеров, для того чтоб мкутт мог подключитсья к стороннему серверу нужно ставить мкутт клиент?




Здравствуйте, 

Помогите пожалуйста. Я подумываю мигрировать на HA с Majordomo. 

Я установил на RPi3 

Home Assistant 0.93.1. 

dev-False; docker-false; hassio-false.

Я установил MQTT. и далее начались вопросы :)









1.Могу ли я установит Hassio (в качестве расширения/дополнения... или мне необходимо устанавливать специализированный образ. Я читал, что с установкой Hassio появляется много удобных сервисов в системе. Можно ли до установить в моём случае?  Стоит ли оно переустановки?)

У меня есть настроенная система. которую я начал пробывать переносить на HA. Я использовал датчики на ESP подключённые через пошивку wifi-iot непосредственно к Majordomo. 

2.Подскажите, пожалуйста, какой метод мне теперь лучше использовать для подключения?

Я стал использовать MQTT. Мне не доводилось вплотную сталкиваться с работой с 

MQTT. Отчего возникли сложности. Я не могу связать информер с датчиками.


Есть Mosquitto. Через mqtt-spy наблюдаю приход данных в топик: ESP/ESP0003/json. 

Данные вида :"{"system":{"hostname":"ESP0003","uptime":161400,"rssi":-76,"freemem":32328},"sensors":{amt:27.4,amh:21.9},"gpio":{"12":1,"14":0}}". 

В configuration.yaml прописаны следующие секции:

1000x_image.png?1558545780

Так выглядит лог MQTT:

1000x_image.png?1558545894

Результат в HAS выглядит так. (вероятно где-то можно увидеть более информативное представление. пока не разобрался...)

1000x_image.png?1558546399

3. Скажите, пожалуйста, что я делаю неправильно. Я понимаю, что ошибка детская... но всё же...

Заранее спасибо. 

(не ругайте сильно, я только учусь ©)

Скажите, что-нибудь получилось? Тоже планирую попробовать НА, но боюсь именно на этом же застряну, потому что информации нигде нет...


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

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Espressif Systems

ESP8266 NodeMcu v3

(16 отзывов)

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