网易首页 > 网易号 > 正文 申请入驻

2.9元廉价iTag防丢器通过ESPHome接入HA

0
分享至




说实话,这玩意儿我去年就在某宝买过一个,当时看它便宜,随手就扔钥匙扣上挂着了。那时候也没想着怎么折腾,就当个单纯的防丢挂件用。直到前两天,我在论坛看到大佬“雪晴科技HTH”推荐这东西,说它能完美接入Home Assistant,而且功能还不少。这下勾起了我的折腾欲,2块9的东西(用了3块优惠券,原价5.9元),要是真能变身智能按钮加蓝牙追踪,那性价比简直逆天了。

什么是 iTag?

iTag 这类产品其实是个通用的 BLE(低功耗蓝牙)标签。外观大多是个小水滴形状,里面藏着一个纽扣电池、一个蜂鸣器和一个物理按键。本质上,它就是一个标准的 BLE GATT 设备。虽然各家厂商出的固件可能稍有不同,但底层逻辑是一样的:通过不同的“特征(Characteristic)”来传输按键信号、电量信息或者触发蜂鸣器。

为什么选它?

对我这种家里还没装智能门锁、还在用机械钥匙的人来说,iTag 简直是刚需。

  1. 1. 无线按钮:它支持单击和双击判定。挂在钥匙上,进门顺手一按就能触发开关灯或者控制指定设备。
  2. 2. 居家/离家判定:利用 ESP32 的蓝牙连接上itag防丢器。只要钥匙在范围内,我就在,可以做自动化离家和回家场景。
  3. 3. 寻物报警:找不到钥匙了?手机点一下,钥匙扣就开始尖叫。
  4. 4. 超低成本:2块9,坏了丢了完全不心疼。
逆向与折腾:从抓包到接入

主要用到了esp32开发板,然后在esphome代码里启用(esp32_ble_tracker)BLE 扫描跟踪组件和(ble_client)BLE 客户端组件,如果家里有esp32芯片的智能设备,可以加几行代码进去就可以实现把itag防丢器接入HA。

折腾的第一步是逆向调试。我用了 Web Bluetooth API 工具连接了 iTag,发现它的按键信号是通过服务 0xFFE0 的特征 0xFFE1 推送的。不同芯片方案(有的用 Ti CC2541,有的用杰理)推送的 HEX 数据不一样,我这个单击发的是 0x01。

最大的坑在于那个模式控制寄存器 0x1802 / 0x2A06。它其实是个 3态互斥寄存器:写入 0x01 是寻物报警,0x00 是按键提示音,0x02 是静音。如果你把它当成普通的开关配置,肯定会打架。所以我最后在 ESPHome 里用了一个 select 选择器来统一管理,效果非常稳。






针对双击手感,我还微调了 ESPHome 的 on_multi_click 时间参数。因为人手操作总是有快慢,把判定窗口放宽到 0.6 秒后,识别率几乎达到了 100%。

完整的 ESPHome 配置代码

直接把下面这段代码粘进你的配置里,改下 MAC 地址就能用。我已经把电量查询、寻物开关、ITAG单击双击和ITAG连接状态全都写好了。

substitutions:  device_name: "itag_button"  itag_mac: "FF:******:DF"esphome:  name: esp32kf  friendly_name: esp32kfesp32:  board: esp32dev  framework:    type: esp-idflogger:esp32_ble_tracker:  scan_parameters:    active: true    interval: 150ms    window: 100msble_client:  - mac_address: ${itag_mac}    id: itag_client    on_connect:      then:        - binary_sensor.template.publish:            id: itag_connected_real            state: ON        - ble_client.ble_write:            id: itag_client            service_uuid: 'FFE0'            characteristic_uuid: 'FFE2'            value: [0x00]        - logger.log: "iTag 链路已建立,状态同步为:在家"    on_disconnect:      then:        - binary_sensor.template.publish:            id: itag_connected_real            state: OFF        - logger.log: "iTag 链路已断开,状态同步为:离家"sensor:  - platform: internal_temperature    name: "esp32 Temperature"  - platform: ble_client    type: characteristic    ble_client_id: itag_client    name: "iTag battery"    icon: "mdi:battery"    service_uuid: '180F'    characteristic_uuid: '2A19'    unit_of_measurement: "%"    accuracy_decimals: 0    update_interval: 2hbinary_sensor:  - platform: template    name: "钥匙扣实际状态"    id: itag_connected_real    device_class: connectivity  - platform: template    id: itag_button_pulse    internal: true    on_multi_click:      - timing:          - ON for at most 0.4s          - OFF for at least 0.4s        then:          - text_sensor.template.publish:              id: last_action              state: "单击 (Single Click)"          - delay: 500ms          - text_sensor.template.publish:              id: last_action              state: "null"      - timing:          - ON for at most 0.4s          - OFF for at most 0.4s          - ON for at most 0.4s        then:          - text_sensor.template.publish:              id: last_action              state: "双击 (Double Click)"          - delay: 500ms          - text_sensor.template.publish:              id: last_action              state: "null"select:  - platform: template    name: "钥匙扣工作模式"    id: itag_work_mode    icon: "mdi:tune-vertical"    optimistic: true    restore_value: true    options:      - "静音模式"      - "按键提示音"      - "寻物蜂鸣"    set_action:      - logger.log:          format: "【模式切换】iTag 当前设为: %s"          args: ["x.c_str()"]      - if:          condition:            lambda: 'return x == "静音模式";'          then:            - ble_client.ble_write:                id: itag_client                service_uuid: '1802'                characteristic_uuid: '2A06'                value: [0x02]      - if:          condition:            lambda: 'return x == "按键提示音";'          then:            - ble_client.ble_write:                id: itag_client                service_uuid: '1802'                characteristic_uuid: '2A06'                value: [0x00]      - if:          condition:            lambda: 'return x == "寻物蜂鸣";'          then:            - ble_client.ble_write:                id: itag_client                service_uuid: '1802'                characteristic_uuid: '2A06'                value: [0x01]text_sensor:  - platform: ble_client    ble_client_id: itag_client    service_uuid: 'FFE0'    id: djkj    characteristic_uuid: 'FFE1'    internal: true    notify: true    on_notify:      then:        - if:            condition:              lambda: 'return !x.empty() && ((uint8_t)x[0]) == 0x01;'            then:              - logger.log: "【iTag】捕获到硬件按键按下事件!"              - binary_sensor.template.publish:                  id: itag_button_pulse                  state: ON              - delay: 50ms              - binary_sensor.template.publish:                  id: itag_button_pulse                  state: OFF  - platform: template    name: "钥匙扣最后动作"    id: last_action    icon: "mdi:gesture-tap"
总结

折腾完之后,我发现这小玩意儿比我想象中要稳。虽然它只是个 2.9 元的硬件,但配合 ESPHome 和 HA 的自动化,能玩出的花样真的很多。如果你手里也有吃灰的防丢器,不妨动手试一试,这绝对是入坑智能家居成本最低、乐趣最高的方式之一了。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
纯友谊!陈乔恩晒乔任梁父母合照庆冥诞,哭肿的眼错位的手泪目了

纯友谊!陈乔恩晒乔任梁父母合照庆冥诞,哭肿的眼错位的手泪目了

领略非凡
2026-10-15 21:30:32
65年江青参加会见李宗仁宴席,次年李宗仁指着她问:她是谁?

65年江青参加会见李宗仁宴席,次年李宗仁指着她问:她是谁?

大运河时空
2026-10-16 13:45:05
纳指100大跌1.3% 明星科技股多数下跌

纳指100大跌1.3% 明星科技股多数下跌

每日经济新闻
2026-10-16 23:54:17
津门虎成功上岸!媒体人热议:这一年万语千言,没强大心理早垮了

津门虎成功上岸!媒体人热议:这一年万语千言,没强大心理早垮了

奥拜尔
2026-10-16 21:43:03
周恩来晚年坦言:若非毛主席拦下绝密军令,3万红军或全军覆灭?

周恩来晚年坦言:若非毛主席拦下绝密军令,3万红军或全军覆灭?

纪史行者
2026-10-03 03:50:06
多亏俄乌大战,我们才彻底认清俄罗斯真面目!简单来说就是两句话:东方的命,西方的心

多亏俄乌大战,我们才彻底认清俄罗斯真面目!简单来说就是两句话:东方的命,西方的心

扶苏聊历史
2026-10-15 15:10:43
沉默45年,中国终于迎来第二轮“严打”!目标改变总体战正式打响

沉默45年,中国终于迎来第二轮“严打”!目标改变总体战正式打响

闻识
2026-05-04 08:59:03
这就是差距!为何输上海?没想到深圳主帅赛后这样说,贺希宁很实在

这就是差距!为何输上海?没想到深圳主帅赛后这样说,贺希宁很实在

人生何尝不是酒
2026-10-17 07:27:18
质疑刘丁硕?侯英超:我和张继科是20年好友 说他不自律是没事找事

质疑刘丁硕?侯英超:我和张继科是20年好友 说他不自律是没事找事

风过乡
2026-10-17 07:38:47
连看四集《嫁金钗》,我想说:古装剧的大门要被田曦薇给踹烂了

连看四集《嫁金钗》,我想说:古装剧的大门要被田曦薇给踹烂了

娱圈办事处
2026-10-16 20:57:32
上海102-68深圳!赛后杜锋发声:给顾全留了退路,给赢家挑了问题

上海102-68深圳!赛后杜锋发声:给顾全留了退路,给赢家挑了问题

兰亭墨未干
2026-10-17 07:28:44
44岁姚笛独自在杭州豪宅家中煮泡面,眼神中难掩落寞

44岁姚笛独自在杭州豪宅家中煮泡面,眼神中难掩落寞

追影客栈
2026-10-03 16:08:17
九号自驾两轮车亮相苏超,张雪直言“有点搞笑”

九号自驾两轮车亮相苏超,张雪直言“有点搞笑”

观察者网
2026-10-16 16:51:18
多部门介入“母子衣衫不整”事件!

多部门介入“母子衣衫不整”事件!

新动察
2026-10-16 11:00:05
“这就是穿碳板鞋的下场”,初中男孩走路姿势给人看懵了,家长全然不知

“这就是穿碳板鞋的下场”,初中男孩走路姿势给人看懵了,家长全然不知

熙熙说教
2026-10-13 16:28:55
从主持人到“精神病”,49岁无妻无子的李维嘉,不再顾及所谓体面

从主持人到“精神病”,49岁无妻无子的李维嘉,不再顾及所谓体面

兵鉴史
2026-10-07 09:14:24
拉莫斯:非常失望,争取下一场以崭新的面貌给球迷们一个交代

拉莫斯:非常失望,争取下一场以崭新的面貌给球迷们一个交代

懂球帝
2026-10-16 23:12:10
没想到!委内瑞拉民调:马查多支持率52%遥遥领先,代总统仅19%!

没想到!委内瑞拉民调:马查多支持率52%遥遥领先,代总统仅19%!

麓谷隐士
2026-10-17 00:05:04
火箭官方晒出中国赛姚明和杜兰特的合影,并配文:百分百尊敬

火箭官方晒出中国赛姚明和杜兰特的合影,并配文:百分百尊敬

懂球帝
2026-10-16 17:52:16
润美记者小舞再语出惊人!厕所里马桶加配纸,中国再过一百年也达不到

润美记者小舞再语出惊人!厕所里马桶加配纸,中国再过一百年也达不到

小徐讲八卦
2026-10-16 15:12:26
2026-10-17 08:19:00
粤语音乐喷泉
粤语音乐喷泉
来听音乐吧
136文章数 11934关注度
往期回顾 全部

数码要闻

曝英特尔"Nova Lake"处理器统一采用四位数字名称格式

头条要闻

威马官微发帖讨薪"请发我们工资" 车机App疑似停摆

头条要闻

威马官微发帖讨薪"请发我们工资" 车机App疑似停摆

体育要闻

工资一分不要,曼联名将想把母队带回西甲

娱乐要闻

郭富城现身香港大学,袁咏仪夫妇全程冷漠不搭话

财经要闻

港交所拟2028年下半年实施T+1结算

科技要闻

杨天若院士:AI是中国弯道超车的机会

汽车要闻

特斯拉会飞?全新Roadster亮相

态度原创

本地
亲子
房产
游戏
手机

本地新闻

因新荣记出圈,这座浙东小城才是吃货天堂

亲子要闻

一图读懂丨科学照护之洗澡和游泳

房产要闻

利好密集落地+现房好房断档,广州楼市买入窗口,正在倒计时!

终末地刚开新版本就画大饼,玩家却说香疯了?

手机要闻

科技记者古尔曼:苹果在供应有限的情况下过早推出了iPhone Duo

无障碍浏览 进入关怀版