场景联动

概述

 iot领域场景联动,特别是智能家居领域有着很重要的应用价值,场景联动是已经成为iot领域的核心应用之一,设备相互连接并且相互作用,催促着物联网领域不断向前发展,参考[2];

首先了解一下基本概念,场景表示一种特定的状态,比如灯打开状态或者灯关闭状态、门磁处于打开状态、报警器处于报警状态, 动作表示一种行为,从而使设备处于一种场景中,打开灯(动作)使灯处于打开状态(场景),结果上来说动作和场景相同,在IOT业务中,动作即是场景;自动化表示从一种场景自动地转变成另外一种场景,用户也可以手动点击触发场景生成(手点的就不叫自动化了);

自动化从场景A自动地转变成场景B,那么场景A就称为条件,场景B称为动作,条件有几种来源,第一种是设备上报的数据(也是来源最大的一部分); 第二种是环境数据,比如温度、湿度、天气、PM2.5、空气质量、日落日出,用户选择气象条件时,可以选择当前城市;第三种是场景本身,场景B作为动作,同样也可以作为条件; 第四种是定时任务,定时或者周期性触发; 同样,动作也有大概几类,第一类是设备动作,打开灯或者关闭灯; 第二类是消息,发送短信,语音,push, 邮件;第三类是场景; 第四类是延时,延时多长时间触发动作;

总体结构  

 

如图普通设备通过mqtt把设备时间发送到场景系统,环境数据一般通过消息中间件发送到场景系统; 网关及子设备要分情况对待,如果网关和子设备内部触发的动作(也即zigbee场景),则不需要经过场景系统,否则需要经过场景系统处理;

场景自动化处理过程

处理过程主要有几个关键步骤,首先是条件匹配,判断执行条件是否满足条件;其次,再判断执行策略,动作只能触发一次,可连续触发,触发有限次数等;最后执行相应动作;

场景条件

条件A,B,C 会存在逻辑与、逻辑或的关系,这两种关系跟java中&& || 关系运算符功能类似; 当三个条件是逻辑与的关系时,A触发,则必须B,C都满足才会继续往下走; 当三个条件是逻辑或的关系时,任何一个条件的触发都会继续往下走; 

条件为定时任务,则需要使用中间件作为触发源头,触发条件执行;

条件表达式计算可以采用groovy表达式;

执行策略

执行策略主要用来控制动作的执行次数,根据业务场景来做不同类型的限制,针对三种场景,对比分析每种策略的适用范围:

策略名称 适用范围
单次执行 避免冗余触发
有限次执行 针对家庭有定制需求的用户,或者收费项目
重复执行 免费消息,很重要的报警

单次执行的适用场景,比如开关打开触发动作,开关打开之后肯定有关闭,这样开关才能再次打开,一个开关不可能打开又打开,单次执行适用这种情况; 有限次执行和重复执行相对比较好理解,有限制次数和不限制次数;

场景动作

场景条件,执行策略都满足后则开始执行动作,场景动作必须按顺序执行,顺序不同代表的含义也不一样; 场景动作本身也可以作为触发条件,那么在这种情况下要注意循环调用; A-->B-->C, C-->A 这样导致A,C不断被触发;

zigbee场景

zigbee网关可以存储与在网关内部相关的场景自动化,这些场景自动化都是可重复执行,在网络拓扑结构发生变更时,网关规则要及时同步更新;zigbee场景自动化利用网关和子设备交互的特性,避免与云服务端交互,不仅减少了网络带宽,而且效率会有一定程度的提高;

zigbee网关及子设备在处理场景联动方面会有很多优势,场景主要分两种,第一种zigbee子设备触发时,子设备本身的设备事件会通知zigbee网关,zigbee网关收到子设备消息后上报到云服务器; 还有一种场景联动(zigbee场景,也称本地化场景联动),zigbee子设备触发事件,子设备事件通知到网关之后网关本身根据规则直接动作触发zigbee网关或者其它子设备;

消息队列

设备上报的事件首先发送到消息队列,消息队列发送到场景系统;消息队列保证消息稳定,可靠,  消息的先后顺序;

定时任务

场景条件中有一类是定时触发,定时条件需要使用到定时中间件,提前把时间存到中间件中,然后到指定时间触发条件;

参考:

1. https://baijiahao.baidu.com/s?id=1639194454562027661&wfr=spider&for=pc

2. https://www.jianshu.com/p/2090203b9868

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章