Después de definir un modelo TSL para un producto, los dispositivos deben usar el formato Alink JSON para reportar propiedades y eventos. El servidor también utiliza Alink JSON para establecer propiedades e invocar servicios. Si los dispositivos usan un formato personalizado, configure el análisis de datos para convertirlo.
Contexto
El formato de datos del modelo TSL (propiedades, eventos y servicios) se define en What is a TSL model?.
Un dispositivo reporta datos en el formato estándar Alink JSON (recomendado) o en un formato de paso directo/personalizado. Debe seleccionar uno de estos métodos.
Formato de datos estándar (Alink JSON): el dispositivo genera y reporta datos en el formato Alink JSON definido por IoT Platform. Consulte los ejemplos de formato en las secciones a continuación.
Paso directo/personalizado: el dispositivo reporta datos sin procesar, como una secuencia de datos binarios. Alibaba Cloud IoT Platform ejecuta el data parsing script que usted envió en la consola para convertir los datos sin procesar al formato de datos estándar antes de procesarlos. La nube devuelve los datos en el formato estándar Alink JSON. Después, se analiza sintácticamente la respuesta y se envía al dispositivo.

Cuando una propiedad del modelo TSL se define como float o double, el valor reportado debe incluir como mínimo un decimal (por ejemplo, 10.0 en lugar de 10).
Los dispositivos solo pueden reportar datos de propiedades y eventos con un valor time dentro de las siguientes 24 horas. Los reportes fuera de este rango fallan.
-
El identificador de mensaje (id) debe ser único por dispositivo y por día, tanto para mensajes de enlace ascendente como de enlace descendente.
Para los mensajes de enlace descendente, IoT Platform usa el id para vincular la respuesta del dispositivo con un mensaje asíncrono y garantizar su unicidad. Para los mensajes de enlace ascendente, el dispositivo debe asegurar que el id sea único.
Reporte de propiedades del dispositivo
El Diagram of device property reporting in the Alink protocol ilustra el flujo de reporte de propiedades.
Tema y formato de datos (mobile originated):
-
Pass-through/custom
Topic
Data format
Request topic:
/sys/${productKey}/${deviceName}/thing/model/up_rawThe request data is the raw message reported by the device.
Nota-
Data transmitted in pass-through mode over the Message Queuing Telemetry Transport (MQTT) protocol is in hexadecimal format.
-
The uploaded pass-through data must include the method parameter, whose value must match the corresponding request method defined in the data parsing script. For example, in the JavaScript script example, the value of
ALINK_PROP_REPORT_METHODisthing.event.property.postwhen a device uploads property data to the cloud.
Example:
0x00002233441232013fa00000Response topic:
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyThe cloud returns data in the following format:
-
Successful response example
{ "code": 200, "data": {}, "id": "123", "message": "success", "version": "1.0" } -
Failed response example
{ "code": 6813, "data": {}, "id": "123", "message": "topic illegal", "version": "1.0" }
-
-
Alink JSON
Topic
Data format
Request topic:
/sys/${productKey}/${deviceName}/thing/event/property/postRequest data format:
{ "id": "123", "version": "1.0", "sys":{ "ack":0 }, "params": { "Power": { "value": "on", "time": 1524448722000 }, "WF": { "value": 23.6, "time": 1524448722000 } }, "method": "thing.event.property.post" }Response topic:
/sys/${productKey}/${deviceName}/thing/event/property/post_replyThe cloud returns data in the following format:
-
Successful response example
{ "code": 200, "data": {}, "id": "123", "message": "success", "method": "thing.event.property.post", "version": "1.0" } -
Failed response example
{ "code": 6813, "data": {}, "id": "123", "message": "The format of result is error!", "method": "thing.event.property.post", "version": "1.0" }
-
Descripción de parámetros:
|
Parameter |
Type |
Description |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
sys |
Object |
Parámetros de funciones extendidas. Nota
Si utiliza un SDK del lado del dispositivo sin configurar las funciones extendidas, este parámetro se omite y se aplican los valores predeterminados. |
|
ack |
Integer |
Indica si la nube devuelve una respuesta. Campo ubicado dentro de sys.
Importante
Thing Specification Language model usage examples. Si no se configura, este parámetro se omite y se devuelve una respuesta de forma predeterminada. |
|
method |
String |
Método de solicitud. Por ejemplo: |
|
params |
Object |
Datos de la propiedad que se van a reportar. En este ejemplo, el dispositivo reporta las propiedades Power (fuente de alimentación) y WF (corriente de operación), cada una con un valor y una marca de tiempo opcional. Si solo pasa los valores de las propiedades, no necesita cargar los campos time y value. A continuación se muestra un ejemplo del parámetro params:
Si se trata de una propiedad de módulo personalizado, el formato del identificador es
|
|
time |
Long |
Marca de tiempo UNIX en la que se reporta la propiedad, expresada en milisegundos UTC. Opcional. Incluya una marca de tiempo cuando el orden de los mensajes sea importante.
|
|
value |
Object |
Valor de la propiedad reportada. Si no incluye time, puede omitir value y reportar directamente el valor del parámetro. |
|
Parameter |
Type |
Description |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. Nota
IoT Platform valida las propiedades reportadas con base en la definición TSL del producto. Las propiedades que no superan la validación se descartan y se devuelve un código de error. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de respuesta. Si la solicitud es exitosa, se devuelve |
|
method |
String |
Método de solicitud correspondiente a la respuesta. Es el mismo que el parámetro method de la solicitud. |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Las propiedades reportadas se pueden reenviar a su servidor o a otros productos de la nube mediante server-side subscription o data forwarding. Temas y formatos de datos: Device property reporting.
Configuración de propiedades del dispositivo
Invoque la operación de API SetDeviceProperty o SetDevicesProperty para enviar instrucciones a un dispositivo y establecer sus propiedades. Para comprender cómo configurar las propiedades del dispositivo, consulte Diagram of setting properties in the Alink protocol.
Una respuesta exitosa al establecer las propiedades del dispositivo solo indica que IoT Platform envió la solicitud, no que el dispositivo la haya ejecutado. Una vez que el SDK del dispositivo responde, este debe reportar los nuevos valores de las propiedades para confirmar el cambio. Consulte la sección "Reporte de propiedades del dispositivo" anterior.
Tema y formato de datos (mobile terminated):
|
Data format (mobile terminated) |
Request and response topics |
|
Pass-through/custom |
|
|
Alink JSON |
|
Formato de datos de la solicitud:
{
"id": "123",
"version": "1.0",
"params": {
"temperature": "30.5"
},
"method": "thing.service.property.set"
}
Formato de datos de la respuesta:
-
Ejemplo de respuesta exitosa
{ "code": 200, "data": {}, "id": "123", "message": "success", "version": "1.0" } -
Ejemplo de respuesta con errores
{ "code": 9201, "data": {}, "id": "123", "message": "device offLine", "version": "1.0" }
Descripción de parámetros:
|
Parameter |
Type |
Description |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
params |
Object |
Parámetros para establecer la propiedad. En el ejemplo, la propiedad se establece de la siguiente manera: Si se trata de una propiedad de módulo personalizado, el formato del identificador es |
|
method |
String |
Método de solicitud. Por ejemplo: |
|
Parameter |
Type |
Description |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de respuesta. Si la solicitud es exitosa, se devuelve |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los resultados de la configuración de propiedades se pueden reenviar a su servidor o a otros productos de la nube mediante server-side subscription o data forwarding. Temas y formatos de datos: Device mobile terminated instruction results.
El dispositivo reporta eventos
Diagram of device event reporting in the Alink protocol ilustra el flujo de reporte de eventos.
Topic y formato de datos (originados en el dispositivo):
-
Pass-through/custom
Topic
Formato de datos
Topic de solicitud:
/sys/${productKey}/${deviceName}/thing/model/up_rawLos datos de la solicitud corresponden al mensaje sin procesar que reporta el dispositivo.
NotaLos datos pass-through deben incluir el parámetro method. Su valor debe coincidir con el método de solicitud correspondiente definido en el script de análisis de datos. Por ejemplo, el valor puede ser
thing.event.${tsl.event.identifier}.post.Ejemplo:
0xff0000007b00Topic de respuesta:
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyLa nube devuelve los datos con a continuación formato:
-
Ejemplo de respuesta exitosa
{ "code": 200, "data": {}, "id": "123", "message": "success", "version": "1.0" } -
Ejemplo de respuesta con errores
{ "code": 6813, "data": {}, "id": "123", "message": "topic illegal", "version": "1.0" }
-
-
Alink JSON
Módulo del modelo TSL
Topic
Formato de datos
Módulo predeterminado
-
Topic de solicitud:
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post -
Topic de respuesta:
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply
Si se toma como ejemplo el módulo predeterminado del modelo TSL, el formato de datos de solicitud Alink es el siguiente:
{ "id": "123", "version": "1.0", "sys":{ "ack":0 }, "params": { "value": { "Power": "on", "WF": "2" }, "time": 1524448722000 }, "method": "thing.event.${tsl.event.identifier}.post" }Formato de datos de respuesta Alink:
{ "code": 200, "data": {}, "id": "123", "message": "success", "method": "thing.event.${tsl.event.identifier}.post", "version": "1.0" }Si la solicitud falla, se devuelve
{}.Módulo personalizado
-
Topic de solicitud:
/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:${tsl.event.identifier}/post -
Topic de respuesta:
/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:${tsl.event.identifier}/post_reply
-
Descripción de los parámetros:
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
sys |
Object |
Parámetros de funciones extendidas. Nota
Si utiliza un SDK del lado del dispositivo sin configurar las funciones extendidas, este parámetro se omite y se aplican los valores predeterminados. |
|
ack |
Integer |
Indica si la nube devuelve una respuesta. Es un campo dentro de sys.
Importante
Thing Specification Language model usage examples. Si no se configura, este parámetro se omite y se devuelve una respuesta de forma predeterminada. |
|
method |
String |
Método de la solicitud.
Nota
|
|
params |
Object |
Los parámetros de salida del evento reportado. |
|
value |
Object |
La información de los parámetros de salida del evento. El ejemplo muestra la información de dos parámetros: Power y WF (corriente de operación).
|
|
time |
Long |
Marca de tiempo UNIX en la que se reporta el evento, expresada en milisegundos UTC. Este campo es opcional. Decida si incluye una marca de tiempo según su escenario de negocio. Si los mensajes son frecuentes y necesita determinar su orden mediante marcas de tiempo, se recomienda incluirlas.
|
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. Nota
IoT Platform valida los eventos reportados con base en la definición TSL del producto. Los eventos que no superan la validación se descartan y se devuelve un código de error. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de respuesta. Si la solicitud es exitosa, se devuelve |
|
method |
String |
Método de solicitud que corresponde a la respuesta. Coincide con el parámetro method de la solicitud. |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Ejemplo de formato Alink: Suponga que un producto define un evento alarm. Su descripción TSL es la siguiente. Para obtener más información sobre los parámetros, consulte What is a TSL model?.
{
"schema": "https://iot-tsl.oss-cn-shanghai.aliyuncs.com/schema.json",
"link": "/sys/${productKey}/airCondition/thing/",
"profile": {
"productKey": "${productKey}",
"deviceName": "airCondition"
},
"events": [
{
"identifier": "alarm",
"name": "alarm",
"desc": "Fan alarm",
"type": "alert",
"required": true,
"outputData": [
{
"identifier": "errorCode",
"name": "Error code",
"dataType": {
"type": "text",
"specs": {
"length": "255"
}
}
}
],
"method": "thing.event.alarm.post"
}
]
}
Cuando el dispositivo reporta el evento, el formato de datos de solicitud Alink es el siguiente:
{
"id": "123",
"version": "1.0",
"params": {
"value": {
"errorCode": "error"
},
"time": 1524448722000
},
"method": "thing.event.alarm.post"
}
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los eventos reportados se pueden reenviar a su servidor o a otros productos de la nube mediante server-side subscription o data forwarding. Topics y formatos de datos: Device event reporting.
Invocación de servicios del dispositivo (asíncrona)
IoT Platform admite invocaciones síncronas y asíncronas. Debe especificar el método de invocación cuando define a service in a TSL model. Para comprender cómo se invocan los servicios del dispositivo, consulte Diagram of service invocation in the Alink protocol.
Síncrona: Invoque la operación de API InvokeThingService o InvokeThingsService. IoT Platform usa revert-RPC (RRPC) para enviar la solicitud de forma síncrona. El servicio debe configurarse para invocación síncrona, e IoT Platform se suscribe al topic RRPC correspondiente. What is RRPC?.
Asíncrona: Invoque la operación de API InvokeThingService o InvokeThingsService para invocar un servicio. IoT Platform envía la solicitud de forma asíncrona y el dispositivo devuelve el resultado de manera asíncrona. En este caso, el servicio se configura para invocación asíncrona, e IoT Platform se suscribe al topic de respuesta asíncrona descrito en esta sección.
Topic y formato de datos (originados en la nube):
|
Formato de datos de enlace descendente |
Topics de solicitud y respuesta |
|
Pass-through/custom |
|
|
Alink JSON |
|
Formato de datos de solicitud Alink:
{
"id": "123",
"version": "1.0",
"params": {
"Power": "on",
"WF": "2"
},
"method": "thing.service.${tsl.service.identifier}"
}
Formato de datos de respuesta:
-
Ejemplo de respuesta exitosa:
{ "code": 200, "data": {}, "id": "123", "message": "success", "version": "1.0" } -
Ejemplo de respuesta con errores:
{ "code": 9201, "data": {}, "id": "123", "message": "device offLine", "version": "1.0" }
Descripción de los parámetros:
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
params |
Object |
Parámetros de invocación del servicio. Incluyen el identificador y el valor del servicio. El ejemplo muestra dos parámetros: Power y WF (corriente de operación).
|
|
method |
String |
Método de la solicitud.
Nota
|
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. |
|
data |
Object |
Información de la respuesta. El valor del parámetro data depende de la definición del modelo TSL. Si el servicio no devuelve un resultado, el valor de data está vacío. Si el servicio devuelve un resultado, los datos devueltos cumplen estrictamente con la definición del servicio. |
|
message |
String |
Mensaje de respuesta. Si la solicitud es exitosa, se devuelve |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Ejemplo de formato Alink: Suponga que un producto define un servicio llamado SetWeight. Su descripción TSL es la siguiente:
{
"schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
"profile": {
"productKey": "testProduct01"
},
"services": [
{
"outputData": [
{
"identifier": "OldWeight",
"dataType": {
"specs": {
"unit": "kg",
"min": "0",
"max": "200",
"step": "1"
},
"type": "double"
},
"name": "OldWeight"
},
{
"identifier": "CollectTime",
"dataType": {
"specs": {
"length": "2048"
},
"type": "text"
},
"name": "CollectTime"
}
],
"identifier": "SetWeight",
"inputData": [
{
"identifier": "NewWeight",
"dataType": {
"specs": {
"unit": "kg",
"min": "0",
"max": "200",
"step": "1"
},
"type": "double"
},
"name": "NewWeight"
}
],
"method": "thing.service.SetWeight",
"name": "Set weight",
"required": false,
"callType": "async"
}
]
}
Cuando se invoca el servicio, el formato de datos de solicitud Alink es el siguiente:
{
"method": "thing.service.SetWeight",
"id": "105917531",
"params": {
"NewWeight": 100.8
},
"version": "1.0"
}
Formato de datos de respuesta Alink:
{
"id": "105917531",
"code": 200,
"data": {
"CollectTime": "1536228947682",
"OldWeight": 100.101
}
"message": "success",
"version": "1.0"
}
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los resultados de las invocaciones asíncronas se pueden reenviar a su servidor o a otros productos de la nube mediante server-side subscription o data forwarding. Topics y formatos de datos: Device mobile terminated instruction results.
Reporte de datos por lotes desde la puerta de enlace
Los dispositivos de puerta de enlace pueden reportar propiedades y eventos en lotes. También pueden reportar en lotes las propiedades y los eventos de sus subdispositivos.
Puede reportar hasta 200 propiedades y 20 eventos a la vez.
Puede reportar datos de hasta 20 subdispositivos a la vez.
Tema y formato de datos (origen móvil):
-
Pass-through/custom
Tema
Formato de datos
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/model/up_rawLos datos de la solicitud corresponden al mensaje sin procesar que reporta el dispositivo.
NotaLos datos de paso directo deben incluir el parámetro method. El valor debe coincidir con el método de solicitud correspondiente definido en el script de análisis de datos. Por ejemplo, el valor puede ser
thing.event.property.pack.post.Ejemplo:
0xff0000007b00Tema de respuesta:
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyLa nube devuelve los datos con el siguiente formato:
-
Ejemplo de respuesta exitosa
{ "code": 200, "data": {}, "id": "123", "message": "success", "version": "1.0" } -
Ejemplo de respuesta con errores
{ "code": 6813, "data": {}, "id": "123", "message": "topic illegal", "version": "1.0" }
-
-
Alink JSON
Temas de solicitud y respuesta
Datos de solicitud y respuesta
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/event/property/pack/postFormato de los datos de solicitud de Alink:
{ "id": "123", "version": "1.0", "sys":{ "ack":0 }, "params": { "properties": { "Power": { "value": "on", "time": 1524448722000 }, "WF": { "value": { }, "time": 1524448722000 } }, "events": { "alarmEvent1": { "value": { "param1": "on", "param2": "2" }, "time": 1524448722000 }, "alertEvent2": { "value": { "param1": "on", "param2": "2" }, "time": 1524448722000 } }, "subDevices": [ { "identity": { "productKey": "", "deviceName": "" }, "properties": { "Power": { "value": "on", "time": 1524448722000 }, "WF": { "value": { }, "time": 1524448722000 } }, "events": { "alarmEvent1": { "value": { "param1": "on", "param2": "2" }, "time": 1524448722000 }, "alertEvent2": { "value": { "param1": "on", "param2": "2" }, "time": 1524448722000 } } } ] }, "method": "thing.event.property.pack.post" }Tema de respuesta:
/sys/${productKey}/${deviceName}/thing/event/property/pack/post_replyFormato de los datos de respuesta de Alink:
{ "code": 200, "data": {}, "id": "123", "message": "success", "method": "thing.event.property.pack.post", "version": "1.0" }Si la solicitud falla, se devuelve
{}.
Descripción de los parámetros:
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
sys |
Object |
Parámetros de funciones extendidas. Nota
Si utiliza un SDK del lado del dispositivo sin configurar las funciones extendidas, este parámetro se omite y se aplican los valores predeterminados. |
|
ack |
Integer |
Indica si la nube devuelve una respuesta. Es un campo dentro de sys.
Importante
Thing Specification Language model usage examples. Si no se configura, este parámetro se omite y se devuelve una respuesta de forma predeterminada. |
|
params |
Object |
Parámetros de la solicitud. |
|
properties |
Object |
Propiedades. Incluye el identificador de la propiedad, su valor (value) y la hora en la que se generó (time). El parámetro time es opcional. Decida si incluye una marca de tiempo según su escenario de negocio. Si los mensajes son frecuentes y necesita determinar su orden mediante marcas de tiempo, se recomienda incluirlas. En el ejemplo, el dispositivo reporta información de dos propiedades: Power y WF (corriente de operación). Si se trata de una propiedad de un módulo personalizado, el formato del identificador es
|
|
events |
Object |
Eventos. Incluye el identificador del evento, sus parámetros de salida (value) y la hora en la que se generó (time). El parámetro time es opcional. Decida si incluye una marca de tiempo según su escenario de negocio. Si los mensajes son frecuentes y necesita determinar su orden mediante marcas de tiempo, se recomienda incluirlas. En el ejemplo se reportan dos eventos, alarmEvent1 y alarmEvent2, junto con sus parámetros correspondientes param1 y param2. Si se trata de un evento de un módulo personalizado, el formato del identificador es
|
|
subDevices |
Object |
Información del subdispositivo. |
|
productKey |
String |
ProductKey del producto al que pertenece el subdispositivo. |
|
deviceName |
String |
Nombre del subdispositivo. |
|
method |
String |
Parámetro de la solicitud. Valor: |
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de la respuesta. El valor 200 indica que la operación fue exitosa. Nota
El sistema valida el dispositivo, la topología y las propiedades y eventos reportados con base en la definición del modelo TSL del producto. Si alguna de estas comprobaciones falla, el reporte de datos termina con errores. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de la respuesta. Si la solicitud es exitosa, se devuelve |
|
method |
String |
Método de solicitud que corresponde a la respuesta. Coincide con el parámetro method de la solicitud. |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los datos por lotes del modelo TSL provenientes de puertas de enlace se pueden reenviar a su servidor o a otros productos en la nube mediante server-side subscription o data forwarding. Antes de reenviarlos, los mensajes de los subdispositivos y de la puerta de enlace se dividen en mensajes individuales de propiedades o eventos. Temas y formatos de datos: Device property reporting y Device event reporting.
Reporte de datos históricos del modelo TSL
Tema y formato de datos (origen móvil):
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/event/property/history/postTema de respuesta:
/sys/${productKey}/${deviceName}/thing/event/property/history/post_reply
Formato de los datos de solicitud de Alink:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"method": "thing.event.property.history.post",
"params": [
{
"identity": {
"productKey": "",
"deviceName": ""
},
"properties": [
{
"Power": {
"value": "on",
"time": 1524448722000
},
"WF": {
"value": "3",
"time": 1524448722000
}
},
{
"Power": {
"value": "on",
"time": 1524448722000
},
"WF": {
"value": "3",
"time": 1524448722000
}
}
],
"events": [
{
"alarmEvent": {
"value": {
"Power": "on",
"WF": "2"
},
"time": 1524448722000
},
"alertEvent": {
"value": {
"Power": "off",
"WF": "3"
},
"time": 1524448722000
}
}
]
},
{
"identity": {
"productKey": "",
"deviceName": ""
},
"properties": [
{
"Power": {
"value": "on",
"time": 1524448722000
},
"WF": {
"value": "3",
"time": 1524448722000
}
}
],
"events": [
{
"alarmEvent": {
"value": {
"Power": "on",
"WF": "2"
},
"time": 1524448722000
},
"alertEvent": {
"value": {
"Power": "off",
"WF": "3"
},
"time": 1524448722000
}
}
]
}
]
}
Formato de los datos de respuesta de Alink:
-
Ejemplo de respuesta exitosa
{ "code": 200, "data": {}, "id": "123", "message": "success", "method": "thing.event.property.history.post", "version": "1.0" } -
Ejemplo de respuesta con errores
{ "code": 5092, "data": {}, "id": "123", "message": "property not found", "method": "thing.event.property.history.post", "version": "1.0" }
Descripción de los parámetros:
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
sys |
Object |
Parámetros de funciones extendidas. Nota
Si utiliza un SDK del lado del dispositivo sin configurar las funciones extendidas, este parámetro se omite y se aplican los valores predeterminados. |
|
ack |
Integer |
Indica si la nube devuelve una respuesta. Es un campo dentro de sys.
Importante
Thing Specification Language model usage examples. Si no se configura, este parámetro se omite y se devuelve una respuesta de forma predeterminada. |
|
method |
String |
Método de la solicitud. Es un campo estático. Valor: |
|
params |
Object |
Parámetros de la solicitud. |
|
identity |
String |
Información del certificado del dispositivo al que pertenecen los datos. Incluye los parámetros productKey y deviceName. Nota
Un dispositivo conectado directamente solo puede reportar sus propios datos históricos del modelo TSL. Un dispositivo de puerta de enlace puede reportar los datos históricos del modelo TSL de sus subdispositivos. Cuando una puerta de enlace reporta datos históricos de un subdispositivo, identity contiene la información de dicho subdispositivo. |
|
properties |
Object |
Propiedades. Incluye el identificador de la propiedad, su valor (value) y la hora en la que se generó (time). En el ejemplo, el dispositivo reporta información histórica de dos propiedades: Power y WF (corriente de operación). Si se trata de una propiedad de un módulo personalizado, el formato del identificador es
|
|
events |
Object |
Eventos. Incluye el identificador del evento, sus parámetros de salida (value) y la hora en la que se generó (time). En el ejemplo se reporta información histórica de alarmEvent, junto con sus parámetros correspondientes Power y WF (corriente de operación). Si se trata de un evento de un módulo personalizado, el formato del identificador es
|
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de la respuesta. Si la solicitud es exitosa, se devuelve |
|
method |
String |
Método de solicitud que corresponde a la respuesta. Coincide con el parámetro method de la solicitud. |
|
version |
String |
Número de versión del protocolo. Coincide con el parámetro version de la solicitud. |
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los datos históricos del modelo TSL se pueden reenviar a su servidor o a otros productos en la nube mediante server-side subscription o data forwarding. Temas y formatos de datos: Historical property reporting y Historical event reporting.
Cuando se reenvían los datos históricos del modelo TSL de un dispositivo, la plataforma genera mensajes independientes para los elementos incluidos en properties y events. Después, los datos históricos de cada propiedad o evento se reenvían por separado.
Reporte por lotes de propiedades y eventos del dispositivo
Tema y formato de datos (origen móvil):
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/event/property/batch/postTema de respuesta:
/sys/${productKey}/${deviceName}/thing/event/property/batch/post_reply
Formato de los datos de solicitud de Alink:
{
"id": "123",
"version": "1.0",
"sys":{
"ack":0
},
"method": "thing.event.property.batch.post",
"params": {
"properties": {
"Power": [
{
"value": "on",
"time": 1524448722000
},
{
"value": "off",
"time": 1524448722001
}
],
"WF": [
{
"value": 3,
"time": 1524448722000
},
{
"value": 4,
"time": 1524448722009
}
]
},
"events": {
"alarmEvent": [
{
"value": {
"Power": "on",
"WF": "2"
},
"time": 1524448722000
},
{
"value": {
"Power": "on",
"WF": "2"
},
"time": 1524448722000
}
]
}
}
}
Formato de los datos de respuesta de Alink:
-
Ejemplo de respuesta exitosa:
{ "code": 200, "data": {}, "id": "123", "message": "success", "method": "thing.event.property.batch.post", "version": "1.0" } -
Ejemplo de respuesta con errores:
{ "code": 9201, "data": {}, "id": "123", "message": "device offLine", "method": "thing.event.property.batch.post", "version": "1.0" }
Descripción de parámetros:
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
version |
String |
Número de versión del protocolo. El único valor válido es 1.0. |
|
sys |
Object |
Parámetros de funciones extendidas. Nota
Si utiliza un SDK del lado del dispositivo sin configurar las funciones extendidas, este parámetro se omite y se aplican los valores predeterminados. |
|
ack |
Integer |
Indica si la nube devuelve una respuesta. Es un campo dentro de sys.
Importante
Thing Specification Language model usage examples. Si no se configura, este parámetro se omite y se devuelve una respuesta de forma predeterminada. |
|
method |
String |
Método de la solicitud. Este es un campo estático. Valor: |
|
params |
Object |
Parámetros de la solicitud. |
|
properties |
Object |
Propiedades. Incluye el identificador de la propiedad, su valor value y el momento time en que se generó. En el ejemplo, el dispositivo reporta información por lotes de dos propiedades: Power y WF (corriente de operación). Si se trata de una propiedad de un módulo personalizado, el formato del identificador es
|
|
events |
Object |
Eventos. Incluye el identificador del evento, sus parámetros de salida value y el momento time en que se generó. En el ejemplo, se reporta información por lotes del evento alarmEvent junto con sus parámetros correspondientes Power y WF (corriente de operación). Si se trata de un evento de un módulo personalizado, el formato del identificador es
|
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
Identificador del mensaje. Cadena de dígitos con un valor de 0 a 4294967295. Cada identificador de mensaje debe ser único para el dispositivo actual. |
|
code |
Integer |
Código de estado del resultado. Device-side general codes. |
|
data |
Object |
Si la solicitud es exitosa, se devuelve un objeto vacío. |
|
message |
String |
Mensaje de la respuesta. Si la solicitud es exitosa, se devuelve |
|
method |
String |
Método de la solicitud al que corresponde la respuesta. Coincide con el method de los parámetros de la solicitud. |
|
version |
String |
Número de versión del protocolo. Coincide con el version de los parámetros de la solicitud. |
Códigos de error: Error codes received by devices.
Reenvío de mensajes: Los datos por lotes del modelo TSL se pueden reenviar a su servidor mediante server-side subscription. La información de propiedades y eventos se reenvía en mensajes separados. Para conocer los topics y formatos de datos, consulte Batch property reporting from devices y Batch event reporting from devices.