Xiaomi Mi Cloud from python

Настройка

Получение токена от Gateway

pip install micloud
micloud -u maksim77ster@gmail.com -p <password> -c cn > result.json

Надо найти Gateway в полученном списке. Предполагаю, что он будет первым. Соответственно нас интересует:

  • IP: cat result.json| jq ".[0].localip"
  • TOKEN: cat result.json| jq ".[0].token"

Установка библиотеки

pip install python-miio==0.5.12

Версия на самом деле может быть и более новой. Пишу просто работающую у меня на 2022-11-16.

Код

from miio.gateway.gateway import Gateway
 
g = Gateway('100.64.88.74', '31fc********d8007*****0f')
# g.discover_devices()
{'lumi.158d00025c03e4': <Subdevice SensorHT: lumi.158d00025c03e4, model: WSDCGQ11LM, zigbee: lumi.weather.v1, fw: 3, bat: 60, vol: None, props: {'temperature': None, 'humidity': None, 'pressure': None}>,
 'lumi.158d000326dc60': <Subdevice Switch: lumi.158d000326dc60, model: QBKG03LM, zigbee: lumi.ctrl_neutral2, fw: 1, bat: None, vol: None, props: {'status_ch0': None, 'status_ch1': None}>,
 'lumi.158d000233b33c': <Subdevice WaterLeakSensor: lumi.158d000233b33c, model: SJCGQ11LM, zigbee: lumi.sensor_wleak.aq1, fw: 4, bat: 60, vol: None, props: {}>,
 'lumi.158d00033aeb98': <Subdevice Motion: lumi.158d00033aeb98, model: RTCGQ11LM, zigbee: lumi.sensor_motion.aq2, fw: 5, bat: 60, vol: None, props: {'motion': False}>,
 'lumi.158d0004830970': <Subdevice Switch: lumi.158d0004830970, model: QBKG03LM, zigbee: lumi.ctrl_neutral2, fw: 1, bat: None, vol: None, props: {'status_ch0': None, 'status_ch1': None}>,
 'lumi.158d000345660b': <Subdevice Switch: lumi.158d000345660b, model: QBKG04LM, zigbee: lumi.ctrl_neutral1.v1, fw: 1, bat: None, vol: None, props: {'status_ch0': None}>,
 'lumi.158d0004515e61': <Subdevice Switch: lumi.158d0004515e61, model: QBKG04LM, zigbee: lumi.ctrl_neutral1.v1, fw: 1, bat: None, vol: None, props: {'status_ch0': None}>,
 'lumi.158d00032165d8': <Subdevice Magnet: lumi.158d00032165d8, model: MCCGQ11LM, zigbee: lumi.sensor_magnet.aq2, fw: 3, bat: 60, vol: None, props: {'is_open': False}>,
 'lumi.158d00045167bf': <Subdevice Switch: lumi.158d00045167bf, model: QBKG04LM, zigbee: lumi.ctrl_neutral1.v1, fw: 1, bat: None, vol: None, props: {'status_ch0': None}>}
sensor = g.discover_devices()['lumi.158d00025c03e4']
sensor.update()
 
# print(sensor._props)
# {'temperature': 9.31, 'humidity': 26.75, 'pressure': 994.6}
 
print(f"Temperature: {sensor._props['temperature']}")
print(f"Humidity: {sensor._props['humidity']}")
Temperature: 18.03
Humidity: 24.39