WiFi

基于 WiFi 传输协议的设备使用 xiaomi_miio 组件。

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

Token 获取

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

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


通用方法

注意

此方法无法获取加密过的 token。

在安装有 Node.js 的电脑上安装 miio 库

sudo npm install -g miio

之后,重置待连小米设备的网络,使其产生 WIFI 热点,将电脑连接至该热点上,之后输入:

miio --discover

即获取设备的 token。


已 ROOT 的安卓手机 & 安卓模拟器(推荐)

  1. 打开手机 ROOT 权限,赋予文件管理器权限;
  2. 下载安装并使用 米家 App(5.0.19及之前版本)连接所有需要的设备;
  3. 使用文件管理器(例如 ES 文件管理器),进入 /data/data/com.xiaomi.smarthome/databases/,复制粘贴 miio2.db 至有权限的文件夹 (例如 下载);
  4. 使用 SQL 读取 App (推荐 aSQLiteManager)打开 miio2.db 文件;
  5. 方法一:直接打开 devicerecord 项,手动寻找设备 token方法二:点选 Query,输入 select token from devicerecord where localIP is '192.168.0.1',将其中的 IP 地址替换为你想要查询的米家设备的 IP。 方法三下载 miio2.db 文件,将文件上传至网页:http://miio2.yinhh.com/ 直接获取。
  6. 记录下 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

飞利浦智睿系列灯具

目前支持的操作有开 on,关 off,色温设置 set_cct 以及亮度设置 set_bright

示例配置

light:
  - platform: xiaomi_miio
    name: Xiaomi Philips Smart LED Ball
    host: 192.168.130.67
    token: YOUR_TOKEN

变量说明:

  • host (必填): 灯具的 ip
  • token (必填): 灯具的 token
  • name (可选): 灯具的昵称

扫地机器人(一、二代)

目前支持的控制指令有启动 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_time minutes 分钟 最近清洁时间
cleaned_area square meter 平方米 最近清洁区域统计
main_brush_left hours 小时 主刷剩余寿命
side_brush_left hours 小时 边刷剩余寿命
filter_left hours 小时 滤网剩余寿命
cleaning_count 总清洁通道数
total_cleaned_area square meter 平方米 总清洁范围
total_cleaning_time minutes 分钟 总清洁时间

插座及插线板

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 监测仪

本组件为自定义组件,请至 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

空调伴侣

本组件为自定义组件,请至 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'