Taula de continguts:
- Pas 1: Obteniu el testimoni i el buit arrel
- Pas 2: instal·leu i configureu els paquets necessaris sota l'arrel al buit
- Pas 3: configureu els botons d'Amazon Dash
- Pas 4: Configureu el router per capturar la sol·licitud del botó i controlar MiVacuum
- Pas 5: Com dibuixar el vostre mapa
Vídeo: Aspirador XiaoMi + Botó Amazon = Neteja de tauler: 5 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Aquesta instrucció explicarà com utilitzar els botons de recanvi d’Amazon Dash per controlar el buit XiaoMi.
Vaig tenir un munt de botons d’Amazon col·locats des que eren 1 dòlar i no en vaig fer cap ús. Però en rebre un nou robot aspirador, vaig decidir que seria molt convenient utilitzar aquests botons com a control del buit.
Premeu el botó Ziploc i aspirarà el dormitori.
Premeu el botó Alegre i aspirarà la sala d'estar.
Premeu Fiji.. doncs teniu la idea.
En aquest projecte s'incorporen molts hacks des d'Internet. Aprecio molt la feina feta per tanta gent i crec que he de compartir el meu petit dispositiu basat en la seva investigació.
Exempció de responsabilitat: Tot el pas següent ho feu sota la vostra responsabilitat. Si seguiu els passos acuradament, hi ha molt poques possibilitats que pugueu danyar alguna cosa. Però no passa! I no en assumeixo cap responsabilitat. BTW es poden invertir tots els passos, de manera que potencialment no hi ha infracció de la garantia. Però, per descomptat, YMMV
El principi bàsic és que agafem el botó de ratolí que premem al router i que enviem el webhook a Vacuum en lloc de comprar coses d’Amazon.
Què necessiteu:
- Encaminador amb microprogramari personalitzat que pot controlar DHCP, executar scripts i complir les consultes d'obtenció | publicació. Mikrotik, DD-WRT, OpenWRT, Tomato, etc.
- Aspirador XiaoMi. v1 o v2
- Botons Amazon Dash
Específicament el que he utilitzat:
- Mikrotik
- XiaoMi v2 Roborock S50 al buit
- Un munt de botons Amazon Dash
Aquí teniu el procediment
- Arrelem al buit
- Instal·leu i configureu els paquets necessaris sota root al buit
- Configura el botó Amazon Dash
- Configureu el router per captar la sol·licitud i controlar el buit
NB: De fet, no haureu d'arrelar el buit per controlar-lo. Si teniu algun altre servidor al vostre lan (o on sigui) que pugui executar python o php, podeu dirigir-hi webhooks. Però jo no. I volia mantenir-lo ordenat i compacte al propi buit. Així que si no us agrada el meu enfocament, suposo que podeu esbrinar com configurar el vostre propi servidor middle man a partir d’aquesta lectura. Simplement aneu directament al punt 2.
D'acord, aquí anem …
Pas 1: Obteniu el testimoni i el buit arrel
Tot el programari, fimware i instruccions per a l'arrelament es van obtenir a: https://4pda.ru/forum/index.php? Showtopic = 881982
Si teniu un sistema operatiu diferent de Windows i un telèfon que no sigui Android (podeu utilitzar el virtual amb nox), seguiu l’enllaç anterior (utilitzeu el Traductor de Google) i llegiu les instruccions que seguireu amb el manual aquí.
Per tal d’arrelar, hem d’obtenir l’adreça IP i el testimoni del vostre buit.
Desempaqueteu root.7z.
Instal·leu Mihome de Vevs al vostre Android. Podeu utilitzar-ne un a l'Arxiu o, si aquesta instrucció té data, es pot obtenir la versió més recent al seu lloc web (https://www.kapiba.ru/2017/11/mi-home.html) o al seu Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)
Inicieu la sessió a MiHome. Heu d’establir China Mainland al vostre compte i afegir-hi Vacuum).
Toqueu Configuració de la icona de buit (tres punts a la part superior dreta) Configuració general Informació de la xarxa
Empleneu l'adreça IP i el testimoni a win-mirobo / win-mirobo.ini
Desactiveu el tallafoc a Windows. Inicieu win-mirobo.bat i feu flaix el firmware.
!!!!!!!!! V1 és per a V1 Vacuum i V2 és per a V2 Vacuum (Roborock S50) !!!!!!! Si heu fet un error FW: aneu a l'enllaç 4pda (primer en aquest pas) i llegiu com es recupera.
Arter Vacuum es reinicia: heu arrencat amb èxit el vostre aspirador i ara hi teniu accés mitjançant ssh.
SSH (amb Putty) amb el netejador. Canvieu la vostra contrasenya amb passwd
Pas 2: instal·leu i configureu els paquets necessaris sota l'arrel al buit
Premissa
En lloc dels webhooks, MiVacuum utilitza el protocol miio, igual que tots els dispositius XiaoMi IoT. Per tant, l’hem d’aprendre per entendre els webhooks. Necessitem un home intermedi que pugui agafar un webhook i traduir-lo al protocol miio al dispositiu. Hi ha una biblioteca Python (https://github.com/rytilahti/python-miio), però no la podem utilitzar al buit, ja que no hi ha prou espai per Python 3.5+ al Vacuum.
Però, per sort, hi ha una biblioteca php-miio (https://github.com/skysilver-lab/php-miio) que és comparativament molt lleugera i això és el que farem servir (per exemple, també s’utilitza a win-mirobo anterior). El que atrapa el webhook és el daemon webhook (https://github.com/adnanh/webhook) que executa l'script de php en el webhook entrant.
SSH al buit (amb Putty):
#Feu sota l'arrel. Sí, sé que no és segur..whatevs.sudo su #Aquí instal·lem totes les necessitats apt-get install -y wget php5-cli nano #Tota la resta anirà a / opt cd / opt
#Download php-miio
#Comproveu les novetats de github. Corregiu les línies següents segons el darrer 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 daemon
#Comproveu les novetats de github. Línia correcta a continuació segons l'últim 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
#Crear paràmetres per a un webhook
nano /opt/webhook/hooks.json #Input hooks.json content here. Feu clic amb el botó dret a la massilla. # Ctr + X Desa Y.
#Create script per trucar a php-miio
nano /opt/webhook/mirobo.sh #Input contingut mirobo.sh aquí. Feu clic amb el botó dret a la massilla. # Ctr + X Desa Y. # Feu executable chmod + x /opt/webhook/mirobo.sh
#Crear un script d’inici automàtic i renovar les configuracions
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 valors predeterminats de webhook.sh
# Reinicieu el sistema
reiniciar
Després de reiniciar, proveu la configuració al navegador:
192.168.your.ip: 9000 / hooks / mirobo? method = find_me
mètode - ordre
params: paràmetres
Tots els mètodes (ordres) i paràmetres que podeu trobar aquí:
github.com/marcelrv/XiaomiRobotVacuumProtocol
Contingut dels ganxos.json
Canvieu el vostre token-here per el vostre token de buit.
Corregiu la llista blanca d'IP per a la vostra xarxa local o elimineu-la completament si executeu els ganxos des d'altres llocs (no és segur).
[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/ opt / webhook", "response-message": "S'està executant script mirobo "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "your-token-here"}], "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 "}}}]
contingut del fitxer mirobo.sh. Simplement copieu-enganxeu. Només hi ha dues línies (no 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 ']}'
Pas 3: configureu els botons d'Amazon Dash
Obriu la vostra aplicació Amazon. Aneu a Dispositius Dash. Afegiu un nou botó de guió com de costum. A la promt per triar un producte NO. Tanqueu l'aplicació. Estàs acabat.
Pas 4: Configureu el router per capturar la sol·licitud del botó i controlar MiVacuum
Això funciona de la següent manera.
Quan es prem el botó, s’associa amb la vostra xarxa i demana al servidor dhcp que assigni una adreça it. Hem d’atendre aquesta sol·licitud i realitzar un webhook al buit. Com a mesura de seguretat addicional, bloquejarem la connexió a Amazon perquè Amazon no sàpiga que ni tan sols hem premut el botó i no tenim cap possibilitat d’actualitzar el firmware o alguna cosa més.
Sobretot faig servir WinBox, però algunes vegades el terminal és més fàcil.
#Crear una regla de caiguda de tallafoc amb la llista d'adreces per bloquejar
/ IP firewall filter add chain = forward src-address-list = blockdash action = drop comment = "Drop Amazon Dash"
A continuació, hem de crear una regla d’arrendament dhcp per a cada botó. Molt fàcil de fer a winbox.
Servidor DHCP: arrendaments
Si premem el botó apareixerà el nou contracte d'arrendament. Hi fem clic com a estàtic i establim la llista d’adreces a “blockdash”, establim el temps d’arrendament a 5 segons (de manera que l’arrendament caduca abans de la pròxima premsa) i copiem l’adreça mac per a més endavant.
#Aquesta ordre només serveix de referència si heu afegit un contracte d’arrendament a Winbox, simplement l’ometreu.
/ ip dhcp-server lease add address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s
Ara hem d’assenyalar un script d’arrendament.
Obriu la pestanya DHCP i afegiu "myLeaseScript" com a script d'arrendament al servidor dhcp.
Ara obriu Sistema - Scripts i afegiu "myLeaseScript" amb permisos de lectura i de prova.
Contingut de myLeaseScript:
#Script es diu dues vegades en lloguer (1) i en llançament (0): if ($ leaseBound = 1) do = {/ log info ("Execució de myLeaseScript. Algú ha premut el botó Dash?")
# Matriu de tots els vostres botons i URL per trucar
: botons locals {"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"; };
#Comproveu el botó premut i l'URL de l'acll
: foreach mac, url in = $ botons do = {: if ($ mac = $ leaseActMAC) do = {/ info de registre ("Pressionat". $ mac. "botó") / tool fetch keep-result = no mode = https http-method = publicació url = $ url}}}
Ara heu automatitzat la neteja amb una simple pulsació del botó Amazon Dash. Diverteix-te
Presteu atenció: no és molt segur enviar webhooks sense xifrar. Webhook pot utilitzar el xifratge, però, però, he intentat que funcionés, mai no va passar mai. Com que l’utilitzo només a la meva xarxa local, no em preocupa massa. Però si voleu utilitzar-lo per Internet per connectar-vos a IFTTT amb la integració de l'Assistent de Google, presteu atenció a aquest fet. No estic segur de quin va ser el motiu d'un error de criptografia en el meu cas. Certificats autofirmats amb els quals he superat emesos per letsencrypt. Xarxa massa complicada amb un munt de NAT que he superat amb ipv6. Però em sembla que els webhooks funcionen molt malament amb els certificats i, de fet, estan molt mal documentats. I sembla que IFTTT no funciona amb ipv6. Vaig provar tot el que vaig poder, però vaig fracassar. És possible que tingueu més sort. No oblideu fer una publicació.
upd: tinc una idea de com fer-lo més segur sense xifratge. Creeu uns quants scripts per a cada acció que vulgueu realitzar. Es modifica el mirobo.sh per trucar a l'script amb un paràmetre donat enviat al webhook, per exemple. habitació_neta. Això és. La majoria de les persones que exploti el ganxo és netejar el dormitori una i altra vegada …)) Un cop ho faci, actualitzaré el que és instructiu
Pas 5: Com dibuixar el vostre mapa
Un cop tingueu a punt el mapa complet a l'aplicació MiHome, envieu el buit a una ubicació específica mitjançant l'ordre 'app_goto'.
Feu una captura de pantalla del mapa complet amb la posició enviada i la base. El punt base després del reinici del buit és la posició [25500, 25500] AQUESTA NO ÉS LA POSICIÓ DE LA BASE DE CÀRREGA, però si reinicieu el buit a la base de càrrega, la posició de la base de càrrega serà de 25500, 25500. Per tant, des de la posició coneguda enviada i posició base, podeu dibuixar el vostre mapa en qualsevol programa CAD amb la captura de pantalla que hàgiu fet. He utilitzat QCAD gratuït.
Després d’ajustar la imatge a la graella, faig servir una línia a través de la sala per mesurar el punt inicial i final de la zona.
Recomanat:
Tutorial Arduino: botó amb estil BLYNK i mòdul de relé ESP-01: 3 passos (amb imatges)
Tutorial Arduino - BLYNK Styled Button i ESP-01 Relay Module: Benvingut a un altre tutorial del nostre canal, aquest és el primer tutorial d'aquesta temporada dedicat als sistemes IoT, aquí descriurem algunes de les característiques i funcionalitats dels dispositius utilitzat en aquest tipus de sistemes. Per crear aquests s
Timbre silenciós del botó Dash d'Amazon: 10 passos (amb imatges)
Timbre silenciós del botó Dash d'Amazon: mirant constantment per la finestra perquè pugueu interceptar els visitants abans que toquin el timbre? Cansat que els gossos i el bebè es tornin bojos sempre que soni? No vull gastar una fortuna en un " intel·ligent " solució? Fer un timbre silenciós és tan
Aplicació d'un botó extensible amb comentaris de vibracions: 7 passos (amb imatges)
Aplicació d’un botó extensible amb comentaris de vibració: en aquest tutorial, primer us mostrarem com utilitzar un Arduino Uno per controlar un motor de vibració mitjançant un botó ampliat. La majoria dels tutorials sobre botons automàtics impliquen el botó de la taula de proves física, mentre que en aquest tutorial, el botó ha estat
Teclat MIDI amb botó Arcade: 7 passos (amb imatges)
Teclat MIDI de botó Arcade: és la versió 2.0 d'una de les meves primeres incursions en programació MIDI Arduino i DIY. He desenvolupat les meves habilitats en prototipatge i disseny, de manera que vaig pensar que seria una bona demostració del procés i la progressió. Amb un procés de disseny més informat, jo
Caixa de transmissió de ràdio amb un botó: 7 passos (amb imatges)
Caixa de transmissió de ràdio amb un botó: he construït una caixa per al bar del meu amic que té un Raspberry Pi a l'interior i amb només prémer un botó emet àudio a un lloc web mitjançant Darkice i Icecast, alhora que il·lumino un rètol "En directe". Vaig pensar que això ja era una cosa que la gent ja sabia