乐趣区

译home-assistant上添加小米网关

翻译自 https://www.home-assistant.io/integrations/xiaomi_aqara/

小米网关添加到 home assistant 的方法的一些翻译。如果测试过程中发现有些出入的,还会进行一定的修改。

小米网关

home assistant 可以添加小米网关,以及配套的设备进入集成到系统 (integration) 中。

但是需要注意,小米网关有两个版本,v1 和 v2。v1 可以直接用到 home assistant 中。但是 v2 可能没有那么直接。需要打开本地 API 的选项。

支持的设备

(这里只翻译我认得的或者我可能用得到的)

  • Aqara 的设备基本都支持,例如空气净化器,墙壁开关,开关,门锁啥的
  • 小米智能开关
  • 智能魔方?
  • 煤气泄漏检测器
  • 网关(包括等,亮度传感器,报警器)
  • 移动传感器
  • 智能窗帘
  • 智能插座
  • 延误传感器
  • 温度湿度传感器
  • 振动传感器
  • 漏水传感器

不支持的设备

  • 小米一代网关,因为米家不支持打开开发者模式
  • 网关的收音机(老年人模式呢!!)
  • 网关的按钮(你也用不着啊)
  • 小米空气净化器(尴尬)

设置小米网关

这里指向了一个 domoticz 的教程,我不知道为啥我打不开,但是具体的在米家 app 打开开发者模式的说明如下:

这里实际上是在米家的手机 app 上进行操作,方法是选中网关后,点击右上角的点点点,选择关于,狂点最下面的版本号,进入开发者模式,然后就可以选择局域网通讯协议,打开该协议即可。注意,这里网关会提供一个秘钥,这个是重要的参数。

然后编辑 home assistant 的 configuration.yaml 文件(肯定有人问这个文件在哪里,这个文件在~/.homeassistant 目录下,因为是个隐藏文件夹所以藏得特别好!)

单个网关

# 你可以不写 MAC 地址,如果你只有一个网关
xiaomi_aqara:
  discovery_retry: 5
  gateways:
    - key: xxxxxxxxxxxxxxxx

(译者注,看到这里的 key 了么,这就是米家 app 里面那个秘钥,抄下来)

多个网关

# 12 位的 MAC 地址可以从网关上抄的来
# 译者注,当然如果你是比较会折腾路由器的,还能从路由器的设备列表里找
xiaomi_aqara:
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx

在网段内搜索网关

xiaomi_aqara:
  interface: '192.168.0.1'
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx

配置参数说明

gateways

(map)(必要)
列出所有需要配置的网关

| mac
| (字符串)(可选)
| 网关的的 MAC 地址,不需要带:。如果只有一个网关,就是可选
|
| key
| (字符串)(可选)
| 网关的秘钥。
|
| host
| (字符串)(可选)
| 网关的 ip 地址、如果是使用多播寻找网关的方式,这个参数是没用的。
|
| disable
| (bool 值)(可选)
| 使网关失效,只有当你不想让网关集成到系统中时,才有用,默认值是 false

discovery_retry
(整数)(可选)
Home Assistant 重新连接网关的次数。默认值,3

interface
(字符串)(可选)
网络的接口。(应该是搜索小米网关的网络断的大网关)

译者想折腾的一些内容

还没测试的一些想法。

如果是知道网关的 mac 地址,固定的 ip 地址,而且我有多个网关,那应该可以这么写配置。

xiaomi_aqara:
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
      host: xxx.xxx.xxx.xxx
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
      host: xxx.xxx.xxx.xxx

而且如果根据官方文档对一些传感器的配置方式,还可以给每个网关起个名字?

xiaomi_aqara bedroom:
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
      host: xxx.xxx.xxx.xxx
      
xiaomi_aqara kitchen:
  gateways:
    - mac: xxxxxxxxxxxx
      key: xxxxxxxxxxxxxxxx
      host: xxx.xxx.xxx.xxx

服务

小米网关单独可以提供如下的服务:

服务 xiaomi_aqara.play_ringtone

播放一个特定的铃声,固件版本至少在 1.4.1_145 以上。下面是一个例子

服务属性 是否可选 描述
gw_mac 必选 小米网关的 MAC 地址
ringtone_id 必选 一种铃声的 id
ringtone_vol 可选 声音的音量

可选的铃声 id 有:

  • 报警

    • 0- 警车声 1
    • 1- 警车声 2
    • 2- 事故
    • 3- 倒计时
    • 4- 闹鬼?
    • 5- 狙击枪
    • 6- 战斗
    • 7- 空袭
    • 8- 旺财叫
  • 门铃

    • 10- 门铃
    • 11- 窍门声
    • 12- 笑声
    • 13- 闹铃
  • 闹钟

    • 大家自己去试吧。我也不知道怎么翻译这些歌
    • 编号从 20 到 29 都是默认的闹钟声音
  • 自定义铃声(通过米家上传,编号从 10001 开始)

服务 xiaomi_aqara.stop_ringtone

停止播放铃声,立刻,马上!!

服务属性 是否可选 描述
gw_mac 必选 小米网关的 MAC 地址

服务 xiaomi_aqara.add_device

允许网关添加设备权限。新设备在按了配对按钮后,可以添加到这个网关上。我个人建议还是用米家 app 干这个。

服务属性 是否可选 描述
gw_mac 必选 小米网关的 MAC 地址

服务 xiaomi_aqara.remove_device

删除一个特定的设备。如果该设备需要和另一个网关配对。
还是建议用米家 app 做这个。

服务属性 是否可选 描述
gw_mac 必选 小米网关的 MAC 地址
device_id 必选 需要删除的硬件地址

例子

长按智能按钮

这个例子可以通过长按智能按钮,播放一段狗叫的声音。并且如果单击按钮一次,停止播放。只针对第一代智能按钮有效。

当然如果音效播放完了自动也就停了

- alias: Let a dog bark on long press
  trigger:
    platform: event
    event_type: xiaomi_aqara.click
    event_data:
      entity_id: binary_sensor.switch_158d000xxxxxc2
      click_type: long_click_press
  action:
    service: xiaomi_aqara.play_ringtone
    data:
      gw_mac: xxxxxxxxxxxx
      ringtone_id: 8
      ringtone_vol: 8

- alias: Stop barking immediately on single click
  trigger:
    platform: event
    event_type: xiaomi_aqara.click
    event_data:
      entity_id: binary_sensor.switch_158d000xxxxxc2
      click_type: single
  action:
    service: xiaomi_aqara.stop_ringtone
    data:
      gw_mac: xxxxxxxxxxxx

双击智能按钮

如果双击了按钮,开关客厅的灯。

- alias: Double Click to toggle living room lamp
  trigger:
    platform: event
    event_type: xiaomi_aqara.click
    event_data:
      entity_id: binary_sensor.switch_158d000xxxxxc2
      click_type: double
  action:
    service: light.toggle
    data:
      entity_id: light.living_room_lamp

故障排查

这里就暂时不翻译了,如果译者实际碰到这些问题,在做着重解释。

后记和一些废话

因为准备试一下添加小米网关,并且把所有的自动化控制做到本地。毕竟谁也不能保证家里不断网 有一次电信神奇的断网导致家里的自动化控制全部失效,而且很神奇的是米家的一些智能化的控制,哪怕是同一个网关的多个操作,也要搞到云端,这直接导致一旦没网基本回到原始时代。

所以痛定思痛,开始折腾自己的智能化替代方案,原来试了 domoticz,但是不好用,而且 python 的脚本还执行不了。然后就发现了基于 python 的 home assistant,作为 python 忠实的信徒,决定基于 raspberry 搞一发。

关于添加网关暂时做了详细的翻译,自动化和智能因为原文例子本身很简单,这里就不做详细解释了。(其实是译者自己也没玩到这一步,如果有新的心得体会再做详细的解释或者翻译。估计会针对这些自动化配置写个详细的说明)

如果测试下来跟原文有出入的地方,我会直接修改。

退出移动版