最终目的输出

POST /devices/3225187/datapoints HTTP/1.1
api-key: R9xO5NZm6oVI4YBHvCPKEqtwYtMA
Host: api.heclouds.com
Content-Length:81 {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}

1. 使用arduino代码组合出来HTTP头

使用OneNet官方提供的Httppacket库

#include <HttpPacket.h>

HttpPacketHead packet;

void setup() {
// put your setup code here, to run once: Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
} // put your main code here, to run repeatedly:
// char *p = "{\"datastreams\":[{\"id\":\"sys_time\",\"datapoints\":[{\"value\":50}]}]}";
char *p = "{\"datastreams\":[{\"id\":\"location\",\"datapoints\":[{\"value\":{\"lon\":106,\"lat\":29}}]}]}"; packet.setHostAddress("api.heclouds.com");
packet.setDevId("3225187"); //device_id
packet.setAccessKey("R9xO5NZm6oVI4YBHvCPKEqtwYtMA"); //API_KEY
// packet.setDataStreamId("<datastream_id>"); //datastream_id
// packet.setTriggerId("<trigger_id>");
// packet.setBinIdx("<bin_index>"); /*create the http message about add datapoint */
packet.createCmdPacket(POST, TYPE_DATAPOINT, p);
if (strlen(packet.content))
Serial.print(packet.content);
Serial.print(p);
Serial.println("\n");
}

2.使用JSON库合成JSON数据

#include <ArduinoJson.h>

void setup() {
Serial.begin(9600); StaticJsonBuffer<200> jsonBuffer; JsonObject& lon_lat = jsonBuffer.createObject();
lon_lat["lon"] = 106;
lon_lat["lat"] = 29; JsonObject& value = jsonBuffer.createObject();
value["value"] = lon_lat; JsonObject& id_datapoints = jsonBuffer.createObject();
id_datapoints["id"] = "location";
JsonArray& datapoints = id_datapoints.createNestedArray("datapoints");
datapoints.add(value); JsonObject& myJson = jsonBuffer.createObject();
JsonArray& datastreams = myJson.createNestedArray("datastreams");
datastreams.add(id_datapoints); myJson.printTo(Serial);
Serial.print("\r\n\r\n"); //格式化输出
myJson.prettyPrintTo(Serial); char p[200];
Serial.print("\r\n---------\r\n");
int num = myJson.printTo(p,sizeof(p));
Serial.print(p);
Serial.print("\r\n============\r\n");
Serial.print(num); } void loop() {
// not used in this example
}

串口输出效果

{"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}

{
"datastreams": [
{
"id": "location",
"datapoints": [
{
"value": {
"lon": 106,
"lat": 29
}
}
]
}
]
}
---------
{"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}
============
81

3. 综合HTTP头和JSON输出需要的POST请求

#include <HttpPacket.h>
#include <ArduinoJson.h> HttpPacketHead packet; void setup() {
// put your setup code here, to run once: Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
} //合成POST请求
StaticJsonBuffer<200> jsonBuffer; JsonObject& lon_lat = jsonBuffer.createObject();
lon_lat["lon"] = 106;
lon_lat["lat"] = 29; JsonObject& value = jsonBuffer.createObject();
value["value"] = lon_lat; JsonObject& id_datapoints = jsonBuffer.createObject();
id_datapoints["id"] = "location";
JsonArray& datapoints = id_datapoints.createNestedArray("datapoints");
datapoints.add(value); JsonObject& myJson = jsonBuffer.createObject();
JsonArray& datastreams = myJson.createNestedArray("datastreams");
datastreams.add(id_datapoints); char p[200];
int num = myJson.printTo(p,sizeof(p)); packet.setHostAddress("api.heclouds.com");
packet.setDevId("3225187"); //device_id
packet.setAccessKey("R9xO5NZm6oVI4YBHvCPKEqtwYtMA"); //API_KEY
// packet.setDataStreamId("<datastream_id>"); //datastream_id
// packet.setTriggerId("<trigger_id>");
// packet.setBinIdx("<bin_index>"); /*create the http message about add datapoint */
packet.createCmdPacket(POST, TYPE_DATAPOINT, p);
if (strlen(packet.content))
Serial.print(packet.content);
Serial.print(p);

成功输出

POST /devices/3225187/datapoints HTTP/1.1
api-key: R9xO5NZm6oVI4YBHvCPKEqtwYtMA
Host: api.heclouds.com
Content-Length:81 {"datastreams":[{"id":"location","datapoints":[{"value":{"lon":106,"lat":29}}]}]}

中国移动OneNet平台上传GPS数据JSON格式的更多相关文章

  1. 将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table

    将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table xxx 新年新气象,果然在新年的第一天就遇到了一个大坑,项目在win上跑的没 ...

  2. GPS数据包格式及数据包解析

    GPS数据包解析 GPS数据包解析 目的 GPS数据类型及格式 数据格式 数据解释 解析代码 结构体定义 GPRMC解析函数 GPGGA解析函数 测试样例输出 gps数据包格式 gps数据解析 车联网 ...

  3. Highmaps的天津地图数据JSON格式

    Highmaps的天津地图数据JSON格式 Highmaps的天津地图数据JSON格式 下载链接: http://pan.baidu.com/s/1eQgxECU password: tjmj 天津地 ...

  4. python 把数据 json格式输出

    有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u ...

  5. 轻量级交互数据json格式初探

    [w3cschool tydef]什么是 JSON ?JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本数据交换格式JS ...

  6. 接口返回数据Json格式处理

    有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计 ,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下 ...

  7. Unity 数据Json格式的转换

    把对象转换为字节序列的过程称为对象的序列化. 把字节序列化恢复为对象过程称为对象的反序列化. JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用.但是我并没有深入 ...

  8. 技巧-如何通过hive开发平台上传csv文件

    通过数据交换平台上传较大的文件时,经常会出现导入失败情况,换种方式通过新数据开发平台(stark)也可以轻松实现外部数据与hive的数据关联. --第一步.导入csv文件到hive --stark数据 ...

  9. Vue使用axios请求数据,默认post请求传参是json格式,但后台需要formData格式???

    最简单的方式,post请求参数json转formData…代码如下: 使用node的 qs 模块(推荐使用) 就是这么简单,在结合element ui表单一键提交涉及到,希望遇到的同学少走弯路,加油~

随机推荐

  1. android实现免费短信验证

    代码地址如下:http://www.demodashi.com/demo/12541.html 前言 获取短信验证码的的第三方很多,今天介绍一个获取短信验证码的demo,它有以下优势 短信到达率几乎1 ...

  2. Atitit. 高级软件project师and 普通的差别 高级编程的门槛总结

    Atitit.  高级软件project师and 普通的差别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握经常使用的概念(ORM,IOC.AOP,eve ...

  3. jsp页面JSTL标签 <c:fn:>

    函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}&qu ...

  4. lua学习笔记(十二)

    弱引用table     lua使用自动内存管理机制,通过垃圾回收器来回收内存     垃圾回收器只能回收它认为是垃圾的内容,而不能回收用户认为是垃圾的内容     典型的例子栈,栈一般用一个数组和一 ...

  5. graph小案例

    (小案例,有五个人他们参见相亲节目,这个五个人分别是0,1,2,3,4,号选手,计算出追随者年龄大于被追随者年龄的人数和平均年龄) scala> import org.apache.spark. ...

  6. 从Java视角理解CPU缓存和伪共享

    转载自:http://ifeve.com/from-javaeye-cpu-cache/               http://ifeve.com/from-javaeye-false-shari ...

  7. Rocchio算法

    一.引子 查询扩展(Query Expansion)是信息检索领域的一个重要话题. 一方面.用户本身可能会出错,他会输入一些错别字,比方把"冯小刚",错写成"冯晓刚&qu ...

  8. NYOJ 613 免费馅饼

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  9. 4Sum_leetCode

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  10. ajaxFileUpload 实现多文件上传(源码)

    按照原ajaxFileUpload.js是不能多文件上传的.需要对源码进行修改:主要修改了fileElementId部分 具体参考 https://blog.csdn.net/itmyhome1990 ...