找回密码
 立即注册

微信扫码登录

搜索
查看: 717|回复: 8

[基础教程] 用NFC贴纸做床头智能灯开关(HomeAssistant + Zigbee2MQTT + Node-RED + 快捷指令)

[复制链接]

1

主题

22

回帖

147

积分

论坛DIY达人

积分
147
金钱
119
HASS币
20
发表于 2026-7-2 09:14:25 | 显示全部楼层 |阅读模式
本帖最后由 cailuobo 于 2026-7-2 10:17 编辑

最近折腾了一套"手机碰一下NFC贴纸就能开关床头灯"的方案,顺便解决了直连MQTT导致自适应光照(Adaptive Lighting)失效的坑,整理成教程分享给大家。
一、效果说明手机靠近床头贴的NFC标签 → 自动触发快捷指令 → 请求Node-RED的HTTP接口 → 控制Zigbee2MQTT设备灯光开关,整个过程1-2秒完成,无需解锁手机也能触发(iOS "自动化"支持锁屏触发)。

图6.png
二、准备材料
  • NFC贴纸若干(NTAG213/215即可,淘宝几块钱一片)
  • 已连接Zigbee2MQTT的智能灯(本教程灯设备名为 卧室/床头灯,斜杠是Z2M的分组命名习惯,请替换成你自己的设备名)
  • Home Assistant(本教程Node-RED以HA的add-on形式运行)
  • Node-RED(HA add-on版本,已开启 httpNodeRoot: /endpoint)
  • 支持NFC读写的iPhone(安卓用户可用NFC Tools等App替代快捷指令)

三、Home Assistant / Node-RED 前期检查
  • 确认灯在Zigbee2MQTT中的friendly name,例如 卧室/床头灯
  • 打开Node-RED设置,确认 httpNodeRoot 已设置为 /endpoint(在HA add-on的Node-RED配置里可查看/修改)
  • 记下HA的局域网访问地址,例如 http://homeassistant.local:1880 或Node-RED对外暴露的端口

四、⚠️ 关键坑:直接发MQTT会导致自适应光照失效如果你和我一样装了 Adaptive Lighting(自适应光照,随时间自动调节色温/亮度),要特别注意:
Node-RED里如果用 mqtt out 节点直接给Zigbee2MQTT发指令(例如发 {"state":"ON"} 到 zigbee2mqtt/卧室/床头灯/set),这个操作绕过了HA的灯实体(light entity)状态机,Adaptive Lighting是监听HA灯实体的开关事件来触发接管的,直接发MQTT不会经过HA,所以自适应光照检测不到"灯被打开"这个事件,也就不会介入调节亮度色温——表现为NFC开灯之后灯是原来的颜色/亮度,不会渐变到当前时段该有的效果。
解决方法:不要直接mqtt out,改成调用HA的服务接口(light.turn_on / light.toggle),让HA先感知到状态变化,Adaptive Lighting才能正常接管。
两种方案对比:


方案实现方式Adaptive Lighting是否生效
A(有坑)Node-RED直接 mqtt out 到Z2M❌ 失效
B(推荐)Node-RED调用HA服务 light.toggle✅ 正常
五、Node-RED 流程搭建流程结构:http in → function(可选) → 调用HA服务(action节点) + http response
图2.png
1. http in 节点
  • 方法:GET(NFC触发用GET最简单,快捷指令直接访问URL即可)
  • URL:/nfc-bed-light(最终访问地址为 http://你的HA地址:1880/endpoint/nfc-bed-light)

2. function 节点(可选,用于日志/防抖)// 简单记录一下触发时间,方便调试node.warn("NFC床头灯触发: " + new Date().toLocaleString());return msg;
3. 调用HA服务节点(推荐用 action 节点,需装 node-red-contrib-home-assistant-websocket)
  • Domain: light
  • Service: toggle
  • Target → Entity ID: 填你灯对应的HA实体ID,例如 light.wozhi_chuangtoudeng(在HA的"设置-设备与服务-实体"里查找,别和Z2M的friendly name搞混)

4. http response 节点
  • 直接返回200即可,方便快捷指令判断请求成功

六、iPhone快捷指令设置
  • 打开"快捷指令"App,新建自动化 → 选择"NFC"
  • 靠近你的NFC贴纸完成绑定
  • 添加动作"获取URL内容",URL填 http://你的HA地址:1880/endpoint/nfc-bed-light,方法选GET
  • 关闭"运行前询问",这样碰一下就直接执行,不会弹确认框
  • 建议同时设置"个人自动化"里也允许在锁屏状态下运行
图3.png 图4.png
七、NFC贴纸粘贴位置建议
  • 贴在床头柜上手机常放置的区域,避免贴在金属表面(会屏蔽NFC信号)
  • 可以贴在床头柜抽屉正面、台灯底座、床头板边缘等手机放下时容易碰到的位置
  • 贴纸建议套一个小贴纸盒或用双面胶固定,防止脱落
图5.jpg
八、常见问题Q:iPhone需要碰哪个位置才能识别?A:iPhone的NFC感应区在机身顶部(Face ID机型)或后置摄像头附近(部分老机型),碰的时候尽量让手机顶部贴近标签。
Q:安卓手机怎么做?A:安卓原生支持NFC写入网址,用"NFC Tools"App写入一个URL标签,碰到后系统会提示"打开链接",效果和快捷指令类似,但没有iOS自动化那么"无感"。
Q:为什么第一次总是失败,第二次才成功?A:大概率是家里WiFi信号弱或者HA响应慢导致请求超时,可以在快捷指令里加个"如果失败则重试一次"的逻辑,或者检查手机和HA是否在同一网段。
Q:能不能一个标签控制多个设备?A:可以,在function节点或call service节点里配置多个entity_id,或者用array批量target即可。

以上就是全部内容,欢迎交流~




评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
admin + 20 + 20 高手,这是高手!

查看全部评分

回复

使用道具 举报

3

主题

33

回帖

150

积分

注册会员

积分
150
金钱
114
HASS币
0
发表于 2026-7-2 21:38:05 | 显示全部楼层
感谢分享教程,就是感觉不太实用相当于要拿手机去按开关,十几块钱买个开关平头熊无线开关,或者领普温度计,手指按一下无需手机
回复

使用道具 举报

22

主题

835

回帖

4885

积分

论坛元老

HomeAssistant

积分
4885
金钱
4023
HASS币
30
发表于 2026-7-3 08:25:57 | 显示全部楼层
HomeAssistant APP支持NFC Tag触发,可以直接接HA自动化,更方便一些,但是好像也需要亮屏
回复

使用道具 举报

1

主题

22

回帖

147

积分

论坛DIY达人

积分
147
金钱
119
HASS币
20
 楼主| 发表于 2026-7-3 09:02:42 | 显示全部楼层
这个方案优势就是“极简”,成本也就是NFC标签,我淘宝买了10个NTAG215标签只要12元包邮。无需添加新设备,无需考虑网关是什么协议的,手机也无需装额外的APP。
回复

使用道具 举报

0

主题

5

回帖

14

积分

新手上路

积分
14
金钱
9
HASS币
0
发表于 2026-7-3 13:16:36 | 显示全部楼层
安卓的nfc有点乱,贴上之后必须得选择用什么软件打开
回复

使用道具 举报

1

主题

22

回帖

147

积分

论坛DIY达人

积分
147
金钱
119
HASS币
20
 楼主| 发表于 2026-7-4 09:24:34 | 显示全部楼层
shikit 发表于 2026-7-3 13:16
安卓的nfc有点乱,贴上之后必须得选择用什么软件打开

不需要任何软件,安卓需要把网址写进NFC芯片里,然后手机扫NFC会问你需要访问网址吗?你点确定就会访问这个网址,然后就可以控制灯的开关。安卓应该也有其他完美的方案,但我没安卓手机。
回复

使用道具 举报

0

主题

38

回帖

1544

积分

金牌会员

积分
1544
金钱
1506
HASS币
0
发表于 2026-7-9 09:26:25 | 显示全部楼层
我只有开关灯的要求,所以直接自动化操作ios家庭配件,不过需要亮屏还是不够丝滑
回复

使用道具 举报

1

主题

22

回帖

147

积分

论坛DIY达人

积分
147
金钱
119
HASS币
20
 楼主| 发表于 2026-7-9 11:53:14 | 显示全部楼层
本帖最后由 cailuobo 于 2026-7-9 11:58 编辑
xsteel 发表于 2026-7-9 09:26
我只有开关灯的要求,所以直接自动化操作ios家庭配件,不过需要亮屏还是不够丝滑 ...

其实我也把灯桥接到homekit了,用你思路可以绕过node-red,感觉更加简单了👍
回复

使用道具 举报

0

主题

14

回帖

51

积分

注册会员

积分
51
金钱
37
HASS币
0
发表于 昨天 23:28 | 显示全部楼层
感谢分享教程
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-7-17 19:11 , Processed in 0.019706 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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