- 积分
- 12103
- 金钱
- 9084
- 威望
- 0
- 贡献
- 0
- HASS币
- 460
超级版主
智能家居&单板滑雪痴迷爱好者
- 积分
- 12103
- 金钱
- 9084
- HASS币
- 460
|
本帖最后由 XCray 于 2023-10-9 16:15 编辑
2023.10.7更新:随着HA本身的发展,本贴所述方案已经不是最佳的了。
更好的方案就是HA自身的私密BLE设备跟踪功能,加上ESPHome的蓝牙代理功能也可以实现分布式。
传送门:https://bbs.hassbian.com/thread-22926-1-1.html
不过依然要感谢monitor这个优秀的软件!
以下为之前编辑的内容:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本贴介绍的是一个非常牛的小软件,牛到什么程度呢?
github上的repo有906颗星、119次fork、22位贡献者。
作者在HA官方论坛发的新版介绍帖子,有10.5万次点击、1900个回复。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
玩智能家居,入坑深似海,来来回回的折腾,可是真正静心的想一想,虽然折腾有折腾的乐趣,可我们的初心图的其实是方便。
而这个方便之中,大家最在意、也是最尴尬的,就是如何才能准确、及时的自动判断回家离家,并且成本和复杂度又不宜过高。
说尴尬,是因为几乎每种方案都存在明显的弱点。更高科技的我没玩过,但我使用过的wifi、蓝牙、地理围栏等等好几种方法,翻遍了HA官方文档几十种presence detection类的集成,都没有找到一个让我可以接收、愿意长期使用的方案。全世界HA的玩家和开发者,几乎每个人都为这个问题绞尽脑汁,别的不说,迄今HA原生的presence detection类的集成,已经多达66种,这个数字正式大家思考探索的一个体现。
我们想要的效果,说起来很简单,准确、及时、自动,有这3点基本就够了。可以真要做到这3点要求,还真不是一件容易的事儿。
1. 自动,相对来说最容易的,也是大家对智能家居感兴趣的基本理由。基本上每种方法都追求自动,这个其实没啥好说的。
2. 及时和准确其实是相辅相成的,保证不了及时,准确也就失去了意义。保证不了准确,再及时也是然并卵。
一般来说,判断所有人离家相对比较容易,对及时性的要求相对宽松,晚个几十秒甚至几分钟都可以接受,只要准确性可以保证基本就可以了。
而判断有人回家,最起码应该在他/她打开门之前就应该准确地判断出,如果等他/她进门之后才判断出来,哪怕只是慢了一两秒,都是一种不合格的方案。比如我们一般都要求所有人离家之后自动进入警戒模式,如果不能及时判断回家,开门就会导致误报警,显然这是无法接受的。
至于那种开门自动开灯,要等进门后上完厕所出来才有反应,更是笑话(由于厂家的云端服务器故障或网络故障,这种事儿还真不少见)。
3. 前面说的几十种方法,基本上都是在及时和准确方面存在着严重的欠缺!
- 比如说基于WiFi的各种方案(包括用ping、nmap以及各种路由器的变种),最致命的缺陷就是无法做到及时准确的判断手机设备断开和恢复连接,其中一个重要的原因就是手机为了节能,并不会频繁的搜索wifi信号、快速的恢复连接。而路由器呢,为了避免频繁操作,在手机实际断开后,要等挺长一段事件才会判定手机断开,这也难以做到“及时”
- 比如基于GPS的各种方案,手机也不会高频率的上报位置,再说如果hass进程没有暴露在公网,也很难实现接收手机位置数据的要求
- HA原生的蓝牙功能,不好用不说,很多部署HA的平台上压根儿就没有蓝牙(比如群晖、路由器),所以也不是一个好的方案
- 我甚至专门买过几个蓝牙的beacon,也没有很好的解决我的诉求
4. 和很多HA玩家一样,我也是自从入坑以来,一直在苦苦寻找一种理想的方案而不得,直到有一天在HA官方论坛上看到了一位大神的神贴:
Reliable, Multi-User, Distributed Bluetooth Occupancy/Presence Detection
可靠,多用户,分布式,蓝牙——这几个词深深地吸引到我。再仔细阅读,深感这就是我理想中的方案。反复尝试(发明者也在不断的升级代码)之后,逐渐接近于完美,也就成了我一直使用的首选方案。
这个帖子的地址:https://community.home-assistant.io/t/monitor-reliable-multi-user-distributed-bluetooth-occupancy-presence-detection/68505,只要英语还过得去,推荐看原文。
这个作者(我更愿意称他为发明者)叫[color=rgb(3, 102, 214) !important]Andrew J Freyer,是一位了不起的玩家,蓝牙、linux都堪称精通。
这个方案的核心,实际上是一个shell脚本(我也曾惊叹shell脚本也可以做到如此厉害的程度),旧版本还不叫这个名字,不过不用管了,直接用最新的就好。
这个脚本的官方发布地址:https://github.com/andrewjfreyer/monitor,有非常详尽的文档!
简单来说,这个方案就是利用1个到多个树莓派(zero w起,因为要用蓝牙,其他类似的板子也可以),以一种非常聪明的方式检测指定的蓝牙设备是否在可联系范围,然后用mqtt协议通知HA。
5. 在城市里,一般也不会住大院子,所以一个树莓派基本上也够用了。尽量放在离门口比较近的地方。
我就是用了一个3B+(只有这一个),结合门磁传感器和智能门锁,基本完美地实现了及时准确的判断所有人离家、有人回家的事件,可以及时进入警戒、及时解除警戒以及相应的操作摄像头、照明等。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20200611补充:我结合我自己的用法,把安装配置步骤翻译了一下,放在了26楼,懒得看英文的朋友可以参考。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里说说这个工具好在哪儿。
利用低功耗蓝牙进行在家/离家检测,基本做法是向已知地址发出名称查询指令,收到回复就认为该设备在家。没收到?那就是不在喽~~~
具体实现上,一般的做法就是周期性检测,当然这也是最笨的做法——检测频率低了,时效性不够;检测频率高了,耗电不说,干扰会很大(蓝牙也是2.4G,频繁检测的话对2.4G WiFi的干扰就不容忽视了)。
而这个脚本呢?巧妙的充分利用了低功耗蓝牙设备的特性和行为规律,只在必要时进行检测——就是只有在发现新出现的蓝牙设备时才检测,具体细节看原文吧。
另一个很大的优点,就是分布式。如果房子大院子大的话,可以在不同的位置放置多个树莓派,都运行这个脚本(当然要设置好),它们就会协同工作,提供更准确合理的检测结果。
这个作者最让我感动的一是他的专业知识(一般人想不出这么巧妙的方法、写不出这么完善的脚本),二是他的善解人意,考虑的非常周到,把能用脚本自动实现的各项配置都在脚本里实现了,使用者只需要简单的设置即可(当然,要熟悉ha、有基本的linux以及mqtt协议知识等)
|
评分
-
查看全部评分
|