设备及服务 - 小米生态链 - WiFi

优质
小牛编辑
137浏览
2023-12-01

基于 WiFi 传输协议的设备使用 xiaomi_miio 平台。

所有的 WiFi 设备接入 Home Assistant 前都必须获取设备的 token。

Token 获取

小米 WIFI 设备需要获取 32 位的 token 才可以接入 HA,详见下方说明。

特别注意,记录下 token 后请直接使用米家 App 配对设备,勿再重置网络。否则,token 会发生变更。


已 ROOT 的安卓手机 或 电脑安卓模拟器(推荐)

  1. 打开手机 ROOT 权限,赋予文件管理器权限;
  2. 下载安装并使用『米家』App(请使用 5.0.19及之前版本 App,新版 App 已屏蔽 token 提取)连接所有需要的设备;
  3. 使用文件管理器(例如 ES 文件管理器),进入 /data/data/com.xiaomi.smarthome/databases/,复制粘贴 miio2.db 至有权限的文件夹 (例如 下载)。注意由根目录进入而不是主目录
  4. 方法一:使用 SQL 读取 App (推荐 aSQLiteManager),打开 miio2.db 文件直接打开 devicerecord 项,手动寻找设备 token方法二:使用 SQL 读取 App (推荐 aSQLiteManager),点选 Query,输入 select token from devicerecord where localIP is '192.168.0.1',将其中的 IP 地址替换为你想要查询的米家设备的 IP。 方法三(推荐)下载 miio2.db 文件至电脑,将文件上传至网页:http://miio2.yinhh.com/ 直接获取。
  5. 记录下 token,建议保存在备忘录内。

Windows and Android

  • 通过米家 app(5.0.19及之前版本)连接设备;
  • 打开手机的开发者模式和 USB 调试模式,将手机连至电脑;
  • 获取 ADB 工具:https://developer.android.com/studio/releases/platform-tools.html
  • 创建 com.xiaomi.smarthome 的应用备份:
.\adb backup -noapk com.xiaomi.smarthome -f backup.ab
  • 如果你的终端显示如下信息: "有多个设备或模拟器",使用下列指令显示所有设备:
.\adb devices

并执行下列指令:

.\adb -s DEVICEID backup -noapk com.xiaomi.smarthome -f backup.ab # (with DEVICEID the device id from the previous command)
  • 在手机上选择确认备份,请勿输入任何密码;
  • 获取 ADB 备份提取工具:https://sourceforge.net/projects/adbextractor/
  • 提取所有备份文件:
java.exe -jar ../android-backup-extractor/abe.jar unpack backup.ab backup.tar ""
  • 解压 ".tar" 文件;
  • 使用 SQLite Manager 等类似工具,打开 sqlite 文件 miio2.db;
  • 获取 "devicerecord" 数据表,即 token。

Linux + 已 Root 的 Android 设备

此教程建立在 安卓手机已 root 的情况下。

  1. 通过米家 app(5.0.19及之前版本)连接设备;
  2. 打开手机的开发者模式和 USB 调试模式,将手机连至电脑;
  3. 获取 ADB 工具,在终端中输入 apt-get install android-tools-adb
  4. adb devices 将会显示你的设备
  5. adb root (仅适用于 Linux development builds: ro.debuggable=1)
  6. adb shell
  7. echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db 返回设备 token

飞利浦智睿系列灯具

全系设备支持,包括护眼灯 2 代,灯泡,蜡烛灯泡及吸顶灯。目前支持的操作有开 on,关 off,色温设置 set_cct 以及亮度设置 set_bright

示例配置

light:
  - platform: xiaomi_miio
    name: Xiaomi Philips Smart LED Ball
    host: 192.168.130.67
    token: YOUR_TOKEN
    model: philips.light.bulb

变量说明:

  • host (必填): 灯具的 ip
  • token (必填): 灯具的 token
  • name (可选): 灯具的昵称
  • model (可选): 灯具类型,默认自动识别。支持的有 philips.light.bulb, philips.light.candle2, philips.light.sread1, philips.light.ceiling, philips.light.zyceiling

扫地机器人(一、二代)

目前支持的控制指令有启动 turn_on, 暂停 pause,原地停止 stop,回到充电桩 return_to_home,关闭并回到充电桩 turn_off,定位 locate,定点打扫 clean_spot,设定吸力 set_fanspeed 以及远程控制。

示例配置

vacuum:
  - platform: xiaomi_miio
    host: 192.168.1.2
    token: YOUR_TOKEN

变量说明:

  • host (必需): 机器人 IP
  • token (必需): 机器人 token
  • name (可选): 机器人昵称

专有指令

除了 HA 中所有扫地机器人所能使用的通用指令 (turn_on, turn_off, start_pause, stop, return_to_home, locate, set_fanspeedsend_command)外,小米的扫地机器人另支持一些特殊的远程操控指令,包括: xiaomi_remote_control_start, xiaomi_remote_control_stop, xiaomi_remote_control_movexiaomi_remote_control_move_step

  • vacuum/xiaomi_remote_control_start

    远程启动

    属性可选性描述
    entity_id指明 ID 仅对部分设备有效,否则全局响应
  • vacuum/xiaomi_remote_control_stop

    退出远程控制模式

    属性可选性描述
    entity_id指明 ID 仅对部分设备有效,否则全局响应
  • vacuum/xiaomi_remote_control_move

    远程控制扫地机器人,确保操作前已经开启远程控制模式 remote_control_start

    属性可选性描述
    entity_id指明 ID 仅对部分设备有效,否则全局响应
    velocity速度,值区间为 -0.29 至 0.29
    rotation旋转, 值区间为 -179° 至 179°
    duration持续时间
  • vacuum/xiaomi_remote_control_move_step

    使用此指令进入遥控模式,执行一项控制命令,然后退出手动控制模式。

    属性可选性描述
    entity_id指明 ID 仅对部分设备有效,否则全局响应
    velocity速度,值区间为 -0.29 至 0.29
    rotation旋转, 值区间为 -179° 至 179°
    duration持续时间

专有属性

除了 HA 上所有扫地机器人共有的默认属性 [vacuum component attributes] (battery_icon, cleaned_area, fan_speed, fan_speed_list, status, params),小米扫地机器人另外拥有一些特别的属性。

它们是:最近清洁时间 cleaning_time、勿扰模式 do_not_disturb,主刷剩余寿命 main_brush_left,边刷剩余寿命 side_brush_left,滤网剩余寿命 filter_left,清洁通道统计cleaning_count,清洁区域统计 total_cleaned_area 以及清洁时间统计 total_cleaning_time,详见下表:

属性单位说明
do_not_disturb勿扰模式开启关闭状态
cleaning_timeminutes 分钟最近清洁时间
cleaned_areasquare meter 平方米最近清洁区域统计
main_brush_lefthours 小时主刷剩余寿命
side_brush_lefthours 小时边刷剩余寿命
filter_lefthours 小时滤网剩余寿命
cleaning_count总清洁通道数
total_cleaned_areasquare meter 平方米总清洁范围
total_cleaning_timeminutes 分钟总清洁时间

插座及插线板

支持小米及创米各类插座及插线板,注意 Zigbee 插座请至对应文档查询接入方法。

switch:
  - platform: xiaomi_miio
    name: Original Xiaomi Mi Smart WiFi Socket
    host: 192.168.130.59
    token: YOUR_TOKEN

空气净化器及加湿器

本组件为合并组件,2 种产品通用,配置方法相同。分别支持的数值有:

配置方法

fan:
  # 空气净化器
  - platform: xiaomi_miio
    name: Xiaomi Air Purifier 2
    host: 192.168.130.66
    token: YOUR_TOKEN
    model: zhimi.airpurifier.m1
  # 空气加湿器
  - platform: xiaomi_miio
    name: Xiaomi Air Humidifier
    host: 192.168.130.72
    token: 2b00042f7481c7b056c4b410d28f33cf
    model: zhimi.humidifier.v1

model 参数为支持的产品类型,可选项有:zhimi.airpurifier.m1, zhimi.airpurifier.m2, zhimi.airpurifier.ma1, zhimi.airpurifier.ma2, zhimi.airpurifier.sa1, zhimi.airpurifier.sa2, zhimi.airpurifier.v1, zhimi.airpurifier.v2, zhimi.airpurifier.v3, zhimi.airpurifier.v5, zhimi.airpurifier.v6, zhimi.humidifier.v1zhimi.humidifier.ca1。组件自带型号识别,为避免识别错误或节省识别时间,可手动指定。


小米净水器

本组件为自定义组件,请至 Github 下载 mi_water_purifier.py,放入 custom_components/sensor/ 文件夹内(文件层级项目本身已经很清晰地给出了),在 configuration.yaml 添加如下设置:

sensor:
  - platform: mi_water_purifier
    host: YOUR_SENSOR_IP
    token: YOUR_SENSOR_TOKEN
    name: YOUT_SENSOR_NAME

接入后自动会生成几项相关的传感器数值,如果需要集中查看,请使用群组:

group:
  - xiaomi_water_purifier:
    name: Xiaomi Water Purifier
    icon: mdi:water
    entities:
      - sensor.tap_water
      - sensor.filtered_water
      - sensor.pp_cotton_filter
      - sensor.front_active_carbon_filter
      - sensor.ro_filter
      - sensor.rear_active_carbon_filter

PM 2.5 监测仪

官方(v0.65 及之后)

sensor:
  - platform:  xiaomi_miio
    host: YOUR_SENSOR_IP
    token: YOUR_SENSOR_TOKEN
    name: YOUT_SENSOR_NAME

自定义组件(v0.64 及之前)

请至 Github 下载 mi_air_quality_monitor.py,放入 custom_components/sensor/ 文件夹内(文件层级项目本身已经很清晰地给出了),在 configuration.yaml 添加如下设置:

sensor:
  - platform: mi_air_quality_monitor
    host: YOUR_SENSOR_IP
    token: YOUR_SENSOR_TOKEN
    name: YOUT_SENSOR_NAME

空调伴侣

此部分文档仅涵盖基于 WiFi 的『空调控制』功能实现,网关功能请至对应文档页查看。

本组件为自定义组件,请至 Github 下载 mi_acpartner.py,放入 custom_components/climate/ 文件夹内,在 configuration.yaml 添加如下设置:

climate:
  - platform: mi_acpartner
    name: mi_acpartner
    host: 10.0.0.234
    token: 8171378a40b1a77ee7a8254b15c75cfc
    target_sensor: sensor.temperature_158d00015aefc4

变量说明:

  • host (必填): 空调伴侣 IP
  • token (必填): 空调伴侣 token
  • name (可选): 空调伴侣昵称
  • target_sensor (必填):指定温度计,无内置温度计空调使用

插件默认支持大部分品牌的默认空调码,如果无法控制,请手动添加红外码,例如:

climate:
  - platform: mi_acpartner
    name: mi_acpartner
    host: 10.0.0.234
    token: 9878a40b1a77ee7a8254b15c75cfb
    target_sensor: sensor.temperature_158d00015a
    sync: 60
    customize:
      swing:        //摆风
        top: 010501820000261801
        down: FEADASDSDSDSDSDSADSAFADSFASA
      fan:      //风速
        max: FEADASDSDSDSDSDSADSAFADSFASAD
        med: FEBDASDSDSDSDSDSADSAFADSFASAR
        min: 010501A20000261B01

Yeelight 灯具

使用前请确保在 Yeelight app 中与设备配对,升级至最新固件并开启“局域网控制(LAN Control)”,同时确定设备的 IP。

注意

Yeelight App 3.0 版本前『局域网控制』为『极客模式』。

示例配置

light:
  - platform: yeelight
    devices:
      192.168.1.25:
        name: Living Room
        transition: 1000
        use_music_mode: True #(defaults to False)
        save_on_change: False #(defaults to True)
      192.168.1.13:
        name: Front Door

变量说明:

  • ip (必须): IP
  • name (可选): 昵称
  • transition (O可选, 默认 350): 光效过渡时间(毫秒)
  • use_music_mode (可选, 默认 False): 开启音乐随动模式,默认关闭
  • save_on_change (可选, 默认 True): 保存当前状态为下次启动默认状态

音乐随动模式

每个灯泡每分钟的网络请求数最大为 60,这个限制可以通过开启音乐随动模式突破。在音乐随动模式中,灯具会响应任何时间传输回的控制信号,也就是说通信协议始终处于开启状态。但是该项设置并不适合部分场景,请按需配置。


红外万能遥控

注意

原生组件仅 0.63.0 及之后版本支持,既往版本请使用自定义组件接入。

示例配置

remote:
  - platform: xiaomi_miio
    host: 192.168.42.42
    token: YOUR_TOKEN
    name: "IR remote"
    slot: 1
    timeout: 30
    hidden: false
    commands:
          activate_towel_heater:
            command:
              - raw:base64:[optional_frequency]
          read_bad_poem:
            command:
              - raw:base64:[optional_frequency]
              - pronto:pronto_hex:[optional_repeat]

变量说明:

  • host: 设备 IP
  • token: 设备 token
  • name: 昵称
  • slot: 存放红外码的栏,默认 1
  • timeout: 学码延时
  • hidden: 前端隐藏,默认 true
  • command: 红外码

使用方法

此组件默认将生成 remote.xiaomi_miio_learn_command service 用于学码。

使用时,前往 开发者工具 —— Service 面板——选择remote.xiaomi_miio_learn_command —— Call Service ——将待学码设备对准万能遥控操作输出红外码,之后前端界面将显示接收到的码,即可添加进配置。

所学码形如 raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE=,部分带有频率 raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE=:38400

部分设备供应商会提供十六进制码,形如 pronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6Epronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6E:2,也可直接添加使用。

控制按钮生成

此组件仅作学码使用,没有实际交互功能。成功学码后,可使用 script 脚本组件生成控制按钮:

script:
  towel_heater:
    sequence:
      - service: remote.send_command
        entity_id: 'remote.bathroom_remote'
        data:
          command:
            - 'activate_towel_heater'
  please_cover_your_ears:
    sequence:
      - service: remote.send_command
        entity_id: 'remote.bathroom_remote'
        data:
          command:
            - 'read_bad_poem'

小米 Wifi 放大器

小米 Wifi 放大器使用 xiaomi_miio 组件接入。

示例配置

device_tracker:
  - platform: xiaomi_miio
    host: 192.168.130.73
    token: YOUR_TOKEN

米家 IH 电饭煲

本组件为自定义组件,请至 Github 下载 xiaomi_cooker.py,放入 custom_components/sensor/ 文件夹内(文件层级项目本身已经很清晰地给出了),在 configuration.yaml 添加如下设置:

sensor:
  - platform: xiaomi_cooker
    name: Xiaomi Rice Cooker
    host: 192.168.130.88
    token: b7c4a758c251955d2c24b1d9e41ce47d
    model: chunmi.cooker.normal2

变量说明:

  • host (必填): 电饭煲 IP
  • token (必填): 电饭煲 token
  • name (可选): 名称,仅限英文
  • model (可选): 型号,支持 chunmi.cooker.normal2chunmi.cooker.normal5