Tabla de contenido:
- Paso 1: Obtenga el Token y Root Vacuum
- Paso 2: Instale y configure los paquetes necesarios en Root on Vacuum
- Paso 3: configurar los botones de Amazon Dash
- Paso 4: Configure el enrutador para capturar la solicitud de botón y controlar MiVacuum
- Paso 5: Cómo trazar su mapa
Video: Aspiradora XiaoMi + Botón Amazon = Limpieza del tablero: 5 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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
- Rootamos el vacío
- Instale y configure los paquetes necesarios en root en el vacío
- Configurar el botón Amazon Dash
- 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
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
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
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:
Hackear un botón de puerta de la línea Jubilee del metro de Londres: 12 pasos (con imágenes)
Hackear un botón de puerta de la línea Jubilee del metro de Londres: la tienda del London Transport Museum vende botones de puerta fuera de servicio de la línea Jubilee (tanto la izquierda como la derecha están disponibles). Si estás pensando en llevar a cabo un proyecto que necesita un botón y una luz indicadora de algún tipo, estarías
Pequeño botón de tablero ESP8266 (reconfigurable): 15 pasos
Pequeño botón de tablero ESP8266 (reconfigurable): este es un pequeño botón de tablero basado en ESP8266. Permanece en sueño profundo, una vez que presiona el botón, realiza una solicitud GET a la URL especificada y, si está configurada, también pasa la tensión de alimentación como variable. La mejor parte es que simplemente uniendo dos p
Botón de seguridad inalámbrico para la seguridad del PLC: 6 pasos (con imágenes)
Botón de seguridad inalámbrico para seguridad de PLC: este proyecto es mi prueba de concepto para usar IoT y (eventualmente) robótica para crear una capa adicional de seguridad para instalaciones de fabricación peligrosas. Este botón se puede utilizar para iniciar o detener múltiples procesos, incluido el control de la señal
INSTALACIÓN DE REEMPLAZO DEL BOTÓN TRASERO DEL BOTÓN TRASERO DEL CERRADURA DEL PORTÓN TRASERO DE RENAULT SCENIC / MEGANE: 3 Pasos
INSTALACIÓN DE REEMPLAZO DEL BOTÓN TRASERO DEL BOTÓN DE LA PUERTA TRASERA DE RENAULT SCENIC / MEGANE: La junta tórica de mala calidad que mantiene el botón del maletero en su lugar se desgasta y se pierde el botón del maletero del vehículo. La única solución de Renaults para esto es un mecanismo de bloqueo de arranque de reemplazo completo que solo fallará nuevamente y costará
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: 4 pasos
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: En esta sección, aprenderemos cómo hacer el código C del programa para ATMega328PU para alternar el estado de los tres LED de acuerdo con la entrada de un interruptor de botón. Además, hemos explorado una solución al problema de "Switch Bounce". Como de costumbre, nosotros