找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6251|回复: 1
收起左侧

arduino JSON库和httppacket库分享

[复制链接]
ID:404913 发表于 2018-10-2 18:51 | 显示全部楼层 |阅读模式
好多人找的arduinojson库和httppacket库文件包:
0.png

HTTP数据封装Ardiuno SDK说明文档

RestfulAPI包括资源的增、删、改、查四类操作,其中删、查操作不带HTTP内容,只有HTTP报头。增、改操作有HTTP报头,后面带有JSON格式HTTP内容。报头数据URL带有可选参数,都是以“?”开始,以“&”分隔。下列操作的HTTP报文,红色代表有URL可选参数。

HTTP报由报头和HTTP内容组成。HTTP内容是JSON格式字符串,可以通过ArdiunoJSON库实现HTTP内容的封装,本文档主要说明HTTP包头封装的封装方法和接口实现。

1.报文总结
1.1 查询操作
//查看用户
GET /user HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查询设备
GET /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

GET /devices HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查看数据流
GET /devices/<devices_id>/datastreams/<datastream_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

GET /devices/<devices_id>/datastreams?datastream_ids=temp,gps HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查看数据点
GET /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查看触发器
GET /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查看API权限
GET /keys HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//查看二进制数据
GET /bindata/<index> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//RestAPI日志查询
GET /logs/<device_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//历史数据查询
GET /datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

1.2 新增操作
//新增设备
POST /devices HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//新增数据流
POST /devices/<devices_id>/datastreams HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//新增数据点
POST /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//新增触发器
POST /triggers HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//新增API权限
POST /keys HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

///新增二进制数据
POST /bindata HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}


1.3 更新操作
//更新设备
PUT /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//更新数据流
PUT /devices/<devices_id>/datastreams/<datastream_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//更新触发器
PUT /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//更新API权限
PUT /keys/<key_string> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

//发送数据到edp设备
POST /cmds/<device_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
Content-Length: ***\r\n
\r\n
{"JASON"}

1.4 删除操作
//删除设备
DELETE /devices/<devices_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//删除数据流
DELETE /devices/<devices_id>/datastreams/<datastream_id>  HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//删除数据点
DELETE /devices/<devices_id>/datapoints HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//删除触发器
DELETE /triggers/<trigger_id> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//删除API权限
DELETE /keys/<key_string> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n

//删除二进制数据
DELETE /bindata/<index> HTTP/1.1\r\n
api-key:<your_api_key>\r\n
Host:api.heclouds.com\r\n
\r\n


2SDK对外接口说明

/**********************************************************************
*  功能描述: 设置http包头主机地址字符串
*  @param param1   char* hostAddr  服务器地址字符串指针

*  @return void

**********************************************************************/
void HttpPacketHead::setHostAddress(char* hostAddr)

/**********************************************************************
*  功能描述: 更新单个URL参数
*  @param param1   char* key      参数名字字符串指针
*  @param param2   char* value    参数的值字符串指针

*  @return void

**********************************************************************/
void HttpPacketHead::updateUrlParameterWith(char* key, char* value)

/**********************************************************************
*  功能描述: 清除所有之前设置的URL参数
*  @param void

*  @return void

**********************************************************************/
void HttpPacketHead::clearUrlParameter(void)

/**********************************************************************
*  功能描述:删除一个之前已经存在的URL参数,如果没有这
*                        个参数 不做任何操作
*  @param char* key   参数名称

*  @return void

**********************************************************************/
void HttpPacketHead::removeUrlParameter(char* key)

/**********************************************************************
*  功能描述:添加一个url 参数http包中,如果存在该参数,
*                       不做任何操作.
*  @param1 char* key       参数名称
*  @param2 char* value     参数值

*  @return  void

**********************************************************************/
void HttpPacketHead::addUrlParameter(char* key, char* value)

/**********************************************************************
*  功能描述:设置http包中要要访问的设备id
*  @param1 char* Dev_Id       设备ID 字符串

*  @return  void

**********************************************************************/
void HttpPacketHead::setDevId(char* Dev_Id)

/**********************************************************************
*  功能描述:设置http包中要要访问的数据流ID
*  @param1 char* StreamId      数据流ID 字符串

*  @return  void

**********************************************************************/
void HttpPacketHead::setDataStreamId(char* StreamId)

/**********************************************************************
*  功能描述:设置http包中要要访问的触发器ID
*  @param1 char* TrigId      触发器ID 字符串

*  @return  void

**********************************************************************/
void HttpPacketHead::setTriggerId(char* TrigId)

/**********************************************************************
*  功能描述:设置http包中要要访问的bin文件索引
*  @param1 char* Idx    文件索引

*  @return  void

**********************************************************************/
void HttpPacketHead::setBinIdx(char* Idx)

/**********************************************************************
*  功能描述:添加一个API key,只有在API 更新操作中才会设置.
*  @param1 char* key    key字符串

*  @return  void

**********************************************************************/
void HttpPacketHead::addAPIKey(char* key)

/**********************************************************************
*  功能描述:设置访问设备所需的密钥.
*  @param1 char* key    key字符串

*  @return  void

**********************************************************************/
void HttpPacketHead::setAccessKey(char* key)

/**********************************************************************
*  功能描述:产生http 数据报头,仅限POST、PUT操作
*  @param1 OPS_TYPE     operType          操作类型
*  @param2 RESRC_TYPE  type                资源类型
*  @param3 char* jsonData            http内容json结构

*  @return  RET_ERR      产生数据包失败,可能因为参数传入不当

              RET_OK     产生数据包成功

**********************************************************************/
intHttpPacketHead::createCmdPacket(OPS_TYPE operType, RESRC_TYPE type, char* jsonData)


/**********************************************************************

int HttpPacketHead::createCmdPacket(OPS_TYPE operType, RESRC_TYPEtype)

*  功能描述:产生http 数据报头,仅限DELETE、GET操作
*  @param1 OPS_TYPE     operType          操作类型
*  @param2 RESRC_TYPE  type                资源类型

*  @return  RET_ERR      产生数据包失败,可能因为参数传入不当

              RET_OK      产生数据包成功
**********************************************************************/

3.资源类型说明
    TYPE_USER                       用户
    TYPE_DEV                  设备
    TYPE_DATASTREAM                 数据流
    TYPE_DATAPOINT                    数据点
    TYPE_TRIGGER                     触发器
    TYPE_APIKEY                      API-KEY
    TYPE_BINDATA                     二进制数据
    TYPE_APILOG              API日志  
    TYPE_HISTORYDATA             历史数据

4. 操作类型说明
POST                                 新增
    PUT                                        更新
    GET                                       查询
    DELETE                               删除

5. 约束限制
1)一个HTTP报报头最大不能超过300字节;
2)一个HTTPURL可选参数个数不超过7个;
3)一个HTTP报所有URL参数字符串总长度不超过150字节。

6. 编程举例
Ardiuno代码段:

  HttpPacketHead packet;

packet.setHostAddress("api.heclouds.com");//设置主机地址

packet.setDevId("70290");//设置设备ID

packet.setAccessKey("<Your access api-key>");//设置访问密钥

packet.addUrlParameter("datastream_ids", "temp");//添加URL参数

packet.addUrlParameter("datastream_ids", "gps");//添加URL参数

packet.createCmdPacket(GET, TYPE_DATASTREAM);//产生查询数据流的报头

  Serial.print(packet.content);


输出为:
GET /devices/70290/datastreams/?datastream_ids=temp,gps HTTP/1.1
api-key:<Your access api-key>
Host:api.heclouds.com
具体使用方法请参照示例程序。

全部资料51hei下载地址:
ArdiunoHttpSDK.rar (1.12 MB, 下载次数: 95)
回复

使用道具 举报

ID:139761 发表于 2019-2-6 17:00 | 显示全部楼层
感谢感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表