时间:2021-06-29 作者:众山科技
用户可以配置Lua代码来判断获取数据的大小,并根据上下限阈值执行不同的操作。
示例:采集一个温湿度、光照度传感器数据,首先配置好相应的参数
配置的Lua代码:
local temp=data.illumination if temp>1000 then ModbusToJson.count=ModbusToJson.count+1
count_str=tostring(ModbusToJson.count) SHELL="@CS=count:"..count_str if
ModbusToJson.count==5 then ModbusToJson.count=0 SHELL="@CS=High illumination
warning!@D=1@DO1=1" end else SHELL="@CS=illumination
normal@D=1@DO1=0@PUB=1" end
注:如果Lua代码太长,配置的对话框也很长,可以直接点Enter回车配置
正常模式Lua代码为(方便阅读):
Lua代码实现效果:
当光照度小于或等于1000时,串口打印illumination normal,关闭DO1,并且不往服务器上报数据;当光照度大于1000时,先判断次数,串口打印count数量,如果Lua脚本连续执行5次光照度都大于1000,串口打印High illumination warning!,DO1打开,并且将采集的数据立即上报到服务器。
赋值语句为local y=data.x,其中x为功能标识符(必须为英文),y为获取的标识符值,后面就是判断变量的大小和执行相应的操作。所有操作可以通过SHELL脚本执行,具体请参考脚本编程手册。ModbusToJson.count 表示计数,如果采集很频繁告警以后就会一直上报数据,通过Modbus To Json.count计数可以设置上传周期。
说明:
①data.x为获取功能标识符的值,标识符只能配置为英文
②Modbus转Json.count为计数的个数,初始为0,可以通过判断ModbusToJson.count数量设置告警周期
③@PUB指令表示是否立即发布数据到服务器,@PUB=1表示发送,@PUB=0或者不配置表示不发送,只有等到了上报周期才发送。
④“SHELL=”后面可以是所有支持的脚本指令
⑤当最后一条功能标识符的指令发送完成执行一次Lua代码,执行周期=变化周期*标识符数量
一般流程为:先定义一个变量获取标识符值,设定变量阈值,判断大小,(bool值则判断真假,0为假,1为真),然后根据判断执行具体的操作,所有操作可以通过SHELL指令执行,比如打印信息,上报数据,开/关继电器等。