共计 3573 个字符,预计需要花费 9 分钟才能阅读完成。
翻译自 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 搞一发。
关于添加网关暂时做了详细的翻译,自动化和智能因为原文例子本身很简单,这里就不做详细解释了。(其实是译者自己也没玩到这一步,如果有新的心得体会再做详细的解释或者翻译。估计会针对这些自动化配置写个详细的说明)
如果测试下来跟原文有出入的地方,我会直接修改。