本帖最后由 抚音 于 2018-9-5 15:52 编辑
楼主最近刚入坑 HA,原来的米家空调伴侣加不了,所以换了个 Aqara 的空调伴侣,成功在 HA 中识别到所有 ZigBee 设备,但是发现 Aqara 的墙壁插座能加不能控制。估计是因为 86 插座老外也不用,翻遍国内外论坛都没能找到解决方案。
受到 cnk700i 的启发:踩个使用Aqara无线开关(贴墙式)的坑,看了一下 Aqara 的 网关局域网通讯协议,发现是 HA 的代码有问题。原本应该发送“channel_0”作为控制代码,不知道为什么变成了“status”。有可能小米网关里是要发这个的,但是由于楼主只有空调伴侣,所以不去深究原因了。
为了解决问题,代码还是要改的,编辑文件:
/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/switch/xiaomi_aqara.py
找到代码:
elif model in ['86plug', 'ctrl_86plug', 'ctrl_86plug.aq1']:
devices.append(XiaomiGenericSwitch(device, 'Wall Plug',
'status', True, gateway))
更改为:
elif model in ['86plug', 'ctrl_86plug', 'ctrl_86plug.aq1']:
devices.append(XiaomiGenericSwitch(device, 'Wall Plug',
'channel_0', True, gateway))
此外,显示功耗的代码也有问题,找到顶部声明变量的部分:
POWER_CONSUMED = 'power_consumed'
更改为:
POWER_CONSUMED = 'energy_consumed'
保存文件。
订正以下灰色部分内容:
如果直接修改 core.entity_registry,HA 可能会重复添加实体,所以建议直接删除/重命名这个文件就可以了。
此时如果重启 HA,以后再添加的墙壁插座应该就可以被控制了,但以前识别到的插座却显示不出来,因为更改后新的 UID 和原本的 UID 不同,所以还需要自己做更正。如果是 0.77 之前的 HA,直接修改 HA 主目录下的 entity_registry.yaml,如果是 0.77 之后的 HA,需要修改主目录中 .storage 下的 core.entity_registry。
找到:
"entity_id": "switch.wall_plug_158d0001xxxxxx",
把对应的 UID:
"unique_id": "status158d0001xxxxxx"
更改为:
"unique_id": "channel_0158d0001xxxxxx"
保存,重启 HA,之后应该就可以控制墙壁插座并正确显示所有插座的功耗了。
|