从编程角度看小米智能家居生态的设置优化

使用小米智能家居设备从Zigbee网关到相关传感器,再到每个房间安装小爱音箱,长期磨合总算对小米智能家居生态有了一奈奈的经验。其核心内容还是围绕小米智能家居的传感器特性、场景、小爱训练来展开。笔者作为中年程序员,将以编程的视角将智能家居设置遇到的问题和经验,写出来与大家分享。

1、条件

场景中最基础的设置,可以根据需要以类似编程中“If”和逻辑运算符的AND或OR来增加触发条件。但支持用于条件判断的设备仅限传感器,开关、插座,大部分米家生态的设备均不在其列。比如你想设置一条场景,某个小米智能插座打开的情况下,AND 打开落地窗超过1分钟就关闭智能插座,这里智能插座的状态就不支持用条件来判断。而传感器类设备在条件中使用时,”触发”和”状态”是作为同一种逻辑来使用。比如门窗传感器被“打开”时,条件作为”触发”,当门窗已经被“打开”后,条件就变身为“状态”。
IOS 7.7.200及以上版本米家APP,还把传感器的”触发”和”状态”做了区别,以实现更多条件的场景应用。

如果我需要实现打开厨房窗户(小米Zigbee门窗传感器)就打开油烟机插座(小米智能Zigbee插座),并根据PM2.5污染物高于80 ug/m³打开空气净化器(小米净化器 2S),就需要用到两条场景来实现:

一、厨房窗户打开 AND  PM2.5>80 ug/m³ = 打开油烟机插座 + 打开空气净化器

二、厨房窗户打开 AND  PM2.5<80 ug/m³ = 打开油烟机插座

同时需要注意的是,这里的“PM2.5”用到了小米服务器的天气数据,如果小米服务器瘫痪以上智能都会无法运行。而如果只使用最基础的Zigbee传感器触发,以及被触发设备都是Zigbee组合,则Zigbee网关会在本地继续工作。

2、输出

在使用场景或小爱训练的时候,大部分情况笔者都建议至少加入一条“Print”,不管是小爱音箱的一句“都打开啦”还是APP手机通知,有助于让使用者了解该指令是否被正确识别和执行。不过有时候小爱音箱自身的响应回复也会夹杂其中,有点烦人~

3、重定向

因为智能音箱的识别率不可能达到100%,为达到更好的使用体验,通过小爱音箱APP的对话记录,把经常使用又已多次识别错误的文本指令做重定向“cout”处理。比如晾衣架的上升下降,通过在小爱训练中把小爱音箱识别错误的词汇加入其中,以提升操作正确率。

另一种情况是用来处理某些智能家居设备被跳过执行的容错,如果你发现已经在小爱训练(或场景调用)中某个设备开启或者关闭失败而且多次发生,可以尝试在训练中多增加一条指令来确保执行。这个问题其实是网络延迟和服务器响应等多种因素造成的,但我们不得不自己解决。

4、函数

任何需要操控多设备联动的操作笔者都建议设置为一个场景,这样不管是需要传感器触发自动化还是小爱训练中调用,都能保证一致的执行效果,相当于把场景当函数”functions”来多处调用。
以下场景用于启动扫地机器人,小爱音箱首先播放扫地机器人开始清扫,然后灯带亮起两秒后熄灭来视觉提醒。

这样在小爱训练中设置多个冗余词再调用该函数(场景),就能实现更好使用体验。

4、容错

由于某些设备的位置不佳导致信号延迟或跳过,如观察到已经多次发生,那么建议在小爱训练或者场景中间隔一段时间,再二次调用。
比如笔者的油烟机Zigbee插座就由于减少厨房返烟味的需要,需要设置场景每天定时在中午和晚上两个时段开启,并在工作1分钟后关闭。但至少发生了三次以上Zigbee插座没有被关闭,通过日志发现指令执行超时。

所以嘛~ 干脆一个定时开,带上两个间隔1分钟的定时关闭指令,终于再也没有发生异常。

5、异常

某些传感器因为特定原因没有被触发事件,这时就出现了意料之外的异常,因此我们需要抛出”try”来单独处理。
比如正常来说Zigbee网关应该在天黑后触发亮度较暗事件,从而开关某些夜间需要开启的智能场景,但某些时候就没触发。再比如大门打开后门磁传感器应该关闭,干扰或者设备没电了,设备却始终处于打开状态。这时候就需要在场景中通过定时或者相关传感器条件来纠错这些异常,前面的Zigbee网关没有“触发”亮度较暗事件,我们就需要定时一个最迟启动夜间智能场景的保底策略。

当然了,以上大部分设置都需要在米家服务器正常的情况下执行,如果米家崩溃~~ 那是谁也没辙。以上算是笔者在使用智能场景和小爱训练中的一点经验之谈。

发表您的评论

您的电子邮箱地址不会被公开。

*

code