Innholdsfortegnelse:

XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trinn (med bilder)
XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trinn (med bilder)

Video: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trinn (med bilder)

Video: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trinn (med bilder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
XiaoMi Vacuum + Amazon Button = Dash Cleaning
XiaoMi Vacuum + Amazon Button = Dash Cleaning

Denne instruksjonen vil forklare hvordan du bruker de ekstra Amazon Dash -knappene til å kontrollere XiaoMi -vakuum.

Jeg fikk en haug med Amazon -knapper fra de var $ 1, og jeg hadde ingen bruk av dem. Men da jeg mottok et nytt robotstøvsuger bestemte jeg meg for at det ville være veldig praktisk å bruke disse knappene som en kontroll for vakuumet.

Trykk på Ziploc -knappen, og det vil støvsuge soverommet.

Trykk på Glad -knappen, og det vil støvsuge stua.

Trykk på Fiji.. vel, du har ideen.

Dette prosjektet har mange hacks fra internett. Jeg setter stor pris på arbeidet så mange mennesker har gjort, og tror jeg må dele min lille ting basert på forskningen deres.

Ansvarsfraskrivelse: Alle trinnene nedenfor gjør du på egen risiko! Hvis du følger trinnene nøye, er det svært liten sjanse for at du kan skade noe. Men det skjer ikke! Og jeg tar ikke noe ansvar for det. BTW alle trinn kan reverseres, så potensielt er det ikke noe brudd på garantien. Men selvfølgelig - YMMV

Det grunnleggende prinsippet er at vi tar trykk på dash -knappen på ruteren og sender webhook til Vacuum i stedet for å kjøpe ting fra Amazon.

Dette trenger du:

  • Ruter med egendefinert fastvare som kan kontrollere DHCP, kjøre skript og oppfylle spørsmål om innlegg. Mikrotik, DD-WRT, OpenWRT, tomat osv.
  • XiaoMi vakuum. v1 eller v2
  • Amazon Dash -knapper

Spesielt det jeg brukte:

  • Mikrotik
  • XiaoMi v2 Vakuum Roborock S50
  • En haug med Amazon Dash -knapper

Her er fremgangsmåten

  1. Vi roter vakuum
  2. Installer og konfigurer nødvendige pakker under rot på vakuum
  3. Sett opp Amazon Dash -knapp
  4. Oppsettrouter for å fange knappeforespørsel og kontrollere vakuum

NB: Faktisk trenger du ikke å rote vakuumet ditt for å kontrollere det. Hvis du har en annen server på ditt lan (eller hvor som helst) som kan kjøre python eller php, kan du rette webhooks til dem. Men det gjør jeg ikke. Og jeg ønsket å holde det ryddig og kompakt på selve vakuumet. Så hvis du ikke liker min tilnærming, antar jeg at du kan finne ut hvordan du konfigurerer din egen mellommannsserver fra denne lesingen. Bare gå til punkt 2.

Ok, her går vi …

Trinn 1: Få taket og rotvakuumet

Få taket og rotvakuumet
Få taket og rotvakuumet
Skaff Token and Root Vacuum
Skaff Token and Root Vacuum
Skaff Token and Root Vacuum
Skaff Token and Root Vacuum
Få taket og rotvakuumet
Få taket og rotvakuumet

All programvare, fimware og instruksjon for rooting ble hentet fra: https://4pda.ru/forum/index.php? Showtopic = 881982

Hvis du har et annet operativsystem enn Windows og en annen telefon enn Android (du kan bruke virtual with nox), vennligst følg lenken ovenfor (bruk Google Translate) og les instruksjonene, ellers følg instruksjonene her.

For å rote må vi skaffe ip -adresse og token fra vakuumet ditt.

Pakk ut root.7z.

Vennligst installer Mihome fra Vevs på Android. Du kan bruke en fra arkivet, eller hvis denne instruksjonen er datert, kan den siste versjonen hentes fra nettstedet hans (https://www.kapiba.ru/2017/11/mi-home.html) eller Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Logg på MiHome. Du må sette China Mainland på kontoen din og legge vakuum til den).

Trykk på Vakuumikon Innstillinger (Tre prikker øverst til høyre) Generelle innstillinger Nettverksinformasjon

Fyll ut ip-adresse og token i win-mirobo/win-mirobo.ini

Deaktiver brannmur i Windows. Start win-mirobo.bat og blink fastvaren.

!!!!!!!!! V1 er for v1 Vacuum og V2 er for v2 Vacuum (Roborock S50) !!!!!!! Hvis du blinket feil FW - gå til 4pda link (først i dette trinnet) og les hvordan du gjenoppretter.

Arter Vacuum starter på nytt - du har lykkes med å forankre vakuumet ditt, og nå har du tilgang til det via ssh!

SSH til det (med kitt) med rengjøringsmiddel/rengjøringsmiddel. Bytt til passordet ditt med passwd

Trinn 2: Installer og konfigurer nødvendige pakker under rot på vakuum

Premiss

I stedet for webhooks bruker MiVacuum miio -protokollen som alle XiaoMi IoT -enheter. Så vi må lære det å forstå webhooks. Vi trenger en mellommann som kan fange webhook og oversette den til miio -protokollen til enheten. Det er python-bibliotek (https://github.com/rytilahti/python-miio), men vi kan ikke bruke det på vakuumet siden det ikke er nok plass til Python 3.5+ på vakuumet.

Men heldigvis er det et php-miio-bibliotek (https://github.com/skysilver-lab/php-miio) som er relativt lett, og dette er hva vi skal bruke (btw det brukes også i win-mirobo ovenfor). Den som fanger webhooken er webhook daemon (https://github.com/adnanh/webhook) som kjører skriptet for php på innkommende webhook.

SSH til vakuumet ditt (med kitt):

#Gjør under roten. Ja jeg vet at det ikke er trygt..whatevs.sudo su #Her installerer vi alle nødvendigheter apt-get install -y wget php5-cli nano #Alt annet kommer til /opt cd /opt

#Last ned php-miio

#Sjekk det siste på github. Rett linjer nedenfor i henhold til den siste 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

#Last ned webhooks -demon

#Sjekk det siste på github. Rett linje nedenfor i henhold til den siste 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

#Lag innstillinger for webhook

nano /opt/webhook/hooks.json #Input hooks.json innhold her. Høyreklikk i kitt. #Ctr+X Lagre Y.

#Lag skript for å ringe php-miio

nano /opt/webhook/mirobo.sh #Legg inn mirobo.sh -innhold her. Høyreklikk i kitt. # Ctr +X Lagre Y. # Gjør kjørbar chmod +x /opt/webhook/mirobo.sh

#Lag autostart -skript og forny konfigurasjoner

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 som standard

#Start systemet på nytt

starte på nytt

Etter omstart tester du innstillingene i nettleseren:

192.168.your.ip: 9000/hooks/mirobo? method = find_me

metode - kommando

params - parametere

Alle metoder (kommandoer) og parametere finner du her:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Innhold på krokene. Json

Endre-token-here til token fra vakuum.

Korriger ip-hvitelisten for ditt lokale nettverk eller fjern den helt hvis du kjører kroker fra andre steder (usikkert).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Utfører mirobo script "," 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-hviteliste "," ip-range ":" 192.168.1.0/24 "}}}}]

mirobo.sh filinnhold. Bare kopier-lim inn. Det er bare to linjer (ikke 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 ']}'

Trinn 3: Sett opp Amazon Dash Buttons

Åpne Amazon -appen din. Gå til Dash Devices. Legg til ny dash -knapp som vanlig. På tilbudet om å velge et produkt IKKE. Lukk appen. Du er ferdig.

Trinn 4: Konfigurer ruter for å fange knappeforespørsel og kontrollere MiVacuum

Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum
Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum
Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum
Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum
Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum
Oppsettrouter for å fange knappeforespørsel og kontrollere MiVacuum

Dette fungerer som følger.

Når du trykker på knappen, knytter den seg til nettverket ditt og ber dhcp -serveren om å tilordne en it -adresse. Vi må fange den forespørselen og utføre en webhook til et vakuum. Som et ekstra sikkerhetstiltak blokkerer vi forbindelsen til Amazon slik at Amazon ikke vet at vi trykker på knappen og ikke har mulighet til å skyve fastvareoppdatering eller noe annet.

For det meste bruker jeg WinBox, men noen ganger er terminal bare enklere.

#Lag brannmur -slippregel med adresseliste å blokkere

/ip brannmurfilter legg til kjede = videresend src-address-list = blockdash action = drop comment = "Drop Amazon Dash"

Da må vi lage en dhcp -leaseregel for hver knapp. Veldig enkelt å gjøre i winbox.

DHCP -server - leieavtaler

Når vi trykker på knappen vises den nye leieavtalen. Vi klikker den som statisk og setter adresselisten til 'blockdash', setter leietiden til 5 sekunder (slik at leiekontrakten utløper før neste trykk) og kopierer mac -adressen for senere.

#Denne kommandoen er bare til referanse hvis du la til leiekontrakt i winbox, bare hopp over den.

/ip dhcp-server lease add address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s

Nå må vi peke på å lease script.

Åpne DHCP -fanen og legg til 'myLeaseScript' som et leaseskript på dhcp -serveren.

Nå åpner du System - Scripts og legger til 'myLeaseScript' med lese-, testtillatelser.

Innhold i myLeaseScript:

#Script kalles to ganger på lease (1) og ved utgivelse (0): if ($ leaseBound = 1) do = { /log info ("Kjører myLeaseScript. Noen trykket på Dash Button?")

#Array av alle knappene og url til å ringe

: lokale knapper {"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"; };

#Sjekk knappen du trykker på, og klikk på URL -adressen

: foreach mac, url in = $ buttons do = {: if ($ mac = $ leaseActMAC) do = { /logg info ("Presset". $ mac. "button") /tool fetch keep-result = no mode = https http-method = post url = $ url}}}

Nå har du automatisert rengjøringen med et trykk på Amazon Dash Button. Ha det gøy

Vær oppmerksom: Det er veldig usikkert å sende webkroker ukryptert. Webhook kan bruke kryptering, men jeg prøvde å få det til å fungere, men det skjedde aldri. Siden jeg bruker det bare i mitt lokale nettverk, er jeg ikke så bekymret. Men hvis du ønsker å bruke den over internett for å koble deg til IFTTT med integrering av Google Assistant, vær oppmerksom på dette! Jeg er ikke sikker på hva som var årsaken til en kryptofeil i mitt tilfelle. Selvsignerte sertifikater jeg slo med utstedt av letsencrypt. Overkomplisert nettverk med haug med NAT -er jeg slo med ipv6. Men det virker for meg at webhooks fungerer veldig dårlig med sertifikater og faktisk veldig dårlig dokumentert. Og det ser ut til at IFTTT ikke fungerer med ipv6. Jeg prøvde alt jeg kunne, men mislyktes. Du kan ha bedre flaks. Ikke glem å lage et innlegg.

upd: Jeg har en ide om hvordan jeg kan gjøre det sikrere uten kryptering. Du lager noen få skript for hver handling du vil utføre. Du endrer mirobo.sh for å kalle skriptet med for gitt parameter sendt i webhook f.eks. clean_room. Det er det. Den mest personen som utnytter kroken vil gjøre er å rengjøre soverommet ditt igjen og igjen …)) Når jeg gjør det, vil jeg oppdatere instruerbare

Trinn 5: Slik plotter du kartet

Hvordan tegne kartet ditt
Hvordan tegne kartet ditt

Når du har hele kartet klart i MiHome -appen, sender du vakuumet ditt til et bestemt sted via kommandoen 'app_goto'.

Lag et skjermbilde av hele kartet med posisjon sendt og base. Grunnpunktet etter omstart av vakuum er posisjonen [25500, 25500] DETTE ER IKKE POSISJONEN FOR LADINGSBASE, men hvis du starter vakuumet på ladestasjonen på nytt vil posisjonen til ladestasjonen være 25500, 25500. Så fra kjent posisjon sendes og grunnposisjon kan du plotte kartet ditt på et hvilket som helst CAD -program med skjermbildet du har tatt. Jeg brukte gratis QCAD.

Etter å ha montert bildet på rutenettet, bruker jeg en linje over rommet for å måle start- og sluttpunktet for sonen.

Anbefalt: