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

 找回密码
 立即注册
查看: 1126|回复: 8

[技术探讨] 求助一下大佬 esphome 做无线开关

[复制链接]

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
发表于 2022-9-21 18:00:13 | 显示全部楼层 |阅读模式
用esp8266 做无线开关 怎么识别 io口是单击 双击 长按呢 大佬可以写一段我抄一下吗
回复

使用道具 举报

10

主题

183

帖子

1777

积分

论坛技术达人

积分
1777
金钱
1589
HASS币
20
发表于 2022-9-21 20:02:20 | 显示全部楼层
本帖最后由 szlww 于 2022-9-21 20:03 编辑

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO3
      mode: INPUT_PULLUP
      inverted: true
    id: ${node_id}_toggle_button
    internal: true

    #按键点击操作中press与click(press + release)冲突,click的同时也会触发press,因此修改为如下的timing方式
    on_multi_click:
    #双击(x秒内按两下,松开按键0.2秒之后反馈状态)
    - timing:
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at least 0.2s
      then:
        - lambda: |-
            id(${node_id}_action).publish_state("double");
            id(${node_id}_switch_timeout).turn_on();
        - while:
            condition:
              lambda: |-
                return id(${node_id}_switch_timeout).state;
            then:
            - delay: 10ms
      invalid_cooldown: 0s
    #长按(按键时长为x秒到y秒之间,松开按键0.2秒之后发送状态)
    - timing:
        - ON for at least 0.7s
        - OFF for at least 0.2s
      then:
        - switch.toggle: ${node_id}_relay
      invalid_cooldown: 0s
    #短按(x秒内按一下,松开按键0.3秒之后反馈状态)
    #短按作为情景开关使用,不直接断开继电器...
    #...而是向服务器发送控制指令,由服务器关闭对指定设备进行遥控
    - timing:
        - ON for at most 0.3s
        - OFF for at least 0.2s
      then:
        - lambda: |-
            id(${node_id}_action).publish_state("single");
            id(${node_id}_switch_timeout).turn_on();
        - while:
            condition:
              lambda: |-
                return id(${node_id}_switch_timeout).state;
            then:
            - delay: 10ms

      invalid_cooldown: 0s


评分

参与人数 1金钱 +8 收起 理由
sorrypqa + 8 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
 楼主| 发表于 2022-9-22 08:43:56 | 显示全部楼层
szlww 发表于 2022-9-21 20:02
binary_sensor:
  - platform: gpio
    pin:

老哥谢谢你 给到我一个思路 非常感谢
回复

使用道具 举报

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
 楼主| 发表于 2022-9-23 14:58:39 | 显示全部楼层
szlww 发表于 2022-9-21 20:02
binary_sensor:
  - platform: gpio
    pin:

老哥我搞不掂呀 可以提示id不可以用这种字符附上配置希望可以帮忙改一下
esphome:
  name: cs22

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "IbFuJmYh3j38wgt0r41RD8tVSj42A1b1AwyZnxyhmxk="


binary_sensor:
  - platform: gpio
    pin:
      number: GPIO3
      mode: INPUT_PULLUP
      inverted: true
    id: ${node_id}_toggle_button
    internal: true

    #按键点击操作中press与click(press + release)冲突,click的同时也会触发press,因此修改为如下的timing方式
    on_multi_click:
    #双击(x秒内按两下,松开按键0.2秒之后反馈状态)
    - timing:
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at least 0.2s
      then:
        - lambda: |-
            id(${node_id}_action).publish_state("double");
            id(${node_id}_switch_timeout).turn_on();
        - while:
            condition:
              lambda: |-
                return id(${node_id}_switch_timeout).state;
            then:
            - delay: 10ms
      invalid_cooldown: 0s
    #长按(按键时长为x秒到y秒之间,松开按键0.2秒之后发送状态)
    - timing:
        - ON for at least 0.7s
        - OFF for at least 0.2s
      then:
        - switch.toggle: ${node_id}_relay
      invalid_cooldown: 0s
    #短按(x秒内按一下,松开按键0.3秒之后反馈状态)
    #短按作为情景开关使用,不直接断开继电器...
    #...而是向服务器发送控制指令,由服务器关闭对指定设备进行遥控
    - timing:
        - ON for at most 0.3s
        - OFF for at least 0.2s
      then:
        - lambda: |-
            id(${node_id}_action).publish_state("single");
            id(${node_id}_switch_timeout).turn_on();
        - while:
            condition:
              lambda: |-
                return id(${node_id}_switch_timeout).state;
            then:
            - delay: 10ms

      invalid_cooldown: 0s

ota:
  password: "6aaa75f442e319c5f87c020dfdbfbc86"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Cs22 Fallback Hotspot"
    password: "w81VnRFNHVLi"

captive_portal:
    

微信截图_20220923145456.png
回复

使用道具 举报

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
 楼主| 发表于 2022-9-23 18:30:19 | 显示全部楼层
搞掂了 用mqtt 发报文ok了
binary_sensor:

  - platform: gpio

    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: true
    id: dc1
    internal: true

    on_multi_click:
 
    - timing:
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at least 0.2s
      then:
      - mqtt.publish:
          topic: esphome32/senso/ir
          payload: "double"
    - timing:
        - ON for at most 0.3s
        - OFF for at least 0.2s
      then:
      - mqtt.publish:
          topic: esphome32/senso/ir
          payload: "single"

    - timing:
        - ON for at least 0.7s

      then:
      - mqtt.publish:
          topic: esphome32/senso/ir
          payload: "hold"

    - timing:
        - ON for at least 0.7s
        - OFF for at least 0.2s
      then:
      - mqtt.publish:
          topic: esphome32/senso/ir
          payload: "Not_hold"


回复

使用道具 举报

32

主题

119

帖子

739

积分

高级会员

Rank: 4

积分
739
金钱
620
HASS币
0
发表于 2022-9-23 19:53:36 来自手机 | 显示全部楼层
gmshiwoge 发表于 2022-9-23 14:58
老哥我搞不掂呀 可以提示id不可以用这种字符附上配置希望可以帮忙改一下

...

怎样解决这错误?
回复

使用道具 举报

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
 楼主| 发表于 2022-9-24 08:39:16 | 显示全部楼层
学习 发表于 2022-9-23 19:53
怎样解决这错误?

上面我贴上配置了 用mqtt弄好的  4个逻辑 单击 双击 长按 松开
回复

使用道具 举报

57

主题

630

帖子

3868

积分

论坛元老

Rank: 8Rank: 8

积分
3868
金钱
3233
HASS币
20
 楼主| 发表于 2022-9-24 08:41:20 | 显示全部楼层
学习 发表于 2022-9-23 19:53
怎样解决这错误?

上面我贴上配置了 用mqtt弄好的  4个逻辑 单击 双击 长按 松开
回复

使用道具 举报

10

主题

183

帖子

1777

积分

论坛技术达人

积分
1777
金钱
1589
HASS币
20
发表于 2022-9-24 09:49:56 | 显示全部楼层
gmshiwoge 发表于 2022-9-23 14:58
老哥我搞不掂呀 可以提示id不可以用这种字符附上配置希望可以帮忙改一下

...

直接复制过去用不了的,那段配置是我的使用场景,需要自定义一些变量比如${node_id}等 ,对照我的单击、双击、长按等实现方式,改成你的配置文件。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-21 21:26 , Processed in 0.132164 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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