Skip to content

mijiaAPI 类

mijiaAPI 类是米家 API 的核心类,负责认证、登录和所有 API 调用。

构造函数

python
mijiaAPI(auth_data_path: Optional[str] = None)
参数类型默认值说明
auth_data_pathOptional[str]None认证文件保存路径。默认为 ~/.config/mijia-api/auth.json

属性

属性类型说明
availablebool判断 Token 是否有效(带 60 秒缓存)
pass_ostr
user_agentstr
deviceIdstr

方法

login

python
login(*args, **kwargs) -> dict

二维码登录方法(内部调用 QRlogin)。如果 Token 有效会自动跳过。

QRlogin

python
QRlogin() -> dict

二维码登录方法。登录时会在终端打印二维码,使用米家APP扫描完成身份验证。

check_new_msg

python
check_new_msg(
    begin_at: int = int(time.time()) - 3600,
    refresh_token: bool = True
) -> dict

检查新消息,同时可用于刷新 Token。

get_homes_list

python
get_homes_list() -> list

获取用户的所有家庭列表(包含共享家庭)。

get_devices_list

python
get_devices_list(home_id: Optional[str] = None) -> list

获取设备列表。不指定 home_id 时遍历所有家庭。

参数类型默认值说明
home_idOptional[str]None家庭 ID,不指定则获取所有家庭的设备

get_shared_devices_list

python
get_shared_devices_list() -> list

获取共享设备列表(无法指定家庭 ID)。

get_scenes_list

python
get_scenes_list(home_id: Optional[str] = None) -> list

获取场景列表。不指定 home_id 时遍历所有家庭。

参数类型默认值说明
home_idOptional[str]None家庭 ID

run_scene

python
run_scene(scene_id: str, home_id: str) -> bool

执行手动场景。

参数类型说明
scene_idstr场景 ID
home_idstr家庭 ID

get_consumable_items

python
get_consumable_items(home_id: Optional[str] = None) -> list

获取耗材列表(如滤芯、灯泡等)。不指定 home_id 时遍历所有家庭。

参数类型默认值说明
home_idOptional[str]None家庭 ID

get_devices_prop

python
get_devices_prop(data: Union[list, dict]) -> Union[list, dict]

获取设备属性(原始 siid/piid 方式)。支持单个(dict)和批量(list)操作。

set_devices_prop

python
set_devices_prop(data: Union[list, dict]) -> Union[list, dict]

设置设备属性(原始 siid/piid 方式)。支持单个(dict)和批量(list)操作。

run_action

python
run_action(data: Union[list, dict]) -> Union[list, dict]

执行设备操作(原始 siid/aiid 方式)。支持单个(dict)和批量(list)操作。

get_statistics

python
get_statistics(data: dict) -> list

获取设备统计数据(如耗电量、使用时长),支持按小时、天、周、月查询。该接口仅支持 部分设备,不同型号使用的统计键和统计类型可能不同。

data 参数字段:

字段类型说明
didstr设备 ID
keystr设备相关的统计键,通常为 siid.piid。例如 lumi.acpartner.mcn04 的耗电量使用 "7.1"lumi.acpartner.mcn02 使用 "powerCost"
data_typestr统计类型,见下表;较旧设备可能使用不带 _v3 的对应类型
limitint返回的最大条目数
time_startint开始时间戳(秒)
time_endint结束时间戳(秒)
data_type粒度旧设备可能使用
stat_hour_v3小时stat_hour
stat_day_v3stat_day
stat_week_v3stat_week
stat_month_v3stat_month

返回值是统计条目列表,每项通常包含:

字段类型说明
timeint统计周期对应的 Unix 时间戳(秒)
valuestr统计值,通常是 JSON 数组字符串,例如 "[48.476]"

value 是 JSON 字符串时,使用 json.loads() 解析:

python
import json

value = json.loads(item["value"])[0]

已知限制

  • 统计接口仅支持部分设备,不同型号可能使用不同 API。
  • keydata_type 必须根据设备型号确定,不能假定所有设备都支持 "7.1"_v3 类型。
  • 相关讨论见 issue #46

参考:米家统计接口文档

基于 GPL-3.0 许可证发布