MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET

前言

本文适用于任何使用MT2625方案的NBIOT模组,MTK官方释放的AT命令是有socket命令的,利用socket,我们可以实际对接OneNET,本文将用socket对接OneNET的HTTP服务器,实现POST/GET数据流。实现STM32+NBIOT的代码在GitHub:https://github.com/sanjaywu/NBIOT_OneNET_Demo。

 

一、AT命令

这里我只列举本次对接OneNET用到的命令。

1、AT+ESOC

该命令用于创建一个 TCP/UDP。

AT命令 AT+ESOC=,,
返回结果

创建成功:

+ESOC=

OK

创建失败:

ERROR

参数说明

整型:
1 - IPv4
2 - IPv6

 

整型:
1 - TCP
2 - UDP
3 - RAW


整型:
1 - IP
2 - ICMP


:

范围 0-4

举例

AT+ESOC=1,1,1

+ESOC=0

OK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、AT+ESOCON

该命令用于连接远程服务器。

AT命令 AT++ESOCON=,, 
返回结果

连接失败:

ERROR

 

连接成功:

OK

参数说明

整型:

该值是 AT+ESOC 返回的


整型:

远程服务器端口号


字符串:

远程服务器IP地址

举例

AT+ESOCON=0,80,"183.230.40.33"

OK

 

 

 

 

 

 

 

 

 

 

 

3、AT+ESOSEND

该命令用于发送数据。

AT命令 AT+ESOSEND=,,[,]
返回结果

发送失败:

ERROR

 

发送成功:

OK

参数说明

整型:

 该值是 AT+ESOC 返回的


整型:

数据长度.(建议不超过 512),是16进制数据格式的一半


十六进制格式:

ASCII 码数据, data context


整型,可选,发送标志位:
1 - ack 不延迟.
2 – 没有 nagle 算法.

举例 AT+ESOSEND=0,5,3131313131
OK

 

 

 

 

 

 

 

 

 

 

 

 

 

4、AT+ESOCL

该AT命令用于关闭socket连接。

AT命令 AT+ESOCL= 
返回结果

关闭失败:

ERROR

 

关闭成功:

OK

参数说明

整型:

该值是 AT+ESOC 返回的

举例

AT+ESOCL=0

OK

 

 

 

 

 

 

 

 

二、URC

发送数据之后会返回URC,来表示服务器是否接收到发送的数据,urc为+ESONMI。

返回结果 +ESONMI=,,
参数说明

整型:

 AT+ESOC 返回的 socket_id


整数:

原始数据长度


字符串:

16进制数据格式数据

举例 +ESONMI=0,3,303132

 

 

 

 

 

 

 

三、对接OneNET

 

根据上面的AT命令来对接OneNET的HTTP服务器,实现POST和GET数据,关于OneNET HTTP的POST和GET可以参考我的另外一篇博客:https://blog.csdn.net/Sanjay_Wu/article/details/84870419。

1、创建socket

AT+ESOC=1,1,1

+ESOC=0

OK

 

2、连接OneNET服务器

对应的服务器IP为:183.230.40.33,端口为:80。

AT+ESOCON=0,80,"183.230.40.33"

OK

 

3、发送数据

使用AT+ESOSEND命令来发送数据,发送的数据这里主要是POST数据流和GET数据流,数据要以16进制格式发送,所有就需要将POST的数据格式先转换为16进制格式,推荐使用工具:https://tool.lu/hexstr在线转换。

(1)、POST数据

  • POST数据原始格式为:
POST /devices/505619290/datapoints HTTP/1.1
api-key:SlxhH3MCLvuuvXJ0N=a14Yo6EAQ=
Host:api.heclouds.com
Content-Length:68

{"datastreams":[{"id":"temperature","datapoints":[{"value":28.6}]}]}


  • 转换为16进制格式后:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第1张图片

  • 原始数据格式的数据长度为199,根据AT+ESOSEND,发送POST数据流:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第2张图片

  • 发送在POST之后返回了+ESONMI,长度是203,将16进制数据转换为原始数据:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第3张图片

可知上报数据是成功的。

 

  • 到平台查看数据,数据时上报成功的:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第4张图片

 

(2)、GET数据流

  • GET数据流的原始数据格式为:
GET http://api.heclouds.com/devices/505619290/datapoints?datastream_id=test_stream HTTP/1.1
api-key:SlxhH3MCLvuuvXJ0N=a14Yo6EAQ=
Host:api.heclouds.com

  • 转换为16进制格式后:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第5张图片

  • 原始数据格式的数据长度为156,根据AT+ESOSEND,发送GET数据流:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第6张图片

 

  • 发送在GET之后返回了+ESONMI,长度是203,将16进制数据转换为原始数据:

MT2625方案的NBIOT模组通过socket AT命令实现POST/GET数据流到OneNET_第7张图片

可知GET数据是成功的。

 

 

你可能感兴趣的:(IOT,OneNET云平台)