ไลบรารีนี้ (และเครื่องมือ cli ที่มาพร้อมกับ miiocli
) สามารถใช้เพื่อควบคุมอุปกรณ์โดยใช้โปรโตคอล miIO และ MIoT ของ Xiaomi
นี่เป็นความพยายามโดยสมัครใจและขับเคลื่อนโดยชุมชน และไม่มีส่วนเกี่ยวข้องกับบริษัทใดๆ ที่ห้องสมุดนี้รองรับอุปกรณ์ ยินดีรายงานปัญหาและคำขอดึง ดูการมีส่วนร่วม!
เอกสารฉบับเต็มมีอยู่ที่ python-miio.readthedocs.io
รุ่นล่าสุดสามารถติดตั้งได้โดยใช้ pip
:
pip install python-miio
หรือคุณสามารถติดตั้งเวอร์ชันการพัฒนาล่าสุดได้จาก GitHub:
pip install git+https://github.com/rytilahti/python-miio.git
ขณะนี้โครงการนี้กำลังดำเนินการปรับปรุงโครงสร้างครั้งใหญ่อยู่ หากคุณสนใจที่จะควบคุมอุปกรณ์สมัยใหม่ (MIoT) คุณต้องการใช้เวอร์ชัน git (หรือรุ่นก่อนเผยแพร่ pip install --pre python-miio
) จนกว่าเวอร์ชัน 0.6.0 จะออก
คำสั่ง miiocli
อนุญาตให้ควบคุมอุปกรณ์ที่ได้รับการสนับสนุนจากบรรทัดคำสั่ง โดยให้คุณทราบที่อยู่ IP และโทเค็นของอุปกรณ์เหล่านั้น
วิธีที่ง่ายที่สุดในการรับโทเค็นคือการใช้คำสั่ง miiocli cloud
ซึ่งจะดึงโทเค็นเหล่านั้นจากบัญชีคลาวด์ของคุณโดยใช้ micloud:
miiocli cloud
Username: [email protected]
Password:
== name of the device (Device offline ) ==
Model: example.device.v1
Token: b1946ac92492d2347c6235b4d2611184
IP: 192.168.xx.xx (mac: ab:cd:ef:12:34:56)
DID: 123456789
Locale: cn
หรือดูเอกสารเพื่อดูวิธีอื่นในการขอรับเอกสารเหล่านี้
หลังจากที่คุณมีโทเค็นแล้ว คุณสามารถเริ่มควบคุมอุปกรณ์ได้ ขั้นแรก คุณสามารถใช้ info
เพื่อรับข้อมูลทั่วไปจากอุปกรณ์ใดๆ (แม้จะยังไม่รองรับ):
miiocli device --ip <ip> --token <token> info
Model: rockrobo.vacuum.v1
Hardware version: MW300
Firmware version: 1.2.4_16
Supported using: RoborockVacuum
Command: miiocli roborockvacuum --ip 127.0.0.1 --token 00000000000000000000000000000000
Supported by genericmiot: True
โปรดทราบว่าช่องคำสั่งที่ให้คำสั่งโดยตรงแก่คุณเพื่อใช้ในการควบคุมอุปกรณ์ หากอุปกรณ์ได้รับการสนับสนุนโดยการรวม genericmiot
ตามที่ระบุไว้ในเอาต์พุต คุณยังสามารถใช้ miiocli genericmiot
เพื่อควบคุมอุปกรณ์ได้
คุณสามารถใช้ --help
เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง คำสั่งย่อย และตัวเลือกที่มีอยู่ได้ตลอดเวลา
อุปกรณ์สมัยใหม่ (MIoT) ส่วนใหญ่ได้รับการสนับสนุนโดยอัตโนมัติโดยการผสานรวม genericmiot
ภายในจะใช้ไฟล์ ("miot spec") เพื่อค้นหาคุณสมบัติที่รองรับ เช่น เซ็นเซอร์ การตั้งค่า และการดำเนินการ
ไฟล์เฉพาะรุ่นอุปกรณ์นี้จะถูกดาวน์โหลด (และแคชไว้ในเครื่อง) เมื่อคุณใช้การรวม genericmiot
เป็นครั้งแรก
คุณสมบัติทั้งหมดของอุปกรณ์ที่รองรับพร้อมใช้งานโดยใช้ status
คำสั่งทั่วไป (เพื่อแสดงสถานะอุปกรณ์) set
(เพื่อเปลี่ยนการตั้งค่า) actions
เพื่อแสดงรายการการกระทำที่มีอยู่ และ call
ให้ดำเนินการ
status
การดำเนินการจะแสดงสถานะอุปกรณ์ปัจจุบันและค่าที่ยอมรับสำหรับการตั้งค่า (ทำเครื่องหมายด้วยการเข้าถึง RW
):
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 status
Service Light (light)
Switch Status (light:on, access: RW): False (<class 'bool'>, )
Brightness (light:brightness, access: RW): 60 % (<class 'int'>, min: 1, max: 100, step: 1)
Power Off Delay Time (light:off-delay-time, access: RW): 1:47:00 (<class 'int'>, min: 0, max: 120, step: 1)
หากต้องการเปลี่ยนการตั้งค่า คุณต้องระบุชื่อของการตั้งค่า (เช่น light:brightness
ในตัวอย่างด้านบน):
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 set light:brightness 0
[{'did': 'light:brightness', 'siid': 2, 'piid': 3, 'code': 0}]
อุปกรณ์ส่วนใหญ่จะมีการดำเนินการดังนี้:
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 actions
Light (light)
light:toggle Toggle
light:brightness-down Brightness Down
light:brightness-up Brightness Up
สิ่งเหล่านี้สามารถดำเนินการได้โดยใช้คำสั่ง call
:
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 call light:toggle
{'code': 0, 'out': []}
ใช้ miiocli genericmiot --help
สำหรับคำสั่งที่มีเพิ่มเติม
โปรดทราบว่าการใช้การผสานรวมนี้กำหนดให้คุณต้องใช้เวอร์ชัน git จนกว่าเวอร์ชัน 0.6.0 จะออก
อุปกรณ์รุ่นเก่าได้รับการสนับสนุนโดยโมดูลที่เกี่ยวข้องเป็นหลัก (เช่น roborockvacuum
หรือ fan
) คำสั่ง info
จะแสดงคำสั่งที่จะใช้หากอุปกรณ์รองรับ
คุณสามารถรับรายการคำสั่งที่ใช้ได้สำหรับโมดูลที่กำหนดโดยส่ง --help
อาร์กิวเมนต์ไปที่:
$ miiocli roborockvacuum --help
Usage: miiocli roborockvacuum [OPTIONS] COMMAND [ARGS]...
Options:
--ip TEXT [required]
--token TEXT [required]
--id-file FILE
--help Show this message and exit.
Commands:
add_timer Add a timer.
..
การเรียกใช้คำสั่งแต่ละรายการจะพยายามตรวจจับรุ่นอุปกรณ์โดยอัตโนมัติ ในบางสถานการณ์ (เช่น หากอุปกรณ์ไม่มีการเชื่อมต่อระบบคลาวด์) ข้อมูลนี้อาจไม่พร้อมใช้งาน ทำให้เกิดข้อผิดพลาด การกำหนดโมเดลด้วยตนเองทำให้สามารถข้ามการตรวจจับโมเดลได้:
miiocli roborockvacuum --model roborock.vacuum.s5 --ip <ip> --token <token> start
เครื่องมือ miiocli
มีแฟล็ก --debug
( -d
) ที่สามารถใช้เพื่อเปิดใช้งานการบันทึกการดีบัก คุณสามารถทำซ้ำได้หลายครั้ง (เช่น -dd
) เพื่อเพิ่มความละเอียดของเอาต์พุต
คุณสามารถค้นหาวิธีแก้ปัญหาสำหรับปัญหาที่พบบ่อยที่สุดได้ในส่วนการแก้ไขปัญหา
หากคุณมีคำถามใดๆ อย่าลังเลที่จะสร้างปัญหาหรือเริ่มการสนทนาบน GitHub หรือคุณสามารถตรวจสอบห้อง Matrix ของเราได้
ฟังก์ชันทั้งหมดของไลบรารีนี้สามารถเข้าถึงได้ผ่านโมดูล miio
แม้ว่าคุณจะสามารถเริ่มต้นคลาสการรวมแต่ละคลาสได้ด้วยตนเอง แต่วิธีที่ง่ายที่สุดในการรับอินสแตนซ์อุปกรณ์คือการใช้ DeviceFactory
:
from miio import DeviceFactory
dev = DeviceFactory.create("<ip address>", "<token>")
dev.status()
การดำเนินการนี้จะดำเนินการสืบค้น info
ไปยังอุปกรณ์เพื่อตรวจหารุ่น และสร้างคลาสอุปกรณ์ที่เกี่ยวข้องให้กับคุณ
คุณสามารถทบทวนคลาสอุปกรณ์ได้โดยใช้วิธีการต่อไปนี้:
sensors()
เพื่อรับข้อมูลเกี่ยวกับเซ็นเซอร์settings()
เพื่อรับข้อมูลเกี่ยวกับการตั้งค่าที่มีอยู่ซึ่งสามารถเปลี่ยนแปลงได้actions()
เพื่อส่งคืนข้อมูลเกี่ยวกับการทำงานของอุปกรณ์ที่มีอยู่ออบเจ็กต์ตัวอธิบายอุปกรณ์ส่งคืนแต่ละรายการเหล่านี้ ซึ่งมีข้อมูลเมตาที่จำเป็นเกี่ยวกับคุณสมบัติที่มีอยู่เพื่อสร้างอินเทอร์เฟซทั่วไป
หมายเหตุ: การบูรณาการบางอย่างอาจไม่มีการกำหนดคำอธิบาย การเพิ่มนั้นตรงไปตรงมา ดังนั้นอย่าลังเลที่จะมีส่วนร่วม!
เรายินดีรับการมีส่วนร่วมทุกประเภท: ตั้งแต่การปรับปรุงหรือแก้ไขข้อบกพร่องไปจนถึงการปรับปรุงเอกสารประกอบ เราได้เตรียมคำแนะนำสั้นๆ สำหรับการเริ่มต้นใช้งานให้กับคุณ
หากคุณเป็นนักพัฒนาที่ทำงานในโปรเจ็กต์ที่สื่อสารโดยใช้โปรโตคอล miIO/MIoT หรือต้องการมีส่วนร่วมในโปรเจ็กต์นี้ แต่ไม่มีอุปกรณ์เฉพาะ คุณสามารถใช้เครื่องจำลองที่โปรเจ็กต์นี้มอบให้ได้ เครื่องมือ miiocli
มาพร้อมกับตัวจำลองอย่างง่ายสำหรับทั้ง miIO และ MIoT ที่สามารถใช้เพื่อทดสอบโค้ดของคุณได้
แม้ว่าอุปกรณ์ MIoT ทั้งหมดจะได้รับการสนับสนุนผ่านการผสานรวม genericmiot
แต่ไลบรารีนี้ก็รองรับอุปกรณ์ต่อไปนี้ด้วย:
อย่าลังเลที่จะสร้างคำขอดึงเพื่อเพิ่มการรองรับสำหรับอุปกรณ์ใหม่ รวมถึงคุณสมบัติเพิ่มเติมสำหรับอุปกรณ์ที่รองรับอยู่แล้ว
หากคุณกำลังใช้ไลบรารีนี้สำหรับโปรเจ็กต์ของคุณ โปรดเปิด PR เพื่อแสดงรายการไว้ที่นี่!
Home Assistant ใช้ไลบรารีนี้เพื่อรองรับหลายแพลตฟอร์มได้ทันทีที่แกะกล่อง รายการนี้ไม่สมบูรณ์เนื่องจากแพลตฟอร์ม (ในวงเล็บ) อาจรองรับอุปกรณ์อื่นๆ ที่ระบุไว้ข้างต้นด้วย
นี่คือรายการโครงการอื่นๆ ที่เกี่ยวข้องกับระบบนิเวศของ Xiaomi ที่คุณพบว่าน่าสนใจ รู้สึกอิสระที่จะส่งโครงการที่เกี่ยวข้องเพิ่มเติม