『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 51684|回复: 124

【经济实惠】使用ESP32追踪设备实现回家离家自动化

  [复制链接]

1

主题

36

帖子

305

积分

论坛技术达人

积分
305
金钱
264
HASS币
20
发表于 2021-7-12 17:38:20 | 显示全部楼层 |阅读模式
本帖最后由 lijunxiong2006 于 2021-7-13 10:39 编辑

之前看到Andrew J Freyer发布的项目monitor,使用蓝牙对设备进行追踪,之前试过或者了解过的用wifi、门锁、人体传感器都不太靠谱,并且本论坛大佬XCray也对这个项目赞誉有加,所以想着试试体验下,但是手里没有树莓派,买一个还挺贵的
所以就顺着这个思路在ESP32上实现了类似效果,并且使用到了esp32双核的特性(网络连接一个核,BLE扫描一个核),已经稳定运行大半年,因为我自己和家人手机都是iOS的,所以也只实现了iOS设备的追踪,当然那种放纽扣电池的BLE Tag也行。
项目地址:esp_ble_tracker
预防针:本来是自己玩的,不过在XCray的帖子求助时候提到了分享出来,所以没有考虑任何用户使用体验,没有做web设置界面(虽然想过但是工作太忙了),我只在iOS设备试过,过程需要自己编译和烧录,而且是两次,如果你没打算放弃,那我们就开始吧!
基础材料:ESP32,一台电脑,ArduinoIDE,MQTT服务,WIFI环境
步骤:
1.获取手机的irk,因为现在手机BLE广播都不会暴露真实MAC地址,所以需要irk进行换算,过程其实很简单总的来说就是:
   烧录“get_irk”到ESP32-->手机上装个LightBlue(类似软件也行)连接ESP32的蓝牙进行配对-->IDE的串口监视器上就会打印出来IRK类似这样 irk:xxxxxxxxxxxxxxxxxxxxx
2.修改tracker/TrackerI.ino文件中的一些宏定义、irk信息、设备对应的用户名:
   WiFiSSID:接入点名称
   WiFiPWD:密码
   MQTT_SERVER:MQTT的服务地址
   MQTT_USER:MQTT用户名
   MQTT_PWD:MQTT密码
   irk[][ESP_BT_OCTET16_LEN]:在这个里面填irk,有多少设备填多少,用逗号分隔,代码里有示例
   users[]:对应用户名,有多少irk,写多少用户名
   当然如果你有兴趣,还有很多其他的参数可以调整,比如扫描次数,间隔时间,除抖动等等。
3.烧录tracker项目到ESP32,并且上电,如果你是开发板,上面的LED会开始闪烁,说明扫描中
  也可以订阅消息主题“v1/trackeri/state”看下是否收到消息比如:
   mqtt_msg.png
4.集成到HomeAssistant,因为是用的MQTT所以有很多方法,我只具体最简单直接的方法:
添加配置:
*把value_json['dyson']中的用户名换成你在代码中设定的用户名就行了
sensor:
 - platform:  mqtt
   name:  "Dyson"
   state_topic:  "v1/trackeri/state"
   value_template:  "{{value_json['dyson']['currentState'] | replace('1','在家') | replace('0','离家')}}"
 - platform:  mqtt
   name:  "DysonII"
   state_topic:  "v1/trackeri/state"
   value_template:  "{{value_json['dysonII']['currentState'] | replace('1','在家') | replace('0','离家')}}"
 - platform:  mqtt
   name:  "Neely"
   state_topic:  "v1/trackeri/state"
   value_template:  "{{value_json['Neely']['currentState'] | replace('1','在家') | replace('0','离家')}}"


就能在hass里看到状态信息了: 1.png
剩下如何联动就不在这里展开了,聪明的你们都可以的


p.s.
如果你们觉得有意思,并且我也有时间的话,也许我们可以:
1.添加web配置页面,直接获取irk和设置wifi连接等参数
2.支持Android设备
3.增加一些状态指示灯
esp_ble_tracker.zip (94.54 KB, 下载次数: 298)



评分

参与人数 8金钱 +90 HASS币 +20 收起 理由
CYJason2000 + 6 专门注册账号来顶你!
Jerrylee + 10 感谢楼主分享!
wison + 2 其实不用界面也行,就是get_irk去获取内网某.
whxciotw + 20 感谢楼主分享!
blackcui + 10 论坛有你更精彩!
+ 20 + 20 厉害了word楼主!
假若没有明天 + 2 感谢楼主分享!
XCray + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

22

主题

656

帖子

4574

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4574
金钱
3903
HASS币
40
发表于 2021-7-12 17:51:17 | 显示全部楼层
活捉大佬一枚~!
收藏,学习,尝试自己也搞一下
回复

使用道具 举报

14

主题

137

帖子

1377

积分

论坛特邀嘉宾

积分
1377
金钱
1240
HASS币
0
发表于 2021-7-12 19:23:20 | 显示全部楼层
本帖最后由 Alexie 于 2021-7-12 19:25 编辑

  挺有趣的idea ~ 之前联动到家场景,我们做过检测手机位置 - 发现极其耗电,经常被用户吐槽app后台耗电,所以目前基本推荐通过绑定IFTTT的位置定位联动来触发场景,但是IFTTT也是类似的检测位置,特别耗电 - 但至少用户吐槽的是IFTTT不是我们了 哈哈哈 腹黑一下。

这个方式我觉得挺好 - 家里放一个便宜的小设备,然后能扫描发现到特定的蓝牙设备(用户手机),则发现后就触发回家状态变更 - 发现搜索不到则触发离家变更。虽然不是非常准确,但是对极客玩家来说,确实挺好....
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-7-12 20:23:33 | 显示全部楼层
感谢楼主分享!

如果能加到ESPHome里面就更美了!
回复

使用道具 举报

8

主题

229

帖子

2000

积分

金牌会员

Rank: 6Rank: 6

积分
2000
金钱
1771
HASS币
0
发表于 2021-7-12 22:21:40 | 显示全部楼层
本帖最后由 xiaopi 于 2021-7-12 22:39 编辑

关于获取IRK,可以参考下面fryefryefrye的链接,esp32直刷固件也在此链接数码之家

get_irk.ino.esp32.zip

504.25 KB, 下载次数: 108

回复

使用道具 举报

8

主题

229

帖子

2000

积分

金牌会员

Rank: 6Rank: 6

积分
2000
金钱
1771
HASS币
0
发表于 2021-7-12 22:41:05 | 显示全部楼层
我的esp32还兼顾传感器的功能,能像XCray说的,作为一个插件功能放在ESPhome里那就太好了
回复

使用道具 举报

34

主题

709

帖子

4693

积分

论坛元老

Rank: 8Rank: 8

积分
4693
金钱
3974
HASS币
50
发表于 2021-7-13 10:19:01 | 显示全部楼层
看起来不错,,,,追踪蓝牙信号费手机的电吗?
回复

使用道具 举报

1

主题

36

帖子

305

积分

论坛技术达人

积分
305
金钱
264
HASS币
20
 楼主| 发表于 2021-7-13 10:32:17 | 显示全部楼层
huang7dede 发表于 2021-7-13 10:19
看起来不错,,,,追踪蓝牙信号费手机的电吗?

不会,不管你有没有扫描,手机也会定时一直发送广播的,和AirTag的原理一样。
回复

使用道具 举报

1

主题

36

帖子

305

积分

论坛技术达人

积分
305
金钱
264
HASS币
20
 楼主| 发表于 2021-7-13 10:40:57 | 显示全部楼层
ryanh7 发表于 2021-7-12 23:46
esphome里面的esp32_ble_tracker?

暂时还没集成到esphome里,不过有时间可以试试看
回复

使用道具 举报

8

主题

690

帖子

4554

积分

论坛元老

Rank: 8Rank: 8

积分
4554
金钱
3859
HASS币
0
QQ
发表于 2021-7-13 15:43:33 | 显示全部楼层
大佬啊,顶一波,期待集成到Esphome里
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 17:27 , Processed in 0.142251 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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