本帖最后由 XCray 于 2021-5-25 06:57 编辑
作用就是HA直接传递消息给米家网关,网关就会真的认为真的有人真的在按米家无线开关,从而可以触发米家app里的米家自己的自动化、控制米家里无法接入HA的设备。这样,就可以实现在HA里自动化控制那些无法接入HA的米家设备的目的。
实现也很简单,只需要修改homeassistant/components/ xiaomi_aqara目录下的__init__.py文件、增加一个服务即可(services.yaml也可以一道修改,不是必须,只是界面更完整)。
~~~~~~~修改方法——__init__.py:
(我自己已经不用了,所以也不再维护,随着HA版本升级,该文件也会不断变化,有能力的自己看着修改吧)
- 前面定义常量部分,增加:
SERVICE_SIMULATE_BUTTON = 'simulate_button'
复制代码
- 定义参数填写格式要求(我也不知道叫什么合适):
SERVICE_SCHEMA_SIMULATE_BUTTON = vol.Schema({
vol.Required(ATTR_DEVICE_ID):
vol.All(cv.string, vol.Length(min=14, max=14)),
vol.Required('status'):
vol.All(cv.string, vol.Length(min=5, max=14)) #click/double_click
})
复制代码
- 定义服务项:
def simulate_button_service(call):
'''Service to simulate click/double_click of the wireless button'''
device_id = call.data.get(ATTR_DEVICE_ID)
gateway = call.data.get(ATTR_GW_MAC)
simu_status = call.data.get('status')
gateway.write_to_hub(device_id, status=simu_status)
复制代码
- 注册服务项:
hass.services.register(
DOMAIN, SERVICE_SIMULATE_BUTTON, simulate_button_service,
schema=_add_gateway_to_schema(xiaomi, SERVICE_SCHEMA_SIMULATE_BUTTON))
复制代码
~~~~~~~~~~~~~~~~
services.yaml修改不是必须的,只是在UI的开发者工具那儿测试时增加提示内容:
simulate_button:
description: Simulate click/double_click of the wireless button, important for automations.
fields:
gw_mac:
description: MAC Address of the Xiaomi Aqara Gateway.
example: 34ce0091db83
device_id:
description: sid of the wireless button to simulate
example: 158d0000d27735
status:
description: Action to simulate, either click or double click.
example: click
复制代码
具体可参考:
https://github.com/xcray/xiaomi_ ... b7978712c03cfaf1ed2
国内镜像地址:
GitHub - xcray/xiaomi_aqara-button-simulation-on-hass at bc86ddb5513b03fc849b2b7978712c03cfaf1ed2 (fastgit.org)
(后来错误地删除了一些内容,github不太会玩儿,不知道咋恢复,好在历史版本都有)
实在感兴趣的话,再交流吧
~~~~~~~~~~~~~~~~~~~~~
如果只是在HA里使用,那么HA本身就可以触发事件,直接触发“xiaomi_aqara.click”类型的事件就可以了,事件数据:
click_type: single
entity_id: binary_sensor.id_of_button
复制代码
click_type可以是single,就是单击,还可以是double、 long_click_press、 hold(好像二代只有单双击)。
~~~~~~~~~~~~~~~~~~~~~~~~~~
当然,触发事件和动作模拟是有着本质区别的!
触发事件在hass内部没有问题,也够用,但无法和米家网关交互(仅仅是在HA单侧假装发生了单击/双击事件)。
~~~~~~~~~
这个东西准确的说就是一个按钮,只是一个二进制传感器,官方把它叫做开关,误导了很多逻辑思维能力不佳的人。