Integration error customize integration customize not found

@ricmik commented on Jun 14, 2019, 8:34 PM UTC: Home Assistant release with the issue: 0.93, 0.94.3 Last working Home Assistant release (if known): This install was done directly on 0.93 Operating ...

@ricmik commented on Jun 14, 2019, 8:34 PM UTC:

Home Assistant release with the issue:

0.93, 0.94.3

Last working Home Assistant release (if known):
This install was done directly on 0.93

Operating environment (Hass.io/Docker/Windows/etc.):

Hass.io on Raspberry Pi

Component/platform:

Customization

Description of problem:
After a new install of Home Assistant 0.93 I’m unable to do any customizations via the customization page of the web interface.

Error message in web interface:
It seems that your configuration.yaml doesn’t properly include customize.yaml Changes made here won’t affect your configuration.

The customizations worked in the beginning until a reboot of Hass.io

Sometimes the web interface let me customize the entities, and other times I get the message: The following attributes are already set in customize.yaml

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Complete configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123

# Auto discovery
discovery:

# Sensors
sensor:
  # Weather prediction
  - platform: yr

# Text to speech
tts:
  - platform: google_translate

logger:
  default: info

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

recorder:
  purge_keep_days: 3

device_tracker:

weather:
  - platform: met

homekit:
  filter:
    include_domains:
      - light
      - media_player
    exclude_entities:
      - light.stue
      - light.balkong
      - light.kjokken
      - light.soverom
      - light.innelys
      - light.utelys

  entity_config:
    media_player.stue:
      name: Sonos Stue
      feature_list:
        - feature: play_pause
    media_player.bad:
      name: Sonos Bad
      feature_list:
        - feature: play_pause
    media_player.kjkken:
      name: Sonos Kjøkken
      feature_list:
        - feature: play_pause
    media_player.soverom:
      name: Sonos Soverom
      feature_list:
        - feature: play_pause

input_boolean:
  guest_mode:
    name: Gjestemodus
    icon: mdi:seat-individual-suite
  vacation_mode:
    name: Feriemodus
    icon: mdi:beach
  christmas_mode:
    name: Julemodus
    icon: mdi:ornament
  wakeup_routine:
    name: Morgenstemning
    icon: mdi:weather-sunset-up
  wakeup_weekends:
    name: Aktivert i helg
    icon: mdi:calendar-range
input_datetime:
  wakeup_time:
    name: Stå opp
    has_date: false
    has_time: true

light:
- platform: switch
  name: Balkonglys
  entity_id: switch.balkonglys
- platform: group
  name: Balkong
  entities:
    - light.balkonglys
- platform: group
  name: Stue
  entities:
    - light.leselys_sofahjorne
    - light.taklampe
- platform: group
  name: Kjøkken
  entities:
    - light.kjokkenbord
- platform: group
  name: Soverom
  entities:
    - light.nattbord_1
    - light.nattbord_2
    - light.vindu_soverom
- platform: group
  name: Innelys
  entities:
    - light.stue
    - light.kjokken
    - light.soverom
- platform: group
  name: Utelys
  entities:
    - light.balkong
media_player:
- platform: yamaha
  source_ignore:
    - "AUDIO1"
    - "AUDIO2"
    - "JUKE"
    - "MusicCast Link"
    - "NET RADIO"
    - "Napster"
    - "PHONO"
    - "SERVER"
    - "Spotify"
    - "TUNER"
    - "USB"
    - "V-AUX"
    - "iPod (USB)"
    - "Bluetooth"
    - "AV1"
    - "AV2"
    - "AV3"
    - "AV6"
    - "HDMI4"
    - "HDMI5"
  source_names:
    AV4: "TV"
    AV5: "Sonos"
    HDMI1: "PS4"
    HDMI2: "HTPC"
    HDMI3: "AppleTV"
  zone_ignore:
    - "Zone_2" 

Traceback (if applicable):

Not sure if these log messages are relevant, but they seem to happen when I try customization.

2019-06-14 20:31:44 ERROR (MainThread) [frontend.js.latest.201906040] http://hassio.local:8123/frontend_latest/app.29ef27ad.js:2:59869 Uncaught TypeError: Cannot convert undefined or null to object
2019-06-14 20:31:44 ERROR (MainThread) [frontend.js.latest.201906040] http://hassio.local:8123/frontend_latest/app.29ef27ad.js:2:59869 Uncaught TypeError: Cannot convert undefined or null to object
2019-06-14 20:31:51 ERROR (MainThread) [frontend.js.latest.201906040] http://hassio.local:8123/frontend_latest/app.29ef27ad.js:2:59869 Uncaught TypeError: Cannot convert undefined or null to object
2019-06-14 20:31:51 ERROR (MainThread) [frontend.js.latest.201906040] http://hassio.local:8123/frontend_latest/app.29ef27ad.js:2:59869 Uncaught TypeError: Cannot convert undefined or null to object

Additional information:

customize.yaml

binary_sensor.soveromsvindu_hoyre:
  device_class: window
binary_sensor.soveromsvindu_venstre:
  device_class: window
binary_sensor.kjokkenvindu_hoyre:
  device_class: window
binary_sensor.balkongdor:
  device_class: door
binary_sensor.inngangsdor:
  device_class: door

This issue was moved by OttoWinter from home-assistant/home-assistant#24538.

Все настройки внешнего вида, конфигураций и сценариев в Home Assistant можно выполнить как через web-интерфейс, так и вручную, прописывая все в конфигурационных файлах. Очень рекомендую пользоваться именно вторым способом.

Для написания всего и вся в Home Assistant используется язык YAML. Тут важно запомнить два момента:

    1. При внесении правок в конфигурацию, написании сценариев и других действиях нужно обязательно соблюдать правила вложенности и правильно проставлять отступы. Более подробно я расскажу об этом далее, когда будем вносить правки в конфигурационный файл.
    2. После внесения необходимых изменений, Home Assistant нужно перезапускать для их применения (за исключением изменений интерфейса). Так вот, перед каждой перезагрузкой нужно обязательно выполнять проверку конфигурации. А для того, чтобы она была доступна, нужно включить расширенный режим:
      Включение расширенного режима в Home Assistant
      После его включения в настройках появится кнопка «Проверить конфигурацию». Соответственно сначала вносим необходимые изменения, проверяем в редакторе кода (который установим далее), что все ОК:
      Ошибок нет
      Далее переходим по пути «Настройки» -> «Сервер»:
      Меню сервер
      И выполняем проверку. Если все хорошо, то нажимаем «Перезапустить» чуть ниже:
      Проверка конфигурации

Для редактирования файлов конфигурации скачиваем и устанавливаем File Editor из Add-on Store:

Устанавливаем файловый менеджер

Выбираем его, нажимаем Install, ожидаем завершения установки, после чего запускаем нажатием на кнопку Start и включаем Show in sidebar (выносит иконку запуска редактора в сайдбар слева).

Быстрый доступ к File Editor

После установки можно переходить к первоначальной настройке. Основной файл, в котором описаны все настройки – Configuration.yaml. Так что запускаем File Editor и открываем данный файл (скорее всего он откроется по умолчанию).

Configuration.yaml

Для создания файлов и папок, а также перехода между ними, нажимаем Browse Filesystem в File Editor:

Файловый менеджер

Я создал папку myconfig (имя может быть любое) и уже в ней буду создавать все файлы конфигурации. Удаляем все стандартные файлы (groups.yaml, scenes.yaml, automations.yaml, scripts.yaml) из корневой папки и создаем новую папку и уже в ней файлы groups.yaml, scenes.yaml и папки sensor и automation.

Далее открываем файл configuration.yaml и добавляем туда строчки, как показано в примере ниже (выделил красным). Первый блок открывает возможность конфигурировать интерфейс через конфигурационный файл, второй – указывает пути до новых файлов и папок (myconfig меняем на название Вашей папки).

Пример Configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

#Редактирование интерфейса в файле конфигурации
lovelace:
  mode: yaml

# Text to speech
tts:
  - platform: google_translate

#Путь до файлов конфигурации
group: !include myconfig/groups.yaml
scene: !include myconfig/scenes.yaml

#Папки конфигурации
sensor: !include_dir_merge_list myconfig/sensor
automation: !include_dir_merge_list myconfig/automation

Добавление сенсоров

Первое, что можно сделать – вывести различную информация о состоянии сервера на главный экран. Для этого переходим в папку sensor и создаем там файл sysmonitor.yaml (название может быть любым). В нем – прописываем нужные нам сенсоры, список которых можно взять тут. Прописываем со всеми пробелами, как в примере ниже:

  - platform: systemmonitor
    resources:
    - type: processor_use
    - type: processor_temperature
    - type: last_boot
    - type: disk_use_percent
      arg: /
    - type: memory_use_percent
    - type: disk_free
      arg: /

Настройка интерфейса

Создаем файл с именем ui-lovelace.yaml в папке, где и configuration.yaml. В него будем прописывать все настройки интерфейса. Ниже – пример моего файла, в который я добавил сенсоры из прошлого пункта и написал комментарии к большинству строчек. Найти имя нужного сенсора, его атрибуты и текущее состояние можно в панели разработчика во вкладке «Состояния»:

Имя сенсора

ui-lovelace.yaml

title: MyHome  #Текст, который выводится в самом верху на вкладке "Обзор"
views:

  - title: Сервер  #Первая вкладка. Пока других нет, ее название и значок не будут отображаться в обзоре
    icon: mdi:server  #Иконка вкладки
    
    cards:  #Карточки, которые будут в первой вкладке

    - type: vertical-stack  #Первый вертикальный блок. Сюда вписываем все карточки, которые будут отображаться в первой колонке
      cards:
    
        - type: entities  #Задаем тип карточки. Данный тип (entities) выводит в строчку название и значение сущности
          show_header_toggle: false
          entities:
              - entity: sensor.disk_free  #Выводит свободное место на диске
                name: Свободное место на диске  #Отображаемое название
                icon: mdi:harddisk  #Иконка
              - entity: sensor.last_boot  #Выводит время, когда последний раз был загружен сервер
                name: Когда был включен
                icon: mdi:clock
              
        - type: horizontal-stack  #Горизонтальная группировка следующих трех карточек
          cards:
            - type: gauge  #Тип карточки. gauge - в виде круговой диаграммы
              entity: sensor.processor_use_percent  #Выводит загрузку процессора в процентах
              name: Загрузка процессора  #Отображаемое название
              severity:  #Задаем цвет диаграммы в зависимости от значений показателя
                green: 0
                yellow: 45
                red: 85
          
            - type: gauge
              entity: sensor.memory_use_percent  #Выводит использование оперативной памяти в процентах
              name: Использование оперативной памяти
              severity:
                green: 0
                yellow: 55
                red: 85
          
            - type: gauge
              entity: sensor.disk_use_percent  #Выводит процент используемого места на диске
              name: Занято места
              severity:
                green: 0
                yellow: 50
                red: 85
          
    - type: vertical-stack  #Второй вертикальный блок. Сюда вписываем все карточки, которые будут отображаться во второй колонке
      cards:
          
        - type: sensor  #Тип карточки
          entity: sensor.processor_temperature  #Выводит температуру процессора
          graph: line  #Показывает график изменения температуры
          name: Температура процессора
          icon: mdi:thermometer-low

В итоге получился вот такой вот главный экран:

Настройка Home Assistant. Главный экран

Несколько комментариев:

  1. Возможные типы карточек можно посмотреть в официальной документации (в правой колонке щелкаете по названиям ниже Cards). Там есть скриншоты и гифки, показывающие как они выглядят, а также список возможных параметров (на английском) и примеры кода.
  2. Доступные иконки можно найти щелкнув в редакторе кода на шестеренку и выбрав Material Icons в выпадающем списке. Далее, на открывшемся сайте в поле Search вводим что нужно найти (на английском), выбираем понравившуюся иконку и копируем ее имя. Обратите внимание, что все иконки прописываются так: icon: mdi:имя_иконки. После двоеточия, перед именем иконки пробела нет. И не забываем про mdi: перед именем.
    Где найти иконки для Home Assistant
  3. Обратите внимание на вложенность и пробелы в примере выше. Например, карточки, относящиеся к type: vertical-stack идут с выносом пробелами. Ниже идет горизонтальная группировка – type: horizontal-stack. Она вынесена от вертикальной (т к относится к ней) и все карточки, которые относятся к горизонтальной вынесены относительно нее. Если не соблюсти правила вложенности, то Home Assistant выдаст ошибку.
  4. Обязательные атрибуты, которые необходимо прописать карточке или сущности в официальной документации помечены словом REQUIRED. Опциональные – optional.
  5. После редактирования конфигурации не забывайте нажимать на иконку «Сохранить», появляющуюся в правом верхнем углу:
    Сохранить изменения
    При редактировании интерфейса дополнительно выполнять проверку конфигурации и перезагружать сервер не нужно.

Ссылки на другие уроки по настройке Home Assistant.

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Необходимое для начала

  •  Аккаунт в Яндексе (он же у Вас есть, верно?)
  •  Настроенный Home Assistant, с подключенным внешним IP и ssl на домене, или настроенным dDNS (я использую duckdns.org). Описывать первоначальную настройку HA я не буду, здесь на sprut.ai написано об этом (и немного больше) уже очень много.

Сам процесс настройки подключения сервисов

Для начала необходимо создать новый каталог с именем «custom_components» , если у Вас его нет (как у меня ранее), путь ~/.homeassistant/custom_directory/ или ~/config/custom_components/ в зависимости от места и версии HA).

Далее нужно склонировать туда гит, на котором вся система и работает — GitHub (все лайки именно туда, писал его не я) или же создать вручную папку yandex_smart_home и туда скопировать файлы из архива, которые были скачаны из гитхаба оттуда.

Я в Хассио в конфигураторе в web загружал каждый из 10 файлов с указанного выше гита по одному. 

Но вы можете подключиться к малине по ssh, перейти в папку с конфигом вашей ХА сборки, перейти в папку custom_components (если ее нет — надо создать). И там сделать следующее:

git clone https://github.com/dmitry-k/yandex_smart_home.git

Далее прописываем в configuration.yaml этот самый компонент:

  • как я, просто добавляем в конце файла «yandex_smart_home:» (без кавычек, конечно);
  • или же «курим» расширенный мануал от создателя компонента этого: ReadMe.

После, проверяем, на всякий случай, конфигурацию в настройках, и перезагружаем HA.

После этого уже переходим на сам процесс подключения всего, что сделали, в Умный дом Яндекса:

  •  Создаём Навык Умный Дом на https://dialogs.yandex.ru/developer/  (Очень важно создавать навык именно залогинившись с того аккаунта, в котором будем будем устройства использовать в Яндексе).

  •  Заполняем все поля, отмеченные звездочкой.

Название — указывем любое вам понравившееся, которое не будет занято. В пункте Endpoint URL пишем https://[внешний_адрес_HA:порт]/api/yandex_smart_home.Включаем приватность «Не показывать в каталоге».Имя разработчика — пишем свой ник или что душе угодно. Ни на что не влияет.

Не закрываем страничку и переходим пока на https://dialogs.yandex.ru/developer/settings/oauth , где добавляем новую связку аккаунтов:

НазваниеИдентификатор приложения/Client identifier : https://social.yandex.net/Секрет приложения/Client Password (без него сохранить не получилось связку, но в итоге она из неё сама удалилась. Я вписал туда стандартный, видимо, пароль из файла secrets.yaml. Может можно вообще что угодно вписать, или этот «секрет» где-то настраивается и это важно — но я об этом не знаю хD): passwordURL авторизации/API authorization endpoint: https://[внешний_адрес_сервера_HA:порт]/auth/authorizeURL для получения токена/Token Endpoint: https://[внешний_адрес_сервера_HA:порт]/auth/tokenURL для обновления токена/Refreshing an Access Token: https://[внешний_адрес_сервера_HA:порт]/auth/token

Сохраняем связку, и выбираем её на страничке из списка, где мы настраивали сам навык ранее.

После, справа жмем кнопку «На модерацию» (она проходит мгновенно, так как мы выбрали ранее «приватный навык») и «Опубликовать«.

По сути все: осталось в приложении Яндекс на Android/iOS или на ПК в браузере  добавить нашего нового «производителя». Покажу на примере мобильного приложения.

Открываем левое меню в приложении Яндекс и выбираем пункт Устройства.

Здесь открывается список с устройствами, которые можно подключить. Нам нужен пункт Умный дом.

Попадаем непосредственно в окно самого Умного Дома Яндекс, где и происходит управление устройствами, и создание сценариев. Сейчас нажимаем на плюс для добавления.

Помимо «официально» поддерживаемых производителей, у нас появится пункт, который мы ранее и создавали — выбираем его.

Откроется страничка созданного навыка — его описание. Нажимаем на «Объединить аккаунты», нас перебрасывает на страницу входа в Home Assistant: вводим логинпароль от своего аккаунта там.

Нас возвращает после этого на страничку самого «навыка», где уже нажимаем на «Обновить список устройств». Немного ждем..

И все доступные устройства из HA добавляются в список устройств.
Надписей красным цветом и восклицательных знаков не пугаемся: необходимо лишь переназвать каждое устройство, используя «кириллицу, без пунктуации и спецсимволов; между словами и числами ставьте пробелы«.

На данный момент поддерживаются только вот эти domains в HA:

  • group (on/off)
  • input_boolean (on/off)
  • switch (on/off)
  • fan (on/off)
  • light (on/off)
  • cover (on/off)
  • media_player (on/off, mute/unmute)

В дальнейшем будет также добавлена возможность проброса из Home Assistant в Яндекс:

  • поддержка громкости в media_player;
  • яркость/цвет ламп;
  • скорость увлажнителя/вентилятора.

На этом все, мы вместе смогли подключить те устройства, которые «нативно» не поддерживаются пока в Умном Доме Яндекс.
Кроме того, это позволяет избежать возможных лагов из-за cloud-2-cloud системы, когда Яндекс обращается в облако производителя, который обращается в облако подключенного к нему производителя, который…. — и все они лагают =)
Остаются, по сути, только Ваш сервер, за который Вы и в ответе, и облако самого Яндекса, куда все и интегрируется.

Текст составлен с неоценимой помощью @OXOTH1K , а также всего сообщества, которые и двигают весь прогресс на основе «ступенек» от компаний, подобных Яндексу.

Вступление

Установка зависимых пакетов процедура не сложная, но требует понимания, а также обязательно нужно посещать сайт pypi.org для уточнения. Не все пакеты ставятся через консоль pip install и некоторые пакеты требуют предварительно скомпилированные библиотеки, такие пакеты ставятся через LuCI, через менеджер пакетов. Некоторые интеграции нужно расскомментировать через config_flows.py. Также интеграции можно закидывать в папку custom_components, туда же будут закидываться пользовательские интеграции

Инструкция

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

  1. Сперва вы должны знать версию установленного Home Assistant, если вы не знаете какая у вас стоит версия Home Assistant, то посмотреть версию можно перейти
  • По адресу http://ip:8123/config/info
  • Настройки => О системе

  1. Скачайте архивный файл соответствующий вашей версии Home Assistant и распакуйте из архива папку components. Полный путь к папке core-год.месяц.число.zipcore-год.месяц.числоhomeassistantcomponents

  1. Находим в папке components нужную нам интеграцию и копируем в /usr/lib/python3.9/site-packages/homeassistant-2021.11.2-py3.9.egg/homeassistant/components, где homeassistant-2021.11.2-py3.9.egg это версия вашего Home Assistant.

Для понимания ниже приведу примеры

  • Если у вас стоит Home Assistant версии 2021.09.1, то здесь будет homeassistant-2021.09.1-py3.9.egg
  • Если у вас стоит Home Assistant версии 2021.10.5, то здесь будет homeassistant-2021.10.5-py3.9.egg
  • Если у вас стоит Home Assistant версии 2021.11.0, то здесь будет homeassistant-2021.11.0-py3.9.egg

  1. Проверяем файлик config_flows.py. Файлик config_flows.py находится по адресу /usr/lib/python3.9/site-packages/homeassistant-2021.11.2-py3.9.egg/homeassistant/generated/config_flows.py, где homeassistant-2021.11.2-py3.9.egg это версия вашего Home Assistant.

Для понимания ниже приведу примеры

  • Если у вас стоит Home Assistant версии 2021.09.1, то здесь будет homeassistant-2021.09.1-py3.9.egg
  • Если у вас стоит Home Assistant версии 2021.10.5, то здесь будет homeassistant-2021.10.5-py3.9.egg
  • Если у вас стоит Home Assistant версии 2021.11.0, то здесь будет homeassistant-2021.11.0-py3.9.egg

В файлике config_flows.py есть список интеграции, все они закомментированы. Сделано это специально для экономии места на шлюзе. Найдите из списка нужную интеграцию и расскомментируйте ее, а после сохраните изменение


  1. Также, в каждой интеграции, которые находятся в папке components есть файл manifest.json (манифест), где содержится полезная информация

Пример интеграции Mobile App

Открываем manifest.json интеграции Mobile App и ищем строчку requirements. В requirements указываются требуемые пакеты ["PyNaCl==1.4.0", "emoji==1.5.0"]

{
  "domain": "mobile_app",
  "name": "Mobile App",
  "config_flow": true,
  "documentation": "https://www.home-assistant.io/integrations/mobile_app",
  "requirements": ["PyNaCl==1.4.0", "emoji==1.5.0"],
  "dependencies": ["http", "webhook", "person", "tag", "websocket_api"],
  "after_dependencies": ["cloud", "camera", "notify"],
  "codeowners": ["@robbiet480"],
  "quality_scale": "internal",
  "iot_class": "local_push"
}

Делаем проверку зависимых пакетов командой pip show PyNaCl emoji. Версии пакетов не указываем, всегда указываем без версии.
Если пакеты не установлены, то будет сообщение, что таких пакетов нет, значит, значит надо установить эти пакеты с указанием версии как в manifest.json, но есть пакеты, которые надо ставить через LuCI. Чтобы понять, нужно открыть сайт pypi.org и в поиск вставить имя пакета, в нашем случае PyNaCl. Всегда надо читать про любой пакет на этом сайте. Указали нужный пакет и читаете что за пакет. Пакет PyNaCl — это привязка Python к libsodium, которая является ответвлением библиотеки Networking and Cryptography. Поэтому пакет PyNaCl будем ставить через LuCI, через пакет менеджеров. Ставим через LuCI python3-pynacl

Пакет Emoji написан для Python, поэтому его ставим через консоль

pip install emoji==1.5.0

Пример интеграции WLED

Открываем manifest.json интеграции WLED и ищем строчку requirements. В requirements указывается требуемый пакет wled==0.8.0

{
  "domain": "wled",
  "name": "WLED",
  "config_flow": true,
  "documentation": "https://www.home-assistant.io/integrations/wled",
  "requirements": ["wled==0.8.0"],
  "zeroconf": ["_wled._tcp.local."],
  "codeowners": ["@frenck"],
  "quality_scale": "platinum",
  "iot_class": "local_push"
}

Делаем проверку зависимых пакетов командой pip show wled. Версии пакетов не указываем, всегда указываем без версии.
Если пакеты не установлены, то будет сообщение, что таких пакетов нет, значит, значит надо установить эти пакеты с указанием версии как в manifest.json
Снова воспользуемся сайтом pypi.org. Пакет WLED это асинхронный клиент Python для WLED, поэтому его будем ставить через консоль.

pip install wled==0.8.0

Но, тут есть один нюанс, пакет wled собран в poetry, поэтому, даже, если вы поставите wled==0.8.0, то интеграция не запустится, потому что надо до установить зависимый пакет. Ставим вот этот пакет packaging

pip install packaging

Пример интеграции Xiaomi Gateway

Открываем manifest.json интеграции Xiaomi Gateway и ищем строчку requirements. В requirements указывается требуемый пакет PyXiaomiGateway==0.13.4

{
  "domain": "xiaomi_aqara",
  "name": "Xiaomi Gateway (Aqara)",
  "config_flow": true,
  "documentation": "https://www.home-assistant.io/integrations/xiaomi_aqara",
  "requirements": ["PyXiaomiGateway==0.13.4"],
  "after_dependencies": ["discovery"],
  "codeowners": ["@danielhiversen", "@syssi"],
  "zeroconf": ["_miio._udp.local."],
  "iot_class": "local_push"
}

Делаем проверку зависимых пакетов командой pip show PyXiaomiGateway. Версии пакетов не указываем, всегда указываем без версии.
Если пакеты не установлены, то будет сообщение, что таких пакетов нет, значит, значит надо установить эти пакеты с указанием версии как в manifest.json
Снова воспользуемся сайтом pypi.org. Смотрим про пакет PyXiaomiGateway, автор тут ничего не указал, поэтому его будем ставить через консоль.

pip install PyXiaomiGateway==0.13.4

Дополнительно

Можно создать папку custom_components и закинуть туда папки с интеграциями из папки components. Важно. Если закинули интеграцию в custom_components, то необходимо открыть config_flows.py, если там есть данная интеграция, то расскомментируйте ее, а также потребуется установка требуемых пакетов из manifest.json. Читаем инструкцию выше или в справочнике: Как отследить требуемый пакет для интеграции через утилиту htop?

Справочник

Как отследить требуемый пакет для интеграции через утилиту htop?

Запустите htop в консоли (просто указываем htop), а только после этого в Home Assistant запускайте установку интеграции. В утилите htop следите за процессом. Нужно смотреть долго и внимательно, нас должна привлечь внимание строка pip install --quiet

Пример запуска интеграции WLED через Home Assistant
image

Здесь мы видим, что идет попытка установить пакет wled==0.8.0, соответственно, рекомендую остановить Home Assistant через LuCI, System => Startup, чтобы Home Assistant не пытался установить нужный пакет и шлюз при этом не завис. Ставим пакет нужный пакет, запускаем Home Assistant и запускаем интеграцию.

Как удалить пакет?

Пакет удаляется такой строчкой кода pip uninstall (имя пакета)

Примеры

  • Удаляем пакет wled pip uninstall wled
  • Удаляем пакет PyXiaomiGateway pip uninstall PyXiaomiGateway

Видео инструкция

Кликаем на скриншот и смотрим видео

Watch the video

Литература

  • pip documentation
  • pip_install
  • pip_uninstall

Понравилась статья? Поделить с друзьями:
  • Integer overflow victoria ошибка как исправить
  • Intel как изменить звук
  • Integer overflow txd workshop ошибка как исправить
  • Intel wireless bluetooth ошибка драйвера
  • Integer expression expected ошибка bash