米家:执行条件
前言
想想还是得写这个。 夏天了,促销买了个米家空调伴侣2,实际用了一下,在温控方面的实现是非常复杂的,所以单就执行条件的判断逻辑写一篇教程。
图片是为了凑数,主要是文字教程。
只执行一次。
万恶之源就是这个。称之为“只执行一次。”
米家的智能是没有这个设置的,但他默认只执行一次,这样就不会出错。尤其是空调伴侣这种红外线控制。如果不只执行一次,那在满足条件的情况下它会不断的开机,云端每检测一次就会开机一次,你的空调就会滴滴滴响个不停。直到条件不再满足。
那它是如何做到的?是从执行条件的判断上,下手的。
举个例子,
如果“大于25度”就执行“开空调”。
这里的“大于25度”,它判断的是绝对值,不是相对值。
绝对值只有一瞬间,从25度变成25.1度的那一刻,因为只有一瞬间会满足条件,所以就默认“只执行一次”了。
那这里就出现一个问题。
如果是26度变成26.1度,在米家看来,它仅满足“大于26度”,而不满足任何其他条件,不满足“大于25度”。
虽然他确实大于25度,在我们的概念里是相对值,相对现在的温度26.1度,是大于25度的。但他判断的是绝对值,大于是个动词,他识别的是这个动词产生时的动态瞬间,是唯一的,绝对的。
因为这个机制,以下的智能是无法实现的。
如果同时满足“大于25度,小于30度”就执行“空调开到22度”
因为这里两个动词互相矛盾了,要求温度同时升高和降低,是违反自然规律的,在现实世界中是不可能实现的。
这一条智能直接就失效了,它就相当于不存在。因为执行条件永远无法满足。
解决方法
米家里还有一个机制。可能就是为了解决这个问题而存在的,可以把判断逻辑的绝对值改成相对值,方法是,在设置时,由用户给予一个“只执行一次”的属性。只要有这个属性的存在,它判断时自动会变成相对值。
只要加上这个属性,上面那条温控智能,就可以执行了。
这个属性我找了一圈,唯一可以放在米家执行条件里,并且可控的动态瞬间只有“设备的开关。”
比如说空气净化器开机或者关机,注意这里也是绝对值,并不是“它是开机的。”而是“它在开机。”
写法是:
如果同时满足“空气净化器开机,温度大于25度”就执行“开空调”
这个写法和:
如果“温度大于25度”就执行“开空调”
的区别在于,下面这条需要等待出现“大于25度”这个动态,才能识别到开空调。
如果这条智能是被手动执行的,而在执行之前室温已经大于25度了,那他就等不到25.1度了,已经错过了。这就失去了判断温度的能力。而之后的温度变化,他是认识不到“大于25度”的,这条智能不会被执行了,至少不会立刻执行,直到温度降回25度,并且又大于等于25.1度。
而第1条智能它会立刻判断当下的温度,无论是多少度,比如30度,因为绑上了一个可控的瞬态,赋予了“只执行一次”的属性。因此判断条件变成了相对值。
所以即便是30度,它也会识别到,这是大于25度的。这就真正和我们的常识相符了,他就起作用了。
如此一来,你就可以实现这样的场景。
你回家之前对小爱说“我要回来了。”
然后到你回到家,房间的温度、湿度、PM2.5,以及你要用的设备,全部都就绪了。
这句话包含了无数条智能的判断和执行。
比如开电脑,开空调,开净化器,开各种东西。
这些东西是否打开是有判断条件的,是有智能设置的。
而这些智能当你不在家的时候是关闭的,因为没有需要。不然它会24小时保持房间状态,是费电的。
在发现“解决方法”之前只能无条件打开这些设备,然后让再做判断。
现在使用相对值以后,只要打开智能,就可以正常判断,然后才执行。
你不需要无条件的打开空调,这个是否需要开空调的判断,会有小爱帮你完成。不要觉得这仅仅是一个判断,自己来做也可以,当米家设备变得很多的时候,这可能是5个10个甚至更多的判断。
而你要做的仅仅是把它绑在一句话上。
当然,如果要实现上面那个调温温控的智能,又会变得很复杂。因为每一次自动调温,都得开关一个设备,来赋予属性。而它本质是通过第三方温度计,来实现空调调温,房间恒温。设定值需要大量的摸索,而且恒温水平越高越是频繁。简简单单一个通过米家来恒温房间的设置就无比的复杂。
结语
抛砖引玉就到这儿了,拜拜。




校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案