Turinys:
- 1 žingsnis: Gaukite žetonų ir šaknų vakuumą
- 2 veiksmas: įdiekite ir sukonfigūruokite reikiamus paketus po šaknies vakuume
- 3 veiksmas: nustatykite „Amazon Dash“mygtukus
- 4 žingsnis: nustatykite maršrutizatorių, kad jis sugautų mygtuko užklausą ir valdytų „MiVacuum“
- 5 veiksmas: kaip nubraižyti žemėlapį
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje instrukcijoje bus paaiškinta, kaip naudoti atsarginius „Amazon Dash“mygtukus „XiaoMi“vakuumui valdyti.
Aš gavau daugybę „Amazon“mygtukų nuo tada, kai jie buvo 1 USD, ir aš jų nenaudojau. Tačiau gavęs naują vakuuminį robotą nusprendžiau, kad būtų labai patogu naudoti šiuos mygtukus kaip vakuumo valdiklį.
Paspauskite „Ziploc“mygtuką ir miegamasis bus išsiurbtas.
Paspauskite „Glad“mygtuką ir svetainė bus išsiurbta.
Spausk Fidžį.. Na, tu turi idėją.
Šiame projekte yra daug įsilaužimų iš interneto. Aš labai vertinu darbą, kurį padarė tiek daug žmonių, ir manau, kad turiu pasidalinti savo maža medžiaga, pagrįsta jų tyrimais.
Atsakomybės apribojimas: visus toliau nurodytus veiksmus atliekate savo rizika! Jei kruopščiai atliksite veiksmus, yra labai maža tikimybė, kad galite ką nors sugadinti. Bet taip nebūna! Ir aš neprisiimu jokios atsakomybės už tai. BTW visi veiksmai gali būti pakeisti, todėl nėra garantijos pažeidimų. Bet žinoma - YMMV
Pagrindinis principas yra tas, kad mes paspaudžiame brūkšnelio mygtuką maršrutizatoriuje ir siunčiame „Webhook“į „Vacuum“, o ne perkame daiktus iš „Amazon“.
Ko jums reikės:
- Maršrutizatorius su pasirinkta programine įranga, galintis valdyti DHCP, paleisti scenarijus ir įvykdyti „get | post“užklausas. Mikrotik, DD-WRT, OpenWRT, Pomidorai ir kt.
- „XiaoMi“vakuumas. v1 arba v2
- „Amazon Dash“mygtukai
Tiksliau, ką naudojau:
- Mikrotik
- „XiaoMi v2 Vacuum Roborock S50“
- „Amazon“brūkšnelių mygtukų krūva
Čia yra procedūra
- Mes įleidžiame vakuumą
- Įdiekite ir sukonfigūruokite reikiamus paketus po šaknimi vakuume
- Nustatykite „Amazon Dash“mygtuką
- Nustatykite maršrutizatorių, kad gautumėte mygtuko užklausą ir valdytumėte vakuumą
NB: Tiesą sakant, jūs neturite išrauti vakuumo, kad jį valdytumėte. Jei jūsų tinkle (ar bet kur) yra kitas serveris, galintis paleisti „python“ar „php“, galite nukreipti žiniatinklio kabliukus į juos. Bet aš ne. Ir aš norėjau, kad jis būtų tvarkingas ir kompaktiškas ant paties vakuumo. Taigi, jei jums nepatinka mano požiūris, manau, kad iš šio skaitymo galite suprasti, kaip sukonfigūruoti savo vidutinio serverio serverį. Tiesiog eikite tiesiai į 2 punktą.
Gerai, einam…
1 žingsnis: Gaukite žetonų ir šaknų vakuumą
Visa programinė įranga, fimware ir instrukcijos įsišaknijimui buvo gauta iš: https://4pda.ru/forum/index.php? Showtopic = 881982
Jei turite kitą nei „Windows“OS ir kitą telefoną nei „Android“(galite naudoti virtualųjį su „nox“), vadovaukitės aukščiau pateikta nuoroda (naudokite „Google“vertėją) ir perskaitykite instrukcijas, kitaip vadovaukitės čia pateikta instrukcija.
Norėdami išrauti šaknis, turime gauti ip adresą ir raktą iš jūsų vakuumo.
Išpakuokite šaknį.7z.
Įdiekite „Mihome“iš „Vevs“savo „Android“. Galite naudoti vieną iš archyvo arba jei ši instrukcija yra pasenusi, naujausią versiją galite gauti jo svetainėje (https://www.kapiba.ru/2017/11/mi-home.html) arba jo „Google“diske (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)
Prisijunkite prie „MiHome“. Savo paskyroje turite nustatyti žemyninę Kiniją ir pridėti vakuumą).
Bakstelėkite vakuumo piktogramą Nustatymai (trys taškai viršutiniame dešiniajame kampe) Bendrieji nustatymai Tinklo informacija
Įveskite IP adresą ir prieigos raktą į win-mirobo/win-mirobo.ini
Išjunkite ugniasienę „Windows“. Paleiskite „win-mirobo.bat“ir paleiskite programinę-aparatinę įrangą.
!!!!!!!!! V1 skirtas „V1 Vakuuminis“, o V2 skirtas „V2 Vakuuminis“(„Roborock S50“)!
„Arter Vacuum“paleidžiamas iš naujo - jūs sėkmingai įsišaknijote vakuumą ir dabar turite prieigą prie jo per ssh!
SSH prie jo (su glaistu) su valikliu/valikliu. Pakeiskite slaptažodį naudodami slaptažodį
2 veiksmas: įdiekite ir sukonfigūruokite reikiamus paketus po šaknies vakuume
Prielaida
Vietoj „webhooks“„MiVacuum“naudoja „miio“protokolą, kaip ir visi „XiaoMi IoT“įrenginiai. Taigi turime to išmokti, kad suprastume žiniatinklio kabliukus. Mums reikia vidutinio žmogaus, kuris galėtų pagauti „webhook“ir išversti jį į „miio“protokolą į įrenginį. Yra „python“biblioteka (https://github.com/rytilahti/python-miio), tačiau negalime jos naudoti vakuume, nes vakuume nėra pakankamai vietos „Python 3.5+“.
Bet, laimei, yra „php-miio“biblioteka (https://github.com/skysilver-lab/php-miio), kuri yra palyginti labai lengva, ir tai mes naudosime (btw ji taip pat naudojama aukščiau esančiame „win-mirobo“)). Tas, kuris sugauna žiniatinklio užkabą, yra „webhook“demonas (https://github.com/adnanh/webhook), kuris paleidžia php scenarijų gaunamame žiniatinklyje.
SSH į vakuumą (su glaistu):
#Daryk po šaknimi. Taip, aš žinau, kad tai nesaugu..whatevs.sudo su #Čia mes įdiegiame visas būtinybes
#Atsisiųskite php-miio
#Patikrinkite naujausią „github“. Ištaisykite žemiau esančias eilutes pagal naujausią 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
#Atsisiųskite „webhooks“demoną
#Patikrinkite naujausią „github“. Teisinga žemiau esanti eilutė pagal naujausią 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
#Sukurkite „Webhook“nustatymus
nano /opt/webhook/hooks.json #Įveskite hooks.json turinį čia. Dešiniuoju pelės mygtuku spustelėkite glaistą. #Ctr+X Išsaugoti Y.
#Sukurkite scenarijų skambinti php-miio
nano /opt/webhook/mirobo.sh #Įveskite mirobo.sh turinį čia. Dešiniuoju pelės mygtuku spustelėkite glaistą. # Ctr +X Išsaugoti Y. # Padaryti vykdomąjį chmod +x /opt/webhook/mirobo.sh
#Sukurkite automatinio paleidimo scenarijų ir atnaujinkite konfigūracijas
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“numatytieji nustatymai
#Perkraukite sistemą
perkrauti
Po perkrovimo patikrinkite savo nustatymus naršyklėje:
192.168.your.ip: 9000/hooks/mirobo? method = find_me
metodas - komanda
params - parametrai
Visus metodus (komandas) ir parametrus galite rasti čia:
github.com/marcelrv/XiaomiRobotVacuumProtocol
Hooks.json turinys
Pakeiskite savo žetoną čia į žetoną iš vakuumo.
Pataisykite vietinio tinklo „ip“baltąjį sąrašą arba visiškai pašalinkite, jei paleidžiate kabliukus iš kitur (nesaugu).
[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Vykdoma mirobo scenarijus "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "your-token-here"}], "pass-argument-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 failo turinys. Tiesiog nukopijuokite. Yra tik dvi eilutės (ne 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 veiksmas: nustatykite „Amazon Dash“mygtukus
Atidarykite „Amazon“programą. Eikite į „Dash Devices“. Kaip įprasta, pridėkite naują brūkšnelio mygtuką. Raginime pasirinkti produktą NEGALIMA. Uždarykite programą. Su tavimi baigta.
4 žingsnis: nustatykite maršrutizatorių, kad jis sugautų mygtuko užklausą ir valdytų „MiVacuum“
Tai veikia taip.
Paspaudus mygtuką, jis susiejamas su jūsų tinklu ir prašo dhcp serverio priskirti jam adresą. Turime sugauti tą prašymą ir atlikti internetinį užkabinimą. Kaip papildomą saugumo priemonę mes užblokuosime ryšį su „Amazon“, kad „Amazon“nežinotų, jog mes net paspaudėme mygtuką ir negalime stumti programinės įrangos atnaujinimo ar kažko kito.
Dažniausiai naudoju „WinBox“, tačiau kartais terminalas yra tiesiog lengvesnis.
#Sukurkite užkardos numetimo taisyklę su blokuojamu adresų sąrašu
/ip ugniasienės filtras pridėti grandinę = persiųsti src-address-list = blockdash action = drop comment = "Drop Amazon Dash"
Tada kiekvienam mygtukui turime sukurti „dhcp“nuomos taisyklę. Tai labai lengva padaryti „winbox“.
DHCP serveris - nuoma
Kai paspausime mygtuką, pasirodys nauja nuomos sutartis. Spustelėkite jį kaip statinį ir nustatome adresų sąrašą į „blockdash“, nuomos laiką nustatome į 5 sekundes (kad nuomos sutartis pasibaigtų prieš kitą paspaudimą) ir nukopijuojame „Mac“adresą vėliau.
#Ši komanda skirta tik nuoroda, jei „Winbox“pridėjote nuomos sutartį, tiesiog praleiskite ją.
/ip dhcp-server nuoma add address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s
Dabar turime nurodyti nuomos scenarijų.
Atidarykite DHCP skirtuką ir pridėkite „myLeaseScript“kaip nuomos scenarijų savo dhcp serveryje.
Dabar atidarykite „System - Scripts“ir pridėkite „myLeaseScript“su skaitymo, bandymo leidimais.
„MyLeaseScript“turinys:
Nuomos (1) ir išleidimo (0) metu „#Script“vadinamas du kartus: if ($ leaseBound = 1) do = { /log info („Vykdo„ myLeaseScript “. Kažkas paspaudė brūkšnelio mygtuką?“)
#Masyvas visų mygtukų ir URL skambinti
: vietiniai mygtukai {"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"; };
#Patikrinkite paspaustą mygtuką ir visą URL
: foreach mac, url = $ mygtukai do = {: if ($ mac = $ leaseActMAC) do = { /žurnalo informacija ("Paspaustas". $ mac. "mygtukas") /tool fetch keep-result = no mode = https http-method = post url = $ url}}}
Dabar jūs automatizavote valymą paspausdami „Amazon Dash“mygtuką. Pasilinksmink
Atkreipkite dėmesį: labai nesaugu siųsti žiniatinklio kabliukus nešifruotus. „Webhook“gali naudoti šifravimą, tačiau vis dėlto stengiausi, kad jis veiktų, bet to niekada neįvyko. Kadangi aš jį naudoju tik savo vietiniame tinkle, aš nesijaudinu. Bet jei norite jį naudoti internetu, norėdami prisijungti prie IFTTT su „Google Assistant“integracija, atkreipkite dėmesį į šį faktą! Nesu tikras, kokia mano atveju buvo kriptovaliutos gedimo priežastis. Savarankiškai pasirašyti sertifikatai, kuriuos aš sumušiau, išduoti letencrypt. Per daug sudėtingas tinklas su daugybe NAT, kuriuos sumušiau „ipv6“. Bet man atrodo, kad žiniatinklio kabliukai labai blogai veikia su sertifikatais ir iš tikrųjų yra labai prastai dokumentuoti. Ir atrodo, kad IFTTT neveikia su „ipv6“. Bandžiau viską, ką galėjau, bet nepavyko. Jums gali pasisekti geriau. Nepamirškite parašyti įrašo.
atnaujinimas: Turiu idėją, kaip ją padaryti saugesnę be šifravimo. Kiekvienam veiksmui, kurį norite atlikti, sukuriate kelis scenarijus. Jūs modifikuojate mirobo.sh, kad iškviestumėte scenarijų pagal nurodytą parametrą, išsiųstą į webhook, pvz. švarus_ miegamasis. Viskas. Dauguma žmonių, kurie išnaudos kabliuką, vėl ir vėl išvalys jūsų miegamąjį …)) Kai tai padarysiu, atnaujinsiu instrukciją
5 veiksmas: kaip nubraižyti žemėlapį
Kai „MiHome“programoje bus paruoštas visas žemėlapis, nusiųskite vakuumą į konkrečią vietą naudodami komandą „app_goto“.
Padarykite viso žemėlapio ekrano kopiją su išsiųsta padėtimi ir baze. Bazinis taškas po vakuumo perkrovimo yra padėtis [25500, 25500] TAI NĖRA ĮKROVIMO PAGRINDO PADĖTIS, bet jei perkraukite vakuumą įkrovimo bazėje, įkrovimo bazės padėtis bus 25500, 25500. Taigi iš žinomos padėties išsiųsta ir pagrindinėje padėtyje galite nubraižyti žemėlapį bet kurioje CAD programoje, naudodami padarytą ekrano kopiją. Naudojau nemokamą QCAD.
Pritaikius vaizdą prie tinklelio, aš naudoju liniją per kambarį zonos pradžios ir pabaigos taškui matuoti.