智能家居云平台API设计文档

智能家居云平台API文档

更新日期:2014-06-01

基本说明

1、所有对用户的信息、设备、传感器、数据点的操作都需要验证APIKEY,请在HTTP请求(http
request)的头部(header)添加APIKEY字段,并附加相应地值。

如:Apikey:
1a39ad4c87ba09ef861ead97f010df7b

2、接口的URL由HOST和URI共同组成。其中URL,Universal Resource Location,统一资源定位符;URI,Universal Resource Identifier,统一资源标识符;HOST,服务器IP地址+端口号。

URI与URL的区别:

URI用于标记资源;

URL提供了找到该资源的方法,且包含了URI,可以说URL=HOST+URI;

在HTTP请求中,是没有URL的,只有URI和HOST,其中URI包含在请求的第一行。

3、云平台测试服务器地址与账号:

云平台服务器地址(HOST):218.244.138.146:8000

云平台测试用账号及密码:linpcloud + 1234

4、请求成功与失败的标识:以HTTP响应码来标识请求成功与失败;以200为成功的标识,400为云平台系统的错误标识,其它错误参考HTTP协议;返回信息以及错误提示信息均以JSON格式传回,置于info键下。

5、HTTP响应:正常的系统输出和系统已捕捉的错误,都是以JSON格式字符串返回,即:Content-Type: application/json

服务器(Apache或Nginx)与编程环境(PHP)的错误,根据环境的配置返回响应的数据,这是云平台系统以外的错误,不会以JSON格式返回错误信息。客户端应根据响应的HTTP相应码给出响应的错误信息。

API接口及说明

一、用户类

1、  用户登录

使用用户名和密码进行登录,登录成功返回用户ID和APIKEY,用于后续操作。

请求

方法:POST

URI:/api/login

参数:


参数名


必需


类型


说明


username


true


string


用户名


password


true


string


用户密码

请求正文示例:

username=<username>&password=<password>

响应

返回值:关键的用户信息

参数:


参数名


类型


说明


userid


string


用户ID


username


string


用户名


apikey


string


用户授权APIKEY

响应正文实例:

{

"info":
"Login Success",

"userid":
"10000",

"username":
"linpcloud",

"apikey":
"1a39ad4c87ba09ef861ead97f010df7b"

}

2、  获取用户信息

获取个人用户信息。

请求

方法:GET

URI:/api/user

参数:无

响应

返回值:JSON格式的用户信息

参数:


参数名


类型


说明


id


int


用户ID


username


string


用户名


password


string


加密后的密码


email


string


Email


apikey


string


APIKEY


regtime


int


用户注册时间戳


about


string


用户的描述信息

响应正文实例:

{

"id":
"10000",

"username":
"linpcloud",

"password":
"81dc9bdb52d04dc20036dbd8313ed055",

"email":
"[email protected]",

"token":
"1234567890",

"token_exptime": "0",

"status":
"1",

"regtime":
"0",

"apikey":
"1a39ad4c87ba09ef861ead97f010df7b",

"about":
"linpcloud test user"

}

3、  修改用户信息

4、  获取APIKEY

5、  更换APIKEY

二、设备类

1、  创建设备

根据所填信息,创建一个新的设备。

请求

方法:POST

URI:/api/devices

参数:


参数名


必需


类型


说明


name


true


string


设备名称


tags


string


设备标签,建议以逗号间隔


about


string


设备描述


locate


string


设备位置,格式待定

请求正文示例:

name=device_instance&tags=tags_instance&locate=Wuhan&about=This+is+a+example+device

响应

返回值:新创建的设备的ID

参数:


参数名


类型


说明


device_id


int


新创建的设备的ID

响应正文示例:

{

"device_id":
10007

}

2、  获取设备列表

获取该用户下所有的设备信息。

请求

方法:GET

URI:/api/devices

参数:无

响应

返回值:JSON对象数组

参数:

响应正文示例:

[

{

"id": "10006",

"name": "device from Postman",

"tags": "any tags?",

"about": "This is a device created by Postman",

"locate": "Wuhan",

"user_id": "10000",

"create_time": "1399717930",

"update_time": "1399717930",

"status": "1"

},

{

"id": "10007",

"name": "示例设备",

"tags": "示例标签",

"about": "这是示例设备",

"locate": "武汉",

"user_id": "10000",

"create_time": "1399738659",

"update_time": "1399738659",

"status": "1"

}

]

3、  获取设备信息

获取某个具体设备的详细信息。

请求

方法:GET

URI:/api/device/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


设备ID

响应

返回值:JSON格式的设备信息

参数:


参数名


类型


说明


id


int


设备的ID


name


string


设备名称


tags


string


设备标签


about


string


设备描述


locate


string


设备位置


user_id


int


设备所属用户的ID,不可更改


create_time


timestamp


创建时间


update_time


timestamp


更新时间,待定


status


int


用于标记删除状态的字段,1表示正常,0表示已删除;一般而言,status为0时,查看不到它的信息

返回正文示例:

{

"id":
"10007",

"name": "示例设备",

"tags": "示例标签",

"about":
"这是示例设备",

"locate":
"武汉",

"user_id":
"10000",

"create_time":
"1399738659",

"update_time":
"1399738659",

"status":
"1"

}

4、  修改设备信息

先获取设备信息,再进行少量修改。

请求

方法:PUT

URI:/api/device/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


设备ID,置于URI中


name


true


string


设备名称


tags


string


设备标签,建议以逗号间隔


about


string


设备描述


locate


string


设备位置,格式待定

响应

返回值:修改成功或失败的信息

响应示例:

{

"info":
"update info success"

}

5、  删除设备

删除某个具体设备。

请求

方法:DELETE

URI:/api/device/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


设备ID,附在URI中

响应

返回值:成功或失败的信息

响应示例:

{

"info":
"delete success",

"device_id":
"10007"

}

三、传感器类

1、  添加传感器

根据所填信息,创建一个新的传感器。

请求

方法:POST

URI:/api/sensors

参数:


参数名


必需


类型


说明


name


true


string


名称


type


true


int


传感器所属类型的ID


tags


string


标签,建议以逗号间隔


about


string


描述


device_id


true


int


所创建的传感器将属于的设备

响应

返回值:新创建的传感器的ID

参数:


参数名


类型


说明


sensor_id


int


新创建的传感器的ID

响应正文示例:

{

"sensor_id":
10004

}

2、  获取传感器列表

获取某个设备下所属的所有传感器的信息,返回一个JSON对象数组。

请求

方法:GET

URI:/api/sensors/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


需要列出传感器的设备ID,附在URI中

响应

参数:见获取传感器信息

响应正文示例:

[

{

"id": "100004",

"name": "传感器实例",

"type": "1",

"tags": "标签",

"about": "这是一个示例",

"device_id": "10007",

"last_update": "1399740484",

"last_data": null,

"status": "1"

}

]

3、  获取传感器信息

获取某个指定的传感器的信息,后续可用于修改信息。

请求

方法:GET

URI:/api/sensor/<sensor_id>

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要查看的传感器ID,附在URI中

响应

返回值:JSON格式的对象,内容为传感器的信息

参数:


参数名


类型


说明


id


int


传感器的ID


name


string


传感器名称


type


int


传感器类型的ID


tags


string


传感器标签


about


string


设备描述


device_id


int


所属设备的ID,不可更改


last_update


timestamp


上次数据更新时间


last_data


string


json格式组织的上次数据


status


int


用于标记删除状态的字段,1表示正常,0表示已删除;一般而言,status为0时,查看不到它的信息

响应实例:

{

"id":
"100004",

"name": "传感器实例",

"type":
"1",

"tags": "标签",

"about":
"这是一个示例",

"device_id":
"10007",

"last_update":
"1399740484",

"last_data":
null,

"status":
"1"

}

4、  修改传感器信息

先获取传感器信息,再修改其基础的信息,如同类型以及所属设备这样的字段一般是不允许更改的。

请求

方法:PUT

URI:/api/sensor/<sensor_id>

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要查看的传感器ID,附在URI中


name


true


string


type


true


int


device_id


true


int


必须附在表单中,但不要更改它


tags


string


about


string

响应

返回值:成功或失败的信息

响应实例:

{

"info":
"sensor `100004` update success"

}

5、  删除传感器

删除某个具体的传感器,(或许会添加回收功能)

请求

方法:DELETE

URI:/api/sensor/<sensor_id>

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要查看的传感器ID,附在URI中

响应

返回值:删除成功或失败的信息

响应实例:

{

"info":
"delete sensor `100004` success"

}

四、数据点类

1、  上传数据

为指定的传感器创建一个数据点(上传一个数据)。

请求

方法:POST

URI:/api/datapoint

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要创建数据的传感器ID


value


true


string


携带数值的字符串

响应

返回值:添加成功或失败的信息

响应实例:

{

"info":
"create datapoint success",

"datapoint_id": 1044

}

2、  获取数据

获取某个传感器的最新数据(last_data)。

请求

方法:GET

URI:/api/datapoint/<sensor_id>

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要获取数据的传感器ID

响应

返回值:传感器最新数据

响应实例:

{

"sensor_id":
"100005",

"timestamp":
"1401553001",

"value":
"123456"

}

3、  批量上传数据(适用于网关)

批量上传某个设备下传感器的数据,并激活该设备(设置设备的最后活动时间,通过判断这个值来确定设备是否在线)。

请求

方法:POST

URI:/api/datapoints/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


需要激活的设备


json


true


JSON ARRAY


使用JSON组织的对象数组,每个对象都包含传感器ID和其数据

请求示例:json=[{"sensor_id":100005,"value":"000000"}]

urlencode之后:json=%5B%7B%22sensor_id%22%3A100005%2C%22value%22%3A%22000000%22%7D%5D

响应

返回值:添加成功或失败的信息

响应实例:

{

"info":
"Datapoint created success"

}

4、批量获取数据(设计用于控制终端)

用于获取某个设备下所有传感器的最新数据。

请求

方法:GET

URI:/api/datapoints/device/<device_id>

参数:


参数名


必需


类型


说明


device_id


true


int


需要激活的设备

响应

返回值:JSON格式的对象数组,数组每一项包含一个传感器的最新数据。

响应实例:

[

{

"id": "100005",

"last_update": "1401553452",

"last_data": "000000"

},

{

"id": "100006",

"last_update": "1400502382",

"last_data": "30%"

},

{

"id": "100007",

"last_update": "1400502382",

"last_data": "1"

},

{

"id": "100009",

"last_update": "1400595887",

"last_data": "hello world"

}

]

5、获取历史数据

用于获取某个传感器的历史数据。

请求

方法:GET

URI:/api/datapoints/sensor/<sensor_id>

参数:


参数名


必需


类型


说明


sensor_id


true


int


需要获取历史数据的传感器


URL参数(GET参数)


start


option


int


开始时间(时间戳)


end


option


int


结束时间


interval


option


int


数据时间间隔

所有参数在不设置时,云平台会使用默认值:开始时间为现在时间的一小时前,结束时间为当前的时间,时间间隔为30s。

请求URL示例:/api/datapoints/sensor/100005?start=12345&interval=60

响应

返回值:JSON格式的对象数组,数组每一项包含传感器的一个数据点。

响应实例:

[

{

"id": "1020",

"sensor_id": "100005",

"timestamp": "1399906997",

"value": "66ffcc"

},

{

"id": "1035",

"sensor_id": "100005",

"timestamp": "1400502382",

"value": "ffffff"

},

{

"id": "1045",

"sensor_id": "100005",

"timestamp": "1401553452",

"value": "000000"

}

]

五、辅助类

1、  获取MD5

获取一个字符串的MD5值。

请求

方法:GET

URI:/helper/md5/<string>

参数:


参数名


必需


类型


说明


string


true


string


需要获取MD5的字符串

2、  获取SHA1

使用参考“获取MD5”,返回制定字符串的SHA1值。

方法:GET

URI:/helper/sha1/<string>

3、  获取当前时间戳

获取当前时间的时间戳。

请求

方法:GET

URI:/helper/timestamp

来自为知笔记(Wiz)

附件列表

时间: 2024-10-27 10:01:01

智能家居云平台API设计文档的相关文章

java智能四子棋人机大战游戏设计(附项目,以及原创PSD,设计文档)

本项目是使用java技术+自创"假设下子"算法开发的人机大战四子棋游戏客户端. 具体项目,以及原创PSD,设计文档,在文件末尾的百度云连接. 一. 小组说明: 组名:CST 组长:陈飞良(C): 组员: 沈珂 (S): 谭明航 (T): 二.分工说明: ①算法思想上: 本程序的代码实现思想由三人共同讨论得出,其中组员沈珂的"假设下子"思想尤为精妙,让代码实现更为简单,在这基础上,组员谭明航 ,心思缜密,考虑到各种特殊情况,让整个更加智能.组长陈飞良则负责在他们的基础

API的文档自动生成——基于CDIF的SOA基本能力

当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST API开放出来,给更广泛的第三方开发者使用. 但是,管理REST API并非是一件容易的工作.由于缺乏有效的接口数据schema约束,加上设计REST API时resource endpoint的安排,以及发送http请求的方式又都五花八门,REST API开发完成后,大多数情况下API开发者仍然

【转载】基于Docker的CaaS容器云平台架构设计及市场分析

[转自]http://www.cnblogs.com/darkprince/p/5115739.html 基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将

【原创】基于Docker的CaaS容器云平台架构设计及市场分析

基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将对接各类代码托管库,实现自动化持续集成和DOCKER镜像构建,为新一代应用交付和开发运维一体化奠定了基础.

Storm项目:流数据监控1《设计文档…

该文档为实实在在的原创文档,转载请注明作者及出处. 类型 详细 备注 2 该文档为原创模拟项目:流数据监控<1>文档<流数据监控设计文档>,相继会给出流数据监控<2>文档<流数据监控代码解析>及其他文档 2  该部分有源码(熬夜写出来的哦) CSDN中相应项目CODE链接:戳这里     相关描述 2  有任何其他想法,可以邮件[email protected] 2 文档及相关资料下载请到个人360云盘http://yunpan.cn/QGf2GDaRFpc

构建标准OpenStack API接口文档

1.构建API接口文档标准参考: http://docs.openstack.org/contributor-guide/api-guides.html 2.构建API接口文档步骤参考下面的Patch: https://review.openstack.org/#/c/361791/ https://review.openstack.org/#/c/305870/ https://review.openstack.org/#/c/305973/ 3.创建API接口文档的CI已经如何发布到Open

什么是功能需求设计文档

在很多软件公司,特别是一些创业型的团队中,对于这样的情景可能大家都很熟悉:项目经理或者产品经理(产品狗)口头或者简单记录一下软件产品的大致要做的功能,直接就让研发团队的兄弟(程序猿)去狂撸代码.然后他就去喝茶撩妹或者回家陪老婆了... 这种撸起袖子就开干的方式,看似简单高效,便于直接沟通,能够快速迭代.却不知,发现没有一份正规且实时更新的功能需求设计文档,会付出三四倍的代价来弥补. 最终会引发一场产品狗和程序猿之间的"猿狗大战"... WHY - 为什么需要功能需求设计说明书 在没有功

定向数据爬虫和搜索引擎(Directional Spider)设计文档

  定向数据网络爬虫和搜索引擎项目设计 (新闻数据抓取.分析.加工.检索) 版本号:            v 1.0.0 编写人:          张  文  豪 日  期:       2014年6月10日 文档说明:这个文档还在编写之中,文章中很多写在“保留”二字的不是每月东西,而是没有写.虽然没有具体实现,但是我觉得我把我的经验和思考都写进去了.虽然对于读者来说这个文档相当粗糙,但是是我一个很看重的东西.如果真的有人愿意认真阅读这篇文章,我会很开心和大家交流探讨,欢迎留言和联系我. [

撰写架构设计文档的心得体会

1.架构设计文档阅读对象: 是软件工程师,平台产品经理,不是乙方客户: 2.架构设计文档目的与意义: a.系统规划: b.有利于软件工程师的开展工作: c.便于分配工作,指导工作: 3.不在于篇幅,注重干货: 4.系统思维,全面思考,注重规划,关注设计,考虑细节,不局限细节,来解决实际问题: 如软件注册问题,涉及到用户安全.角色.权限.口令加密,验证码的问题. 5.平台总体架构不要照搬照抄的现有系统,分析现有系统的利弊,扬长避短,少走弯路,多走捷径,注重系统的可扩展,可伸缩,未来3-5年扩容与发