„XiaoMi Vacuum“+ „Amazon“mygtukas = brūkšnelio valymas: 5 žingsniai (su nuotraukomis)
„XiaoMi Vacuum“+ „Amazon“mygtukas = brūkšnelio valymas: 5 žingsniai (su nuotraukomis)
Anonim
„XiaoMi Vacuum“+ „Amazon“mygtukas = brūkšnių valymas
„XiaoMi Vacuum“+ „Amazon“mygtukas = brūkšnių valymas

Š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

  1. Mes įleidžiame vakuumą
  2. Įdiekite ir sukonfigūruokite reikiamus paketus po šaknimi vakuume
  3. Nustatykite „Amazon Dash“mygtuką
  4. 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ą

Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
Gaukite žetonų ir šaknų vakuumą
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“

Nustatykite maršrutizatorių, kad sugautų mygtuko užklausą ir valdytų „MiVacuum“
Nustatykite maršrutizatorių, kad sugautų mygtuko užklausą ir valdytų „MiVacuum“
Nustatykite maršrutizatorių, kad sugautų mygtuko užklausą ir valdytų „MiVacuum“
Nustatykite maršrutizatorių, kad sugautų mygtuko užklausą ir valdytų „MiVacuum“
Nustatykite maršrutizatorių, kad sugautų mygtuko užklausą ir valdytų „MiVacuum“
Nustatykite maršrutizatorių, kad 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į

Kaip nubraižyti žemėlapį
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.