Оглавление:
- Шаг 1. Получите токен и корневой вакуум
- Шаг 2: Установите и настройте необходимые пакеты под root-доступом в вакууме
- Шаг 3. Настройте кнопки Amazon Dash
- Шаг 4: Настройте маршрутизатор для запроса кнопки захвата и управления MiVacuum
- Шаг 5: Как построить карту
Видео: XiaoMi Vacuum + Amazon Button = Очистка приборной панели: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этой инструкции объясняется, как использовать запасные кнопки Amazon Dash для управления пылесосом XiaoMi.
У меня лежала куча кнопок Amazon с тех времен, когда они стоили 1 доллар, и я не использовал их. Но, получив новый робот-пылесос, я решил, что было бы очень удобно использовать эти кнопки для управления пылесосом.
Нажмите кнопку Ziploc, и она пропылесосит спальню.
Нажмите кнопку «Радость», и она пропылесосит гостиную.
Нажмите Фиджи … ну, вы поняли.
В этом проекте заложено множество хаков из интернета. Я очень ценю работу, проделанную многими людьми, и думаю, что должен поделиться своим маленьким изобретением, основанным на их исследованиях.
Отказ от ответственности: все шаги ниже вы делаете на свой страх и риск! Если вы будете внимательно следовать инструкциям, вероятность того, что вы что-то повредите, очень мала. Но дерьмо случается! И я не несу за это ответственности. Кстати, все шаги могут быть отменены, поэтому потенциально нет нарушения гарантии. Но конечно - ЫММВ
Основной принцип заключается в том, что мы ловим нажатие кнопки тире на маршрутизаторе и отправляем веб-перехватчик в Vacuum вместо того, чтобы покупать вещи на Amazon.
Что тебе понадобится:
- Маршрутизатор с кастомной прошивкой, которая может управлять DHCP, запускать скрипты и выполнять запросы get | post. Mikrotik, DD-WRT, OpenWRT, Tomato и др.
- XiaoMi Vacuum. v1 или v2
- Кнопки Amazon Dash
В частности, что я использовал:
- Микротик
- XiaoMi v2 Пылесос Roborock S50
- Связка кнопок Amazon Dash
Вот процедура
- Укореняем вакуум
- Установить и настроить необходимые пакеты под root в вакууме
- Кнопка настройки Amazon Dash
- Настройте маршрутизатор для захвата запроса кнопки и управления вакуумом
NB: На самом деле вам не нужно рутировать свой вакуум, чтобы управлять им. Если у вас есть какой-либо другой сервер в вашей локальной сети (или где-либо еще), который может запускать python или php, вы можете направить на них веб-перехватчики. Но я этого не делаю. И я хотел, чтобы он был аккуратным и компактным на самом пылесосе. Так что, если вам не нравится мой подход, я полагаю, вы можете понять, как настроить свой собственный промежуточный сервер из этого чтения. Просто переходите к пункту 2.
Хорошо, поехали…
Шаг 1. Получите токен и корневой вакуум
Все ПО, прошивки и инструкция по рутированию были получены с сайта: https://4pda.ru/forum/index.php? Showtopic = 881982
Если у вас есть ОС, отличная от Windows, и телефон, отличный от Android (вы можете использовать виртуальную систему с nox), перейдите по ссылке выше (используйте Google Translate) и прочтите инструкции, в противном случае следуйте инструкциям здесь.
Для рутирования нам нужно получить IP-адрес и токен из вашего вакуума.
Распаковать root.7z.
Пожалуйста, установите Mihome от Vevs на свой Android. Вы можете использовать один из архива или, если эта инструкция устарела, последнюю версию можно получить на его веб-сайте (https://www.kapiba.ru/2017/11/mi-home.html) или на его Google Диске (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)
Войдите в свой MiHome. Вы должны установить China Mainland в своей учетной записи и добавить к ней Vacuum).
Нажмите на значок «Вакуум». Настройки (три точки в правом верхнем углу) Общие настройки Информация о сети
Введите IP-адрес и токен в win-mirobo / win-mirobo.ini
Отключите брандмауэр в windows. Запускаем win-mirobo.bat и прошиваем прошивку.
!!!!!!!!! V1 - для v1 Vacuum, а V2 - для v2 Vacuum (Roborock S50) !!!!!!! Если вы установили неправильную прошивку FW - перейдите по ссылке 4pda (первая на этом шаге) и прочтите, как восстановить.
Arter Vacuum перезагружается - вы успешно внедрили свой пылесос и теперь имеете доступ к нему по ssh!
SSH к нему (с Putty) с очистителем / очистителем. Измените свой пароль с помощью passwd
Шаг 2: Установите и настройте необходимые пакеты под root-доступом в вакууме
Посылка
Вместо веб-перехватчиков MiVacuum использует протокол miio, как и все устройства XiaoMi IoT. Поэтому нам нужно изучить его, чтобы понять веб-перехватчики. Нам нужен посредник, который сможет поймать webhook и перевести его в протокол miio на устройство. Существует библиотека python (https://github.com/rytilahti/python-miio), но мы не можем использовать ее в вакууме, так как в вакууме недостаточно места для Python 3.5+.
Но, к счастью, есть библиотека php-miio (https://github.com/skysilver-lab/php-miio), которая сравнительно очень легкая, и это то, что мы будем использовать (кстати, она также используется в win-mirobo выше). Тот, кто ловит веб-перехватчик, - это демон веб-перехватчика (https://github.com/adnanh/webhook), который запускает скрипт для php на входящем веб-перехватчике.
SSH к вашему пылесосу (с Putty):
# Делаем под root. Да, я знаю, что это небезопасно.. whatevs.sudo su # Здесь мы устанавливаем все необходимое apt-get install -y wget php5-cli nano # Все остальное собирается в / opt cd / opt
# Загрузить php-miio
# Проверяйте последние новости на github. Правильные строки ниже в соответствии с последней версией wget https://github.com/skysilver-lab/php-miio/archive/v.0.2.6.tar.gz tar -xzvf v.0.2.6.tar.gz mv php- miio-v.0.2.6 php-miio rm -f v.0.2.6.tar.gz
#Download демон webhooks
# Проверяйте последние новости на github. Правильная строка ниже в соответствии с последней версией wget https://github.com/adnanh/webhook/releases/download/2.6.8/webhook-linux-arm.tar.gz tar -xzvf webhook-linux-arm.tar.gz mv webhook-linux-arm webhook rm -f webhook-linux-arm.tar.gz
# Создать настройки для веб-перехватчика
nano /opt/webhook/hooks.json # Введите сюда содержимое hooks.json. Щелкните правой кнопкой мыши замазку. # Ctrl + X Сохранить Y.
# Создать скрипт для вызова php-miio
nano /opt/webhook/mirobo.sh # Введите сюда содержимое mirobo.sh. Щелкните правой кнопкой мыши замазку. # Ctrl + X Сохранить Y. # Сделать исполняемый файл chmod + x /opt/webhook/mirobo.sh
# Создать скрипт автозапуска и обновить конфиги
echo "/ opt / webhook / webhook -hooks /opt/webhook/hooks.json" >> /etc/init.d/webhook.sh chmod ugo + x /etc/init.d/webhook.sh update-rc.d webhook.sh по умолчанию
# Перезагрузить систему
перезагружать
После перезагрузки проверьте свои настройки в браузере:
192.168.your.ip: 9000 / hooks / mirobo? method = find_me
метод - команда
params - параметры
Все методы (команды) и параметры вы можете найти здесь:
github.com/marcelrv/XiaomiRobotVacuumProtocol
Содержимое файла hooks.json
Измените your-token-here на свой токен из вакуума.
Исправьте белый список IP-адресов для вашей локальной сети или полностью удалите его, если вы запускаете хуки из другого места (небезопасно).
[{«id»: «mirobo», «execute-command»: «/opt/webhook/mirobo.sh», «command-working-directory»: «/ opt / webhook», «response-message»: «Выполнение mirobo script "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "ваш-токен-здесь"}], "передать-аргументы-команде": [{"источник": "URL", "имя": "метод"}, {"источник": "URL", "имя ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]
содержимое файла mirobo.sh. Просто скопируйте и вставьте. Всего две строки (не 3).
#! / bin / bashphp /opt/php-miio/miio-cli.php --ip '127.0.0.1' --bindip '127.0.0.1' --token $ token --sendcmd '{"id":' $ RANDOM ', "method": "' $ 1 '", "params": [' $ 2 ']}'
Шаг 3. Настройте кнопки Amazon Dash
Откройте приложение Amazon. Перейдите в Dash Devices. Добавьте новую кнопку тире как обычно. На промете выбирать товар НЕ НУЖНО. Закройте приложение. Вы сделали.
Шаг 4: Настройте маршрутизатор для запроса кнопки захвата и управления MiVacuum
Это работает следующим образом.
Когда кнопка нажата, он связывается с вашей сетью и просит DHCP-сервер назначить его адрес. Мы должны перехватить этот запрос и выполнить перехват в вакууме. В качестве дополнительной меры безопасности мы заблокируем соединение с Amazon, чтобы Amazon не узнал, что мы даже нажали кнопку и не имеет возможности отправить обновление прошивки или что-то еще.
В основном я использую WinBox, но иногда терминал проще.
# Создать правило удаления брандмауэра со списком адресов для блокировки
/ ip firewall filter add chain = forward src-address-list = blockdash action = drop comment = "Drop Amazon Dash"
Затем мы должны создать правило аренды DHCP для каждой кнопки. Очень просто сделать в winbox.
DHCP-сервер - аренда
Как только мы нажимаем кнопку, появляется новый договор аренды. Мы щелкаем его как статический и устанавливаем список адресов на «blockdash», устанавливаем время аренды на 5 секунд (чтобы срок аренды истекал до следующего нажатия) и копируем MAC-адрес на потом.
# Эта команда предназначена только для справки, если вы добавили аренду в winbox, просто пропустите ее.
/ ip dhcp-server lease add address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s
Теперь нам нужно указать скрипт аренды.
Откройте вкладку DHCP и добавьте myLeaseScript в качестве сценария аренды на свой DHCP-сервер.
Теперь откройте System - Scripts и добавьте myLeaseScript с разрешениями на чтение и тестирование.
Содержимое myLeaseScript:
#Script вызывается дважды при аренде (1) и при выпуске (0): if ($ leaseBound = 1) do = {/ log info ("Выполняется myLeaseScript. Кто-то нажал кнопку Dash?")
# Массив всех ваших кнопок и URL для вызова
: локальные кнопки {"XX: XX: XX: XX: XX: XX" = "https://192.168.your.ip: 9000 / hooks / mirobo? method = app_zoned_clean¶ms = [19300, 21000, 21200, 23800, 1] "; "ГГ: ГГ: ГГ: ГГ: ГГ: ГГ" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [24000, 21500, 26100, 22900, 1]"; "ZZ: ZZ: ZZ: ZZ: ZZ: ZZ" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [21400, 24200, 22700, 26200, 1], [24000, 21500, 26100, 22900, 1] "; «AA: AA: AA: AA: AA: AA» = «https://whateveryouwant.com:9000/other?argument=and_values»; };
# Проверяем нажатую кнопку и acll url
: foreach mac, url in = $ buttons do = {: if ($ mac = $ leaseActMAC) do = {/ log info ("Pressed". $ mac. "button") / tool fetch keep-result = no mode = https http-method = post url = $ url}}}
Теперь вы автоматизировали уборку одним нажатием кнопки Amazon Dash. Повеселись
Обратите внимание: отправлять веб-перехватчики в незашифрованном виде очень небезопасно. Webhook может использовать шифрование, но, как бы я ни пытался заставить его работать, этого не произошло. Поскольку я использую его только в своей локальной сети, меня это не особо беспокоит. Но если вы хотите использовать его через Интернет для подключения к IFTTT с интеграцией Google Assistant, обратите внимание на этот факт! Я не уверен, что стало причиной сбоя криптографии в моем случае. Самоподписанные сертификаты, с которыми я столкнулся, выпущенные letsencrypt. Сверхсложная сеть с кучей NAT я победил с ipv6. Но мне кажется, что webhooks очень плохо работает с сертификатами и на самом деле очень плохо документирован. И похоже, что IFTTT не работает с ipv6. Я пробовал все, что мог, но безуспешно. Тебе может повезти больше. Не забудьте оставить пост.
upd: У меня есть идея, как сделать его более безопасным без шифрования. Вы создаете несколько сценариев для каждого действия, которое хотите выполнить. Вы изменяете mirobo.sh для вызова сценария с заданным параметром, отправленным в веб-перехватчике, например. чистая_спальня. Вот и все. Большинство людей, которые используют крючок, будут убирать вашу спальню снова и снова…)) Как только я это сделаю, я обновлю инструкции
Шаг 5: Как построить карту
После того, как вы подготовили полную карту в приложении MiHome, отправьте свой пылесос в определенное место с помощью команды app_goto.
Сделайте снимок экрана с полной картой с отправленной позицией и базой. Базовая точка после перезагрузки вакуума - это положение [25500, 25500] ЭТО НЕ ПОЛОЖЕНИЕ ЗАРЯДНОЙ БАЗЫ, но если вы перезагрузите вакуум на зарядной базе, то положение зарядной базы будет 25500, 25500. Таким образом, отправлено из известного положения. и базовое положение, вы можете нанести карту на любую программу САПР с помощью сделанного вами снимка экрана. Я использовал бесплатный QCAD.
После подгонки изображения к сетке я использую линию через комнату, чтобы измерить начальную и конечную точки зоны.
Рекомендуемые:
Amazon Dash Button Бесшумный дверной звонок: 10 шагов (с изображениями)
Amazon Dash Button Бесшумный дверной звонок: постоянно смотреть в окно, чтобы перехватить посетителей, прежде чем они позвонят в дверной звонок? Устали от собак и малыша, сходящих с ума каждый раз, когда он звонит? Не хочу тратить целое состояние на "умных" решение? Сделать бесшумный дверной звонок - это как
Как управлять светом / домашним освещением с помощью Arduino и Amazon Alexa: 16 шагов (с изображениями)
Как управлять светом / домашним освещением с помощью Arduino и Amazon Alexa: я объяснил, как управлять светом, который подключен к UNO и управляется Alexa
Собственная версия Amazon Echo: 8 шагов (с изображениями)
Собственная версия Amazon Echo: Привет, ребята, я думаю, что все знают о последнем продукте Amazon Echo от Amazon, который представляет собой устройство с голосовым управлением, то есть мы можем управлять устройством с помощью нашего голоса, и оно может даже разговаривать с нами. Так вдохновившись этой идеей, я создал свою собственную версию, которая может
Пульт дистанционного управления Amazon Echo Controlled IR: 11 шагов (с изображениями)
Пульт дистанционного управления Amazon Echo Controlled IR: система Amazon Echo может управлять многими аспектами умного дома, но умная розетка может только выключаться и включаться. Многие устройства не включаются мгновенно при простом подключении и требуют дополнительных действий, таких как нажатие кнопок на пульте дистанционного управления или
Amazon Alexa - Raspberry Pi (мобильный): 5 шагов (с изображениями)
Amazon Alexa - Raspberry Pi (для мобильных устройств): добро пожаловать в наше руководство по созданию Amazon Alexa с использованием Rasberry Pi. Поскольку вы щелкнули по этому руководству, вы, очевидно, знаете, что Amazon Alexa - прекрасная технология в нашу современную эпоху. Хотя, покупка и изготовление - две разные