- Visión general de Jelina
- EMS Builder
- Manual de referencia
Esquemas de disparadores
La sintaxis de los scripts es Lua. Antes de continuar, consulta los conceptos y la clasificación de condiciones y acciones en Esquemas de disparadores. Esta página detalla los parámetros de escritura, la estructura de retorno y un ejemplo completo de acciones EXPRESSION.
Resumen
Sección titulada «Resumen»- La lógica de disparo es la misma que en otros tipos de esquemas; cambia el contenido del script de la acción.
- Tras ejecutar el script, el backend de Edge-EMS Builder interpreta el resultado y escribe en los puntos indicados.
Nota: se requieren conocimientos de programación y familiaridad con el proceso de ejecución de estrategias. Consulta la sintaxis en Reglas del motor Lua.
Instrucciones de uso
Sección titulada «Instrucciones de uso»Parámetros de escritura
Sección titulada «Parámetros de escritura»| Parámetro | Valor | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
| dataType | Customization | Sí | String | Tipo de datos de destino: Customization/Collection/Aggregation/Alarm/Share |
| deviceCode | DeviceA | No | String | Código del dispositivo subordinado |
| dataKey | 功率 | Sí | String | dataKey único del dato o tipo de alarma |
| dataValue | 15 | Sí | String | Valor del dato o contenido de la alarma |
| changeMod | true | No | String | Habilitar escritura solo ante cambios |
| availableDate | 2023-01-15T07:00:00+08:00 | No | String | Fecha de inicio de vigencia (Customization) |
| expiredDate | 2023-01-15T10:00:00+08:00 | No | String | Fecha de fin de vigencia (Customization) |
| mqttConnectionConfigId | 100101 | No | String | ID de configuración de conexión MQTT (Alarm) |
| topic | upload | No | String | Topic de envío de alarmas (Alarm) |
| qos | 1 | No | String | QOS (Alarm) |
Los datos Customization también admiten programación de repetición diaria (DailyRepeat). Utiliza
availableTime/expiredTime, con formatoHH:mm:ssy sin atravesar medianoche, en lugar deavailableDate/expiredDate. Puedes utilizarbuildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate)para DailyChange obuildDailyRepeatWriteMap(dataKey, dataValue, availableTime, expiredTime)para DailyRepeat. Consulta Reglas del motor Lua.Si un punto referenciado no tiene valor, se inserta la cadena centinela
__Null__. No supongas que es una cadena vacía onil; comprueba explícitamente${dataKey} == "__Null__".
Ejemplo
Sección titulada «Ejemplo»local resultList = {}
-- Contenido de alarma personalizadolocal errorMap = {}errorMap.timestamp = OffsetDateTime.now():unixMilli()errorMap.iotCode = ${数据9}errorMap.faultCode = ${数据9}errorMap.faultLevel = ${数据9}errorMap.faultName = ${数据9}errorMap.faultBack = ${数据9}-- Convertir el contenido de alarma a JSONlocal errorMessage = toJsonString(errorMap)
table.insert(resultList, buildCommonWriteMap("Customization", "mode", 15, "2023-01-15T07:00:00+08:00", "2023-01-15T10:00:00+08:00", true))table.insert(resultList, buildCommonAlarmMap("二级告警", "二级告警"))table.insert(resultList, buildMqttAlarmMap("一级告警", errorMessage, 1, "upload", 1))table.insert(resultList, buildCommonWriteMap("Collection", "数据10", 200, nil, nil, true))table.insert(resultList, buildCommonWriteMap("Aggregation", "温度", 20, nil, nil, false))table.insert(resultList, buildSlaveWriteMap("DeviceB", "Share", "数据3", 888, nil, nil, false))
return resultListResultado de ejecución esperado
Sección titulada «Resultado de ejecución esperado»Se espera un array que contenga varias tablas. Edge-EMS Builder interpreta el array, valida los objetos y devuelve los objetos de escritura preparados:
[ { "dataType": "",//Objeto de destino "deviceCode": "",//Código único del dispositivo subordinado que identifica el destino de escritura "dataKey": "",//Clave única del destino: dataKey o alarmType "dataValue": "",//Valor que se escribe o contenido de alarma "changeMod": true,//Indica si se escribe solo al cambiar "availableDate": "",//Inicio de vigencia de datos por franjas horarias "expiredDate": ""//Fin de vigencia de datos por franjas horarias }]Resultado del análisis
Sección titulada «Resultado del análisis»Tras interpretar y validar el resultado, se devuelve el objeto preparado para ejecución:
{ "writeCommBridgeContent": [ { "dataKey": "数据10", "dataValue": "200" } ], "writeAggregationDataConfigs": [ { "aggregationDataConfigId": 100004, "dataKey": "温度", "dataName": "温度", "collectionCycle": -1, "expression": "return 15", "status": "Valid", "empty": false, "hasGroup": false, "useLatestValue": true, "note": "", "createdBy": 100001, "createdTime": "2025-03-18T15:04:39.503+08:00", "updatedBy": 100001, "updatedTime": "2025-03-28T10:21:15.578+08:00" } ], "writeAggregationDataValues": [ { "aggregationDataConfigId": 100004, "dataValue": "20", "collectionTime": "2025-04-23T15:30:49.913+08:00" } ], "writeCustomizationDataValues": [ { "customizationDataConfigId": 100003, "dataValue": "15", "availableDate": "2023-01-15T07:00:00.000+08:00", "expiredDate": "2023-01-15T10:00:00.000+08:00", "createdBy": 100000, "createdTime": "2025-04-23T15:30:49.912+08:00" } ], "writeShareDataValues": [ { "shareDataConfigId": 3, "deviceCode": "DeviceB", "dataKey": "数据3", "collectionCycle": 3000, "dataValue": "888", "collectionTime": "2025-04-23T15:30:49.914+08:00" } ], "alarmRecords": [ { "alarmType": "二级告警", "alarmContent": "二级告警", "alarmTime": "2025-04-23T15:30:49.912+08:00", "mark": "None" }, { "alarmType": "一级告警", "alarmContent": "{\"iotCode\":66.60000000,\"faultCode\":66.60000000,\"faultBack\":66.60000000,\"faultLevel\":66.60000000,\"timestamp\":1745393449910,\"faultName\":66.60000000}", "alarmTime": "2025-04-23T15:30:49.912+08:00", "mark": "None", "mqttConnectionConfigId": 1, "topic": "upload", "qos": 1 } ]}Resultado del envío de alarmas por MQTT
Sección titulada «Resultado del envío de alarmas por MQTT»
Siguientes pasos
Sección titulada «Siguientes pasos»- Conceptos generales, tipos de condiciones y acciones y descubrimiento dinámico de dispositivos: Esquemas de disparadores.
- Funciones y módulos Lua completos: Reglas del motor Lua.