本帖最后由 george65 于 2025-10-28 19:44 编辑
參考花落花空大佬的帖子 https://bbs.hassbian.com/thread-12515-1-1.html
把泡沫盾接入HA
材料:8266一個 AMS1117-3.3V一個 1N4007兩個 0.3mm線材少許
我買內置電池款 上方只有一個觸碰按鈕
這是在麵包板上做測試
紅色線跟黑色線接到TYPE-C的VCC跟GND取電給8266使用
黃色線是接到彈簧 控制泡沫盾觸發
綠色線是狀態反饋 我也不知道這是什麼芯片
上面都沒有印絲 反正我量到這腳未觸發時4.2V
觸發後剩0.7V
局部放大
用萬用板把ESP01S跟AMS1117 3.3V組起來
esp01s貼在內盒裡
不知道為什麼觸碰彈簧隔著盒子會感應不良
懶得調整線路 直接鎖一顆螺絲跟觸碰彈簧相接
找一顆已經沒在用的小米門窗感應器修改
把干簧管焊下 接一顆按鈕開關上去
再寫個自動化來連動 這樣就可以把門窗感應器放在順手的地方使用
# ---------------------------------------------------------
# 定義全域變數,用來保存觸發計數(支援掉電後自動恢復)
# ---------------------------------------------------------
globals:
- id: count_memory
type: int
restore_value: yes # 記憶值會保存在 Flash 中,掉電後仍保留
initial_value: '0' # 初始值為 0
# ---------------------------------------------------------
# 定義 GPIO 開關腳位
# ---------------------------------------------------------
switch:
# 實際輸出腳(IO1)
- platform: gpio
pin: 1
id: Touch
# 提供前端或 Home Assistant 操作的模板開關
- platform: template
name: "Touch"
turn_on_action:
- switch.turn_on: Touch
- delay: 100ms
- switch.turn_off: Touch
# ---------------------------------------------------------
# 定義輸入感測腳位(例如外部觸控或訊號輸出)
# ---------------------------------------------------------
binary_sensor:
- platform: gpio
pin:
number: 3
mode: INPUT_PULLUP
inverted: True
name: "Touch"
# 每次偵測到觸發(按下)時,計數 +1
on_press:
- lambda: |-
id(count_memory)++; // 全域變數 +1
id(touch_count).publish_state(id(count_memory)); // 更新顯示數值
# ---------------------------------------------------------
# 定義一個虛擬感測器,用於顯示觸發次數
# ---------------------------------------------------------
sensor:
- platform: template
name: "觸發次數"
id: touch_count
unit_of_measurement: "次"
accuracy_decimals: 0
update_interval: never # 不定時刷新,僅在事件發生時更新
# ---------------------------------------------------------
# 定義一個手動按鈕,用來清除計數
# ---------------------------------------------------------
button:
- platform: template
name: "清除計數"
on_press:
- lambda: |-
id(count_memory) = 0; // 歸零全域變數
id(touch_count).publish_state(0); // 同步顯示歸零
|