Global function
全局函数
This()
当前虚拟机名称、包路径、lua lib路径,用于从指定路径加载模块
- 参数
无
- 返回值
Table,{LuaVMName=”虚拟机名称”,PackagePath=”虚拟机目录”,LuaLibPath=”lua标准库目录”}
- 例子
local PackagePath=this().PackagePath--当前虚拟机加载用户自定义模块的根目录
local LuaLibPath=this().LuaLibPath--当前虚拟机加载lua官方模块的根目录
package.path = PackagePath .. [[/?/init.lua;]] .. PackagePath .. [[/?.lua;]] .. package.path
package.path = LuaLibPath .. [[/?/init.lua;]] .. LuaLibPath .. [[/?.lua;]] .. package.path
local LuaVMName=this().LuaVMName--当前虚拟机的名称
cf_iot
模块功能:虚拟机核心功能,定时器、虚拟机消息机制、看门狗
cf_iot.GetFirmwareInfo()
获取固件信息
- 参数
无
- 返回值
String FirmwareInfoStr,固件信息
- 例子
local FirmwareInfoStr=cf_iot.GetFirmwareInfo()
cf_iot.GetParameters()
获取固件参数设置信息
- 参数
无
- 返回值
String ParameterStr,固件信息
- 例子
local ParameterStr=cf_iot.GetParameters()
cf_iot.print(Info,B)
获取固件参数设置信息
- 参数
参数 | 类型 | 释义 |
Info | string | 打印信息 |
B | boolean | 是否将信息发送到服务器 |
- 返回值
无
- 例子
cf_iot.print("test",false)
cf_iot.SetDebug(VMName,B)
设置虚拟机调试模式
- 参数
参数 | 类型 | 释义 |
VMName | string | 虚拟机名称 |
B | boolean | 是否打开虚拟机调试模式,true:打开调试,异常信息上行至服务器 false:关闭虚拟机调试 |
- 返回值
无
- 例子
cf_iot.SetDebug(LuaVMName,false)
cf_iot.Watchdog(VMName,I)
发送虚拟机看门狗信号
- 参数
参数 | 类型 | 释义 |
VMName | string | 虚拟机名称 |
I | number | 数字信号值 |
- 返回值
无
- 例子
cf_iot.Watchdog(LuaVMName,1)
cf_iot.SetWatchdogTimeout(VMName,I)
设置看门狗信号超时时间,单位为秒
- 参数
参数 | 类型 | 释义 |
VMName | string | 虚拟机名称 |
I | number | 超时时间,单位为秒,大于20,默认120秒 |
- 返回值
无
- 例子
cf_iot.SetWatchdogTimeout(LuaVMName,300)
cf_iot.AddTimer(VN,TN,It,Func)
增加软件定时器,用于周期性回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
TN | string | 定时器名称 |
It | number | 周期执行时间间隔,单位为秒 |
Func | 定时器回调函数 |
- 返回值
无
- 例子
5秒发送一次看门狗信号
cf_iot.AddTimer(LuaVMName,"MainTimer",5000,function()
cf_iot.Watchdog(LuaVMName,1)--发送看门狗信号
end)
cf_iot.DeleteTimer(VN,TN)
删除定时器
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
TN | string | 定时器名称 |
- 返回值
无
- 例子
cf_iot.DeleteTimer(LuaVMName,"WaitingDataTimer")
cf_iot.TimerExist(VN,TN)
判断定时器是否存在
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
TN | string | 定时器名称 |
- 返回值
Boolean,true:定时器存在,false:定时器不存在
- 例子
local b=cf_iot.TimerExist(LuaVMName,"WaitingDataTimer")
cf_iot.SetOnMessageHandler(VN,Func)
设置虚拟机消息回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local VM_OnMessage= function(data)
cf_iot.print(json.encode(data),false)
end
cf_iot.SetOnMessageHandler(LuaVMName,VM_OnMessage)
cf_iot.SendMessage(VN,DVN,Msg)
给目标虚拟机发消息
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
DVN | string | 目标虚拟机名称 |
Msg | table | 消息内容 |
- 返回值
无
- 例子
向虚拟机"app2",发送消息
local msg={Source=LuaVMName,Dst="app2",Cont="test"}
cf_iot.SendMessage(LuaVMName,"app2",msg)
common
模块功能:通用库函数
common.CRC16(T)
CRC16校验算法
- 参数
参数 | 类型 | 释义 |
T | table | 虚拟机名称 |
- 返回值
table r, CRC校验码
- 例子
function crc16(array)
local len=table.getn(array)
local r=common.CRC16(array)
table.insert(array, r[1])
table.insert(array, r[2])
end
local t=crc16({0x01,0x03,0x00,0x00,0x00,0x02})
common.DecToBin(I)
10进制转二进制
- 参数
参数 | 类型 | 释义 |
I | number | 十进制数字 |
- 返回值
table r,string b, 二进制数组和字符串
- 例子
local t,s=common.DecToBin(10)
--s为”00001010”,t为{0,0,0,0,1,0,1,0}
common.HexToDec(S)
16进制字符串转10进制数字
- 参数
参数 | 类型 | 释义 |
S | string | 16进制字符串 |
- 返回值
number, 10进制数字
- 例子
local n=common.HexToDec(“ff”)
common.HexToDec1(S)
16进制字符串转10进制数字
- 参数
参数 | 类型 | 释义 |
S | string | 16进制字符串,可表示负数 |
- 返回值
number, 10进制数字
- 例子
local n=common.HexToDec1(“ff9b”)
--n为-101
json
模块功能:json序列化和反序列化
json.decode(S)
json字符串反序列化为table
- 参数
参数 | 类型 | 释义 |
S | string | json字符串 |
- 返回值
table/nil,table或nil(转换失败时)
- 例子
local FirmwareInfo=json.decode(cf_iot.GetFirmwareInfo())
if FirmwareInfo~=nil then
local IMEI=FirmwareInfo.ModuleState.IMEI
local CCID=FirmwareInfo.ModuleState.CCID
end
json.encode(T)
table序列化为json字符串
- 参数
参数 | 类型 | 释义 |
T | table | 待序列化的table结构 |
- 返回值
string/nil, json字符串或nil(转换失败时)
- 例子
local data={a=1,b=2,c=3}
local jsonstr=json.encode(data)
if jsonstr~=nil then
end
http
模块功能:http请求、上传文件
http.Get(URL,P)
get请求
- 参数
参数 | 类型 | 释义 |
URL | sting | http请求url |
P | sting | 请求参数 |
- 返回值
string result,string/nil err,请求结果和错误信息
- 例子
result,err=http.Get(“http://www.baidu.com”,”s=1&b=2”)
If err ~=nil then
end
http.Post(URL,P)
post请求
- 参数
参数 | 类型 | 释义 |
URL | sting | http请求url |
P | sting | 请求参数 |
- 返回值
string result,string/nil err,请求结果和错误信息
- 例子
result,err=http.Post(“http://www.baidu.com”,”s=1&b=2”)
If err ~=nil then
end
http.Upload(URL,P,FD,FN,T)
post请求
- 参数
参数 | 类型 | 释义 |
URL | sting | http请求url |
P | sting | 文件路径 |
FD | sting | 字段名称 |
FN | sting | 文件名 |
T | number | 上传超时,单位秒 |
- 返回值
string result,string/nil err,文件上传结果和错误信息
- 例子
local result,err=http.Upload(UploadUrl,storage.GetFilePath(LuaVMName,"log"),"file","log",5)
If err ~=nil then
end
http.GetUploadUrl()
获取默认上传路径
- 参数
无
- 返回值
string url,默认上传路径
- 例子
local url=http.GetUploadUrl()
mqtt
模块功能:MQTT客户端
mqtt.Publish(topic,qos,retain,payload)
mqtt消息推送
- 参数
参数 | 类型 | 释义 |
topic | sting | 消息主题 |
qos | sting | 传输的机制0/1/2 |
retain | boolean | 是否离线时保存 |
payload | sting | 消息内容 |
- 返回值
无
- 例子
mqtt.Publish(“/topic/test”,0,false,jsonstr)
mqtt.AddSubscribeTopic(topic)
增加订阅主题
- 参数
参数 | 类型 | 释义 |
topic | sting | 消息主题 |
- 返回值
无
- 例子
mqtt.AddSubscribeTopic(“/topic/test”)
mqtt.DeleteSubscribeTopic(topic)
删除订阅主题
- 参数
参数 | 类型 | 释义 |
topic | sting | 消息主题 |
- 返回值
无
- 例子
mqtt.DeleteSubscribeTopic(“/topic/test”)
mqtt.SetOnMessageHandler(VN,Func)
设置mqtt消息回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local mqtt_OnMessage = function(msg)--消息处理函数
local Toppic=msg.Toppic
local tb=json.decode(msg.Payload)
end
mqtt.SetOnMessageHandler(LuaVMName,mqtt_OnMessage)--设置消息处理回调函数
mqtt.GetMQTTSettings()
mqtt设置参数
- 参数
无
- 返回值
table,包含ClientID,UserName,Password,SubscribeTopic,PublishTopic
- 例子
Local data=mqtt.GetMQTTSettings()
cf_iot.print(json.encode(data),false)
websocket
模块功能:websocket客户端
websocket.SendMessage(payload)
websocket消息推送
- 参数
参数 | 类型 | 释义 |
payload | sting | 消息内容 |
- 返回值
无
- 例子
websocket.SendMessage(jsonstr)
websocket.SetOnMessageHandler(VN,Func)
设置websocket消息回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local websocket_OnMessage = function(msg)--消息处理函数
local msgObj=json.decode(msg)
local channel=msgObj.channel
if channel~=nil
then
local DeviceNo=msgObj.DeviceNo
local Data=msgObj.Data
end
end
websocket.SetOnMessageHandler(LuaVMName,websocket_OnMessage)--设置消息处理回调函数
storage
模块功能:文件循环存储、日志
storage.WriteByteToFile(VN,DATA)
数据写入到虚拟机存储目录中的当天文件,磁盘满时,自动清理旧文件
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
DATA | table | 消息内容 |
- 返回值
无
- 例子
storage.WriteByteToFile(LuaVMName,data.byteArray)
storage.GetFilePath(VN,FN)
获取文件名在虚拟机存储目录中的完整路径
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
FN | string | 文件名称 |
- 返回值
string,文件完整路径
- 例子
local path=storage.GetFilePath(LuaVMName,"20210711")
storage.GetFileList(VN)
获取虚拟机存储目录中的文件列表
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
- 返回值
string,文件列表,json字符串
- 例子
local json=storage.GetFileList(LuaVMName)
storage.ClearPartialStorage(VN,Count)
清除虚拟机存储目录中指定数量的文件
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Count | number | 清除文件数量 |
- 返回值
无
- 例子
storage.ClearPartialStorage(LuaVMName,10)
storage.WriteByteToLog(VN,DATA)
数据写入到虚拟机存储目录中的日志文件,磁盘满时,自动清理旧的数据文件
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
DATA | table | 消息内容 |
- 返回值
无
- 例子
storage.WriteByteToLog(LuaVMName,data.byteArray)
storage.ClearLog(VN)
清空虚拟机存储目录中日志文件内容
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
- 返回值
无
- 例子
storage.ClearLog(LuaVMName)
storage.GetLogSize(VN)
获取虚拟机存储目录中日志文件大小
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
- 返回值
number,日志文件大小
- 例子
local size=storage.GetLogSize(LuaVMName)
hardware
模块功能:AT、短信、串口
hardware.SendAt(cmd,Formatter,Timeout)
发送AT指令
- 参数
参数 | 类型 | 释义 |
cmd | string | at命令 |
Formatter | string | 格式化器 imei:提取imei ccid:提取ccid CSQ:提取信号值 Revision:提取版本号 |
Timeout | number | 超时,单位秒 |
- 返回值
string,AT响应内容
- 例子
local atResponseStr=hardware.SendAt("at+cgsn\r","",100)
local Revisionstr=hardware.SendAt("ati\r","Revision",100)
local IMEIstr=hardware.SendAt("at+cgsn\r","imei",100)
local CCIDstr=hardware.SendAt("at+qccid\r","ccid",100)
local CSQstr=hardware.SendAt("at+csq\r","CSQ",100)
hardware.SendSMS(NUM,Content)
发送文本短信
- 参数
参数 | 类型 | 释义 |
NUM | string | 号码 |
Content | string | 内容 |
- 返回值
无
- 例子
hardware.SendSMS("15395016712","send sms")
hardware.SetOnSMSHandler(VN,Func)
设置短消息回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local LteModule_OnSMS = function(msg)--短信处理函数
local info="sms:" .. msg.No .. ":" .. msg.Content
mqtt.Publish("CloudEmbedded/lua/print",0,false,info)
end
hardware.SetOnSMSHandler(LuaVMName,LteModule_OnSMS)--设置短信处理回调函数
hardware.SetOnGPSHandler(VN,Func)
设置GPS回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local Gps_data={Longitude=0,Latitude=0,N_S="",E_W="",Speed=0,Direction=0,Mode="",DateTime=""}
local GPSModular_OnGPS = function(data)--gps处理函数
Gps_data.Longitude=data.Longitude
Gps_data.Latitude=data.Latitude
Gps_data.N_S=data.N_S
Gps_data.E_W=data.E_W
Gps_data.Speed=data.Speed
Gps_data.Direction=data.Direction
Gps_data.Mode=data.Mode
Gps_data.DateTime=data.DateTime
mqtt.Publish("CloudEmbedded/lua/print",0,false,json.encode(Gps_data))
end
hardware.SetOnGPSHandler(LuaVMName,GPSModular_OnGPS)--设置gps处理回调函数
hardware.SetSerialOnDataHandler(VN,PN,Func)
设置串口数据回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
PN | string | 串口号 |
Func | function | 消息回调函数 |
- 返回值
无
- 例子
local Serial1_OnData= function(data)--串口1数据处理函数
--16进制字符数组 data.hexArray
--byte数组data.byteArray
end
hardware.SetSerialOnDataHandler(LuaVMName,”Serial1”,Serial1_OnData)
hardware.SetHardwareOnEvent(VN,Func)
设置硬件事件回调函数
- 参数
参数 | 类型 | 释义 |
VN | string | 虚拟机名称 |
Func | function | 回调函数 |
- 返回值
无
- 例子
local Hardware_OnEvent= function(data)
local portName=data.portName
local EventName=data.EventName
local Message=portName ..":".. EventName .. ":" .. data.Message
end
hardware.SetHardwareOnEvent(LuaVMName,Hardware_OnEvent)
hardware.SerialOpen(PN,BD,DB,PS,SB,RT)
串口打开
- 参数
参数 | 类型 | 释义 |
PN | string | 串口号 |
BD | number | 波特率 |
DB | number | 数据位 |
PS | string | 校验位 |
SB | number | 停止位 |
RT | number | 读超时、单位毫秒 |
- 返回值
无
- 例子
hardware.SerialOpen("Serial1",9600,8,"None",1,100)
hardware.SerialWriteData(PN,DATA)
向指定串口写16进制字符串
- 参数
参数 | 类型 | 释义 |
PN | string | 串口号 |
DATA | string | 16进制字符串 |
- 返回值
无
- 例子
hardware.SerialWriteData("Serial1","01 05 00 00 00 00 CD CA")
hardware.SerialWriteDataByte(PN,DATA)
向指定串口写二进制数据
- 参数
参数 | 类型 | 释义 |
PN | string | 串口号 |
DATA | table |
- 返回值
无
- 例子
hardware.SerialWriteDataByte("Serial1",{0x01,0x05,0x00,0x00,0xFF,0x00,0x8C,0X3A})
hardware.SetSerialDataRoute(Route)
串口数据路由
- 参数
参数 | 类型 | 释义 |
Route | number | 0:服务器,1:lua虚拟机 |
- 返回值
无
- 例子
hardware.SetSerialDataRoute(1)
hardware.SetSerialWriteDataSleep(S)
设置串口发送数据包后延迟时间,单位毫秒
- 参数
参数 | 类型 | 释义 |
S | number | 延迟时间 |
- 返回值
无
- 例子
hardware.SetSerialWriteDataSleep(200)
media
media.SearchAllIPCamera()
启动onvif搜索摄像机
- 参数
无
- 返回值
无
- 例子
media.SearchAllIPCamera()
media.GetIPCameraParameters(IP)
获取摄像机信息
- 参数
参数 | 类型 | 释义 |
IP | string | 摄像机IP或为空字符串 |
- 返回值
string,摄像机信息
- 例子
local jsonstr=media.GetIPCameraParameters("")
media.GetIPCameraState(IP)
获取摄像机状态信息
- 参数
参数 | 类型 | 释义 |
IP | string | 摄像机IP或为空字符串 |
- 返回值
string,摄像机状态信息
- 例子
local jsonstr=media.GetIPCameraState("")
media.Screenshot(SN,KEY,FN,FP,HP)
采集图像
- 参数
参数 | 类型 | 释义 |
SN | string | 摄像机序列号 |
KEY | string | 码流标识符 |
FN | string | 文件名 |
FP | string | ftp上传路径 |
HP | string | http上传路径 |
- 返回值
无
- 例子
media.Screenshot("007D50117625","SecondStreamProfileToken_640_352","testScreenshot","/Media",”/upload”)
media.VideoRecording(SN,KEY,FN,FP,HP,D,T)
视频录制
- 参数
参数 | 类型 | 释义 |
SN | string | 摄像机序列号 |
KEY | string | 码流标识符 |
FN | string | 文件名 |
FP | string | ftp上传路径 |
HP | string | http上传路径 |
D | number | 视频录制时长 |
T | string | 视频文件类型,avi/flv |
- 返回值
无
- 例子
media.VideoRecording("007D50117625","SecondStreamProfileToken_640_352","testScreenshot","",”/upload”,10,”flv”)
media.StartPushStream(SN,KEY,SURL,HURL,RURL,FURL)
视频推流
- 参数
参数 | 类型 | 释义 |
SN | string | 摄像机序列号 |
KEY | string | 码流标识符 |
SURL | string | 推流地址 |
HURL | string | |
RURL | string | |
FURL | string |
- 返回值
无
- 例子
media.StartPushStream("007D50117625","SecondStreamProfileToken_640_352","rtmp://tx.direct.huya.com/huyalive/1199558764847?seq=1605155499051&type=simple","","","")