Este tema describe cómo escribir un script para analizar sintácticamente los datos de Thing Specification Language (TSL) en productos cuyo parámetro Data Type está configurado como Custom. También explica cómo enviar dicho script e incluye ejemplos que sirven para analizar sintácticamente los datos de propiedades ascendentes y descendentes.
Requisitos previos
Al crear el producto, configure el parámetro Data Type con el valor Custom. Para obtener más información, consulte Create a product.
Contexto
Si el parámetro Data Type se configura como ICA Standard Data Format (Alink JSON), los dispositivos generan datos en formato Alink JSON y los reportan a IoT Platform. Para conocer más detalles sobre este formato, consulte Device properties, events, and services.
Si el parámetro Data Type se configura como Custom, IoT Platform utiliza los scripts de análisis de datos que usted envió. Con ellos convierte los datos TSL ascendentes al formato Alink JSON y transforma los datos TSL descendentes al formato personalizado del dispositivo durante la comunicación.
En este ejemplo se utilizan las propiedades del módulo predeterminado. Si usa un módulo personalizado, especifique cada identificador con el siguiente formato: ${Module identifier}:${Property identifier}. Por ejemplo: model1:prop_int16.
Paso 1: Escribir un script
Create a product. En la consola de IoT Platform, cree un producto y establezca el parámetro Data Type como Custom.
-
Add a TSL feature: defina un modelo TSL para el producto.
En este ejemplo se definen tres propiedades. A continuación se describen sus características.
Identificador
Tipo de datos
Valor válido
Tipo de lectura y escritura
prop_float
FLOAT
-100~100
Lectura y escritura
prop_int16
INT32
-100~100
Lectura y escritura
prop_bool
BOOLEAN
0: habilitado y 1: deshabilitado
Lectura y escritura
El script se escribe para analizar sintácticamente los datos TSL ascendentes y descendentes según el modelo TSL.
Además, se especifica la longitud de los valores de los parámetros utilizados en la comunicación de datos. La siguiente tabla detalla dichas longitudes.
-
Solicitudes que envían los dispositivos para reportar datos
Parámetro
Número de bytes
Frame Type
1 byte
The ID of the request
4 bytes
prop_int16
2 bytes
prop_bool
1 byte
prop_float
4 bytes
-
Respuestas a las solicitudes de reporte de datos
Parámetro
Número de bytes
Frame Type
1 byte
The ID of the request
4 bytes
Result code
1 byte
-
Solicitudes para configurar propiedades
Parámetro
Número de bytes
Frame Type
1 byte
The ID of the request
4 bytes
prop_int16
2 bytes
prop_bool
1 byte
prop_float
4 bytes
-
Respuestas a las solicitudes de configuración de propiedades
Parámetro
Número de bytes
Frame Type
1 byte
The ID of the request
4 bytes
Result code
1 byte
-
-
Escriba el script.
En la página Products, busque el producto que desea gestionar y haga clic en View dentro de la columna Actions.
En la página product details, haga clic en Message Analysis.
-
Seleccione un lenguaje de programación y escriba el script en el campo Edit Script.
Lenguaje de scripting compatible
Función que convierte los datos ascendentes de formato personalizado a Alink JSON:
Función que convierte los datos en formato Alink JSON a datos descendentes de formato personalizado:
Código de ejemplo
JavaScript (ECMAScript 5)
rawDataToProtocol
protocolToRawData
Python 2.7
raw_data_to_protocol
protocol_to_raw_data
PHP 7.2
rawDataToProtocol
protocolToRawData
NotaDebe escribir un script que permita analizar sintácticamente los datos enviados a temas personalizados. Para conocer el procedimiento, consulte Submit a message parsing script.
Si necesita ejemplos completos de scripts para analizar sintácticamente datos enviados a temas personalizados y datos TSL, consulte Sample JavaScript code used to parse custom data, Complete sample code for parsing pass-through or custom data in Python y Sample PHP code used to parse custom data.
Paso 2: Probar el script en línea
La cadena hexadecimal y los datos en formato JSON que se especifican y devuelven en este ejemplo sirven únicamente para pruebas. No los utilice para depurar escenarios reales.
Una vez escrito el script, configure el parámetro Simulation Type y especifique datos simulados en la pestaña Input Simulation para probarlo.
-
Pruebe el script con datos simulados de propiedades que un dispositivo reporta a IoT Platform.
Establezca el parámetro Simulation Type como Upstreamed Device Data, introduzca los siguientes datos simulados y haga clic en Run.
NotaEste ejemplo utiliza datos simulados de JavaScript. Para consultar más ejemplos de scripts en JavaScript, vea Sample JavaScript script.
Si busca ejemplos en Python y PHP, consulte Python sample script y PHP sample script.
Utilice una herramienta de conversión de cadenas a datos hexadecimales para transformar los datos en formato JSON. Por ejemplo, si el resultado convertido es
00002233441232013fa00000, especifique lo siguiente:0x00002233441232013fa00000El motor de análisis de datos convierte los datos de paso directo al formato JSON según las reglas definidas en el script.
Haga clic en Parsing Results. La pestaña Parsing Results muestra los datos analizados sintácticamente.
{ "method": "thing.event.property.post", "id": "2241348", "params": { "prop_float": 1.25, "prop_int16": 4658, "prop_bool": 1 }, "version": "1.0" } -
Pruebe el script con datos de resultados simulados que IoT Platform devuelve a un dispositivo.
Establezca el parámetro Simulation Type como Received Device Data, introduzca los siguientes datos en formato JSON y haga clic en Run.
{ "id": "12345", "version": "1.0", "code": 200, "method": "thing.event.property.post", "data": {} }El motor de análisis de datos convierte la información en formato JSON a lo siguiente:
0x0200003039c8 -
Pruebe el script con datos simulados que IoT Platform envía a un dispositivo para solicitarle que modifique propiedades.
Establezca el parámetro Simulation Type como Received Device Data, introduzca los siguientes datos en formato JSON y haga clic en Run.
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }El motor de análisis de datos convierte la información en formato JSON a lo siguiente:
0x0100003039014d0142f6e76d -
Pruebe el script con datos de resultados simulados que un dispositivo devuelve a IoT Platform después de modificar las propiedades.
Establezca el parámetro Simulation Type como Upstreamed Device Data, introduzca los siguientes datos y haga clic en Run.
0x0300223344c8El motor de análisis de datos convierte los datos de paso directo a los siguientes datos en formato JSON:
{ "code": "200", "data": {}, "id": "2241348", "version": "1.0" }
Paso 3: Enviar el script
Para que IoT Platform ejecute los scripts, debe enviarlos primero a la plataforma. Los scripts en estado Draft no se pueden invocar.
Cuando compruebe que el script analiza sintácticamente los datos correctamente, haga clic en Submit para enviarlo a IoT Platform. De esta forma, la plataforma podrá utilizarlo para procesar los datos ascendentes y descendentes.
Paso 4: Depurar con un dispositivo físico
Antes de usar el script en su entorno de producción, comunique un dispositivo físico con IoT Platform. Así comprobará si la plataforma logra invocar el script y analizar sintácticamente los datos ascendentes y descendentes.
Utilice un Link SDK de IoT Platform para configurar el dispositivo y conectarlo a la plataforma. Para obtener más información, consulte Link SDK.
-
Compruebe que IoT Platform puede invocar el script para analizar sintácticamente los datos ascendentes de propiedades.
Use el dispositivo para reportar datos de propiedades a IoT Platform, por ejemplo:
0x00002233441232013fa00000.En la consola de IoT Platform, seleccione en el panel de navegación izquierdo.
En la página Devices, busque el dispositivo y haga clic en View dentro de la columna Actions. Después, en la página Device Details, abra la pestaña y luego la subpestaña Status. Compruebe si los datos de propiedades reportados están presentes.
-
Compruebe que IoT Platform puede invocar el script para analizar sintácticamente los datos descendentes de propiedades.
Inicie sesión en la consola de IoT Platform. En el panel de navegación izquierdo, seleccione .
-
En la página Online Debug, seleccione el producto y el dispositivo que desea depurar, y luego elija Default Module. Seleccione el identificador de la propiedad que va a depurar, como prop_int16. Establezca el método como Set. Introduzca los siguientes datos y haga clic en Send Command.
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } } Compruebe si el dispositivo recibe el comando para configurar las propiedades.
En la página Device Details, seleccione . En la pestaña que aparece, compruebe si el dispositivo reportó los datos actuales de la propiedad.
Opcional: Actualizar el script de análisis de mensajes
Después de enviar un script de análisis de mensajes, regrese a la pestaña Message Parsing para modificarlo o eliminarlo. Siga los pasos de la sección Procedimiento para probar y enviar los cambios. Estos surten efecto en aproximadamente un minuto. El script actualizado aplica a todos los dispositivos existentes y nuevos asociados al producto.
Si modifica y vuelve a enviar el script, también debe actualizar la lógica de negocio relacionada con el servicio de análisis de mensajes. De lo contrario, sus servicios podrían interrumpirse.
Si elimina el script, el servicio de análisis de mensajes dejará de estar disponible para los dispositivos asociados al producto. Esto podría interrumpir sus servicios.
Proceda con precaución.
Referencias
Para conocer el proceso de análisis de datos, consulte Message parsing.
Para obtener más información sobre cómo analizar sintácticamente los datos enviados a temas personalizados, consulte Submit a message parsing script.
Si necesita conocer las operaciones de API utilizadas para enviar mensajes a dispositivos, consulte Use of TSL models y Messaging.