前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266_20 基于ONENET平台的数据上传之TCP的POST操作

ESP8266_20 基于ONENET平台的数据上传之TCP的POST操作

作者头像
MCU起航
发布2020-06-29 11:56:00
7810
发布2020-06-29 11:56:00
举报
文章被收录于专栏:单片机爱好者单片机爱好者

前面两节说了MQTT协议的简单用法,本意是希望你们多练习,结果今天登陆平台,收到了系统提示:

这是要收费了么,so sad!

算了,尽人事听天命吧!

前面两节的内容,实现的效果都是设备和设备之间的通信,物联网平台只是作为一个传输的媒介。但如果我想把数据传回物联网平台,应该怎么搞?

这就是这次要说的内容,TCP的POST操作!如何实现?先看一下官网的文档:

https://open.iot.10086.cn/doc/book/application-develop/api/TCP/15.%E4%B8%8A%E4%BC%A0%E6%95%B0%E6%8D%AE%E7%82%B9.html

该链接中说了上传数据点的方法,示例如下:

POST http://api.heclouds.com/devices/device_id/datapoints HTTP/1.1

device_id:需要替换为设备ID

上传的数据内容如下:

数据内容比较多,我就截了一部分,只要知道上传的数据是JSON格式即可。那么具体如何实现呢?和第15节内容类似,需要先对链接进行解析,得到主机、端口和路径等参数,然后结合API_KEY等其他信息,组成特定的数据格式,上传给平台即可。

如果忘了15节的内容,建议先复习一下。

开始之前,还是要以多协议接入的方式添加产品、添加设备,但这次要使用HTTP的方式。

除了要选择HTTP,其它内容没什么变化,这里就不再浪费时间了。

接下来是具体的操作流程,简单来说,过程分四步:

1、对URL链接进行解析

链接上面说了,格式如下:

http://api.heclouds.com/devices/535407318/datapoints

其中的535407318是我的设备ID。解析函数和第15节一样,使用的是:

代码语言:javascript
复制
http_parse_request_url( )
代码语言:javascript
复制

解析后,得到主机、端口、路径信息。

2、整理要上传的数据

前面说了,数据是以JSON格式上传的,为了方便演示,我这里只写一个简单的数据:

代码语言:javascript
复制
{
       "datastreams":[{
              "id": "temperature",
              "datapoints": [
              {
                     "value": %d
              }
              ]
       }
       ]
}
代码语言:javascript
复制

对上面的格式进行整理,得到C语言下的内容:

代码语言:javascript
复制
{\r\n\"datastreams\":[{\r\n\"id\": \"temperature\",\r\n\"datapoints\": [\r\n{\r\n\"value\": %d\r\n}\r\n]\r\n}\r\n]\r\n}
代码语言:javascript
复制
        3、整理要上传的POST信息

信息格式如下:

代码语言:javascript
复制
"POST " + filename+ " HTTP/1.1\r\n" +
   "Accept: */*\r\n" +
   "Content-Length:"+ %d+"\r\n"+                 //JSON数据长度   
   "Content-Type: application/json\r\n"+
   "Host: "+%s+"\r\n"+                           //主机名
    %s+"\r\n"+                                   //API_KEY
    "Connection: Keep-Alive\r\n\r\n"+
    %s                                           //第2步整理好的数据

这样看起来可能有点乱,建议大家在用的时候整理成宏定义的形式,直接调用,比较方便。

4、发送数据

这一步就比较简单了,在WIFI已经连接好的情况下,将第3步整理好的信息通过TCP的方式发出去。

程序修改完成,保存、清理、编译、下载一条龙,然后重新上电。这里借助串口助手来查看效果。效果如下所示:

如图所示,红色框住的信息是物联网平台返回的信息,0错误,说明发送成功。我这里一直在发送固定值50.我在程序里做了一个软件定时器,每隔10秒发送一次。

然后打开ONENET物联网平台,查看是否收到数据。在设备列表页面,点击“数据流”:

点开之后,效果如下:

如上所示,显示了上传的数据名称,最新的数据值,点击temperature右上角的省略号,可以看到数据值随时间变化的曲线:

如图,前面7月份的数据是我之前做测试的时候上传的值。这次的值都显示在2019年10月29日,伴随着上传的时间。

至此,TCP方式下的POST上传数据聊完了,感兴趣的可以下载源码试一下。

链接:

https://pan.baidu.com/s/1xIrRVN5eToR24vb4n65-yQ

提取码:m1cs

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单片机爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
物联网
腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档