设施基于HTTPS协定接入IoT平台
设施基于HTTPS协定接入IoT平台仅华东2反对官网文档 https://help.aliyun.com/document_detail/58034.html
1.设施身份认证:通过三元组获取token
HTTPS服务器地址为 https://iot-as-http.cn-shanghai.aliyuncs.com/>
认证申请示例:
POST /auth HTTP/1.1Host: iot-as-http.cn-shanghai.aliyuncs.comContent-Type: application/jsonbody: { "version": "default", "clientId": "mylight1000002", "signmethod": "hmacsha1", "sign": "4870141D4067227128CBB4377906C3731CAC221C", "productKey": "ZG1EvTEa7NN", "deviceName": "NlwaSPXsCpTQuh8FxBGH", "timestamp": "1501668289957"}
返回示例:
{ "code": 0,//业务状态码 "message": "success",//业务信息 "info": { "token": "6944e5bfb92e4d4ea3918d1eda3942f6" }}
2.设施数据上报
HTTPS服务器地址为 https://iot-as-http.cn-shanghai.aliyuncs.com/topic/${topic}
申请示例:
POST /topic/a1GFjLP3xxC/device123/pubHost: iot-as-http.cn-shanghai.aliyuncs.compassword:${token}Content-Type: application/octet-streambody: ${your_data}
返回示例
{ "code": 0,//业务状态码 "message": "success",//业务信息 "info": { "messageId": 892687627916247040 }}
3.实战案例Nodejs版
3.1 创立高级版产品
3.2 性能定义
增加产品属性定义
3.3 设施治理>注册设施,取得身份三元组
3.4 设施模仿代码
var rp = require('request-promise');const crypto = require('crypto');const deviceConfig = { productKey: "替换productKey", deviceName: "替换deviceName", deviceSecret: "替换deviceSecret"}const topic = `/sys/${deviceConfig.productKey}/${deviceConfig.deviceName}/thing/event/property/post`;//1.获取身份tokenrp(getAuthOptions(deviceConfig)) .then(function(parsedBody) { console.log('Auth Info :'+JSON.stringify(parsedBody)) //2.公布物模型数据 pubData(topic, parsedBody.info.token, getPostData()) }) .catch(function(err) { console.log('Auth err :'+JSON.stringify(err)) });//生成Auth认证的参数function getAuthOptions(deviceConfig) { const params = { productKey: deviceConfig.productKey, deviceName: deviceConfig.deviceName, timestamp: Date.now(), clientId: Math.random().toString(36).substr(2), } //1.生成clientId,username,password var password = signHmacSha1(params, deviceConfig.deviceSecret); var options = { method: 'POST', uri: 'https://iot-as-http.cn-shanghai.aliyuncs.com/auth', body: { "version": "default", "clientId": params.clientId, "signmethod": "hmacsha1", "sign": password, "productKey": deviceConfig.productKey, "deviceName": deviceConfig.deviceName, "timestamp": params.timestamp }, json: true }; return options;}//publish Data to IoTfunction pubData(topic, token, data) { const options = { method: 'POST', uri: 'https://iot-as-http.cn-shanghai.aliyuncs.com/topic' + topic, body: data, headers: { password: token, 'Content-Type': 'application/octet-stream' } } rp(options) .then(function(parsedBody) { console.log('publish success :' + parsedBody) }) .catch(function(err) { console.log('publish err ' + JSON.stringify(err)) });}//模仿物模型数据function getPostData() { var payloadJson = { id: Date.now(), params: { humidity: Math.floor((Math.random() * 20) + 60), temperature: Math.floor((Math.random() * 20) + 10) }, method: "thing.event.property.post" } console.log("===postData\n topic=" + topic) console.log(payloadJson) return JSON.stringify(payloadJson);}//HmacSha1 signfunction signHmacSha1(params, deviceSecret) { let keys = Object.keys(params).sort(); // 按字典序排序 keys = keys.sort(); const list = []; keys.map((key) => { list.push(`${key}${params[key]}`); }); const contentStr = list.join(''); return crypto.createHmac('sha1', deviceSecret).update(contentStr).digest('hex');}
3.5 运行成果
物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn
阿里云物联网平台客户交换群