Установка Home Assistant на AltLinux — различия между версиями

Материал из ЭНЭ
Перейти к: навигация, поиск
(Запускаем операционку на одноплатнике)
(Устанавливаем Home Assistant)
 
(не показано 27 промежуточных версии этого же участника)
Строка 5: Строка 5:
 
=== Скачиваем дистрибутив образа ===
 
=== Скачиваем дистрибутив образа ===
  
Чтобы поставить и запустить Home Assistant на ARM контроллере, в нашем случае мы имеем Raspberri Pi4 (foto 1) (причем он у нас уже с поключенной камерой) Вместо него может быть использован любой одноплатный комп, например raspberiPy или Repka . Нам понадобится SD-карта не менее чем 8 Гбайт(foto 2) и адаптер для записи на нее образа скаченной операционой системы (фото 3).
+
[[Файл:Raspberripi4 sd card.png |link=http://wiki.laser.ru/images/a/a9/Raspberripi4_sd_card.png |260px|thumb|left|(Фото 1)Raspberry Pi4 с видео камерой на борту, SD карточка и адаптер для записи на карту]]
  
 +
Разберем, как установить приложение HomeAssistant на операционную систему linux для  AMD/Intel или ARM контроллера. Чтобы поставить и запустить Home Assistant на ARM контроллере, в нашем случае мы имеем Raspberri Pi4  (причем он у нас уже с подключенной камерой) Вместо него может быть использован любой одноплатный комп, например raspberiPy или [https://repka-pi.ru/ Repka Pi] . Нам понадобится SD-карта не менее чем 8 Гбайт и адаптер для записи на нее образа скаченной операционной системы (Фото 1).
  
Скачиваем дистрибутив Альтлинукс с официального сайта http://nightly.altlinux.org/p10-aarch64/release/  последнюю версию нужного нам образа ISO
+
Варианты установки системы Home Assistant могут быть различными:
alt-p10-builder-20230610-aarch64.img.xz командой из консоли:
+
# Установить HA вместе с предустановленной операционной системой - вариант HAOS. В этом случае будут доступны максимально возможные опции  для запуска Supervisor. Операционная система HAOS занимает весь носитель и предоставляет среду Linux для запуска Supervisor и Core.
 +
# Установить HA в режиме контейнера Docker или VirtualBox. В этом случае не будет доступа к Супервайзеру и Аддонам, их придется доустановить в ОС самостоятельно.
 +
# Установить HA в минимальной конфигурации, в режиме CORE. В этом случае будет установлено только одно ядро системы, без дополнений и удобств, которые можно будет доустановить уже самостоятельно. Ядро (CORE) взаимодействует напрямую с пользователем, супервизором,  устройствами и сервисами Io, все эти настройки взаимодействия придется выполнять в ручную.
 +
# Установить HA в режиме Супервизор (Supervisor) на удобную вам операционную систему. Здесь будут доступны расширения  - Аддоны.
 +
 
 +
[[Файл:Обзор архитектуры homeassistant.png |link=http://wiki.laser.ru/images/0/0f/Обзор_архитектуры_homeassistant.png |160px|thumb|left|Обзор архитектуры Home Assistant]]
 +
[[Файл:Различные методы установки HA.png |link=http://wiki.laser.ru/images/7/78/Различные_методы_установки_HA.png |220px|thumb|left|Различные методы установки Home Assistant ]]
 +
 
 +
Почитать подробнее про разные методы установки [https://www.home-assistant.io/installation/#compare-installation-methods можно здесь] , словарь терминов и определений в HomeAssistan [https://www.home-assistant.io/docs/glossary/#home-assistant-supervisorдоступен здесь]. Home Assistant предоставляет платформу для управления домом и домашней автоматизации. Home Assistant — это не просто приложение: это встроенная система, которая предоставляет такие же возможности, как и другие готовые потребительские продукты: подключение, настройка и обновление выполняются через простой в использовании интерфейс.
 +
 
 +
 
 +
Скачиваем дистрибутив Альтлинукс для ARM с официального сайта http://nightly.altlinux.org/p10-aarch64/release/  последнюю версию нужного нам образа ISO, например вот эту alt-p10-builder-20230610-aarch64.img.xz. Если же у вас  процессор  архитектуры AMD/Intel -  64 разрядный, то образ ISO  вам нужно скачивать  вот этот [http://nightly.altlinux.org/p10/release/ alt-p10-builder-20230610-x86_64.iso]
 +
Для скачивания образа из консоли можно использовать команду ''wget'':
  
 
  $ wget http://nightly.altlinux.org/p10-aarch64/release/alt-p10-builder-20230610-aarch64.img.xz
 
  $ wget http://nightly.altlinux.org/p10-aarch64/release/alt-p10-builder-20230610-aarch64.img.xz
Строка 16: Строка 29:
 
  $ cd /home/user/distrib
 
  $ cd /home/user/distrib
  
После завершения процесс скачивания, вставляем карточку SD через адаптер (фото 3)в USB разъем, чтобы проверить на какой том это устройство смонтировалось при подключении. Для проверки используем команду df, и видим примерно такой вывод:
+
После завершения процесс скачивания, вставляем карточку SD через адаптер (фото 1)в USB разъем, чтобы проверить на какой том это устройство смонтировалось при подключении. Для проверки используем команду ''df'', и видим примерно такой вывод:
  
 
  udevfs            1,9G          96K  1,9G            1% /dev
 
  udevfs            1,9G          96K  1,9G            1% /dev
Строка 23: Строка 36:
 
Отсюда мы делаем вывод, что наше устройство смонтировано на том /dev/sdb. После это, мы запускаем команду копирования образа ISO на на SD  носитель, командой, которая потребует ввести пароль рута:
 
Отсюда мы делаем вывод, что наше устройство смонтировано на том /dev/sdb. После это, мы запускаем команду копирования образа ISO на на SD  носитель, командой, которая потребует ввести пароль рута:
 
  $ su -c "xzcat alt-p10-builder-20230610-aarch64.img.xz |dd of=/dev/sdb bs=4M status=progress"
 
  $ su -c "xzcat alt-p10-builder-20230610-aarch64.img.xz |dd of=/dev/sdb bs=4M status=progress"
 
  
 
=== Запускаем операционку на одноплатнике ===
 
=== Запускаем операционку на одноплатнике ===
 
Вставляем нашу SD карточку, с записанным на нее ISO образом операционной системы в одноплатник. Подаем питание на него.
 
Вставляем нашу SD карточку, с записанным на нее ISO образом операционной системы в одноплатник. Подаем питание на него.
Для работы дальше, можно использовать  монитор, подключенный к компу и клавиатуру. А можно работать сразу по сети, но сначло надо тогда будет сгенерить ключ для входа в root.  
+
Для работы дальше, можно использовать  монитор, подключенный к компу и клавиатуру. А можно соединиться и работать сразу по сети, но тогда предварительно надо будет сгенерить ключ для входа в root и положить его в корневую директорию SD карточки. Для генерации ключа используется команд ''$ ssh-keygen -t rsa'' после этого файл надо скопировать и положить на SD карточку, найти его можно по адресу:  ''$ cat ~/.ssh/id_rsa.pub''
Если прошло все без ошибок, то увидим приглашение и входим в рута:
+
 
 +
Если загрузка системы прошла все без ошибок, то на мониторе мы увидим приглашение, и тогда входим в рута:
 
  login: root
 
  login: root
 
  password: altlinux
 
  password: altlinux
 +
[[Файл:Login.png |link=http://wiki.laser.ru/images/6/68/Login.png |200px|thumb|left|окно логина при входе в систему]]
  
Убедимся, что сервис sshd запущен, для этого выполняем команду
 
# systemctl enable sshd --now
 
должны получить ответ # /lib/systemd/systemd-sysv-install enable sshd
 
  
обновляем для верности всю систему:
+
Убедимся, что сервис удаленного доступа по протоколу SSH - sshd запущен, для этого выполняем команду
 +
# systemctl enable sshd --now
 +
должны получить ответ ''# /lib/systemd/systemd-sysv-install enable sshd
 +
''
 +
Обновляем для верности всю систему:
 
  # apt-get update
 
  # apt-get update
Должны увидеть что то в таком духе:
+
Если обновление прошло нормально, то в конце вывода мы должны увидеть что то в таком духе:
  
  Получено: 1 http://ftp.altlinux.org p10/branch/aarch64 release [4223B]
+
  ''Найдено http://ftp.altlinux.org p10/branch/noarch/classic release
Получено: 2 http://ftp.altlinux.org p10/branch/noarch release [2844B]
+
Получено 7067B за 0s (31,0kB/s).
+
Найдено http://ftp.altlinux.org p10/branch/aarch64/classic pkglist
+
Найдено http://ftp.altlinux.org p10/branch/aarch64/classic release
+
Найдено http://ftp.altlinux.org p10/branch/noarch/classic pkglist
+
Найдено http://ftp.altlinux.org p10/branch/noarch/classic release
+
 
  Чтение списков пакетов... Завершено
 
  Чтение списков пакетов... Завершено
  Построение дерева зависимостей... Завершено
+
  Построение дерева зависимостей... Завершено''
  
Теперь нам надо добавить пользователя, в нашем примере мы его назвали  ''user'',  задаем ему пароль и включаем в группы, которые нам понадобятся:
+
Теперь нам надо добавить пользователя, в нашем примере мы его назвали  ''user'',  задаем ему пароль (вводим два раза, без отображения на экране) и включаем этого пользователя в группы, которые нам понадобятся в дальнейшем при настройке системы :
 
  # adduser user; passwd user; usermod -aG wheel user;  usermod -aG wheel user; usermod -aG docker user; usermod -aG uucp user; usermod -aG video user
 
  # adduser user; passwd user; usermod -aG wheel user;  usermod -aG wheel user; usermod -aG docker user; usermod -aG uucp user; usermod -aG video user
  
Определяем IP адрес нашего одноплатника командой ifcongig
+
Для того, чтобы мы могли дистанционно заходить на наш хост, нам нужно знать его IP адрес, который он получает от DHCP сервера, для этого определяем IP адрес нашего одноплатника командой ''ifconfig''
 
  $ /sbin/ifconfig
 
  $ /sbin/ifconfig
 
  eth0      Link encap:Ethernet  HWaddr DC:A6:32:C3:68:66   
 
  eth0      Link encap:Ethernet  HWaddr DC:A6:32:C3:68:66   
           inet addr:192.168.9.132  Bcast:192.168.9.255  Mask:255.255.255.0
+
           inet addr:'''192.168.9.132''' Bcast:192.168.9.255  Mask:255.255.255.0
 
           inet6 addr: fe80::4a4f:c4ca:9857:d421/64 Scope:Link
 
           inet6 addr: fe80::4a4f:c4ca:9857:d421/64 Scope:Link
 
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Строка 64: Строка 73:
 
           RX bytes:607652351 (579.5 MiB)  TX bytes:12324924 (11.7 MiB)
 
           RX bytes:607652351 (579.5 MiB)  TX bytes:12324924 (11.7 MiB)
  
Выходим из рута. Переподсоединяемся по ssh в пользователя user,  для этого в консоле, на своей локальной машине задаем команду для входа по сети:
+
Выходим из рута. Переподсоединяемся по ssh в пользователя user,  для этого в консоли, уже на своей локальной машине задаем команду для входа в одноплатник  по сети на IP адрес 192.168.9.132:
 
  $ ssh user@192.168.9.132
 
  $ ssh user@192.168.9.132
 +
Если у вас ос Windows,  то можете использовать для входа программу Putty,  как ее сконфигурить и настроить написано в ее разделе помощь.
 +
 +
=== Устанавливаем Home Assistant ===
 +
[[Файл:Df.png|link=http://wiki.laser.ru/images/1/19/Df.png|260px|thumb|left|Вывод команды df при первом входе]]
 +
При первом входе в систему размер партиции корневой директории может оказаться заполненным на 100% и составлять порядка 2Гб. Для того чтобы использовать весь размер SD карточки, нужно перезагрузить систему.
 +
 +
Для установки в режиме Container ставим два пакета, сам [https://www.altlinux.org/Docker докер и докер композер]. Почитать более подробно про Compose plugin [https://docs.docker.com/compose/install/linux/ можно здесь]. Для их установки нам понадобится ввести пароль рута.
 +
 +
su -c "apt-get install docker-engine docker-compose"
 +
 +
Запускаем сам докер
 +
su -c "systemctl enable --now docker"
 +
 +
Посмотреть версию докера-композера можно командой:
 +
$ docker-compose version
 +
docker-compose version 1.29.2, build unknown
 +
docker-py version: 5.0.0
 +
CPython version: 3.9.16
 +
OpenSSL version: OpenSSL 1.1.1u  30 May 2023
 +
 +
Для того чтобы сконфигурить нашу систему HA, cоздаем папку и заходим в нее:
 +
$ mkdir homeassistant
 +
$ mkdir video
 +
$ cd homeassistant/
 +
$ pwd
 +
/home/user/homeassistant
 +
$ vim compose.yml
 +
 +
Cоздаем конфигурационный файл для первого запуска нашей системы  командой  ''vim compose.yml'' не забываем про [https://www.home-assistant.io/integrations/media_source#local-media медиа директорию]. Не забываем поправить ''/home/user'' на те пути, которые у вас в системе
 +
 +
version: '3'
 +
services:
 +
  homeassistant:
 +
    container_name: homeassistant
 +
    image: "ghcr.io/home-assistant/home-assistant:stable"
 +
    volumes:
 +
      - /home/user/homeassistant:/config
 +
      - /etc/localtime:/etc/localtime:ro
 +
      - /home/user/video:/media
 +
    restart: unless-stopped
 +
    privileged: true
 +
    network_mode: host
 +
    devices:
 +
      - /dev/ttyUSB0:/dev/ttyUSB0
 +
 +
Запускаем инстанс докера
 +
$ docker-compose up -d
 +
При первом запуске скачиваются нужные файлы, происходит подготовка и запуск приложения. Если все прошло нормально, то должен быть примерно вот такой результат:
 +
 +
 +
Status: Downloaded newer image for ghcr.io/home-assistant/home-assistant:stable
 +
Creating homeassistant ... done
 +
 +
Если вывалились ошибки типа:
 +
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
 +
То надо выйти из сеанса ''user'' и снова в него войти, чтобы подхватились обновления окружения.
 +
 +
 +
Теперь мы можем в браузере зайти по нашему IP адресу хоста с указанием порта по умолчанию:  ''http://192.168.9.132:8123''
 +
 +
В браузере должно открыться новое окно с приглашением ввести пользователя, пароль для входа в систему Home Assitant и ввести локальные настройки: Страна, Валюта, Местоположение и д.р.
 +
Задаем пользователя, пароль и отвечаем на вопросы:
 +
hauser
 +
12345
 +
Если сделали все нормально, то у нас открывается панель  Обзор, в меню Настройки>> О программе мы можем посмотреть версию нашей установленной системы.
 +
{| align="center" class="standard"
 +
|+
 +
| [[Файл:Ha setup11.png|link=http://wiki.laser.ru/images/a/ad/Ha_setup11.png|150px|thumb|left|Обзор]]
 +
| [[Файл:Ha setup13png.png|link=http://wiki.laser.ru/images/9/93/Ha_setup13png.png|150px|thumb|left|О программе]]
 +
| [[Файл:Ha setup14.png|link=http://wiki.laser.ru/images/3/3b/Ha_setup14.png|150px|thumb|left|Настройки НА в режиме CORE]]
 +
| [[Файл:Ha supervisor.png|link=http://wiki.laser.ru/images/e/ed/Ha_supervisor.png|150px|thumb|left|Настройки HA в режиме Superviser, с Дополнениями]]
 +
 +
|+
 +
|}
 +
 +
=== Восстановить версию из Backup===
 +
Для того чтобы наполнить нашу версию установленной системы конфигурациями из предыдущих, настроенных версий,  нам понадобится архив с файлами и директориями предыдущих конфигураций и базы данных. Заходим через консоль в командную строку исходного инстанса HA. Переходим в нужную нам папку, где сохраняются все конфигурационые файлы. Например это может быть директория ''/home/user/homeassistant/config'' Убедимся, что здесь у нас хранятся все конфигурационные файлы нашего приложения, командой ''ls'', вывод должен быть приметрно таким:
 +
$ ls /home/user/homeassistant/config
 +
automations.yaml  configuration.yaml  esphome              home-assistant.log.fault  home-assistant_v2.db-wal  secrets.yaml
 +
blueprints        configuration.yaml~  home-assistant.log    home-assistant_v2.db      scenes.yaml              tts
 +
catusb.log        deps                home-assistant.log.1  home-assistant_v2.db-shm  scripts.yaml              www1
 +
 +
Выполняем архивацию всей папки ''/home/user/homeassistant'' командой tar:
 +
$ tar cvf homeassistant11.tar homeassistant/
 +
 +
Переносим наш файл архива на другой сервер с инстансом HomeAssistant:
 +
$ scp homeassistant11.tar user@192.168.9.132:.
 +
При запросе вводим пароль пользователя c именем ''user''
 +
 +
Переходим на новый сервер в корневую директорию:
 +
$ ssh user@192.168.9.132
 +
 +
Разархивируем наш архивный файл. Переходим в директорию, где расположен файл ''compose.yml'' например это может быть директория ''/home/user/homeassistant11'', останавливаем, если был запущен сервис Докер. Запускаем Докер.
 +
$ tar xvf homeassistant11.tar
 +
$ cd /home/user/homeassistant11/
 +
$ docker-compose stop
 +
$ docker-compose up -d
 +
 +
Переходим в браузере на этот сервер по порту 8123, должен заработать новый инстанс Home Assistant
 +
http://192.168.9.132:8123/
 +
 +
== Дополнительные настройки Home Assistant==
 +
 +
Что бы можно было работать с базой данных нужно доустановить пакет:
 +
$ su -c "apt-get install sqlite3"
 +
Для работы с базой данных можно перейти в директорию и запустить работу с базой данных.
 +
cd homeassistant/
 +
sqlite3 home-assistant_v2.db
 +
.schema states
 +
 +
Что бы увеличить время сохранения данных на период в год, нужно установить параметр  в файле конфигурации:
 +
recorder:
 +
  db_url: !secret db_link
 +
  purge_entities: 365
 +
 +
Чтобы установить работу с видеокамерой необходимо добавить пакет:
 +
su -s "apt-get install fswebcam"
 +
Строка записи картинки на устройство /dev/video0 c поворотом на 180 градусов:
 +
$ fswebcam -d v4l2:/dev/video0 --rotate=180 -r 1920x1080 /home/user/homeassistant/11.jpg -t 1
 +
 +
=== Как использовать Arduino ===
 +
 +
Что бы работать в HomeAssistant с Arduino по протоколу firmata необходимо скачать сам скетч с протоколом и загрузить его в контроллер Arduino. После этого, для того чтобы убедится как работает контроллер с протоколом, присоединится к нему можно используя приложение [http://firmata.org/wiki/Main_Page с сайта] и скачав от туда файл firmata_test.64bit. В дополнение возможно понадобится доустановить библиотеку libpng12:
 +
su -s "apt-get install libpng12"
 +
 +
Для того чтобы считывать значения в HA из контролера Arduino с загруженным в него приложением, нужно организовать взаимодействие через COM порт, который в нашем случае является /dev/ttyUSB0, для этого создадим файл, который назовем например ''arduino_usb.sh'' и сделаем его исполняемым:
 +
 +
$ cat arduino_usb.sh
 +
#!/bin/bash
 +
/bin/stty -F /dev/ttyUSB0 raw -echo 9600
 +
$ /usr/bin/cat < /dev/ttyUSB0 >  /home/user/homeassistant/catusb.log &
 +
Обязательно надо установить параметры порта  /dev/ttyUSB0  на скорости  -echo 9600. Командой ''cat'' считываем значения из порта и записываем их в файл ''/home/user/homeassistant/catusb.log'' знак & обозначает, что мы их записываем в фоновом режиме
 +
 +
 +
 +
=== Как настроить отображение погоды ===
 +
[[Файл:Погода11.png |link=http://wiki.laser.ru/images/b/bd/Погода11.png |160px|thumb|left|Интеграция погоды в НА]]
 +
 +
#В интеграциях убедится, что шаблон //Meteorologisk institutt (Met.no) установлен и работает.
 +
#В объектах найти ID объекта, например это будет ''weather.home_assistant''
 +
#В файле ''configuration.yaml'' в разделе сенсоров вставить  нужную запись кода.  Предварительно можно убедится, что этот сенсор по ID объекта отработает в меню Панель разработчика >> Шаблоны 
 +
#Перегрузить инстанс HA , и убедится что появились этот объект ''sensor.pogoda_za_oknom''
 +
#Создать карточку  - по имени сенсора с отображением погоды  - температуры, ветра, влажности, дождя на  панели, в зависимости от того что нам нужно.
 +
hours_to_show: 24
 +
graph: line
 +
type: sensor
 +
entity: sensor.pogoda_za_oknom
 +
unit: °C
 +
detail: 1
 +
 +
Пример записи кода для файла ''configuration.yaml''
 +
<syntaxhighlight lang="C">
 +
sensor:
 +
  - platform: template
 +
    sensors:
 +
      pogoda_za_oknom:
 +
        value_template: "{{state_attr('weather.home_assistant','temperature')|float}}"
 +
        unit_of_measurement: '°C'
 +
</syntaxhighlight>
 +
 +
Ссылка на раздел официальной [https://www.home-assistant.io/integrations/met документации]
  
 
[[Категория: Home Assistant]]
 
[[Категория: Home Assistant]]
 +
[[Категория: Linux]]

Текущая версия на 16:55, 3 августа 2023

Установка Home Assistant на AltLinux

Скачиваем дистрибутив образа

(Фото 1)Raspberry Pi4 с видео камерой на борту, SD карточка и адаптер для записи на карту

Разберем, как установить приложение HomeAssistant на операционную систему linux для AMD/Intel или ARM контроллера. Чтобы поставить и запустить Home Assistant на ARM контроллере, в нашем случае мы имеем Raspberri Pi4 (причем он у нас уже с подключенной камерой) Вместо него может быть использован любой одноплатный комп, например raspberiPy или Repka Pi . Нам понадобится SD-карта не менее чем 8 Гбайт и адаптер для записи на нее образа скаченной операционной системы (Фото 1).

Варианты установки системы Home Assistant могут быть различными:

  1. Установить HA вместе с предустановленной операционной системой - вариант HAOS. В этом случае будут доступны максимально возможные опции для запуска Supervisor. Операционная система HAOS занимает весь носитель и предоставляет среду Linux для запуска Supervisor и Core.
  2. Установить HA в режиме контейнера Docker или VirtualBox. В этом случае не будет доступа к Супервайзеру и Аддонам, их придется доустановить в ОС самостоятельно.
  3. Установить HA в минимальной конфигурации, в режиме CORE. В этом случае будет установлено только одно ядро системы, без дополнений и удобств, которые можно будет доустановить уже самостоятельно. Ядро (CORE) взаимодействует напрямую с пользователем, супервизором, устройствами и сервисами Io, все эти настройки взаимодействия придется выполнять в ручную.
  4. Установить HA в режиме Супервизор (Supervisor) на удобную вам операционную систему. Здесь будут доступны расширения - Аддоны.
Обзор архитектуры Home Assistant
Различные методы установки Home Assistant

Почитать подробнее про разные методы установки можно здесь , словарь терминов и определений в HomeAssistan здесь. Home Assistant предоставляет платформу для управления домом и домашней автоматизации. Home Assistant — это не просто приложение: это встроенная система, которая предоставляет такие же возможности, как и другие готовые потребительские продукты: подключение, настройка и обновление выполняются через простой в использовании интерфейс.


Скачиваем дистрибутив Альтлинукс для ARM с официального сайта http://nightly.altlinux.org/p10-aarch64/release/ последнюю версию нужного нам образа ISO, например вот эту alt-p10-builder-20230610-aarch64.img.xz. Если же у вас процессор архитектуры AMD/Intel - 64 разрядный, то образ ISO вам нужно скачивать вот этот alt-p10-builder-20230610-x86_64.iso Для скачивания образа из консоли можно использовать команду wget:

$ wget http://nightly.altlinux.org/p10-aarch64/release/alt-p10-builder-20230610-aarch64.img.xz

Не забываем, что прежде чем запустить это скачивание файла, нам нужно перейти в то место, где мы хотим хранить наш файл, например:

$ cd /home/user/distrib

После завершения процесс скачивания, вставляем карточку SD через адаптер (фото 1)в USB разъем, чтобы проверить на какой том это устройство смонтировалось при подключении. Для проверки используем команду df, и видим примерно такой вывод:

udevfs             1,9G          96K  1,9G            1% /dev
/dev/sdb5          7,5G         4,0K  7,5G            1% /run/media/user/4785-9AD2

Отсюда мы делаем вывод, что наше устройство смонтировано на том /dev/sdb. После это, мы запускаем команду копирования образа ISO на на SD носитель, командой, которая потребует ввести пароль рута:

$ su -c "xzcat alt-p10-builder-20230610-aarch64.img.xz |dd of=/dev/sdb bs=4M status=progress"

Запускаем операционку на одноплатнике

Вставляем нашу SD карточку, с записанным на нее ISO образом операционной системы в одноплатник. Подаем питание на него. Для работы дальше, можно использовать монитор, подключенный к компу и клавиатуру. А можно соединиться и работать сразу по сети, но тогда предварительно надо будет сгенерить ключ для входа в root и положить его в корневую директорию SD карточки. Для генерации ключа используется команд $ ssh-keygen -t rsa после этого файл надо скопировать и положить на SD карточку, найти его можно по адресу: $ cat ~/.ssh/id_rsa.pub

Если загрузка системы прошла все без ошибок, то на мониторе мы увидим приглашение, и тогда входим в рута:

login: root
password: altlinux
окно логина при входе в систему


Убедимся, что сервис удаленного доступа по протоколу SSH - sshd запущен, для этого выполняем команду

# systemctl enable sshd --now

должны получить ответ # /lib/systemd/systemd-sysv-install enable sshd Обновляем для верности всю систему:

# apt-get update

Если обновление прошло нормально, то в конце вывода мы должны увидеть что то в таком духе:

Найдено http://ftp.altlinux.org p10/branch/noarch/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

Теперь нам надо добавить пользователя, в нашем примере мы его назвали user, задаем ему пароль (вводим два раза, без отображения на экране) и включаем этого пользователя в группы, которые нам понадобятся в дальнейшем при настройке системы :

# adduser user; passwd user; usermod -aG wheel user;  usermod -aG wheel user; usermod -aG docker user; usermod -aG uucp user; usermod -aG video user

Для того, чтобы мы могли дистанционно заходить на наш хост, нам нужно знать его IP адрес, который он получает от DHCP сервера, для этого определяем IP адрес нашего одноплатника командой ifconfig

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr DC:A6:32:C3:68:66  
         inet addr:192.168.9.132  Bcast:192.168.9.255  Mask:255.255.255.0
         inet6 addr: fe80::4a4f:c4ca:9857:d421/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:432562 errors:0 dropped:0 overruns:0 frame:0
         TX packets:177156 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:607652351 (579.5 MiB)  TX bytes:12324924 (11.7 MiB)

Выходим из рута. Переподсоединяемся по ssh в пользователя user, для этого в консоли, уже на своей локальной машине задаем команду для входа в одноплатник по сети на IP адрес 192.168.9.132:

$ ssh user@192.168.9.132

Если у вас ос Windows, то можете использовать для входа программу Putty, как ее сконфигурить и настроить написано в ее разделе помощь.

Устанавливаем Home Assistant

Вывод команды df при первом входе

При первом входе в систему размер партиции корневой директории может оказаться заполненным на 100% и составлять порядка 2Гб. Для того чтобы использовать весь размер SD карточки, нужно перезагрузить систему.

Для установки в режиме Container ставим два пакета, сам докер и докер композер. Почитать более подробно про Compose plugin можно здесь. Для их установки нам понадобится ввести пароль рута.

su -c "apt-get install docker-engine docker-compose"

Запускаем сам докер

su -c "systemctl enable --now docker"

Посмотреть версию докера-композера можно командой:

$ docker-compose version
docker-compose version 1.29.2, build unknown
docker-py version: 5.0.0
CPython version: 3.9.16
OpenSSL version: OpenSSL 1.1.1u  30 May 2023

Для того чтобы сконфигурить нашу систему HA, cоздаем папку и заходим в нее:

$ mkdir homeassistant
$ mkdir video
$ cd homeassistant/
$ pwd
/home/user/homeassistant
$ vim compose.yml

Cоздаем конфигурационный файл для первого запуска нашей системы командой vim compose.yml не забываем про медиа директорию. Не забываем поправить /home/user на те пути, которые у вас в системе

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /home/user/homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
      - /home/user/video:/media
    restart: unless-stopped
    privileged: true
    network_mode: host
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0

Запускаем инстанс докера

$ docker-compose up -d

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


Status: Downloaded newer image for ghcr.io/home-assistant/home-assistant:stable
Creating homeassistant ... done

Если вывалились ошибки типа:

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))

То надо выйти из сеанса user и снова в него войти, чтобы подхватились обновления окружения.


Теперь мы можем в браузере зайти по нашему IP адресу хоста с указанием порта по умолчанию: http://192.168.9.132:8123

В браузере должно открыться новое окно с приглашением ввести пользователя, пароль для входа в систему Home Assitant и ввести локальные настройки: Страна, Валюта, Местоположение и д.р. Задаем пользователя, пароль и отвечаем на вопросы:

hauser
12345

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

Обзор
О программе
Настройки НА в режиме CORE
Настройки HA в режиме Superviser, с Дополнениями

Восстановить версию из Backup

Для того чтобы наполнить нашу версию установленной системы конфигурациями из предыдущих, настроенных версий, нам понадобится архив с файлами и директориями предыдущих конфигураций и базы данных. Заходим через консоль в командную строку исходного инстанса HA. Переходим в нужную нам папку, где сохраняются все конфигурационые файлы. Например это может быть директория /home/user/homeassistant/config Убедимся, что здесь у нас хранятся все конфигурационные файлы нашего приложения, командой ls, вывод должен быть приметрно таким:

$ ls /home/user/homeassistant/config
automations.yaml  configuration.yaml   esphome               home-assistant.log.fault  home-assistant_v2.db-wal  secrets.yaml
blueprints        configuration.yaml~  home-assistant.log    home-assistant_v2.db      scenes.yaml               tts
catusb.log        deps                 home-assistant.log.1  home-assistant_v2.db-shm  scripts.yaml              www1

Выполняем архивацию всей папки /home/user/homeassistant командой tar:

$ tar cvf homeassistant11.tar homeassistant/

Переносим наш файл архива на другой сервер с инстансом HomeAssistant:

$ scp homeassistant11.tar user@192.168.9.132:.

При запросе вводим пароль пользователя c именем user

Переходим на новый сервер в корневую директорию:

$ ssh user@192.168.9.132

Разархивируем наш архивный файл. Переходим в директорию, где расположен файл compose.yml например это может быть директория /home/user/homeassistant11, останавливаем, если был запущен сервис Докер. Запускаем Докер.

$ tar xvf homeassistant11.tar
$ cd /home/user/homeassistant11/
$ docker-compose stop
$ docker-compose up -d

Переходим в браузере на этот сервер по порту 8123, должен заработать новый инстанс Home Assistant

http://192.168.9.132:8123/

Дополнительные настройки Home Assistant

Что бы можно было работать с базой данных нужно доустановить пакет:

$ su -c "apt-get install sqlite3"

Для работы с базой данных можно перейти в директорию и запустить работу с базой данных.

cd homeassistant/
sqlite3 home-assistant_v2.db
.schema states

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

recorder:
  db_url: !secret db_link
  purge_entities: 365

Чтобы установить работу с видеокамерой необходимо добавить пакет:

su -s "apt-get install fswebcam"

Строка записи картинки на устройство /dev/video0 c поворотом на 180 градусов:

$ fswebcam -d v4l2:/dev/video0 --rotate=180 -r 1920x1080 /home/user/homeassistant/11.jpg -t 1

Как использовать Arduino

Что бы работать в HomeAssistant с Arduino по протоколу firmata необходимо скачать сам скетч с протоколом и загрузить его в контроллер Arduino. После этого, для того чтобы убедится как работает контроллер с протоколом, присоединится к нему можно используя приложение с сайта и скачав от туда файл firmata_test.64bit. В дополнение возможно понадобится доустановить библиотеку libpng12:

su -s "apt-get install libpng12"

Для того чтобы считывать значения в HA из контролера Arduino с загруженным в него приложением, нужно организовать взаимодействие через COM порт, который в нашем случае является /dev/ttyUSB0, для этого создадим файл, который назовем например arduino_usb.sh и сделаем его исполняемым:

$ cat arduino_usb.sh
#!/bin/bash
/bin/stty -F /dev/ttyUSB0 raw -echo 9600
$ /usr/bin/cat < /dev/ttyUSB0 >  /home/user/homeassistant/catusb.log &

Обязательно надо установить параметры порта /dev/ttyUSB0 на скорости -echo 9600. Командой cat считываем значения из порта и записываем их в файл /home/user/homeassistant/catusb.log знак & обозначает, что мы их записываем в фоновом режиме


Как настроить отображение погоды

Интеграция погоды в НА
  1. В интеграциях убедится, что шаблон //Meteorologisk institutt (Met.no) установлен и работает.
  2. В объектах найти ID объекта, например это будет weather.home_assistant
  3. В файле configuration.yaml в разделе сенсоров вставить нужную запись кода. Предварительно можно убедится, что этот сенсор по ID объекта отработает в меню Панель разработчика >> Шаблоны
  4. Перегрузить инстанс HA , и убедится что появились этот объект sensor.pogoda_za_oknom
  5. Создать карточку - по имени сенсора с отображением погоды - температуры, ветра, влажности, дождя на панели, в зависимости от того что нам нужно.
hours_to_show: 24
graph: line
type: sensor
entity: sensor.pogoda_za_oknom
unit: °C
detail: 1

Пример записи кода для файла configuration.yaml

 sensor:
  - platform: template
    sensors:
      pogoda_za_oknom:
        value_template: "{{state_attr('weather.home_assistant','temperature')|float}}"
        unit_of_measurement: '°C'

Ссылка на раздел официальной документации