此函式庫(及其隨附的 cli 工具miiocli
)可用於使用小米的 miIO 和 MIoT 協定控制設備。
這是一項自願的、社區驅動的工作,與任何其設備受此庫支持的公司無關。歡迎問題報告和拉取請求,請參閱貢獻!
完整文件可從 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 發布。
如果您知道裝置的 IP 位址和令牌, miiocli
指令允許從命令列控制受支援的裝置。
取得令牌最簡單的方法是使用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
來獲取有關可用命令、子命令及其選項的更多資訊。
genericmiot
整合自動支援大多數現代 (MIoT) 設備。在內部,它使用(“miot 規範”)文件來尋找支援的功能,例如感測器、設定和操作。
當您第一次使用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 使用此程式庫來支援多個開箱即用的平台。此列表並不完整,因為平台(括號中)也可能支援上面列出的其他設備。
這是您可能感興趣的小米生態系統其他項目的清單。歡迎提交更多相關項目。