应用开发API 入口:
https://openapi.heclouds.com/common?action=具体接口名称&version=1
第一部分 应用开发流程及项目分组
一. 应用开发流程
https://open.iot.10086.cn/doc/iot_platform/book/application-develop/application-process.html

1. 创建项目

2. 进入项目添加设备

3. 调用API
本篇文章的主题
4. 数据流转
此项内容会单独写一篇文章
二. 项目分组
1. 分组
项目中,我们可以创建分组,这样是的设备被分组管理,方便区分业务权限, 非常推荐使用


分完组后可以添加设备

我们看到有分组ID和分组key

想到第一篇中的设备鉴权描述, 确实是可以以项目/分组进行鉴权的

这样我们可以做到 客户1用自己的鉴权管理自己的设备的效果.
2. 分组鉴权的Token计算
根据文档, 我修改了这个程序,实测可用
import base64
import hmac
import time
from urllib.parse import quote
def token(projectid,groupid,access_key):
version = '2020-05-29'
res1 = 'projectid/%s' % projectid
res2 = '/groupid/%s' % groupid
res = res1+res2
# 用户自定义token过期时间
et = str(int(time.time()) + 3600*24*365)
# 签名方法,支持md5、sha1、sha256
method = 'sha1'
# 对access_key进行decode
key = base64.b64decode(access_key)
# 计算sign
org = et + '\n' + method + '\n' + res + '\n' + version
sign_b = hmac.new(key=key, msg=org.encode(), digestmod=method)
sign = base64.b64encode(sign_b.digest()).decode()
# value 部分进行url编码,method/res/version值较为简单无需编码
sign = quote(sign, safe='')
res = quote(res, safe='')
# token参数拼接
token = 'version=%s&res=%s&et=%s&method=%s&sign=%s' % (version, res, et, method, sign)
return token
if __name__ == '__main__':
projectid = 'Sd5MPm'
groupid = 'HkhwSb'
access_key = 'MjE5OWIwYzJmZGU5ZDVmMjY1NTQyNmY4ZjM5M2ZjMjY='
print(token(projectid,groupid,access_key))
while(1):
pass
第二部分 项目相关API
一. 项目概况
https://open.iot.10086.cn/doc/iot_platform/book/api/application/queryStatistics.html

这是一个GET请求 参数是项目ID

返回结果:

二. 项目集成产品列表
https://open.iot.10086.cn/doc/iot_platform/book/api/application/queryProductList.html

这是一个GET请求 参数是项目ID
返回如下, 说明我们这个项目里只有1类产品

三. 项目集成设备列表
https://open.iot.10086.cn/doc/iot_platform/book/api/application/queryDeviceList.html

参数可限定查询的范围, 根据自己的需求选择

结果:
{
"data": {
"list": [
{
"created_time": "2020-10-19T03:59:05.365Z",
"device_name": "esp_mqtts_003",
"from": 1,
"last_time": null,
"node_type": 1,
"product_id": "IaiJ9078ZN",
"product_name": "esp_mqtts_test",
"status": 1
},
{
"created_time": "2020-10-19T03:43:14.953Z",
"device_nam