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