- Présentation de Jelina
- EMS Builder
- Manuel de référence
Plans de déclenchement
Les scripts utilisent Lua. Consultez d’abord Plans de déclenchement pour les concepts et les catégories de conditions/actions. Cette page détaille les paramètres d’écriture, les structures de retour et les exemples complets des actions de type EXPRESSION.
Présentation
Section intitulée « Présentation »- La logique de déclenchement est identique à celle des autres plans ; la différence réside dans le contenu du script d’action.
- Après l’exécution, le backend Edge-EMS Builder analyse le résultat du script et écrit dans les points spécifiés selon son contenu.
Remarque : des bases de programmation et une connaissance du processus d’exécution des stratégies sont nécessaires. Consultez la référence Lua pour la syntaxe.
Utilisation
Section intitulée « Utilisation »Paramètres d’écriture
Section intitulée « Paramètres d’écriture »| Paramètre | Valeur | Obligatoire | Type | Description |
|---|---|---|---|---|
| dataType | Customization | Oui | String | Type de données à manipuler : Customization/Collection/Aggregation/Alarm/Share |
| deviceCode | DeviceA | Non | String | Code de l’équipement esclave |
| dataKey | 功率 | Oui | String | dataKey unique des données ou type d’alarme |
| dataValue | 15 | Oui | String | Valeur des données ou contenu de l’alarme |
| changeMod | true | Non | String | Active l’écriture sur changement |
| availableDate | 2023-01-15T07:00:00+08:00 | Non | String | Date de début de validité (Customization) |
| expiredDate | 2023-01-15T10:00:00+08:00 | Non | String | Date de fin de validité (Customization) |
| mqttConnectionConfigId | 100101 | Non | String | ID de configuration de connexion MQTT (Alarm) |
| topic | upload | Non | String | Topic de transfert d’alarme (Alarm) |
| qos | 1 | Non | String | QOS (Alarm) |
Les données par plage horaire (Customization) acceptent aussi les programmes quotidiens répétés (DailyRepeat) : remplacez
availableDate/expiredDateparavailableTime/expiredTimeau formatHH:mm:ss, sans traverser minuit. Les valeurs s’appliquent chaque jour. Utilisez les fonctionsbuildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate)pour DailyChange oubuildDailyRepeatWriteMap(dataKey, dataValue, availableTime, expiredTime)pour DailyRepeat. Consultez la référence Lua.Si un point référencé n’a pas de valeur disponible, la chaîne sentinelle
__Null__est injectée. Ne supposez pas une chaîne vide ounil; testez explicitement${dataKey} == "__Null__".
local resultList = {}
-- Contenu d’alarme personnalisélocal errorMap = {}errorMap.timestamp = OffsetDateTime.now():unixMilli()errorMap.iotCode = ${数据9}errorMap.faultCode = ${数据9}errorMap.faultLevel = ${数据9}errorMap.faultName = ${数据9}errorMap.faultBack = ${数据9}-- Convertir le contenu d’alarme en 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 resultListRésultat d’exécution attendu
Section intitulée « Résultat d’exécution attendu »Le script doit renvoyer un tableau contenant plusieurs tables. Edge-EMS Builder analyse ce tableau, valide ses objets, puis renvoie les objets d’écriture préparés :
[ { "dataType": "",//Objet de l’opération "deviceCode": "",//Code unique de l’esclave, déterminant l’équipement destinataire de l’écriture "dataKey": "",//KEY unique de l’objet, dataKey ou alarmType "dataValue": "",//Valeur à écrire ou contenu d’alarme "changeMod": true,//Écriture sur changement ou non "availableDate": "",//Début de validité des données par plage horaire "expiredDate": ""//Fin de validité des données par plage horaire }]Résultat de l’analyse
Section intitulée « Résultat de l’analyse »Analyse et validation du résultat d’exécution, puis retour des objets préparés pour la préexécution :
{ "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 } ]}Résultat du transfert d’alarme MQTT
Section intitulée « Résultat du transfert d’alarme MQTT »
Étapes suivantes
Section intitulée « Étapes suivantes »- Concepts des plans de déclenchement (conditions, actions, découverte dynamique des équipements) : Plans de déclenchement.
- Référence complète des fonctions intégrées et modules Lua : Référence Lua.