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

 找回密码
 立即注册
查看: 3476|回复: 9

[技术探讨] 浴霸开关diy并接入ha

[复制链接]

76

主题

519

帖子

3371

积分

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
2852
HASS币
0
发表于 2022-1-11 23:33:05 | 显示全部楼层 |阅读模式
本帖最后由 silas3082 于 2022-4-1 12:58 编辑

简单记录下浴霸、热水器改造过程。(因改造的过程中没有拍照也没画图,只能以文字描述了)


改造浴霸、热水器实现功能:
1.通过esphome 接入homeassistant,并且接入小爱同学,可以语音控制、ha前置面板控制;
2.可以通过本地触摸开关控制。
3.卫生间温湿度计实时查看,并且可以根据温湿度实现进一步自动化。
4.热水器接入ha,实现当前水温、加热时间等信息的显示及播报,加热完毕自动关闭及播报自动化。

需要的硬件:热水器、浴霸,esp8266 nodemcu,五路继电器、220转5V模块,dht11,杜邦线,触摸开关(4个)、空白面板

一、esp8266配置:
esohome代码如下:


esphome:
  name: yuba

esp8266:
  board: nodemcuv2

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "7384f2eb735f9b1da4d3f41d09fc80de"

wifi:
  ssid: "XXXXXXX"
  password: "XXXXXXXX"
  fast_connect: 'true'
  reboot_timeout: 30s

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

captive_portal:


switch:
  - platform: gpio
    pin: D1
    name: "yblightname"
    id: yblight
    restore_mode: ALWAYS_OFF
  
  - platform: gpio
    pin: D2
    name: "ybhuanqiname"
    id: huanqi
    restore_mode: ALWAYS_OFF
   
  - platform: gpio
    pin: D3
    name: "ybchuifengname"
    id: chuifeng
    restore_mode: ALWAYS_OFF
    on_turn_off:     #这里为了防止吹风关闭,风暖没关造成干烧的情况,很重要!!!
    - if:
        condition:
          switch.is_on: fengnuan
        then:
          - switch.turn_off: fengnuan
   
   
   
  - platform: gpio
    pin: D4
    name: "ybfengnuanname"
    id: fengnuan
    restore_mode: ALWAYS_OFF
    on_turn_on:
    - switch.turn_on: chuifeng  #这里打开风暖的时候打开吹风,不然造成干烧的情况,很重要!!!
    on_turn_off:
    - switch.turn_off: chuifeng
   
  - platform: gpio
    pin: D0
    name: "reshuiqiname"
    id: reshuiqi
    restore_mode: ALWAYS_OFF
   
   
binary_sensor:
  - platform: gpio
    pin:
      number: D5
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-yblight"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: yblight
        
  - platform: gpio
    pin:
      number: D6
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-huanqi"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: huanqi
        
  - platform: gpio
    pin:
      number: D7
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-chuifeng"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: chuifeng
        - if:
             condition:
               switch.is_on: fengnuan      #这里为了防止风暖打开,没开吹风造成干烧的情况,很重要!!!
             then:
               - switch.turn_off: fengnuan
        
  - platform: gpio
    pin:
      number: D8
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-fengnuan"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:  
      then:
        - switch.toggle: fengnuan
        
sensor:
  
  - platform: dht
    pin: RX
    temperature:
      name: "BathRoom Temperature"
    humidity:
      name: "BathRoom Humidity"
    update_interval: 2s



二:浴霸硬件连接

原始功能介绍:我家浴霸是普通三无浴霸,目前的功能就是:灯、吹风、换气、风暖1、风暖2 五个功能及五个按键

(改造前务必断开电源操作!!)
(改造前务必断开电源操作!!)
(改造前务必断开电源操作!!)


改造接线:
   1.触摸面板改造:4个触摸开关,空白面板。  触摸开关的vcc,gnd,out分别焊接上杜邦线,将4个vcc,4个gnd合并到一个vcc,gnd上,用热熔胶将四个触摸开关粘在空白面板背面合适位置;
   2. 机械开关替换:  拆下原有的机械开关,出现灯、吹风、换气、风暖1、风暖2 五个功能线及一条火线进线,因为nodemcu端口不够用,我把风暖1和风暖2合并为一个“风暖”按键。将灯、吹风、换气、风暖1的控制线分别接到触摸面板的触摸开关四个out,还剩火线进和风暖2两条线分别接触摸开关的vcc和gnd,至此,触摸开关部分完成。
    3.esp8266接线:打开卫生间吊顶,将控制线和浴霸进线断开,在浴霸进线端将风暖1、风暖2的进线合并为一条线,在控制线端,将从触摸开关来的灯、吹风、换气、风暖四条线分别接nodemcu的D5,D6,D7,D8引脚,断开原来的火线进,将控制线上原来的火线、风暖2控制线分别接nodemcu  3.3V和gnd引脚给触摸开关供电。D0,D1,D2,D3,D4引脚分别接五路继电器的输入(D0控制热水器,D1控制灯,D2控制换气,D3控制吹风,D4控制暖风),从nodemcus上找个VV和GND给继电器供电。
    4.高压转5V电压及继电器接线:在吊顶上找到一组零火线,接到220转5V模块,输出的5V接nodemcu。并且另外引出一条零火线,零线接浴霸零线进,火线接继电器一路的中间的端子(其余三路中间端子用断线连接),常开端接浴霸进线的灯、吹风、换气、风暖(热水器稍后说)
    5.热水器比较特殊,我家的热水器电源和浴霸的电源不属于同一条零火线,所以步骤4的零火线不能来控制热水器(我之前用上述火线接到继电器控制,合上闸就跳闸,可能是漏报检测到电流不平衡的原因吧)。我在墙上装了一个开关来控制热水器通断,现在还想保留原有的开关。具体操作:在吊顶上找到控制热水器那一路火线(零线不用动),之前是火线进--开关--火线出--热水器,现在在火线出--热水器的位置断开,热水器进线端接继电器公共端,火线出接继电器的常闭(这样就保证了本地开关正常控制热水器通断),常开端接火线进(当继电器闭合的时候接通火线和热水器,热水器通电)
    6.温湿度传感器连接:将DHT11  连接到nodemcu  vcc,gnd,RX端口。

至此全部改造完成

成品在这里
【改装浴霸接入homeassistant,实现本地,语音,软件三种控制方式-哔哩哔哩】 https://b23.tv/3lW2v4

i
三、自动化部分主要通过ha自带的自动化和nodered来实现






Screenshot_2022-01-11-23-24-34-311_com.miui.gallery.jpg
Screenshot_2022-01-11-23-31-15-967_com.android.browser.jpg
回复

使用道具 举报

15

主题

636

帖子

2193

积分

金牌会员

Rank: 6Rank: 6

积分
2193
金钱
1557
HASS币
0
发表于 2022-1-11 23:41:24 | 显示全部楼层
牛嘿,大佬厉害
回复

使用道具 举报

54

主题

317

帖子

1371

积分

金牌会员

Rank: 6Rank: 6

积分
1371
金钱
1054
HASS币
0
发表于 2022-1-12 00:54:00 来自手机 | 显示全部楼层
是改zigbee开关吗?
回复

使用道具 举报

27

主题

2142

帖子

8852

积分

论坛元老

Rank: 8Rank: 8

积分
8852
金钱
6705
HASS币
30

论坛元老

发表于 2022-1-12 08:16:04 | 显示全部楼层
这样不会太丑么,哈哈哈
回复

使用道具 举报

76

主题

519

帖子

3371

积分

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
2852
HASS币
0
 楼主| 发表于 2022-1-12 08:22:18 | 显示全部楼层
tiani 发表于 2022-1-12 00:54
是改zigbee开关吗?

esphome做的
回复

使用道具 举报

76

主题

519

帖子

3371

积分

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
2852
HASS币
0
 楼主| 发表于 2022-1-13 08:28:20 | 显示全部楼层
情非殇 发表于 2022-1-12 08:16
这样不会太丑么,哈哈哈

在里边看不到
回复

使用道具 举报

33

主题

2191

帖子

5792

积分

论坛元老

Rank: 8Rank: 8

积分
5792
金钱
3601
HASS币
60
QQ
发表于 2022-2-1 14:27:21 | 显示全部楼层
看了一圈,我还是入手了峥果的浴霸面板。
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

76

主题

519

帖子

3371

积分

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
2852
HASS币
0
 楼主| 发表于 2022-2-10 21:59:11 | 显示全部楼层
成品在这里
【改装浴霸接入homeassistant,实现本地,语音,软件三种控制方式-哔哩哔哩】 https://b23.tv/3lW2v4i
回复

使用道具 举报

76

主题

519

帖子

3371

积分

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
2852
HASS币
0
 楼主| 发表于 2022-4-1 11:08:43 | 显示全部楼层
esphome:
  name: yuba

esp8266:
  board: nodemcuv2

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "7384f2eb735f9b1da4d3f41d09fc80de"

wifi:
  ssid: "XXXXXXX"
  password: "XXXXXXXX"
  fast_connect: 'true'
  reboot_timeout: 30s

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

captive_portal:


switch:
  - platform: gpio
    pin: D1
    name: "yblightname"
    id: yblight
    restore_mode: ALWAYS_OFF
  
  - platform: gpio
    pin: D2
    name: "ybhuanqiname"
    id: huanqi
    restore_mode: ALWAYS_OFF
   
  - platform: gpio
    pin: D3
    name: "ybchuifengname"
    id: chuifeng
    restore_mode: ALWAYS_OFF
    on_turn_off:
    - if:
        condition:
          switch.is_on: fengnuan
        then:
          - switch.turn_off: fengnuan
   
   
   
  - platform: gpio
    pin: D4
    name: "ybfengnuanname"
    id: fengnuan
    restore_mode: ALWAYS_OFF
    on_turn_on:
    - switch.turn_on: chuifeng
    on_turn_off:
    - switch.turn_off: chuifeng
   
  - platform: gpio
    pin: D0
    name: "reshuiqiname"
    id: reshuiqi
    restore_mode: ALWAYS_OFF
   
   
binary_sensor:
  - platform: gpio
    pin:
      number: D5
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-yblight"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: yblight
        
  - platform: gpio
    pin:
      number: D6
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-huanqi"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: huanqi
        
  - platform: gpio
    pin:
      number: D7
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-chuifeng"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:
      then:
        - switch.toggle: chuifeng
        - if:
             condition:
               switch.is_on: fengnuan
             then:
               - switch.turn_off: fengnuan
        
  - platform: gpio
    pin:
      number: D8
      mode:
        input: true
        pullup: true
    name: "chumokaiguan-fengnuan"
    device_class: opening
    filters:
      - delayed_on_off: 100ms #这里一定要加这个这个起到滤波的作用。
    on_press:  
      then:
        - switch.toggle: fengnuan
        
sensor:
  
  - platform: dht
    pin: RX
    temperature:
      name: "BathRoom Temperature"
    humidity:
      name: "BathRoom Humidity"
    update_interval: 2s
        
回复

使用道具 举报

9

主题

44

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
132
HASS币
0
发表于 2022-6-28 21:47:10 | 显示全部楼层
mark一下,学习中
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-9-22 11:36 , Processed in 0.058502 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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