Cloud Of Things API
本页面为设计初稿
目录 |
1 User ID
是一个 UUID 字符串,用于用户身份的验证和识别,唯一,可重新生成(未来应默认使用 https)
一个用户下可有多个设备,每个设备下可有多个传感器(感知端)和控制器(控制端)。传感器和控制器可以被多个设备使用。一个设备相当于一个感知端、控制端以及控制策略(触发器,类似 IF-THEN)的集合
设备、感知端、控制端 之间的关系为松耦合,即:一个设备可以只有一个感知端(只作数据呈现),或者只有一个控制端(只接受控制指令);一个感知端可用于多个设备,一个控制端也可为多个设备所用;
因此,设备是上接用户 (UI) 下承硬件交互的桥梁
简单如一个体重监测设备,可作为只有一个传感器的设备
一个家庭灯光设备,可以有多个环境光强传感器,声控传感器(亦可作为其他设备的输入,比如窗帘控制设备),甚至手势传感器,控制器则对应各房间灯的开关
对于一个家庭成员追踪设备,则各人智能手机为感知端(定时上传 GPS/GSM 数据),加一些虚拟控制器,比如 weibo 推发器
2 Devices
2.1 创建设备
URL | http://api.easyhomelink.org/v1/devices |
Formats | JSON |
Methods | POST |
Returns | 设备 ID |
例子:
data.txt:
POST /v1/devices HTTP/1.1 Accept: */* x-key: YOUR_X-KEY Content-Length: 177 Content-Type: text/html { "name":"Home Enviroment", "description":"Home", "tags":["temperature","Home"], "location":{ "local":"Nanjing", "latitude":24.123, "longitude":34.456 } }
cat data.txt | netcat api.easyhomelink.org 80
返回数据 (JSON):
{ "DEV_ID": 2 }
2.2 查看设备
URL | http://api.easyhomelink.org/v1/device/DEV_ID |
Formats | JSON |
Methods | GET |
Returns | 设备信息 |
例子:
curl --request GET --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/DEV_ID
返回 JSON 格式数据:
{ "name":"Home Enviroment", "description":"Home", "tags":["temperature","Home"], "location":{ "local":"Nanjing", "latitude":24.123, "longitude":34.456 } }
2.3 编辑设备
URL | http://api.easyhomelink.org/v1/device/DEV_ID |
Formats | JSON |
Methods | PUT |
Returns | 无 |
例子:
curl --request PUT --data-binary @data.txt --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/DEV_ID
data.txt (JSON):
{ "name":"Home Enviroment", "description":"Home", "tags":["temperature","Home"], "location":{ "local":"Nanjing", "latitude":32.071852, "longitude":118.793551, } }
2.4 删除设备
URL | http://api.easyhomelink.org/v1/device/DEV_ID |
Formats | JSON |
Methods | DELETE |
Returns | 无 |
例子:
curl --request DELETE --data-binary @data.txt --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/DEV_ID
2.5 罗列设备
罗列 UID 用户的所有设备
URL | http://api.easyhomelink.org/v1/devices |
Formats | JSON |
Methods | PUT |
Returns | 当前用户的所有设备概要描述 |
例子:
curl --request GET --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/devices
返回 JSON 格式数据:
[ { "id": 1, "name": "Home", "about": "Home enviroment" }, { "id": 2, "name": "Outdoor", "about": "Outdoor enviroment" } ]
3 Sensors
3.1 Create
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensors |
Formats | JSON |
Methods | POST |
Returns | Sensor ID |
例子:
curl --request POST --data-binary @data.txt --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/5/sensors
POST 的数据存放于文件 data.txt 中:
{ "name":"datastream", "tags":["tag1","tag2"], "unit": { "name": "humidity", "symbol": "%" } }
这是一个常见的通用型数据流型传感器,比如 温度传感器、湿度传感器、PM2.5 传感器、煤气浓度传感器、门磁传感器 ...
现在硬件集成度很高,一个芯片带多个传感器的模块很多,比如现在温度和湿度常常在一个模块上,我们建议对这样一个模块 Create 两个 Sensor,因为其随时间有两个数据流
返回值:
{ "id": 1 }
3.2 View
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID |
Formats | JSON |
Methods | GET |
Returns | 设备信息 |
例子:
curl --request GET --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/5/sensor/1
返回值:
{ "name":"datastream", "tags":["tag1","tag2"], "unit": { "name": "humidity", "symbol": "%" } }
3.3 Update
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID |
Formats | JSON |
Methods | PUT |
Returns | 无 |
例子:
curl --request PUT --data-binary @data.txt --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/5/sensor/1
上传的数据位于文件 data.txt:
{ "name":"datastream", "tags":["living room"], "unit": { "name": "humidity", "symbol": "%" } }
3.4 Delete
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID |
Formats | JSON |
Methods | DELETE |
Returns | 无 |
例子:
curl --request DELETE --header "UID: YOUR_UUID" http://api.easyhomelink.org/v1/device/5/sensor/1
4 Datapoints
对应一个特定的传感器,属传感器的数据
4.1 Create
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensors/SEN_ID/datapoints |
Formats | JSON |
Methods | POST |
Returns | 无 |
例子:
data.txt
POST /v1/device/1/sensor/1/datapoints HTTP/1.1 Accept: */* x-key: asdf1234 Content-Length: 15 Content-Type: text/html {"value":17.2}
或者 data.txt
POST /v1/device/1/sensor/1/datapoints HTTP/1.1 Accept: */* x-key: asdf1234 Content-Length: 49 Content-Type: text/html {"timestamp":"2013-01-09T13:23:20", "value":17.2}
cat req.txt | nc easyhomelink.org 3000
系统支持数值型传感器和地理位置型传感器(GPS、北斗、伽利略、GLONASS等导航系统终端模块):
数值型传感器 data.txt 格式如下: { "timestamp":"2012-03-15T16:13:14", "value":294.34 } 地理位置型传感器 data.txt 格式如下: { "timestamp":"2012-03-15T16:13:14", "value":{"lat":40.0207,"lng":115.2614,"alt":2000} }
一个设备的所有传感器数据批量上传:
POST /v1/device/1/datapoints HTTP/1.1 Accept: */* x-key: asdf1234 Content-Length: 125 Content-Type: text/html [{"sensor_id":1,"value":17.2},{"sensor_id":2,"value":{"lat":40.0207,"lng":115.2614,"alt":2000},{"sensor_id":3,"value":19.2}]
4.2 View
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID/datapoint/KEY |
Formats | JSON |
Methods | GET |
Returns | 设备信息 |
返回传感器的最新数据:
data.txt (最后一行是空行)
GET /v1/device/1/sensor/1/datapoint HTTP 1.1 Accept: */* x-key: asdf1234 Content-Length: 0 Content-Type: text/html
cat data.txt | netcat easyhomelink.org 3000
curl --request GET --header "x-key: YOUR_UUID" http://api.easyhomelink.org/v1/device/1/sensor/1/datapoint
返回传感器的所有数据:
data.txt
GET /v1/device/1/sensor/1/datapoints HTTP/1.1 Accept: */* x-chart: 1 x-key: asdf1234 Content-Length: 0 Content-Type: text/html
curl --request GET --header "x-key: YOUR_UUID" http://api.easyhomelink.org/v1/device/1/sensor/1/datapoints
返回传感器 20120712T11:30:20 时的数据:
curl --request GET --header "x-key: YOUR_UUID" http://api.easyhomelink.org/v1/device/1/sensor/1/datapoint/20120712T11:30:20
4.3 Update
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID/datapoint/KEY |
Formats | JSON |
Methods | PUT |
Returns | 无 |
4.4 Delete
URL | http://api.easyhomelink.org/v1/device/DEV_ID/sensor/SEN_ID/datapoint/KEY |
Formats | 无 |
Methods | DELETE |
Returns | 无 |
5 Controllers
控制器没有数据流,只有状态,可用一个整数描述
对于常用的家用灯光开关,1 表示开,0 表示关
对于一个室内用于浇花的水泵,1 为运行,0 为停止
对于一个电动的窗帘,可用 0 - 10 表示开启的大小
5.1 Create
URL | http://api.easyhomelink.org/v1/device/DEV_ID/controllers |
Formats | JSON |
Methods | POST |
Returns | 无 |
5.2 View
URL | http://api.easyhomelink.org/v1/device/DEV_ID/controller/CRTL_ID |
Formats | JSON |
Methods | GET |
Returns | 设备信息 |
6 Users
6.1 Create
{ "username":"login2", "password":"abc123_md5sum", "email":"api@jackslab.org" }
6.2 Edit
6.3 View
6.4 Delete