Съдържание:

XiaoMi Vacuum + Amazon Button = Почистване на таблото: 5 стъпки (със снимки)
XiaoMi Vacuum + Amazon Button = Почистване на таблото: 5 стъпки (със снимки)

Видео: XiaoMi Vacuum + Amazon Button = Почистване на таблото: 5 стъпки (със снимки)

Видео: XiaoMi Vacuum + Amazon Button = Почистване на таблото: 5 стъпки (със снимки)
Видео: 20 товаров для автомобиля с Алиэкспресс, автотовары №31 2024, Ноември
Anonim
XiaoMi Vacuum + Amazon Button = Почистване на таблото
XiaoMi Vacuum + Amazon Button = Почистване на таблото

Тази инструкция ще обясни как да използвате резервните си бутони на Amazon Dash за управление на XiaoMi вакуум.

Получих куп бутони на Amazon от времето, когато бяха на стойност 1 долар, и нямах никаква полза от тях. Но при получаването на нов робот -вакуум реших, че би било много удобно тези бутони да се използват за управление на вакуума.

Натиснете бутона Ziploc и той ще почисти спалнята.

Натиснете бутона Glad и той ще изсмуче хола.

Натиснете Фиджи.. добре, че имате идеята.

В този проект са включени много хакове от интернет. Наистина оценявам работата, която толкова много хора са свършили и мисля, че трябва да споделя моята малка измислица въз основа на техните изследвания.

Отказ от отговорност: Всички стъпки по -долу правите на свой собствен риск! Ако следвате стъпките внимателно, има много малък шанс да повредите нещо. Но по дяволите се случва! И не поемам никаква отговорност за това. Между другото, всички стъпки могат да бъдат отменени, така че потенциално няма нарушение на гаранцията. Но разбира се - YMMV

Основният принцип е, че улавяме натискането на бутона за тире на рутера и изпращаме webhook до Vacuum, вместо да купуваме неща от Amazon.

Какво ще ви трябва:

  • Рутер с персонализиран фърмуер, който може да контролира DHCP, да изпълнява скриптове и да изпълнява get | post заявки. Mikrotik, DD-WRT, OpenWRT, домат и др.
  • XiaoMi вакуум. v1 или v2
  • Бутони за тире на Amazon

Конкретно какво използвах:

  • Микротик
  • XiaoMi v2 вакуум Roborock S50
  • Куп бутони на Amazon Dash

Ето процедурата

  1. Ние изкореняваме вакуума
  2. Инсталирайте и конфигурирайте необходимите пакети под root на вакуум
  3. Бутон за настройка на Amazon Dash
  4. Настройка на маршрутизатора за улавяне на заявка за бутон и управление на вакуум

NB: Всъщност не е нужно да изкоренявате вакуума си, за да го контролирате. Ако имате друг сървър във вашия LAN (или където и да е), който може да изпълнява python или php, можете да насочите webhooks към тях. Но аз не го правя. Исках да го поддържам подреден и компактен на самия вакуум. Така че, ако моят подход не ви харесва, предполагам, че можете да разберете как да настроите свой собствен сървър на посредник от това прочетено. Просто преминете направо към точка 2.

Добре, започваме…

Стъпка 1: Вземете вакуума на жетона и корена

Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени
Вземете вакуума за жетони и корени

Целият софтуер, fimware и инструкции за вкореняване са получени от: 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. Трябва да настроите континентален Китай във вашия акаунт и да добавите вакуум към него).

Докоснете иконата за вакуум Настройки (три точки горе вдясно) Общи настройки Информация за мрежата

Попълнете ip адрес и жетон в win-mirobo/win-mirobo.ini

Деактивирайте защитната стена в Windows. Стартирайте win-mirobo.bat и преминете фърмуера.

!!!!!!!!! V1 е за v1 Vacuum, а V2 е за v2 Vacuum (Roborock S50) !!!!!!! Ако мигате грешно FW - отидете на 4pda връзка (първа в тази стъпка) и прочетете как да се възстановите.

Arter Vacuum се рестартира - успешно сте изкоренили вакуума си и сега имате достъп до него чрез ssh!

SSH към него (с шпакловка) с почистващото средство/почистващото средство. Променете паролата си с passwd

Стъпка 2: Инсталирайте и конфигурирайте необходимите пакети под корена във вакуум

Помещение

Вместо webhooks MiVacuum използва miio протокол, както правят всички XiaoMi IoT устройства. Така че трябва да го научим, за да разбираме webhooks. Нуждаем се от посредник, който може да хване webhook и да го преведе в miio протокол към устройство. Има библиотека на python (https://github.com/rytilahti/python-miio), но не можем да я използваме във вакуума, тъй като няма достатъчно място за Python 3.5+ във вакуума.

Но за щастие има библиотека php-miio (https://github.com/skysilver-lab/php-miio), която е сравнително много лека и това е, което ще използваме (btw се използва и в win-mirobo по-горе). Този, който улавя webhook, е демонът webhook (https://github.com/adnanh/webhook), който изпълнява скрипта за php при входящ webhook.

SSH към вашия вакуум (с шпакловка):

#Направете под корен. Да, знам, че не е безопасно..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

#Изтеглете демона на 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

#Създайте настройки за webhook

nano /opt/webhook/hooks.json #Въведете съдържание hooks.json тук. Щракнете с десния бутон върху шпакловката. #Ctr+X Запазване на Y.

#Създайте скрипт за извикване на php-miio

nano /opt/webhook/mirobo.sh #Въведете съдържание mirobo.sh тук. Щракнете с десния бутон върху шпакловката. # Ctr +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

Променете своя токен-тук на вашия жетон от вакуум.

Коригирайте ip-whitelist за вашата локална мрежа или премахнете напълно, ако стартирате вашите куки от друго място (опасно).

[{"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 ": "your-token-here"}], "pass-arguments-to-command": [{"source": "url", "name": "method"}, {"source": "url", "name ":" 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

Настройка на рутер за искане на бутон за улов и управление на MiVacuum
Настройка на рутер за искане на бутон за улов и управление на MiVacuum
Настройка на рутер за искане на бутон за улов и управление на MiVacuum
Настройка на рутер за искане на бутон за улов и управление на MiVacuum
Настройка на рутер за искане на бутон за улов и управление на MiVacuum
Настройка на рутер за искане на бутон за улов и управление на MiVacuum

Това работи по следния начин.

Когато бутонът е натиснат, той се свързва с вашата мрежа и иска от dhcp сървъра да му назначи негов адрес. Трябва да уловим това искане и да извършим уебхук до вакуум. Като допълнителна мярка за сигурност ще блокираме връзката с Amazon, така че Amazon да не знае, че дори сме натиснали бутона и няма възможност да натиска актуализация на фърмуера или нещо друго.

Предимно използвам WinBox, но понякога терминалът е просто по -лесен.

#Създайте правило за отпадане на защитната стена със списък с адреси за блокиране

/ip защитна стена филтър добавяне на верига = напред src-address-list = blockdash действие = капка коментар = "Изпускане на 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 Button?")

#Масив от всичките ви бутони и 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] "; "YY: YY: YY: YY: YY: YY" = "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"; };

#Проверете натиснатия бутон и URL адреса на acll

: foreach mac, url in = $ button do = {: if ($ mac = $ leaseActMAC) do = { /log info ("Натиснат". $ mac. "button") /извличане на инструмента keep-result = без режим = https http-method = post url = $ url}}}

Сега сте автоматизирали почистването си с натискане на бутон Amazon Dash. Забавлявай се

Моля, обърнете внимание: Много е опасно да изпращате уеб хукове некриптирани. Webhook може да използва криптиране, но въпреки това се опитах да го накарам да работи, просто никога не се случи. Тъй като го използвам само в локалната си мрежа, не съм много притеснен. Но ако искате да го използвате през интернет за свързване към IFTTT с интеграция с Google Assistant, моля обърнете внимание на този факт! Не съм сигурен каква е причината за грешка в крипто в моя случай. Самоподписани сертификати, с които биех, издадени от letsencrypt. Прекалено сложна мрежа с куп NAT, победих с ipv6. Но ми се струва, че webhooks работи много лошо със сертификати и всъщност много лошо документирано. И изглежда IFTTT не работи с ipv6. Опитах всичко възможно, но не успях. Може да имате по -голям късмет. Не забравяйте да направите публикация.

upd: Имам идея как да го направя по -сигурен без криптиране. Създавате няколко скрипта за всяко действие, което искате да извършите. Променяте mirobo.sh, за да извикате скрипта с даден параметър, изпратен в webhook, напр. чиста_спалня. Това е. Най -много човек, който използва куката ще направи, е да почиства спалнята ви отново и отново …)) След като направя това, ще актуализирам инструкциите

Стъпка 5: Как да начертаете вашата карта

Как да начертаете вашата карта
Как да начертаете вашата карта

След като подготвите пълната си карта във вашето приложение MiHome, изпратете вакуума си на определено място чрез командата „app_goto“.

Направете екранна снимка на пълна карта с изпратена позиция и база. Базовата точка след рестартиране на вакуума е позицията [25500, 25500] ТОВА НЕ Е ПОЗИЦИЯТА НА ПАРАВАЩАТА БАЗА, но ако рестартирате вакуума на зарядната база, позицията на зареждащата база ще бъде 25500, 25500. Така от известната позиция изпратена и базова позиция можете да начертаете картата си във всяка CAD програма със скрийншота, който сте направили. Използвах безплатен QCAD.

След като монтирам изображението в мрежата, използвам линия в стаята, за да измеря началната и крайната точка на зоната.

Препоръчано: