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

IoT Platform:TSLモデルに関するFAQ

最終更新日:Apr 17, 2025

このトピックでは、Thing Specification Language (TSL) モデルを使用してデバイスとIoT Platform間の通信を可能にする方法に関するよくある質問 (FAQ) に対する回答を提供します。

TSLモデルファイルをインポートするときに検証が失敗した場合はどうすればよいですか?

発行

次の図に示すように、TSLモデルファイルをインポートすると検証エラーが発生します。 Issue

解決策

検証エラーを修正するには、次のソリューションを使用します。

  • 解決策1: TSLモデルファイルの形式を確認し、ファイルがJSON形式であることを確認します。

  • 解決策2: [ダウンロードして表示] をクリックしてerrors.txtファイルを取得します。 errors.txtファイルに基づいて問題のトラブルシューティングと解決を行います。

    errors.txtファイルの詳細については、次のサンプルファイルをご参照ください。

    サンプルTSLモデルファイル:

    {
        "スキーマ":"https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json" 、
        "profile":{
            "productKey":"a1Jk ***"
        },
        "services":[],
        "properties": 1,
        "events": [] 、
        "functionBlockId": "** mtest "、
        "functionBlockName": "カスタムモジュール1"
    } 

    サンプルerrors.txtファイル:

    [
      {
        "path": [
          "プロパティ"
        ],
        "property": "instance.properties" 、
        "message": "配列型ではない" 、
        "schema": {
          "type": "array"、
          "items": {
            "$ref": "#/definition /propertyDefinition"
          }
        },
        "instance": 1,
        "name": "type",
        "argument": [
          「配列」
        ],
        "stack": "instance.propertiesは配列型ではありません"
      },
      {
        "path": [
          "functionBlockId"
        ],
        "property": "instance.functionBlockId" 、
        "message": "パターンと一致しません \" ^[_a-zA-Z0-9]{1,30 }$\ "" 、
        "schema": {
          "type": "string"、
          "pattern": "^[_a-zA-Z0-9]{1,30}$"
        },
        "instance": "** mtest "、
        "name": "パターン" 、
        "引数": "^[_a-zA-Z0-9]{1,30}$" 、
        "stack": "instance.functionBlockIdがパターンと一致しない \" ^[_a-zA-Z0-9]{1,30 }$\ ""
      }
    ]

    パラメーター

    説明

    パス

    エラーのパス。 この例では、次のエラーが検出されます。

    // propertiesパラメーターの値は配列ではありません。
    "path": [
          "プロパティ"
        ]
    // functionBlockIdパラメーターの値に無効な文字が含まれています。
    "path": [
          "functionBlockId"
        ]

    property

    "path" の無効なプロパティ。

    たとえば、"path": ["functionBlockId" ] では、instance.functionBlockIdプロパティの値が無効です。

    message

    エラーメッセージを示します。

    たとえば、"path": ["functionBlockId" ] では、instance.functionBlockIdプロパティのエラーメッセージdoes not match pattern \"^[_a-zA-Z0-9]{1,30 }$\" が返されます。

    schema

    TSLモデルファイルの検証に使用されるルール。

    たとえば、"path": ["functionBlockId" ] では、typepatternのルールが使用されます。

    ルールの詳細については、「schema」をご参照ください。

    インスタンス

    検証されたオブジェクト。

    たとえば、"path": ["functionBlockId" ] では、"functionBlockId": "** mtest "の設定が検証されます。

    name

    検証で一致しないルールの名前。

    たとえば、"path": ["functionBlockId" ] では、**mtestの値がpatternルールと一致しません。

    引数

    検証で一致しないルールの内容。

    たとえば、"path": ["functionBlockId" ] では、パターンルールの内容は ^[_a-zA-Z0-9]{1,30}$ です。

    スタック

    プロパティパラメーターとメッセージパラメーターの連結値。

詳細は、「jsonschema」をご参照ください。

プロパティデータの送信、履歴データの送信、およびプロパティの複数の値の同時送信の違いは何ですか?

下表に違いを示します。

操作

説明

プロパティデータの送信

デバイスは、そのプロパティデータのスナップショットをIoT Platformに送信します。 送信されたデータでは、タイムスタンプはオプションです。

  • 送信されたデータにタイムスタンプが含まれている場合、IoT Platformは、プロパティデータが送信された時刻を記録するためにタイムスタンプを保存します。

    デバイスは、一度に1つのタイムスタンプのみでプロパティデータを送信できます。

  • 送信されたプロパティデータにタイムスタンプが含まれていない場合、IoT Platformはデータが送信された時刻を記録するタイムスタンプを生成します。

過去の資産データを送信する

デバイスは、複数のプロパティの値をIoT Platformに送信します。 値は、同じ時点で記録される。 送信されたデータにタイムスタンプを指定する必要があります。

デバイスは、異なるタイムスタンプを有する複数のプロパティの値を一度に提示することができる。

プロパティの複数の値を一度に送信する

デバイスは、プロパティの複数の値をIoT Platformに送信します。 値は、異なる時点で記録される。 送信されたデータにタイムスタンプを指定する必要があります。

デバイスは、異なるタイムスタンプを有する複数のプロパティの値を一度に提示することができる。

デバイスがプロパティデータ、履歴データ、またはプロパティの複数の値を送信すると、IoT Platformはタイムスタンプに基づいてデータレコードを生成します。

コミュニケーショントピックとデータ形式の違い

トピックとデータ形式は、IoT Platformに送信されるデータの種類によって異なります。 詳細については、「デバイスはIoT Platformにプロパティデータを送信」、「デバイスはIoT Platformに過去のTSLデータを送信」、「デバイスは一度に複数のプロパティとイベントをIoT Platformに送信」をご参照ください。

この例では、温度プロパティのデータはデバイスによってIoT Platformに送信されます。

  • デバイスは、温度プロパティのスナップショット値を送信します。

    1. デバイスは、次のtemperatureプロパティの値を、タイムスタンプとともに左から右に順番に送信します。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. デバイスは、温度プロパティのスナップショット値100を送信します。 次のデータは、デバイスがデータの送信に使用する方法に基づいて表示されます。

      • タイムスタンプが存在しない場合、IoT Platformはデータが送信された時刻に基づいてタイムスタンプを生成します。 この例では、15:30:00が使用されます。 この場合、100はIoT Platformコンソールに温度プロパティの値として表示されます。 値100は、データレコード内の温度特性の最新の値でもある。

      • タイムスタンプ (たとえば、15:00:00) が指定されている場合、100は15:00:00のtemperatureプロパティの値として80を置き換えます。 この場合、100はIoT Platformコンソールに温度プロパティの値として表示されます。 データレコードのtemperatureプロパティの最新値は15:10:00に90です。

  • デバイスは、温度プロパティの履歴値を送信します。

    1. デバイスは、温度特性の以下の履歴値を同時に送信します。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. デバイスは、温度特性の以下の履歴値を同時に送信します。

      13:10

      14:10

      100

      200

      データベースに書き込まれた最新の温度値は、温度プロパティの値としてIoT Platformコンソールに表示されます。 この例では、13:10:00の100が表示されるか、14:10:00の200が表示されます。 データレコードのtemperatureプロパティの最新値は15:10:00に90です。

デバイスがカスタムトピックを使用してTSLデータを送信した後、デバイスのTSLデータがIoT Platformコンソールで更新されないのはなぜですか。

デバイスは、カスタムトピックではなく、TSL通信トピックを使用してTSLデータを送信する必要があるためです。 詳細については、「トピック」をご参照ください。

デバイスから送信されたTSLデータを取得するにはどうすればよいですか。

TSLデータを取得するには、次のいずれかの方法を使用します。

  • サーバー側サブスクリプション: IoT Platformのサーバー側サブスクリプション機能を使用して、デバイスアップストリーム通知タイプのメッセージをサブスクライブできます。 次に、IoT Platformは、サブスクリプション設定に基づいて、製品内のすべてのデバイスから指定されたタイプのメッセージをサーバーに転送します。 サーバー側サブスクリプションを設定するには、次のいずれかの方法を使用します。

  • データ転送: ルールエンジンのデータ転送機能を使用して、デバイスデータを複数のAlibaba Cloudサービスに転送することで、データ転送ルールを設定できます。 サービスには、Message Service (MNS) 、ApsaraDB RDS、Tablestore (OTS) 、Function Compute、Lindorm、およびApache RocketMQ用のMessage Queueが含まれます。 詳細については、「データ転送 (旧バージョン) 」および「データ転送 (新バージョン) 」をご参照ください。

  • IoT Platform APIの操作

    API

    説明

    QueryDevicePropertyStatus

    デバイスのすべてのプロパティスナップショットを照会します。

    QueryDeviceOriginalPropertyStatus

    指定されたデバイスによって送信された元のプロパティスナップショットを照会します。 これらのスナップショットには、指定されたTSLモデルによって検証および検証されないプロパティが含まれます。

    QueryDeviceOriginalPropertyData

    指定されたデバイスによって送信された元のプロパティレコードを照会します。 これらのレコードには、指定されたTSLモデルによって検証され、検証されないプロパティが含まれます。

    QueryDeviceOriginalEventData

    指定されたデバイスによって送信されたイベントレコードを照会します。 これらのレコードには、指定されたTSLモデルによって検証されたイベントと検証されなかったイベントが含まれます。

    QueryDeviceOriginalServiceData

    指定されたデバイスによって送信された元のサービスレコードを照会します。 これらのレコードには、指定されたTSLモデルによって検証されたサービスと検証されなかったサービスが含まれます。

    QueryDeviceDesiredProperty

    デバイスの必要なプロパティ値を照会します。

    QueryDevicePropertyData

    指定された期間内のデバイスのプロパティのデータを照会します。

    QueryDevicePropertiesData

    指定された期間内にデバイス内の複数のプロパティのデータを照会します。

    QueryDeviceEventData

    デバイスの元のイベントレコードを照会します。

    QueryDeviceServiceData

    デバイスのサービス呼び出しレコードを照会します。

デバイスから送信されたTSLデータがIoT Platformコンソールに表示されないのはなぜですか。

送信されたTSLデータが検証を必要としないか、検証に失敗した場合、TSLデータはIoT Platformコンソールに表示されません。 デバイスがIoT PlatformにTSLデータを送信すると、IoT Platformは指定された検証タイプとTSL定義に基づいてデータを検証します。 デバイスのTSLデータを表示するには、次の手順を実行します。IoT Platformコンソールにログインし、TSLデータを表示するデバイスを見つけて、[操作] 列の [表示] をクリックします。 [デバイスの詳細] ページで、[TSLデータ] タブにTSLデータが表示されます。 詳細については、「TSLデータの検証」をご参照ください。

プロダクトを作成するときは、検証タイプを指定する必要があります。 詳細については、「プロダクトの作成」をご参照ください。

IoT PlatformがデバイスにTSLプロパティ設定要求と目的のプロパティ値を正常に送信した後にTSLデータが更新されない場合はどうすればよいですか。

この問題をトラブルシューティングするには、次の操作を実行します。

  • デバイス: デバイスがIoT Platformに接続されていることを確認します。 デバイスの接続方法の詳細については、「デバイスSDKのダウンロード」をご参照ください。

    重要

    IoT Platformがデバイスプロパティを設定する要求をデバイスに正常に送信すると、要求は受信されますが、デバイスは要求を実行できません。 デバイスSDKがプロパティ設定要求に応答した後、デバイスは最新のプロパティ値を送信して、プロパティ値が変更されたことを証明する必要があります。

    デバイスシミュレーターまたはMQTT.fxを使用してデバイスをシミュレートし、シミュレートしたデバイスをIoTプラットフォームに接続してから、デバイスのメッセージングをオンラインでデバッグすることもできます。 詳細については、以下のトピックをご参照ください。

  • IoTプラットフォーム:

    • [期待値の設定] および [期待値の設定] 操作を実行するために管理するプロパティの読み取りおよび書き込み権限があることを確認します。

    • TSLデータを含むメッセージが正しく解析できることを確認してください。

      これにより、最新のTSLデータをIoT Platformコンソールの [TSLデータ] タブに表示できます。 詳細については、「TSLモデルとは」をご参照ください。 TSLデータを解析するためのスクリプトを送信します。

    次の操作を実行して、デバイスがメッセージを受信したかどうかを確認できます。IoT Platformコンソールにログインし、管理するインスタンスを見つけて、[インスタンスの詳細] ページに移動します。 [メンテナンス]> [デバイスログ]> [クラウド実行ログ] を選択し、ログを表示します。 詳細については、「IoT Platformログ」をご参照ください。