Connecting Sub-devices to EnOS Cloud in Batch¶
UpStream
Request TOPIC:
/ext/session/{productKey}/{deviceKey}/combine/login/batch
Reply TOPIC:
/ext/session/{productKey}/{deviceKey}/combine/login/batch_reply
Prerequisite¶
Create the sub-device instances on EnOS Cloud.
Add the instances as sub-devices to a gateway device instance.
Sample Request Format¶
{
"id":"1",
"params":{
"clientId":"Lx5Q1X6M",
"subDevices":[
{
"sign":"c14fc21231e6c44849683ccfb7a2089895a278b37a30c33ccb58d3b8690d16e1",
"deviceKey":"xGKFwfkEXz",
"productKey":"x4jwTsoz"
},
{
"sign":"1fbf0cd0903a9405d567fe5909a1aae75012df5465211db367c7666c0ae33bf2",
"deviceKey":"cS9MdVJwO9",
"productKey":"x4jwTsoz"
},
{
"sign":"480869163c85777c9fcb9fe53340fb13d38ef19e644df82927fcd2393b3819c4",
"deviceKey":"viWaBURIDm",
"productKey":"x4jwTsoz"
}
],
"signMethod":"sha256",
"timestamp":"1564988853275"
},
"version":"1.1",
"method":"combine.login.batch"
}
Sample Response Format¶
a) All sub-devices logged in successfully¶
{
"id":"1",
"code":200,
"data":{
"loginedSubDevices":[
{
"assetId":"LhBLfxpG",
"deviceKey":"cS9MdVJwO9",
"productKey":"x4jwTsoz"
},
{
"assetId":"kAHwVbyl",
"deviceKey":"viWaBURIDm",
"productKey":"x4jwTsoz"
},
{
"assetId":"AkHJvoqN",
"deviceKey":"xGKFwfkEXz",
"productKey":"x4jwTsoz"
}
],
"failedSubDevices":[]
},
"message":""
}
b) Some of the sub-devices failed to log in¶
{
"id":"1",
"code":723,
"data":{
"loginedSubDevices":[
{
"assetId":"LhBLfxpG",
"deviceKey":"cS9MdVJwO9",
"productKey":"x4jwTsoz"
},
{
"assetId":"kAHwVbyl",
"deviceKey":"viWaBURIDm",
"productKey":"x4jwTsoz"
}
],
"failedSubDevices":[
{
"deviceKey":"xGKFwfkEXz",
"productKey":"x4jwTsoz"
}
]
},
"message":"x4jwTsoz&xGKFwfkEXz has error: Device is disable;"
}
c) Invalid request format¶
{
"id":"1",
"code":1220,
"data":{
"loginedSubDevices":[],
"failedSubDevices":[]
},
"message":"payload format error, ..."
}
Handling the Response¶
When the return code code
is 723
, loggedinSubDevices
lists the sub-devices that successfully logged in and failedSubDevices
lists those that failed to log in.
When the code
is 1220
or if there is an internal server error, no sub-devices will be listed for loggedinSubDevices
and failedSubDevices
.
The following is a sample on how to handle a reply.
if (code == 200) {
// All sub-devices logged in successfully.
} else {
if (loginedSubDevices.isEmpty() && failedSubDevices.isEmpty()) {
// Invalid format or internal server error
} else {
if (loginedSubDevices.isNotEmpty()) {
// Sub-devices that logged in
}
if (failedSubDevices.isNotEmpty()) {
// Sub-devices that failed to log in
}
}
}
Request Parameter Description¶
Parameter |
Type |
Mandatory/Optional |
Description |
---|---|---|---|
id |
String |
Optional |
The message ID. It is a reserved parameter that is reserved for future use. |
params |
Struct |
Mandatory |
The parameters used for connecting the sub-device to EnOS Cloud. |
deviceKey |
String |
Mandatory |
The device key of the sub-device. |
productKey |
String |
Mandatory |
The product key of the sub-device. |
version |
String |
Mandatory |
The version No. |
method |
String |
Mandatory |
The request method. |
sign |
String |
Mandatory |
The signature of the sub-device. Sub-devices use the same signature rules as the gateway device. |
signmethod |
String |
Mandatory |
The signing method. The supported method is hmacSha1. |
timestamp |
String |
Mandatory |
The timestamp. |
clientId |
String |
Mandatory |
The identifier of the device. The value can be its productKey or deviceName. |
Response Parameter Description¶
Parameter |
Type |
Mandatory/Optional |
Description |
---|---|---|---|
message |
String |
Mandatory |
The response message. |
code |
Integer |
Mandatory |
The return code. “200” indicates that the request operation is executed successfully. |
data |
JSON |
Mandatory |
The detailed returned information in JSON format. |
loginedSubDevices |
Array |
Mandatory |
The devices that successfully logged in. |
failedSubDevices |
Array |
Mandatory |
The devices that failed to log in. |
Return Code¶
Return Code |
Error Message |
Explanation |
---|---|---|
705 |
Failed to query device, this device does not exist |
The sub-device does not exist. |
723 |
Device is disabled |
The sub-device is disabled. |
770 |
Dynamic activate is not allowed |
Dynamic activation is not allowed for this product. |
771 |
Sub device cannot connect to mqtt broker directly |
Sub-devices cannot be directly connected to EnOS Cloud. |
740 |
Sub device does not belong to the gateway |
The device is not a sub-device of this gateway. |
742 |
Sign check failed |
Hash signature verification failed. |
746 |
The device must login by ssl |
Certificate-based authentication is required for this product. |