Connect Sub-devices to EnOS™ Cloud


Upstream

  • Request TOPIC: /ext/session/{productKey}/{deviceKey}/combine/login
  • Reply TOPIC: /ext/session/{productKey}/{deviceKey}/combine/login_reply

Sample Request Format

{
    "id": "123",
    "params": {
        "productKey": "yourProductKey",
        "deviceKey": "yourDeviceKey",
        "clientId": "theSubDeviceId",
        "timestamp": "1524448722000",
        "signMethod": "hmacmd5",
        "sign": "theSignature",
        "cleanSession": "true"
    },
    "method":"combine.login"
}

Sample Response Format

{
  "id":"123",
  "code":200,
  "message":"success",
  "data": {
    "assetId": "t5CM9W2b",
    "productKey": "123",
    "deviceKey": "test"
  }
}

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 Map Mandatory The parameters used for connecting 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
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.
signmethod String Mandatory The signing method. The supported method is hmacSha1.
timestamp String Mandatory The timestamp.
clientId String Mandatory The identifier of the sub-device. The value can be its productKey or deviceName.
cleanSession String Mandatory Supported value: True. Offline information (information that has not been received by QoS 1) will be cleared for all sub-devices.


To generate sign, you need to use every key-value pair in the params parameter except sign and signmethod. The steps are as follows.

  1. Concatenate every key-value pair except sign and signmethod in alphabetical order in the form of “key+value”“key+value”“key+value”.

    For example, a concatenated string as follows should be generated from the previous request based on the request’s params: clientIdtheSubDeviceIddeviceKeyyourDeviceKeyproductKeyyourProductKeytimestamp1524448722000

  2. Add the device’s device secret to the end of the concatenated string from the previous step. Use the algorithm specified by signmethod to calculate the string that includes the device secret. Capitalize all letters in the result to get the sign.

    For example, if the device secret is xyz123, the value forsign can be generated using the below:

    sign=uppercase(hmacsha1(clientIdtheSubDeviceIddeviceKeyyourDeviceKeyproductKeyyourProductKeytimestamp1524448722000xyz123))


Response Parameter Description

:widths: auto :header-rows: 1
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 Optional The detailed returned information in JSON format.

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.