يمكن استخدام هذه المكتبة (وأداة 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 البيئي والتي يمكنك أن تجدها مثيرة للاهتمام. لا تتردد في تقديم المزيد من المشاريع ذات الصلة.