Πίνακας περιεχομένων:

XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 βήματα (με εικόνες)
XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 βήματα (με εικόνες)

Βίντεο: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 βήματα (με εικόνες)

Βίντεο: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 βήματα (με εικόνες)
Βίντεο: Web Programming - Computer Science for Business Leaders 2016 2024, Νοέμβριος
Anonim
XiaoMi Vacuum + Amazon Button = Καθαρισμός παύλας
XiaoMi Vacuum + Amazon Button = Καθαρισμός παύλας

Αυτή η οδηγία θα εξηγήσει πώς να χρησιμοποιήσετε τα εφεδρικά κουμπιά σας Amazon Dash για τον έλεγχο του κενού XiaoMi.

Πήρα ένα σωρό κουμπιά Amazon από την εποχή που ήταν $ 1 και δεν τα χρησιμοποίησα. Αλλά με τη λήψη ενός νέου Robot Vacuum αποφάσισα ότι θα ήταν πολύ βολικό να χρησιμοποιήσω αυτά τα κουμπιά ως στοιχείο ελέγχου της σκούπας.

Πατήστε το κουμπί Ziploc και θα σκουπίσει το υπνοδωμάτιο.

Πατήστε το κουμπί Glad και θα σκουπίσει το σαλόνι.

Πιέστε τα Φίτζι.. καλά έχετε την ιδέα.

Σε αυτό το έργο εκεί έχουν ενσωματωθεί πολλές αμυχές από το διαδίκτυο. Εκτιμώ πραγματικά τη δουλειά που έχουν κάνει πολλοί άνθρωποι και πιστεύω ότι πρέπει να μοιραστώ τη μικρή μου προσθήκη με βάση την έρευνά τους.

Αποποίηση ευθυνών: Όλα τα παρακάτω βήματα τα κάνετε με δική σας ευθύνη! Εάν ακολουθήσετε προσεκτικά τα βήματα, υπάρχει πολύ μικρή πιθανότητα να καταστρέψετε κάτι. Αλλά δεν συμβαίνει! Και δεν αναλαμβάνω καμία ευθύνη. BTW όλα τα βήματα μπορούν να αντιστραφούν, ώστε ενδεχομένως να μην υπάρχει παραβίαση της εγγύησης. Μα φυσικά - YMMV

Η βασική αρχή είναι ότι πιάνουμε το κουμπί παύσης στο δρομολογητή και στέλνουμε το webhook στο Vacuum αντί να αγοράζουμε πράγματα από την Amazon.

Τι θα χρειαστείτε:

  • Δρομολογητής με προσαρμοσμένο υλικολογισμικό που μπορεί να ελέγχει το DHCP, να εκτελεί δέσμες ενεργειών και να εκπληρώνει ερωτήματα λήψης | Mikrotik, DD-WRT, OpenWRT, Tomato κλπ.
  • Κενό XiaoMi. v1 ή v2
  • Κουμπιά Dash Amazon

Συγκεκριμένα τι χρησιμοποίησα:

  • Mikrotik
  • XiaoMi v2 Vacuum Roborock S50
  • Μάτσο κουμπιά Dash Amazon

Εδώ είναι η διαδικασία

  1. Ριζώνουμε το κενό
  2. Εγκαταστήστε και διαμορφώστε τα απαραίτητα πακέτα στο root στο κενό
  3. Ρυθμίστε το κουμπί Amazon Dash
  4. Ρυθμίστε το δρομολογητή για να πιάσει το αίτημα κουμπιού και να ελέγξει το κενό

Σημείωση: Στην πραγματικότητα δεν χρειάζεται να ριζώσετε το κενό σας για να το ελέγξετε. Εάν έχετε οποιονδήποτε άλλο διακομιστή στο lan σας (ή οπουδήποτε) που μπορεί να εκτελέσει python ή php, μπορείτε να κατευθύνετε τους webhooks σε αυτούς. Αλλά δεν το κάνω. Και ήθελα να το διατηρήσω τακτοποιημένο και συμπαγές στο ίδιο το κενό. Έτσι, εάν δεν σας αρέσει η προσέγγισή μου, υποθέτω ότι μπορείτε να καταλάβετε πώς να ρυθμίσετε τον δικό σας διακομιστή μεσαίου ανθρώπου από αυτήν την ανάγνωση. Πήγαινε κατευθείαν στο σημείο 2.

Εντάξει πάμε…

Βήμα 1: Αποκτήστε το Token and Root Vacuum

Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum
Αποκτήστε το Token and Root Vacuum

Όλο το λογισμικό, το fimware και οι οδηγίες για τη ριζοβολία λήφθηκαν από: https://4pda.ru/forum/index.php? Showtopic = 881982

Εάν διαθέτετε λειτουργικό σύστημα εκτός των Windows και τηλέφωνο διαφορετικό από το Android (μπορείτε να χρησιμοποιήσετε εικονικό με nox) ακολουθήστε τον παραπάνω σύνδεσμο (χρησιμοποιήστε το Google Translate) και διαβάστε τις οδηγίες διαφορετικά ακολουθήστε το εγχειρίδιο εδώ.

Για να κάνουμε root πρέπει να λάβουμε τη διεύθυνση ip και το διακριτικό από το κενό σας.

Αποσυσκευάστε root.7z.

Εγκαταστήστε το Mihome από το Vevs στο Android σας. Μπορείτε να χρησιμοποιήσετε ένα από το Αρχείο ή εάν αυτή η οδηγία έχει ημερομηνία τότε μπορείτε να λάβετε την πιο πρόσφατη έκδοση από τον ιστότοπό του (https://www.kapiba.ru/2017/11/mi-home.html) ή από το Google Drive του (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Συνδεθείτε στο MiHome σας. Πρέπει να ορίσετε την China Mainland στον λογαριασμό σας και να προσθέσετε το κενό σε αυτό).

Πατήστε στο εικονίδιο Κενό Ρυθμίσεις (Τρεις κουκκίδες επάνω δεξιά) Γενικές ρυθμίσεις Πληροφορίες δικτύου

Συμπληρώστε τη διεύθυνση IP και το διακριτικό στο win-mirobo/win-mirobo.ini

Απενεργοποιήστε το τείχος προστασίας στα παράθυρα. Εκκινήστε το win-mirobo.bat και αναβοσβήνετε το υλικολογισμικό.

!!!!!!!!! Το V1 είναι για το v1 Vacuum και το V2 είναι για το v2 Vacuum (Roborock S50) !!!!!!! Αν λάβατε λάθος FW - μεταβείτε στον σύνδεσμο 4pda (πρώτα σε αυτό το βήμα) και διαβάστε πώς να ανακτήσετε.

Το Arter Vacuum επανεκκινείται - έχετε ριζώσει με επιτυχία το κενό σας και τώρα έχετε πρόσβαση σε αυτό μέσω ssh!

SSH σε αυτό (με στόκο) με το καθαριστικό/καθαριστικό. Αλλάξτε τον κωδικό πρόσβασής σας με το passwd

Βήμα 2: Εγκαταστήστε και διαμορφώστε τα απαραίτητα πακέτα Under Root στο κενό

Προϋπόθεση

Αντί για webhooks, το MiVacuum χρησιμοποιεί πρωτόκολλο miio όπως και κάθε συσκευή XiaoMi IoT. Πρέπει λοιπόν να το μάθουμε για να κατανοήσουμε τα webhooks. Χρειαζόμαστε έναν μεσαίο άνθρωπο που μπορεί να πιάσει webhook και να το μεταφράσει σε πρωτόκολλο miio σε συσκευή. Υπάρχει βιβλιοθήκη python (https://github.com/rytilahti/python-miio) αλλά δεν μπορούμε να τη χρησιμοποιήσουμε στο κενό, καθώς δεν υπάρχει αρκετός χώρος για Python 3.5+ στο κενό.

Αλλά ευτυχώς υπάρχει μια βιβλιοθήκη php-miio (https://github.com/skysilver-lab/php-miio) η οποία είναι συγκριτικά πολύ ελαφριά και αυτό θα χρησιμοποιήσουμε (btw χρησιμοποιείται επίσης στο win-mirobo παραπάνω). Αυτός που πιάνει το webhook είναι ο δαίμονας webhook (https://github.com/adnanh/webhook) ο οποίος εκτελεί το σενάριο για php στο εισερχόμενο webhook.

SSH στο κενό σας (με στόκο):

#Κάνε κάτω από τη ρίζα. Ναι, ξέρω ότι δεν είναι ασφαλές.. whatevs.sudo su #Εδώ εγκαθιστούμε όλα τα απαραίτητα apt-get install -y wget php5-cli nano #Όλα τα άλλα πρόκειται /opt cd /opt

#Λήψη php-miio

#Ελέγξτε τα πιο πρόσφατα στο github. Διορθώστε τις παρακάτω γραμμές σύμφωνα με το τελευταίο 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

#Ελέγξτε τα πιο πρόσφατα στο github. Σωστή γραμμή παρακάτω σύμφωνα με το τελευταίο 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

#Δημιουργία ρυθμίσεων για webhook

nano /opt/webhook/hooks.json #Input hooks.json περιεχόμενο εδώ. Κάντε δεξί κλικ στο στόκο. #Ctr+X Αποθήκευση Y.

#Δημιουργία σεναρίου για κλήση php-miio

nano /opt/webhook/mirobo.sh #Input mirobo.sh περιεχόμενο εδώ. Κάντε δεξί κλικ στο στόκο. # Ctr +X Αποθήκευση Y. # Κάντε εκτελέσιμο chmod +x /opt/webhook/mirobo.sh

#Δημιουργία σεναρίου αυτόματης εκκίνησης και ανανέωση παραμέτρων

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

#Επανεκκίνηση του συστήματος

επανεκκίνηση

Μετά την επανεκκίνηση δοκιμάστε τις ρυθμίσεις σας στο πρόγραμμα περιήγησης:

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

μέθοδος - εντολή

παράμετροι - παράμετροι

Όλες τις μεθόδους (εντολές) και τις παραμέτρους που μπορείτε να βρείτε εδώ:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Περιεχόμενο των αγκίστρων.json

Αλλάξτε το διακριτικό σας εδώ στο διακριτικό σας από το κενό.

Διορθώστε τη λίστα επιτρεπόμενων IP για το τοπικό σας δίκτυο ή καταργήστε την εντελώς εάν εκτελείτε τα άγκιστρα σας από αλλού (μη ασφαλή).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "respond-message": "Εκτέλεση mirobo script "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "your-token-here"}], "pass-argumentments-to-command": [{"source": "url", "name": "method"}, {"source": "url", "name ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

περιεχόμενο αρχείου mirobo.sh. Απλώς αντιγράψτε-επικολλήστε. Υπάρχουν μόνο δύο γραμμές (όχι 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 ']}'

Βήμα 3: Ρυθμίστε τα κουμπιά Amazon Dash

Ανοίξτε την εφαρμογή Amazon. Μεταβείτε στο Dash Devices. Προσθέστε νέο κουμπί παύλας ως συνήθως. Στην προωθητική ενέργεια για να επιλέξετε ένα προϊόν ΜΗΝ. Κλείστε την εφαρμογή. Τελείωσες.

Βήμα 4: Ρυθμίστε το δρομολογητή για να αιτηθείτε και να ελέγξετε το κενό MiVacuum

Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum
Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum
Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum
Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum
Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum
Ρυθμίστε το δρομολογητή για να πιάσετε το κουμπί Αίτηση και έλεγχος MiVacuum

Αυτό λειτουργεί ως εξής.

Όταν πατηθεί το κουμπί συσχετίζεται με το δίκτυό σας και ζητά από τον διακομιστή dhcp να εκχωρήσει μια διεύθυνση. Πρέπει να πιάσουμε αυτό το αίτημα και να εκτελέσουμε ένα webhook σε κενό. Ως πρόσθετο μέτρο ασφαλείας, θα αποκλείσουμε τη σύνδεση με την Amazon, έτσι ώστε η Amazon να μην γνωρίζει ότι πατήσαμε ακόμη και το κουμπί και δεν έχει τη δυνατότητα να πιέσει την ενημέρωση υλικολογισμικού ή κάτι άλλο.

Κυρίως χρησιμοποιώ το WinBox, αλλά μερικές φορές το τερματικό είναι απλούστερο.

#Δημιουργία κανόνα πτώσης τείχους προστασίας με λίστα διευθύνσεων για αποκλεισμό

/ip φίλτρο τείχους προστασίας προσθέστε αλυσίδα = εμπρός src-address-list = blockdash action = drop comment = "Drop Amazon Dash"

Στη συνέχεια, πρέπει να δημιουργήσουμε έναν κανόνα μίσθωσης dhcp για κάθε κουμπί. Πολύ εύκολο να το κάνετε στο winbox.

Διακομιστής DHCP - Μισθώσεις

Πατάμε το κουμπί που εμφανίζεται η νέα μίσθωση. Κάνουμε κλικ ως στατικό και ορίζουμε τη λίστα διευθύνσεων σε "blockdash", ορίζουμε τον χρόνο μίσθωσης σε 5 δευτερόλεπτα (έτσι ώστε η μίσθωση να λήγει πριν από το επόμενο πάτημα) και αντιγράφουμε τη διεύθυνση mac για αργότερα.

#Αυτή η εντολή είναι μόνο για αναφορά εάν προσθέσατε μίσθωση στο winbox, απλά παραλείψτε την.

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

Τώρα πρέπει να επισημάνουμε το σενάριο μίσθωσης.

Ανοίξτε την καρτέλα DHCP και προσθέστε το 'myLeaseScript' ως σενάριο μίσθωσης στον διακομιστή dhcp.

Τώρα ανοίξτε System - Scripts και προσθέστε "myLeaseScript" με δικαιώματα ανάγνωσης και δοκιμής.

Περιεχόμενο του myLeaseScript:

Το #Script καλείται δύο φορές σε μίσθωση (1) και σε κυκλοφορία (0): εάν ($ leaseBound = 1) κάντε = { /log info ("Εκτέλεση του myLeaseScript. Κάποιος πάτησε το κουμπί Dash;")

#Σειρά όλων των κουμπιών και url για κλήση

: τοπικά κουμπιά {"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"; };

#Ελέγξτε το πατημένο κουμπί και τη διεύθυνση url acll

: 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}}}

Τώρα έχετε αυτοματοποιήσει τον καθαρισμό σας με ένα πάτημα του κουμπιού Amazon Dash. Καλα να περνατε

Παρακαλώ δώστε προσοχή: Είναι πολύ ανασφαλές να στέλνετε webhooks χωρίς κρυπτογράφηση. Το Webhook μπορεί να χρησιμοποιήσει κρυπτογράφηση, αλλά ωστόσο προσπάθησα να το κάνω να λειτουργήσει απλά δεν συνέβη ποτέ. Δεδομένου ότι το χρησιμοποιώ μόνο στο τοπικό μου δίκτυο, δεν με απασχολεί ιδιαίτερα. Αλλά αν θέλετε να το χρησιμοποιήσετε μέσω διαδικτύου για να συνδεθείτε με το IFTTT με την ενσωμάτωση του Βοηθού Google, δώστε προσοχή σε αυτό το γεγονός! Δεν είμαι σίγουρος ποιος ήταν ο λόγος για μια αστοχία κρυπτογράφησης στην περίπτωσή μου. Αυτο-υπογεγραμμένα πιστοποιητικά με τα οποία έχω εκδοθεί από το letsencrypt. Υπερπλοκοποιημένο δίκτυο με δέσμη NAT που νίκησα με ipv6. Αλλά μου φαίνεται ότι τα webhooks λειτουργούν πολύ άσχημα με πιστοποιητικά και στην πραγματικότητα πολύ κακώς τεκμηριωμένα. Και φαίνεται ότι το IFTTT δεν λειτουργεί με το ipv6. Προσπάθησα ό, τι μπορούσα, αλλά απέτυχα. Μπορεί να έχεις καλύτερη τύχη. Μην ξεχάσετε να κάνετε μια ανάρτηση.

Upd: Έχω μια ιδέα πώς να το κάνω πιο ασφαλές χωρίς κρυπτογράφηση. Δημιουργείτε μερικά σενάρια για κάθε ενέργεια που θέλετε να εκτελέσετε. Μπορείτε να τροποποιήσετε το mirobo.sh για να καλέσετε το σενάριο με τη δεδομένη παράμετρο που αποστέλλεται στο webhook, π.χ. καθαρό_κρεβατοκάμαρα. Αυτό είναι. Το πιο άτομο που θα εκμεταλλευτεί το γάντζο είναι να καθαρίσει το υπνοδωμάτιό σας ξανά και ξανά …)) Μόλις το κάνω αυτό, θα ενημερώσω το εκπαιδευτικό

Βήμα 5: Πώς να σχεδιάσετε τον χάρτη σας

Πώς να σχεδιάσετε τον χάρτη σας
Πώς να σχεδιάσετε τον χάρτη σας

Μόλις έχετε έτοιμο τον πλήρη χάρτη σας στην εφαρμογή MiHome, στείλτε το κενό σας σε μια συγκεκριμένη τοποθεσία μέσω της εντολής 'app_goto'.

Δημιουργήστε ένα στιγμιότυπο οθόνης του πλήρους χάρτη με τη θέση που έχει σταλεί και τη βάση. Το σημείο βάσης μετά την επανεκκίνηση του κενού είναι η θέση [25500, 25500] ΑΥΤΗ ΔΕΝ ΕΙΝΑΙ Η ΘΕΣΗ ΤΗΣ ΒΑΣΗΣ ΦΟΡΤΙΣΗΣ, αλλά αν επανεκκινήσετε το κενό στη βάση φόρτισης, τότε η θέση της βάσης φόρτισης θα είναι 25500, 25500. Έτσι, από τη γνωστή θέση αποστέλλεται και τη βασική θέση μπορείτε να σχεδιάσετε τον χάρτη σας σε οποιοδήποτε πρόγραμμα CAD με το στιγμιότυπο οθόνης που έχετε τραβήξει. Χρησιμοποίησα δωρεάν QCAD.

Αφού προσαρμόσω την εικόνα στο πλέγμα, χρησιμοποιώ μια γραμμή στο δωμάτιο για να μετρήσω το σημείο έναρξης και τέλους της ζώνης.

Συνιστάται: