Table des matières:
- Étape 1: Obtenir le jeton et l'aspirateur racine
- Étape 2: Installez et configurez les packages nécessaires sous la racine sous vide
- Étape 3: Configurer les boutons Amazon Dash
- Étape 4: Configurer le routeur pour attraper la demande de bouton et contrôler MiVacuum
- Étape 5: Comment tracer votre carte
Vidéo: Aspirateur XiaoMi + bouton Amazon = nettoyage du tableau de bord : 5 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
- Nous enracinons le vide
- Installer et configurer les packages nécessaires sous root sur vacuum
- Configurer le bouton Amazon Dash
- 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
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
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
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é:
Sonnette silencieuse à bouton Amazon Dash : 10 étapes (avec photos)
Sonnette silencieuse à bouton Amazon Dash : vous regardez constamment par la fenêtre pour pouvoir intercepter les visiteurs avant qu'ils ne sonnent à la porte ? Fatigué des chiens et du bébé qui deviennent fous à chaque fois qu'il sonne ? Vous ne voulez pas dépenser une fortune pour un "intelligent" solution ? Faire une sonnette silencieuse est aussi
Petit bouton de tableau de bord ESP8266 (reconfigurable): 15 étapes
Minuscule bouton de tableau de bord ESP8266 (reconfigurable) : il s'agit d'un petit bouton de tableau de bord basé sur ESP8266. Il reste en veille prolongée, une fois que vous appuyez sur le bouton, il effectue une requête GET vers l'URL spécifiée et, s'il est configuré, transmet également la tension d'alimentation en tant que variable. La meilleure partie est qu'en reliant simplement deux p
Une application d'un bouton extensible avec retour de vibration : 7 étapes (avec photos)
Une application d'un bouton extensible avec retour de vibration : Dans ce tutoriel, nous allons d'abord vous montrer comment utiliser un Arduino Uno pour contrôler un moteur de vibration via un bouton étendu. La plupart des didacticiels sur les boutons-poussoirs impliquent le bouton de la maquette physique, alors que dans ce didacticiel, le bouton a été
Microcontrôleur AVR. Basculez les LED à l'aide d'un interrupteur à bouton-poussoir. Anti-rebond de bouton poussoir. : 4 étapes
Microcontrôleur AVR. Basculez les LED à l'aide d'un interrupteur à bouton-poussoir. Anti-rebond de bouton-poussoir. : Dans cette section, nous allons apprendre comment créer un code C de programme pour ATMega328PU pour basculer l'état des trois LED en fonction de l'entrée d'un interrupteur à bouton. En outre, nous avons exploré une solution au problème de « Switch Bounce ». Comme d'habitude, nous allons
Télécommande : ESP8266 avec pile bouton : 5 étapes (avec photos)
Télécommande : ESP8266 avec pile bouton : Le gros problème de l'utilisation des ESP est la consommation d'énergie lorsque le Wifi "monte", environ 100-200mA, avec un pic jusqu'à 300mA. Les piles boutons normales délivrent quelques mA, avec une pointe jusqu'à 20-40 mA. Mais pour les ESP, la tension s'effondrera. Nous avons besoin de "un peu d'aide