コンテンツにスキップ

MXL - Meddle式言語

**MXL(Meddle Expression Language)**は、Meddleコネクタで条件とロジックを定義するために使用されるシンプルな式言語です。

使用場所:

MXL式は、ペイロードデータに基づいてブール値(真/偽)に評価されます。

フィールド名 演算子 値
temperature > 80
pressure < 10
status == "active"
count != 0
演算子説明
>より大きいtemperature > 80
<より小さいpressure < 10
>=以上humidity >= 60
<=以下speed <= 100
==等しいstatus == "active"
!=等しくないcount != 0
演算子説明
&&AND(両方の条件が真である必要がある)temp > 80 && press < 10
``

数値を比較:

temperature > 25.5
pressure >= 101.3
count == 100
speed != 0

文字列値を比較(二重引用符を使用):

status == "active"
mode != "manual"
error_code == "E001"

ブール値を比較:

enabled == true
fault != false

すべての条件が真である必要があります:

temperature > 20 && temperature < 30
pressure > 100 && humidity < 80 && status == "running"

少なくとも1つの条件が真である必要があります:

temperature > 80 || pressure > 150
status == "error" || status == "fault" || status == "stopped"

グループ化には括弧を使用(サポートされている場合):

(temperature > 80 || pressure > 150) && status == "active"

値が範囲内にあるかチェック:

temperature >= 20 && temperature <= 30

値がしきい値を超えたときにアラート:

temperature > 80
pressure > 150
vibration > 5.0

特定のステータス値をチェック:

status == "error"
status != "running"
mode == "manual"

複数の条件でアラート:

temperature > 100 || pressure > 150 || vibration > 5

複数の条件が満たされていることを確認:

temperature > 50 && pressure > 100 && flow > 10
// 高温アラート
temperature > 80
// 温度が範囲外
temperature < 15 || temperature > 35
// 圧力を伴う臨界温度
temperature > 100 && pressure > 150
// マシンが予期せず停止
status == "stopped" && runtime > 0
// エラー状態
status == "error" || status == "fault"
// 自動モードではない
mode != "auto"
// 欠陥検出
defect_count > 0
// 仕様外
dimension < 9.9 || dimension > 10.1
// 複数の品質パラメータ
hardness < 50 || surface_finish > 2.0 || weight < 100
// プロセスが制御不能
temperature > 90 || pressure < 95 || flow < 50
// 安定した動作
temperature >= 80 && temperature <= 85 && pressure > 100
// 緊急停止条件
temperature > 120 || pressure > 200 || vibration > 10
// 異常検出
is_anomaly == true
// 高い異常スコア
anomaly_score > 0.8
// 複数の指標
vibration > 5 || temperature > 90 || anomaly_score > 0.7
// 良い
temperature > 80
machine_status == "running"
// 避ける
t > 80
s == "r"
// 等しいかどうかには==を使用
status == "active"
// 等しくないかどうかには!=を使用
count != 0
// 良い - 関連する条件を一緒に
temperature > 80 && pressure > 150
// 良い - 代替条件
status == "error" || status == "fault"

AND(&&)はOR(||)よりも優先順位が高い:

// これは(A && B) || Cをチェック
temperature > 80 && pressure > 150 || humidity > 90
// 明確にするために括弧を使用
(temperature > 80 && pressure > 150) || humidity > 90

さまざまな入力値で式をテストして、期待どおりに動作することを確認します。

  • 算術演算なし: temperature + 10 > 90はできません
  • 関数呼び出しなし: abs(temperature) > 80はできません
  • ネストされたフィールドアクセスなし: sensor.temperature > 80はできません
  • 文字列比較のみ: 正規表現やパターンマッチングなし

チェック:

  1. フィールド名がペイロードと正確に一致する(大文字小文字を区別)
  2. データ型が一致する(数値vs文字列)
  3. 演算子が正しい(==であって=ではない)
  4. 文字列値が二重引用符で囲まれている

チェック:

  1. ロジックが正しい(ANDvsOR)
  2. しきい値が適切
  3. フィールドがペイロードに存在する

一般的なエラー:

  • ==の代わりに=を使用
  • 文字列の周りの引用符が欠落
  • フィールド名のタイプミス
  • 演算子の優先順位が間違っている
{
"type": "MeddleTrigger",
"config": {
"mode": "DirectDispatch",
"condition": "temperature > 80 && status == \"active\"",
"payload": {
"alert": "high_temperature"
}
}
}
{
"type": "MeddleAlert",
"config": {
"name": "Critical Alert",
"condition": "temperature > 100 || pressure > 200",
"minDuration": 10,
"cooldown": 300,
"notification": {
"type": "Email",
"toEmails": ["alerts@example.com"]
}
}
}