สารบัญ:
- ขั้นตอนที่ 1: รับโทเค็นและรูทสุญญากาศ
- ขั้นตอนที่ 2: ติดตั้งและกำหนดค่าแพ็คเกจที่จำเป็นภายใต้รูทบน Vacuum
- ขั้นตอนที่ 3: ตั้งค่าปุ่ม Amazon Dash
- ขั้นตอนที่ 4: ตั้งค่าเราเตอร์เพื่อขอปุ่ม Catch และควบคุม MiVacuum
- ขั้นตอนที่ 5: วิธีพล็อตแผนที่ของคุณ
วีดีโอ: XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
คำแนะนำนี้จะอธิบายวิธีใช้ปุ่ม 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 จำนวนมาก
นี่คือขั้นตอน
- เรารูตสุญญากาศ
- ติดตั้งและกำหนดค่าแพ็คเกจที่จำเป็นภายใต้รูทบน vacuum
- ตั้งค่าปุ่ม Amazon Dash
- ตั้งค่าเราเตอร์เพื่อดักจับคำขอปุ่มและควบคุม 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
นี้ทำงานดังนี้
เมื่อกดปุ่ม ระบบจะเชื่อมโยงกับเครือข่ายของคุณและขอให้เซิร์ฟเวอร์ 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 ฟรี
หลังจากปรับรูปภาพให้เข้ากับตารางแล้ว ฉันใช้เส้นข้ามห้องเพื่อวัดจุดเริ่มต้นและจุดสิ้นสุดของโซน
แนะนำ:
ปุ่ม Home Automation มูลค่า $5: 4 ขั้นตอน
ปุ่ม Home Automation ราคา $5: ปุ่ม Home Automation ราคา $5 บางครั้งวิธีแก้ปัญหาที่ง่ายที่สุดคือปุ่มเดียว เราต้องการวิธีง่ายๆ ในการเรียกใช้กิจวัตร "เวลาเข้านอน" บนฮับระบบอัตโนมัติภายในบ้านของเรา (Hubitat Elevation) ซึ่งจะปิดไฟส่วนใหญ่ ตั้งค่าอื่นๆ ให้อยู่ในระดับที่เฉพาะเจาะจง และ
ปุ่ม Push to Talk ที่ควบคุมด้วยเท้า: 5 ขั้นตอน
ปุ่ม Push to Talk แบบควบคุมด้วยเท้า: นี่คือวิธีที่ฉันสร้างปุ่ม Push To Talk ที่คุณสามารถใช้กับเท้าของคุณได้
วิธีใช้สเต็ปเปอร์มอเตอร์ 28BYJ-48 พร้อมปุ่มกด 3 ปุ่ม: 5 ขั้นตอน
วิธีใช้สเต็ปเปอร์มอเตอร์ 28BYJ-48 พร้อมปุ่มกด 3 ปุ่ม: คุณต้องการควบคุมสเต็ปเปอร์มอเตอร์โดยใช้ปุ่มกดหรือไม่? ที่สามารถทำตามเข็มนาฬิกา, ทวนเข็มนาฬิกาแล้วหยุดฟังก์ชั่น? วิดีโอนี้เหมาะสำหรับคุณ
ปุ่ม Uber: 7 ขั้นตอน
ปุ่ม Uber: เรียกรถ Uber ได้เพียงแค่กดปุ่ม!บทนำในบทช่วยสอนนี้ เราจะใช้บริการโลคัลไลเซชันเครือข่าย Sigfox (ซึ่งขณะนี้สามารถระบุตำแหน่งในรัศมีสูงสุด 1 กม.) เพื่อให้ได้ตำแหน่งที่ใกล้เคียงที่สุด ตำแหน่งที่กำหนด
ปุ่ม Macbook ทำจากไม้ (พร้อมฟังก์ชั่นแบ็คไลท์): 7 ขั้นตอน
ปุ่ม Macbook ทำจากไม้ (พร้อมฟังก์ชั่นแบ็คไลท์): บทนำ คอมพิวเตอร์ Mac ได้รับการดัดแปลงอย่างหนักในช่วงไม่กี่ปีที่ผ่านมา ซึ่งอาจแตกต่างกันไปตามการเปลี่ยนสี สติ๊กเกอร์ การแกะสลัก และอื่นๆ แป้นไม้บน macbook ทำให้ฉันประทับใจเสมอ คุณสามารถทำได้ทางออนไลน์จากที่ต่างๆ ในราคาประมาณ $70 หรือ