Sommario:

XiaoMi Vacuum + Amazon Button = Pulizia del cruscotto: 5 passaggi (con immagini)
XiaoMi Vacuum + Amazon Button = Pulizia del cruscotto: 5 passaggi (con immagini)

Video: XiaoMi Vacuum + Amazon Button = Pulizia del cruscotto: 5 passaggi (con immagini)

Video: XiaoMi Vacuum + Amazon Button = Pulizia del cruscotto: 5 passaggi (con immagini)
Video: UNBOXING E RECENSIONE DEL MIO PRIMO ROBOT DELLE PULIZIE - xiaomi robot vacuum-mop 2s - BLACK FRIDAY! 2024, Novembre
Anonim
XiaoMi Vacuum + Pulsante Amazon = Pulizia del cruscotto
XiaoMi Vacuum + Pulsante Amazon = Pulizia del cruscotto

Queste istruzioni spiegheranno come utilizzare i tuoi Amazon Dash Button di riserva per controllare XiaoMi Vacuum.

Ho avuto un sacco di Amazon Buttons in giro da quando erano $ 1 e non li ho usati. Ma quando ho ricevuto un nuovo robot aspirapolvere ho deciso che sarebbe stato molto comodo usare questi pulsanti come controllo per l'aspirapolvere.

Premi il pulsante Ziploc e aspirerà la camera da letto.

Premi il pulsante Glad e aspirerà il soggiorno.

Premi Fiji.. beh, hai avuto l'idea.

In questo progetto sono incorporati molti hack da Internet. Apprezzo molto il lavoro svolto da così tante persone e penso di dover condividere il mio piccolo aggeggio basato sulle loro ricerche.

Dichiarazione di non responsabilità: tutti i passaggi seguenti vengono eseguiti a proprio rischio! Se segui attentamente i passaggi, ci sono poche possibilità che tu possa danneggiare qualcosa. Ma non succede! E non me ne assumo alcuna responsabilità. A proposito, tutti i passaggi possono essere invertiti, quindi potenzialmente non vi è alcuna violazione della garanzia. Ma ovviamente - YMMV

Il principio di base è che prendiamo il pulsante del trattino sul router e inviamo il webhook a Vacuum invece di acquistare roba da Amazon.

Di cosa avrai bisogno:

  • Router con firmware personalizzato in grado di controllare DHCP, eseguire script e soddisfare query get|post. Mikrotik, DD-WRT, OpenWRT, Pomodoro ecc..
  • XiaoMi Vuoto. v1 o v2
  • Pulsanti Dash Amazon

Nello specifico cosa ho usato:

  • Mikrotik
  • XiaoMi v2 Aspirapolvere Roborock S50
  • Mazzo di pulsanti Amazon Dash

Ecco la procedura

  1. Radichiamo il vuoto
  2. Installa e configura i pacchetti necessari sotto root su vuoto
  3. Pulsante Imposta Amazon Dash
  4. Configura il router per catturare la richiesta del pulsante e controllare il vuoto

NB: In effetti non è necessario eseguire il root del vuoto per controllarlo. Se hai altri server sulla tua lan (o dovunque) che possono eseguire python o php, puoi indirizzare i webhook a loro. Ma non lo faccio. E volevo tenerlo ordinato e compatto sull'aspirapolvere stesso. Quindi, se non ti piace il mio approccio, presumo che tu possa capire come configurare il tuo server intermediario da questa lettura. Basta andare direttamente al punto 2.

Ok, ci siamo…

Passaggio 1: ottenere il token e il vuoto di radice

Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum
Ottieni il token e il Root Vacuum

Tutto il software, il firmware e le istruzioni per il rooting sono stati ottenuti da:https://4pda.ru/forum/index.php?showtopic=881982

Se hai un sistema operativo diverso da Windows e un telefono diverso da Android (puoi usare virtual con nox) segui il link sopra (usa Google Translate) e leggi le istruzioni altrimenti segui il manuale qui.

Per eseguire il root abbiamo bisogno di ottenere l'indirizzo IP e il token dal tuo vuoto.

Decomprimi root.7z.

Installa Mihome da Vevs sul tuo Android. Puoi usarne uno dall'Archivio o se questa istruzione è datata, l'ultima versione può essere ottenuta dal suo sito Web (https://www.kapiba.ru/2017/11/mi-home.html) o dal suo Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Accedi alla tua MiHome. Devi impostare China Mainland sul tuo account e aggiungervi Vacuum).

Tocca l'icona del vuoto Impostazioni (tre punti in alto a destra) Impostazioni generali Informazioni di rete

Inserisci l'indirizzo IP e il token in win-mirobo/win-mirobo.ini

Disabilita il firewall in Windows. Avvia win-mirobo.bat e aggiorna il firmware.

!!!!!!!!! V1 è per v1 Vacuum e V2 è per v2 Vacuum (Roborock S50)!!!!!!!Se hai lampeggiato in modo errato FW, vai al collegamento 4pda (primo in questo passaggio) e leggi come ripristinare.

Arter Vacuum si riavvia: hai rootato con successo il tuo vacuum e ora puoi accedervi tramite ssh!

SSH ad esso (con Putty) con il detergente/detergente. Cambia la tua password con passwd

Passaggio 2: installa e configura i pacchetti necessari sotto Root su Vacuum

Premessa

Invece dei webhook, MiVacuum utilizza il protocollo miio come tutti i dispositivi XiaoMi IoT. Quindi dobbiamo impararlo per capire i webhook. Abbiamo bisogno di un intermediario che possa catturare il webhook e tradurlo nel protocollo miio sul dispositivo. C'è una libreria Python (https://github.com/rytilahti/python-miio) ma non possiamo usarla sul vuoto poiché non c'è abbastanza spazio per Python 3.5+ sul vuoto.

Ma per fortuna c'è una libreria php-miio (https://github.com/skysilver-lab/php-miio) che è relativamente molto leggera e questo è quello che useremo (tra l'altro è usato anche in win-mirobo sopra). Quello che cattura il webhook è il demone webhook (https://github.com/adnanh/webhook) che esegue lo script per php sul webhook in arrivo.

SSH al tuo aspirapolvere (con Putty):

#Fai sotto root. Sì, lo so che non è sicuro..whatevs.sudo su #Qui installiamo tutte le necessità apt-get install -y wget php5-cli nano #Tutto il resto andrà a /opt cd /opt

#Scarica php-miio

#Controlla le ultime su github. Righe corrette sotto secondo l'ultimo 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

#Scarica il demone dei webhook

#Controlla le ultime su github. Riga corretta sotto secondo l'ultimo 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

#Crea impostazioni per webhook

nano /opt/webhook/hooks.json #Input hooks.json contenuto qui. Fare clic con il tasto destro su mastice. #Ctr+X Salva Y.

#Crea script per chiamare php-miio

nano /opt/webhook/mirobo.sh #Inserisci qui il contenuto di mirobo.sh. Fare clic con il tasto destro su mastice. #Ctr+X Salva Y. # Rendi eseguibile chmod +x /opt/webhook/mirobo.sh

#Crea uno script di avvio automatico e rinnova le configurazioni

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 impostazioni predefinite webhook.sh

#Riavvia il sistema

riavviare

Dopo il riavvio, prova le tue impostazioni nel browser:

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

metodo - comando

parametri - parametri

Tutti i metodi (comandi) e i parametri li puoi trovare qui:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Contenuto di hooks.json

Cambia il tuo-token-qui con il tuo token dal vuoto.

Correggi l'ip-whitelist per la tua rete locale o rimuovilo completamente se esegui i tuoi hook da altrove (non sicuro).

[{ "id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "In esecuzione mirobo script", "include-command-output-in-response":false, "pass-environment-to-command": [{ "source": "string", "envname": "token", "name": "your-token-qui" }], "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" } } }]

contenuto del file mirobo.sh. Basta copia-incolla. Ci sono solo due righe (non 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']}'

Passaggio 3: Imposta i pulsanti Amazon Dash

Apri la tua app Amazon. Vai a Dispositivi Dash. Aggiungi il nuovo pulsante del trattino come al solito. Al prompt per scegliere un prodotto NON FARE. Chiudi l'applicazione. Hai fatto.

Passaggio 4: configurare il router per catturare la richiesta del pulsante e controllare MiVacuum

Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum
Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum
Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum
Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum
Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum
Configura il router per catturare la richiesta del pulsante e controlla il MiVacuum

Funziona come segue.

Quando viene premuto il pulsante, si sta associando alla tua rete e chiede al server DHCP di assegnare un indirizzo it. Dobbiamo catturare quella richiesta ed eseguire un webhook su un vuoto. Come misura di sicurezza aggiuntiva bloccheremo la connessione ad Amazon in modo che Amazon non sappia che abbiamo nemmeno premuto il pulsante e non ha la possibilità di inviare aggiornamenti del firmware o qualcos'altro.

Per lo più uso WinBox, ma a volte il terminale è semplicemente più semplice.

#Crea una regola di eliminazione del firewall con l'elenco di indirizzi da bloccare

/ip firewall filter add chain=forward src-address-list=blockdash action=drop comment="Drop Amazon Dash"

Quindi dobbiamo creare una regola di locazione DHCP per ogni pulsante. Molto facile da fare in winbox.

Server DHCP - Leasing

Quando premiamo il pulsante, viene visualizzato il nuovo contratto di locazione. Facciamo clic su di esso come statico e impostiamo l'elenco di indirizzi su "blockdash", impostiamo il tempo di leasing su 5 secondi (in modo che il contratto scada prima della prossima stampa) e copiamo l'indirizzo mac per dopo.

#Questo comando è solo per riferimento se hai aggiunto un contratto di locazione in Winbox, semplicemente saltalo.

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

Ora dobbiamo puntare allo script di leasing.

Apri la scheda DHCP e aggiungi "myLeaseScript" come script di locazione sul tuo server DHCP.

Ora apri Sistema - Script e aggiungi "myLeaseScript" con i permessi di lettura e test.

Contenuto di myLeaseScript:

#Script viene chiamato due volte al lease (1) e al rilascio (0):if ($leaseBound=1) do={ /log info ("Esecuzione di myLeaseScript. Qualcuno ha premuto il pulsante Dash?")

#Array di tutti i tuoi pulsanti e URL da chiamare

:local buttons { "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"; };

#Controlla pulsante premuto e acll url

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

Ora hai automatizzato la pulizia premendo Amazon Dash Button. Divertiti

Si prega di prestare attenzione: è molto pericoloso inviare webhook non crittografati. Webhook può usare la crittografia, ma comunque ho provato a farlo funzionare non è mai successo. Dato che lo uso solo nella mia rete locale, non sono troppo preoccupato. Ma se desideri utilizzarlo su Internet per collegarti a IFTTT con l'integrazione di Google Assistant, presta attenzione a questo fatto! Non sono sicuro di quale sia stata la ragione di un errore crittografico nel mio caso. Certificati autofirmati che ho battuto con emessi daletsencrypt. Rete troppo complicata con un sacco di NAT che ho battuto con ipv6. Ma mi sembra che i webhook funzionino molto male con i certificati e in effetti sono documentati molto male. E sembra che IFTTT non funzioni con ipv6. Ho provato tutto quello che potevo, ma non ci sono riuscito. Potresti avere più fortuna. Non dimenticare di fare un post.

upd: ho un'idea su come renderlo più sicuro senza crittografia. Crei alcuni script per ogni azione che desideri eseguire. Si modifica il mirobo.sh per chiamare lo script con un dato parametro inviato nel webhook, ad es. camera_pulita. Questo è tutto. La maggior parte delle persone che sfrutteranno il gancio sarà quella di pulire la tua camera da letto ancora e ancora …)) Una volta fatto, aggiornerò l'istruzione

Passaggio 5: come tracciare la mappa

Come tracciare la tua mappa
Come tracciare la tua mappa

Una volta che hai la mappa completa pronta nella tua app MiHome, invia il tuo aspirapolvere in una posizione specifica tramite il comando "app_goto".

Fai uno screenshot della mappa completa con la posizione inviata e la base. Il punto base dopo il riavvio del vuoto è la posizione [25500, 25500]QUESTA NON È LA POSIZIONE DELLA BASE DI RICARICA, ma se si riavvia il vuoto nella base di ricarica, la posizione della base di ricarica sarà 25500, 25500. Quindi dalla posizione nota inviata e la posizione di base puoi tracciare la tua mappa su qualsiasi programma CAD con lo screenshot che hai preso. Ho usato QCAD gratuito.

Dopo aver adattato l'immagine alla griglia, uso una linea attraverso la stanza per misurare il punto iniziale e finale della zona.

Consigliato: