コンテンツにスキップ
JelinaJelina Documentation技術ドキュメント
公式サイトに戻る

トリガープラン

スクリプトの構文は Lua です。全体の概念(トリガー条件とアクションの分類)は トリガープラン を先に参照してください。このページでは EXPRESSION 型アクションスクリプトの書き込みパラメーター、戻り値構造、完全な例を説明します。

  1. トリガーロジックは他の種類のプランと同じで、異なるのはアクションのスクリプト内容です。
  2. 実行後、Edge-EMS Builder バックエンドがスクリプトの戻り値を解析し、指定ポイントへ内容に従って書き込みます。

注:プログラミングの基礎と制御ロジック実行の流れに関する知識が必要です。構文は Lua エンジンの規則 を参照してください。

パラメーター名 値 必須 型 説明
dataType Customization はい String 操作するデータ型:Customization/Collection/Aggregation/Alarm/Share
deviceCode DeviceA いいえ String スレーブデバイスコード
dataKey 功率 はい String データの一意の dataKey またはアラーム種類
dataValue 15 はい String データ値またはアラーム内容
changeMod true いいえ String 変化時書き込みを有効にするか
availableDate 2023-01-15T07:00:00+08:00 いいえ String 有効開始日時(Customization)
expiredDate 2023-01-15T10:00:00+08:00 いいえ String 有効終了日時(Customization)
mqttConnectionConfigId 100101 いいえ String MQTT 接続設定 ID(Alarm)
topic upload いいえ String アラーム送信 Topic(Alarm)
qos 1 いいえ String QOS(Alarm)

時間帯別データ(Customization)は**毎日繰り返す(DailyRepeat)**スケジュールにも対応します。availableDate / expiredDate の代わりに availableTime / expiredTime(HH:mm:ss 形式、日付をまたぐ指定不可)を使用し、毎日適用します。短縮関数 buildCustomizationWriteMap(dataKey, dataValue, availableDate, expiredDate)(DailyChange 専用)または buildDailyRepeatWriteMap(dataKey, dataValue, availableTime, expiredTime)(DailyRepeat 専用)を使用できます。Lua エンジンの規則 を参照してください。

参照ポイントの値を取得できない場合、センチネル文字列 __Null__ が挿入されます。空文字列や nil と仮定せず、${dataKey} == "__Null__" で明示的に判定してください。

local resultList = {}
-- アラーム内容を定義
local errorMap = {}
errorMap.timestamp = OffsetDateTime.now():unixMilli()
errorMap.iotCode = ${数据9}
errorMap.faultCode = ${数据9}
errorMap.faultLevel = ${数据9}
errorMap.faultName = ${数据9}
errorMap.faultBack = ${数据9}
-- アラーム内容を 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

複数の Table を含む配列を返します。Edge-EMS Builder は配列を解析し、各オブジェクトの内容を検証して、組み立てた書き込みオブジェクトを返します。

[
{
"dataType": "",//操作対象
"deviceCode": "",//スレーブデバイスの一意のコード(書き込み先のデバイスを指定)
"dataKey": "",//操作対象の一意の KEY(dataKey または alarmType)
"dataValue": "",//書き込み内容またはアラーム内容
"changeMod": true,//変化時のみ書き込むか
"availableDate": "",//時間帯別データの有効開始時刻
"expiredDate": ""//時間帯別データの有効終了時刻
}
]

実行結果を解析して内容の正確性を検証し、実行前のラッパーオブジェクトを返します。

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