本帖最后由 XCray 于 2020-5-30 09:22 编辑
前言 0.110.0版本,一个重大变化就是集成了基于xiaomi_miio接口的警戒控制功能。
在此之前,我一直使用manual平台的警戒控制面板,通过模拟无线按键的代码修改实现与米家网关的同步。
其实,我曾在两年前向python-miio的作者rytilahti、syssi提出过这个建议,当时他还有些纠结,所幸终于想通了。感谢rytilahti和syssi!
这是具体说明:
安装
根据官方文档,安装倒是很顺利。在前端界面就可以完成,不需要编辑yaml文件。
在侧边栏选“配置”,然后点击“集成”,然后点右下角的加号,就可以找到 xiaomi_miio,勾选 “连接到小米网关” 然后点“提交”,接下来填入正确的 “IP 地址” 和32个字符的 “token”,还可以设置一个好记的名称。提交后可以选择网关所在的区域。
获取token对大家来说不是难事儿,就不说了。实在需要HA的文档里也有。
测试
多了一个毫无用处的“在家警戒”模式,还没找到在哪儿可以去掉。
在hass前端操作,网关实时响应,手机上的米家app几乎也是零时延。
但反过来,在手机app操作,前端可以看到警戒打开/关闭的时延大约为5~25秒。
主要原因:(根据我之前抓包的记忆)miio接口并没有从网关发出的状态改变通知消息,而是要靠hass这边主动发起查询。所以实时性无法保证。
价值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 20200530补充: 为了在hass中用好小米网关的警戒模式,我经过长期思考和实践,共摸索出两种方案,简单称之为新方案和旧方案。
新方案: 就是110版本开始,直接在前端配置增加小米警戒面板即可,不需要任何代码修改或复杂配置,当然,提前获取token是必须的。在110版本之前,我曾经尝试过自己修改miio接口的代码,原理和这个方案完全一样。
旧方案:
旧方案稍微复杂一点儿,但思路上还是很清晰的。
1. 配置manual alarm control panel
2. hass增加模拟无线按钮单击双击的能力,需要修改代码,简单几行,可参见我在github上的repo
3. 在米家app里设置自动化,单击布防、双击撤防
4. 在hass中设置自动化,布防模拟单击、撤防模拟双击
5. 在hass中设置自动化,单击布防、双击撤防
这样,hass这边可以根据别的条件(蓝牙检测手机)自动布防撤防,同时模拟无线按钮单击或双击的动作,触发小米网关联动。
网关这头呢,也可以把无线按钮放在门口或随身携带,出门前单击,小米网关和hass同步布防。如果随身携带,进门前进入zigbee有效范围双击,网关和hass同步撤防。
当然,还可以利用门锁触发布防和撤防的动作。
方案比较:
利用miio接口的新方案,优点是释放了无线按钮、可以减少自动化条目数量。
一个小缺点是警戒状态变动的实时同步是单向的(hass->网关实时,反之非实时),好在网关->hass的同步基本没啥意义(因为米家app和网关这边没有一个很好的机制自动布防撤防)。
另外,除非不得已,原生的肯定是最优选项,所以,综合考虑,还是优先推荐新方案。
|