步骤⑥:脚本管理


一、脚本说明

网关上进行低代码开发的脚本工具,使用Javascript 语言,通过脚本编写控制程序和处理逻辑,可在网关上快速实现复杂的业务场景(网关现有标准功能不具备的),如实现数据统计分析、数据处理、联动控制、协议解析等自定义功能。能够极大增强整个网关对于业务的支撑性,让网关更灵活,功能更强大,适配的场景更多。
脚本管理功能,使用Javascript 语言,

1.1 网关脚本的特点

1. 自由灵活
2. 快速实现
3. 功能拓展

二、脚本管理

脚本管理功能,可针对于已创建的脚本列表进行管理,包括查询,新增,编辑,删除,如图
【查询】:针对于已创建的脚本,支持使用脚本名称进行模糊查询;
【编辑】:针对于已创建的脚本,进行编辑,编辑过程中,可编辑名称,执行策略,脚本代码等;
【删除】:二次确认后进行删除,脚本删除后,原程序将不再执行。

三、新增脚本

新增脚本功能可创建新的脚本,编写脚本程序,如图,点击【新增】按钮,弹出弹窗
【脚本名称】:可自定义,必填项。不限中英文,不限标点符号,包括空格,最多支持15个字符;
【执行策略】:有四种执行策略,启动执行,周期执行,条件执行和数据变化执行;
【脚本】:可进行写入相关执行脚本。

四、执行策略

4.1 启动执行

选择启动执行,当网关连接到服务器时,执行设置的相关脚本,如图

4.2 周期执行

选择周期执行时,设置时间间隔,脚本就会按照设置的时间间隔定时周期性执行,如图

4.3 条件执行

选择条件执行时,设置相应条件表达式,当满足了设置的条件时,执行相关脚本,如图
【表达式】:表达式中需使用通配符#{变量标识}表示变量,此处设置的为执行脚本的触发条件,详见下方表达式说明;
【执行频次】:此处设置的为当满足触发条件后,执行脚本的频次,支持单次执行和周期执行,
※单次执行:达到触发条件后,执行一次设置的脚本;
※周期执行:达到触发条件后,按照设置的时间间隔定时设置的执行脚本;当不满足条件时,停止定时执行脚本。

4.3.1 表达式

表达式格式
表达式中各个变量通过#{}的形式引入,参与运算的变量支持变量,年(year),月(month),日(day),时(hour),分(minute),秒(second)。
支持的运算符
表达式中支持使用以下运算符,支持使用括号进行优先级区分
表达式举例
1. 当变量pressure值等于200时进行执行脚本,可写入表达式为:#{pressure}==200;
2. 当变量PH值大于100并且变量temp值加20大于35时进行执行脚本,可写入表达式为:(#{PH} > 100) && (#{temp} + 20 > 35) 。

4.4 数据变化执行

选择数据变化执行时,当网关中只要有变量数据变化时(或者可以在脚本中自行定义触发变化的变量),执行设置的相关脚本,如图

五、脚本编写说明

脚本中可输入相关执行脚本,像运算符、一些语句、变量和函数等也可通过点击选择脚本栏上方的相关按钮快速插入到脚本中,进行辅助编写脚本
1、插入运算符、语句等
运算符、语句等可通过键盘输入,也可通过点击脚本栏上方的运算符、语句等快速将运算符和语句插入到脚本中,以下以插入for语句为例进行介绍
(1)将鼠标光标定位到要插入的位置,(2)鼠标点击脚本栏上方的for语句,这样for语句就插入到脚本中了,如图
2、插入变量、函数等
脚本中有时需要插入变量,函数等,但变量或者支持的函数过多,为了能更准确将对应变量或函数插入到脚本中,可通过点击脚本栏上方的变量或者系统函数进行选择并快速插入到脚本中,以下以插入系统函数为例进行介绍
(1)将鼠标光标定位到要插入的位置,(2)鼠标点击脚本栏上方的系统函数按钮,(3)弹出系统函数弹窗,找到要插入的函数,(4)点击要插入函数前边的“点击插入至代码”按钮,该系统函数便插入到脚本中了,如图
3、脚本编写过程中也可通过点击脚本栏上方的检查代码进行检查已写入的代码是否正确,
如需了解更多脚本编写内容可查看脚本示例。
注意:
1)signalArray的数据格式是:
[{key:"temp1", value:10.2, datatype:'int32'},{key:"temp2", value:10.2, datatype:'int32'}]
2)脚本编写过程中,支持显示语法错误,可按照提示进行相应改正;
3)脚本编写过程中,支持关键词下拉可快速选中函数;
4)脚本创建成功后,点击保存可模拟运行,检测代码是否有错误,错误的可进行提示,根据系统提供的错误信息,作出相应的改正,系统检查通过,就可以在运行环境中运行。
5)写入脚本中的变量均需要填写变量标识key,如图,否则该变量无法在脚本中生效

六、脚本可运行的环境

网关内部程序执行脚本
在网关的运行环境下,可以根据以下运行方式进行执行
1)网关连接到服务器执行脚本
2)周期性执行脚本
3)满足设置的条件执行脚本
4)数据变化执行脚本

七、脚本语言特性

1. 脚本语言支持JavaScript语言进行编写,支持ES5规范,不支持ES6以上规范
2. 支持赋值,比较,数值运算运算符;
3. 支持Date()函数,常见Date函数说明如下
4. 支持Math函数,常见Math函数说明如下
5. 支持 IF-ELSE条件语句,while循环语句,swicth语句,for循环语句,下表为常见JavaScript语句:
更多JS相关语法请参考https://www.runoob.com/js/js-statements.html

八、脚本应用场景

1、想要实现PLC需要根据数值变化修改寄存器的值,例如温度过高时,自动关闭阀门,这时就可以通过写入网关脚本实现。
2、污水处理站需要每隔1个星期定时执行开关闸放水操作 ,可以通过周期执行写入相关脚本。
更多应用场景请点击查看脚本示例

九、MQTT上报脚本格式示例

有些用户的MQTT服务器没有格式要求,可以选择使用蓝蜂提供的上报数据格式(MQTT默认格式)。
实时数据上报主题:
data/report/${sn}
上报主题示例:
data/report/200121011004
上报json示例:
{
"time": 1655185922470,
"data": {
"key1": "0",
"key2": "0",
"key3": "0",
}
}
}
上报json参数说明:
匹配的脚本
function main(signalArray){
  var json ={
        time:0,
        data:{
        }
    };
    var signalValues = {};
    json.time=new Date().getTime();
    for(var i=0; i<signalArray.length; i++){
        var signal = signalArray[i];
       signalValues[signalArray[i].key]=signalArray[i].value;
    }
    json.data = signalValues;   API.publishTopic('data/report/200121011004',0,JSON.stringify(json))
}
帮助中心 帮助中心
5 个月前
1104

扫描下方二维码手机阅读文章

0 0