Closed zoologov closed 2 years ago
Привет, правильно ли подключен 'packages' в 'configuration.yaml'? Мануал с официального сайта.
Для примера, у меня в файле 'configuration.yaml' в разделе 'homeassistant' прописано:
packages: !include_dir_merge_named includes/packages
Создана папка includes, в ней папка packages и уже там лежит файл xiaomi_vacuum.yaml
.
@poisondima, у меня было !include_dir_named packages и не хотело работать. Сделал через мердж папки, ha увидел, спасибо!
Теперь другая проблема, интеграция не видит робота и датчики расходников:
Хотя дефолтная интеграция Xiaomi Miot Auto видит:
Посмотри в 'Панели разработчика' или свойствах, как называется объект пылесоса.
Во всех скриптах и lovelace я использую vacuum.vacuum_cleaner_robot_cleaner
, у тебя оно будет другое, нужно заменить на свое и перезагрузить Home Assistant.
Всё завелось, спасибо за пояснение! Отличная интеграция!
Привет, спасибо за интеграцию. Все завелось, за исключением сенсоров в пакедже, пока курю проблему
Да, и еще, могу ошибаться, но ваш did указан в пакедже в скриптах комнат, - нужно менять на свой
@uaaauaaa, привет, по поводу сенсоров, эти объекты идут вместе с интеграцией 'Xiaomi Miot Auto' и должны быть активированы. Проверить можно в Конфигурации (должно быть 11 объектов): Убедиться, что все объекты включены:
По поводу DID, он у меня убран в файл секретов: did: !secret xiaomi_cloud_did mapId - это номер карты в облаке xiaomi, да он должен быть у каждого свой и после перенастройки карты он меняется.
Приветствую, с сенсорами разобрался - оин просто имели другие названия. В общем завелось практически все за исключением скриптов уборки комнат. Правильно ли я понимаю, что mapId имеет к этому непосредственное отношение? Проблема в том, что инфы пока очень мало, components-Xiaomi-Cloud-Map-Extractor для определения калибрации использует calibration_points. Нужен ли он для этого? В связи с этим, подскажите, каким дальше путем идти чтобы инфу по room1,2,3...получить с аккаунта xiaomi. Сорри, может все очень очевидно, но процедура для меня незнакомая, концов найти мне пока трудно. Благодарю
mapId - обязателен, т.к. это ID карты. Для получения did, siid, aiid, mapId нужно сделать следующее:
mapId - обязателен, т.к. это ID карты. Для получения did, siid, aiid, mapId нужно сделать следующее:
- Использовать модифицированный Mi Home от Vevs для сбора необходимых данных. Установите мод и создайте папки для журналов: /vevs/logs/. После создания папки - войдите в свой аккаунт. Если вы уже вошли - сделайте перелогин, для создания логов.
- Откройте страницу Roidmi EVE и начните очистку сегмента.
- Найдите в папке /vevs/logs/miio/ txt-файл с DID вашего устройства.
- В нем найдете всю нужно информацию. P.S. к сожалению уборка по комнатам работает только через облако
Не смог я победить старичка vevs чтобы добыть логи. Что было сделано: -снес с андройда оригинал Mihime, установил по ссылке выше модифицированный Mi Home от Vevs -перезагрузил сотку -создал папку на внешней SD card/vevs/logs/ -создал папку во внутренней памяти (на свякий случай) Main Storage/vevs/logs/ -залогинился в Mi Home от Vevs, запустил плагин Eve plus -еще раз перезагрузился, перелогинился
-запустил пылик через Mi Home от Vevs в сегменте (Некоторые пишут что после этого логи приходят)
но ничего не помогло - папки /vevs/logs/ не имеют файлов. Есть идеи?
ЗЫ то, что работает только через облако - не смущает, главное что в ХА появилась ПОЛНАЯ работоспособность с низким временем отклика и это очень и очень радует!
В общем, спустя сутки мучений отписываюсь, может кому и пригодится - 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 тоже не совсем понял, на что завязывается цифра?
Спасибо за помощь автору интеграции -респект
ЗЫ, оставив siid и segmentID неизменными в вашего примера, по комнатам прошелся без ошибок. Так что вопросов нет. Полагаю, он тут скорее привязывается к room1, room2 и тд, которые были уже вбиты мной ранее в соответствии с названиями комнат. Два вопроса пока для меня задака 1 - не нашел возможности изменения мощности 2 - карты по выполению работ (скрины) в телегу иногда приходят без фактических изменений - "Пылесос убрал 0 м² за 0.1 минут." и старый скрин
также интересует момент с обновлением карты. Есть смысл создать скрипт, который будет каждые 5 сек (условно) посылать запрос на скачивание карты с облака для визульного понимания?
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
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
Понял, благодарю
Прошу помощи, что то не едет у меня ничего. Вроде все сделал правильно, но при проверке выдает: expected a dictionary for dictionary value @ data['packages']['automation'] Я понять ничего не могу что делать???
@ialtuhov эта очень общая ошибка... Убедись, что правильно подключены packages - мой пример, не менялись ли отступы для автоматизаций.
Спасибо большое за расширение. Все отлично. Я даже скрипты привязал к Яндексу и теперь голосом отправляю убираться. Хотелось бы продолжить процесс автоматизации, а именно Сделать скрипт позволяющий сменить карту (у меня один робот на два этажа).
{"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}" ибо в логах они меняются каждый раз. Не могу понять что это.
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?
Regarding the DID should i keep it on the secrets.yaml file or not?
Thanks in advance for he help!
@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 :)
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 для того, чтобы все сенсоры работали, необходимо заменить переменную названия пылесоса "vacuum.vacuum_cleaner_robot_cleaner" на свою, как он у вас прописан в HA. Хотя с учетом того, что даже скрипт не отображается, нужно проверять правильно ли подключен пакедж. По ошибке конфига, проверить указана ли переменная "xiaomi_vacuum_token" в "secrets.yaml". Еще можно попробовать убрать с конфига раздел по "camera", чтобы убедиться в правильности всего остального.
подскажите, пожалуйста, настроил все с использованием ваших файлов, все статусы отображаются верно. Не работает уборка комнат по списку - при выборе комнат и нажатии на кнопку в логе вижу 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 и все заработало! Спасибо за отличный пример)
@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 Конечно!
@poisondima все получилось и заработало, спасибо большое! У меня работает mapID , который указан в вашем примере yandex_station.yaml
. Я также указал его в конфиге xiaomi_vacuum.yaml
Так и должно быть? (просто прочитав переписку подумал, что он уникальный и для каждого свой)
@lutroner mapID должен быть у каждой карты свой, его генерит облако и достать его можно через MiHome от vevs
Для интеграции в HA мне не нужна большая часть функциональности интеграции, а требуется только возможность выбора комнат для уборки. Пытаюсь самостоятельно урезать код в xiaomi_vacuum.yaml до минимально необходимого, но получается не очень). Если не сложно, подскажите какие секции нужно оставить в коде ,чтобы осталась только возможность уборки по выбранным комнатам
@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
Добрый день! Хотел уточнить - службы vacuum.clean_spot и vacuum.locate должны работает с этой интеграцией?
Добрый день! Хотел уточнить - службы vacuum.clean_spot и vacuum.locate должны работает с этой интеграцией? Привет, для отправки команд на пылесос используется интеграция
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, работает через другую интеграцию и там по этой функции робот произносит фразу: "Привет, я здесь".
service: xiaomi_miot.call_action data: entity_id: vacuum.roidmi_v60_0d0b_robot_cleaner did: 408379677 siid: 8 aiid: 1 Добавил скрипт с таким вызовом для поиска Только нужно заменить на свой entity_id
Да, должно такое работать, проверю позже и добавлю, спасибо.
@poisondima, привет! Спасибо за мод!
Есть вопрос, использовал твои файлы, но проверка конфига выдаёт:
Робот добавлен:
В интерфейсе пока тоже сенсоры не видит:
Подскажи, пожалуйста, куда копать? Заранее благодарю!