[分享] NT$100,兩切智能開關DIY,使用220V電器更安全(ESPHome)

寫在前面: 本文試圖提醒您用電安全很重要,但請有興趣的玩家謹慎評估自身對強電的了解程度&可能的風險,再決定要不要製作。

本文所謂兩切開關,跟一般大家認知的雙切開關不同,個人覺得水電爸爸的影片這篇文章都很棒,建議大家都看看(省下我至少半個小時的打字,哈哈)

那市面上有沒有兩切開關可以買的呢? 有的,不過有點小醜、有點小貴,且非智能開關。
https://www.pcstore.com.tw/053701111/M01063205.htm
(網上隨便搜的,如有冒犯敬請通知移除)

先看原本改裝為智能兩切開關前,傳統兩切開關的樣子:

改裝後(盒子上除了開關按鈕之外我還多裝了顆人體紅外,正常可以省略):

裝置網頁介面、及HA裡的開關,按鈕同時toggle兩個繼電器,也就是本文所說的兩切。
135014ynuazda1auwe1d3v

接下來進入正題,我故意只列材料清單及完整esphome的yaml,懂點電的人看了就會,不知從何下手的人建議就算了,我不想有人因為本文發生意外。

材料: nodemcu、ac-dc電源模塊、兩路繼電器、適合的外殼、微動開關、電線杜邦線若干

yaml: (初學者寫的不好,更好寫法或建議敬請不吝指教)

substitutions:
  device_name: pump #KQ400SIC變頻加壓馬達 #220V雙切智能開關

esphome:
  name: ${device_name}
  platform: ESP8266
  board: nodemcuv2

logger:

api:

ota:
  password: !secret wifi_pw

web_server:
  port: 80

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pw
  ap:
    ssid: "${device_name}_Fallback"
    password: !secret wifi_pw

captive_portal:

switch:
  - platform: gpio
    pin: 
      number: D6
      inverted: true 
    id: relay1
    restore_mode: always_off
  - platform: gpio
    pin: 
      number: D7
      inverted: true
    id: relay2
    restore_mode: always_off
  - platform: template 
    name: ${device_name}
    id: temp_switch
    turn_on_action:
      - then:
        - switch.turn_on: relay1
        - switch.turn_on: relay2
        - switch.template.publish:
            id: temp_switch
            state: on
    turn_off_action:
      - then:
        - switch.turn_off: relay1
        - switch.turn_off: relay2
        - switch.template.publish:
            id: temp_switch
            state: off

binary_sensor:
  - platform: gpio
    id: button
    pin:
      number: D4
      mode: INPUT_PULLUP
      inverted: True
    filters:
      - delayed_on: 30ms
      - delayed_off: 30ms
    on_click:
      - switch.toggle: relay1
      - switch.toggle: relay2
      - switch.template.publish:
          id: temp_switch
          state: !lambda 'return id(relay1).state;'
  - platform: status
    name: "${device_name}_status"
    
sensor:
  - platform: wifi_signal
    name: "${device_name}_WiFi_signal"
    update_interval: 60s

  - platform: uptime
    name: "${device_name}_uptime"

text_sensor:
  - platform: version
    name: "${device_name}_ESPHome_version"    

PS: 為了不讓"正中"踢群,所有我DIY製作的裝置都可以丟到homekit去用,謝謝。

2個讚