Home Assistant如何准确的判断某人在家(离家)

2023-11-21 15:20:12 16点赞 117收藏 12评论

前言

当在智能家居联动配置的时候,触发条件往往是家居联动的一个瓶颈,如果没有办法根据自身需求来触发自动化,那么后面自动化执行也失去了意义。 Home Aisstant中触发条件有很多,包括日期、时间、设备的状态、webhook、MQTT等等,但是在实际生活中,基于位置的自动化是用得比较多的,比如快到家了,自动洗澡水等

HomeAssistant自带方案

通过【我的家】圈出来的范围,可以作为触发条件。

可以在【配置】->【区域和地点】->【地点】中进行【我的家】配置

Home Assistant如何准确的判断某人在家(离家)

点击右侧的【小齿轮】按钮,可以对海拔、时区、单位等进行设置

Home Assistant如何准确的判断某人在家(离家)

也可以在【地点】的右下角点击【添加地点】按钮添加新的地点,添加的时候可以设置经纬度和半径

Home Assistant如何准确的判断某人在家(离家)

如果需要小范围更改地点的位置,可以按住圆圈不动,当鼠标变为【+】号的时候,拖动进行调整

Home Assistant如何准确的判断某人在家(离家)

这样有了多个地点信息,当创建自动化的时候,就可以设置以【地点】作为触发条件

Home Assistant如何准确的判断某人在家(离家)

触发条件可以设置为进入(离开)家的范围。下图的位置追踪设备就是你的手机,Home Assistant是根据手机位置信息来进行追踪判断的,所以手机上也要安装Home Assistant客户端,并且要保持Home Assistant始终允许位置信息。在IPhone上设置始终允许位置是没有任何问题的,但是在安卓上,各自的手机厂商一旦把后台任务停了,就没办法实时获取位置信息了

Home Assistant如何准确的判断某人在家(离家)

社区方案

接下来介绍的方法是我使用了几年来最稳定、最简单的判定是否在家(离家)的方案,这里说的在家(离家)就不是前面介绍的一个大概位置,而是根据手机是否连上你家的WIFI来判断的。

点开【HACS】->【集成】,如果没有这个菜单,请看我前面的文章

Home Assistant如何准确的判断某人在家(离家)

选择右下角的【浏览并下载存储库】按钮,安装【iPhone Device Tracker】集成

Home Assistant如何准确的判断某人在家(离家)

安装完毕会提示重启,这里先不进行重启,等配置完成再重启

Home Assistant如何准确的判断某人在家(离家)

按照集成的文档,追踪的手机必须要使用静态IP,也就是说每次手机连上WIFI,手机的IP地址是不变的。 每种路由器的配置方法是不同的,下面以openwrt为例,找到【网络】下的【DHCP/DNS】

Home Assistant如何准确的判断某人在家(离家)

【静态地址分配】下添加一个新的记录。先去手机查看连接WIFI的IP地址,iPhone点击【设置】->【无线局域网】中的WIFI,就可以看到MAC地址和IP地址了。再回到刚刚添加的新纪录,根据IP选择好设备,并设置一个主机名,把IPv4地址设置为一个特定的IP,把租期改为永久,这样就把手机的MAC地址和IP绑定起来了。后面当你手机连接路由器时,永远都是这个IP,也就是静态IP了

Home Assistant如何准确的判断某人在家(离家)

如果家里的智能设备比较多,设备的租期到了,路由器又回重新给设备分配不同的IP,不方便管理设备。我们可以在DHCP服务器选项中,把起始分配地址改为100,这样后面有新设备连接到WIFI的时候,就会从192.168.1.100开始分配(如果你家的路由器是192.168.1.1)

Home Assistant如何准确的判断某人在家(离家)

回到群晖的【File Station】,找到Home Assistant的configuration.yaml文件。如果你的Home Assistant不是使用Docker安装,直接找到configuration.yaml文件即可

Home Assistant如何准确的判断某人在家(离家)

修改配置文件,添加下面几行。hosts下面的ning可以随便改,192.168.2.14更改为刚刚在路由器上设置的静态IP地址,yaml文件要特别注意缩进,: 后面是有一个空格的,修改完毕后保存

device_tracker:

- platform: iphonedetect

consider_home: 30

scan_interval: 3

new_device_defaults:

track_new_devices: true

hosts:

ning: 192.168.2.14

Home Assistant如何准确的判断某人在家(离家)

回到Home Assistant中,点击【开发者工具】->【yaml配置】,点击下面的【检查配置】,出现如图所示的绿字,则表示上面修改的配置文件格式是正确的

Home Assistant如何准确的判断某人在家(离家)

重新启动Home Assistant。再进到【开发者工具】->【状态】中,全局搜索device_tracker找到device_tracker.ning,后面的ning就是前面配置文件中hosts下设置的名称

Home Assistant如何准确的判断某人在家(离家)

当手机断开WIFI的时候,状态就会变为no_home。这样只有回家时会才会自动连接WIFI,离开家时WIFI就会断开

Home Assistant如何准确的判断某人在家(离家)

注意

  • 如果重启Home Assistant还没有找到你的设备,那么需要把手机WIFI断开再重新连接

  • 安卓设备也可以使用同样的方法进行绑定。需要注意是,有的手机系统会在连接WIFI时,会随机生成MAC地址,这样就做不到静态IP绑定了,需要把随机MAC关闭

补充

来说说状态如何作为触发条件。在【自动化与场景】中添加新的自动化,选择【状态】为触发条件

Home Assistant如何准确的判断某人在家(离家)

实体选择刚刚的device_tracker.ning

Home Assistant如何准确的判断某人在家(离家)

在下拉选项中选择从在家变为离家。简单来说就是你的手机从家里连着WIFI,一直到出门WIFI断开的瞬间(集成判WIFI断开是有延时的,这里为了理解说成断开的瞬间)作为触发条件

Home Assistant如何准确的判断某人在家(离家)

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
12评论

  • 精彩
  • 最新
  • 米家现在通过6500pro路由器也可以实现检测特定设备WiFi上线然后联动了

    校验提示文案

    提交
    米家原来还真没办法监听具体到单人

    校验提示文案

    提交
    对的,但是现在如果不用特定的路由器还是没办法具体到人,老哥分享的很有用

    校验提示文案

    提交
    收起所有回复
  • 不算什么新方案了,早几年前就有了,有用wifi的也有用蓝牙的,用树莓派的蓝牙检测最好用,还能做成几个树莓派分布式

    校验提示文案

    提交
    是的,很早就有了,使用门槛低,好用就行

    校验提示文案

    提交
    收起所有回复
  • 感谢分享!

    校验提示文案

    提交
  • 智慧生活——创建场景——条件:连接到指定wifi——结果:开灯。 同样创建一条关灯的,就搞定了,很稳。也可设置时间,或本文说的地理位置,要精确到人就要人体传感器哦

    办公室有个电热水器的天猫精灵的app,就没这个功能,不安逸,

    校验提示文案

    提交
    华为的不稳定,在用。有时手动情景点击了都要延时好久才执行。

    校验提示文案

    提交
    收起所有回复
  • 能根据MAC地址判断就好了,IP地址还要手动设置静态

    校验提示文案

    提交
    不是有arp追踪吗

    校验提示文案

    提交
    收起所有回复
  • 这个状态是靠app判断吗?

    校验提示文案

    提交
  • 老哥问一下自动化的设置,多个人怎么设置呢?成员1的状态从在家变为离家,且如果成员2不在家->触发,那不是还得设置一个成员2从在家变为离家,且如果成员1不在家。。多个成员不就是地狱了

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
117
扫一下,分享更方便,购买更轻松