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

 找回密码
 立即注册
查看: 2061|回复: 12

[求助] (已解决)请教大佬ESPHome多个传感器的自动化配置

[复制链接]
回帖奖励 8 金钱 回复本帖可获得 2 金钱奖励! 每人限 10 次

51

主题

1340

帖子

5598

积分

论坛DIY达人

积分
5598
金钱
4258
HASS币
20
发表于 2024-3-10 19:38:21 | 显示全部楼层 |阅读模式
本帖最后由 sorrypqa 于 2024-3-15 22:10 编辑

如下面配置,ESP32接了4个人体传感器和一个继电器,想实现:如果status=off时,ld01、ld02、ld03、ld04这4个传感器任何一个检测到人,就打开relay1继电器,ld01、ld02、ld03、ld04这4个传感器5分钟内都没有检测到人,并且status=off,就关闭relay1继电器。
请教大佬如何写法才能实现?



binary_sensor:
  - platform: gpio
    pin:
      number: $ld01_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld01" #有线双鉴人体传感器
    id: "ld01"
        
  - platform: gpio
    pin:
      number: $ld02_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld02" #有线双鉴人体传感器
    id: "ld02"
        
  - platform: gpio
    pin:
      number: $ld03_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld03" #有线双鉴人体传感器
    id: "ld03"
        
  - platform: gpio
    pin:
      number: $ld04_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld04" #有线双鉴人体传感器
    id: "ld04"
        
  - platform: status #设备联机状态
    name: "status"
    id: "statusid"
        
switch:  
  - platform: gpio
    pin: $relay1_pin
    name: "relay1" #继电器
    id: "relay1"




回复

使用道具 举报

55

主题

299

帖子

5049

积分

元老级技术达人

积分
5049
金钱
4740
HASS币
80
发表于 2024-3-10 20:31:11 | 显示全部楼层

回帖奖励 +2 金钱

添加一个脚本script: 用lambda也好,if也好,判断id01-04和status的状态,执行对应动作。id01-04添加filters: - delay_off: 5min, 延迟5分钟关闭。id01-04和status的触发器on_state里调用script脚本。
回复

使用道具 举报

51

主题

1340

帖子

5598

积分

论坛DIY达人

积分
5598
金钱
4258
HASS币
20
 楼主| 发表于 2024-3-10 20:37:23 | 显示全部楼层
本帖最后由 sorrypqa 于 2024-3-10 20:43 编辑
ryanh7 发表于 2024-3-10 20:31
添加一个脚本script: 用lambda也好,if也好,判断id01-04和status的状态,执行对应动作。id01-04添加filter ...

小白一个,script、lambda等统统不会用。另外,不要id01-04添加filters: - delay_off: 5min,这样是传感器延迟(响应速度只有5分钟1次),我要保留传感器1秒1次的响应时间,要自动化里延迟。
回复

使用道具 举报

55

主题

299

帖子

5049

积分

元老级技术达人

积分
5049
金钱
4740
HASS币
80
发表于 2024-3-10 20:46:14 | 显示全部楼层

回帖奖励 +2 金钱

sorrypqa 发表于 2024-3-10 20:37
小白一个,script、lambda等统统不会用。另外,不要id01-04添加filters: - delay_off: 5min,这样是传感器 ...

那你就再添加一个template类型的二进制传感器用来同步id01~04的状态再添加filters。
回复

使用道具 举报

51

主题

1340

帖子

5598

积分

论坛DIY达人

积分
5598
金钱
4258
HASS币
20
 楼主| 发表于 2024-3-10 20:53:37 | 显示全部楼层
ryanh7 发表于 2024-3-10 20:46
那你就再添加一个template类型的二进制传感器用来同步id01~04的状态再添加filters。 ...

大佬,有空帮忙列个小白看得懂的示例呀!
回复

使用道具 举报

24

主题

579

帖子

2683

积分

金牌会员

Rank: 6Rank: 6

积分
2683
金钱
2104
HASS币
0
发表于 2024-3-11 00:21:17 | 显示全部楼层

回帖奖励 +2 金钱

菜鸡粗糙的写法

binary_sensor:
  - platform: gpio
    pin:
      number: $ld01_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld01" #有线双鉴人体传感器
    id: "ld01"
    filters:
      - delayed_on: 10ms   #调整适当时间
    on_press:
      then:
        - if:
            condition:
              - binary_sensor.is_on: statusid   #当二进制传感器为on的时候
            then:
              - script.execute: my_script

  - platform: gpio
    pin:
      number: $ld02_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld02" #有线双鉴人体传感器
    id: "ld02"
    filters:
      - delayed_on: 10ms   #调整适当时间
    on_press:
      then:
        - if:
            condition:
              - binary_sensor.is_on: statusid   #当二进制传感器为on的时候
            then:
              - script.execute: my_script

  - platform: gpio
    pin:
      number: $ld03_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld03" #有线双鉴人体传感器
    id: "ld03"
    filters:
      - delayed_on: 10ms   #调整适当时间
    on_press:
      then:
        - if:
            condition:
              - binary_sensor.is_on: statusid   #当二进制传感器为on的时候
            then:
              - script.execute: my_script

  - platform: gpio
    pin:
      number: $ld04_pin
      mode:
        input: true #将引脚配置为输入。
        pulldown: true #激活引脚上的内部下拉电阻。
    name: "ld04" #有线双鉴人体传感器
    id: "ld04"
    filters:
      - delayed_on: 10ms   #调整适当时间
    on_press:
      then:
        - if:
            condition:
              - binary_sensor.is_on: statusid   #当二进制传感器为on的时候
            then:
              - script.execute: my_script

  - platform: status #设备联机状态
    name: "status"
    id: "statusid"
        
switch:  
  - platform: gpio
    pin: $relay1_pin
    name: "relay1" #继电器
    id: "relay1"

script:
  - id: my_script
    mode: restart  #每次执行都是重置的模式
    then:
      - switch.turn_on: relay1
      - delay: 300s
      - switch.turn_off: relay1

评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 大神666!

查看全部评分

回复

使用道具 举报

51

主题

1340

帖子

5598

积分

论坛DIY达人

积分
5598
金钱
4258
HASS币
20
 楼主| 发表于 2024-3-11 07:28:36 | 显示全部楼层
本帖最后由 sorrypqa 于 2024-3-11 08:03 编辑
kjjuhfv 发表于 2024-3-11 00:21
菜鸡粗糙的写法

非常感谢!您的配置好像是,传感器感应到有人,并且status的状态为ON时,运行脚本------打开继电器------等待5分钟-------关闭继电器,这个脚本能实现每次触发都重新计时那5分钟?也就是如果一直有人在那运动的话,是不会关闭继电器?如果是的话就太好了,差不多实现了,不过我怎么感觉如果红外传感器一直保持ON状态,这个配置5分钟后也会把继电器关了,而且延时5分钟后没有检查status的状态就直接关闭继电器。
回复

使用道具 举报

24

主题

579

帖子

2683

积分

金牌会员

Rank: 6Rank: 6

积分
2683
金钱
2104
HASS币
0
发表于 2024-3-11 13:57:14 | 显示全部楼层

回帖奖励 +2 金钱

sorrypqa 发表于 2024-3-11 07:28
非常感谢!您的配置好像是,传感器感应到有人,并且status的状态为ON时,运行脚本------打开继电器------ ...

第一个问题看起来可能需要增加一个模版传感器解决
第二个问题是我忘记在脚本那里关闭继电器时检查状态了

还有  想实现:如果status=off时
我不知道这是你手误还是你确实就是这么要求的
跟下面的要求是不是重叠了
回复

使用道具 举报

51

主题

1340

帖子

5598

积分

论坛DIY达人

积分
5598
金钱
4258
HASS币
20
 楼主| 发表于 2024-3-11 14:17:05 | 显示全部楼层
本帖最后由 sorrypqa 于 2024-3-11 15:16 编辑
kjjuhfv 发表于 2024-3-11 13:57
第一个问题看起来可能需要增加一个模版传感器解决
第二个问题是我忘记在脚本那里关闭继电器时检查状态了
...

应用场景是,ESPHome正常连接HA时,status=on,此时继电器由HA里的自动化控制,但网络故障或者HA罢工,status=off,此时由ESPHome里的自动化控制继电器动作。所以这个自动化只需要status=off时才生效
回复

使用道具 举报

146

主题

2267

帖子

7002

积分

元老级技术达人

积分
7002
金钱
4730
HASS币
30
发表于 2024-3-11 15:01:29 | 显示全部楼层

回帖奖励 +2 金钱

本帖最后由 bugensui 于 2024-3-11 15:02 编辑
sorrypqa 发表于 2024-3-11 14:17
应用场景是,HEPHome正常连接HA时,status=on,此时继电器由HA里的自动化控制,但网络故障或者HA罢工,st ...

这样不好,我的看法是,既然esp里,都集成了这些传感器,完全有条件,自动化完全可以交给esp本地,但是里面的传感器和继电器状态和控制,你可以接入ha,但是自动化就不需要用ha来介入了,这样的自动化才高可用,成功率才会99.9%,ha和esp走的是内网局域网,出问题的概率比esp本地高,即使你用连接的状态来判定,也不一定完全靠谱,只是我个人观点。
我们之所以把自动化交给ha,是没有条件,灯是1个esp设备,人在传感器可能是另外1个zigbee设备,是没有条件,必须通过ha
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 22:17 , Processed in 0.168708 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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