- Visão geral do Jelina
- EMS Builder
- Manual de referência
Perfis de acionamento
A sintaxe dos scripts é Lua. Para os conceitos gerais e a classificação das condições e ações, leia primeiro Perfis de acionamento. Esta página detalha os parâmetros de gravação, as estruturas de retorno e os exemplos completos de scripts de ações do tipo EXPRESSION.
Visão geral
Seção intitulada “Visão geral”- A lógica de acionamento é a mesma dos demais tipos de perfil; a diferença está no conteúdo do script da ação.
- Após a execução do script, o backend do Edge-EMS Builder interpreta o resultado retornado e grava nos pontos especificados conforme seu conteúdo.
Observação: o usuário precisa de conhecimentos básicos de programação e familiaridade com o fluxo de execução de estratégias. Para a sintaxe, consulte Regras do mecanismo Lua.
Instruções de uso
Seção intitulada “Instruções de uso”Parâmetros de gravação
Seção intitulada “Parâmetros de gravação”| Nome do parâmetro | Valor | Obrigatório? | Tipo | Descrição |
|---|---|---|---|---|
| dataType | Customization | Sim | String | Tipo dos dados a operar: Customization/Collection/Aggregation/Alarm/Share |
| deviceCode | DeviceA | Não | String | Código do dispositivo subordinado |
| dataKey | 功率 | Sim | String | dataKey exclusivo dos dados ou tipo de alarme |
| dataValue | 15 | Sim | String | Valor dos dados ou conteúdo do alarme |
| changeMod | true | Não | String | Define se a gravação por alteração está habilitada |
| availableDate | 2023-01-15T07:00:00+08:00 | Não | String | Data de início da vigência, Customization |
| expiredDate | 2023-01-15T10:00:00+08:00 | Não | String | Data de expiração, Customization |
| mqttConnectionConfigId | 100101 | Não | String | ID da configuração de conexão MQTT, Alarm |
| topic | upload | Não | String | Topic de envio do alarme, Alarm |
| qos | 1 | Não | String | QOS, Alarm |
Dados por faixa de horário (Customization) também aceitam agendamento com repetição diária (DailyRepeat): use
availableTime/expiredTime, no formatoHH:mm:sse sem cruzar a meia-noite, em vez deavailableDate/expiredDate, para repetir diariamente. É possível usar diretamente a função abreviadabuildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate), exclusiva de DailyChange, oubuildDailyRepeatWriteMap(dataKey, dataValue, availableTime, expiredTime), exclusiva de DailyRepeat. Consulte Regras do mecanismo Lua.Se não houver valor para um ponto referenciado no script, será inserida a string sentinela
__Null__. Não presuma que seja uma string vazia ounil; verifique explicitamente${dataKey} == "__Null__".
Exemplo
Seção intitulada “Exemplo”local resultList = {}
-- Conteúdo personalizado do alarmelocal errorMap = {}errorMap.timestamp = OffsetDateTime.now():unixMilli()errorMap.iotCode = ${数据9}errorMap.faultCode = ${数据9}errorMap.faultLevel = ${数据9}errorMap.faultName = ${数据9}errorMap.faultBack = ${数据9}-- Converte o conteúdo do alarme em 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 execução esperado
Seção intitulada “Resultado de execução esperado”Espera-se um array contendo várias Tables. O Edge-EMS Builder interpreta o array, valida o conteúdo dos objetos e retorna os objetos de gravação encapsulados:
[ { "dataType": "",//Objeto da operação "deviceCode": "",//Código exclusivo do dispositivo subordinado, que determina o destino da gravação "dataKey": "",//KEY exclusiva do objeto da operação (dataKey ou alarmType) "dataValue": "",//Conteúdo a gravar ou conteúdo do alarme "changeMod": true,//Define se a gravação ocorre por alteração "availableDate": "",//Início da vigência dos dados por faixa de horário "expiredDate": ""//Expiração dos dados por faixa de horário }]Resultado da interpretação
Seção intitulada “Resultado da interpretação”Interprete o resultado da execução, valide a exatidão do conteúdo e retorne os objetos encapsulados para pré-execução:
{ "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 do envio de alarmes por MQTT
Seção intitulada “Resultado do envio de alarmes por MQTT”
Próximos passos
Seção intitulada “Próximos passos”- Conceitos gerais, tipos de condição e ação e descoberta dinâmica de dispositivos: Perfis de acionamento.
- Referência completa das funções e módulos Lua integrados: Regras do mecanismo Lua.