Mục lục:

XiaoMi Vacuum + Nút Amazon = Làm sạch Dash: 5 bước (có hình ảnh)
XiaoMi Vacuum + Nút Amazon = Làm sạch Dash: 5 bước (có hình ảnh)

Video: XiaoMi Vacuum + Nút Amazon = Làm sạch Dash: 5 bước (có hình ảnh)

Video: XiaoMi Vacuum + Nút Amazon = Làm sạch Dash: 5 bước (có hình ảnh)
Video: Review Halo: Thiết bị đeo theo dõi sức khoẻ kì lạ của ông lớn Amazon 2024, Tháng mười một
Anonim
XiaoMi Vacuum + Amazon Button = Dash Cleaning
XiaoMi Vacuum + Amazon Button = Dash Cleaning

Hướng dẫn này sẽ giải thích cách sử dụng các Nút Amazon Dash dự phòng của bạn để Kiểm soát Chân không XiaoMi.

Tôi có một loạt các Nút Amazon được đặt xung quanh từ thời điểm chúng còn 1 đô la và tôi không sử dụng chúng. Nhưng khi nhận được Robot hút chân không mới, tôi quyết định rằng sẽ rất tiện lợi khi sử dụng các nút này làm điều khiển chân không.

Nhấn nút Ziploc và nó sẽ hút bụi trong Phòng ngủ.

Nhấn nút Vui mừng và nó sẽ hút bụi Phòng khách.

Nhấn Fiji.. bạn đã có ý tưởng.

Dự án này có kết hợp nhiều bản hack từ internet. Tôi thực sự đánh giá cao công việc mà nhiều người đã làm và nghĩ rằng tôi phải chia sẻ kiến thức nhỏ của mình dựa trên nghiên cứu của họ.

Tuyên bố từ chối trách nhiệm: Tất cả các bước dưới đây bạn tự chịu rủi ro! Nếu bạn làm theo các bước một cách cẩn thận, rất ít khả năng bạn có thể làm hỏng thứ gì đó. Nhưng sh # t xảy ra! Và tôi không chịu trách nhiệm về nó. BTW tất cả các bước có thể được đảo ngược nên không có khả năng vi phạm bảo hành. Nhưng tất nhiên - YMMV

Nguyên tắc cơ bản là chúng ta nhấn nút gạch ngang trên bộ định tuyến và gửi webhook đến Vacuum thay vì mua hàng từ Amazon.

Những gì bạn sẽ cần:

  • Bộ định tuyến với phần sụn tùy chỉnh có thể kiểm soát DHCP, chạy các tập lệnh và thực hiện các truy vấn get | post. Mikrotik, DD-WRT, OpenWRT, Tomato, v.v.
  • Máy hút chân không XiaoMi. v1 hoặc v2
  • Amazon Dash Buttons

Cụ thể những gì tôi đã sử dụng:

  • Mikrotik
  • XiaoMi v2 Vacuum Roborock S50
  • Một loạt các nút Amazon Dash

Đây là thủ tục

  1. Chúng tôi tận gốc chân không
  2. Cài đặt và cấu hình các gói cần thiết dưới quyền root trên chân không
  3. Nút thiết lập Amazon Dash
  4. Thiết lập Bộ định tuyến để bắt yêu cầu nút và điều khiển Chân không

NB: Trên thực tế, bạn không cần phải root máy hút để kiểm soát nó. Nếu bạn có bất kỳ máy chủ nào khác trên lan của mình (hoặc bất cứ nơi nào) có thể chạy python hoặc php, bạn có thể chuyển hướng webhook đến chúng. Nhưng tôi không. Và tôi muốn giữ cho nó gọn gàng và nhỏ gọn trên chính máy hút. Vì vậy, nếu bạn không thích cách tiếp cận của tôi, tôi cho rằng bạn có thể tìm ra cách thiết lập máy chủ người trung gian của riêng bạn từ bài đọc này. Chỉ cần đi thẳng vào điểm 2.

Được rồi, đi thôi…

Bước 1: Lấy Token và Root Vacuum

Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc
Lấy mã thông báo và chân không gốc

Tất cả phần mềm, fimware và hướng dẫn root đều được lấy từ: https://4pda.ru/forum/index.php? Showtopic = 881982

Nếu bạn có hệ điều hành không phải Windows và điện thoại không phải Android (bạn có thể sử dụng ảo với nox), vui lòng theo liên kết ở trên (sử dụng Google Dịch) và đọc hướng dẫn nếu không hãy làm theo hướng dẫn tại đây.

Để root, chúng tôi cần lấy địa chỉ ip và mã thông báo từ chân không của bạn.

Giải nén root.7z.

Vui lòng cài đặt Mihome từ Vevs trên Android của bạn. Bạn có thể sử dụng một từ Kho lưu trữ hoặc nếu hướng dẫn này là ngày thì bạn có thể lấy phiên bản mới nhất từ trang web của anh ấy (https://www.kapiba.ru/2017/11/mi-home.html) hoặc Google Drive của anh ấy (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Đăng nhập vào MiHome của bạn. Bạn phải đặt Trung Quốc Đại lục trên tài khoản của mình và thêm Chân không vào tài khoản của mình).

Nhấn vào biểu tượng Chân không Cài đặt (Ba dấu chấm ở phía trên bên phải) Cài đặt chung Thông tin mạng

Điền địa chỉ ip và mã thông báo vào win-mirobo / win-mirobo.ini

Tắt tường lửa trong cửa sổ. Khởi chạy win-mirobo.bat và cài đặt chương trình cơ sở.

!!!!!!!!! V1 dành cho v1 Vacuum và V2 dành cho v2 Vacuum (Roborock S50) !!!!!!! Nếu bạn nháy FW sai - hãy truy cập liên kết 4pda (đầu tiên trong bước này) và đọc cách khôi phục.

Arter Vacuum khởi động lại - bạn đã root thành công chân không của mình và bây giờ bạn có quyền truy cập vào nó qua ssh!

SSH cho nó (với Putty) với chất tẩy rửa / chất tẩy rửa. Thay đổi mật khẩu của bạn bằng mật khẩu

Bước 2: Cài đặt và định cấu hình các gói cần thiết dưới gốc trên chân không

Tiền đề

Thay vì webhooks, MiVacuum sử dụng giao thức miio như mọi thiết bị XiaoMi IoT. Vì vậy, chúng ta phải học nó để hiểu webhooks. Chúng tôi cần một người trung gian có thể bắt webhook và dịch nó sang giao thức miio tới thiết bị. Có thư viện python (https://github.com/rytilahti/python-miio) nhưng chúng tôi không thể sử dụng nó trên máy hút vì không có đủ dung lượng cho Python 3.5+ trên máy hút.

Nhưng may mắn thay, có một thư viện php-miio (https://github.com/skysilver-lab/php-miio) tương đối nhẹ và đây là những gì chúng tôi sẽ sử dụng (btw nó cũng được sử dụng trong win-mirobo ở trên). Người bắt được webhook là webhook daemon (https://github.com/adnanh/webhook), người chạy script cho php trên webhook đến.

SSH đến chân không của bạn (với Putty):

# Làm dưới gốc. Vâng, tôi biết nó không an toàn..whatevs.sudo su # Ở đây chúng tôi cài đặt tất cả những thứ cần thiết apt-get install -y wget php5-cli nano # Mọi thứ khác sẽ đến / opt cd / opt

# Tải xuống php-miio

# Kiểm tra thông tin mới nhất trên github. Các dòng chính xác bên dưới theo wget mới nhất 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ải xuống webhooks daemon

# Kiểm tra thông tin mới nhất trên github. Dòng chính xác bên dưới theo wget mới nhất 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

# Tạo cài đặt cho webhook

nano /opt/webhook/hooks.json #Input hooks.json nội dung tại đây. Nhấp chuột phải vào bột bả. # Ctr + X Lưu Y.

# Tạo tập lệnh để gọi php-miio

nano /opt/webhook/mirobo.sh # Nhập nội dung mirobo.sh vào đây. Nhấp chuột phải vào bột bả. # Ctr + X Lưu Y. # Tạo chmod thực thi + x /opt/webhook/mirobo.sh

# Tạo tập lệnh tự khởi động và gia hạn cấu hình

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 mặc định

# Khởi động lại hệ thống

khởi động lại

Sau khi khởi động lại, hãy kiểm tra cài đặt của bạn trong trình duyệt:

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

phương pháp - lệnh

params - tham số

Tất cả các phương thức (lệnh) và tham số bạn có thể tìm thấy ở đây:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Nội dung của hooks.json

Thay đổi mã thông báo của bạn-tại đây thành mã thông báo của bạn từ chân không.

Sửa danh sách trắng ip cho mạng cục bộ của bạn hoặc xóa hoàn toàn nếu bạn chạy hook của mình từ nơi khác (không an toàn).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/ opt / webhook", "response-message": "Đang thực thi mirobo script "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "your-token-here"}], "truyền đối số-thành-lệnh": [{"source": "url", "name": "method"}, {"source": "url", "name ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

nội dung tệp mirobo.sh. Chỉ cần sao chép-dán. Chỉ có hai dòng (không phải 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 ']}'

Bước 3: Thiết lập các nút Amazon Dash

Mở ứng dụng Amazon của bạn. Đi tới Thiết bị Dash. Thêm nút gạch ngang mới như bình thường. Trên quảng cáo để chọn một sản phẩm KHÔNG. Đóng ứng dụng. Bạn xong việc rồi.

Bước 4: Thiết lập Bộ định tuyến để Bắt nút Yêu cầu và Điều khiển MiVacuum

Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum
Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum
Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum
Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum
Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum
Thiết lập bộ định tuyến để bắt yêu cầu nút và điều khiển MiVacuum

Điều này hoạt động như sau.

Khi nhấn nút, nó đang liên kết với mạng của bạn và yêu cầu máy chủ dhcp chỉ định địa chỉ cho nó. Chúng tôi phải nắm bắt được yêu cầu đó và thực hiện webhook đến chân không. Như một biện pháp bảo mật bổ sung, chúng tôi sẽ chặn kết nối với Amazon để Amazon không biết chúng tôi thậm chí đã nhấn nút và không có khả năng đẩy cập nhật chương trình cơ sở hoặc thứ gì khác.

Tôi chủ yếu sử dụng WinBox, nhưng một số trường hợp thiết bị đầu cuối dễ dàng hơn.

# Tạo quy tắc thả tường lửa với danh sách địa chỉ để chặn

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

Sau đó, chúng ta phải tạo một quy tắc cho thuê dhcp cho mọi nút. Rất dễ thực hiện trong winbox.

Máy chủ DHCP - Cho thuê

Còn chúng ta nhấn nút thì hợp đồng thuê mới xuất hiện. Chúng tôi nhấp vào nó dưới dạng tĩnh và đặt danh sách địa chỉ thành 'blockdash', đặt thời gian thuê thành 5 giây (để thời gian thuê hết hạn trước lần nhấn tiếp theo) và sao chép địa chỉ mac cho sau.

# Lệnh này chỉ mang tính chất tham khảo nếu bạn đã thêm hợp đồng thuê trong winbox thì chỉ cần bỏ qua.

/ ip dhcp-server cho thuê thêm address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x Rent-time = 5s

Bây giờ chúng ta phải trỏ đến kịch bản cho thuê.

Mở tab DHCP và thêm 'myLeaseScript' làm tập lệnh cho thuê trên máy chủ dhcp của bạn.

Bây giờ hãy mở Hệ thống - Tập lệnh và thêm 'myLeaseScript' với quyền đọc, kiểm tra.

Nội dung của myLeaseScript:

#Script được gọi hai lần khi cho thuê (1) và khi phát hành (0): if ($ allowBound = 1) do = {/ log info ("Đang chạy myLeaseScript. Ai đó đã nhấn Nút Dash?")

# Dải của tất cả các nút và url của bạn để gọi

: các nút cục bộ {"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"; };

#Check đã nhấn nút và tìm url

: foreach mac, url in = $ button do = {: if ($ mac = $ leeActMAC) do = {/ log info ("Pressed". $ mac. "button") / tool fetch keep-result = no mode = https http-method = post url = $ url}}}

Bây giờ bạn đã tự động dọn dẹp của mình chỉ với một lần nhấn nút Amazon Dash. Chúc vui vẻ

Xin lưu ý: Rất không an toàn khi gửi các webhook không được mã hóa. Webhook có thể sử dụng mã hóa, tuy nhiên tôi đã cố gắng làm cho nó hoạt động nhưng điều đó chưa bao giờ xảy ra. Vì tôi chỉ sử dụng nó trong mạng cục bộ của mình nên tôi không quá lo lắng. Nhưng nếu bạn muốn sử dụng nó qua internet để kết nối với IFTTT có tích hợp Trợ lý Google, hãy lưu ý đến thực tế này! Tôi không chắc lý do dẫn đến thất bại tiền điện tử trong trường hợp của tôi là gì. Các chứng chỉ tự ký mà tôi được cấp bởi letsencrypt. Mạng quá phức tạp với nhiều NAT Tôi đã đánh bại với ipv6. Nhưng đối với tôi, có vẻ như webhooks hoạt động rất tệ với các chứng chỉ và trên thực tế được ghi chép lại rất tệ. Và có vẻ như IFTTT không hoạt động với ipv6. Tôi đã thử tất cả những gì có thể, nhưng không thành công. Bạn có thể gặp may mắn hơn. Đừng quên tạo một bài đăng.

upd: Tôi có một ý tưởng làm thế nào để làm cho nó an toàn hơn mà không cần mã hóa. Bạn tạo một vài tập lệnh cho mọi hành động bạn muốn thực hiện. Bạn sửa đổi mirobo.sh để gọi tập lệnh với tham số nhất định được gửi trong webhook, ví dụ. phòng vệ sinh. Đó là nó. Người khai thác cái móc hầu hết sẽ làm là dọn dẹp phòng ngủ của bạn nhiều lần…)) Sau khi tôi làm điều đó, tôi sẽ cập nhật hướng dẫn

Bước 5: Cách vẽ bản đồ của bạn

Cách vẽ bản đồ của bạn
Cách vẽ bản đồ của bạn

Sau khi bạn đã sẵn sàng bản đồ đầy đủ trong ứng dụng MiHome, hãy gửi chân không của bạn đến một vị trí cụ thể thông qua lệnh 'app_goto'.

Tạo ảnh chụp màn hình bản đồ đầy đủ với vị trí được gửi và cơ sở. Điểm gốc sau khi khởi động lại chân không là vị trí [25500, 25500] ĐÂY KHÔNG PHẢI LÀ VỊ TRÍ CỦA CƠ SỞ SẠC, nhưng nếu bạn khởi động lại chân không tại đế sạc thì vị trí của đế sạc sẽ là 25500, 25500. Vì vậy, từ vị trí đã biết được gửi và vị trí cơ sở, bạn có thể vẽ bản đồ của mình trên bất kỳ chương trình CAD nào với ảnh chụp màn hình bạn đã chụp. Tôi đã sử dụng QCAD miễn phí.

Sau khi lắp hình ảnh vào lưới, tôi sử dụng một đường ngang trong phòng để đo điểm bắt đầu và điểm kết thúc của khu vực.

Đề xuất: