Table des matières:

Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord : 5 étapes (avec photos)
Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord : 5 étapes (avec photos)

Vidéo: Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord : 5 étapes (avec photos)

Vidéo: Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord : 5 étapes (avec photos)
Vidéo: Le Plus Grand Point Noir Du Monde ?😱 2024, Novembre
Anonim
Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord
Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord

Cette instruction vous expliquera comment utiliser vos boutons Amazon Dash de rechange pour contrôler XiaoMi Vacuum.

J'ai eu un tas de boutons Amazon qui traînaient depuis l'époque où ils coûtaient 1 $ et je ne les ai pas utilisés. Mais lors de la réception d'un nouveau robot aspirateur, j'ai décidé qu'il serait très pratique d'utiliser ces boutons comme contrôle de l'aspirateur.

Appuyez sur le bouton Ziploc et il passera l'aspirateur dans la chambre.

Appuyez sur le bouton Glad et il passera l'aspirateur dans le salon.

Appuyez sur Fidji… eh bien, vous avez l'idée.

Dans ce projet, de nombreux hacks d'Internet sont incorporés. J'apprécie vraiment le travail que tant de gens ont fait et je pense que je dois partager mon petit engin basé sur leurs recherches.

Avis de non-responsabilité: toutes les étapes ci-dessous sont à vos risques et périls ! Si vous suivez attentivement les étapes, il y a très peu de chances que vous endommagez quelque chose. Mais ça n'arrive pas ! Et je n'en assume aucune responsabilité. BTW, toutes les étapes peuvent être inversées, il n'y a donc potentiellement aucune violation de la garantie. Mais bien sûr - YMMV

Le principe de base est que nous attrapons la pression sur le bouton du tableau de bord sur le routeur et envoyons le webhook à Vacuum au lieu d'acheter des trucs sur Amazon.

Ce dont vous aurez besoin:

  • Routeur avec micrologiciel personnalisé qui peut contrôler DHCP, exécuter des scripts et répondre aux requêtes get|post. Mikrotik, DD-WRT, OpenWRT, Tomate etc.
  • Aspirateur XiaoMi. v1 ou v2
  • Boutons Amazon Dash

Concrètement ce que j'ai utilisé:

  • Mikrotik
  • Aspirateur XiaoMi v2 Roborock S50
  • Bouquet de boutons Amazon Dash

Voici la procédure

  1. Nous enracinons le vide
  2. Installer et configurer les packages nécessaires sous root sur vacuum
  3. Configurer le bouton Amazon Dash
  4. Configurer le routeur pour attraper la demande de bouton et contrôler le vide

NB: En fait vous n'avez pas besoin de rooter votre aspirateur pour le contrôler. Si vous avez un autre serveur sur votre réseau local (ou ailleurs) qui peut exécuter python ou php, vous pouvez leur diriger des webhooks. Mais je ne le fais pas. Et je voulais le garder bien rangé et compact sur l'aspirateur lui-même. Donc, si vous n'aimez pas mon approche, je suppose que vous pouvez comprendre comment configurer votre propre serveur intermédiaire à partir de cette lecture. Allez directement au point 2.

OK allons y…

Étape 1: Obtenir le jeton et l'aspirateur racine

Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine
Obtenir le jeton et l'aspirateur racine

Tous les logiciels, fimwares et instructions pour l'enracinement ont été obtenus à partir de:

Si vous avez un système d'exploitation autre que Windows et un téléphone autre qu'Android (vous pouvez utiliser virtual avec nox), veuillez suivre le lien ci-dessus (utilisez Google Translate) et lisez les instructions, sinon suivez le manuel ici.

Pour rooter, nous devons obtenir l'adresse IP et le jeton de votre aspirateur.

Décompressez root.7z.

Veuillez installer Mihome de Vevs sur votre Android. Vous pouvez en utiliser un des archives ou si cette instruction est datée, la dernière version peut être obtenue sur son site Web (https://www.kapiba.ru/2017/11/mi-home.html) ou son Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Connectez-vous à votre MiHome. Vous devez définir la Chine continentale sur votre compte et y ajouter le vide).

Appuyez sur l'icône du vide Paramètres (trois points en haut à droite) Paramètres généraux Informations sur le réseau

Remplissez l'adresse IP et le jeton dans win-mirobo/win-mirobo.ini

Désactiver le pare-feu dans Windows. Lancez win-mirobo.bat et flashez le firmware.

!!!!!!!!! V1 est pour le vide v1 et V2 est pour le vide v2 (Roborock S50) !!!!!!!

Arter Vacuum redémarre - vous avez réussi à rooter votre aspirateur et vous y avez maintenant accès via ssh !

SSH (avec Putty) avec le nettoyeur/nettoyant. Changez votre mot de passe avec passwd

Étape 2: Installez et configurez les packages nécessaires sous la racine sous vide

Prémisse

Au lieu de webhooks, MiVacuum utilise le protocole miio, comme tous les appareils XiaoMi IoT. Nous devons donc l'apprendre pour comprendre les webhooks. Nous avons besoin d'un intermédiaire capable d'attraper le webhook et de le traduire en protocole miio sur l'appareil. Il existe une bibliothèque python (https://github.com/rytilahti/python-miio) mais nous ne pouvons pas l'utiliser sur le vide car il n'y a pas assez d'espace pour Python 3.5+ sur le vide.

Mais heureusement, il existe une bibliothèque php-miio (https://github.com/skysilver-lab/php-miio) qui est comparativement très légère et c'est ce que nous utiliserons (d'ailleurs, elle est également utilisée dans win-mirobo ci-dessus). Celui qui attrape le webhook est le démon webhook (https://github.com/adnanh/webhook) qui exécute le script pour php sur le webhook entrant.

SSH à votre aspirateur (avec Putty):

#Faire sous root. Ouais, je sais que ce n'est pas sûr..whatevs.sudo su #Ici, nous installons toutes les nécessités apt-get install -y wget php5-cli nano #Tout le reste va /opt cd /opt

#Télécharger php-miio

#Vérifiez les dernières nouvelles sur github. Corrigez les lignes ci-dessous selon le dernier 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

#Télécharger le démon webhooks

#Vérifiez les dernières nouvelles sur github. Corrigez la ligne ci-dessous selon le dernier 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

#Créer des paramètres pour le webhook

nano /opt/webhook/hooks.json #Input hooks.json content here. Faites un clic droit dans le mastic. #Ctr+X Enregistrer Y.

#Créer un script pour appeler php-miio

nano /opt/webhook/mirobo.sh #Entrez le contenu mirobo.sh ici. Faites un clic droit dans le mastic. #Ctr+X Enregistrer Y. # Créer un exécutable chmod +x /opt/webhook/mirobo.sh

#Créer un script de démarrage automatique et renouveler les configurations

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 webhook.sh par défaut

#Redémarrez le système

redémarrer

Après le redémarrage, testez vos paramètres dans le navigateur:

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

méthode - commande

params - paramètres

Toutes les méthodes (commandes) et paramètres que vous pouvez trouver ici:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Contenu du fichier hooks.json

Remplacez votre jeton ici par votre jeton de vide.

Corrigez la liste blanche d'ip pour votre réseau local ou supprimez-la complètement si vous exécutez vos hooks d'ailleurs (dangereux).

[{ "id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Exécution 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" } } }]

contenu du fichier mirobo.sh. Il suffit de copier-coller. Il n'y a que deux lignes (pas 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']}'

Étape 3: Configurer les boutons Amazon Dash

Ouvrez votre application Amazon. Accédez à Périphériques de tableau de bord. Ajoutez un nouveau bouton de tiret comme d'habitude. Sur le promt de choisir un produit NE PAS. Fermez l'application. Vous avez terminé.

Étape 4: Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum

Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum

Cela fonctionne comme suit.

Lorsque le bouton est enfoncé, il s'associe à votre réseau et demande au serveur DHCP d'attribuer une adresse informatique. Nous devons attraper cette demande et effectuer un webhook sur un vide. Comme mesure de sécurité supplémentaire, nous bloquerons la connexion à Amazon afin qu'Amazon ne sache pas que nous avons même appuyé sur le bouton et n'a pas la possibilité de pousser la mise à jour du micrologiciel ou autre chose.

J'utilise principalement WinBox, mais parfois, le terminal est simplement plus facile.

#Créer une règle de suppression de pare-feu avec une liste d'adresses à bloquer

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

Ensuite, nous devons créer une règle de bail DHCP pour chaque bouton. Très facile à faire dans winbox.

Serveur DHCP - Baux

Ceux que nous appuyons sur le bouton le nouveau bail apparaît. Nous cliquons dessus comme statique et définissons la liste d'adresses sur « blockdash », définissons la durée du bail à 5 secondes (de sorte que le bail expire avant la prochaine pression) et copions l'adresse mac pour plus tard.

#Cette commande est juste pour référence si vous avez ajouté un bail dans winbox, ignorez-la.

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

Maintenant, nous devons pointer vers le script de location.

Ouvrez l'onglet DHCP et ajoutez 'myLeaseScript' en tant que script de location sur votre serveur DHCP.

Maintenant, ouvrez System - Scripts et ajoutez 'myLeaseScript' avec des autorisations de lecture et de test.

Contenu de myLeaseScript:

#Script est appelé deux fois sur le bail (1) et sur la version (0):if ($leaseBound=1) do={ /log info ("En cours d'exécution de myLeaseScript. Quelqu'un a appuyé sur le bouton Dash ?")

#Tableau de tous vos boutons et URL d'appel

:boutons locaux { "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"; };

#Vérifiez le bouton appuyé et l'URL acll

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

Vous avez maintenant automatisé votre nettoyage en appuyant sur le bouton Amazon Dash. S'amuser

Veuillez faire attention: il est très dangereux d'envoyer des webhooks non cryptés. Webhook peut utiliser le cryptage, mais j'ai essayé de le faire fonctionner, cela ne s'est jamais produit. Depuis que je l'utilise uniquement dans mon réseau local, je ne suis pas trop concerné. Mais si vous souhaitez l'utiliser sur Internet pour vous connecter à IFTTT avec l'intégration de Google Assistant, faites attention à ce fait ! Je ne sais pas quelle était la raison d'un échec de crypto dans mon cas. Certificats auto-signés avec lesquels j'ai battu, émis parletsencrypt. Réseau trop compliqué avec un tas de NAT que j'ai battu avec ipv6. Mais il me semble que les webhooks fonctionnent très mal avec les certificats et en fait très mal documentés. Et on dirait qu'IFTTT ne fonctionne pas avec ipv6. J'ai essayé tout ce que j'ai pu, mais j'ai échoué. Vous aurez peut-être plus de chance. N'oubliez pas de faire un post.

upd: j'ai une idée de comment le rendre plus sécurisé sans cryptage. Vous créez quelques scripts pour chaque action que vous souhaitez effectuer. Vous modifiez le mirobo.sh pour appeler le script avec pour paramètre donné envoyé dans le webhook, par exemple. chambre_propre. C'est ça. La plupart des personnes qui exploitent le crochet feront est de nettoyer votre chambre encore et encore…)) Une fois que je le ferai, je mettrai à jour l'instructable

Étape 5: Comment tracer votre carte

Comment tracer votre carte
Comment tracer votre carte

Une fois que votre carte complète est prête dans votre application MiHome, envoyez votre aspirateur à un emplacement spécifique via la commande « app_goto ».

Faites une capture d'écran de la carte complète avec la position envoyée et la base. Le point de base après le redémarrage de l'aspirateur est la position [25500, 25500] CE N'EST PAS LA POSITION DE LA BASE DE CHARGE, mais si vous redémarrez l'aspirateur à la base de charge, la position de la base de charge sera 25500, 25500. Donc à partir de la position connue envoyée et la position de base, vous pouvez tracer votre carte sur n'importe quel programme de CAO avec la capture d'écran que vous avez prise. J'ai utilisé QCAD gratuit.

Après avoir ajusté l'image à la grille, j'utilise une ligne à travers la pièce pour mesurer le point de départ et d'arrivée de la zone.

Conseillé: