一、项目介绍

展示
展示
展示

1. 功能

  • 监测门窗开/关状态
  • 一个 ESP8266 支持 1~6 个门磁
  • 实时上报状态到 HomeAssistant
  • 防抖防误触
  • 总成本 ≤ 15 元

材料清单

物品 数量 说明
ESP8266(ESP-01S / NodeMCU) 1 任意型号均可
干簧管门磁(2 线无源) 1~6 门窗通用
杜邦线 若干 连接门磁与 ESP8266
5V USB 供电 1 给 ESP8266 供电

二、硬件接线

通用接线规则(所有门磁都一样)

  • 门磁线 1 → ESP8266 任意 GPIO
  • 门磁线 2 → ESP8266 GND
  • 无需电阻!无需接 VCC!
  • 所有门磁共用一个 GND 即可

ESP8266 推荐使用引脚

  • GPIO4 (D2)
  • GPIO5 (D1)
  • GPIO12 (D6)
  • GPIO13 (D7)
  • GPIO14 (D5)

demo使用的双门窗接线

  • 客厅窗 1 → GPIO14 + GND
  • 客厅窗 2 → GPIO12 + GND

三、ESPHome 完整配置(ESP8266 双门窗)

推荐从esphome创建新设备然后复制传感器部分代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
esphome:
name: window-sensor
friendly_name: 双门窗传感器

esp8266:
board: esp01_1m
framework:
type: arduino

# 日志
logger:

# WIFI
wifi:
ssid: "你的WiFi名称"
password: "你的WiFi密码"
ap:
ssid: "门窗传感器"
password: "12345678"

captive_portal:

# HA 接入
api:
encryption:
key: "你的自动生成密钥"

# 网页监控
web_server:
port: 80

# ==================== 双门窗传感器 ====================
binary_sensor:
# 客厅窗1
- platform: gpio
pin:
number: GPIO14
mode: INPUT_PULLUP
inverted: false
name: "客厅窗1"
device_class: window
filters:
- delayed_on: 50ms
- delayed_off: 50ms
publish_initial_state: true

# 客厅窗2
- platform: gpio
pin:
number: GPIO12
mode: INPUT_PULLUP
inverted: false
name: "客厅窗2"
device_class: window
filters:
- delayed_on: 50ms
- delayed_off: 50ms
publish_initial_state: true

四、状态说明

  • 磁铁靠近 → 门磁闭合 → 显示 关闭 (ON)
  • 磁铁远离 → 门磁断开 → 显示 打开 (OFF)

如果状态相反,把 inverted: false 改为 inverted: true

五、设备分类(HA 自动图标)

  • device_class: door → 门图标
  • device_class: window → 窗图标

六、安装步骤

  1. 通过esphome新建设备
  2. 编译 → 烧录到esp8266中
  3. 编辑传感器部分ota升级
  4. HomeAssistant 自动发现设备
  5. 完成!可在 HA 查看实时状态

七、常见问题

1. 状态乱跳、不稳定

  • 已添加 50ms 防抖,不会误触

2. 状态相反

  • 修改 inverted: true

3. 无反应

  • 检查接线:一根 GPIO,一根 GND

4. 增加更多门窗

  • 复制传感器段落,修改 GPIO 和名称即可

八、项目优势

✅ 超低成本(ESP8266 + 门磁)
✅ 无需任何外接电阻
✅ 一个 ESP8266 带多个门窗
✅ 稳定不误触
✅ 完美接入 HA
✅ 供电简单(USB 5V)