สารบัญ:

XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)
XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: รีวิว Xiaomi Robot Vacuum X10 ดูดฝุ่นออกเองได้ หุ่นยนต์ดูดฝุ่นอัจฉริยะรุ่นล่าสุดราคาโคตรดี 2024, พฤศจิกายน
Anonim
เครื่องดูดฝุ่น Xiaomi + ปุ่ม Amazon = การทำความสะอาด Dash
เครื่องดูดฝุ่น Xiaomi + ปุ่ม Amazon = การทำความสะอาด Dash

คำแนะนำนี้จะอธิบายวิธีใช้ปุ่ม Amazon Dash สำรองของคุณเพื่อควบคุม XiaoMi Vacuum

ฉันมีปุ่ม Amazon จำนวนมากวางอยู่รอบ ๆ จากตอนที่มีราคา 1 เหรียญและฉันไม่ได้ใช้มัน แต่เมื่อได้รับ Robot Vacuum ใหม่ ฉันตัดสินใจว่าจะสะดวกมากที่จะใช้ปุ่มเหล่านี้เป็นตัวควบคุมสูญญากาศ

กดปุ่ม Ziploc มันจะดูดฝุ่นในห้องนอน

กดปุ่ม Glad มันจะดูดฝุ่นในห้องนั่งเล่น

กดฟิจิ.. คุณมีความคิด

โครงการนี้มีการรวมแฮ็คจำนวนมากจากอินเทอร์เน็ต ฉันซาบซึ้งกับงานที่หลายคนทำและคิดว่าฉันต้องแบ่งปันเครื่องมือเล็ก ๆ น้อย ๆ ของฉันจากการวิจัยของพวกเขา

ข้อจำกัดความรับผิดชอบ: ทำตามขั้นตอนด้านล่างทั้งหมด คุณต้องยอมรับความเสี่ยงเอง! หากคุณทำตามขั้นตอนอย่างระมัดระวัง มีโอกาสน้อยมากที่คุณจะเกิดความเสียหาย แต่ sh#t เกิดขึ้น! และฉันไม่รับผิดชอบต่อมัน BTW ทุกขั้นตอนสามารถย้อนกลับได้ดังนั้นจึงไม่มีการละเมิดการรับประกัน แต่แน่นอน - YMMV

หลักการพื้นฐานคือเรากดปุ่ม dash ที่เราเตอร์แล้วส่งเว็บฮุคไปที่ Vacuum แทนการซื้อของจาก Amazon

สิ่งที่คุณต้องการ:

  • เราเตอร์พร้อมเฟิร์มแวร์แบบกำหนดเองที่สามารถควบคุม DHCP เรียกใช้สคริปต์ และดำเนินการค้นหา | โพสต์ได้ Mikrotik, DD-WRT, OpenWRT, มะเขือเทศเป็นต้น..
  • เครื่องดูดฝุ่น Xiaomi v1 หรือ v2
  • ปุ่ม Amazon Dash

โดยเฉพาะสิ่งที่ฉันใช้:

  • Mikrotik
  • XiaoMi v2 เครื่องดูดฝุ่น Roborock S50
  • ปุ่ม Amazon Dash จำนวนมาก

นี่คือขั้นตอน

  1. เรารูตสุญญากาศ
  2. ติดตั้งและกำหนดค่าแพ็คเกจที่จำเป็นภายใต้รูทบน vacuum
  3. ตั้งค่าปุ่ม Amazon Dash
  4. ตั้งค่าเราเตอร์เพื่อดักจับคำขอปุ่มและควบคุม Vacuum

หมายเหตุ: อันที่จริง คุณไม่จำเป็นต้องรูทเครื่องดูดฝุ่นเพื่อควบคุมมัน หากคุณมีเซิร์ฟเวอร์อื่นบน lan ของคุณ (หรือที่ใดก็ตาม) ที่สามารถเรียกใช้ python หรือ php ได้ คุณสามารถกำหนด webhooks ให้กับพวกเขาได้ แต่ฉันไม่ และฉันต้องการให้มันเป็นระเบียบเรียบร้อยและกะทัดรัดบนเครื่องดูดฝุ่นด้วย ดังนั้นหากคุณไม่ชอบแนวทางของฉัน ฉันคิดว่าคุณสามารถหาวิธีตั้งค่าเซิร์ฟเวอร์คนกลางของคุณเองได้จากการอ่านนี้ เพียงตรงไปที่ข้อ 2

โอเค ไปเลย…

ขั้นตอนที่ 1: รับโทเค็นและรูทสุญญากาศ

รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ
รับโทเค็นและรูทสุญญากาศ

ซอฟต์แวร์ เฟิร์มแวร์และคำแนะนำสำหรับการรูททั้งหมดได้มาจาก:https://4pda.ru/forum/index.php?showtopic=881982

หากคุณมีระบบปฏิบัติการอื่นที่ไม่ใช่ Windows และโทรศัพท์อื่นที่ไม่ใช่ Android (คุณสามารถใช้เสมือนกับ nox) โปรดไปที่ลิงก์ด้านบน (ใช้ Google แปลภาษา) และอ่านคำแนะนำหรือปฏิบัติตามคู่มือที่นี่

ในการรูท เราจำเป็นต้องรับที่อยู่ IP และโทเค็นจากสุญญากาศของคุณ

แกะ root.7z

โปรดติดตั้ง Mihome จาก Vevs บน Android ของคุณ คุณสามารถใช้ได้จาก Archive หรือหากคำแนะนำนี้เป็นวันที่ สามารถรับเวอร์ชันล่าสุดได้จากเว็บไซต์ของเขา (https://www.kapiba.ru/2017/11/mi-home.html) หรือ Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

เข้าสู่ระบบ MiHome ของคุณ คุณต้องตั้งค่า China Mainland ในบัญชีของคุณและเพิ่ม Vacuum เข้าไป)

แตะที่ไอคอนสูญญากาศ การตั้งค่า (สามจุดบนขวา) การตั้งค่าทั่วไป ข้อมูลเครือข่าย

กรอกที่อยู่ IP และโทเค็นใน win-mirobo/win-mirobo.ini

ปิดการใช้งานไฟร์วอลล์ใน windows เปิด win-mirobo.bat และแฟลชเฟิร์มแวร์

!!!!!!!!! V1 ใช้สำหรับ v1 Vacuum และ V2 สำหรับ v2 Vacuum (Roborock S50) !!!!!!! หากคุณแฟลช FW ผิด - ไปที่ลิงก์ 4pda (ขั้นแรกในขั้นตอนนี้) และอ่านวิธีการกู้คืน

Arter Vacuum รีบูต - คุณรูทเครื่องสุญญากาศสำเร็จแล้ว และตอนนี้คุณสามารถเข้าถึงได้ผ่าน ssh!

SSH ไปที่มัน (พร้อมสีโป๊ว) พร้อมตัวทำความสะอาด/ตัวทำความสะอาด เปลี่ยนเป็นรหัสผ่านของคุณด้วย passwd

ขั้นตอนที่ 2: ติดตั้งและกำหนดค่าแพ็คเกจที่จำเป็นภายใต้รูทบน Vacuum

ที่ตั้ง

แทนที่จะใช้เว็บฮุค MiVacuum ใช้โปรโตคอล miio เช่นเดียวกับอุปกรณ์ XiaoMi IoT ทุกเครื่อง ดังนั้นเราต้องเรียนรู้มันเพื่อทำความเข้าใจเว็บฮุค เราต้องการคนกลางที่สามารถจับเว็บฮุคและแปลเป็นโปรโตคอล miio ไปยังอุปกรณ์ได้ มีไลบรารี python (https://github.com/rytilahti/python-miio) แต่เราไม่สามารถใช้มันบนสุญญากาศได้เนื่องจากมีพื้นที่ไม่เพียงพอสำหรับ Python 3.5+ บน Vacuum

แต่โชคดีที่มีไลบรารี php-miio (https://github.com/skysilver-lab/php-miio) ซึ่งค่อนข้างเบามากและนี่คือสิ่งที่เราจะใช้ (btw มันยังใช้ใน win-mirobo ด้านบนด้วย). ผู้ที่จับ webhook คือ webhook daemon (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 daemon

#ตรวจสอบข้อมูลล่าสุดบน 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

#สร้างการตั้งค่าสำหรับเว็บฮุค

nano /opt/webhook/hooks.json #Input hooks.json เนื้อหาที่นี่ คลิกขวาในสีโป๊ว #Ctr+X บันทึก Y

#สร้างสคริปต์สำหรับเรียก php-miio

nano /opt/webhook/mirobo.sh #ป้อนเนื้อหา 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

วิธีการ - คำสั่ง

params - พารามิเตอร์

วิธีการทั้งหมด (คำสั่ง) และพารามิเตอร์ที่คุณสามารถหาได้ที่นี่:

github.com/marcelrv/XiaomiRobotVacuumProtocol

เนื้อหาของ hooks.json

เปลี่ยน your-token-here เป็นโทเค็นของคุณจากสุญญากาศ

แก้ไข ip-whitelist สำหรับเครือข่ายท้องถิ่นของคุณหรือลบออกทั้งหมดหากคุณเรียกใช้ hooks จากที่อื่น (ไม่ปลอดภัย)

[{ "id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "กำลังดำเนินการ 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" } } }]

เนื้อหาไฟล์ 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: ตั้งค่าเราเตอร์เพื่อขอปุ่ม Catch และควบคุม MiVacuum

ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum
ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum
ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum
ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum
ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum
ตั้งค่าเราเตอร์เพื่อจับคำขอปุ่มและควบคุม MiVacuum

นี้ทำงานดังนี้

เมื่อกดปุ่ม ระบบจะเชื่อมโยงกับเครือข่ายของคุณและขอให้เซิร์ฟเวอร์ dhcp กำหนดที่อยู่ เราต้องจับคำขอนั้นและดำเนินการเว็บฮุคเพื่อสุญญากาศ เพื่อเป็นมาตรการรักษาความปลอดภัยเพิ่มเติม เราจะบล็อกการเชื่อมต่อกับ Amazon เพื่อที่ Amazon จะไม่รู้ว่าเรากดปุ่ม และไม่มีความสามารถในการผลักดันการอัปเดตเฟิร์มแวร์หรืออย่างอื่น

ส่วนใหญ่ฉันใช้ WinBox แต่บางครั้งเทอร์มินัลก็ง่ายกว่า

#สร้างกฎการปล่อยไฟร์วอลล์พร้อมรายการที่อยู่ที่จะบล็อก

/ip ตัวกรองไฟร์วอลล์เพิ่ม chain=forward src-address-list=blockdash action=drop comment="Drop Amazon Dash"

จากนั้นเราต้องสร้างกฎการเช่า dhcp สำหรับทุกปุ่ม ง่ายมากที่จะทำใน winbox

เซิร์ฟเวอร์ DHCP - สัญญาเช่า

คนที่เรากดปุ่มสัญญาเช่าใหม่จะปรากฏขึ้น เราคลิกให้เป็นแบบคงที่และตั้งค่ารายการที่อยู่เป็น 'blockdash' ตั้งเวลาเช่าเป็น 5 วินาที (เพื่อให้การเช่าหมดอายุก่อนการกดครั้งต่อไป) และคัดลอกที่อยู่ Mac ไว้ใช้ในภายหลัง

#คำสั่งนี้ใช้สำหรับการอ้างอิงเท่านั้น หากคุณเพิ่มการเช่าใน winbox ให้ข้ามไป

/ip dhcp-server เช่าเพิ่ม address-list=blockdash mac-address=XXXXXXXXXX address=192.168.x.x Lease-time=5s

ตอนนี้เราต้องชี้ไปที่สคริปต์การเช่า

เปิดแท็บ DHCP และเพิ่ม 'myLeaseScript' เป็นสคริปต์การเช่าบนเซิร์ฟเวอร์ dhcp ของคุณ

ตอนนี้เปิด System - Scripts และเพิ่ม 'myLeaseScript' พร้อมสิทธิ์ในการอ่านและทดสอบ

เนื้อหาของ myLeaseScript:

#Script ถูกเรียกสองครั้งในสัญญาเช่า (1) และในรุ่น (0):if ($leaseBound=1) do={ /log info ("กำลังเรียกใช้ myLeaseScript มีคนกดปุ่ม Dash?")

#Array ของปุ่มและ 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"; };

#ตรวจสอบปุ่มที่กดและ acl url

:foreach mac, url in=$buttons do={:if ($mac=$leaseActMAC) do={ /log info ("กดปุ่ม ".$mac."") /tool fetch keep-result=no mode=https http-method=post url=$url } } }

ตอนนี้คุณทำความสะอาดอัตโนมัติด้วยการกดปุ่ม Amazon Dash มีความสุข

โปรดให้ความสนใจ: การส่งเว็บฮุคแบบไม่เข้ารหัสไม่ปลอดภัยอย่างยิ่ง Webhook สามารถใช้การเข้ารหัสได้ แต่อย่างไรก็ตาม ฉันพยายามทำให้มันทำงาน มันก็ไม่เคยเกิดขึ้น เนื่องจากฉันใช้เฉพาะในเครือข่ายท้องถิ่นของฉัน ฉันจึงไม่กังวลมากนัก แต่ถ้าคุณต้องการใช้ผ่านอินเทอร์เน็ตเพื่อเชื่อมต่อกับ IFTTT ด้วยการรวม Google Assistant โปรดใส่ใจกับข้อเท็จจริงนี้! ฉันไม่แน่ใจว่าอะไรเป็นสาเหตุของความล้มเหลวในการเข้ารหัสลับในกรณีของฉัน ใบรับรองที่ลงนามเองที่ฉันเอาชนะโดย letsencrypt เครือข่ายซับซ้อนเกินไปด้วย NAT จำนวนมากที่ฉันเอาชนะด้วย ipv6 แต่สำหรับฉันดูเหมือนว่า webhooks จะทำงานได้แย่มากกับใบรับรองและในความเป็นจริงมีเอกสารที่แย่มาก และดูเหมือนว่า IFTTT จะไม่ทำงานกับ ipv6 ฉันพยายามสุดความสามารถแต่ล้มเหลว คุณอาจจะโชคดีกว่า อย่าลืมตั้งกระทู้นะครับ

upd: ฉันมีความคิดที่จะทำให้ปลอดภัยมากขึ้นโดยไม่ต้องเข้ารหัส คุณสร้างสคริปต์สองสามรายการสำหรับทุกการกระทำที่คุณต้องการทำ คุณแก้ไข mirobo.sh เพื่อเรียกสคริปต์ด้วยพารามิเตอร์ที่กำหนดที่ส่งใน webhook เช่น สะอาด_ห้องนอน. แค่นั้นแหละ. คนส่วนใหญ่ที่ใช้ประโยชน์จากเบ็ดจะทำคือทำความสะอาดห้องนอนของคุณครั้งแล้วครั้งเล่า…)) เมื่อฉันทำอย่างนั้นฉันจะอัปเดตคำแนะนำ

ขั้นตอนที่ 5: วิธีพล็อตแผนที่ของคุณ

วิธีการพล็อตแผนที่ของคุณ
วิธีการพล็อตแผนที่ของคุณ

เมื่อคุณเตรียมแผนที่แบบเต็มในแอป MiHome แล้ว ให้ส่งเครื่องดูดฝุ่นของคุณไปยังตำแหน่งเฉพาะผ่านคำสั่ง 'app_goto'

สร้างภาพหน้าจอของแผนที่แบบเต็มพร้อมตำแหน่งที่ส่งและฐาน จุดฐานหลังจากรีบูตสูญญากาศคือตำแหน่ง [25500, 25500] นี่ไม่ใช่ตำแหน่งของฐานชาร์จ แต่ถ้าคุณรีบูตสูญญากาศที่ฐานชาร์จ ตำแหน่งของฐานชาร์จจะเป็น 25500, 25500 ดังนั้นจากตำแหน่งที่ทราบที่ส่ง และตำแหน่งฐาน คุณสามารถพล็อตแผนที่ของคุณบนโปรแกรม CAD ใดก็ได้ด้วยภาพหน้าจอที่คุณถ่าย ฉันใช้ QCAD ฟรี

หลังจากปรับรูปภาพให้เข้ากับตารางแล้ว ฉันใช้เส้นข้ามห้องเพื่อวัดจุดเริ่มต้นและจุดสิ้นสุดของโซน

แนะนำ: