이 라이브러리(및 함께 제공되는 CLI 도구인 miiocli
)는 Xiaomi의 miIO 및 MIoT 프로토콜을 사용하여 장치를 제어하는 데 사용할 수 있습니다.
이는 자발적인 커뮤니티 중심의 노력이며 이 라이브러리에서 지원하는 장치를 소유한 회사와 관련이 없습니다. 문제 보고 및 끌어오기 요청을 환영합니다. 기여를 참조하세요!
전체 문서는 python-miio.readthedocs.io에서 확인할 수 있습니다.
최신 릴리스는 pip
사용하여 설치할 수 있습니다.
pip install python-miio
또는 GitHub에서 최신 개발 버전을 설치할 수 있습니다.
pip install git+https://github.com/rytilahti/python-miio.git
이 프로젝트는 현재 대대적인 리팩토링 노력을 진행하고 있습니다. 최신(MIoT) 장치 제어에 관심이 있다면 버전 0.6.0이 출시될 때까지 git 버전(또는 사전 릴리스, pip install --pre python-miio
)을 사용하는 것이 좋습니다.
miiocli
명령을 사용하면 IP 주소와 토큰을 알고 있는 경우 명령줄에서 지원되는 장치를 제어할 수 있습니다.
토큰을 얻는 가장 간단한 방법은 miiocli cloud
명령을 사용하는 것입니다. 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
현재 장치 상태와 허용되는 설정 값(access 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
사용하십시오.
이 통합을 사용하려면 버전 0.6.0이 출시될 때까지 git 버전을 사용해야 합니다.
이전 장치는 주로 해당 모듈(예: 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에서 토론을 시작하세요. 또는 매트릭스 룸을 확인하실 수도 있습니다.
이 라이브러리의 모든 기능은 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을 열어 여기에 나열되도록 하세요!
홈어시스턴트는 이 라이브러리를 사용하여 기본적으로 여러 플랫폼을 지원합니다. 플랫폼(괄호 안)은 위에 나열된 다른 장치도 지원할 수 있으므로 이 목록은 불완전합니다.
다음은 흥미로운 Xiaomi 생태계 관련 프로젝트 목록입니다. 더 많은 관련 프로젝트를 제출해 주세요.