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

 找回密码
 立即注册
查看: 6602|回复: 1

[求助] 如何让树莓派gpio的二进制传感器实现单击、双击、长按

[复制链接]

3

主题

22

帖子

154

积分

注册会员

Rank: 2

积分
154
金钱
132
HASS币
0
发表于 2020-4-3 19:52:03 | 显示全部楼层 |阅读模式
本帖最后由 qiang19862006 于 2020-4-3 19:53 编辑

       背景:我的HA是安装在树莓派上的,为了节省成本(小米全家桶实在太贵了),我把树莓派放在了厨房集成吊顶上,把全屋的灯具控制线也全部接到了厨房,然后在客厅安装了三个自复位按钮开关。这三个自复位开关是通过gpio引脚,做为binary sensor组件加入到HA当中的,为了实现更丰富的控制逻辑,我希望每个按钮能实现单击、双击、长按三种逻辑。
       问题:小米无线开关(饼干)是支持单击、双击和长按三种逻辑的,需要注意的是再编写自动化时,触发器使用的是事件触发,也就是说小米无线开关这个实体,会在事件总线上广播单击、双击、长按三个事件。可惜的是查看了树莓派gpio组件的python文件,发现并没有编写相应的代码,也就是说不提供相应的事件广播。
       解决途径一:通过巧妙的自动化配置逻辑,从而实现三种控制逻辑。特点:使用起来复杂,但是不用编写组件的python代码。
       解决途径二:修改树莓派GPIO的binary sensor组件的python代码,将广播单击、双击、长按事件的功能加进去。特点:一劳永逸,使用起来特别方便,使用事件触发就可以了。
      刚接触HA不久,能力实在有限,经过尝试,这两个途径我都没能去实现,所以想求助一下组织里的大神们。不奢求帮忙完成,提供给小弟一些思路,我也是万分感激的。

PS:解决途径二我也有一点想法。就是再配置这个组件时,增加一个参数来标志用户是否想将该二进制传感器作为一个具有三种按击功能的按钮。然后修改该组件python代码中的RPiGPIOBinarySensor类。但该传感器做为按钮时,就判断按击类型,并通过hass.bus.fire方法来广播事件。可以判断逻辑我不知道怎么写,就卡在了这里。我就想着我看看小米无线开关的判断逻辑怎么写,参考一下呗,但是看来看去也是一头雾水。组件库里还有一个(flic)按钮也提供了三种控制逻辑,代码也比小米的更清晰(因为小米的产品线太丰富,代码又长又乱),但是其中有一行“import pyflic”,也就是说引用了pyflic模块中的方法或者属性函数,但是我找不到这个pyflic模块再哪里,也就不知道它定义的方法和属性函数,那代码就读不下去了。想站在巨人的肩膀上也变得不可能,所以求助大神们,谢过,谢过!!!
回复

使用道具 举报

3

主题

22

帖子

154

积分

注册会员

Rank: 2

积分
154
金钱
132
HASS币
0
 楼主| 发表于 2020-4-4 23:32:12 来自手机 | 显示全部楼层
顶一下吧
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 23:03 , Processed in 0.149883 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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