Установка Home Assistant + mosquitto + zigbee2mqtt в Docker

13 декабря 2018, 11:52

Вводная

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

Для чего это все нужно? Хотя бы для того, что стоит один раз все настроить и в дальнейшем разворачивать все сервисы парой команд за несколько минут на любом устройстве. Это уже многого стоит - нашего времени! =)

Docker и docker-compose

Обновляем индексы репозиториев и устанавливаем все доступные обновления:

sudo apt-get update
sudo apt-get upgrade -y
Устанавливаем нужные Docker пакеты:
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common 
Добавляем официальный ключ GPG Docker:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Добавляем официальный репозиторий Docker (в моем случае raspberry pi, это armhf):
armhf:
echo "deb [arch=armhf] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
x86_64/amd64:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
arm64:
echo "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
Обновим индексы репозиториев и установим Docker:
sudo apt-get update
sudo apt-get install -y docker-ce
Далее установим python3, пакетный менеджер pip, обновим pip и установим docker-compose:
sudo apt-get install -y python3 python3-pip
sudo pip3 install --upgrade pip
sudo pip3 install docker-compose
Так же вы можете посмотреть подробную инструкцию по установке docker, для вашего устройства и архитектуры на официальной странице документации Docker на сайте https://docs.docker.com/install/.

Установка Portainer

Для удобства использования и управления контейнерами Docker, я рекомендую использовать веб-морду portainer

Что бы установить Portainer, выполним следующую команду в консоли:
sudo docker run --restart always --name portainer -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:1.19.2
Открываем в браузере http://YOU_IP:9000/ и попадаем в нашу установленную админку Portainer

Вводим логин и пароль, и создаем пользователя.

Далее указываем, что Docker у нас установлен локально, и жмем кнопку connect

Portainer. Развертывание при помощи docker-compose

В дальнейшем все действия будем выполнять от нашего пользователя pi (1000:1000), вашем случае может быть другой. Добавим нашего пользователя в группу docker, и авторизовываемся заново:

sudo usermod -a -G docker pi && su pi
Создадим папку /home/pi/smarthome и в нем файл docker-compose.yml и папку portainer для данных сервиса Portainer:
mkdir /home/pi/smarthome
touch /home/pi/smarthome/docker-compose.yml
Добавим в файл docker-compose.yml следующее:
version: '3.3'

services:

  portainer:
    container_name: portainer
    image: portainer/portainer:1.19.2
    restart: always
    ports:
      - 9000:9000
    volumes:
      - ./portainer:/data
      - /var/run/docker.sock:/var/run/docker.sock
Останавливаем и удаляем контейнер portainer, далее перенесем его данные в созданную папку /home/pi/smarthome/portainer и меняем владельца с root на нашего пользователя:
docker stop portainer
docker rm portainer
sudo mv /var/lib/docker/volumes/portainer_data/_data /home/pi/smarthome/
sudo chown -R pi:pi /home/pi/smarthome/
mv /home/pi/smarthome/_data /home/pi/smarthome/portainer
docker volume rm portainer_data
Поднимаем контейнер portainer и запускаем его в фоне при помощи docker-compose:
cd /home/pi/smarthome/ 
docker-compose up -d

Mosquitto

Создадим необходимые для работы брокера папки и файлы:

mkdir /home/pi/smarthome/mosquitto
mkdir /home/pi/smarthome/mosquitto/config
mkdir /home/pi/smarthome/mosquitto/data
mkdir /home/pi/smarthome/mosquitto/log
touch /home/pi/smarthome/mosquitto/config/mosquitto.conf
touch /home/pi/smarthome/mosquitto/config/passwd
Добавляем сервис Mosquitto в docker-compose.yml в конец файла:
  eclipse-mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    restart: always
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    ports:
      - 1883:1883
    user: '1000:1000'
Создаем контейнер:
cd /home/pi/smarthome/
docker-compose up -d
Создаем mqtt пользователя:
docker exec -it mosquitto mosquitto_passwd -c  /mosquitto/config/passwd user
вводим пароль и подтверждаем его
Файл конфигурации /home/pi/smarthome/mosquitto/config/mosquitto.conf:
persistence true
persistence_location /mosquitto/data
allow_anonymous false
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/config/passwd
Перезапустим наш сервис mosquitto:
docker restart mosquitto
На этом этапе mosquitto установлен и настроен.

zigbee2mqtt

Создадим папку для работы нашего zigbee2mqtt моста:

mkdir /home/pi/smarthome/zigbee2mqtt
Добавляем сервис zigbee2mqtt в docker-compose.yml в конец файла:
  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt:arm32v6 # arm32 (raspberry pi)
    #image: koenkk/zigbee2mqtt:latest # x86_64/amd64
    restart: always
    volumes:
      - ./zigbee2mqtt:/app/data
    devices:
      - /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014D9E292-if00:/dev/ttyACM0
    user: '1000:20'
Заметьте что id пользователя 1000, а id группы 20, это нужно, для того что бы пользователь в контейнере смог использовать группу dialout.

Нам нужно прокинуть наш usb-стик из хоста в контейнер, в моем случае это: 

/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014D9E292-if00

Где он находиться у вас, узнать можно выполнив команду в консоли:

ls /dev/ttyACM*
У меня несколько устройств в системе, и что бы не заблудиться в них, я указал по уникальному идентификатору устройства:
ls /dev/serial/by-id/usb-*
А так же для использования usb-стика нашим пользователем pi, нужно его добавить в группу dialout. Выполним команду в консоле:
sudo usermod -a -G dialout pi
Запускаем контейнер c zigbee2mqtt:
cd /home/pi/smarthome/ 
docker-compose up -d

Сервис запущен, нужно только настроить подключение к ранее подготовленному mosquitto.

После развертывания нашего контейнера, в папке /home/pi/smarthome/zigbee2mqtt будут находиться конфигурационные файлы zigbee2mqtt.
ls -lia /home/pi/smarthome/zigbee2mqtt
Настроим файл конфигураций /home/pi/smarthome/zigbee2mqtt/configuration.yaml, добавим в него настройки подключение к mqtt брокеру:
# Home Assistant integration (MQTT discovery)
homeassistant: true 

# allow new devices to join
permit_join: true

# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://192.168.2.163'
  # MQTT server authentication, uncomment if required:
  user: user   
  password: qwerty     

# Serial settings
serial:
  # Location of CC2531 USB sniffer
  port: /dev/ttyACM0
Заметьте, я указал IP-адрес хоста 192.168.2.163, то есть IP-адрес малины в нашей локальной сети.

Перезапустим контейнер zigbee2mqtt:

docker restart zigbee2mqtt

Как вы можете заметить, все завелось, zigbee2mqtt успешно подключился к mqtt брокеру.

Home Assistant - вариант №1 ("легко")

Официальный образ Home Assistant. Плюс данного способа в том, что все очень просто разворачивает. Выполнил команду, и все скачалось и запустилось. Минус в том, что данный образ жирноват и кушает много места на диске, целых 1ГБ на образе для arm32 и 2.2ГБ для x86_64/amd64!

Найти образ (image) Home Assistant именно для вашего устройства и архитектуры, можно на официальной странице https://hub.docker.com/u/homeassistant.

И так приступим, добавим в наш docker-compose.yml следующие строки для нашего контейнера:
  homeassistant:
    container_name: homeassistant
    image: homeassistant/raspberrypi3-homeassistant # arm32
    #image: homeassistant/home-assistant # x86_64/amd64
    volumes:
      - ./homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: always
    network_mode: host
    user: '1000:1000'
Создадим папку, где будут находиться конфигурационные файлы HA:
mkdir /home/pi/smarthome/homeassistant
mkdir /home/pi/smarthome/homeassistant/config
Соберем контейнер:
cd /home/pi/smarthome/
docker-compose up -d
Готово, создаем учетную запись и добавляем в конфигурационный файл /home/pi/smarthome/homeassistant/config/configuration.yaml настройки подключения mqtt брокера:
#https://www.home-assistant.io/components/mqtt/
mqtt:
  broker: 192.168.2.163
  port: 1883
  username: user                 
  password: qwerty               
  client_id: homeassistant
  birth_message:
    topic: 'hass/status'
    payload: 'online'
    qos: 1
    retain: true
  will_message:
    topic: 'hass/status'
    payload: 'offline'
    qos: 1
    retain: true
 И перезапускаем Home Assistant.

Home Assistant - вариант №2 (оптимизация)

Суть всей оптимизации в том, что мы будем устанавливать только необходимые компоненты которые будем использовать в нашем Home Assistant. Во втором варианте мы будем собирать наш контейнер на основе образа alpine (5MB), фильтровать зависимости Home Assistant, их весьма много, да же я бы сказал очень много. Тем самым размер нашего образа весьма похудеет.

И так приступим, создадим файл Dockerfile, в котором будем описывать сборку нашего образа:
touch /home/pi/smarthome/homeassistant/Dockerfile
Содержимое /home/pi/smarthome/homeassistant/Dockerfile:
FROM alpine:3.8
LABEL maintainer="tweaker3 <tweaker3@ya.ru>"
LABEL Description="Home Assistant"

# Часовой пояс
ARG TIMEZONE=Europe/Moscow
# ID пользваотеля на хост машине, узнать в консоле: echo $(id -u)
ARG UID=1000
# ID группы пользователя на хост машине, узнать в консоле: echo $(id -g)
ARG GID=1000
# Версия Home Assistant (что бы обновить, нужно менять)
ARG VERSION=0.83.3
# Список python пакетов/зависимостей ХА, которые нам необходимы
ARG PLUGINS="frontend|sqlalchemy|xmltodict|netdisco|distro|aiohttp_cors|paho-mqtt"

ADD "https://raw.githubusercontent.com/home-assistant/home-assistant/${VERSION}/requirements_all.txt" /tmp

RUN apk add --no-cache python3 libffi-dev libressl-dev eudev-dev libstdc++ && \
    addgroup -g ${GID} hass && \
    adduser -h /config -D -G hass -s /bin/sh -u ${UID} hass && \
    addgroup hass dialout && \
    pip3 install --upgrade --no-cache-dir pip && \
    apk add --no-cache --virtual=build-dependencies build-base linux-headers python3-dev tzdata && \
    cp "/usr/share/zoneinfo/${TIMEZONE}" /etc/localtime && echo "${TIMEZONE}" > /etc/timezone && \
    sed '/^$/q' /tmp/requirements_all.txt > /tmp/requirements_core.txt && \
    sed '1,/^$/d' /tmp/requirements_all.txt > /tmp/requirements_plugins.txt && \
    egrep -e "${PLUGINS}" /tmp/requirements_plugins.txt | grep -v '#' > /tmp/requirements_plugins_filtered.txt && \
    pip3 install --no-cache-dir -r /tmp/requirements_core.txt && \
    pip3 install --no-cache-dir -r /tmp/requirements_plugins_filtered.txt && \
    pip3 install --no-cache-dir homeassistant=="${VERSION}" && \
    # For telegram 
    pip3 install --no-cache-dir netifaces PySocks && \
    apk del build-dependencies && \
    rm -rf /tmp/* /var/tmp/* /var/cache/apk/*

USER hass
ENTRYPOINT ["hass", "--open-ui", "--config=/config"]
Поправим наш сервис homeassistant в файле docker-compose.yml:
  homeassistant:
    container_name: homeassistant
    build: ./homeassistant
    #image: homeassistant/raspberrypi3-homeassistant # arm32
    #image: homeassistant/home-assistant # x86_64/amd64
    volumes:
      - ./homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: always
    network_mode: host
Удаляем прошлый контейнер и образ, и собираем новый:
cd /home/pi/smarthome/
docker stop homeassistant
docker rm homeassistant
docker rmi homeassistant/raspberrypi3-homeassistant:latest
docker-compose build
docker-compose up -d
Ждем завершение сборки.

Как нам узнать какой пакет нужно устанавливать? Очень просто, например я использую трекинг по nmap. 

Добавляем конфигурации в Home Assistant, перезагружаем его, и идем смотреть логи:

device_tracker:
  - platform: nmap_tracker
    hosts: 192.168.2.190
    home_interval: 10
В логи сыплются ошибки что не найден nmap, открываем ссылку https://raw.githubusercontent.com/home-assistant/home-assistant/0.83.3/requirements_all.txt и ищем там пакет отвечающий за работу nmap:
# homeassistant.components.device_tracker.nmap_tracker
python-nmap==0.6.1
Добавляем имя пакета в наш Dockerfile, а так же укажем nmap в список устанавливаемого софта для образа alpine:
ARG PLUGINS="frontend|sqlalchemy|xmltodict|netdisco|distro|aiohttp_cors|paho-mqtt|python-nmap"

RUN apk add --no-cache python3 libffi-dev libressl-dev eudev-dev libstdc++ nmap && \
Сохраняем Dockerfile, собираем образ и пересоздаем контейнер:
docker-compose build
docker-compose up -d
Я дома =)

Немного Portainer:

Обновление

Для того, что бы обновить наши сервисы до последних версий, нужно выполнить в консоли:

cd /home/pi/smarthome
docker-compose pull
docker-compose build
docker-compose up -d

Итог

Второй вариант, весьма нетривиален, и новичку покажется не прост в настройке, но при помощи его можно не плохо так сократить размер образа HA. Если вам это не нужно, и у вас достаточно места на диске, рекомендую использовать первый вариант развертывания Home Assistant в Docker. 

Структура каталогов и файлов:
-- smarthome
   |-- docker-compose.yml
   |-- homeassistant
   |   |-- config
   |   `-- Dockerfile
   |-- mosquitto
   |   |-- config
   |   |   |-- mosquitto.conf
   |   |   `-- passwd
   |   |-- data
   |   `-- log
   |-- portainer
   `-- zigbee2mqtt
docker-compose.yml
version: '3.3'

services:

  portainer:
    container_name: portainer
    image: portainer/portainer:1.19.2
    restart: always
    ports:
      - 9000:9000
    volumes:
      - ./portainer:/data
      - /var/run/docker.sock:/var/run/docker.sock

  eclipse-mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    restart: always
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    ports:
      - 1883:1883
    user: '1000:1000'

  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt:arm32v6 # arm32 (raspberry pi)
    #image: koenkk/zigbee2mqtt:latest # x86_64/amd64
    restart: always
    volumes:
      - ./zigbee2mqtt:/app/data
    devices:
      - /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014BDEB9C-if00:/dev/ttyACM0
    user: '1000:20'

  homeassistant:
    container_name: homeassistant
    #build: ./homeassistant
    image: homeassistant/raspberrypi3-homeassistant # arm32
    #image: homeassistant/home-assistant # x86_64/amd64
    volumes:
      - ./homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: always
    network_mode: host
    user: '1000:1000'

Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Алексей Новосельцев (novo)

    Эээ...вижу работа проделана большая. Вот только мои знания не позволяют понять, в чём отличие установки Home Assistant описанной в статье от простой установки, как в статьях Охотника.

    И что это за Докер такой, может вводной информации не хватает?

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) год назад

      Докер... Ну если простыми словами, это такая штука, которая изолирует ваш ХА, со всеми его конфигами и софтовыми зависимостями в контейнер, который в дальнейшем можно развернуть буквально за секунды, на любой машине, где установлен докер.

      Подробнее в википедии

  2. Виталий Никольский (bigmanekb)

    вот если бы еще было описано как локально установленный ffmpeg использовать внутри докерного НА, это было бы вообще все что нужно для щастья.

    да и так статья ОГОНЬ ! Автору респект ! Разжевал для меня докер. Спасибо !

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) год назад

      Спасибо! Хм.. ffmpeg уже есть в контейнере (вариант №1), и нет необходимости управлять им на хосте.

      • Виталий Никольский (bigmanekb)

        А в том то и дело, что встроенный в НА ffmpeg кривой и тупит. А вот собранный по статье здесь на портале "правильный" вариант, хотелось бы из хоста просунуть в докер контейнер НА. А вот как это сделать правильно ?

    • Александр Жабунин (OXOTH1K)

      Я вчера завел камеры в докерном ffmpeg, работает лучше чем в венве питоновском. Ни затупок ничего такого не наблюдаю. Но это на десктопе а не на малине.

  3. Олег Челбаев (sprut)

    Отличный материал и великолепный старт ))) Классное начало и ждём продолжения, и удачи в конкурсе ;)

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) отредактировано год назад

      Спасибо! Собственно по докеру, заметил, многие спрашивать стали в чате, так и появился этот гайд =)

  4. (DenisZagitov)
    (DenisZagitov) отредактировано год назад

    Очень надеялся что эта статья наконец поможет мне установить докер, но увы...

    Ставлю на Raspberry Pi Zero W чистый Raspbian Stretch Lite, иду по вашей инструкции и на шаге 

    sudo apt-get install -y docker-ce

    вижу ошибки: https://pastebin.com/wCphp1JX

    Job for docker.service canceled.

    docker.service couldn't start.

    Почему так и что можно сделать?

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) отредактировано год назад

      Судя по логам проблема с фреймворком DKMS, попробуйте перезапустить малину, и выполнить:

      sudo apt-get install -f 

      если не поможет, напишите мне в телеграмм

      UPD:
      Была проблема на raspberry pi zero w. Погуглил проблема массовая.

      Помогает:

      sudo apt-get install docker-ce=18.06.1~ce~3-0~raspbian
      sudo apt-mark hold docker-ce=18.06.1~ce~3-0~raspbian
  5. (DenisZagitov)
    (DenisZagitov) год назад

    Что бы добавить в автозапуск создайте файл:

    sudo nano /etc/systemd/system/docker-compose-app.service

    И внесите в него следующее:

    
    
    [Unit]
    Description=Docker Compose Application Service
    Requires=docker.service
    After=docker.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    WorkingDirectory=/home/pi/smarthome
    ExecStart=/usr/local/bin/docker-compose up -d
    ExecStop=/usr/local/bin/docker-compose down
    TimeoutStartSec=0
    
    [Install]
    WantedBy=multi-user.target
    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) год назад

      Так там и так автозапуск имеется. За это отвечает:

      restart: always
  6. Artem Tomshin (tweaker3)
    Artem Tomshin (tweaker3) отредактировано год назад

    Так там и так автозапуск имеется. За это отвечает:

    restart: always
  7. (samyil)
    (samyil) отредактировано год назад

    все поставил. вроде работает. при попытке подключить нативные HomeKit устройства выдает ошибку Не удалось вызвать службу configurator/configure.

    2018-12-30 00:32:23 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.1849337712] Error handling message: {'type': 'call_service', 'domain': 'configurator', 'service': 'configure', 'service_data': {'configure_id': '1846182032-4', 'fields': {'code': '377-99-980'}}, 'id': 20},

    Traceback (most recent call last):, await func(hass, connection, msg), 

    File "/usr/local/lib/python3.6/site-packages/homeassistant/components/websocket_api/decorators.py", line 16, in _handle_async_response,

    File "/usr/local/lib/python3.6/site-packages/homeassistant/components/websocket_api/commands.py", line 148, in handle_call_service, connection.context(msg))
    File "/usr/local/lib/python3.6/site-packages/homeassistant/core.py", line 1121, in async_call, self._execute_service(handler, service_call)), 

    File "/usr/local/lib/python3.6/site-packages/homeassistant/core.py", line 1143, in _execute_service, await handler.func(service_call)

    File "/usr/local/lib/python3.6/site-packages/homeassistant/components/configurator.py", line 221, in async_handle_service_call, call.data.get(ATTR_FIELDS, {})), 

    File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run, result = self.fn(*self.args, **self.kwargs), pairing_id), 

    File "/usr/local/lib/python3.6/site-packages/homeassistant/components/homekit_controller/__init__.py", line 192, in device_config_callback, 

    File "/usr/local/lib/python3.6/site-packages/homekit/protocol.py", line 94, in perform_pair_setup, resp = connection.getresponse(), 

    File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse, response.begin()

    File "/usr/local/lib/python3.6/http/client.py", line 297, in begin, version, status, reason = self._read_status(), 

    File "/usr/local/lib/python3.6/http/client.py", line 258, in _read_status, line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1"), 

    File "/usr/local/lib/python3.6/socket.py", line 586, in readinto, return self._sock.recv_into(b), 

    socket.timeout: timed out

    возникает вопрос как подключиться к консоли НА что б разобраться с ошибкой??

  8. Fernando Santos (f3g3s3)
    Fernando Santos (f3g3s3) год назад

    Thanks!!!

    Good work!!!

    Best regards from Spain!!!

  9. (ikifka)
    (ikifka) год назад

    Добрый вечер.
    А начал с вашей установки , довольно таки доступно для начинающего.
    Столкнулся со следующей проблемой : при отключении RPi от питания (shudown прежде), и подключении снова , датчик темп/влаж/давл от Xiaomi , как будто отваливается. В Home Assistant  видно последнее значение до выключения. После удержания кнопки сопряжения на датчике 3 сек  , он сам подключается назад.
    Как избежать отваливание сенсора ?

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) год назад

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

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

      • (ikifka1)
        (ikifka1) отредактировано год назад

        Ждал , значения висят , например температуре, на 19.12С на протяжении часа и не меняется.

        • zigbee2mqtt:info 2019-1-29 17:28:49 Logging to directory: '/app/data/log/2019-01-29.17-28-49', zigbee2mqtt:debug 2019-1-29 17:28:49 Removing old log directory '/app/data/log/2019-01-26.02-35-28', zigbee2mqtt:debug 2019-1-29 17:28:51 Using zigbee-shepherd with settings: '{"net":{"panId":6754,"channelList":[11]},"dbPath":"/app/data/database.db","sp":{"baudRate":115200,"rtscts":true}}', zigbee2mqtt:debug 2019-1-29 17:28:51 Loaded state from file /app/data/state.json, zigbee2mqtt:info 2019-1-29 17:28:51 Starting zigbee2mqtt version 1.0.1 (commit #84593a5), zigbee2mqtt:info 2019-1-29 17:28:51 Starting zigbee-shepherd, zigbee2mqtt:info 2019-1-29 17:28:54 Error while starting zigbee-shepherd, attemping to fix... (takes 60 seconds), zigbee2mqtt:info 2019-1-29 17:29:54 Starting zigbee-shepherd, zigbee2mqtt:info 2019-1-29 17:29:56 zigbee-shepherd started, zigbee2mqtt:info 2019-1-29 17:29:56 Coordinator firmware version: '20181024', zigbee2mqtt:debug 2019-1-29 17:29:56 zigbee-shepherd info: {"enabled":true,"net":{"state":"Coordinator","channel":11,"panId":"0x1a62","extPanId":"0xdddddddddddddddd","ieeeAddr":"0x00124b0018ed29ca","nwkAddr":0},"firmware":{"transportrev":2,"product":0,"version":"2.6.3","revision":20181024},"startTime":1548782996,"joinTimeLeft":0}, zigbee2mqtt:info 2019-1-29 17:29:56 Currently 1 devices are joined:, zigbee2mqtt:info 2019-1-29 17:29:56 0x00158d0002c8ede0 (0x00158d0002c8ede0): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice), zigbee2mqtt:warn 2019-1-29 17:29:56 `permit_join` set to `true` in configuration.yaml., zigbee2mqtt:warn 2019-1-29 17:29:56 Allowing new devices to join., zigbee2mqtt:warn 2019-1-29 17:29:56 Set `permit_join` to `false` once you joined all devices., zigbee2mqtt:info 2019-1-29 17:29:56 Zigbee: allowing new devices to join., zigbee2mqtt:info 2019-1-29 17:29:56 Connecting to MQTT server at mqtt://192.168.1.16:1883, zigbee2mqtt:info 2019-1-29 17:29:56 zigbee-shepherd ready, zigbee2mqtt:info 2019-1-29 17:29:57 Connected to MQTT server, zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online', zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'zigbee2mqtt/0x00158d0002c8ede0', payload '{"temperature":18.79,"linkquality":113,"humidity":64.65,"pressure":993,"battery":99,"voltage":3005}', zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/temperature/config', payload '{"unit_of_measurement":"°C","device_class":"temperature","value_template":"{{ value_json.temperature }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_temperature","unique_id":"0x00158d0002c8ede0_temperature_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/humidity/config', payload '{"unit_of_measurement":"%","device_class":"humidity","value_template":"{{ value_json.humidity }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_humidity","unique_id":"0x00158d0002c8ede0_humidity_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/pressure/config', payload '{"unit_of_measurement":"hPa","device_class":"pressure","value_template":"{{ value_json.pressure }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_pressure","unique_id":"0x00158d0002c8ede0_pressure_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', zigbee2mqtt:debug 2019-1-29 17:29:57 Received MQTT message on 'hass/status' with data 'online', zigbee2mqtt:debug 2019-1-29 17:29:57 Mounted the cieApp (epId {epId}), zigbee2mqtt:info 2019-1-29 17:30:17 MQTT publish: topic 'zigbee2mqtt/0x00158d0002c8ede0', payload '{"temperature":18.79,"linkquality":113,"humidity":64.65,"pressure":993,"battery":99,"voltage":3005}',
  10. (ikifka1)
    (ikifka1) год назад

    Ждал , значения висят , например температуре, на 19.12С на протяжении часа и не меняется.

    • zigbee2mqtt:info 2019-1-29 17:28:49 Logging to directory: '/app/data/log/2019-01-29.17-28-49', 
    • zigbee2mqtt:debug 2019-1-29 17:28:49 Removing old log directory '/app/data/log/2019-01-26.02-35-28', 
    • zigbee2mqtt:debug 2019-1-29 17:28:51 Using zigbee-shepherd with settings: '{"net":{"panId":6754,"channelList":[11]},"dbPath":"/app/data/database.db","sp":
      • {"baudRate":115200,"rtscts":true}}', 
    • zigbee2mqtt:debug 2019-1-29 17:28:51 Loaded state from file /app/data/state.json, zigbee2mqtt:info 2019-1-29 17:28:51 Starting zigbee2mqtt version 1.0.1 (commit #84593a5),
    • zigbee2mqtt:info 2019-1-29 17:28:51 Starting zigbee-shepherd,
    • zigbee2mqtt:info 2019-1-29 17:28:54 Error while starting zigbee-shepherd, attemping to fix... (takes 60 seconds), 
    • zigbee2mqtt:info 2019-1-29 17:29:54 Starting zigbee-shepherd, 
    • zigbee2mqtt:info 2019-1-29 17:29:56 zigbee-shepherd started, 
    • zigbee2mqtt:info 2019-1-29 17:29:56 Coordinator firmware version: '20181024', 
    • zigbee2mqtt:debug 2019-1-29 17:29:56 zigbee-shepherd info: {"enabled":true,"net":
      • {"state":"Coordinator","channel":11,"panId":"0x1a62","extPanId":"0xdddddddddddddddd","ieeeAddr":"0x00124b0018ed29ca","nwkAddr":0},"firmware":{"transportrev":2,"product":0,"version":"2.6.3","revision":20181024},"startTime":1548782996,"joinTimeLeft":0}, 
    • zigbee2mqtt:info 2019-1-29 17:29:56 Currently 1 devices are joined:, 
    • zigbee2mqtt:info 2019-1-29 17:29:56 0x00158d0002c8ede0 (0x00158d0002c8ede0): WSDCGQ11LM - Xiaomi Aqara temperature, humidity and pressure sensor (EndDevice),
    • zigbee2mqtt:warn 2019-1-29 17:29:56 `permit_join` set to `true` in configuration.yaml., zigbee2mqtt:warn 2019-1-29 17:29:56 Allowing new devices to join., 
    • zigbee2mqtt:warn 2019-1-29 17:29:56 Set `permit_join` to `false` once you joined all devices., 
    • zigbee2mqtt:info 2019-1-29 17:29:56 Zigbee: allowing new devices to join., 
    • zigbee2mqtt:info 2019-1-29 17:29:56 Connecting to MQTT server at mqtt://192.168.1.16:1883, 
    • zigbee2mqtt:info 2019-1-29 17:29:56 zigbee-shepherd ready, 
    • zigbee2mqtt:info 2019-1-29 17:29:57 Connected to MQTT server, 
    • zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online', 
    • zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'zigbee2mqtt/0x00158d0002c8ede0', payload  
      • '{"temperature":18.79,"linkquality":113,"humidity":64.65,"pressure":993,"battery":99,"voltage":3005}', 
    • zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/temperature/config', payload 
      • '{"unit_of_measurement":"°C","device_class":"temperature","value_template":"{{ value_json.temperature }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_temperature","unique_id":"0x00158d0002c8ede0_temperature_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', 
    • zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/humidity/config', payload 
      • '{"unit_of_measurement":"%","device_class":"humidity","value_template":"{{ value_json.humidity }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_humidity","unique_id":"0x00158d0002c8ede0_humidity_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', 
    • zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/pressure/config', payload 
      • '{"unit_of_measurement":"hPa","device_class":"pressure","value_template":"{{ value_json.pressure }}","json_attributes":["linkquality","battery","voltage"],"state_topic":"zigbee2mqtt/0x00158d0002c8ede0","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d0002c8ede0_pressure","unique_id":"0x00158d0002c8ede0_pressure_zigbee2mqtt","device":{"identifiers":"zigbee2mqtt_0x00158d0002c8ede0","name":"0x00158d0002c8ede0","sw_version":"Zigbee2mqtt 1.0.1","model":"Aqara temperature, humidity and pressure sensor (WSDCGQ11LM)","manufacturer":"Xiaomi"}}', zigbee2mqtt:debug 2019-1-29 17:29:57 Received MQTT message on 'hass/status' with data 'online', zigbee2mqtt:debug 2019-1-29 17:29:57 Mounted the cieApp (epId {epId}), 
    • zigbee2mqtt:info 2019-1-29 17:30:17 MQTT publish: topic 'zigbee2mqtt/0x00158d0002c8ede0', payload 
      • '{"temperature":18.79,"linkquality":113,"humidity":64.65,"pressure":993,"battery":99,"voltage":3005}',
  11. (Stein)
    (Stein) 6 месяцев назад
    Как в контейнере выполнить какую-либо команду? Например на docker -v получаю:

    bash: docker: command not found

    Не могу подключиться по ssh из контейнера получаю:

    No user exists for uid 1000

    из-за этого не могу заставить работать компонент asuswrt

  12. (AlexBird55)
    (AlexBird55) 5 месяцев назад

    Артем, спасибо, отличная статья. У меня возник вот такой вопрос: 

    После сборки мне понадобилась утилита lm_sensors. Если я добавлю ее в список устанавливаемого софта и пересоберу образ homeassistant, останутся все мои настройки, add-ons, lovelace и пр.?

  13. (Prm)
    (Prm) отредактировано 5 месяцев назад

    Отлично! Спасибо за труд! Устанавливал на комп с Ubuntu 18.04, встретил ряд проблем:

    1. При использовании "image: koenkk/zigbee2mqtt:latest # x86_64/amd64" zigbee2mqtt не работает, ругается. Заменил на "image: koenkk/zigbee2mqtt # x86_64/amd64" - заработало

    При установке homeassistant есть непонятный момент, возможно, кому-то поможет:

    > Готово, создаем учетную запись и добавляем в конфигурационный файл

    Для создания учетной записи необходимо в браузере открыть URL http://localhost:8123. Это необходимо проделать перед добавлением конфигурационного файла.

  14. (RuDen)
    (RuDen) 5 месяцев назад

    Всем привет. Спасибо вам за статью. Помогите пожалуйста разобраться: устанавливаю по второму варианту и все работает, но при обнавлении HA он не хочет запускаться. Обновляю так: в dockerfile прописываю версию 0.99.0 и alpine 3.10, затем в онсоли pull, build и up. Все происходит через ssh на raspberry pi 3 b+, raspbian

  15. Руслан Фомин (rusnino)
    Руслан Фомин (rusnino) отредактировано месяц назад

    c aufs-dkms ни у кого проблем не было?

    dpkg: error processing package aufs-dkms (--configure): installed aufs-dkms package post-installation script subprocess returned error exit status 10

    https://github.com/raspberrypi...

  16. (Ghans)
    (Ghans) 7 дней назад

    Ошибки aufs-dkms, но докер без него встал и работает. Поправил строчку  

    echo "deb [arch=armhf] https://download.docker.com/li... $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

    вместо debian написал raspbian

    и убрал упоминания о версии при установке портернера

К списку статей

Похожие статьи

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home