近期OneNET上线了TCP透传功能,该功能旨在尽量弱化终端测软件为了适配协议而做的修改,将协议的解析功能放在了平台测,为的是更加方便用户的终端(特别是DTU)的接入。下面我们将以众山DTU为例,做一个简单的接入示例,该示例内容如下:
1、终端DTU连接上OneNET平台;
2、使用脚本实现周期性下发数据;
3、使用脚本实现,平台将接收的字符串保存,并能够在平台数据流中查看;
4、使用API向DTU下发指令。
一.设备参数配置,将DTU云开关关闭,网络协议设置为TCP_Client,数据中心IP地址设置为183.230.40.40:1811。
二.进入OneNET官网,注册账号,然后进去开发者中心,点击创建产品。
三.创建产品(最后的协议选TCP透传就行)。
四.上传脚本,此脚本让OneNET平台定时下发数据到DTU。
需要注意的是脚本名称很重要,在设备登录的时候需要用作参数。
脚本下载:lua脚本调试.zip
五.设备登录。设备登陆报文是在建立TCP连接之后,用于告知OneNET平台,该终端DTU对应的是平台上的哪一个设备,数据用何种方式进行解析。
格式为 *PID#AuthCode#ParserName*
其中:
PID 为 产品ID
AuthCode 为 鉴权信息(创建设备的时候所指定)
ParserName 为 脚本名称(上传Lua脚本的时候所指定)
示例1:平台周期下发数据。
本例所使用的PID为169428,鉴权信息为wifitest,脚本名称为example1(见第四步)。
发送登录报文为*169428#wifitest#example1*
登录鉴权成功后,可以看到设备指示灯变亮,说明连接OneNET成功,平台会解析上传的LUA脚本,脚本中device_timer_init会启动一个定时器,会定时向DTU设备发送一条“hello”报文。
本例源码为:
其中 dev:add(10,“dev1”,“hello”) 定义了每10秒下发一包数据,内容为hello。
示例2:向平台发送数据。
把例1函数device_timer_init(dev)中的内容注释掉,修改device_data_analyze(dev)函数的内容。
然后上传到OneNET。
上传后需复位一下DTU,重新进行登录。
登录报文为*169428#wifitest#example2*
登录成功后发送字符串,OneNET平台会收到数据。
也可以通过平台向DTU发送数据。
示例3:API下发数据
方法:POST
URL:http://api.heclouds.com/cmds
参数:device_id=41024770 /*用户填写自己的设备ID*/
HTTP头部:api-key:ECEDAdDxzeTpoAh7QW12kXdr3yo= /*用户填写自己的APIKEY*/
HTTP内容:用户自定义数据:json、string、二进制数据(小于64K)
可使用Fiddler工具下发命令,如下图进行设置:
整个发送数据格式为(参考):
POST http://api.heclouds.com/cmds?device_id=41024770 HTTP/1.1
api-key: Y=ECEDAdDxzeTpoAh7QW12kXdr3yo=
Host: api.heclouds.com
Content-Length: 9
123456789