Aller au contenu
JelinaJelina DocumentationDocumentation technique
Retour au site officiel

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.

  1. La logique de déclenchement est identique à celle des autres plans ; la différence réside dans le contenu du script d’action.
  2. 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.

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/expiredDate par availableTime/expiredTime au format HH:mm:ss, sans traverser minuit. Les valeurs s’appliquent chaque jour. Utilisez les fonctions buildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate) pour DailyChange ou buildDailyRepeatWriteMap(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 ou nil ; 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 JSON
local 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 resultList

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
}
]

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
}
]
}

image-20250415172946412

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