中国移动OneNet平台上传GPS数据JSON格式
最终目的输出
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格式的更多相关文章
- 将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table
将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table xxx 新年新气象,果然在新年的第一天就遇到了一个大坑,项目在win上跑的没 ...
- GPS数据包格式及数据包解析
GPS数据包解析 GPS数据包解析 目的 GPS数据类型及格式 数据格式 数据解释 解析代码 结构体定义 GPRMC解析函数 GPGGA解析函数 测试样例输出 gps数据包格式 gps数据解析 车联网 ...
- Highmaps的天津地图数据JSON格式
Highmaps的天津地图数据JSON格式 Highmaps的天津地图数据JSON格式 下载链接: http://pan.baidu.com/s/1eQgxECU password: tjmj 天津地 ...
- python 把数据 json格式输出
有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u ...
- 轻量级交互数据json格式初探
[w3cschool tydef]什么是 JSON ?JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本数据交换格式JS ...
- 接口返回数据Json格式处理
有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计 ,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下 ...
- Unity 数据Json格式的转换
把对象转换为字节序列的过程称为对象的序列化. 把字节序列化恢复为对象过程称为对象的反序列化. JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用.但是我并没有深入 ...
- 技巧-如何通过hive开发平台上传csv文件
通过数据交换平台上传较大的文件时,经常会出现导入失败情况,换种方式通过新数据开发平台(stark)也可以轻松实现外部数据与hive的数据关联. --第一步.导入csv文件到hive --stark数据 ...
- Vue使用axios请求数据,默认post请求传参是json格式,但后台需要formData格式???
最简单的方式,post请求参数json转formData…代码如下: 使用node的 qs 模块(推荐使用) 就是这么简单,在结合element ui表单一键提交涉及到,希望遇到的同学少走弯路,加油~
随机推荐
- Layer 初始
Layer 初始 介绍:很不错的一个弹出框解决方案 丰富多样的Web弹出层组件,可轻松实现Alert/Confirm/Prompt/普通提示/页面区块/iframe/tips等等几乎所有的弹出交互.目 ...
- 使用UI Automation实现自动化测试--2
1. 首先建立一个待测试的winform程序,即UI Automation的服务端. 下面是button事件处理程序. private void CalculateButton_Click(objec ...
- 再议urlconnection和socket区别
利用URL进行通信与利用socket进行通信有许多相似之处.它们都是利用建立连接.获取流来进行通信.那么,它们的区别在何处呢? 利用socket进行通信时,在服务器端运行一个socket通信程序 ...
- Socket协议通讯
Socket协议通讯 服务器端代码: using System; using System.Collections.Generic; using System.ComponentModel; us ...
- Android事件的分发
1 http://blog.csdn.net/guolin_blog/article/details/9097463 2
- C#中执行存储过程并在SQL server中调试
1.编写存储过程 ) drop PROCEDURE [dbo].[sp_calcPci_of_baseRcd_GTmpTbl] CREATE PROCEDURE [dbo].[sp_calcPci_o ...
- hibernate双向一对多映射
双向多对一 :Customer类------------>一的一端 Order类----------->多的一端 Customer类:(省略set().get()和构造方法) priv ...
- k8s调度-指定node
1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...
- keil中使用Astyle格式化你的代码的方法2篇合
关于Astyle Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进.格式化.美化.Home Page ...
- Cocos2d-x 3.2 之 别踩白块(第三篇)
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...