场景是指通过SA实现设备联动。例如,自动检测今天的天气情况,今天无雨,定时智能音箱播放浇花提醒,并且播报今天的天气情况。 根据自身需求,把多种控制并发的事情编辑成一个场景,并命名,可以通过场景控制很多设备,实现一键操作的功能。

场景的相关操作

1.创建场景

创建智能场景前请确保您的家庭已添加设备,且用户是否拥有创建场景的权限。

  • 场景名称

场景名称在该家庭下需要确保唯一性。

  • 触发条件

通过配置触发条件,达到条件后能执行对应的任务,并且可以设置触发条件的生效时段。触发条件分为三种

  1. 手动执行,点击即可执行

  2. 定时执行,如每天8点

  3. 设备状态变化时,如开灯时,感应到人时

当触发条件为手动触发时只能添加一种触发条件。而选择其他两种可以添加多种,同时需要确定条件关系。条件关系可以选择

  1. 满足所有条件

  2. 满足任一条件

  • 技术实现

系统中启动一个服务,作为消息队列(以下简称smq)的消费者,消费者不断去轮训消息队列,看看有没有新的数据,如果有就消费。 查看下面为伪代码:

当设置为手动执行的场景时,会添加一条任务数据,执行时间为当前时间,加进smq,等待消费者消费。

 

而设置为自动执行的场景时,会计算任务今天的下次执行时间,并添加任务数据,加进smq,等待消费者消费。

 

如果自动执行场景的生效时段为重复性,那么会在每天 23: 55:00 进行第二天任务编排

 

2.执行任务

当满足触发条件后,可以自动执行配置好的执行任务。执行任务认为两种

  1. 智能设备,如开灯,播放音乐

  2. 控制场景,如开启夏季晚会场景

  • 技术实现

任务执行,通过消费者消费smq中的任务,去执行run方法去执行对应的任务。

 

3.查看场景

场景分成 “手动” 和 “自动” 两个执行类型,页面加载时判断用户是否拥有控制场景的权限,在页面展示中 “手动”场景排在“自动”场景的上方;

  1. 手动类场景为“执行”按键,可直接点击触发执行任务

  2. 自动类场景为“开关”按键,设置打开或者关闭状态

4.注意事项

  • 场景的修改和控制不仅仅取决于用户是否拥有修改和控制场景的权限,还包括该用户是否有对场景中的设备操作项的控制权限。

    • eg:如果您拥有控制场景A的权限,但是您没有场景A里面设备B的开关控制权限,则您同样没有控制该场景A的权限。修改场景也是如此。

最新文章

  1. HTML5入门(CSS样式-------------------(CSS基础知识点----------------------------))
  2. 错误 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. d:\users\vs2013\le
  3. A.Kaw矩阵代数初步学习笔记 5. System of Equations
  4. [moka同学代码]PHP初级知识:上传文件源码
  5. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
  6. D5转Xe点滴
  7. 清理PC垃圾
  8. char[]数组与char *指针的区别
  9. Container容器控件的使用、Hbox与Vbox布局管理器的使用、以及AjaxAction前后台事件响应
  10. 版本控制SVN与Eclipse4.4.1集成 ( eclipse svn:E175002错误解决 )
  11. 完善GDAL与OpenCV间的数据格式转换与影像分块读写
  12. Python正则匹配字母大小写不敏感在读xml中的应用
  13. 手機Web頁面信息
  14. Git clone远程目录443:Timed out 问题(go get)
  15. 面板JPanel,滚动面板JScrollPane,文本域JTextArea
  16. django学习系列——python和php对比
  17. 安装配置Spark集群
  18. docker 构建dockerfile
  19. win10 中redis client提示 ERR Client sent AUTH,but no password is set
  20. webkit技术内幕读书笔记 (四)

热门文章

  1. PostgreSQL隐藏字段
  2. hdu1002 大数相加问题
  3. mysql 用 source 导入备份数据
  4. ES6——简单的多态
  5. VSCode 在.vscode/launch.json中设置启动时的参数
  6. 实例说明C++的virtual function的作用以及内部工作机制初探
  7. centos7 shell 计算器 bc 命令
  8. 前端~定位属性position(relative、absolute、fixed)的分析
  9. 假期作业03:使用IDE开发你的Java程序
  10. Jenkins(8)- CentOS 7.x 通过yum安装jenkins