小米智能家居的超重磅更新!米家自动化极客版变量和函数功能保姆级教程来了!
本文约5000字,为纯技术教程,读起来可能会有些枯燥,但对米家智能家居用户有重大意义,强烈建议先收藏,后阅读,或在以后需要时随时查看。
不知不觉中,小米中枢网关已经上市两年,而米家自动化极客版也已经度过了周岁生日。它们的推出无疑是为智能家居带来了革命性的进步,不仅让众多米家用户欣喜若狂,也彻底奠定了米家在智能家居行业的龙头地位。
时隔一年之后,小米又为自动化极客版带来了一个超级重磅更新,也就是众多玩家和用户期待已久的“变量”功能,目前已经通过OTA推送固件至所有中枢网关和小米BE6500Pro路由器。
今天袋鼠叔叔就来带大家一起看看,到底什么是“变量”,以及它如何帮助我们更轻松的实现复杂智能家居自动化场景。
首先一起来了解一下,什么是“变量”。
可能很多小伙伴听到“变量”这个词时,会感到既熟悉又陌生。熟悉是因为在初中一路到大学数学中,总是少不了它的身影。而陌生则是因为在踏上工作岗位之后,除了码农之外,就很少会接触到它了,可能早已忘得一干二净。
所以,让我们用最快的速度,再重新认识一下“变量”。不过想了解变量,就要和函数一起来说。
函数是数学中,一种描述映射关系的概念,通常用f(x)来表示。其中f代表函数名称,x表示输入值(也就是变量),f(x)表示输出值。我们可以将其理解为一种对应法则。当法则一定时,我们输入不同的变量x,就会获得不同的结果f(x)。
举两个最最简单的栗子:
有一个函数,
𝑓(𝑥)=𝑥+10
当我们设定x的值为1时,这个函数的结果f(x)就是11(1+10=11)。如果设定x为99,则函数结果为100。
有一个函数,
𝑓(𝑥)=𝑥
x是几,函数的结果f(x)就是几。
我们让x等于几,其实就是为变量x赋值,是不是超级简单?
当然,函数也可以特别复杂。不过我们在米家自动化极客版中将用到的函数和变量,都是最最简单的,每个人都能轻松理解,完全无需担心。
米家自动化极客版变量功能基础
在开始之前,请确保中枢网关或BE6500Pro的固件版本已升级至最新。
创建变量界面
正常通过浏览器进入自动化极客版页面后,可以看到和之前版本相比,最显著的变化就是左侧增加了一个“(x)全局变量列表”。点击后,右侧就出现了创建变量的图标(两个按键的功能是一样的)
点击创建变量按钮后,就可以创建一个全局变量,类型可以是文本,也可以是数字(最高支持17位值)。需要特别注意,这里创建的变量为全局变量,也就是可以被所有自动化条目任意调用。
而如果想要创建仅适用于某条单一自动化的变量时,就需要进入自动化编辑页面,点击顶端的(x)—创建变量。这里可以看到,标题已经变成了“创建本规则变量”,意思是说这个变量仅能在本条自动化中使用,不能跨场景调用。
全局变量 vs 本规则变量
那什么时候该使用全局变量,什么时候又该使用本规则变量呢?其实很简单:
如果一个变量,只需要在一条自动化场景中使用,就建议大家将其设置为本规则变量,其他场景无法调用此变量,也就不会引起混乱。
如果一个变量,需要用于两个或以上的自动化场景,就可以将其设置为全局变量,方便其他场景共同调用。
举个栗子:
比如我在窗户外面放了一个温湿度计,需要获取当前的室外温度,并将其赋值给(x)“室外温度”,我们就可以将此变量设置为全局变量,方便在不同的自动化场景中,计算室内温度和室外温度的温差。
变量类型 (文本/数值)
另外,大家可能已经注意到了,在创建变量的时候,还需要选择变量类型为“数值”或“文本”。
这个很好理解。数值变量就是此变量的值为数字。变量值在所有情况下,都是不带单位的。我们为其赋值时,原值的任何单位(%/℃等),都会被忽略。数字类型的变量可以使用预设函数或+-x÷符号进行运算,我后面会详细详解。
而文本变量其实就是一串字符串,可以进行拼接操作,最实用的功能就是让小爱音箱按照我们所设定的内容进行播报。
养成好习惯
因此,我建议大家在创建变量时,养成好习惯,在名称前加入特定标识来区分全局/本规则/数字/文本变量。对于一名程序员来说,这也是基本的规范操作。
比如在一般编程语言中,全局变量是global,本规则变量是local,整数是integer,小数是double,文本是string等等。
当我们创建变量“户外温度”时,可以将其命名为“GD户外温度”,代表此变量类型为全局变量小数,使用时就会非常方便。当然,你也可以用自己能理解的字母来代表。
变量初始值
在创建变量时,还有一个需要特别注意的点就是“初始值”。数值变量必须拥有一个初始值,而文本变量的初始值可以为空。
初始值的意思是,当中枢网关重启,或重新启用某条自动化时,该变量会被赋予的值。所以初始值需要按需填写。
而文本变量初始值则可设置为一段固定文本,这样即便是停电后再来电或系统故障导致自动化重启,也不会对其有影响。
变量功能卡片介绍
创建完变量后,要如何使用呢?将左侧的功能卡片滚到最下方,就可以看到变量相关的功能,一共有6个:
我接下来一个一个给大家解释具体功能。
1、设备触发赋值
就是当设备状态发生改变时,就将值赋值给变量。比如我这里,当机柜温湿度计发生变化时,就赋值给变量。设置完成后,机柜温湿度计显示为26℃,那“机柜温度”这个变量的值就为26。
2、查询设备并赋值
就是字面上理解的那样,查询某个设备的状态,并赋值给某个变量。和上面的“设备触发赋值”不同的是,查询设备赋值卡片前面必须有一个触发条件。
还以上面的机柜温湿度计为例,如果使用查询设备并赋值卡片,就必须在前面接一个触发,比如当按动无线开关时:
3、变量值更新
变量值更新卡片简单来说,就是一个触发条件。既可以作为事件,也可以作为状态。
4、查询变量值
这张卡片和之前最常用的设备—查询当前状态卡片几乎是一模一样的,只不过是把查询目标由设备状态变成了变量值。
5、数值运算
前面我们提到,数值类型的变量是可以用来计算的,这就是数值运算卡片的功能。使用这张卡片,我们既可以使用计算式(函数)对某一特定变量进行赋值,也可以通过计算多个变量之间的关系,得到一个新的变量。
系统已经非常贴心的给我们内置了26种常用函数,通过点击最右侧的f(x)就可以展开:
这些预设函数其实日常常用的只有一小部分,为了大家一目了然他们的用法,我大致整理一下:
关于函数和变量计算的实用案例,我留在后面的实战篇章中讲解。
6、文本拼接
上面讲了,如果一个变量类型为数值,我们就可以对其进行函数运算。那当一个变量类型为文本的时候,我们就可以使用“文本拼接”卡片对其进行拼接。
请注意,文本拼接不仅包含文本变量+文本变量的拼接,也同样可以进行文本变量+数值变量的拼接,具体用法同样在实战篇中讲解。
7、在设备—执行操作卡片中直接执行变量数值
除了以上6张新增卡片外,设备—执行操作卡片这次也新增了一个隐藏功能——特定设备的特定功能可以直接执行数值变量。
比如灯具的亮度和色温,在最右侧多了一个(x)图标,点击后就可以选择变量填入,然后直接让亮度/色温执行该变量数值。
变量功能实战指南
说完变量和函数的具体概念及用法,相信大家都很好奇,如何将他们运用在日常的智能场景中呢?下面就以几个简单的案例来说明一下。
用法1—设备状态寄存
如果你是一个相对资深的米家用户,对寄存器这个概念应该不会陌生。在某个设备本身不能作为状态,或者是较为复杂的自动化场景下,寄存器的使用是非常普遍的。
之前没有变量时,想寄存状态,需要找到某个设备上用不到的功能,比如空白的智能开关按键,或者中枢网关指示灯等。
不过这种方式存在很大的问题,比如设备本身的功能可能会影响到寄存器状态,多数寄存器也仅有两个状态,而且可用的寄存器数量也非常有限。
在有了变量功能以后,就可以彻底抛弃这种方式,转而使用变量作设备状态寄存。
方法也非常简单,直接创建一个文字变量,并且给其赋予特定的文字值即可。还是以上面的离家模式和回家模式为例:
首先创建一个全局文本变量,我取名为在/离家状态,初始值留空。
然后在在家模式和离家模式的最后,只要添加一张“文本拼接”卡片,让在家时变量的文本=在家模式,离家时变量的文本=离家模式即可:
之后如果需要在其他自动化场景中调用当下的在/离家状态时,只要通过“查询变量值”卡片查询变量文本即可:
这样比以前到处找设备指示灯去做状态寄存器,不仅方便百倍,又能确保稳定性。
当然,除了文本变量外,数值变量同样可以用来做状态寄存器,而且数值变量本身支持计算,用法可以更加灵活多变。
还以在家/离家判定为例,但是这次我们升级一下,不1仅要判定家里是否有人,还要知道具体有多少人。为了方便演示,我这里用一个无线开关做触发。当然最完美的触发设备是使用BE6500Pro或Home WiFi这类可以以WiFi连接设备数来判定。
我们创建一个名为目前在家人数的数值变量,初始值设定为0(无人在家)。
然后开始做场景。单击开关时,增加一个人;双击开关时,减少一个人。逻辑非常简单,就是一开始在讲函数时提到的f(x)=x+1或f(x)=x-1,x=目前在家人数。
实际测试一下:
总结:文本变量和数值变量都可以非常轻松的用来作为状态寄存器。前者的优点是文字描述更直观,后者的优点则是可以直接进行计算,大家可以灵活按需选择。
用法2—使用函数和四则运算对变量进行计算
上面已经说过,我们可以使用函数和+-×÷对一个或多个变量进行计算,现在来结合实际案例,给大家讲一下具体做法。
案例——计算弱电机柜和客厅之间的温度差,在温差≥5℃时,自动开启机柜风扇降温,在温差小于3℃时关闭风扇。
在没有变量之前,我们是完全没办法做出以上这条自动化场景的,因为系统不支持计算。而现在,我们可以利用变量计算来轻松达成。
首先新建一条名为“机柜风扇自动控制”的自动化场景,然后在其中创建两个本规则变量,分别命名为“LD机柜-客厅温差”和“LD机柜温度”。
另外,由于客厅温度这个变量可能会被用于其他自动化场景,所以干脆将其创建为全局变量,命名为“GD客厅温度”。
接下来,使用“设备触发赋值”卡片对客厅温度和机柜温度这两个变量赋值,让这两个变量的值实时等于对应温度计的温度:
然后用机柜温度减去客厅温度,就等于温度差。拉一张“数值运算”卡片进来,左边填入变量“LD机柜-客厅温差”,右边填入“LD机柜温度-GD客厅温度”。注意在填入右边的两个变量时,可以通过点击右侧的(x),或者直接输入$符号也行。
接下来,用“任意事件发生”卡片,把两个设备触发赋值和数值运算卡片连接起来。这样一来,当机柜或客厅任何一个温度计读数发生变化时,就可以立即更新计算出温度差。
现在点击变量编辑页面的刷新按钮来测试一下,可以看到温差已经算出来了:
最后一步就极其简单了,只要使用“变量值更新”卡片,当每次变量值发生更新时,系统就会自动判断——温差≥5时打开风扇,<3时关闭风扇即可。
这样,一条相当完美的弱电机柜风扇自动控制场景就完成了,既可以时刻保持路由器,NAS等设备处于舒适环境,又可以让风扇间歇运转,省电静音。
用法3—文本变量及数值变量拼接
变量拼接主要用于自动化场景的结果输出。
如果你稍懂编程,那么对变量拼接一定不会陌生。在米家自动化极客版中,通过“文本拼接”将多个变量拼接在一起,就能实现丰富的内容输出,而在之前,这是很难做到的。还是通过一个常用案例来讲。
案例——每天早上起床后让小爱音箱进行以下早安播报:
主人早上好!今天是202X年X月X日星期X,当前北京时间X点X分,室内温度X摄氏度。
观察一下这句话,里面包含有7个变量,分别是今年年份,本月月份,今日日期,今日星期,当前时钟,当前分钟,主卧温度。这些变量都是相对固定的,基本不会变,所以我们可以创建为全局变量,方便其他自动化调用。
现在为这些变量赋值。除了主卧温度这个变量使用“设备触发赋值”卡片,其他变量都使用数值运算卡片,让他们等同于对应的日期函数,然后连接起来。这样一来,每次温湿度计更新时,其他变量就会自动赋值,非常方便。
然后再创建一个“LS早安播报”的文本变量,用于把上面这些变量和文字给拼接起来。
拖一张文本拼接卡片,左侧填入早安播报变量
在右侧的内容中,开始拼接文本。输入:
最后,为这条早安播报文本变量添加一个触发条件即可。比如我每天是用小爱音箱作为闹钟,床头放一个无线开关,闹钟响后长按无线开关,关闭闹钟并延迟10秒开始播报。重点是选择小爱音箱作为执行设备时,直接选择播放文本,然后填入早安播报变量即可:
当然,为了让大家能以最快的速度明白文本变量拼接的原理和做法,上面的这个案例我设置的比较简单。如果你有更复杂的需求,只要拼接更多的变量和文字即可,比如播报每日天气,日程,行程信息等,都可以轻松做到。
总结:
在加入了变量和函数功能之后,米家自动化极客版几乎可以算是一套完善的智能家居“编程”语言,让智能家居的智能化水平达到了一个全新的高度。
最重要的是,整套系统使用起来逻辑清晰,而且特别容易上手,即便完全没有编程基础的小白,通过这一篇教程的学习,自己再上手操作几次,就完全可以掌握。快来和袋鼠叔叔一起,打开一扇通往智能家居新世界的全新大门吧。
我是袋鼠叔叔,一个专业智能家居博主。关注我,了解更多关于智能家居/家电/数码的那些事儿。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
大表哥的把拔
就像5G看着很有用 除了在外面打游戏前突然一个大更新 能发挥5G的作用 实在看不到用途
校验提示文案
GOUKI9999
校验提示文案
守护de恺
校验提示文案
大雪飞
校验提示文案
谢谢谢Jerry
校验提示文案
layue
校验提示文案
贾迦
校验提示文案
jdk8
校验提示文案
好狗不便宜
校验提示文案
释之亦然
校验提示文案
捞猴子地月亮
校验提示文案
escn
校验提示文案
值友9195383802
校验提示文案
小铎子
校验提示文案
值友9530381801
校验提示文案
亻直友弓长大妈股东
校验提示文案
龙猪leo
校验提示文案
手机放好
校验提示文案
刘米可
校验提示文案
冷酷无情马宝国
校验提示文案
傑森Woo
校验提示文案
这个昵称是我
校验提示文案
值友8999918972
校验提示文案
dldwei
校验提示文案
秋枫寒阳
校验提示文案
冷酷无情马宝国
校验提示文案
刘米可
校验提示文案
手机放好
校验提示文案
龙猪leo
校验提示文案
灬颜轩
校验提示文案
孑乚先生
校验提示文案
dingdashao
校验提示文案
占小美
校验提示文案
亻直友弓长大妈股东
校验提示文案
智能生活小能手
校验提示文案
值友8994557788
校验提示文案
火拼到底
校验提示文案
值友9530381801
校验提示文案
小铎子
校验提示文案
小五头耶
校验提示文案