近期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


点击Execute,向DTU下发数据,通过串口调试软件可以查看。