onenet数据流模板_如何向onenet上上传数据

onenet快速入门

初次使用onenet云端设备的同志肯定会觉得有些陌生,虽然作为“物联网”的弄潮儿,网络让我们拉近彼此,有时候却会让人感觉咫尺天涯。接下来我就将自己的学习过程与大家分享分享。

## 学习思维分析 ##

1)首先你的明确onnet云端在网络中定位,onenet是一个开放性的云端服务器,初学者可以利用其开放特性,自己注册一个账户,这样你就拥有了属于自己的开发者中心,在中心按照引导进行虚拟设备创建,数据流创建,触发器创建等基本创建。你可能会问,创建这些有什么作用呢?

1.1虚拟设备创建:

顾名思义,你可以创建一个自己需要的虚拟设备,系统会自动的为你的设备分配对应的设备id,连接设备的APIKey,这相当于客户端上传数据的钥匙。而ip地址就相当于大门。

1.2数据流模板创建:

数据流模板的创建是为你客户端上传数据点或者数据流准备的,这样就相当于有一个指定的数据名字,如温度,湿度,一般是是英文的,这样你在客户端就可以向指定的数据流模板进行数据上传。

1.3触发器创建:

触发器创建可以实现对上传数据的实时监控,开发者可以自己定义在触发器中的触发条件,我就是使用邮箱进行触发事件的接收的。

2)接下来就是客户端,也是开发者耗时最长的。因为onene支持多种的通信协议,我使用的是最常见的TCP通信协议,这就需要开发者自行编辑基于TCP 通信协议的客户端编程,也称socket编程,完成有效的客户端编程是连接云端服务器的第一步,这儿思路如下

2.1 首先进行socket部分程序的编写,实现与云端IP端口的连接,这儿牵扯到云端数据上传与下载的报文格式,也就是说开发者需要按照指定格式向云端传输报文,云端会自动的解析开发者上传的数据,格式正确就会可以顺利的完成数据的上传和下载。

上传报文格式:

POST /devices/12**047/datap**? HTTP/1.1

api-key: LAMC73uDUm=bK4Wrcrk****a4=

Host:api.heclouds.com

connection: close

Content-Length:66

{"datastreams":[{"id":"temperature","datap**":[{"value":0}]}]}

1

2

3

4

5

6

7

下载报文格式:

HTTP/1.1 200 OK"

Date: Mon, 02 Oct 2017 08:37:47 GMT"

Content-Type: applicati**on"

Content-Length: 603"

Connection: close"

Server: Apache-Coyote/1.1"

Pragma: no-cache"

1

2

3

4

5

6

7

注意:onenet支持数据上传格式为JSON数据格式 ,下载到的也是JSON格式的数据。这儿牵扯到JSON基本格式的学习,初学者不必纠结于原理,可以先运用最简单的单数据点上传,熟悉了之后可以学习JSON数据库进行多数据上传。

2.2编写socket应注意阅读服务器端的返回消息,返回消息可以直观的反应数据上传的失败与成功。程序需包含必要的容错处理,打印连接信息等,这样有利于快速发现错误,及时修正。初次连接的开发者大多数出出现的错误有

这是我 数据获取成功服务器返回的数据:

HTTP/1.1 200 OK

Date: Sun, 01 Oct 2017 14:07:12 GMT

Content-Type: applicati**on

Content-Length: 267

Connection: close

Server: Apache-Coyote/1.1

Pragma: no-cache

{"errno":0,"data":{"count":2,"datastreams":[{"datap**":[{"at":"2017-10-01 21:33:56.682","value":0}],"id":"temperature"},{"datap**":[{"at":"2017-09-14 20:20:31.099","value":[{"datap**":[{"value":0}],"id":"temperature"}]}],"id":"datastreams"}]},"error":"succ"}

1

2

3

4

5

6

7

8

9

数据上传成功服务器返回的数据:

HTTP/1.1 200 OK

Date: Sun, 01 Oct 2017 13:33:55 GMT

Content-Type: applicati**on

Content-Length: 26

Connection: close

Server: Apache-Coyote/1.1

Pragma: no-cache

{"errno":0,"error":"succ"}

1

2

3

4

5

6

7

8

9

10

(1)上传数据的报文报头格式错误,服务器无法准确的解析

解决办法:开发者可以对比onenet官方的指定文档报文格式,注意自己设备ARKey和设备ID的不同

(2)上传数据点的格式错误,或者content-length(json数据串的字符个数)的数据不对

解决办法:初学者可以使用开发文档给定的进行测试,长度就不会存在问题,在熟悉之后可以使用strlen函数进行准确的字符串长度设定。这牵扯到多数据点上传,这儿不在赘述。

(4)初学者首次进行JSON数据串的编写会发现按照常规的字符串编写格式系统会报错,JSON数据中会使用大量的双引号,如果编写过程不处理,系统就会自行优化,选择最前面的,从而后面的就会报错。

解决方法:如下代码编写加上反斜杠进行双引号的区分

char *Strcat(char *json,char *stream_id,float value){

char json1[25]={0};

strcat(json,"{\"datastreams\":[{");

sprintf(json1,"\"id\":\"%s\",",stream_id);

strcat(js**on1);

strcat(json,"\"datap**\":[");

strcat(json,"{");

sprintf(json1,"\"value\":%g",value);

strcat(js**on1);

strcat(json, "}]}]}");

strcat(json, "\r\n");

return json;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

详细的可以进一步参考onnnet连接详细介绍

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值