チュートリアル: 定数の追加

このチュートリアルでは、定数を追加し、それをバッチ・データ・メトリックで使用します。 ストリーミング・データ・メトリックは定数を使用しません。

始める前に

  1. ご使用の環境に Python 3.9.x をインストールします。
  2. IoT 関数をローカル環境にインストールします。 「IoT 機能 README」の指示に従ってください。
    あるいは、「 チュートリアル: カスタム関数の追加」の「始める前に」セクションのステップに従って、 IoT 関数とその依存関係をインストールすることもできます。 HelloWorld スターター・パッケージを複製し、そのスターター・パッケージを PyCharm にインポートします。 PyCharm から要件をインストールします。
  3. 完全なチュートリアル: 式を追加して distanceMaximo Monitor のロボット デバイス タイプに対するメトリック。

このタスクについて

注: このチュートリアルを完了するには、サンプルのデバイス・タイプ・テンプレートとデータを使用します。 サンプル・デバイス・タイプは、最新バージョンのデバイス・タイプを使用せず、ストリーミング・データ・メトリックをサポートしません。 詳しくは、 ユーザーのための入門を参照してください。

遅延を考慮して距離を調整します。

ステップ

定数値を参照する計算をサンプル・データに適用するには、以下のステップを実行します。

ステップ 1: 計算を定義する

次のように、「distance_adjusted_by_constant」を定義します。

df['distance_adjusted_by_constant'] = df['distance']*delay

ステップ 2: 資格情報をファイルに保存する

接続するための認証情報を設定する Maximo Monitor.

  1. credentials_as.json ファイルをダウンロードします。
  2. 変数をデータに置き換え、ファイルをローカル・マシンに保存します。
注: 資格情報ファイルを外部リポジトリーに保存しないように注意してください。

ステップ3:グローバル定数の作成

以下のペイロードでPOST定数APIを実行する

[
    {
        "name": "ArrayConstant",
        "enabled": true,
        "value": {
            "value": [
                "A",
            ]
        },
        "metadata": {
            "jsonSchema": {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "type": "array",
                "minItems": 1,
                "items": {
                    "type": "string"
                }
            },
            "dataType": "ARRAY",
            "values": [
                "A",
                "B",
                "C"
            ],
            "description": "Sample multi-valued array",
            "dataTypeForArray": [
                "LITERAL"
            ],
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
    {
        "name": "alpha",
        "enabled": true,
        "value": {
            "value": 4
        },
        "metadata": {
            "dataType": "NUMBER",
            "values": null,
            "description": "general purpose numeric constant",
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
    {
        "name": "delay",
        "enabled": true,
        "value": {
            "value": 120
        },
        "metadata": {
            "dataType": "NUMBER",
            "values": null,
            "description": "Adjustment to output due to delay",
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
    {
        "name": "text",
        "enabled": true,
        "value": {
            "value": "ABC"
        },
        "metadata": {
            "dataType": "LITERAL",
            "values": null,
            "description": "This is string text",
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
    {
        "name": "json",
        "enabled": true,
        "value": {
            "value": {
                "A": "B",
                "B": "A",
                "C": {
                    "A": "B",
                    "B": "A"
                }
            }
        },
        "metadata": {
            "dataType": "JSON",
            "values": null,
            "description": "This is JSON text",
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
    {
        "name": "Gamma",
        "enabled": true,
        "value": {
            "value": 5
        },
        "metadata": {
            "dataType": "NUMBER",
            "values": null,
            "description": "general purpose numeric constant",
            "type": "CONSTANT",
            "required": true,
            "tags": []
        },
        "resourceId": null,
        "resourceUUID": null,
        "isBuiltin": false
    },
]

ステップ 4: 定数の値を UI から設定する

  1. 「セットアップ」 ページの 「デバイス」 タブで、デバイス・タイプを選択し、 「デバイス・タイプのセットアップ」をクリックします。
  2. 「デバイス・タイプの構成」アイコンをクリックし、 「制約の管理」を選択します。
  3. delay 制約については、「編集」アイコンをクリックします。
  4. 「2」の値を割り当てて、「セーブ」をクリックします。

ステップ 5: 式内で定数を参照する

  1. 「データ」 タブで、 「メトリックの作成」 をクリックします。
  2. カタログからPythonExpression関数を選択します。
  3. スコープを設定し、 「次へ」をクリックします。
  4. 次の式を入力するか貼り付けます。
        df['distance']*c['delay']
  5. 次へをクリックします。
  6. distance_adjusted_by_factor を出力として指定します。
  7. 作成 をクリックします
  8. 新しい distance_adjusted_by_factor メトリック・データを表示します。

を最大5分待つ。 Maximo Monitor まで待つ。

定数値の更新、復帰、削除の手順

定数の更新、値の変更、定数の削除は以下の手順で行います

グローバル・デフォルト値の更新

  1. Setup(セットアップ) ページの Devices(デバイス) タブで、デバイスの種類を選択し、クリックする。
  2. 「デバイス・タイプの構成」アイコンをクリックし、 「制約の管理」を選択します。
  3. 定数ダイアログボックスで、 定数にカーソルを合わせ、 その他のアクションを選択し、 グローバルデフォルト値の変更を選択します
  4. 値を割り当て、 Saveをクリックする。

リソースレベル定数の更新

  1. Setup(セットアップ) ページの Devices(デバイス) タブで、デバイスの種類を選択し、クリックする。
  2. 「デバイス・タイプの構成」アイコンをクリックし、 「制約の管理」を選択します。
  3. 定数ダイアログボックスで、 定数にカーソルを合わせ、 編集を選択します
  4. 値を割り当て、 Saveをクリックする。

リソースレベル定数をグローバルなデフォルト値に戻す

  1. Setup(セットアップ) ページの Devices(デバイス) タブで、デバイスの種類を選択し、クリックする。
  2. 「デバイス・タイプの構成」アイコンをクリックし、 「制約の管理」を選択します。
  3. 定数ダイアログボックスで、 定数にカーソルを合わせ、 編集を選択します
  4. グローバルデフォルト値に戻すオプションを選択します。
  5. 選択を確定するには、 「戻す 」を選択する。

オプションのステップ:定数の登録を解除する

unregister_constant.py スクリプトを作成して実行します。 定数の登録を解除すると、この定数を使用する計算に影響を与える。

  #Import packages and libraries

  import logging
  logging.basicConfig(level=logging.DEBUG)
  logger = logging.getLogger(__name__)
  import pandas as pd
  import json
  #Import these classes from IoT Functions
  from iotfunctions.db import Database
  from iotfunctions.ui import UISingle,UIMulti

  #Connect to the Maximo Monitor
  with open('credentials_as.json', encoding='utf-8') as F:
    credentials = json.loads(F.read())
  db_schema = None
  db = Database(credentials=credentials)

  #Connect to the Maximo Monitor
  db = Database(credentials = credentials)

  #Unregister the constant using the database object
  db.unregister_constants(['delay'])

オプションのステップリソースレベルまたはグローバルレベルの定数を削除する

  1. Setup(セットアップ) ページの Devices(デバイス) タブで、デバイスの種類を選択し、クリックする。
  2. 「デバイス・タイプの構成」アイコンをクリックし、 「制約の管理」を選択します。
  3. 定数ダイアログボックスで、 定数にカーソルを合わせ、 その他のアクションを選択し、 定数の削除を選択します
  4. 選択を確定するために削除を選択します。