onenet是中移动物联网公司面向大众免费提供的物联网平台。简单点说就是一个存放、展示数据的服务器。
百度搜索onenet,进入之后在上方标题栏找到开发文档链接,进入之后可以看到各种说明。
onenet支持http等多种协议,甚至为用户开发了基于TCP/TP协议的EDP协议。
本文以http协议为例介绍如何上传数据并在手机查看。
首先,注册账号,注册页面是这样的
注册完成后在onenet主页右上角找到开发者中心,点击进入,然后找到创建产品。
按提示创建完后要创建设备、创建APIkey,创建APIkey时要关联前面创建的设备。
ps:(不要用我的产品信息)
然后在左侧找到数据流模板,像添加设备一样添加数据流,数据流名称要简介,不要太长。
完成之后在设备管理这里你可以找到你的设备,设备信息旁边有一个数据展示,点进去可以看到你的数据,因为还没上传,没有数据是理所当然的事。
接下来,我们应该要上传数据了,这里使用PC机的网络调试助手上传数据。
这里,我们要记住一些必要的信息:
这是一段http报文
“`
POST /devices/6523751/datapoints?type=3 HTTP/1.1
api-key:4pjuTJRDF1jFiH5y6uj5zN7UKH4=
Host:api.heclouds.com
Content-Length:25
{“ADC_1”:10,”ADC_2”:20}
“`http协议有4种数据交互方式,post正如字面意思,英语不好,。。。
—–首先, 第一行中的/devices/6523751/ 6523751是设备ID。api-key:后面跟着的正是前面所创建设备之后创建的APIkey(不是项目key,是设备key)。
Content-Length:25
25是下面这行{“ADC_1”:10,”ADC_2”:20}的长度
实际上最后一行只看到23个字符,然而我们习惯在}后面添加回车换行符,回车换行符\r\n是两个字符,所以是25.Content-Length:25与{“ADC_1”:10,”ADC_2”:20}之间有一空行,千万不要忘了。
最后,最重要的一行{“ADC_1”:10,”ADC_2”:20}
这是json数据,其中“ADC_1”中的ADC_1正是我的数据流,在这里,你要替换成你的数据流。
冒号后面的10是我的数据,这里你要替换成你的数据。
json规定两个json数据之间用逗号分隔,显然“ADC_2”是我的第二个数据流,这里同时上传两个数据是没问题的。如果你只有一个数据流的话,可以是这种形式{“ADC_1”:10} ,要记住,更改了{}里面的内容一定要重新计算数据长度,出错了就傻逼了。
废话不多说,下面演示使用PC机的网络调试助手进行调试。
我的网络调试助手是这样的
左边的是串口助手,右边的是网络调试助手。
1.按照我的设置选择TCP client 要向服务器传数据 这是理所当然的 是必须的
2.根据onenet公开协议接入指南,http接入要连接到183.230.40.34:80
按照我的设置,点击connect之后,可以连接上服务器了
先别急着连接到服务器,这里应该先用记事本把要上传的那段http报文替换信息,将我的报文变成你的报文。
假定我的传感器探测到我写下这句话时,ADC_1 = 15 ADC_2 = 60,替换掉相关的信息之后,点击connect
应该会看到这里
172.28.81.145是我的IP地址,东莞理工学院8B117的一台傻逼电脑。
51848是我的端口号。
这两项会跟你的不一样,不用担心。连接之后先将原来默认的发送信息删掉,再发送你的报文。如果一切没问题的话,你会看到这样的。
下面的窗口是我发送过去的信息,排版问题不要在意,只要确保你的报文在记事本里面是这样一个排版
不该换行的地方千万不要换行,数据有效长度后面一定跟着一个空行。
是不是真的上传成功了呢?进入onenet,找到数据展示,我的是这样的
仔细点找到ADC_1和ADC_2 是不是最新数据是 15和60了呢?
最后,再给大家一些建议,http报文时非常复杂的,真的要想不出错的话,你应该去看看这个协议。
json是js的一种数据交互格式,用于http服务器与客户端之间通信。当然,其他地方也可以用。如果你想真正做好一个产品,你应该去简单了解json。
仅仅上传数据是不够的,如果你想要获取数据,应该怎么办?前面提到http协议有4种数据交互方式,POST是其中一种,还有一种叫GET。等有空的时候我会写如何用GET获取一段json数据。