Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration 'xiaomi_vacuum' not found #3

Closed
zoologov opened this issue Feb 5, 2022 · 33 comments
Closed

Integration 'xiaomi_vacuum' not found #3

zoologov opened this issue Feb 5, 2022 · 33 comments

Comments

@zoologov
Copy link

zoologov commented Feb 5, 2022

@poisondima, привет!
Спасибо за мод!

Есть вопрос, использовал твои файлы, но проверка конфига выдаёт:

Package xiaomi_vacuum setup failed. Component xiaomi_vacuum Integration 'xiaomi_vacuum' not found.
Integration error: xiaomi_vacuum - Integration 'xiaomi_vacuum' not found.

Робот добавлен:
image

В интерфейсе пока тоже сенсоры не видит:
image

Подскажи, пожалуйста, куда копать?
Заранее благодарю!

@poisondima
Copy link
Owner

Привет, правильно ли подключен 'packages' в 'configuration.yaml'? Мануал с официального сайта.

Для примера, у меня в файле 'configuration.yaml' в разделе 'homeassistant' прописано:
packages: !include_dir_merge_named includes/packages

Создана папка includes, в ней папка packages и уже там лежит файл xiaomi_vacuum.yaml.
Снимок экрана 2022-02-05 111632

@zoologov
Copy link
Author

zoologov commented Feb 5, 2022

@poisondima, у меня было !include_dir_named packages и не хотело работать. Сделал через мердж папки, ha увидел, спасибо!

Теперь другая проблема, интеграция не видит робота и датчики расходников:
image

Хотя дефолтная интеграция Xiaomi Miot Auto видит:
image

@poisondima
Copy link
Owner

Посмотри в 'Панели разработчика' или свойствах, как называется объект пылесоса.
Во всех скриптах и lovelace я использую vacuum.vacuum_cleaner_robot_cleaner, у тебя оно будет другое, нужно заменить на свое и перезагрузить Home Assistant.
Снимок экрана 2022-02-05 175302

@zoologov
Copy link
Author

zoologov commented Feb 5, 2022

Всё завелось, спасибо за пояснение!
Отличная интеграция!

@zoologov zoologov closed this as completed Feb 5, 2022
@uaaauaaa
Copy link

uaaauaaa commented Mar 12, 2022

Привет, спасибо за интеграцию. Все завелось, за исключением сенсоров в пакедже, пока курю проблему
Screenshot 2022-03-12 at 10 49 55

@uaaauaaa
Copy link

Да, и еще, могу ошибаться, но ваш did указан в пакедже в скриптах комнат, - нужно менять на свой

@poisondima
Copy link
Owner

@uaaauaaa, привет, по поводу сенсоров, эти объекты идут вместе с интеграцией 'Xiaomi Miot Auto' и должны быть активированы. Проверить можно в Конфигурации (должно быть 11 объектов):
изображение
Убедиться, что все объекты включены:
изображение

По поводу DID, он у меня убран в файл секретов: did: !secret xiaomi_cloud_did
mapId - это номер карты в облаке xiaomi, да он должен быть у каждого свой и после перенастройки карты он меняется.

@uaaauaaa
Copy link

Приветствую, с сенсорами разобрался - оин просто имели другие названия. В общем завелось практически все за исключением скриптов уборки комнат. Правильно ли я понимаю, что mapId имеет к этому непосредственное отношение? Проблема в том, что инфы пока очень мало, components-Xiaomi-Cloud-Map-Extractor для определения калибрации использует calibration_points. Нужен ли он для этого? В связи с этим, подскажите, каким дальше путем идти чтобы инфу по room1,2,3...получить с аккаунта xiaomi. Сорри, может все очень очевидно, но процедура для меня незнакомая, концов найти мне пока трудно. Благодарю

@poisondima
Copy link
Owner

mapId - обязателен, т.к. это ID карты.
Для получения did, siid, aiid, mapId нужно сделать следующее:

  1. Использовать модифицированный Mi Home от Vevs для сбора необходимых данных. Установите мод и создайте папки для журналов: /vevs/logs/. После создания папки - войдите в свой аккаунт. Если вы уже вошли - сделайте перелогин, для создания логов.
  2. Откройте страницу Roidmi EVE и начните очистку сегмента.
  3. Найдите в папке /vevs/logs/miio/ txt-файл с DID вашего устройства.
  4. В нем найдете всю нужно информацию.
    P.S. к сожалению уборка по комнатам работает только через облако

@uaaauaaa
Copy link

uaaauaaa commented Mar 14, 2022

mapId - обязателен, т.к. это ID карты. Для получения did, siid, aiid, mapId нужно сделать следующее:

  1. Использовать модифицированный Mi Home от Vevs для сбора необходимых данных. Установите мод и создайте папки для журналов: /vevs/logs/. После создания папки - войдите в свой аккаунт. Если вы уже вошли - сделайте перелогин, для создания логов.
  2. Откройте страницу Roidmi EVE и начните очистку сегмента.
  3. Найдите в папке /vevs/logs/miio/ txt-файл с DID вашего устройства.
  4. В нем найдете всю нужно информацию.
    P.S. к сожалению уборка по комнатам работает только через облако

Не смог я победить старичка vevs чтобы добыть логи. Что было сделано:
-снес с андройда оригинал Mihime, установил по ссылке выше модифицированный Mi Home от Vevs
-перезагрузил сотку
-создал папку на внешней SD card/vevs/logs/
-создал папку во внутренней памяти (на свякий случай) Main Storage/vevs/logs/
-залогинился в Mi Home от Vevs, запустил плагин Eve plus
-еще раз перезагрузился, перелогинился
2022-03-14 22 11 58

-запустил пылик через Mi Home от Vevs в сегменте (Некоторые пишут что после этого логи приходят)

но ничего не помогло - папки /vevs/logs/ не имеют файлов. Есть идеи?

ЗЫ то, что работает только через облако - не смущает, главное что в ХА появилась ПОЛНАЯ работоспособность с низким временем отклика и это очень и очень радует!

@uaaauaaa
Copy link

uaaauaaa commented Mar 15, 2022

В общем, спустя сутки мучений отписываюсь, может кому и пригодится - vevs нынче в свете текущих политических событий закрыл чат в группе - поэтому инфы у него 0. Последняя его версия для раскрытия логов должна быть хорошенько задоначена, чтобы в настройках софтины (в экспериментальных функциях) заработала опция показа логов. В связи с этим у него на сайте путем нескольких попыток была выбрана версия 6.8.601_64302. Более ранние - не имеют в наличии eve plus (пыль не отображается среди девайсов). Чтобы появились логи - нужно в корне Main Storage создать папки /vevs/logs/ заранее, и сразу же после установки этой версии в логах уже будет инфа. Нужная нам в подпапке /miio/ и в заголовке txt будет указано имя пыля roidmi.vacuum.v60

А вот дальше уже сложнее ибо буков там много:
что нашел?
did-он неизменный, судя по анализу txt
mapID - тоже
aiid - также двухзначное число, постоянное во всех строках.
siid - а вот тут интереснее - цифры разные, полагаю что связано с номерами сегментов? 2, 3, 8, 13 и тд. Как определить, что именно к чему привязано чтобы заполнить данные о rooms в package?
c segmentID тоже не совсем понял, на что завязывается цифра?

Спасибо за помощь автору интеграции -респект

@uaaauaaa
Copy link

uaaauaaa commented Mar 15, 2022

ЗЫ, оставив siid и segmentID неизменными в вашего примера, по комнатам прошелся без ошибок. Так что вопросов нет. Полагаю, он тут скорее привязывается к room1, room2 и тд, которые были уже вбиты мной ранее в соответствии с названиями комнат.
Два вопроса пока для меня задака
1 - не нашел возможности изменения мощности
2 - карты по выполению работ (скрины) в телегу иногда приходят без фактических изменений - "Пылесос убрал 0 м² за 0.1 минут." и старый скрин

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

@poisondima
Copy link
Owner

siid и aiid можно посмотреть на сайте miot, но для уборки комнаты используются siid: 14 и aiid: 1

В MiHome отправляешь пылесос, например, на кухню, жмешь стоп. Отправляешь в коридор, жмешь стоп и т.д.
Как раз в логах и нужно искать строчку типо такого:
{"params":{"did":"ХХХХХХХ","siid":14,"aiid":1,"in":[2,"{"mapId":ХХХХХХХ,"segmentId":[3]}"]}} /miotspec/action
И смотришь их по порядку как запускал, segmentId в первой будет Кухня, в следующей строке segmentId будет коридор и так сможешь определить все комнаты.

Еще один вариант в MiHome заходишь в Карты -> Изменить сегмент, там под номерами будут комнаты, если ты их еще не переименовал. Правда после разделения/объединения они как-то сбиваются, поэтому способ так себе.

Спасибо за уточнение про версию vevs у меня стоит 6.7.700

@poisondima
Copy link
Owner

  1. Поле статус это кнопка: объект твой пылесос, там можно менять мощность.
    изображение
  2. Принудительно скачать карту можно через скрипт.
    изображение
    Постоянное обновление карты отключено, т.к. связь с облаком Китая оставляет желать лучшего и часто бьет ошибку в логе, что не может скачать.
    Т.к. не всегда удается скачать карту с 1 раза в скрипте vacuum_download_map реализовал несколько попыток с задержкой.
    После окончания уборки как раз и вызывается этот скрипт, должен скачать и отправить в телегу картинку.

@uaaauaaa
Copy link

siid и aiid можно посмотреть на сайте miot, но для уборки комнаты используются siid: 14 и aiid: 1

В MiHome отправляешь пылесос, например, на кухню, жмешь стоп. Отправляешь в коридор, жмешь стоп и т.д. Как раз в логах и нужно искать строчку типо такого: {"params":{"did":"ХХХХХХХ","siid":14,"aiid":1,"in":[2,"{"mapId":ХХХХХХХ,"segmentId":[3]}"]}} /miotspec/action И смотришь их по порядку как запускал, segmentId в первой будет Кухня, в следующей строке segmentId будет коридор и так сможешь определить все комнаты.

Еще один вариант в MiHome заходишь в Карты -> Изменить сегмент, там под номерами будут комнаты, если ты их еще не переименовал. Правда после разделения/объединения они как-то сбиваются, поэтому способ так себе.

Спасибо за уточнение про версию vevs у меня стоит 6.7.700

Понял, благодарю

@ialtuhov
Copy link

ialtuhov commented Jun 4, 2022

Прошу помощи, что то не едет у меня ничего.
Вроде все сделал правильно, но при проверке выдает:
expected a dictionary for dictionary value @ data['packages']['automation']
Я понять ничего не могу что делать???

@poisondima
Copy link
Owner

@ialtuhov эта очень общая ошибка...
Убедись, что правильно подключены packages - мой пример, не менялись ли отступы для автоматизаций.

@ivanptz
Copy link

ivanptz commented Aug 2, 2022

Спасибо большое за расширение. Все отлично. Я даже скрипты привязал к Яндексу и теперь голосом отправляю убираться.
Хотелось бы продолжить процесс автоматизации, а именно Сделать скрипт позволяющий сменить карту (у меня один робот на два этажа).

{"params":{"did":"********","siid":13,"aiid":9,"in":["{"Operate":"setmap","Type":"11","MapId":1657305222,"OperateId":80328}"]}} /miotspec/action

{"params":{"did":"********","siid":13,"aiid":9,"in":["{"Operate":"setmap","Type":"11","MapId":1659248457,"OperateId":510534}"]}} /miotspec/action

Но мне не ясны последние цифры после двоеточия в скобках : ":80328}" и ":510534}" ибо в логах они меняются каждый раз. Не могу понять что это.

@0wnjei
Copy link

0wnjei commented Sep 10, 2022

Hi, very nice and useful thread. But i'm missing some sensors, for example, i miss station sensors and vacuum cleaner sensors (see image). How can i get this information?

image
image

Regarding the DID should i keep it on the secrets.yaml file or not?

Thanks in advance for he help!

@poisondima
Copy link
Owner

poisondima commented Sep 11, 2022

@0wnjei, Hi. Example from the text, here you need to change the variable "vacuum.vacuum_cleaner_robot_cleaner" to your own (the name of the vacuum cleaner).

        - name: "vacuum_fan_speed"
          state: "{{ state_attr('vacuum.vacuum_cleaner_robot_cleaner','fan_speed') }}"
        - name: "vacuum_status"
          state: "{{ state_attr('vacuum.vacuum_cleaner_robot_cleaner','vacuum.status') }}"

You can always check how it works through "Developer-Tools/Template"

It is more convenient about "DID" here, if no one has access to personal data, you can not hide :)

@0wnjei
Copy link

0wnjei commented Sep 12, 2022

Thanks for the reply. I had it changed, what i hadn't were the helpers, now everything is working fine, except for the scripts since i've yet to get all those IDs from app.
Thanks a lot for the help :)

@4ex88
Copy link

4ex88 commented Oct 18, 2022

Подскажите в чем заключается ошибка, не могу сам разобраться:
image

Сенсоры через миот рабатают. Старт и пауза также работают
image

@poisondima
Copy link
Owner

@4ex88 для того, чтобы все сенсоры работали, необходимо заменить переменную названия пылесоса "vacuum.vacuum_cleaner_robot_cleaner" на свою, как он у вас прописан в HA.
изображение
Хотя с учетом того, что даже скрипт не отображается, нужно проверять правильно ли подключен пакедж.
По ошибке конфига, проверить указана ли переменная "xiaomi_vacuum_token" в "secrets.yaml".
Еще можно попробовать убрать с конфига раздел по "camera", чтобы убедиться в правильности всего остального.

@lutroner
Copy link

lutroner commented Nov 10, 2022

подскажите, пожалуйста, настроил все с использованием ваших файлов, все статусы отображаются верно. Не работает уборка комнат по списку - при выборе комнат и нажатии на кнопку в логе вижу ERROR (MainThread) [homeassistant.components.script.vacuum_start_clean] Уборка комнат по списку: Error executing script. Invalid data for call_service at pos 2: must contain at least one of entity_id, device_id, area_id. . Насколько я понял, номера комнат можно взять из объекта camera.xiaomi_cloud_map_extractor. У меня получились следующие:
room_numbers:
'1': Детская
'2': спальня
'5': Кухня
'6': 'Коридор '
'7': Гостиная
Правильно ли я понял, что в дополнение к инструкции нужно поменять комнаты в соответствии с их id и названиями и mapId {%- set text = '[2,"{\\"mapId\\":1626189155,\\"segmentId\\":[' + text + ']}"]' %} из вашего примера на свой как описано выше, а все остальное оставить неизменным?

UPD: разобрался. mapID который указан в примере xiaomi_vacuum.yaml заменил на тот, что в файле yandex_station и все заработало! Спасибо за отличный пример)

@poisondima
Copy link
Owner

@lutroner
В разделе input_boolean создаются 6 комнат: vacuum_room1 -> vacuum_room6, там номера переменных не важны, можно просто поменять названия на свои.

input_boolean.vacuum_room1 - Детская
input_boolean.vacuum_room2 - Спальня
input_boolean.vacuum_room3 - Кухня
input_boolean.vacuum_room4 - Коридор 
input_boolean.vacuum_room5 - Гостиная

В скрипте vacuum_start_clean в разделе condition идет проверка какие из input_boolean (комнаты) включены.
А вот уже дальше важно какие будут прописаны цифры в "set text = text+'2'", по сути это номер сегмента для уборки.
Пример по вашим данным (mapId, указать свой):

        - service: script.turn_on
          entity_id: script.vacuum_clean_select_room
          data_template:
            variables:
              rooms: |
                {%- set text = '' -%}
                {%- if is_state('input_boolean.vacuum_room1','on') %}{%- set text = '1' %}{% endif %}
                {%- if is_state('input_boolean.vacuum_room2','on') %}
                  {%- if text != '' %}{%- set text = text+',' %}{% endif %}
                  {%- set text = text+'2' %}{% endif %}
                {%- if is_state('input_boolean.vacuum_room3','on') %}
                  {%- if text != '' %}{%- set text = text+',' %}{% endif %}
                  {%- set text = text+'5' %}{% endif %}
                {%- if is_state('input_boolean.vacuum_room4','on') %}
                  {%- if text != '' %}{%- set text = text+',' %}{% endif %}
                  {%- set text = text+'6' %}{% endif %}
                {%- if is_state('input_boolean.vacuum_room5','on') %}
                  {%- if text != '' %}{%- set text = text+',' %}{% endif %}
                  {%- set text = text+'7' %}{% endif %}
                {%- set text = '[2,"{\\"mapId\\":1626189155,\\"segmentId\\":[' + text + ']}"]' %}
                {{text}}

Можно ли просто закомментировать строчки с telegram
Конечно!

@lutroner
Copy link

@poisondima все получилось и заработало, спасибо большое! У меня работает mapID , который указан в вашем примере yandex_station.yaml. Я также указал его в конфиге xiaomi_vacuum.yaml Так и должно быть? (просто прочитав переписку подумал, что он уникальный и для каждого свой)

@poisondima
Copy link
Owner

@lutroner mapID должен быть у каждой карты свой, его генерит облако и достать его можно через MiHome от vevs

@C4ncerr
Copy link

C4ncerr commented Feb 13, 2023

Для интеграции в HA мне не нужна большая часть функциональности интеграции, а требуется только возможность выбора комнат для уборки. Пытаюсь самостоятельно урезать код в xiaomi_vacuum.yaml до минимально необходимого, но получается не очень). Если не сложно, подскажите какие секции нужно оставить в коде ,чтобы осталась только возможность уборки по выбранным комнатам

@poisondima
Copy link
Owner

poisondima commented Feb 13, 2023

@C4ncerr, думаю этих компонентов должно быть достаточно для уборки:

homeassistant.customize.vacuum.vacuum_cleaner_robot_cleaner
xiaomi_miot
input_boolean.vacuum_room1
input_boolean.vacuum_room2
input_boolean.vacuum_room3
input_boolean.vacuum_room4
input_boolean.vacuum_room5
script.vacuum_start_clean
script.vacuum_clean_select_room

@st-pavel
Copy link

st-pavel commented Oct 4, 2023

Добрый день! Хотел уточнить - службы vacuum.clean_spot и vacuum.locate должны работает с этой интеграцией?
2023-10-04_20-07-07

@poisondima
Copy link
Owner

Добрый день! Хотел уточнить - службы vacuum.clean_spot и vacuum.locate должны работает с этой интеграцией? 2023-10-04_20-07-07
Привет, для отправки команд на пылесос используется интеграция https://github.com/al-one/hass-xiaomi-miot, если посмотреть исходный код https://github.com/al-one/hass-xiaomi-miot/blob/9daa24784ed74f4e1ed68d98396ed547e19c74eb/custom_components/xiaomi_miot/vacuum.py#L205C12-L205C12 то видно, что функция clean_spot - пустышка, возможно задел на будущее.
По функции locate в теории должно работать, но у меня он молчит. Есть второй пылесос Xiaomi Mi Robot Vacuum Cleaner 1S, работает через другую интеграцию и там по этой функции робот произносит фразу: "Привет, я здесь".

@st-pavel
Copy link

st-pavel commented Oct 8, 2023

service: xiaomi_miot.call_action
data:
entity_id: vacuum.roidmi_v60_0d0b_robot_cleaner
did: 408379677
siid: 8
aiid: 1
Добавил скрипт с таким вызовом для поиска
Только нужно заменить на свой entity_id

@poisondima
Copy link
Owner

изображение
Да, должно такое работать, проверю позже и добавлю, спасибо.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants