Skip to content

Как я могу пробросить устройства на внешний умный дом?

DivanX10 edited this page Jan 25, 2022 · 24 revisions

Вступление

Что такое внешний умный дом?

Под внешним умным домом понимается, что это может быть какой-то сервер, где крутится умный дом и в нем также стоит MQTT брокер. Для того, чтобы внешний умный дом видел девайсы со шлюза, нужно либо настроить MQTT мост, либо на шлюзе указываем MQTT брокер умного дома.

  • Прямое подключение к MQTT брокеру на шлюзе - на шлюзе стоит локальный MQTT брокер, подключаемся к шлюзу из внешнего сервера или, если на шлюзе стоит платформа умного дома, то подключаемся к локальному MQTT брокеру

  • Прямое подключение к внешнему MQTT брокеру - когда на шлюзе не стоит MQTT брокер и в конфигурационных настройках служб, такие как: zigbee2mqtt, ble2mqtt, lumimqtt указывается IP адрес, порт, логин и пароль от внешнего MQTT брокера

  • MQTT мост - когда на шлюзе стоит MQTT брокер и установленные службы на шлюзе, такие как: zigbee2mqtt, ble2mqtt, lumimqtt, смотрят на локальный MQTT брокер, а сам локальный MQTT брокер подключается к внешнему MQTT брокера


Прямое подключение к MQTT брокеру на шлюзе

Если будем использовать этот вариант, то править конфиги внутренних служб требуется только в том случае, если включили авторизацию на локальном MQTT брокере. По умолчанию доступ к локальному MQTT брокеру для внешних источников закрыт. Чтобы разрешить доступ извне, необходимо добавить строчки

Если доступ без авторизации

listener 1883
allow_anonymous true

Если доступ с авторизацией

Важно! В файле passwordfile должен быть указан логин и пароль. В противном случае доступ будет закрыт.

listener 1883
password_file /etc/mosquitto/passwordfile
  • Если подключаемся к MQTT брокеру с внешнего источника, то указываем IP адрес шлюза, порт и логин\пароль(если включена авторизация)
  • Если подключаемся к MQTT брокеру локально, например на шлюзе стоит Home Assistant и установив клиент MQTT, то указываем localhost и указываем логин\пароль(если включена авторизация)

Прямое подключение к внешнему MQTT брокеру

Для прямого подключения к внешнему MQTT брокеру, необходимо в конфигурации служб, таких, как zigbee2mqtt, lumimqtt, ble2mqtt указать IP и порт от внешнего MQTT брокера, а также, если у вас на внешнем MQTT брокере включена авторизация, то надо указать логин и пароль

Zigbee2mqtt

Для примера рассмотрим настройки в zigbee2mqtt. Настроить можно либо через веб интерфейс, либо в самом configuration.yaml, который находится по пути /etc/zigbee2mqtt/configuration.yaml.

1) Вариант настройки авторизации в веб интерфейсе zigbee2mqtt.

image


2) Вариант настройки в configuration.yaml, который находится по пути /etc/zigbee2mqtt/configuration.yaml.

Для редактирования файла configuration.yaml можете использовать nano в консоли:

nano /etc/zigbee2mqtt/configuration.yaml

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

server: mqtt://192.168.1.50:1883
user: укажите логин
password: укажите пароль

Полный конфиг configuration.yaml

homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost
  client_id: GateLivinRoom
  keepalive: 60
  reject_unauthorized: false
  version: 4
  user: укажите логин
  password: укажите пароль
serial:
  port: /dev/ttymxc1
  adapter: zigate
advanced:
  baudrate: 115200
  log_level: info
  log_directory: /tmp/log/zigbee2mqtt/%TIMESTAMP%
  log_file: log.txt
  log_rotation: true
  log_output:
    - file
  homeassistant_legacy_entity_attributes: false
  legacy_api: false
  ikea_ota_use_test_url: false
  log_syslog:
    app_name: Zigbee2MQTT
    eol: /n
    host: localhost
    localhost: localhost
    path: /dev/log
    pid: process.pid
    port: 123
    protocol: tcp4
    type: '5424'
  channel: 11
devices: devices.yaml
groups: groups.yaml
frontend:
  port: 8090
experimental:
  new_api: true
device_options:
  legacy: false
availability: true
ota:
  disable_automatic_update_check: true


Lumimqtt

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

В файлике lumimqtt также указываем IP адрес и порт от внешнего MQTT брокера, и если у вас на внешнем MQTT брокере включена авторизация, то надо указать логин и пароль

Стандартная конфигурация lumimqtt

{
    "mqtt_host": "localhost",
    "mqtt_port": 1883,
    "mqtt_user": "",
    "mqtt_password": "",
    "topic_root": "lumi/{device_id}",
    "auto_discovery": true,
    "sensor_retain": false,
    "sensor_threshold": 50,
    "sensor_debounce_period": 60,
    "light_transition_period": 1.0
}

Правим только эти строки. Для редактирования файла lumimqtt.json можете использовать nano в консоли:

nano /etc/lumimqtt.json
    "mqtt_host": "указываем IP адрес внешнего MQTT брокера, например 192.168.1.50",
    "mqtt_port": 1883,
    "mqtt_user": "указываем логин, если включена авторизация",
    "mqtt_password": "указываем пароль, если включена авторизация",

Настройка MQTT моста

Для работы моста необходимо установить пакет mosquitto-nossl. Данный пакет mosquitto-nossl позволяет настроить mqtt мост и авторизацию. У пакета mosquitto-ssl не работает mqtt мост, только авторизация и только как mqtt брокер.

Важно! Если у вас на шлюзе стоят службы zigbee2mqtt, lumimqtt, ble2mqtt и другие, которые работают через MQTT брокер, и вы включили авторизацию, то необходимо в настройках этих службах указать логин и пароль для подключения к локальному MQTT брокеру. По умолчанию у них не указан логин и пароль. Если этого не сделать при включенной авторизации на MQTT брокере, то службы zigbee2mqtt, lumimqtt, ble2mqtt и другие не смогут подключиться к MQTT брокеру и не смогут работать.

Как установить пакет mosquitto-nossl, читаем: Как установить и настроить mosquitto?

Ниже пример рабочего конфига для работы MQTT моста + включена авторизация. Это не эталонная конфигурация и вы можете настроить по своему, ибо в mosquitto.conf есть подробное описание про настройку. Добавлять в mosquitto.conf. Для удобства добавьте в самый вверх. Файлик mosquitto.conf находится по адресу /etc/mosquitto/mosquitto.conf

Важно! Если в конфиге не указать топики, например topic homeassistant/# out, то топиков не будет, кроме служебных топиков $SYS. Поэтому указываете какие топики должны быть добавлены. Сами топики можете посмотреть через MQTT Explorer до того, как включите авторизацию. После включения авторизации впишите эти топики в конфигурационный файлик > mosquitto.conf

Примеры топиков c опцией in/out/both/ . Все опции для одного топика указывать нельзя, что то одно: вход/выход/обе стороны/все топики

topic lumi/# #Все топики
topic lumi/# in #Топики на вход
topic lumi/# out #Топики только на выход
topic lumi/# both #Топики в обе стороны

Важно! Копируйте только строки параметров, комментарии не копируйте. Если вы скопируете все с комментариями, то у вас MQTT брокер не запустится. Также проверяйте, чтобы не было пробелов после конца строк параметра. Ниже. для удобства я выложил конфиг без комментов.

connection Home Assistant                          # Куда подключаемся. Указываем вместо Home Assistant любое имя
address 192.168.1.108:1883                         # Куда подключаемся. Указываем IP и порт своего внешнего сервера
listener 1883                                      # Вкл. просл порта 1883 для шлюза, чтобы мы могли подкл к шлюзу через MQTT Exploer
password_file /etc/mosquitto/passwordfile          # Включаем авторизацию. В файлике passwordfile указываем логин и пароль
allow_anonymous false                              # Запрещаем доступ для анонимного подключения
remote_clientid Gateway                            # Имя подключаемого клиента к MQTT брокеру. В логах MQTT брокеру будет имя подключаемого клиента 
remote_username mqtt                               # Указываем логин от MQTT брокеру к которому мы подключаемся
remote_password mqtt                               # Указываем пароль от MQTT брокеру к которому мы подключаемся
bridge_attempt_unsubscribe true                    # Отказ от подписки после удаления темы
cleansession true                                  # Подписки и сообщения удаляются
start_type automatic                               # MQTT мост запускается автоматически
try_private true                                   # MQTT брокеру будет видеть, что это не просто клиент, а MQTT мост
topic homeassistant/# out                          # Указываем топик homeassistant на выход, чтобы не перегружать шлюз.
topic zigbee2mqtt/# both                           # Указываем топик zigbee2mqtt на обе стороны, тогда HomeAssistant увидит устройства со шлюза
topic lumi/# both                                  # Указываем топик topic lumi на обе стороны, тогда HomeAssistant увидит устройства со шлюза

Для удобства я вывел отдельные строки без комментариев, можете копировать и вставлять сразу в mosquitto.conf находящийся по пути /etc/mosquitto/mosquitto.conf

Вариант 1. Настройка моста с включенной авторизацией для подключения к MQTT на шлюзе

connection Home Assistant
address 192.168.1.108:1883
listener 1883
password_file /etc/mosquitto/passwordfile
allow_anonymous false
remote_clientid Gateway
remote_username mqtt
remote_password mqtt
bridge_attempt_unsubscribe true
cleansession true
start_type automatic
try_private true
topic homeassistant/# out
topic zigbee2mqtt/# both
topic lumi/# both

Вариант 2. Настройка моста с выключенной авторизацией для подключения к MQTT на шлюзе

connection Home Assistant
address 192.168.1.108:1883
listener 1883
allow_anonymous true
remote_clientid Gateway
remote_username mqtt
remote_password mqtt
bridge_attempt_unsubscribe true
cleansession true
start_type automatic
try_private true
topic homeassistant/# out
topic zigbee2mqtt/# both
topic lumi/# both

Как включить авторизацию?

Чтобы включить авторизацию в mosquitto, необходимо добавить следующие строки в конфигурационный файлик mosquitto.conf

Важно! Если у вас, при включенной авторизации и включенным MQTT мостом возникли проблемы при подключении к внешнему MQTT брокеру, например в логах аддона MQTT Home Assistant фиксируются цикличные логи connect и disconnect, то выключите авторизацию и предоставьте доступ для всех allow_anonymous true и закомментируйте #password_file /etc/mosquitto/passwordfile.

Закрываем доступ для всех, доступ только с пароля

allow_anonymous false

Включаем авторизацию. Указываем путь к файлику passwordfile, в котором хранятся логин и пароль

password_file /etc/mosquitto/passwordfile

Создаем файлик passwordfile

touch /etc/mosquitto/passwordfile

В файлик passwordfile добавить логин и пароль в таком виде логин:пароль

mqtt:123456

Команды для управления службой mosquitto

Запустить mosquitto

/etc/init.d/mosquitto start

Остановить mosquitto

/etc/init.d/mosquitto stop

Перезагрузить mosquitto

/etc/init.d/mosquitto restart

Посмотреть статус работы mosquitto

/etc/init.d/mosquitto status

Просмотреть весь список команд mosquitto

/etc/init.d/mosquitto

Источники

FAQ Обновление\даунгрейд OpenWRT
FAQ Общее
  1. Как установить OpenWRT на шлюз?
  2. В чем разница между Aqara ZHWG11LM и Xiaomi DGNWG05LM?
  3. Какой шлюз я могу взять, чтобы залить OpenWRT?
  4. Как сделать сброс шлюза до заводского состояния?
  5. Если сбросил шлюз к заводским настройкам, нужно ли делать Erase PDM?
  6. При установке базовых пакетов возникают ошибки
  7. У меня не ставятся пакеты или установились не все пакеты
  8. Как настроить Music Player Daemon?
  9. Как настроить lumimqtt?
  10. Как обновить версию OpenWRT с 21.02 до .... ?
  11. Подключаем Яндекс диск (Webdav)
  12. Как обновить шлюз прошивкой squashfs sysupgrade.bin?
  13. Делаем резервное копирование на NAS Synology
  14. Подключаем USB накопитель для расширения памяти
  15. При загрузке, светодиод шлюза горит белым цветом
  16. Подключаемся к шлюзу через Total Commander
FAQ MQTT
  1. Как я могу пробросить устройства на внешний умный дом?
  2. Как установить и настроить mosquitto? Зачем это нужно?
  3. Установил mosquitto, а подключиться через MQTT Explorer к mqtt не могу
  4. Как настроить mqtt мост?
  5. MQTT LWT последнее состояние
FAQ Zigbee
  1. Какие устройства zigbee я могу добавить в шлюз?
  2. Где взять прошивки для модуля Zigbee?
  3. ZHA. Какую прошивку ставить?
  4. Установил zigbee2mqtt. Не работает веб страница zigbee2mqtt
  5. Ведение журнала отладки Zigbee herdsman. Как получить лог Zigbee herdsman?
  6. Как шлюз перевести в режим роутера или в режим координатора?
  7. Устройства Zigbee часто отваливаются
  8. Чем отличается Erase PDM от Soft reset?
  9. Как перепрошить чип ZigBee?
  10. Делаем бэкап zigbee2mqtt
  11. Обновляем zigbee2mqtt
FAQ LuCI
  1. Как вывести терминал в веб интерфейс LuCI
FAQ Bluetooth для Xiaomi DGNWG05LM
  1. Подключаем к шлюзу телефон через bluetooth
FAQ HomeAssistant
  1. Cкрипты для установки и удаления Home Assistant, а также создания бэкапа находятся здесь
  2. Как установить недостающий компонент для интеграции Home Assistant?
  3. Как установить интеграцию Passive BLE Monitor?
  4. Как установить интеграцию HASS Configurator?
  5. Как добавить интеграцию TTS Яндекс
  6. Альтернатива HACS. Загружаем или обновляем интеграции автоматически
  7. Мониторинг папок для бэкапа и не только
  8. System Monitor - мониторим шлюз
  9. Как подключиться к внешней базе MariaDB?
  10. Home Assistant на шлюзе не запускается
Сборки
  1. Сборки в виде бэкапов
  2. Компиляция пакетов для OpenWRT
  3. Собираем свой бэкап
Ссылки на различные проекты для OpenWRT
FAQ Perenio
Видео инструкции
Контакты
Clone this wiki locally