Todos los productos
Search
Centro de documentos

IoT Platform:Propiedades, eventos y servicios del dispositivo

Última actualización: Sep 07, 2026

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.TSL model data pass-through

Importante
  • 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_raw

    The 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_METHOD is thing.event.property.post when a device uploads property data to the cloud.

    Example:

    0x00002233441232013fa00000

    Response topic: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    The 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/post

    Request 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_reply

    The 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:

Tabla 1. Parámetros de solicitud

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.

  • 1: devuelve una respuesta.

  • 0: no se devuelve ninguna respuesta.

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: thing.event.property.post.

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:

"params": {
    "Power": "on",
    "WF": 23.6
}

Si se trata de una propiedad de módulo personalizado, el formato del identificador es ${moduleIdentifier}:${propertyIdentifier} (separado por dos puntos). Por ejemplo:

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

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.

  • Si se incluye time, IoT Platform lo utiliza como la hora de reporte de la propiedad.

  • Si se omite time, IoT Platform genera automáticamente la hora de reporte.

value

Object

Valor de la propiedad reportada.

Si no incluye time, puede omitir value y reportar directamente el valor del parámetro.

Tabla 2. Parámetros de respuesta

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 success.

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.

Importante

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

  • Request topic: /sys/${productKey}/${deviceName}/thing/model/down_raw

  • Response topic: /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • Request topic: /sys/${productKey}/${deviceName}/thing/service/property/set

  • Response topic: /sys/${productKey}/${deviceName}/thing/service/property/set_reply

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:

Tabla 3. Parámetros de solicitud

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: { "temperature": "30.5" }.

Si se trata de una propiedad de módulo personalizado, el formato del identificador es ${moduleIdentifier}:${propertyIdentifier} (separado por dos puntos); por ejemplo, { "test:temperature": "30.5" }.

method

String

Método de solicitud. Por ejemplo: thing.service.property.set.

Tabla 4. Parámetros de respuesta

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 success.

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_raw

    Los datos de la solicitud corresponden al mensaje sin procesar que reporta el dispositivo.

    Nota

    Los 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:

    0xff0000007b00

    Topic de respuesta: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    La 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:

Tabla 5. Parámetros de solicitud

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.

  • 1: Devuelve una respuesta.

  • 0: No se devuelve ninguna respuesta.

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.

  • Módulo predeterminado

    El valor es thing.event.${tsl.event.identifier}.post.

  • Módulo personalizado

    El valor es thing.event.${tsl.functionBlockId}:${tsl.event.identifier}.post.

Nota

${tsl.event.identifier} es el identificador del evento definido en el modelo TSL, y ${tsl.functionBlockId} es el identificador del módulo personalizado. Add a TSL model for a single feature.

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).

{
    "Power": "on",
    "WF": "2"
}

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.

  • Si incluye time, IoT Platform guarda la hora especificada como el momento de reporte del evento.

  • Si no incluye time, IoT Platform genera y guarda automáticamente el momento de reporte del evento.

Tabla 6. Parámetros de respuesta

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 success.

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

  • Topic de solicitud: /sys/${productKey}/${deviceName}/thing/model/down_raw

  • Topic de respuesta: /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • Módulo predeterminado

    • Topic de solicitud: /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}

    • Topic de respuesta: /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply

  • Módulo personalizado

    • Topic de solicitud: /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId}:${tsl.service.identifier}

    • Topic de respuesta: /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId}:${tsl.service.identifier}_reply

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:

Tabla 7. Parámetros de solicitud

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).

{
    "Power": "on",
    "WF": "2"
}

method

String

Método de la solicitud.

  • Módulo predeterminado

    El valor es thing.service.${tsl.service.identifier}.

  • Módulo personalizado

    El valor es thing.service.${tsl.functionBlockId}:${tsl.service.identifier}.

Nota

${tsl.service.identifier} es el identificador del servicio definido en el modelo TSL, y ${tsl.functionBlockId} es el identificador del módulo personalizado. Add a TSL model for a single feature.

Tabla 8. Parámetros de respuesta

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 success.

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.

Nota
  • 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_raw

    Los datos de la solicitud corresponden al mensaje sin procesar que reporta el dispositivo.

    Nota

    Los 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:

    0xff0000007b00

    Tema de respuesta: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    La 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/post

    Formato 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_reply

    Formato 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:

Tabla 9. Parámetros de solicitud

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.

  • 1: devuelve una respuesta.

  • 0: no se devuelve ninguna respuesta.

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 ${moduleIdentifier}:${propertyIdentifier} (separado por dos puntos). Por ejemplo:

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

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 ${moduleIdentifier}:${eventIdentifier} (separado por dos puntos). Por ejemplo:

"test:alarmEvent1": {
        "value": {
            "param1": "on",
            "param2": "2"
        },
        "time": 1524448722000
    }

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: thing.event.property.pack.post.

Tabla 10. Parámetros de respuesta

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 success.

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/post

  • Tema 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:

Tabla 11. Parámetros de solicitud

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.

  • 1: devuelve una respuesta.

  • 0: no se devuelve ninguna respuesta.

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: thing.event.property.history.post.

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 ${moduleIdentifier}:${propertyIdentifier} (separado por dos puntos). Por ejemplo:

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

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 ${moduleIdentifier}:${eventIdentifier} (separado por dos puntos). Por ejemplo:

"test:alarmEvent": {
        "value": {
            "Power": "on", 
            "WF": "2"
        }, 
        "time": 1524448722000
    }
Tabla 12. Parámetros de respuesta

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 success.

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.

Importante

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/post

  • Tema 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:

Tabla 13. Parámetros de la solicitud

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.

  • 1: Devuelve una respuesta.

  • 0: No se devuelve ninguna respuesta.

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: thing.event.property.batch.post.

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 ${moduleIdentifier}:${propertyIdentifier} (separado por dos puntos). Por ejemplo:

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

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 ${moduleIdentifier}:${eventIdentifier} (separado por dos puntos). Por ejemplo:

"test:alarmEvent": {
        "value": {
            "Power": "on", 
            "WF": "2"
        }, 
        "time": 1524448722000
    }
Tabla 14. Parámetros de la respuesta

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 success.

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.

Referencias

What are the differences among property reporting, historical data reporting, and batch property reporting for TSL models?.