The IoT platform supports HTTPS access from a device only in China (Shanghai). For more information on the access flow for communication using HTTP connections refer to this document.
To begin with, view the HTTPS server endpoint.
Consider the following sample authentication request.
POST /auth HTTP/1.1
Host: iot-as-http.cn-shanghai.aliyuncs.com
Content-Type: application/json
body: {
"version": "default",
"clientId": "mylight1000002",
"signmethod": "hmacsha1",
"sign": "4870141D4067227128CBB4377906C3731CAC221C",
"productKey": "ZG1EvTEa7NN",
"deviceName": "NlwaSPXsCpTQuh8FxBGH",
"timestamp": "1501668289957"
}
The following snippet shows the sample response.
{
"code": 0,//业务状态码
"message": "success",//业务信息
"info": {
"token": "6944e5bfb92e4d4ea3918d1eda3942f6"
}
}
The HTTPS server endpoint is at https://iot-as-http.cn-shanghai.aliyuncs.com/topic/${topic}
.
Consider the following sample request.
POST /topic/a1GFjLP3xxC/device123/pub
Host: iot-as-http.cn-shanghai.aliyuncs.com
password:${token}
Content-Type: application/octet-stream
body: ${your_data}
The preceding sample request shows the following response.
{
"code": 0,//业务状态码
"message": "success",//业务信息
"info": {
"messageId": 892687627916247040
}
}
Let's take a quick look at the case study for Node.js. The following sections describe the various steps.
Refer to the following snapshot to create an advanced product.
Next, add product property definitions as listed in the following table.
Property | Identifier | Data type | Valid value |
---|---|---|---|
Temperature | temperature | FLOAT | -50 to 100 |
Humidity | humidity | FLOAT | 0 to 100 |
Obtain identity trituple information on the device page post registering a device as shown below.
Now, execute the following device simulation code.
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.获取身份token
rp(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 IoT
function 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 sign
function 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');
}
Once the preceding code successfully executes, navigate to the following screen to finally view the results.
Usage Tips for the IoT Platform: Retrieving Device Status by Calling API Operations
Using Service Subscription (HTTP/2) to Retrieve Device Status
Alibaba Cloud Indonesia - August 15, 2023
Alibaba Clouder - September 18, 2019
Alibaba Clouder - November 7, 2018
PM - C2C_Yuan - September 10, 2021
GXIC - June 11, 2019
GXIC - February 20, 2020
Provides secure and reliable communication between devices and the IoT Platform which allows you to manage a large number of devices on a single IoT Platform.
Learn MoreA cloud solution for smart technology providers to quickly build stable, cost-efficient, and reliable ubiquitous platforms
Learn MoreMigrate your Internet Data Center’s (IDC) Internet gateway to the cloud securely through Alibaba Cloud’s high-quality Internet bandwidth and premium Mainland China route.
Learn MoreMore Posts by GXIC