Pustaka ini (dan alat cli yang menyertainya, miiocli
) dapat digunakan untuk mengontrol perangkat yang menggunakan protokol miIO dan MIoT Xiaomi.
Ini adalah upaya sukarela berbasis komunitas dan tidak berafiliasi dengan perusahaan mana pun yang perangkatnya didukung oleh perpustakaan ini. Laporan masalah dan permintaan penarikan dipersilakan, lihat kontribusi!
Dokumentasi lengkap tersedia di python-miio.readthedocs.io.
Rilis terbaru dapat diinstal menggunakan pip
:
pip install python-miio
Alternatifnya, Anda dapat menginstal versi pengembangan terbaru dari GitHub:
pip install git+https://github.com/rytilahti/python-miio.git
Proyek ini sedang melakukan upaya refactoring besar-besaran. Jika Anda tertarik untuk mengontrol perangkat modern (MIoT), Anda ingin menggunakan versi git (atau pra-rilis, pip install --pre python-miio
) hingga versi 0.6.0 dirilis.
Perintah miiocli
memungkinkan pengontrolan perangkat yang didukung dari baris perintah, asalkan Anda mengetahui alamat IP dan tokennya.
Cara termudah untuk memperoleh token adalah dengan menggunakan perintah miiocli cloud
, yang mengambilkannya untuk Anda dari akun cloud Anda menggunakan 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
Alternatifnya, lihat dokumen untuk mengetahui cara lain mendapatkannya.
Setelah Anda mendapatkan token, Anda dapat mulai mengontrol perangkat. Pertama, Anda dapat menggunakan info
untuk mendapatkan beberapa informasi umum dari perangkat apa pun (bahkan yang belum didukung):
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
Perhatikan bahwa bidang perintah yang memberi Anda perintah langsung yang digunakan untuk mengendalikan perangkat. Jika perangkat didukung oleh integrasi genericmiot
seperti yang dinyatakan dalam output, Anda juga dapat menggunakan miiocli genericmiot
untuk mengendalikannya.
Anda selalu dapat menggunakan --help
untuk mendapatkan informasi lebih lanjut tentang perintah yang tersedia, subperintah, dan opsinya.
Sebagian besar perangkat modern (MIoT) secara otomatis didukung oleh integrasi genericmiot
. Secara internal, ia menggunakan file ("spesifikasi miot") untuk mencari tahu tentang fitur yang didukung, seperti sensor, pengaturan, dan tindakan.
File khusus model perangkat ini akan diunduh (dan disimpan dalam cache secara lokal) saat Anda menggunakan integrasi genericmiot
untuk pertama kalinya.
Semua fitur perangkat yang didukung tersedia menggunakan perintah umum status
(untuk menampilkan status perangkat), set
(untuk mengubah pengaturan), actions
untuk mencantumkan tindakan yang tersedia, dan call
untuk menjalankan tindakan.
status
eksekusi akan menunjukkan status perangkat saat ini, dan juga nilai pengaturan yang diterima (ditandai dengan akses 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)
Untuk mengubah pengaturan, Anda perlu memberikan nama pengaturan (misalnya, light:brightness
pada contoh di atas):
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 set light:brightness 0
[{'did': 'light:brightness', 'siid': 2, 'piid': 3, 'code': 0}]
Sebagian besar perangkat juga menawarkan tindakan:
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
Ini dapat dieksekusi menggunakan perintah call
:
miiocli genericmiot --ip 127.0.0.1 --token 00000000000000000000000000000000 call light:toggle
{'code': 0, 'out': []}
Gunakan miiocli genericmiot --help
untuk perintah lainnya yang tersedia.
Catatan, penggunaan integrasi ini mengharuskan Anda menggunakan versi git hingga versi 0.6.0 dirilis.
Perangkat lama sebagian besar didukung oleh modul terkait (misalnya, roborockvacuum
atau fan
). Perintah info
akan menampilkan perintah yang akan digunakan, jika perangkat didukung.
Anda bisa mendapatkan daftar perintah yang tersedia untuk modul tertentu dengan meneruskan argumen --help
ke dalamnya:
$ 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.
..
Setiap pemanggilan perintah akan secara otomatis mencoba mendeteksi model perangkat. Dalam beberapa situasi (misalnya, jika perangkat tidak memiliki konektivitas cloud) informasi ini mungkin tidak tersedia sehingga menyebabkan kesalahan. Mendefinisikan model secara manual memungkinkan untuk melewati deteksi model:
miiocli roborockvacuum --model roborock.vacuum.s5 --ip <ip> --token <token> start
Alat miiocli
memiliki tanda --debug
( -d
) yang dapat digunakan untuk mengaktifkan pencatatan debug. Anda dapat mengulanginya beberapa kali (misalnya, -dd
) untuk meningkatkan verbositas keluaran.
Anda dapat menemukan beberapa solusi untuk masalah paling umum di bagian Pemecahan Masalah.
Jika Anda memiliki pertanyaan, jangan ragu untuk membuat masalah atau memulai diskusi di GitHub. Alternatifnya, Anda dapat memeriksa ruang Matrix kami.
Semua fungsi perpustakaan ini dapat diakses melalui modul miio
. Meskipun Anda dapat menginisialisasi masing-masing kelas integrasi secara manual, cara paling sederhana untuk mendapatkan instance perangkat adalah dengan menggunakan DeviceFactory
:
from miio import DeviceFactory
dev = DeviceFactory.create("<ip address>", "<token>")
dev.status()
Ini akan melakukan kueri info
ke perangkat untuk mendeteksi model, dan membuat kelas perangkat yang sesuai untuk Anda.
Anda dapat melakukan introspeksi kelas perangkat menggunakan metode berikut:
sensors()
untuk mendapatkan informasi tentang sensor.settings()
untuk mendapatkan informasi tentang pengaturan yang tersedia yang dapat diubah.actions()
untuk mengembalikan informasi tentang tindakan perangkat yang tersedia.Masing-masing mengembalikan objek deskriptor perangkat, yang berisi metadata yang diperlukan tentang fitur yang tersedia untuk memungkinkan pembuatan antarmuka umum.
Catatan: beberapa integrasi mungkin tidak memiliki deskriptor yang ditentukan. Menambahkannya sangatlah mudah, jadi silakan berkontribusi!
Kami menyambut segala macam kontribusi: mulai dari perbaikan atau perbaikan bug hingga penyempurnaan dokumentasi. Kami telah menyiapkan panduan singkat untuk membantu Anda memulai.
Jika Anda seorang pengembang yang mengerjakan proyek yang berkomunikasi menggunakan protokol miIO/MIoT, atau ingin berkontribusi pada proyek ini tetapi tidak memiliki perangkat tertentu, Anda dapat menggunakan simulator yang disediakan oleh proyek ini. Alat miiocli
dikirimkan dengan simulator sederhana untuk miIO dan MIoT yang dapat digunakan untuk menguji kode Anda.
Meskipun semua perangkat MIoT didukung melalui integrasi genericmiot
, perpustakaan ini juga mendukung perangkat berikut:
Jangan ragu untuk membuat permintaan tarik untuk menambahkan dukungan pada perangkat baru serta fitur tambahan untuk perangkat yang sudah didukung.
Jika Anda menggunakan perpustakaan ini untuk proyek Anda, silakan buka PR agar terdaftar di sini!
Home Assistant menggunakan perpustakaan ini untuk mendukung beberapa platform out-of-the-box. Daftar ini tidak lengkap karena platform (dalam tanda kurung) mungkin juga mendukung perangkat lain yang tercantum di atas.
Ini adalah daftar proyek lain seputar ekosistem Xiaomi yang menurut Anda menarik. Jangan ragu untuk mengirimkan lebih banyak proyek terkait.