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

 找回密码
 立即注册
查看: 1887|回复: 13

[已解决] esp01改造零火开关,物理开关的问题

[复制链接]

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
发表于 2024-1-19 22:12:01 | 显示全部楼层 |阅读模式
本帖最后由 flamestsui 于 2024-1-23 16:13 编辑

我根据:https://blog.csdn.net/panpanloveruth/article/details/113977715
已经用esphome实现了远程控制。
但是,物理开关上无用。
看代码
//点动模式按钮,监听按钮状态,执行相应处理
void btnHandler1()
{
  static bool oButtonState = false;
  int state1 =  digitalRead(LED_BUILTIN_K2); //按钮状态
  int state2 =  digitalRead(LED_BUILTIN_LIGHT); //灯的状态
  if(state1 == HIGH )
  {
    if(oButtonState ){
      if(state2 == YYXBC_HIGH )
      { 
        button1_callback(BLINKER_CMD_OFF);
        Serial.println("按钮对灯已执行关闭");
      }else{
        button1_callback(BLINKER_CMD_ON);
        Serial.println("按钮对灯已执行打开");
      }
      oButtonState = false;
    }
  }else{
    oButtonState = true;
  }
}
但是,不知道在esphome里面怎么实现呢



Ps:这几天忙,忘了回复帖子。
我经过多方研究。已经实现了开关功能
物理开关接入GPIO2。即可实现物理开关和手机同时控制。
代码如下:
binary_sensor:
  - platform: gpio
    pin: GPIO2
    name: "Button"
    filters:
      - delayed_on_off: 100ms 
    on_press:
      then:
        - switch.toggle: light_switch
        - lambda: 'id(ctrl_text).publish_state("物理开关开启");'
    on_release:
      then:
        - switch.toggle: light_switch
        - lambda: 'id(ctrl_text).publish_state("物理开关关闭");'

switch:
  - platform: gpio
    # pin: GPIO0
    pin: 
      number: GPIO0
      inverted: true
    name: "${swith_name}"
    id: light_switch

text_sensor:
  - platform: template
    name: "Tag"
    id: ctrl_text
IMG_20240121_011125.jpg
回复

使用道具 举报

24

主题

579

帖子

2685

积分

金牌会员

Rank: 6Rank: 6

积分
2685
金钱
2106
HASS币
0
发表于 2024-1-19 22:32:39 | 显示全部楼层
这不是esphome的代码
回复

使用道具 举报

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
 楼主| 发表于 2024-1-19 22:52:37 | 显示全部楼层
kjjuhfv 发表于 2024-1-19 22:32
这不是esphome的代码

这不是,我就是想转换成esphone。
就是通过io2,调用io0
回复

使用道具 举报

24

主题

579

帖子

2685

积分

金牌会员

Rank: 6Rank: 6

积分
2685
金钱
2106
HASS币
0
发表于 2024-1-19 22:57:47 | 显示全部楼层
本帖最后由 kjjuhfv 于 2024-1-19 23:06 编辑

原来是这个要求
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO2
      mode: INPUT_PULLUP
      inverted: True
    name: "Sonoff Basic Button"
    on_press:
      - switch.toggle: fakebutton

switch:
  - platform: gpio
    pin: 0
    name: "Sonoff Basic Relay"
    id: fakebutton

不确定能不能正常运行

回复

使用道具 举报

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
 楼主| 发表于 2024-1-20 08:43:18 | 显示全部楼层
kjjuhfv 发表于 2024-1-19 22:57
原来是这个要求
不确定能不能正常运行

还是十分感谢。 我晚上回去试试
回复

使用道具 举报

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
 楼主| 发表于 2024-1-20 13:51:16 | 显示全部楼层
本帖最后由 flamestsui 于 2024-1-20 13:55 编辑
kjjuhfv 发表于 2024-1-19 22:57
原来是这个要求
不确定能不能正常运行
switch:
  - platform: gpio
    pin: 0
    name: "Sonoff Basic Relay"
    id: fakebutton
    
  - platform: gpio
    pin:
      number: 0
      inverted: true
    name: "esphome-bedroom"
    icon: mdi:led-strip-variant


我下面调用了IO0,加上这段就报错了
IO0控制继电器。
IO2,通过接到开关上,物理短接方式实现IO0一样的功能!
回复

使用道具 举报

24

主题

579

帖子

2685

积分

金牌会员

Rank: 6Rank: 6

积分
2685
金钱
2106
HASS币
0
发表于 2024-1-20 15:38:43 | 显示全部楼层
flamestsui 发表于 2024-1-20 13:51
我下面调用了IO0,加上这段就报错了
IO0控制继电器。
IO2,通过接到开关上,物理短接方式实现IO0一样的 ...

看懵了  不懂你到底要干嘛
回复

使用道具 举报

146

主题

2267

帖子

7004

积分

元老级技术达人

积分
7004
金钱
4732
HASS币
30
发表于 2024-1-20 16:22:57 | 显示全部楼层
应该需要配置正确物理开关的IO引脚编号。
回复

使用道具 举报

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
 楼主| 发表于 2024-1-20 18:22:12 | 显示全部楼层
本帖最后由 flamestsui 于 2024-1-20 18:25 编辑
kjjuhfv 发表于 2024-1-20 15:38
看懵了  不懂你到底要干嘛

20210223112646608.png

这样。可以手机控制,也保留物理开关
回复

使用道具 举报

24

主题

579

帖子

2685

积分

金牌会员

Rank: 6Rank: 6

积分
2685
金钱
2106
HASS币
0
发表于 2024-1-20 23:24:56 | 显示全部楼层
flamestsui 发表于 2024-1-20 18:22
这样。可以手机控制,也保留物理开关

我上面那段代码就可以啊
你下面添加的那段代码没看懂 你是想改名字还是什么?
同时添加两个pin为0的代码肯定报错
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 01:50 , Processed in 0.734863 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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