Sommario:
- Passaggio 1: ottenere il token e il vuoto di radice
- Passaggio 2: installa e configura i pacchetti necessari sotto Root su Vacuum
- Passaggio 3: Imposta i pulsanti Amazon Dash
- Passaggio 4: configurare il router per catturare la richiesta del pulsante e controllare MiVacuum
- Passaggio 5: come tracciare la mappa
Video: XiaoMi Vacuum + Amazon Button = Pulizia del cruscotto: 5 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
- Radichiamo il vuoto
- Installa e configura i pacchetti necessari sotto root su vuoto
- Pulsante Imposta Amazon Dash
- 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
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
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
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:
Campanello senza fili - (Raspberry PI e Amazon Dash): 4 passaggi (con immagini)
Campanello senza fili - (Raspberry PI e Amazon Dash): cosa fa? (vedi video) Quando si preme il pulsante, Raspberry scopre un nuovo dispositivo che si collega alla rete wireless. In questo modo, può riconoscere il pulsante premuto e trasmettere le informazioni su questo fatto al tuo cellulare (o a un dispositivo del tuo
Campanello silenzioso Amazon Dash Button: 10 passaggi (con immagini)
Campanello silenzioso Amazon Dash Button: guardi costantemente fuori dalla finestra in modo da poter intercettare i visitatori prima che suonino il campanello? Stanco dei cani e del bambino che impazziscono ogni volta che suona? Non voglio spendere una fortuna in un "intelligente" soluzione? Fare un campanello silenzioso è come
Slip on Amazon Fire Remote TV Remote: 3 passaggi (con immagini)
Slip on Amazon Fire Remote TV Remote: Oh Amazon, la tua Fire TV è così sorprendente, perché non ci hai dato i controlli del volume sul tuo telecomando? Bene, per meno di $ 5 su Amazon, puoi acquistare questo simpatico telecomando, alimentazione, muto , volume e canale tutto in un piccolo pacchetto. Entra nella stampante 3d e
Come controllare la luce/le luci domestiche usando Arduino e Amazon Alexa: 16 passaggi (con immagini)
Come controllare la luce/le luci domestiche usando Arduino e Amazon Alexa: ho spiegato come controllare la luce collegata a UNO e controllata da Alexa
La propria versione di Amazon Echo: 8 passaggi (con immagini)
Propria versione di Amazon Echo: Ciao ragazzi, penso che tutti conoscano l'ultimo prodotto Amazon Echo, che è un dispositivo a comando vocale, ovvero possiamo controllare il dispositivo con la nostra voce e può persino parlare con noi. Così ispirato da questa idea ho creato la mia versione, che può