Los subdispositivos se pueden conectar o desconectar de forma individual o por lotes. Antes de conectar un subdispositivo, debe registrarlo en IoT Platform para establecer una relación topológica entre el subdispositivo y el gateway. Cuando el subdispositivo se conecta, IoT Platform verifica su identidad mediante la relación topológica para determinar si tiene acceso al gateway.
Solo se pueden entregar mensajes con calidad de servicio (QoS) 0 entre los subdispositivos e IoT Platform.
Un gateway no puede tener más de 2,000 subdispositivos conectados a IoT Platform. Si se alcanza este límite, IoT Platform rechaza todas las solicitudes de conexión posteriores.
El número máximo de subdispositivos que se pueden conectar o desconectar en un solo lote es de 50.
Si una solicitud para conectar o desconectar varios subdispositivos se ejecuta correctamente, todos los subdispositivos se conectan o desconectan según lo esperado. Si la solicitud falla, ninguno de los subdispositivos logra conectarse o desconectarse, y el parámetro de respuesta data contiene la información del dispositivo.
Conexión de un subdispositivo a IoT Platform
Datos ascendentes:
Tema de solicitud:
/ext/session/${productKey}/${deviceName}/combine/loginTema de respuesta:
/ext/session/${productKey}/${deviceName}/combine/login_reply
Los subdispositivos utilizan el gateway para comunicarse con IoT Platform. Los temas anteriores corresponden al gateway. Reemplace las variables
${productKey}
y
${deviceName}
en los temas con la información del gateway.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"params": {
"productKey": "al12345****",
"deviceName": "device1234",
"clientId": "al12345****&device1234",
"timestamp": "1581417203000",
"signMethod": "hmacmd5",
"sign": "9B9C732412A4F84B981E1AB97CAB****",
"cleanSession": "true"
}
}
Reemplace los valores de los parámetros
productKey
y
deviceName
en el cuerpo del mensaje con la información correspondiente del subdispositivo.
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
params |
Object |
Parámetros de la solicitud. Para obtener más información, consulte la siguiente tabla de params. |
| Parámetro | Tipo | Descripción |
| deviceName | String | Nombre del subdispositivo. |
| productKey | String | Clave del producto al que pertenece el subdispositivo. |
| sign | String | Firma del subdispositivo. El procedimiento de firma del subdispositivo es idéntico al de un dispositivo conectado directamente. Procedimiento:
Ejemplo de cálculo del valor del parámetro sign: |
| signMethod | String | Algoritmo de firma. Valores válidos: hmacSha1, hmacSha256, hmacMd5 y Sha256. |
| timestamp | String | Marca de tiempo en milisegundos. |
| clientId | String | Identificador del dispositivo. Puede establecer este parámetro con un valor que combine la clave del producto y el nombre del dispositivo mediante la siguiente sintaxis: productKey&deviceName. |
| cleanSession | String |
|
Ejemplo de respuesta en formato Alink JSON:
{
"id":"123",
"code":200,
"message":"success"
"data":{
"deviceName": "device1234",
"productKey": "al12345****"
}
}
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
code |
Integer |
Código de estado. El valor 200 indica que la solicitud se ejecutó correctamente. |
|
message |
String |
Mensaje de respuesta. |
|
data |
Object |
Información del subdispositivo que se devuelve independientemente de si la solicitud se ejecuta correctamente o falla. Para obtener más información, consulte la siguiente tabla de data. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Mensajes de error:
|
Código de error |
Mensaje de error |
Observaciones |
|
460 |
request parameter error |
Se devuelve porque los parámetros de la solicitud no son válidos. |
|
429 |
rate limit, too many subDeviceOnline msg in one minute |
Se devuelve porque el dispositivo superó el límite de solicitudes de autenticación permitidas. El dispositivo ha sido limitado. |
|
428 |
too many subdevices under gateway |
Se devuelve porque se excedió el límite de subdispositivos conectados. |
|
6401 |
topo relation not exist |
Se devuelve porque no existen relaciones topológicas entre el gateway y el subdispositivo. |
|
6100 |
device not found |
Se devuelve porque el subdispositivo no existe. |
|
521 |
device deleted |
Se devuelve porque el subdispositivo fue eliminado. |
|
522 |
device forbidden |
Se devuelve porque el subdispositivo está deshabilitado. |
|
6287 |
invalid sign |
Se devuelve porque la contraseña o la firma del subdispositivo no es válida. |
Conexión de subdispositivos en lotes
Puede conectar un máximo de 50 subdispositivos a IoT Platform simultáneamente.
Datos ascendentes:
Tema de solicitud:
/ext/session/${productKey}/${deviceName}/combine/loginTema de respuesta:
/ext/session/${productKey}/${deviceName}/combine/batch_login_reply
Los subdispositivos utilizan el gateway para comunicarse con IoT Platform. Los temas anteriores corresponden al gateway. Reemplace las variables
${productKey}
y
${deviceName}
en los temas con la información del gateway.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"params":{
"deviceList":[{
"productKey": "al12345****",
"deviceName": "device1234",
"clientId": "al12345****&device1234",
"timestamp": "1581417203000",
"cleanSession": "false",
"signMethod": "hmacmd5",
"sign": "9B9C732412A4F84B981E1AB97CAB****",
}, {
"productKey": "al12345****",
"deviceName": "device4321",
"clientId": "al12345****&device4321",
"timestamp": "1581417203000",
"cleanSession": "true",
"signMethod": "hmacmd5",
"sign": "9B9C732412A4F84B981E1AB97CAB****",
}]
}
}
Reemplace los valores de los parámetros
productKey
y
deviceName
en el cuerpo del mensaje con la información correspondiente del subdispositivo.
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
params |
Object |
Parámetros de la solicitud. El parámetro deviceList incluye los parámetros obligatorios para autenticar los subdispositivos que desea conectar. Para obtener más información, consulte la siguiente tabla de deviceList. |
Ejemplo de respuesta en formato Alink JSON:
{
"id":"123",
"code":"200",
"message":"success",
"data":[{
"productKey": "al12345****",
"deviceName": "device1234"
},{
"deviceName": "device4321",
"productKey": "al12345****"
}]
}
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
code |
Integer |
Código de estado. El valor 200 indica que la solicitud se ejecutó correctamente. |
|
message |
String |
Mensaje de respuesta. |
|
data |
Object |
Información del subdispositivo que se devuelve independientemente de si la solicitud se ejecuta correctamente o falla. Para obtener más información, consulte la siguiente tabla de data. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Mensajes de error:
|
Código de error |
Mensaje de error |
Observaciones |
|
460 |
request parameter error |
Se devuelve porque los parámetros de la solicitud no son válidos. |
|
429 |
rate limit, too many subDeviceOnline msg in one minute |
Se devuelve porque el dispositivo superó el límite de solicitudes de autenticación permitidas. El dispositivo ha sido limitado. |
|
428 |
too many subdevices under gateway |
Se devuelve porque se excedió el límite de subdispositivos conectados. |
|
6401 |
topo relation not exist |
Se devuelve porque no existen relaciones topológicas entre el gateway y el subdispositivo. |
|
6100 |
device not found |
Se devuelve porque el subdispositivo no existe. |
|
521 |
device deleted |
Se devuelve porque el subdispositivo fue eliminado. |
|
522 |
device forbidden |
Se devuelve porque el subdispositivo está deshabilitado. |
|
6287 |
invalid sign |
Se devuelve porque la contraseña o la firma del subdispositivo no es válida. |
Desconexión de un subdispositivo de IoT Platform
Datos ascendentes:
Tema de solicitud:
/ext/session/${productKey}/${deviceName}/combine/logoutTema de respuesta:
/ext/session/${productKey}/${deviceName}/combine/logout_reply
Los subdispositivos utilizan el gateway para comunicarse con IoT Platform. Los temas anteriores corresponden al gateway. Reemplace las variables
${productKey}
y
${deviceName}
en los temas con la información del gateway.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"params": {
"productKey": "al12345****",
"deviceName": "device1234"
}
}
Reemplace los valores de los parámetros
productKey
y
deviceName
en el cuerpo del mensaje con la información correspondiente del subdispositivo.
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
params |
Object |
Parámetros de la solicitud. Estos parámetros especifican la información del subdispositivo que desea desconectar. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Ejemplo de respuesta en formato Alink JSON:
{
"id": "123",
"code": 200,
"message": "success",
"data": {
"deviceName": "device1234",
"productKey": "al12345****"
}
}
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
code |
Integer |
Código de estado. El valor 200 indica que la solicitud se ejecutó correctamente. |
|
message |
String |
Mensaje de respuesta. |
|
data |
Object |
Información del subdispositivo que se devuelve independientemente de si la solicitud se ejecuta correctamente o falla. Para obtener más información, consulte la siguiente tabla de data. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Mensajes de error:
|
Código de error |
Mensaje de error |
Observaciones |
|
460 |
request parameter error |
Se devuelve porque los parámetros de la solicitud no son válidos. |
|
520 |
device no session |
Se devuelve porque la sesión del subdispositivo no existe. |
Desconexión de varios subdispositivos en lotes
Puede desconectar un máximo de 50 subdispositivos de IoT Platform simultáneamente.
Datos ascendentes:
Tema de solicitud:
/ext/session/${productKey}/${deviceName}/combine/batch_logoutTema de respuesta:
/ext/session/${productKey}/${deviceName}/combine/batch_logout_reply
Los subdispositivos utilizan el gateway para comunicarse con IoT Platform. Los temas anteriores corresponden al gateway. Reemplace las variables
${productKey}
y
${deviceName}
en los temas con la información del gateway.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"params":[{
"productKey": "al12345****",
"deviceName": "device1234"
},{
"productKey": "al12345****",
"deviceName": "device4321"
}]
}
Reemplace los valores de los parámetros
productKey
y
deviceName
en el cuerpo del mensaje con la información correspondiente del subdispositivo.
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
params |
Object |
Parámetros de la solicitud. Estos parámetros especifican la información del subdispositivo que desea desconectar. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Ejemplo de respuesta en formato Alink JSON:
{
"id":"123",
"code":"200",
"message":"success",
"data":[{
"productKey": "al12345****"
"deviceName": "device1234"
},{
"deviceName": "device4321",
"productKey": "al12345****"
}]
}
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Valores válidos: de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo. |
|
code |
Integer |
Código de estado. El valor 200 indica que la solicitud se ejecutó correctamente. |
|
message |
String |
Mensaje de respuesta. |
|
data |
Object |
Información del subdispositivo que se devuelve independientemente de si la solicitud se ejecuta correctamente o falla. Para obtener más información, consulte la siguiente tabla de data. |
|
Parámetro |
Tipo |
Descripción |
|
deviceName |
String |
Nombre del subdispositivo. |
|
productKey |
String |
Clave del producto al que pertenece el subdispositivo. |
Mensajes de error:
|
Código de error |
Mensaje de error |
Descripción |
|
460 |
request parameter error |
Se devuelve porque los parámetros de la solicitud no son válidos. |
|
520 |
device no session |
Se devuelve porque la sesión del subdispositivo no existe. |
Referencias
Para obtener más información sobre cómo conectar subdispositivos a IoT Platform, consulte Device registration.
Para obtener más información sobre códigos de error y soluciones, consulte Error codes received by devices.