Вводная
Ранее не писал статьи, делал только для себя гайды/шпаргалки, что бы не забыть. Так что это мой первый опыт. Предупреждаю сразу, внизу будет много 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
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
После развертывания нашего контейнера, в папке /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
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/$/requirements_all.txt" /tmp RUN apk add --no-cache python3 libffi-dev libressl-dev eudev-dev libstdc && \ addgroup -g $ hass && \ adduser -h /config -D -G hass -s /bin/sh -u $ 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/$" /etc/localtime && echo "$" > /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 "$" /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=="$" && \ # 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'
Эээ...вижу работа проделана большая. Вот только мои знания не позволяют понять, в чём отличие установки Home Assistant описанной в статье от простой установки, как в статьях Охотника.
И что это за Докер такой, может вводной информации не хватает?
Докер... Ну если простыми словами, это такая штука, которая изолирует ваш ХА, со всеми его конфигами и софтовыми зависимостями в контейнер, который в дальнейшем можно развернуть буквально за секунды, на любой машине, где установлен докер.
Подробнее в https://ru.wikipedia.org/wiki/Docker">википедии
вот если бы еще было описано как локально установленный ffmpeg использовать внутри докерного НА, это было бы вообще все что нужно для щастья.
да и так статья ОГОНЬ ! Автору респект ! Разжевал для меня докер. Спасибо !
Спасибо! Хм.. ffmpeg уже есть в контейнере (вариант №1), и нет необходимости управлять им на хосте.
А в том то и дело, что встроенный в НА ffmpeg кривой и тупит. А вот собранный по статье здесь на портале "правильный" вариант, хотелось бы из хоста просунуть в докер контейнер НА. А вот как это сделать правильно ?
Я вчера завел камеры в докерном ffmpeg, работает лучше чем в венве питоновском. Ни затупок ничего такого не наблюдаю. Но это на десктопе а не на малине.
Отличный материал и великолепный старт ))) Классное начало и ждём продолжения, и удачи в конкурсе ;)
Спасибо! Собственно по докеру, заметил, многие спрашивать стали в чате, так и появился этот гайд =)
Очень надеялся что эта статья наконец поможет мне установить докер, но увы...
Ставлю на Raspberry Pi Zero W чистый Raspbian Stretch Lite, иду по вашей инструкции и на шаге
вижу ошибки: https://pastebin.com/wCphp1JX">https://pastebin.com/wCphp1JX
Job for docker.service canceled.
docker.service couldn't start.
Почему так и что можно сделать?
Судя по логам проблема с фреймворком DKMS, попробуйте перезапустить малину, и выполнить:
sudo apt-get install -f
если не поможет, напишите мне в телеграмм
UPD:
Была проблема на raspberry pi zero w. Погуглил проблема массовая.
Помогает:
Что бы добавить в автозапуск создайте файл:
sudo nano /etc/systemd/system/docker-compose-app.service
И внесите в него следующее:
Так там и так автозапуск имеется. За это отвечает:
Так там и так автозапуск имеется. За это отвечает:
все поставил. вроде работает. при попытке подключить нативные 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
возникает вопрос как подключиться к консоли НА что б разобраться с ошибкой??
Thanks!!!
Good work!!!
Best regards from Spain!!!
Добрый вечер.
А начал с вашей установки , довольно таки доступно для начинающего.
Столкнулся со следующей проблемой : при отключении RPi от питания (shudown прежде), и подключении снова , датчик темп/влаж/давл от Xiaomi , как будто отваливается. В Home Assistant видно последнее значение до выключения. После удержания кнопки сопряжения на датчике 3 сек , он сам подключается назад.
Как избежать отваливание сенсора ?
Есть вероятность что нужно подождать какое то время, или подышать на датчик. Он не сразу обновляет данные.
Если отвал конкретный датчика на постоянку, то нужно копать в сторону сети зигбии, смотреть логи и тд. Может сеть теряется, может еще что то.
Ждал , значения висят , например температуре, на 19.12С на протяжении часа и не меняется.
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}',
Ждал , значения висят , например температуре, на 19.12С на протяжении часа и не меняется.
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":
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: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":
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 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
zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/temperature/config', payload
zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/humidity/config', payload
zigbee2mqtt:info 2019-1-29 17:29:57 MQTT publish: topic 'homeassistant/sensor/0x00158d0002c8ede0/pressure/config', payload
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
bash: docker: command not found
Не могу подключиться по ssh из контейнера получаю:
No user exists for uid 1000
из-за этого не могу заставить работать компонент asuswrt
Артем, спасибо, отличная статья. У меня возник вот такой вопрос:
После сборки мне понадобилась утилита lm_sensors. Если я добавлю ее в список устанавливаемого софта и пересоберу образ homeassistant, останутся все мои настройки, add-ons, lovelace и пр.?
Отлично! Спасибо за труд! Устанавливал на комп с Ubuntu 18.04, встретил ряд проблем:
При установке homeassistant есть непонятный момент, возможно, кому-то поможет:
> Готово, создаем учетную запись и добавляем в конфигурационный файл
Для создания учетной записи необходимо в браузере открыть URL http://localhost:8123. Это необходимо проделать перед добавлением конфигурационного файла.
Всем привет. Спасибо вам за статью. Помогите пожалуйста разобраться: устанавливаю по второму варианту и все работает, но при обнавлении HA он не хочет запускаться. Обновляю так: в dockerfile прописываю версию 0.99.0 и alpine 3.10, затем в онсоли pull, build и up. Все происходит через ssh на raspberry pi 3 b+, raspbian
c aufs-dkms ни у кого проблем не было?
https://github.com/raspberrypi/linux/issues/3021">dpkg: error processing package aufs-dkms (--configure):
installed aufs-dkms package post-installation script subprocess returned error exit status 10
https://github.com/raspberrypi/linux/issues/3021">https://github.com/raspberrypi...
Ошибки aufs-dkms, но докер без него встал и работает. Поправил строчку
echo "deb [arch=armhf] https://download.docker.com/linux/raspbian">https://download.docker.com/li... $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
вместо debian написал raspbian
и убрал упоминания о версии при установке портернера
Спасибо за доходчивое объяснение. До сих пор актуально. Устанавливал на Pi4. Все шло гладко , но с поправками для Pi4
Для установки docker-compose через pip3 потребовалось доставить в систему пакет libffi-dev. Думаю стоит добавить всписок пакетов для docker
Запуск контейнера HomeAssistant поддерживается только от имени root.
https://github.com/home-assistant/docker/issues/104">Описание
Спасибо за статью! Все встало с небольшими изменениями, так как время прошло. Вот что понадобилось мне для raspberry pi 4, raspberry pi OS lite:
1) для установки docker-compose нужна зависимость libffi-dev
2) portainer:stable(или latest)
3) zigbee2mqtt уже не нуждается в отдельном теге для архитектуры, нужная входит в основной тег stable. Под latest не запустилось - сообщения приходили но в has не прокидывались
4) строчка user в конфиге докер контейнера homeassistant(легкая установка) не нужна - с ней контейнер не встает
5) настройки mqtt брокера не нужны. теперь он настраивается как интеграция прямо в Home Assistant
Да, времени прошло уже нормально. Нужно найти времени, обновить статью, много чего поменялось =)
Но, как ни странно, у меня до сих пор все запускается с данными параметрами в docker-compose.yml, на то это и докер)) Поменял только пользователя на рута.
Кто сталкивался с таким? У меня есть доступ к контейнеру только с машины, на которой он установлен, а в сети нет, будто порт закрыт.
А никто не сталкивался с таким? failed to register layer: error creating overlay mount to /var/lib/docker/overlay2/d682bcae29f461051094d603f37d60481603163aa2442896028197de5fa072a2/merged: too many levels of symbolic links
при выполнении bash installer.sh --machine raspberrypi4
Можете еще дополнить как HACS контейнере доставить
https://hacs.xyz/docs/installation/installation/">https://hacs.xyz/docs/installa...
Тут всё достаточно просто:
Начал своё знакомство с HA с этой статьи, решил ставить именно в докере так как давно искал повод пощупать его, довольно популярная штука в мире IT. Ставил на Raspberry Pi 3 Model B.
Статья написана очень подробно, по сути вся установка может свестись к копированию shell команд в командную строку. Можно подумать о том, чтобы собрать всё в bash скрипт, тогда установка вообще будет сведена к запуску одного файла. К статье есть несколько замечаний:
sudo docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/passwd USERNAME
выдает следующее:
Error: Unable to open file /mosquitto/config/passwd for writing. Permission denied.
Часть конфига для москито в docker-compose.yyml
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/user/smarthome/mosquitto/config/
sudo touch passwd
sudo chmod o+w ./passwd sudo chown 1883:1883 /home/user/smarthome/mosquitto/config/passwd -R
А здесь топик с похожей проблемой https://github.com/eclipse/mosquitto/issues/1078
P.S. Ещё у меня mosquitto не запускался, помогло добавление строчки listener 1883 в .../mosquitto/config/mosquitto.conf
После sudo pip3 install docker-compose, кроме всего прочего, получил:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
А затем:
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
Unable to find image 'portainer/portainer:1.19.2' locally
docker: Error response from daemon: unknown:
408 Request Time-out
Your browser didn't send a complete request in time.
.
See 'docker run --help'.