ESPresence,HA的室内定位
前言:人体存在传感器 可以解决一部分卧室内是否持续有人的问题,为什么是一部分,根据我目前的使用情况来看,睡觉的时候盖被子会有误报的情况,当然,可以用自动化来解决这个问题,比如当我或者我老婆休息的时候,关闭掉自动化,起床再开启。再一个,如果像我这个房间构造来看,我尝试了不同的位置摆放,使用一个并不能很好的覆盖,碰到风扇是开启的话,还是会产生干扰,当然,这里并不是就是说人体存在传感器就不好,准确来说我认为各有优劣,看怎么使用。最后我尝试用ESPresence来解决掉判断卧室是否有人这个问题。
以下是我房子大概的布局。画的很随意简单。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a508a9971985580.jpg_e1080.jpg)
正文:ESPresence是通过esp32的蓝牙来获取距离和位置信息,从而判断出设备位置。所以很明显,判断的设备需要随身携带,日常使用来看,就是手机手环。需要的东西是:
1、esp32
2、homeassistant
3、mqtt服务器
4、手机或者手环或者蓝牙信标等。(多多买了个智能戒指,但是信号实在是太弱了。)
![esp32](https://qnam.smzdm.com/202407/27/66a509533340d9276.jpg_e1080.jpg)
固件刷写:
首先是刷入固件,链接是http://espresense.com/firmware
我们打开链接,插入esp32,如图所示,点击connect,第一次会提示你安装驱动,选择自己购买的esp32的驱动,下载安装即可,安装完毕刷新网页,再次点击connect,会在左上角有提示选项,选择它,按照下面图示进行安装。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a509b2aea391109.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a509c61c0269439.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a509c9b1a1d8476.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a509d766b9c3523.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a509e50a1175820.jpg_e1080.jpg)
等到固件刷写完毕以后,会提示填写wifi信息,填入自己的wifi名称和密码即可。在这里可能会有一个bug,就是填写了以后并不能连接上wifi,这时候也没有关系,保证esp32在通电的情况下,用手机打开wifi,在wifi列表中,找到ESPresence的wifi的ssid,连接上去,不需要密码。然后手机会提示进入登录界面,如果不进入登录界面,看一下手机连接wifi的网段是多少,然后浏览器打开192.168.X.1,会进入ESPresence的后台管理页面,这时候第一行可以选择wifi的ssid,只需要选择自己的wifi ssid填写好密码,保存和重启即可。
重启以后需要去路由器后台查询一下ESPresence的内网地址,然后浏览器输入进入后台管理页面。
ESPresence的管理界面如下图,在Room下面填写一个房间名称,我这里写wj_bedroom,剩下两个选项我没有更改,然后在mqtt下面填写已经安装的mqtt的服务器地址,端口默认1883,填写自己设置的mqtt的账号密码,其他选项可以按照我图里的选项来设置,最后保存重启,就可以在ha的mqtt中看到这个设备了。
![管理页面](https://am.zdmimg.com/202407/27/66a50a6a9a3ac2615.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50f459a8085038.jpg_e1080.jpg)
使用教程:
当espresence刷写好后,mqtt里的设备会如图所示,这时候表示已经加入了我们的mqtt,然后就是开始使用了。点击mqtt中设备的访问,可以直接打开这个espresence的后台,打开以后在地址后面加上/ui进入另一个设置界面,这时候进行进一步的设置。
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a50ae9b19374409.jpg_e1080.jpg)
首先手机是ios的情况下,点击devices——enroll,输入想要的名称,这里我的手机是iPhone13 pro max,我就填入iPhone13 pro max,然后点击enroll。会有这个页面,这时候用ios设备打开蓝牙,可以搜索到espresence,连接即可,连接以后会获得一个irk,就是该设备的地址,后续会用到。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50b037315e1025.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50b0dfaee27245.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a50b153d5763206.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a50b7356a5e6117.jpg_e1080.jpg)
如果手机是安卓,这里用ha的app来演示,打开app,配置——companion应用——管理传感器,找到蓝牙传感器,选择BLE发射器,启用传感器,广播模式选择平衡(3hz),测量功率先不变,我打开了Transmit on Home Network wifi ssid only,这可以在非本地wifi的情况下不发射以节省电量。启用发射器打开,发射器功率我选择的是高。然后打开espresence的后台页面(带ui的页面),在左侧Fingerprints中就可以看到iBeacon开头,后面数字是ha app中uuid的一串数字,这串数字就是安卓设备的地址。
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a50b8a6e6b22279.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://qnam.smzdm.com/202407/27/66a50bdac4c112267.jpg_e1080.jpg)
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50be55f5882977.jpg_e1080.jpg)
在这里我说一下,安卓可以用第一个ios的方法,就是在蓝牙页连接espresence,但是经过我的测试,这个方法在安卓的情况下,且在手机黑屏一段时间,espresence会获取不到蓝牙信标,所以安卓手机这里我只建议用ibeacon的方式。
当获取到这些需要的信息以后,就需要配置一下yaml文件,打开ha的configuration.yaml文件,添加mqtt的传感器代码如下:
sensor:
- platform: mqtt_room
device_id: "iBeacon:xxxxxxxxxx"
name: "ESP_Yik_irk_room_location"
state_topic: "espresense/devices/iBeacon:xxxxxxxxxxx"
timeout: 5
unique_id: "ESP_Yik_irk_room_location"
away_timeout: 120
- platform: mqtt_room
device_id: "irk:xxxxxxxxxxxx"
name: "ESP_8P"
unique_id: "ESP_8P"
state_topic: "espresense/devices/irk:xxxxxxxxx"
timeout: 5
away_timeout: 120
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50acf92e25404.jpg_e1080.jpg)
请严格按照以上格式添加,device:id后面填写Fingerprints中显示的ibeacon;name和unique_id就可以自定义设置需要的名称,填写完成以后重启ha,建议先快速重载,看是否报错,不报错的情况下再重启即可。
重启后在实体中找一下自己创建的传感器是否正常工作,如下图所示,如果有的话证明已经刷好一个并且可以正常开始使用了,剩下的就是微调了。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50ca9769027447.jpg_e1080.jpg)
这里我分三种情况来说明:
第一种,一个人或者一家人都是用的ios,由于ios的特性,基本上只需要设置mqtt设备中的absorption数值和max distance这两个数值即可,将手机和esp32放在一起,打开ui界面进入fingerprints中,看看第一个参数的距离是不是小于0.5m,调整一下absorption这个参数,然后将手机放置大概2m距离,在观察该设备irk的距离是否准确即可,至于max distance则是你想要该espresence所检测的最大范围,超过这个距离就会输出not_home或者其他房间。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50ce72ad4f1582.jpg_e1080.jpg)
第二种:都是安卓手机,那就只需要在ha的app中,按照同样的设置设置相同的蓝牙信标参数,应该就没有问题(手里只有一台安卓,没法测试)
第三种:又有安卓又有ios,比如我家,老婆用iPhone我用安卓。由于苹果没有办法调整rssi和信号参数,所以我拿ios做基础,通过调整安卓app的参数来尽量保证和ios一样得距离,这里我就是测得如图的参数(上面安卓的参数),仅供参考。
![ESPresence,HA的室内定位](https://am.zdmimg.com/202407/27/66a50c503568e2637.jpg_e1080.jpg)
回到开头的图,我和我老婆的活动范围基本上就是卧室和客厅,所以目前就用了两个esp32,放置在套房的最两端,将max distance设置好以后,不管是客厅到卧室,还是卧室到客厅,都切换的很丝滑,从而判断卧室是否有人,当然,这个方案就是手机不离身,但是基本上也是手机不离身,如果有带手环或者手表的习惯,其实也可以。
声明:本人专业不是这,只是闲暇时间折腾,并不专业,所以写的不对的地方请大佬指正。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
![](https://res.smzdm.com/pc/pc_shequ/dist/img/the-end.png)
欧阳_凤
这样我拿着定位器 唉个屋子标定。。。
后面就可以做的很准了。。这样就可以控制灯。
校验提示文案
头陀第一
校验提示文案
头疼脑热
校验提示文案
爱猫猫的男孩
校验提示文案
布窗内库
校验提示文案
广东人字拖
校验提示文案
摸鱼集团吃点心专员
校验提示文案
广东人字拖
校验提示文案
欧阳_凤
校验提示文案
Kaneive
校验提示文案
lierhi
校验提示文案
lamsu
校验提示文案
头陀第一
校验提示文案
lamsu
校验提示文案
lierhi
校验提示文案
Kaneive
校验提示文案
欧阳_凤
这样我拿着定位器 唉个屋子标定。。。
后面就可以做的很准了。。这样就可以控制灯。
校验提示文案
欧阳_凤
校验提示文案
广东人字拖
校验提示文案
摸鱼集团吃点心专员
校验提示文案
广东人字拖
校验提示文案
布窗内库
校验提示文案
爱猫猫的男孩
校验提示文案
头疼脑热
校验提示文案