Indholdsfortegnelse:

XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trin (med billeder)
XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trin (med billeder)

Video: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trin (med billeder)

Video: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 trin (med billeder)
Video: Home Assistant. Lesson 9.4 ADD-ON - Xiaomi Gateway 3, zigbee2mqtt integration 2024, November
Anonim
XiaoMi Vacuum + Amazon Button = Dash Cleaning
XiaoMi Vacuum + Amazon Button = Dash Cleaning

Denne vejledning forklarer, hvordan du bruger dine ekstra Amazon Dash -knapper til at styre XiaoMi -støvsuger.

Jeg fik en flok Amazon -knapper liggende fra det tidspunkt, de var $ 1, og jeg havde ingen brug af dem. Men da jeg modtog et nyt robotstøvsuger, besluttede jeg, at det ville være meget bekvemt at bruge disse knapper som en kontrol til vakuumet.

Tryk på Ziploc -knappen, og det støvsuger soveværelset.

Tryk på Glad -knappen, og det vil støvsuge stuen.

Tryk på Fiji.. godt du har idéen.

I dette projekt er der inkorporeret mange hacks fra internettet. Jeg sætter virkelig pris på det arbejde, så mange mennesker har udført, og tror, at jeg skal dele min lille ting ud fra deres forskning.

Ansvarsfraskrivelse: Alle trin nedenfor gør du på egen risiko! Hvis du følger trinene omhyggeligt, er der meget lille chance for, at du kan beskadige noget. Men det sker ikke! Og jeg tager intet ansvar for det. BTW alle trin kan vendes, så potentielt er der ingen overtrædelse af garantien. Men selvfølgelig - YMMV

Det grundlæggende princip er, at vi fanger bindestregsknappen på routeren og sender webhook til Vacuum i stedet for at købe ting fra Amazon.

Det skal du bruge:

  • Router med brugerdefineret firmware, der kan styre DHCP, køre scripts og opfylde forespørgsler. Mikrotik, DD-WRT, OpenWRT, Tomato osv.
  • XiaoMi vakuum. v1 eller v2
  • Amazon Dash -knapper

Specifikt hvad jeg brugte:

  • Mikrotik
  • XiaoMi v2 Vakuum Roborock S50
  • Flok Amazon Dash -knapper

Her er proceduren

  1. Vi roder vakuum
  2. Installer og konfigurer nødvendige pakker under rod på vakuum
  3. Opsætning af Amazon Dash -knap
  4. Setup Router til at fange knapanmodning og styre støvsuger

NB: Faktisk behøver du ikke at rode dit vakuum for at kontrollere det. Hvis du har en anden server på dit lan (eller hvor som helst), der kan køre python eller php, kan du dirigere webhooks til dem. Men det gør jeg ikke. Og jeg ville holde det ryddeligt og kompakt på selve vakuumet. Så hvis du ikke kan lide min tilgang, antager jeg, at du kan finde ud af, hvordan du konfigurerer din egen mellemmands -server fra denne læsning. Bare gå direkte til punkt 2.

Ok, her går vi…

Trin 1: Få Token og Root Vacuum

Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum
Få Token og Root Vacuum

Al software, fimware og instruktion til rooting blev hentet fra: https://4pda.ru/forum/index.php? Showtopic = 881982

Hvis du har et andet operativsystem end Windows og en anden telefon end Android (du kan bruge virtual with nox), skal du følge linket ovenfor (brug Google Translate) og læse vejledningen, ellers følg vejledningen her.

For at root skal vi hente ip -adresse og token fra dit vakuum.

Pak rod ud. 7z.

Installer venligst Mihome fra Vevs på din Android. Du kan bruge en fra arkivet, eller hvis denne instruktion er dateret, kan den nyeste version hentes fra hans websted (https://www.kapiba.ru/2017/11/mi-home.html) eller hans Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Log ind på dit MiHome. Du skal indstille China Mainland på din konto og tilføje vakuum til den).

Tryk på Vakuumikon Indstillinger (Tre prikker øverst til højre) Generelle indstillinger Netværksoplysninger

Udfyld ip-adresse og token i win-mirobo/win-mirobo.ini

Deaktiver firewall i Windows. Start win-mirobo.bat og flash firmwaren.

!!!!!!!!! V1 er for v1 Vacuum og V2 er for v2 Vacuum (Roborock S50) !!!!!!! Hvis du blinkede forkert FW - gå til 4pda link (først i dette trin) og læs hvordan du gendanner.

Arter Vacuum genstarter - du har med succes rodfæstet dit vakuum, og nu har du adgang til det via ssh!

SSH til det (med Putty) med rengøringsmiddel/rengøringsmiddel. Skift til din adgangskode med passwd

Trin 2: Installer og konfigurer nødvendige pakker under rod på vakuum

Forudsætning

I stedet for webhooks bruger MiVacuum miio -protokol, ligesom alle XiaoMi IoT -enheder. Så vi er nødt til at lære det at forstå webhooks. Vi har brug for en mellemmand, der kan fange webhook og oversætte det til miio -protokol til enhed. Der er python-bibliotek (https://github.com/rytilahti/python-miio), men vi kan ikke bruge det på vakuum, da der ikke er nok plads til Python 3.5+ på vakuumet.

Men heldigvis er der et php-miio-bibliotek (https://github.com/skysilver-lab/php-miio), der er forholdsvis meget let, og det er det, vi vil bruge (btw det bruges også i win-mirobo ovenfor). Den, der fanger webhook er webhook -dæmon (https://github.com/adnanh/webhook), der kører scriptet til php på indgående webhook.

SSH til dit vakuum (med kitt):

#Gør under rod. Ja jeg ved det ikke er sikkert..whatevs.sudo su #Her installerer vi alle nødvendigheder apt-get install -y wget php5-cli nano #Alt andet kommer til /opt cd /opt

#Download php-miio

#Tjek det seneste på github. Korrekte linjer herunder i henhold til den seneste 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 -dæmon

#Tjek det seneste på github. Korrekt linje herunder i henhold til den seneste 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

#Opret indstillinger for webhook

nano /opt/webhook/hooks.json #Input hooks.json indhold her. Højreklik i kit. #Ctr+X Gem Y.

#Opret script til opkald til php-miio

nano /opt/webhook/mirobo.sh #Indtast mirobo.sh -indhold her. Højreklik i kit. # Ctr +X Gem Y. # Lav eksekverbar chmod +x /opt/webhook/mirobo.sh

#Opret autostart -script og forny konfigurationer

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

#Genstart systemet

genstarte

Efter genstart test dine indstillinger i browseren:

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

metode - kommando

params - parametre

Alle metoder (kommandoer) og parametre kan du finde her:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Krogens indhold.json

Skift dit-token-her til dit token fra vakuum.

Ret ip-hvidlisten til dit lokale netværk, eller fjern helt, hvis du kører dine kroge andre steder (usikkert).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Udfører mirobo script "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "dit-token-her"}], "pass-argument-to-command": [{"source": "url", "name": "method"}, {"source": "url", "name ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-hvidliste "," ip-range ":" 192.168.1.0/24 "}}}}]

mirobo.sh filindhold. Bare kopier-indsæt. Der er kun 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 ']}'

Trin 3: Konfigurer Amazon Dash -knapper

Åbn din Amazon -app. Gå til Dash Devices. Tilføj ny stregknap som normalt. På promt at vælge et produkt IKKE. Luk appen. Du er færdig.

Trin 4: Konfigurer router til at fange knapanmodning og kontrollere MiVacuum

Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum
Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum
Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum
Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum
Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum
Opsætning af router til anmodning om fangstknap og kontrol af MiVacuum

Dette fungerer som følger.

Når der trykkes på knappen, knytter den sig til dit netværk og beder dhcp -serveren om at tildele en it -adresse. Vi er nødt til at fange den anmodning og udføre en webhook til et vakuum. Som en ekstra sikkerhedsforanstaltning blokerer vi forbindelsen til Amazon, så Amazon ikke ved, at vi selv har trykket på knappen og ikke har mulighed for at skubbe firmwareopdatering eller noget andet.

For det meste bruger jeg WinBox, men nogle gange er terminal bare lettere.

#Opret firewall -drop -regel med adresseliste, der skal blokeres

/ip firewall filter tilføj kæde = videresend src-address-list = blockdash action = drop comment = "Drop Amazon Dash"

Derefter skal vi oprette en dhcp -leaseregel for hver knap. Meget let at gøre i winbox.

DHCP -server - lejemål

Når vi trykker på knappen, vises den nye lejekontrakt. Vi klikker på det som statisk og sætter adresselisten til 'blockdash', sætter leasetid til 5 sekunder (så leasingperioden udløber inden næste tryk) og kopierer mac -adressen til senere.

#Denne kommando er kun til reference, hvis du tilføjede lejekontrakt i winbox, bare spring den over.

/ip dhcp-server lease tilføj adresseliste = blockdash mac-adresse = XXXXXXXXXX adresse = 192.168.x.x leasingtid = 5s

Nu skal vi pege på at lease script.

Åbn DHCP -fanen, og tilføj 'myLeaseScript' som et leasingscript på din dhcp -server.

Åbn nu System - Scripts, og tilføj 'myLeaseScript' med læse-, testtilladelser.

Indhold i myLeaseScript:

#Script kaldes to gange ved lease (1) og ved udgivelse (0): if ($ leaseBound = 1) do = { /log info ("Kører myLeaseScript. Er der nogen, der har trykket på Dash Button?")

#Array af alle dine knapper og url til at 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"; };

#Kontroller den trykte knap og acll url

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

Nu har du automatiseret din rengøring med et tryk på Amazon Dash Button. Hav det sjovt

Vær opmærksom: Det er meget usikkert at sende webhooks ukrypteret. Webhook kan bruge kryptering, men jeg forsøgte dog at få det til at fungere, men det skete bare aldrig. Da jeg kun bruger det i mit lokale netværk, er jeg ikke så bekymret. Men hvis du ønsker at bruge det over internettet til at tilslutte IFTTT med Google Assistant -integration, skal du være opmærksom på dette! Jeg er ikke sikker på, hvad der var årsagen til en kryptofejl i mit tilfælde. Selvsignerede certifikater jeg slog med udstedt af letsencrypt. Overkompliceret netværk med flok NAT'er, jeg slog med ipv6. Men det forekommer mig, at webhooks fungerer meget dårligt med certifikater og faktisk meget dårligt dokumenteret. Og det ser ud til, at IFTTT ikke fungerer med ipv6. Jeg prøvede alt, hvad jeg kunne, men det lykkedes ikke. Du har måske et bedre held. Glem ikke at lave et indlæg.

upd: Jeg har en idé om, hvordan man gør det mere sikkert uden kryptering. Du opretter et par scripts for hver handling, du vil udføre. Du ændrer mirobo.sh for at kalde scriptet med den givne parameter sendt i webhook f.eks. clean_room. Det er det. Den mest person, der udnytter krogen, er at rense dit soveværelse igen og igen …)) Når jeg gør det, vil jeg opdatere det instruerbare

Trin 5: Sådan tegnes dit kort

Sådan tegner du dit kort
Sådan tegner du dit kort

Når du har dit fulde kort klar i din MiHome -app, sender du dit vakuum til en bestemt placering via kommandoen 'app_goto'.

Lav et skærmbillede af hele kortet med position sendt og base. Grundpunktet efter genstart af vakuum er positionen [25500, 25500] DETTE ER IKKE LADNINGSBASISPOSITIONEN, men hvis du genstarter vakuumet på ladestationen, vil ladestationens position være 25500, 25500. Så fra kendt position sendes og basisposition kan du plotte dit kort på ethvert CAD -program med det skærmbillede, du har taget. Jeg brugte gratis QCAD.

Efter at have tilpasset billedet til gitteret bruger jeg en linje på tværs af rummet til at måle start- og slutpunktet for zonen.

Anbefalede: