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

 找回密码
 立即注册
查看: 1895|回复: 18

[技术探讨] esphome自动化求助

[复制链接]

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
发表于 2024-2-27 10:47:16 | 显示全部楼层 |阅读模式
output:
  - platform: gpio
    pin: 0
    id: 'unlock' #解锁/开锁开关定义位gpio0=继电器
    inverted: true #低电平输出
  - platform: gpio
    pin: 2
    id: 'autounlock' #解锁/开锁开关定义位gpio2=板载指示灯
    inverted: true #低电平输出
   
switch:
  - platform: output
    id: autoopendoorlock
    name: "自动开锁模式" 
    output: 'autounlock'
    on_turn_on:
      
      if:
        condition:
           binary_sensor.is_on: sounddoor #自动开锁模式开关打开时,if sounddoor触发 then 触发开锁按钮一次
        then:
           button.press: unlockbutton    

button:
  - platform: output
    id: unlockbutton
    name: "开锁"
    icon: "mdi:lock"
    output: 'unlock'
    duration: 500ms
     
binary_sensor: #检测单元门呼叫rx引脚 gpio3
  - platform: gpio
    id: sounddoor
    pin:
     number: 3
     inverted: true
     mode:
      input: true
      pullup: true #内部上拉
    name: "响铃"
    device_class: sound
    
    filters:
      - delayed_on: 500ms #100ms延时滤波
      - delayed_off: 300ms
    
其中的自动开锁模式开关打开时,if sounddoor触发 then 触发开锁按钮一次 为何不起作用?该如何实现这一需求?首次发帖,感谢回复

on_turn_on:
      
      if:
        condition:
           binary_sensor.is_on: sounddoor #自动开锁模式开关打开时,if sounddoor触发 then 触发开锁按钮一次
        then:
           button.press: unlockbutton
回复

使用道具 举报

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
 楼主| 发表于 2024-2-27 10:50:46 | 显示全部楼层
我将代码中if条件去掉,每次打开自动开锁模式开关时,可以触发一次 button.press: unlockbutton 为什么加上if语句就不行了呢?
同理我在传感器中加入 if 判定 自动开锁模式开关打开 执行 button.press: unlockbutton也是失效的。希望大佬们不吝赐教
回复

使用道具 举报

25

主题

224

帖子

1032

积分

金牌会员

007潜水了

Rank: 6Rank: 6

积分
1032
金钱
808
HASS币
0
发表于 2024-2-27 13:06:44 | 显示全部楼层
你这个逻辑 应该要放在 binary_sensor sounddoor  下吧,你说的同理的情况是指这个吗?then是可以打日志的。


      then:
        - logger.log: "xxx"
回复

使用道具 举报

14

主题

262

帖子

2223

积分

金牌会员

Rank: 6Rank: 6

积分
2223
金钱
1956
HASS币
50
发表于 2024-2-27 13:10:11 | 显示全部楼层
试着分析一下,供参考:
问题可能出在binary_sensor  sounddoor上,因为是inverted: true,且pullup: true,所以该二元传感器平时是false状态。所以condition:  binary_sensor.is_on: sounddoor条件不成立,then就不执行了。
回复

使用道具 举报

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
 楼主| 发表于 2024-2-27 13:32:30 | 显示全部楼层
book123 发表于 2024-2-27 13:10
试着分析一下,供参考:
问题可能出在binary_sensor  sounddoor上,因为是inverted: true,且pullup: true ...

感谢回复,使用传感器自动化 on_press then  logger.log: "传感器on" 进行记录 发现ison判定是正常的。不知还有何高见?
回复

使用道具 举报

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
 楼主| 发表于 2024-2-27 13:33:32 | 显示全部楼层
demacia 发表于 2024-2-27 13:06
你这个逻辑 应该要放在 binary_sensor sounddoor  下吧,你说的同理的情况是指这个吗?then是可以打日志的 ...

感谢回复,我查阅了logger.log后使用 使用传感器自动化 on_press then  logger.log: "传感器on" 进行记录 发现ison判定是正常的。不知还有何高见?
回复

使用道具 举报

25

主题

224

帖子

1032

积分

金牌会员

007潜水了

Rank: 6Rank: 6

积分
1032
金钱
808
HASS币
0
发表于 2024-2-27 14:10:38 | 显示全部楼层
leeh 发表于 2024-2-27 13:33
感谢回复,我查阅了logger.log后使用 使用传感器自动化 on_press then  logger.log: "传感器on" 进行记录 ...

ison判定正常是什么意思,每次把autoopendoorlock 打开时,看sounddoor 是on的,然后unlockbutton吗?

这个符合你的预期吗?日志有了,那是unlockbutton不生效吗?
回复

使用道具 举报

14

主题

262

帖子

2223

积分

金牌会员

Rank: 6Rank: 6

积分
2223
金钱
1956
HASS币
50
发表于 2024-2-27 14:34:33 | 显示全部楼层
根据你的描述“我将代码中if条件去掉,每次打开自动开锁模式开关时,可以触发一次 button.press: unlockbutton 为什么加上if语句就不行了呢?”,问题一定在于if条件不满足。请列出你的完整的logger.log语句。
回复

使用道具 举报

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
 楼主| 发表于 2024-2-27 14:47:32 | 显示全部楼层
book123 发表于 2024-2-27 14:34
根据你的描述“我将代码中if条件去掉,每次打开自动开锁模式开关时,可以触发一次 button.press: unlockbut ...
binary_sensor: #检测单元门呼叫rx引脚 gpio3
  - platform: gpio
    id: sounddoor
    pin:
     number: 3
     inverted: true
     mode:
      input: true
      pullup: true #内部上拉
    name: "响铃"
    device_class: sound
    
    filters:
      - delayed_on: 500ms #100ms延时滤波
      - delayed_off: 300ms
    on_press:
      then:
            - logger.log: "响铃is on"
回复

使用道具 举报

2

主题

30

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
152
HASS币
0
 楼主| 发表于 2024-2-27 14:49:04 | 显示全部楼层
demacia 发表于 2024-2-27 14:10
ison判定正常是什么意思,每次把autoopendoorlock 打开时,看sounddoor 是on的,然后unlockbutton吗?

...

我是在传感器自动化条件中的on_press then logger.log进行判定的。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 18:40 , Processed in 0.161725 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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