对设备属性值判断实现设备联动

在以上内容中,温度设备可以在平台进行状态判断,通过设备栏中的其它产品节点可以非常方便实现联动,这里演示温度设备与小灯的联动,通过编排服务实现温度过高打开小灯,低于限定值自动关闭小灯的自动化托管程序,并通过Web可视化页面将设备实时状态展现出来。

设备模型

温度产品1:
包含温度属性CurrentTemperature
快速实现场景联动 - 图1

小灯产品2:
实现设备端开发的灯属性上报和控制即可,此处基于设备的主灯开关属性”LightSwitch”进行

快速实现场景联动 - 图2

服务开发

服务开发实现温度报警过高自动打开风扇,温度低于温度阈值一定范围自动关闭风扇,采用功能节点编排内容如下:
快速实现场景联动 - 图3

设备触发中配置设备为「温度设备」,其中「风扇」功能节点是对风扇产品的抽象,可通过此节点对风扇设备的属性进行设置,风扇的开关属性为fanSwitch,通过在参数中填充如下内容,便可实现设备的联动:

  1. {
  2. "properties":{"LightSwitch":0}
  3. }

如果熟悉脚本编程,较为复杂的多种条件判断可以在脚本功能节点中通过if else来进行判断,可以直接简化以上服务流为以下:
快速实现场景联动 - 图4

功能节点 配置内容
image.png 配置为温度设备的温度属性上报即可
image.png module.exports = async function(payload, node, query, context) {
//获取温度数值
var temp = payload.props.CurrentTemperature.value;
if(temp>23){
//打开风扇
payload.switch = 1;
return payload;
} else if(temp<20){
//关闭风扇
payload.switch = 0;
return payload;
}
}
image.png {
“properties”: {
“LightSwitch”:
}
}
image.png module.exports = async function(payload, node, query, context) {

console.log(“payload: “, payload);
var temp = node[“node_accc8bf0”].props.CurrentTemperature.value;
var controll = node[“node_accc8bf0”].switch;
let res = “”;
switch(controll){
case 1:
res = “温度超限打开风扇,报警温度:” + temp;
break;
case 0:
res = “温度下降,关闭风扇,当前温度:” + temp;
break;
}
return res;
}
image.png 配置text内容为””即可

在脚本中,使用node["node_accc8bf0"]获取上一个脚本节点的输出,因为当小灯功能节点完成开关的指令下发后返回均为code=200,通过node[id]可以方便获取到各个节点的输出。
部署服务后,待设备温度过高,将会自动发送消息到钉钉机器人,设备温度低于关闭的阈值时,将会自动下发指令关闭小灯,同时推送消息到钉钉机器人。
快速实现场景联动 - 图10

如果熟悉脚本编程,较为复杂的多种条件判断可以在脚本功能节点中通过if else来进行判断,可以直接简化以上服务流为以下:
image.png

功能节点 配置内容
image.png 配置为温度设备的温度属性上报即可
image.png module.exports = async function(payload, node, query, context) {
//获取温度数值
var temp = payload.props.CurrentTemperature.value;
if(temp>23){
//打开风扇
payload.switch = 1;
return payload;
} else if(temp<20){
//关闭风扇
payload.switch = 0;
return payload;
}
}
image.png {
“properties”: {
“fanSwitch”:{{payload.switch}}
}
}
快速实现场景联动 - 图15 module.exports = async function(payload, node, query, context) {

console.log(“payload: “, payload);
var temp = node[“node_accc8bf0”].props.CurrentTemperature.value;
var controll = node[“node_accc8bf0”].switch;
let res = “”;
switch(controll){
case 1:
res = “温度超限打开风扇,报警温度:” + temp;
break;
case 1:
res = “温度下降,关闭风扇,当前温度:” + temp;
break;
}
return res;
}
image.png 配置text内容为”{{payload}}”即可

Web可视化

新建Web可视化,通过卡片、开关组件可以快速搭建显示温度设备与风扇设备最新状态,可以手动通过Web对设备进行操作,设备状态也会被编排服务自动控制,并将控制的结果反映在Web可视化页面上。
快速实现场景联动 - 图17

服务调试

在服务编排中提供单节点粒度和全局调试日志。
快速实现场景联动 - 图18