米家智能家居进阶之路——小米路由器作为智能场景触发设备的WiFi围栏用法全解析
又是一篇长教程,约6000字,强烈建议打算入手或正在使用米家智能家居的小伙伴们收藏。
对智能家居来说,手机控制和语音控制都是小儿科一样的基操,进阶玩家们追求的终极目标是——无感。
随着人在传感器的普及,卫生间/阳台/厨房等小空间的无感自动化已非常简单,但最关键的人员在家/离家判定,仍然是个棘手的问题。
因此很多人想到,用手机WiFi作为信标是个好办法。当个人手机连接家中路由器时,就说明在家,反之则为离家。

实际上从2023Q4开始发布的以下5款小米路由器,以及未来发布的所有新款小路由器,都将支持这一特性。
小米全屋路由(子母套装)
小米BE6500Pro
小米BE5000
小米BE3600Pro 2.5G版
小米BE3600Pro 千兆版
*2023Q4以前发布的所有小米路由器均不支持此功能,包括小米万兆路由器和BE7000在内
所以对米家用户来说,小米BE6500Pro真的是非常完善的主路由,既内置了中枢网关,又可以作为触发设备,性能又好,外观又漂亮,4个2.5G网口,关键是价格还便宜,简直无可挑剔。
子路由方面,BE5000和BE3600 2.5G版都是非常棒的选择,前者多一条空间流,多设备并行高速传输时会更好,而后者采用高通方案,和同样为高通方案的BE6500配合会更好,价格也更便宜,可以按需选择。
而BE3600千兆版没有2.5G网口,价格也只比2.5G版便宜了30元,不建议入手。
虽然有一些智能家居博主也简单介绍过此功能,但目前网上还没有任何深度使用教程,很多用户因此而闹出大离谱事件,比如:
明明所有人都出门了,却没有自动关灯
凌晨三点睡的正香,突然灯全都自己亮了
冬天晚上睡到半夜,空调自动关闭,早上起来冻的直接医院报道
这些问题,一半是因为用户不知道如何设置,另外一半原因则必须归结于小米官方团队自己挖的坑。
我花了将近三个月时间,动用了近10部手机,进行了数百次测试,来为大家把这个坑填上。只要你想使用这个功能,就请一定要按照这篇教程进行设置,才能最大程度上确保稳定。
请注意,想稳定使用这个功能,必须配合米家自动化极客版的变量使用。如果不会,请先学习上一篇教程:
另外说明一下,由于不同用户对自动化场景的需求和生活习惯千变万化,本教程只是以普遍情况为例进行测试和讲解。若有特殊需求,请通过本教程搞懂底层逻辑后,自行深入研究,欢迎共同探讨。
接下来正式开始。
路由器端的设置要求:
要求1:这5款路由器本身必须作为主路由,不能处于子路由或AP模式下
当处于主路由状态时,即便下面接的子路由不支持自动化场景,也没关系。
比如我这里就是用BE6500Pro做主路由,三台红米AX3000做子路由。接入子路由的设备同样可以实时被主路由识别,显示为“中继路由接入”,和直接接入主路由的终端一样可以用作场景触发。
这点对多路由器mesh用户非常友好。如果像我一样,以前有其他旧型号的子路由,可以继续使用,只更换主路由即可。

要求2:必须关闭路由器多频合一和MLO
如果路由器开启多频合一及WIFI7的MLO,手机有可能自动在2.4G和5G频段之间横跳,造成频繁上线/离线,导致状态判断混乱。

手机端必须的设置
上面讲了路由器端的设置,接下来手机端也必须按照以下步骤进行设置,否则同样会造成判断混乱。
设置要点1:使用手机的真实物理MAC地址
本质上,路由器是靠识别手机网卡的MAC地址来确定手机身份的。手机的物理网卡具有唯一性。
但考虑到经常连接公共WiFi,所有手机在默认情况下都使用“随机MAC地址”,一旦隔段时间后MAC地址自动更新,路由器就会将手机识别为一部新设备。
所以必须关闭默认的“随机MAC”功能,使用手机本身的真实物理MAC地址连接路由器。根据手机品牌型号不同,设置方式略有差异,但基本上都是在当下连接的SSID属性中设置,以小米和华为举例:
SSID就是指无线网络名称

大家完全无需担心使用真实MAC地址的安全性,因为此设置仅对当前SSID生效。在连接其他WiFi时,默认仍然使用随机MAC。
设置要点2:关闭智能网络加速
现在很多手机都有网络智能加速功能,就是当WiFi信号不好的时候,系统自动切换为移动数据,这种情况也会导致WiFi无故断连,所以请关闭此功能。

设置要点3:禁止手机休眠时断开WiFi网络
这个估计是绝大多数人都不知道的一点,其实手机也会自动休眠,特别是在半夜。休眠后,手机会自动断开WiFi连接,所以这个功能也必须禁止。
手机休眠一般都是在电池或省电管理中设置,藏的比较深,自己找一下。

设置要点4: 手机只能自动连接一个SSID
路由器关闭多频合一后,一般都会有两个甚至三个SSID,一定注意只能将其中的一个(一般是5.2G频段)在手机上设置为自动连接,将其他SSID的自动连接全部取消,否则手机可能会在不同SSID之前横跳,导致判定混乱。

米家App&自动化极客版实操
米家App中的操作方法
在手机版米家App中,使用路由器作为自动化触发的设置非常简单,和其他触发设备完全一样。
可以看到,一共支持五种触发方式(BE6500Pro由于内置中枢网关,多了一个虚拟事件),绝大多数情况下都是使用前两种,即:指定设备接入/断开网络。
而后面三种,指定设备X分钟无活动相对来说不太实用,因为终端设备的网络传输情况很复杂,不以用户意志为准。
在点击某条触发事件后,会自动弹出当前路由器下接入的所有设备列表。

要重点指出,这里显示的设备名称比较混乱,有的是名称,有的是MAC地址,可能无法一眼找出来你要的设备,所以咱们需要到手机的WiFi详细信息中,记下MAC地址,然后回到米家App列表中找到对应的设备。

极客版中的操作方法
极客版中,还是直接使用“事件发生或状态更新”卡片,然后可以看到这里的触发事件比米家App中多出了一些,如下载/上传速度,连接设备数量等。不过“接入设备列表”这个项目目前是不可用的。
在选择设备接入/设备断开后,这里不会像米家App一样直接提供所有当前连接终端供选择,而是需要手动输入设备的MAC地址,每组数字/字母之间必须使用半角分号,有的手机默认会用短横线作为连接符,自己要手动改一下,这个细节请注意。

除了事件发生卡片外,“查询当前状态”,变量中的“设备触发赋值”和“查询设备并赋值”中,都可以选择路由器。但非常遗憾的是,目前这三张卡片功能都不正常。
所以这里我也是真的,觉得小米很多时候缺乏完美的工匠精神。你做出来的功能,又不能用,就放在这里也不做说明,真的是无力吐槽。希望后期能赶紧通过软件更新把功能修复吧。

利用中枢网关虚拟事件打通米家App和极客版
极客版比App支持的功能要丰富的多,因此绝大多数用户都把场景写在极客版中。
但我这里强烈建议大家把触发的部分写在米家App中,方法也很简单。在米家App中创建自动化场景时,选择中枢网关作为执行设备,并产生一条虚拟事件:

然后在极客版中,使用中枢网关的虚拟事件发生作为触发动作:

这样做的好处是,每次设备连接/断开路由器时,都能非常方便监控,同时也更便于调试。

反之,如果直接在极客版中使用路由器填写MAC地址做触发的方式,就没办法在手机米家App中收到推送通知了,无法实时查看设备上线/离线情况。
自动化场景抄作业
利用极客版变量功能实时查询手机在线状态&在家人数
以我家为例,目前有三人居住,三部手机分别是小米14/华为mate40和真我gt。现在利用路由器触发和极客版的变量功能,来实时查询人员在家状态。
首先在米家App中,为每部手机分别创建上线/离线场景,并选择中枢网关虚拟事件作为执行设备:
(这一步在上面其实已经讲过了,很简单)

进入极客版,为每部手机创建一个变量,类型为数字,初始值为0,同时再创建一个全家手机在线状态变量,类型同样为数字,初始值0。


接下来,为每部手机都创建上线/离线两条自动化。使用中枢网关虚拟事件作为触发,后面接一张变量的“数值运算”卡片。在数值运算卡片中,变量名称就填入前面创建的xx手机在线状态变量。数值中,上线填入1,离线填入0。

我有三部手机,所以一共是创建三组(6条)这样的自动化条目:

当对应的手机上线后,变量值就变成1,离线后,变量值就变成0,这个很好理解。
然后添加一张“当任一事件发生”卡片,并创建6个事件。然后在后面再接一张“数值运算”卡片,数值运算卡片左侧的变量名填写全家手机在线状态,右侧的计算式中,填写单个手机变量名相加。
最后把6条手机在线状态变量全部连接到“当任一事件发生”卡片上即可。

这样一来,当任意一部手机上线/离线后,系统就会自动计算“全家手机在线状态”的数值。数值为0时,代表所有手机离线(所有人都不在家),数值为1是,代表有1部手机在线,以此类推:

此功能目前存在的问题&修正方法
在首次创建自动化场景时,米家App就会弹出提示,说明这是个实验室功能,意味着可能会有一些bug和不完善的地方,官方也做出了一些补充说明。

其实只要按照我上面的步骤进行设置,就能规避大多数误触发,只有以下两种情况无法直接通过设置解决:
Bug 1:手机在mesh组网的多路由器节点中漫游时,会短暂触发离线/上线

这个bug每次断开和上线的间隔时间都比较短(<1分钟),同时并不是每次漫游都会触发,只是偶发情况,至于具体原因我也不清楚,只能请米家工程师解答了。
请注意,由于mesh节点漫游的切换速度非常快,有时候米家App日志中会先显示上线再显示离线,但实际上还是先离线后上线,对正确的顺序没有影响。
解决方案:
首先,如果你是单路由器用户,那这个问题就不会出现。
其次,对于使用多个手机联合触发的自动化场景,这个bug也没啥影响,因为几乎不可能两部(或者更多)手机在同一时间触发。
所以这个bug影响最大的就是使用单一手机离线作为触发的自动化场景。比如家里常住的只有一个人,当人在家里带着手机移动时就可能会造成误判。
对于这种情况,最简单的解决方式,就是使用智能门锁或门窗传感器作为触发,然后延迟一定时间后,再去查询代表手机在线状态的变量。如果变量值为0,则触发离家模式,如果变量值为1,则什么都不做。
千万不要直接使用手机离线作为自动化触发,这样肯定会出现误判,特别在只有一部手机的情况下。

Bug 2:为了减少网络抖动或者终端重启,官方把五分钟之内的二次上/下线动作给屏蔽了
具体情况如下:
如果最后一次手机WiFi离线距离上次离线时间不足5分钟,则最后一次离线自动被系统屏蔽(忽略)。反之,上线也是一样。
据米家官方解释,这样设计的初衷是为了能避免网络波动或手机重启带来的影响,但我觉得这个设置很不合理,反而会为日常使用带来极大困扰。

在我看来,这完全就是多此一举,实在无法理解为啥米家团队会这样设计,估计纯粹是一拍脑袋想出来的,根本就没有经过实际验证和测试。(请原谅我说这么多,真的不吐不快)
日常生活中,有几种非常常见的情况,会因为这个设定而引起误判,我自己也是经历了很多次。
案例一:
如果我正常离家(这时手机第一次离线),下楼后突然发现东西忘带了,又返回拿取(手机上线),拿好东西再次离家(5分钟内手机二次离线),那么这最后一次的离家判定就会被系统忽略,并错误的认为手机仍然在线。
案例二:
实话实说,小米这几款路由器的信号覆盖都非常猛,我家住12楼,但是在楼下都能收到WiFi信号(虽然速度已经很慢,但是能连上)。
这就导致经常出现这样的情况:当我出门进入电梯后,WiFi自动断开(因为电梯完全屏蔽信号),到达一楼走出电梯厅的时候,WiFi又自动连上了!然后逐渐走远,这时理论上WiFi应该断开,但实际上系统还是错误认为手机在线的。
其实以上两个案例的本质都是一样的——将实际已离线的情况,误判为在线

解决方案
想解决这个问题,就需要设计一个自动化场景,强制系统对5分钟内被忽略的第二次离线进行识别。理清楚顺序以后,就可以使用"事件先后发生"卡片来设置:

这条自动化的原理,就是判定开门锁——手机离线——手机上线这三个事件,如果在五分钟内连续发生,就强行把代表手机在线状态的变量写为0。有几部手机,就写几组这样的场景即可。
下面还有两个案例是正好相反,将实际应该在线的情况误判为离线:
案例3(和案例1相反):
我开车回家,打开家门后(手机第一次上线),突然发现有东西落在车里忘拿了,于是出门去车里拿东西(手机离线),拿好东西后再次回家,理论上手机应该二次上线,但如果整个过程在五分钟之内,第二次手机上线就会被忽略,导致我人已经在家里了,但系统认为手机处于离线状态。
案例4(和案例2相反):
我走路回家,手机在楼下就已经自动连上WiFi,结果进入电梯,手机WiFi又离线了,出电梯开门后,手机二次自动接入WiFi,被系统忽略。

解决方案
解决这个问题的方式更加简单。智能锁可以通过指纹(指静脉/人脸)确认外开门人员的身份。因此只需要在每次外开门后,将对应开锁人的手机在线状态变量强行写为1即可。
由于很多门锁在极客版中的触发事件功能不完善,所以还是建议大家使用虚拟事件转发来做:

到此为止,我们就可以正常使用手机的WiFi连接状态,来进行完全无感的人员在家情况判定,应用于离家和回家模式。
离家模式自动化场景
在设定离家模式时,我们直接使用"变量值更新"卡片作为触发,延迟10分钟后再开启离家模式,留给前面设计的自动矫正场景一个时间。

回家模式自动化场景
仅使用门锁外开门——自动开灯这种简单的回家模式,会遇到一个很大的问题,即——每次开门都会触发回家模式。
如果家里已经有人,比如我老婆拉着窗帘躺在客厅沙发上睡觉,结果我一回家,又自动把灯给打开了,后果简直不堪设想。
在有了路由器触发之后,就可以加入一个判定条件——当有人外开门时,同时查询其他家庭成员手机是否在线,若任意手机在线,则不触发回家模式,反之则触发。
如果需要判断的家庭成员≥2人,我们可以引入一个新的变量,也就是可能在家的人数总和,这样就可以避免归家本人的手机连接WIFI改变变量数值,而引起误判。
比如我本人是华为mate40的机主,针对我的回家,可以新建一个"小米14+真我gt"的变量。当此变量为0是,才触发回家模式,为1或者2时,什么都不做。


按照以上方式,为每个家庭成员单独编写即可。
请特别注意,这里必须使用门锁作为触发,而不是归家成员的手机接入。因为前面说过,由于路由器功率较大,有可能在楼下就会连接,引发误触。
这套自动化场景到目前为止我已经用了一个多月时间,再也没有出现过误判的情况,彻底做到了完全无感的离家/回家模式,建议你也可以试一试。
我是袋鼠叔叔,一个专业智能家居博主。关注我,了解更多关于智能家居/家电/数码的那些事儿。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

腚真痔
校验提示文案
应嘎嘎
校验提示文案
YikLiu
校验提示文案
阿天
校验提示文案
猫叔喵喵喵
校验提示文案
猫叔喵喵喵
校验提示文案
adi1625
小米也每个参数说明,生气
校验提示文案
值植值
校验提示文案
克诺比
校验提示文案
克诺比
校验提示文案
值植值
校验提示文案
adi1625
小米也每个参数说明,生气
校验提示文案
YikLiu
校验提示文案
应嘎嘎
校验提示文案
腚真痔
校验提示文案
猫叔喵喵喵
校验提示文案
猫叔喵喵喵
校验提示文案
阿天
校验提示文案