『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 18195|回复: 14

[经验分享] HA模拟小米无线开关的单击/双击动作、控制所有米家设备

[复制链接]

100

主题

2878

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11487
金钱
8544
HASS币
460

教程狂人突出贡献

发表于 2020-6-8 19:30:33 | 显示全部楼层 |阅读模式
本帖最后由 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单侧假装发生了单击/双击事件)。
~~~~~~~~~
这个东西准确的说就是一个按钮,只是一个二进制传感器,官方把它叫做开关,误导了很多逻辑思维能力不佳的人。
回复

使用道具 举报

0

主题

39

帖子

779

积分

高级会员

Rank: 4

积分
779
金钱
740
HASS币
0
发表于 2020-6-9 12:14:06 | 显示全部楼层
小米各类传感器官方文档有详细说明,https://www.home-assistant.io/in ... sensor.xiaomi_aqara
回复

使用道具 举报

24

主题

122

帖子

1309

积分

金牌会员

Rank: 6Rank: 6

积分
1309
金钱
1187
HASS币
0
发表于 2020-6-9 16:15:11 | 显示全部楼层
一共有5个动作 分别是 单击 双击 3 4 many
zigbee网关专题:最合适你的网关 访问https://z2m.store/了解更多
回复

使用道具 举报

3

主题

145

帖子

774

积分

高级会员

Rank: 4

积分
774
金钱
629
HASS币
0
发表于 2020-6-9 23:13:07 | 显示全部楼层
有没有试过switch能不能用?
回复

使用道具 举报

100

主题

2878

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11487
金钱
8544
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-10 06:47:31 | 显示全部楼层
猩猩点灯 发表于 2020-6-9 23:13
有没有试过switch能不能用?

你是说哪个switch?

zigbee开关肯定没问题,原生支持就很好。

这个帖子说的无线按钮(官方叫无线开关,我觉得这个名字不好,容易混淆)本来的功能不受影响,只是有时候需要自动发出点击事件,而不是真的去手动按。

那个switch游戏机?不懂
回复

使用道具 举报

0

主题

242

帖子

1711

积分

金牌会员

Rank: 6Rank: 6

积分
1711
金钱
1469
HASS币
0
发表于 2020-6-10 07:55:29 | 显示全部楼层
楼主的意图,是不是想用hass控制小米平台中那些无法接入hass的设备
回复

使用道具 举报

100

主题

2878

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11487
金钱
8544
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-10 08:06:15 | 显示全部楼层
ybcswz 发表于 2020-6-10 07:55
楼主的意图,是不是想用hass控制小米平台中那些无法接入hass的设备

差不多吧。

之前是在米家app里设置单击启动警戒双击取消警戒,然后ha用模拟单击双击的方法实现对小米网关警戒状态的控制,以确保ha和米家网关/app里关于警戒的状态是同步的。

现在ha升级110之后,就不需要这么干了,原生支持miio接口控制网关的警戒状态。
回复

使用道具 举报

3

主题

145

帖子

774

积分

高级会员

Rank: 4

积分
774
金钱
629
HASS币
0
发表于 2020-6-13 08:45:07 | 显示全部楼层
XCray 发表于 2020-6-10 06:47
你是说哪个switch?

zigbee开关肯定没问题,原生支持就很好。

不是,就是zigbee的开关,回头试试看
回复

使用道具 举报

3

主题

145

帖子

774

积分

高级会员

Rank: 4

积分
774
金钱
629
HASS币
0
发表于 2020-6-13 08:54:07 | 显示全部楼层
猩猩点灯 发表于 2020-6-13 08:45
不是,就是zigbee的开关,回头试试看

小米插件定制的,我买的别家的86开关zigbee没有这样的事件,https://www.home-assistant.io/in ... ensor.xiaomi_aqara/
回复

使用道具 举报

0

主题

4

帖子

44

积分

新手上路

Rank: 1

积分
44
金钱
40
HASS币
0
发表于 2020-10-19 00:33:05 | 显示全部楼层
前来学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-5 23:34 , Processed in 0.311050 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表