Главная страницаHome AssistantHome Assistant в Docker ContainerDocker часть 6: Mosquitto MQTT
Docker часть 6: Mosquitto MQTT

Docker часть 6: Mosquitto MQTT

Брокер Mosquitto MQTT позволит нам подключаться к широкому спектру устройств. В следующей части мы рассмотрим как подключить Zigbee2MQTT.

Установка Mosquitto MQTT

Как уже стало нашей привычкой, мы начинаем с добавления дополнительной конфигурации в наш файл docker-compose.yaml

version: '3.0'

services:
  portainer:         # часть 2
    [...]
  homeassistant:     # часть 3
    [...]
    depends_on:
      - mariadb
      - mosquitto

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883/tcp"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    stdin_open: true
    tty: true

Мы добавили строки stdin_open и tty, чтобы позже мы могли подключиться к терминалу контейнера для выполнения некоторых команд.

Обратите внимание, что мы также добавили зависимость от контейнера mosquitto для контейнера Home Assistant. Таким образом, наш брокер находится в сети до запуска Home Assistant, и мы можем быть уверены, что наше соединение не прервется.

Конфигурация Mosquttio

Теперь, когда мы запустим контейнер Mosquitto с помощью команды docker compose up-d, журналы будут заполнены ошибками о том, что Unable to open config file /mosquitto/config/mosquitto.conf. Чтобы убрать ошибку создадим пустой конфиг файл.

touch nano ./mosquitto/config/mosquitto.conf

Добавление пользователя

Для доступа к MQTT необходим пользователь. Можно конечно включить настройку allow_anonymous true, но тогда доступ до MQTT будет открыт всем. Возможно это излишняя безопасность так как сервер у нас находится в локальной сети. Но лучше лишний раз себя обезопасить.

Вводим в терминале следующую команду и вводим любой пароль два раза подряд.

docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/mqttuser homeassistant

Заполнение конфигурации

Теперь после генерации пароля можно приступить к заполнению конфига. Если бы мы сделали это раньше, еще при создании, то не смогли бы запустить утилиту mosquitto_passwd.

# открываем файл
sudo nano ./mosquitto/config/mosquitto.conf

# добавляем следующие строки
persistence true
persistence_location /mosquitto/data/

listener 1883

allow_anonymous false

log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

password_file /mosquitto/config/mqttuser

Далее перезагружаем контейнер. Необходимо для подтягивания нового конфига.

docker compose restart mosquitto

Настройка MQTT в Home Assistant

Теперь мы можем подключить Home Assistant к нашему брокеру MQTT, чтобы он мог начать подписываться на топики и отправлять сообщения. Поскольку другие клиенты MQTT еще не подключены, Home Assistant пока не будет добавлять новые устройства.

Переходим в список интегарций ищем MQTT. Вписываем данные для пользователя и подтверждаем соединение.

Теперь можно перейти в лог контейнера и увидеть, что соединение прошло успешно.

Итоговая структура проекта

home-assistant
├── .env
├── docker-compose.yaml
├── fileeditor
├── homeassistant
├── mosquitto
│   └── ...
└── portainer

Список всех частей

Был ли полезен материал?

Мне очень важно получать обратную связь. Пожалуйста, оцените материал. Так я пойму в какую сторону его стоит изменить.

Оставить комментарий