Zum Inhalt springen
JelinaJelina DocumentationTechnische Dokumentation
Zur Website

Triggerschemata

Die Skriptsprache ist Lua. Lesen Sie zunächst Triggerschemata zu den Grundkonzepten und den Kategorien von Trigger-Bedingungen und -Aktionen. Diese Seite beschreibt Schreibparameter, Rückgabestruktur und vollständige Beispiele für Aktionsskripte des Typs EXPRESSION.

  1. Die Trigger-Logik entspricht der anderer Triggerschematypen. Der Unterschied liegt im Skriptinhalt der Trigger-Aktion.
  2. Nach der Skriptausführung wertet das Backend von Edge-EMS Builder das zurückgegebene Ergebnis aus und schreibt entsprechend dessen Inhalt in die angegebenen Datenpunkte.

Hinweis: Erforderlich sind Programmiergrundkenntnisse und Vertrautheit mit dem Ablauf der Strategieausführung. Die Skriptsyntax beschreibt die Lua-Engine-Referenz.

Parametername Parameterwert Pflichtfeld Parametertyp Beschreibung
dataType Customization Ja String Zu bearbeitender Datentyp: Customization/Collection/Aggregation/Alarm/Share
deviceCode DeviceA Nein String Code des untergeordneten Geräts
dataKey 功率 Ja String Eindeutiger dataKey oder Alarmtyp
dataValue 15 Ja String Datenwert oder Alarminhalt
changeMod true Nein String Schreiben nur bei Änderungen aktivieren
availableDate 2023-01-15T07:00:00+08:00 Nein String Beginn der Gültigkeit (Customization)
expiredDate 2023-01-15T10:00:00+08:00 Nein String Ende der Gültigkeit (Customization)
mqttConnectionConfigId 100101 Nein String ID der MQTT-Verbindungskonfiguration (Alarm)
topic upload Nein String Topic für den Alarm-Upload (Alarm)
qos 1 Nein String QoS (Alarm)

Zeitplandaten (Customization) unterstützen auch den Zeitplantyp Tägliche Wiederholung (DailyRepeat). Verwenden Sie availableTime und expiredTime im Format HH:mm:ss statt availableDate und expiredDate. Der Zeitraum darf Mitternacht nicht überschreiten und wird täglich wiederholt. Als Kurzformen stehen buildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate) ausschließlich für DailyChange und buildDailyRepeatWriteMap(dataKey, dataValue, availableTime, expiredTime) ausschließlich für DailyRepeat zur Verfügung. Siehe Lua-Engine-Referenz.

Ist für einen im Skript referenzierten Datenpunkt kein Wert verfügbar, wird der Sentinel-String __Null__ eingesetzt. Nehmen Sie weder einen leeren String noch nil an. Prüfen Sie ausdrücklich ${dataKey} == "__Null__".

local resultList = {}
-- Benutzerdefinierter Alarminhalt
local errorMap = {}
errorMap.timestamp = OffsetDateTime.now():unixMilli()
errorMap.iotCode = ${数据9}
errorMap.faultCode = ${数据9}
errorMap.faultLevel = ${数据9}
errorMap.faultName = ${数据9}
errorMap.faultBack = ${数据9}
-- Alarminhalt in JSON umwandeln
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

Erwartet wird ein Array mit mehreren Tabellen. Edge-EMS Builder wertet dieses Array aus, prüft die Gültigkeit der enthaltenen Objekte und gibt anschließend die zusammengestellten Schreibobjekte zurück:

[
{
"dataType": "",//Zielobjekttyp
"deviceCode": "",//Eindeutiger Code des untergeordneten Zielgeräts für den Schreibvorgang
"dataKey": "",//Eindeutiger Schlüssel des Zielobjekts (dataKey oder alarmType)
"dataValue": "",//Zu schreibender Wert oder Alarminhalt
"changeMod": true,//Nur bei Änderungen schreiben
"availableDate": "",//Beginn der Gültigkeit der Zeitplandaten
"expiredDate": ""//Ende der Gültigkeit der Zeitplandaten
}
]

Das Ausführungsergebnis wird ausgewertet und sein Inhalt auf Korrektheit geprüft. Zurückgegeben wird ein für die Ausführung vorbereitetes Objekt:

{
"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

  • Grundkonzepte der Triggerschemata (Bedingungs- und Aktionstypen sowie Beispiel zur dynamischen Geräteerkennung): Triggerschemata
  • Vollständige Referenz integrierter Lua-Funktionen und -Module: Lua-Engine-Referenz