すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:関数

最終更新日:Feb 06, 2024

ルールエンジンは、データを処理するためにSQL文で呼び出すことができる関数を提供します。

データ転送機能でサポートされている関数

関数

説明

abs (番号)

数値の絶対値を返します。

asin (番号)

数値の逆正弦を返します。

属性 (キー)

タグキーのデバイスタグ値を返します。 指定されたキーを持つタグがデバイスにアタッチされていない場合、タグ値は返されません。 SQL文をデバッグすると、実際のデバイスまたはタグが存在しないため、null文字列が返されます。

concat(string1, string2)

文字列を連結します。 連結された文字列が返されます。

例: concat(field,'a')

cos (番号)

数値の余弦を返します。

cosh(number)

数値の双曲線コサインを返します。

crypto(field,String)

フィールドの値を暗号化します。

Stringパラメーターは、暗号化アルゴリズムを指定します。 MD2、MD5、SHA1、SHA-256、SHA-384、およびSHA-512のアルゴリズムがサポートされています。

deviceName()

現在のデバイスの名前を返します。 SQL文をデバッグすると、実際のデバイスが存在しないため、null文字列が返されます。

endswith (入力、サフィックス)

入力文字列がサフィックスパラメーターで指定された文字列で終わるかどうかをチェックします。

exp (番号)

指定された数の累乗の数学定数eの値を返します。

フロア (番号)

数値以下の最大の整数を返します。

log(n, m)

mを底とする数nの対数を返します。

mを指定しない場合は、デフォルトの基数10が使用されます。 この場合、log(n) が返されます。

lower(string)

指定した文字列のすべての文字を小文字に変換し、小文字の文字列を返します。

mod(n, m)

nを除数mで割った後の余りを返します。

nanvl (値、デフォルト)

プロパティの値を返します。

valueパラメーターは、プロパティの名前を指定します。 プロパティの値がnullの場合、関数はデフォルトパラメーターの値を返します。

newuuid()

ランダムなUUID (universally unique identifier) を返します。

payload(textEncoding)

デバイスによって送信されるメッセージペイロードを返します。 ペイロードは、textEncodingパラメーターで指定されたエンコーディングスキームを使用してエンコードされます。

デフォルトのエンコード方式はUTF-8です。 これは、payload() 関数とpayload('utf-8 ') 関数が同じ結果を返すことを示します。

パワー (n、m)

mの累乗の数nを返します。

ランド ()

0以上1未満の乱数を返します。

replace(source, substring, replacement)

ソース列の部分文字列を置換文字列に置き換えます。

例: replace(field,'a','1')

sin(n)

数nの正弦を返します。

sinh(n)

数nの双曲線正弦を返します。

タン (n)

数nのタンジェントを返します。

tanh(n)

数nの双曲正接を返します。

thingPropertyFlatMap (プロパティ)

Thing Specification Language (TSL) モデルのプロパティの値を返します。 プロパティに複数の値がある場合は、値をアンダースコア (_) で区切ります。 TSLモデルに50を超えるプロパティが含まれている場合、データ転送機能はTSLモデル全体を転送できません。 この関数を呼び出して、TSLモデルからプロパティデータを抽出できます。 これにより、TSLモデルのすべてのプロパティを他のAlibaba Cloudサービスに転送できます。

関数のプロパティパラメーターには複数のプロパティを指定できます。 プロパティを指定しない場合、プロパティのすべての値が抽出されます。

例えば、関数thingPropertyFlatMap('Power', 'Position') は、「Power」: 「On」、「Position_latitude」: 39.9、「Position_longitude」: 116.38をメッセージ本文に追加する。

timestamp (形式)

現在のシステム時刻のタイムスタンプをGMT + 8で返します。

format パラメーターは省略可能です。 formatパラメーターを設定しない場合、現在のシステム時刻のタイムスタンプが返されます。 たとえば、timestamp() 関数は1543373798943を返し、timestamp('yyyy-MM-dd\'T\'HH:mm:ss\'Z\') 関数は2018-11-28T10:56:38Zを返します。

timestamp_utc (フォーマット)

現在のシステム時刻のUTCタイムスタンプを指定された形式で返します。

format パラメーターは省略可能です。 formatパラメーターを設定しない場合、現在のシステム時刻の13桁のタイムスタンプが返されます。 たとえば、timestamp_utc() 関数は1543373798943を返し、timestamp_utc('yyyy-MM-dd\'T\'HH:mm:ss\'Z\') 関数は2018-11-28T02:56:38Zを返します。

トピック (番号)

指定したレベルのトピック情報を返します。

たとえば、トピックの名前は /alDbcLe ****/TestDevice/user/setです。 topic() 関数は、完全なトピック名 /alDbcLe ****/TestDevice/user/setを返します。 topic(1) 関数は、最初のレベルのalDbcLe **** を返します。 topic(2) 関数は、第2レベルのTestDeviceを返します。

upper (文字列)

指定した文字列のすべての文字を大文字に変換し、大文字の文字列を返します。

たとえば、upper(alibaba) 関数はALIBABAを返します。

to_base64(*)

メッセージペイロードをバイナリデータからBase64-encoded文字列に変換し、変換後のメッセージペイロードを返します。 元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。

messageId()

IoT Platformによって生成されたメッセージIDを返します。

部分文字列 (target, start, end)

指定された文字列の一部を返します。

パラメータ説明

  • target: 元の文字列。 This parameter is required.

  • start: 返された文字の開始位置。 その位置の文字も返されます。 This parameter is required.

  • end: 返された文字が終わる位置。 その位置の文字は返されません。 このパラメーターはオプションです。

説明
  • 文字列型と整数型のデータのみがサポートされています。 整数は、整数が処理される前に文字列に変換される。

  • 一重引用符 ('') のペアで定数文字列を囲みます。 二重引用符 (") で囲まれたデータは、整数として解析されます。

  • 入力パラメーターが無効な場合、たとえば、データ型がサポートされていない場合、SQL解析は失敗し、ルールはトリガーされません。

例:

  • 部分文字列 ('012345', 0) = "012345"

  • 部分文字列 ('012345', 2) = "2345"

  • 部分文字列 ('012345', 2.745) = "2345"

  • 部分文字列 (123, 2) = "3"

  • 部分文字列 ('012345 ', -1) = "012345"

  • 部分文字列 (true、1.2) エラー

  • 部分文字列 ('012345 ', 1, 3) = "12"

  • 部分文字列 ('012345', -50,50) = "012345"

  • 部分文字列 ('012345', 3, 1) = ""

to_hex(*)

メッセージペイロードをバイナリデータから16進文字列に変換し、変換後にメッセージペイロードを返します。 元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。

user_property()

MQTT 5.0がデバイスで使用されている場合、UserPropertyパラメーターの値を取得します。

  • user_property() 関数は、すべてのプロパティデータを取得するために呼び出されます。

  • user_property('${Key}') 関数は、指定されたキーのデータを取得するために呼び出されます。

たとえば、デバイスによって報告されるUserPropertyパラメーターの値は、{"a": "1", "b": "2"} です。

  • user_property() 関数は、"{\" a\": \" 1\", \" b\": \" 2\"}" を返します。

  • user_property('a') 関数は、"{\" a\": \" 1\"}" を返します。

things_function_type()

報告されたTSLデータのタイプを照会します。 この機能は、TSLイベントとTSLサービスにのみ適用されます。 この関数の戻り値は、照会されるTSL機能のタイプによって異なります。

  • イベントを照会すると、イベントの識別子が返されます。

  • サービスを照会すると、サービスの識別子が返されます。

たとえば、/SdfgeW ***/device1/thing/event/BrokenInfo/postトピックを使用して、BrokenInfoイベントを転送します。 things_function_type() 関数を呼び出してイベントを照会すると、報告されたイベントの識別子BrokenInfoが返されます。

things_property('${パラメーター名}')

TSLプロパティ、サービス、またはイベントの値を照会します。 この関数はTSLデータにのみ適用されます。

たとえば、/${productKey}/${deviceName}/thing/event/property/postトピックを使用して、CurrentTemperatureプロパティを転送します。 things_property('CurrentTemperature') 関数は、CurrentTemperatureプロパティの報告値を返します。

関数を呼び出して、SQL文のSELECT句およびWHERE句のデータを取得または処理できます。

例えば、温度センサ製品は、温度特性を有する。 次のスクリプトは、デバイスによって送信されるTSLプロパティデータを示しています。

{
    "deviceType": "カスタム" 、
    "iotId": "H5KURkKdibnZvSls **** 000100" 、
    "productKey": "a1HHrkm ****" 、
    "gmtCreate": 1564569974224、
    "deviceName": "TestDevice1" 、
    "items": {
        "温度": {
            "value": 23.5、
            "time": 1564569974229
        }
    }
}

温度センサー製品には、TestDevice1、TestDevice2、およびTestDevice3という名前の複数のデバイスがあります。 送信されたプロパティ値が38を超える場合にのみ、温度プロパティがFunction Computeに転送されて処理されます。 次の図は、送信されたデバイスデータのフィルタリングに使用されるルールのSQL文を示しています。

Write an SQL Statement

SQL ステートメント :

SELECT deviceName() をdeviceName、things_property('Temperature') をTemperatureとして
します。「 /g5or0 ***/+ thing/event/property/post」から
WHERE things_property('Temperature')>38およびdeviceName() in ('TestDevice1', 'TestDevice2', 'TestDevice3') 

この例では、deviceName() およびthings_property('Temperature') 関数が呼び出されます。

  • 関数は、送信されたデータをフィルタリングしてデバイス名とTemperatureパラメーターの値を取得するようにSELECT句で設定されています。

  • これらの関数は、条件を指定するためにWHERE句で設定されます。 >38およびin ('TestDevice1' 、'TestDevice2' 、'TestDevice3') は、温度が38 ℃ を超え、デバイス名がTestDevice1、TestDevice2、またはTestDevice3である場合にのみ、プロパティデータが転送されることを示します。

SQL文にSELECT句とWHERE句を記述する方法と、ルールエンジンでサポートされている条件式の詳細については、「SQL文」をご参照ください。