Expressions - AWS IoT Events

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Expressions

AWS IoT Eventsディテクタモデルを作成および更新するときに値を指定するためのいくつかの方法が用意されています。式を使用してリテラル値を指定したり、AWS IoT Eventsは、特定の値を指定する前に式を評価できます。

Syntax

リテラル、演算子、関数、参照、および置換テンプレートは、AWS IoT Events式

Literals

  • 整数

  • 10 進数

  • 文字列

  • ブール値

Operators

単項値
  • なし (ブール値):!

  • なし (ビット単位):~

  • マイナス (算術):-

文字列
  • 連結:+

    両方のオペランドは文字列である必要があります。文字列リテラルは一重引用符 (') で囲む必要があります。

    次に例を示します。'my' + 'string'->'mystring'

算術
  • 追算:+

    両方のオペランドは数値である必要があります。

  • 減算:-

  • 除算:/

    除算の結果は、オペランド(除数または被除数)の少なくとも 1 つが 10 進値でない限り、丸められた整数値になります。

  • 乗算:*

ビット単位 (整数)
  • または:|

    次に例を示します。13 | 5->13

  • と:&

    次に例を示します。13 & 5->5

  • XOR:^

    次に例を示します。13 ^ 5->8

  • ない:~

    次に例を示します。~13->-14

ブール値
  • 未満:<

  • 以下または等しい:<=

  • 等しい:==

  • 等しくない:!=

  • より大きい、または等しい:>=

  • 以上:>

  • と:&&

  • または:||

    注記

    の部分式||に未定義のデータが含まれている場合、その部分式はfalse

括弧

括弧を使用して、式内の用語をグループ化できます。

Functions

組み込み関数
timeout("timer-name")

に評価されますtrue指定されたタイマーが経過した場合。置き換え」タイマー名「を引用符で囲み、定義したタイマーの名前に置き換えます。イベントアクションでは、タイマーを定義してから、タイマーを起動したり、リセットしたり、以前に定義したタイマーをクリアしたりできます。フィールドを参照してくださいdetectorModelDefinition.states.onInput|onEnter|onExit.events.actions.setTimer.timerName

あるステートに設定されたタイマーは、別のステートで参照できます。タイマーが参照される状態に入る前に、タイマーを作成した状態を参照する必要があります。

たとえば、検出器モデルには、温度チェックと記録の 2 つの状態があります。温度チェック状態でタイマーを作成しました。recordupDated 状態でタイマーを使用する前に、まず温度チェック状態にアクセスする必要があります。

正確性を確保するために、タイマーを設定する必要がある最小時間は 60 秒です。

注記

timeout()が返すtrueは、実際のタイマーの有効期限後に初めてチェックされ、false以後。

convert(type, expression)

指定された型に変換された式の値を評価します。-typeの値はにする必要があります。String,Boolean, またはDecimal。これらのキーワードの 1 つか、またはキーワードを含む文字列に評価される式を使用します。次の変換のみが成功し、有効な値を返します。

  • ブール値-> 文字列

    1 つの文字列を返す"true"または"false"

  • 小数点->文字列

  • 文字列-> ブール値

  • 文字列-> 小数点

    指定する文字列は、10 進数の有効な表現である必要があります。convert()が失敗します。

もしconvert()が有効な値を返さない場合、その一部である式も無効です。この結果はと同等です。falseを呼び出し、actionsまたはのへの移行nextState式が発生するイベントの一部として指定されます。

isNull(expression)

に評価されますtrue式は NULL を返す場合。たとえば、入力MyInputメッセージの受信{ "a": null }次の式はtrueであるが、isUndefined($input.MyInput.a)に評価されますfalse

isNull($input.MyInput.a)
isUndefined(expression)

に評価されますtrue式が未定義の場合。たとえば、入力MyInputメッセージの受信{ "a": null }次の式はfalseであるが、isNull($input.MyInput.a)に評価されますtrue

isUndefined($input.MyInput.a)
triggerType("type")

-typeの値はとなります。"Message"または"Timer"。に評価されますtrue次の例のようにタイマーが期限切れになったため、イベント条件が評価されているかどうかを示します。

triggerType("Timer")

または、入力メッセージを受信しました。

triggerType("Message")
currentInput("input")

に評価されますtrue指定された入力メッセージが受信されたために、それが表示されるイベント条件が評価されている場合。たとえば、入力Commandメッセージの受信{ "value": "Abort" }次の式はtrue

currentInput("Command")

この関数を使用して、次の式のように、特定の入力が受信され、タイマーが期限切れになっていないために条件が評価されていることを確認します。

currentInput("Command") && $input.Command.value == "Abort"
文字列一致関数
startsWith(expression1, expression2)

に評価されますtrue最初の文字列式が 2 番目の文字列式で始まる場合。たとえば、入力MyInputメッセージの受信{ "status": "offline"}次の式はtrue

startsWith($input.MyInput.status, "off")

両方の式は、文字列値に評価する必要があります。いずれかの式が文字列値に評価されない場合、関数の結果は未定義です。変換は実行されません。

endsWith(expression1, expression2)

に評価されますtrue最初の文字列式が 2 番目の文字列式で終わる場合。たとえば、入力MyInputメッセージの受信{ "status": "offline" }次の式はtrue

endsWith($input.MyInput.status, "line")

両方の式は、文字列値に評価する必要があります。いずれかの式が文字列値に評価されない場合、関数の結果は未定義です。変換は実行されません。

contains(expression1, expression2)

に評価されますtrue最初の文字列式に 2 番目の文字列式が含まれている場合。たとえば、入力MyInputメッセージの受信{ "status": "offline" }次の式はtrue

contains($input.MyInput.value, "fli")

両方の式は、文字列値に評価する必要があります。いずれかの式が文字列値に評価されない場合、関数の結果は未定義です。変換は実行されません。

ビット単位の整数操作関数
bitor(expression1, expression2)

整数式のビット単位の OR を評価します (バイナリ OR 演算は、整数の対応するビットに対して実行されます)。たとえば、入力MyInputメッセージの受信{ "value1": 13, "value2": 5 }次の式は13

bitor($input.MyInput.value1, $input.MyInput.value2)

両方の式は、整数値に評価する必要があります。いずれかの式が整数値に評価されない場合、関数の結果は未定義です。変換は実行されません。

bitand(expression1, expression2)

整数式のビット単位の AND を評価します (バイナリ AND 演算は、整数の対応するビットに対して実行されます)。たとえば、入力MyInputメッセージの受信{ "value1": 13, "value2": 5 }次の式は5

bitand($input.MyInput.value1, $input.MyInput.value2)

両方の式は、整数値に評価する必要があります。いずれかの式が整数値に評価されない場合、関数の結果は未定義です。変換は実行されません。

bitxor(expression1, expression2)

整数式のビット単位のXORを評価します(バイナリXOR演算は、整数の対応するビットに対して実行されます)。たとえば、入力MyInputメッセージの受信{ "value1": 13, "value2": 5 }次の式は8

bitxor($input.MyInput.value1, $input.MyInput.value2)

両方の式は、整数値に評価する必要があります。いずれかの式が整数値に評価されない場合、関数の結果は未定義です。変換は実行されません。

bitnot(expression)

整数式のビット単位の NOT を評価します (バイナリ NOT 演算は整数のビットに対して実行されます)。たとえば、入力MyInputメッセージの受信{ "value": 13 }次の式は-14

bitnot($input.MyInput.value)

両方の式は、整数値に評価する必要があります。いずれかの式が整数値に評価されない場合、関数の結果は未定義です。変換は実行されません。

References

入力

$input.input-name.path-to-data

input-nameを使用して作成する入力です。CreateInputaction.

たとえば、名前の入力がある場合TemperatureInputを定義したinputDefinition.attributes.jsonPathエントリでは、次の使用可能なフィールドに値が表示されることがあります。

{ "temperature": 78.5, "date": "2018-10-03T16:09:09Z" }

値を参照するにはtemperatureフィールドでは、次のコマンドを使用します。

$input.TemperatureInput.temperature

値が配列であるフィールドの場合、配列のメンバーを参照するには[n]。たとえば、次の値があるとします。

{ "temperatures": [ 78.4, 77.9, 78.8 ], "date": "2018-10-03T16:09:09Z" }

の値78.8以下のコマンドで参照できます。

$input.TemperatureInput.temperatures[2]
変数

$variable.variable-name

-variable-nameを使用して定義した変数です。CreateDetectorModelaction.

たとえば、という変数がある場合TechnicianIDを使用して定義したdetectorDefinition.states.onInputEvents.actions.setVariable.variableNameを使用すると、次のコマンドで変数に最後に与えられた(文字列)値を参照できます。

$variable.TechnicianID

変数の値を設定するには、setVariableaction. 式内の変数に値を割り当てることはできません。変数は設定解除できません。たとえば、値を割り当てることはできません。null

注記

(正規表現)パターンに従わない識別子を使用する参照の場合[a-zA-Z][a-zA-Z0-9_]*を使用する場合は、それらの識別子をバッククォート(`). たとえば、名前の入力への参照MyInputという名前のフィールドを持つ_valueは、このフィールドを$input.MyInput.`_value`

エクスプレッションで参照を使用する場合は、次の点を確認してください。

  • 1 つ以上の演算子を持つオペランドとして参照を使用する場合は、参照するすべてのデータ型に互換性があることを確認してください。

    たとえば、次の式では、整数2は両方のオペランドです==および&&演算子。オペランドに互換性があることを確認するには、$variable.testVariable + 1および$variable.testVariable整数または 10 進数である必要があります。

    さらに、整数1のオペランドは+operator. したがって、$variable.testVariable整数または 10 進数である必要があります。

    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
  • 関数に渡される引数として参照を使用する場合は、関数が参照するデータ型をサポートしていることを確認してください。

    たとえば、次のtimeout("time-name")関数は、引数として二重引用符を含む文字列を必要とします。参照を使用する場合、タイマー名値を使用する場合は、二重引用符で囲んだ文字列を参照する必要があります。

    timeout("timer-name")
    注記

    向けのconvert(type, expression)関数の参照を使用する場合、type値の場合、参照の評価結果はString,Decimal, またはBoolean

AWS IoT Events式は、整数、10 進数、文字列、ブールデータ型をサポートします。次の表は、タイプの互換性のないペアのリストです。

互換性のないタイプのペア

整数、文字列

整数、ブール値

10 進数、文字列

10 進、ブール値

文字列、ブール値

置換テンプレート

'${expression}'

-${}は、文字列を補間文字列として識別します。-expressionは任意ですAWS IoT Events式 これには、演算子、関数、および参照が含まれます。

たとえば、を使用して可変アクションを設定アクションを使用して変数を定義します。variableNameSensorID であり、value10 です。次の置換テンプレートを作成できます。

置換テンプレート 結果文字列
'${'Sensor ' + $variable.SensorID}'

"Sensor 10"

'Sensor ' + '${$variable.SensorID + 1}'

"Sensor 11"

'Sensor 10: ${$variable.SensorID == 10}'

"Sensor 10: true"

'{\"sensor\":\"${$variable.SensorID + 1}\"}'

"{\"sensor"\:\"11\"}"

'{\"sensor\":${$variable.SensorID + 1}}'

"{\"sensor\":11}"