Inhaltsverzeichnis:

XiaoMi-Vakuum + Amazon-Taste = Dash-Reinigung - Gunook
XiaoMi-Vakuum + Amazon-Taste = Dash-Reinigung - Gunook

Video: XiaoMi-Vakuum + Amazon-Taste = Dash-Reinigung - Gunook

Video: XiaoMi-Vakuum + Amazon-Taste = Dash-Reinigung - Gunook
Video: Xiaomi Shunzao Z1-PRO Беспроводной ручной пылесос - Переносной пылесос Xiaomi - Распаковка 2024, November
Anonim
XiaoMi Staubsauger + Amazon-Taste = Armaturenbrettreinigung
XiaoMi Staubsauger + Amazon-Taste = Armaturenbrettreinigung

In dieser Anleitung wird erklärt, wie Sie Ihre zusätzlichen Amazon Dash-Tasten zur Steuerung des XiaoMi-Vakuums verwenden.

Ich habe eine Menge Amazon-Buttons herumliegen, als sie 1 Dollar kosteten, und ich konnte sie nicht benutzen. Aber als ich einen neuen Saugroboter erhielt, entschied ich, dass es sehr praktisch wäre, diese Tasten als Steuerung des Staubsaugers zu verwenden.

Drücken Sie die Ziploc-Taste und es wird das Schlafzimmer saugen.

Drücken Sie die Glad-Taste und es wird das Wohnzimmer saugen.

Drücken Sie Fidschi… nun, Sie haben die Idee.

In dieses Projekt sind viele Hacks aus dem Internet eingearbeitet. Ich schätze die Arbeit, die so viele Leute geleistet haben, sehr und denke, dass ich meine kleine Erfindung basierend auf ihren Recherchen teilen muss.

Haftungsausschluss: Alle Schritte unten tun Sie auf eigene Gefahr! Wenn Sie die Schritte sorgfältig befolgen, besteht eine sehr geringe Wahrscheinlichkeit, dass Sie etwas beschädigen. Aber Scheiße passiert! Und ich übernehme keine Verantwortung dafür. Übrigens können alle Schritte rückgängig gemacht werden, sodass möglicherweise keine Garantieverletzung vorliegt. Aber natürlich - YMMV

Das Grundprinzip ist, dass wir das Drücken der Dash-Taste am Router abfangen und Webhook an Vacuum senden, anstatt Dinge von Amazon zu kaufen.

Was wirst du brauchen:

  • Router mit benutzerdefinierter Firmware, die DHCP steuern, Skripte ausführen und get|post-Abfragen erfüllen kann. Mikrotik, DD-WRT, OpenWRT, Tomate usw..
  • XiaoMi Vakuum. v1 oder v2
  • Amazon Dash-Buttons

Was ich konkret verwendet habe:

  • Mikrotik
  • XiaoMi v2 Staubsauger Roborock S50
  • Eine Reihe von Amazon Dash-Buttons

Hier ist die Vorgehensweise

  1. Wir wurzeln Vakuum
  2. Installieren und konfigurieren Sie die erforderlichen Pakete unter Root auf Vakuum
  3. Amazon Dash-Taste einrichten
  4. Router einrichten, um Tastenanfragen zu erfassen und Vakuum zu steuern

Hinweis: Tatsächlich müssen Sie Ihr Vakuum nicht rooten, um es zu kontrollieren. Wenn Sie einen anderen Server in Ihrem LAN (oder wo auch immer) haben, der Python oder PHP ausführen kann, können Sie Webhooks dorthin leiten. Aber ich nicht. Und ich wollte es auf dem Staubsauger selbst aufgeräumt und kompakt halten. Wenn Ihnen mein Ansatz nicht gefällt, nehme ich an, dass Sie anhand dieser Lektüre herausfinden können, wie Sie Ihren eigenen Mittelsmann-Server einrichten. Gehen Sie einfach direkt zu Punkt 2.

Ok, los geht's…

Schritt 1: Besorgen Sie sich das Token und das Root-Vakuum

Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum
Besorgen Sie sich das Token und das Root-Vakuum

Alle Software, Fimware und Anleitungen zum Rooten wurden bezogen von:

Wenn Sie ein anderes Betriebssystem als Windows und ein anderes Telefon als Android haben (Sie können virtuell mit nox verwenden), folgen Sie bitte dem obigen Link (verwenden Sie Google Translate) und lesen Sie die Anweisungen, ansonsten folgen Sie dem Handbuch hier.

Um zu rooten, müssen wir die IP-Adresse und den Token von Ihrem Vakuum erhalten.

Entpacken Sie root.7z.

Bitte installieren Sie Mihome von Vevs auf Ihrem Android. Sie können eine aus dem Archiv verwenden oder wenn diese Anleitung veraltet ist, kann die neueste Version von seiner Website (https://www.kapiba.ru/2017/11/mi-home.html) oder seinem Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Melden Sie sich bei Ihrem MiHome an. Sie müssen China Mainland in Ihrem Konto einstellen und Vakuum hinzufügen).

Tippen Sie auf das Vakuumsymbol Einstellungen (drei Punkte oben rechts) Allgemeine Einstellungen Netzwerkinfo

Geben Sie die IP-Adresse und das Token in win-mirobo/win-mirobo.ini. ein

Firewall unter Windows deaktivieren. Starten Sie win-mirobo.bat und flashen Sie die Firmware.

!!!!!!!!! V1 ist für v1 Vacuum und V2 ist für v2 Vacuum (Roborock S50)!!!!!!!Wenn Sie die falsche FW geflasht haben - gehen Sie zum 4pda-Link (zuerst in diesem Schritt) und lesen Sie, wie Sie sich wiederherstellen können.

Arter Vacuum startet neu - Sie haben Ihr Vakuum erfolgreich gerootet und haben jetzt über ssh Zugriff darauf!

SSH dazu (mit Putty) mit dem Reiniger/Reiniger. Ändern Sie Ihr Passwort mit passwd

Schritt 2: Installieren und konfigurieren Sie die erforderlichen Pakete unter Root auf Vakuum

Prämisse

Anstelle von Webhooks verwendet MiVacuum wie alle XiaoMi IoT-Geräte das Miio-Protokoll. Wir müssen es also lernen, um Webhooks zu verstehen. Wir brauchen einen Mittelsmann, der Webhook abfangen und in das Miio-Protokoll auf das Gerät übersetzen kann. Es gibt eine Python-Bibliothek (https://github.com/rytilahti/python-miio), aber wir können sie nicht auf dem Vakuum verwenden, da nicht genügend Platz für Python 3.5+ auf dem Vakuum vorhanden ist.

Aber zum Glück gibt es eine php-miio-Bibliothek (https://github.com/skysilver-lab/php-miio), die vergleichsweise sehr leicht ist und die wir verwenden werden (übrigens wird sie auch in win-mirobo oben verwendet.)). Derjenige, der den Webhook abfängt, ist der Webhook-Daemon (https://github.com/adnanh/webhook), der das Skript für PHP auf dem eingehenden Webhook ausführt.

SSH zu Ihrem Vakuum (mit Putty):

#Do unter root. Ja, ich weiß, es ist nicht sicher..whatevs.sudo su #Hier installieren wir alles Notwendige apt-get install -y wget php5-cli nano #Alles andere wird nach /opt cd /opt

#php-miio herunterladen

#Überprüfe das Neueste auf github. Korrigieren Sie die folgenden Zeilen gemäß dem neuesten 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

#Webhooks-Daemon herunterladen

#Überprüfe das Neueste auf github. Korrigieren Sie die Zeile unten gemäß dem neuesten 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

#Einstellungen für Webhook erstellen

nano /opt/webhook/hooks.json #Geben Sie den Inhalt von hooks.json hier ein. Klicken Sie mit der rechten Maustaste in den Kitt. #Strg+X Y speichern.

#Skript zum Aufrufen von php-miio erstellen

nano /opt/webhook/mirobo.sh #Geben Sie mirobo.sh-Inhalte hier ein. Klicken Sie mit der rechten Maustaste in den Kitt. #Strg+X Y speichern. # Ausführbar machen chmod +x /opt/webhook/mirobo.sh

#Autostart-Skript erstellen und Konfigurationen erneuern

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-Standardeinstellungen

#Rebooten Sie das System neu

neustarten

Testen Sie nach dem Neustart Ihre Einstellungen im Browser:

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

Methode - Befehl

Parameter - Parameter

Alle Methoden (Befehle) und Parameter finden Sie hier:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Inhalt der Hooks.json

Ändern Sie Ihr-Token-hier zu Ihrem Token aus dem Vakuum.

Korrigieren Sie die IP-Whitelist für Ihr lokales Netzwerk oder entfernen Sie sie vollständig, wenn Sie Ihre Hooks von woanders ausführen (unsicher).

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

Inhalt der mirobo.sh-Datei. Einfach kopieren und einfügen. Es gibt nur zwei Zeilen (nicht 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']}'

Schritt 3: Amazon Dash-Buttons einrichten

Öffnen Sie Ihre Amazon-App. Gehen Sie zu Dash-Geräte. Fügen Sie wie gewohnt eine neue Dash-Schaltfläche hinzu. Auf der Aufforderung, ein Produkt auszuwählen, NICHT. Schließen Sie die App. Du bist fertig.

Schritt 4: Router einrichten, um Tastenanfragen abzufangen und MiVacuum zu steuern

Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern
Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern
Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern
Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern
Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern
Router einrichten, um Tastenanfragen abzufangen und MiVacuum. zu steuern

Dies funktioniert wie folgt.

Wenn die Schaltfläche gedrückt wird, verbindet sie sich mit Ihrem Netzwerk und fordert den DHCP-Server auf, eine It-Adresse zuzuweisen. Wir müssen diese Anfrage abfangen und einen Webhook zu einem Vakuum durchführen. Als zusätzliche Sicherheitsmaßnahme werden wir die Verbindung zu Amazon blockieren, damit Amazon nicht einmal merkt, dass wir den Knopf gedrückt haben und keine Möglichkeit haben, Firmware-Updates oder etwas anderes zu pushen.

Meistens verwende ich WinBox, aber manchmal ist das Terminal einfach einfacher.

#Firewall-Drop-Regel mit zu blockierender Adressliste erstellen

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

Dann müssen wir für jede Schaltfläche eine DHCP-Lease-Regel erstellen. Ganz einfach in Winbox.

DHCP-Server - Leasing

Wenn wir den Knopf drücken, erscheint der neue Mietvertrag. Wir klicken es als statisch an und setzen die Adressliste auf 'blockdash', setzen die Lease-Zeit auf 5 Sekunden (damit die Lease vor dem nächsten Drücken abläuft) und kopieren die Mac-Adresse für später.

#Dieser Befehl dient nur als Referenz, wenn Sie Lease in Winbox hinzugefügt haben, überspringen Sie es einfach.

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

Jetzt müssen wir auf das Lease-Skript zeigen.

Öffnen Sie die Registerkarte DHCP und fügen Sie 'myLeaseScript' als Lease-Skript auf Ihrem DHCP-Server hinzu.

Öffnen Sie nun System - Scripts und fügen Sie 'myLeaseScript' mit Lese- und Testberechtigungen hinzu.

Inhalt von myLeaseScript:

#Script wird zweimal beim Lease (1) und beim Release (0) aufgerufen:if ($leaseBound=1) do={ /log info ("Running myLeaseScript. Jemand hat Dash Button gedrückt?")

#Array aller Ihrer Schaltflächen und URLs zum Aufrufen

:lokale Tasten { "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"; };

#Gedrückte Schaltfläche und Zugriffs-URL prüfen

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

Jetzt haben Sie Ihre Reinigung durch Drücken der Amazon Dash-Taste automatisiert. Spaß haben

Bitte beachten Sie: Es ist sehr unsicher, Webhooks unverschlüsselt zu versenden. Webhook kann Verschlüsselung verwenden, aber ich habe versucht, es zum Laufen zu bringen, es ist einfach nie passiert. Da ich es nur in meinem lokalen Netzwerk verwende, mache ich mir keine allzu großen Sorgen. Aber wenn Sie es über das Internet verwenden möchten, um sich mit IFTTT mit Google Assistant-Integration zu verbinden, beachten Sie bitte diese Tatsache! Ich bin mir nicht sicher, was in meinem Fall der Grund für einen Krypto-Fehler war. Selbstsignierte Zertifikate, mit denen ich geschlagen habe, ausgestellt von letsencrypt. Überkompliziertes Netzwerk mit vielen NATs, die ich mit IPv6 besiegt habe. Aber es scheint mir, dass Webhooks mit Zertifikaten sehr schlecht funktionieren und tatsächlich sehr schlecht dokumentiert sind. Und es sieht so aus, als ob IFTTT nicht mit IPv6 funktioniert. Ich habe alles versucht, was ich konnte, aber ich bin gescheitert. Vielleicht hast du mehr Glück. Vergiss nicht, einen Beitrag zu machen.

upd: Ich habe eine Idee, wie man es ohne Verschlüsselung sicherer machen kann. Sie erstellen einige Skripte für jede Aktion, die Sie ausführen möchten. Sie ändern die mirobo.sh, um das Skript mit einem bestimmten Parameter aufzurufen, der im Webhook gesendet wird, z. sauberes_schlafzimmer. Das ist es. Die meiste Person, die den Haken ausnutzt, ist, Ihr Schlafzimmer immer wieder zu reinigen …)) Sobald ich das tue, werde ich das anweisbare aktualisieren

Schritt 5: So zeichnen Sie Ihre Karte

So zeichnen Sie Ihre Karte
So zeichnen Sie Ihre Karte

Sobald Sie Ihre vollständige Karte in Ihrer MiHome-App bereit haben, senden Sie Ihren Staubsauger über den Befehl 'app_goto' an einen bestimmten Ort.

Machen Sie einen Screenshot der vollständigen Karte mit gesendeter Position und Basis. Der Basispunkt nach dem Neustart des Vakuums ist die Position [25500, 25500]Dies ist nicht die Position der Ladestation, aber wenn Sie das Vakuum an der Ladestation neu starten, wird die Position der Ladestation 25500, 25500 sein. Also von bekannter Position gesendet und Basisposition können Sie Ihre Karte mit dem von Ihnen erstellten Screenshot in jedem CAD-Programm plotten. Ich habe kostenloses QCAD verwendet.

Nachdem ich das Bild an das Raster angepasst habe, verwende ich eine Linie durch den Raum, um den Start- und Endpunkt der Zone zu messen.

Empfohlen: