Tabla de contenido:

Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero: 5 pasos (con imágenes)
Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero: 5 pasos (con imágenes)

Video: Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero: 5 pasos (con imágenes)

Video: Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero: 5 pasos (con imágenes)
Video: ASÍ FUNCIONA el robot aspirador de Xiaomi | Mi Robot Vacuum | El test 2024, Noviembre
Anonim
Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero
Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero

Esta instrucción le explicará cómo usar sus botones Amazon Dash de repuesto para controlar el vacío XiaoMi.

Tengo un montón de Amazon Buttons por ahí de los tiempos en que costaban $ 1 y no los usaba. Pero al recibir un nuevo Robot Aspirador, decidí que sería muy conveniente utilizar estos botones como control de la aspiradora.

Presione el botón Ziploc y aspirará el dormitorio.

Presione el botón Glad y aspirará la sala de estar.

Presiona Fiji … bueno, tienes la idea.

En este proyecto se han incorporado muchos trucos de Internet. Realmente aprecio el trabajo que tanta gente ha hecho y creo que tengo que compartir mi pequeño artilugio basado en su investigación.

Descargo de responsabilidad: ¡Todos los pasos a continuación lo hacen bajo su propio riesgo! Si sigue los pasos con cuidado, hay muy pocas posibilidades de que pueda dañar algo. ¡Pero mierda pasa! Y no me hago responsable de eso. Por cierto, todos los pasos se pueden revertir, por lo que potencialmente no hay violación de la garantía. Pero, por supuesto, ¡YMMV

El principio básico es que presionamos el botón del tablero en el enrutador y enviamos un webhook a Vacuum en lugar de comprar cosas en Amazon.

Que necesitarás:

  • Enrutador con firmware personalizado que puede controlar DHCP, ejecutar scripts y cumplir con las consultas get | post. Mikrotik, DD-WRT, OpenWRT, tomate, etc.
  • Aspiradora XiaoMi. v1 o v2
  • Botones de Amazon Dash

Específicamente lo que usé:

  • Mikrotik
  • Aspiradora XiaoMi v2 Roborock S50
  • Montón de botones de Amazon Dash

Aqui esta el procedimiento

  1. Rootamos el vacío
  2. Instale y configure los paquetes necesarios en root en el vacío
  3. Configurar el botón Amazon Dash
  4. Configure el enrutador para capturar la solicitud de botón y controlar el vacío

NB: De hecho, no es necesario que arrastre su aspiradora para controlarla. Si tiene algún otro servidor en su lan (o donde sea) que pueda ejecutar python o php, puede dirigir los webhooks hacia ellos. Pero no lo hago. Y quería mantenerlo ordenado y compacto en la propia aspiradora. Entonces, si no le gusta mi enfoque, supongo que puede descubrir cómo configurar su propio servidor intermediario a partir de esta lectura. Vaya directamente al punto 2.

Está bien, aquí vamos…

Paso 1: Obtenga el Token y Root Vacuum

Obtén el Token and Root Vacuum
Obtén el Token and Root Vacuum
Obtén el Token y Root Vacuum
Obtén el Token y Root Vacuum
Obtén el Token y Root Vacuum
Obtén el Token y Root Vacuum
Obtén el Token y Root Vacuum
Obtén el Token y Root Vacuum

Todo el software, fimware e instrucciones para el enraizamiento se obtuvieron de: https://4pda.ru/forum/index.php? Showtopic = 881982

Si tiene un sistema operativo que no sea Windows y un teléfono que no sea Android (puede usar virtual con nox), siga el enlace anterior (use Google Translate) y lea las instrucciones; de lo contrario, siga el manual aquí.

Para rootear necesitamos obtener la dirección IP y el token de tu aspiradora.

Desempaquete root.7z.

Instale Mihome de Vevs en su Android. Puede utilizar uno del Archivo o, si esta instrucción está fechada, puede obtener la última versión en su sitio web (https://www.kapiba.ru/2017/11/mi-home.html) o en su Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Inicie sesión en MiHome. Debe configurar China continental en su cuenta y agregarle Vacío).

Toque el icono de Vacío Configuración (tres puntos en la parte superior derecha) Configuración general Información de red

Ingrese la dirección IP y el token en win-mirobo / win-mirobo.ini

Desactive el cortafuegos en Windows. Inicie win-mirobo.bat y actualice el firmware.

!!!!!!!!! ¡V1 es para v1 Vacuum y V2 es para v2 Vacuum (Roborock S50)!

Arter Vacuum se reinicia: ¡ha rooteado con éxito su aspiradora y ahora tiene acceso a ella a través de ssh!

SSH (con masilla) con el limpiador / limpiador. Cambie su contraseña con passwd

Paso 2: Instale y configure los paquetes necesarios en Root on Vacuum

Premisa

En lugar de webhooks, MiVacuum utiliza el protocolo miio, al igual que todos los dispositivos XiaoMi IoT. Así que tenemos que aprenderlo para comprender los webhooks. Necesitamos un intermediario que pueda capturar webhook y traducirlo al protocolo miio en el dispositivo. Hay una biblioteca de Python (https://github.com/rytilahti/python-miio) pero no podemos usarla en la aspiradora ya que no hay suficiente espacio para Python 3.5+ en la aspiradora.

Pero afortunadamente hay una biblioteca php-miio (https://github.com/skysilver-lab/php-miio) que es comparativamente muy liviana y esto es lo que usaremos (por cierto, también se usa en win-mirobo arriba). El que atrapa el webhook es el demonio webhook (https://github.com/adnanh/webhook) que ejecuta el script para php en el webhook entrante.

SSH a su aspiradora (con Putty):

#Hacer bajo root. Sí, sé que no es seguro..whatevs.sudo su #Aquí instalamos todas las necesidades apt-get install -y wget php5-cli nano #Todo lo demás va a / opt cd / opt

#Descargar php-miio

#Consulte lo último en github. Corrija las líneas a continuación de acuerdo con el último 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

#Descargar el demonio de webhooks

#Consulte lo último en github. Corrija la línea a continuación de acuerdo con el último 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 configuraciones para webhook

nano /opt/webhook/hooks.json #Introduzca el contenido de hooks.json aquí. Haga clic derecho en masilla. # Ctr + X Guardar Y.

#Crear script para llamar a php-miio

nano /opt/webhook/mirobo.sh #Introduzca el contenido de mirobo.sh aquí. Haga clic derecho en masilla. # Ctr + X Guardar Y. # Hacer ejecutable chmod + x /opt/webhook/mirobo.sh

#Crear un script de inicio automático y renovar las configuraciones

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 valores predeterminados de webhook.sh

# Reiniciar el sistema

reiniciar

Después de reiniciar, pruebe su configuración en el navegador:

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

método - comando

params - parámetros

Todos los métodos (comandos) y parámetros que puede encontrar aquí:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Contenido de hooks.json

Cambie su token aquí por su token de vacío.

Corrija la lista blanca de ip para su red local o elimínela por completo si ejecuta sus ganchos desde otro lugar (inseguro).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/ opt / webhook", "response-message": "Ejecutando script mirobo "," incluir-comando-salida-en-respuesta ": falso," pasar-entorno-a-comando ": [{" fuente ":" cadena "," envname ":" token "," nombre ": "su-token-aquí"}], "pasar-argumentos-al-comando": [{"fuente": "url", "nombre": "método"}, {"fuente": "url", "nombre ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

contenido del archivo mirobo.sh. Simplemente copie y pegue. Solo hay dos líneas (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 ', "método": "' $ 1 '", "params": [' $ 2 ']}'

Paso 3: configurar los botones de Amazon Dash

Abra su aplicación de Amazon. Vaya a Dispositivos de tablero. Agregue un nuevo botón de guión como de costumbre. En el mensaje para elegir un producto NO. Cierra la aplicación. Estás listo.

Paso 4: Configure el enrutador para capturar la solicitud de botón y controlar MiVacuum

Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum
Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum
Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum
Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum
Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum
Configurar el enrutador para capturar la solicitud de botón y controlar MiVacuum

Esto funciona de la siguiente manera.

Cuando se presiona el botón, se está asociando con su red y le pide al servidor DHCP que asigne una dirección de TI. Tenemos que captar esa solicitud y realizar un webhook al vacío. Como medida de seguridad adicional, bloquearemos la conexión a Amazon para que Amazon no sepa que incluso presionamos el botón y no tiene la capacidad de presionar la actualización del firmware u otra cosa.

Principalmente uso WinBox, pero algunas veces el terminal es más fácil.

#Crear una regla para soltar el cortafuegos con una lista de direcciones para bloquear

/ filtro de firewall ip agregar cadena = reenviar src-address-list = blockdash action = soltar comentario = "Soltar Amazon Dash"

Luego tenemos que crear una regla de arrendamiento dhcp para cada botón. Muy fácil de hacer en winbox.

Servidor DHCP - Arrendamientos

Al presionar el botón aparece el nuevo contrato de arrendamiento. Hacemos clic en él como estático y configuramos la lista de direcciones en 'blockdash', configuramos el tiempo de arrendamiento en 5 segundos (para que el arrendamiento expire antes de la siguiente pulsación) y copiamos la dirección mac para más tarde.

# Este comando es solo para referencia si agregó arrendamiento en winbox, simplemente omítelo.

/ ip dhcp-server lease agregar lista de direcciones = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s

Ahora tenemos que apuntar al script de arrendamiento.

Abra la pestaña DHCP y agregue 'myLeaseScript' como un script de arrendamiento en su servidor DHCP.

Ahora abra System - Scripts y agregue 'myLeaseScript' con permisos de lectura y prueba.

Contenido de myLeaseScript:

#Script se llama dos veces en el arrendamiento (1) y en el lanzamiento (0): if ($ leaseBound = 1) do = {/ log info ("Ejecutando myLeaseScript. ¿Alguien presionó el botón Dash?")

# Matriz de todos tus botones y URL para llamar

: botones locales {"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"; };

#Compruebe el botón presionado y acll url

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

Ahora ha automatizado su limpieza con solo presionar el botón Amazon Dash. ¡Divertirse

Preste atención: no es seguro enviar webhooks sin cifrar. Webhook puede usar cifrado, pero sin embargo, intenté que funcionara, pero nunca sucedió. Dado que lo uso solo en mi red local, no estoy demasiado preocupado. Pero si desea usarlo a través de Internet para conectarse a IFTTT con la integración del Asistente de Google, ¡preste atención a este hecho! No estoy seguro de cuál fue el motivo de una falla de cifrado en mi caso. Certificados autofirmados que superé emitidos por letsencrypt. Red demasiado complicada con un montón de NAT que superé con ipv6. Pero me parece que los webhooks funcionan muy mal con certificados y, de hecho, están muy mal documentados. Y parece que IFTTT no funciona con ipv6. Intenté todo lo que pude, pero fallé. Quizás tengas mejor suerte. No olvides hacer una publicación.

upd: Tengo una idea de cómo hacerlo más seguro sin cifrado. Cree algunos scripts para cada acción que desee realizar. Modifica mirobo.sh para llamar al script con un parámetro dado enviado en webhook, por ejemplo. clean_bedroom. Eso es todo. La mayoría de las personas que explotan el gancho es limpiar su habitación una y otra vez…)) Una vez que lo haga, actualizaré el instructable

Paso 5: Cómo trazar su mapa

Cómo trazar su mapa
Cómo trazar su mapa

Una vez que tenga su mapa completo listo en su aplicación MiHome, envíe su aspiradora a una ubicación específica a través del comando 'app_goto'.

Haga una captura de pantalla del mapa completo con la posición enviada y la base. El punto base después del reinicio de la aspiradora es la posición [25500, 25500] ESTA NO ES LA POSICIÓN DE LA BASE DE CARGA, pero si reinicia la aspiradora en la base de carga, la posición de la base de carga será 25500, 25500. Entonces, desde la posición conocida enviada y la posición base, puede trazar su mapa en cualquier programa CAD con la captura de pantalla que ha tomado. Usé QCAD gratuito.

Después de ajustar la imagen a la cuadrícula, utilizo una línea a lo largo de la habitación para medir el punto de inicio y finalización de la zona.

Recomendado: