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

:OTAアップデート

最終更新日:Feb 06, 2024

IoT Platformは、無線 (OTA) 更新および管理機能を提供します。 このトピックでは、OTA更新中にメッセージを送信するために使用されるトピックとデータ形式について説明します。 メッセージは、デバイスがOTAモジュールバージョンを送信し、IoT Platformが更新パッケージをデバイスにプッシュし、デバイスが更新の進行状況を送信し、デバイスが最新の更新パッケージに関する情報を要求するときに送信されます。

OTA更新の実行方法の詳細については、「プロセス」をご参照ください。

OTAモジュールのバージョンをIoT Platformに送信する

次のトピックは、デバイスがIoT Platformにデータを送信するときに使用されます。

トピック: /ota/device/inform/${productKey}/${deviceName}

デバイスは、OTAモジュールのバージョンをこのトピックに送信します。

重要 このトピックでは、デバイスが一度に1つのモジュールのバージョンのみを送信できるようにします。 デバイスが複数のOTAモジュールのバージョンを送信する必要がある場合、デバイスはこれらのバージョンを送信するために複数のメッセージを送信する必要があります。 各メッセージは、1つのモジュールのバージョンを含む。

リクエストの例

{
    "id": "123",
    "params": {
        "version": "1.0.1" 、
        "モジュール": "MCU"
    }
}
表1. パラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
バージョンStringOTAモジュールのバージョン。
モジュールStringOTAモジュールの名前。
説明
  • デバイスがデフォルトモジュールのバージョンを送信する場合、moduleパラメーターはオプションです。
  • デフォルトモジュールのバージョンは、デバイスファームウェアのバージョンを示す。

OTAアップデートパッケージに関する情報をデバイスにプッシュする

次のトピックは、IoT Platformがデバイスにデータを送信するときに使用されます。

トピック: /ota/device/upgrade/${productKey}/${deviceName}

IoT Platformは、OTA更新パッケージに関する情報を上記のトピックに送信します。 デバイスは、情報を取得するためにトピックをサブスクライブすることができる。

  • 単一のファイルを含むOTAアップデートパッケージに関するサンプル情報:
    • HTTPS経由でOTAアップデートパッケージをダウンロードします:
      {
          "code": "1000",
          "data": {
              "size": 432945,
              "version": "2.0.0",
              "isDiff": 1、
              "url": "https:// ***/nop *** .tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7P6DW *** qAKU % 3D&security-token=*** Tz2IHtIf3 ***" 、
              "md5": "93230c3bde425a9d ***" 、
              "digestsign":"A4WOP *** SYHJ6DDDJD9 ***" 、
              "sign": "93230c3bde425a9d ***" 、
              "signMethod": "MD5" 、
              "モジュール": "MCU" 、
              "extData":{
                  "key1":"value1" 、
                  "key2":"value2" 、
                  "_package_udi":"{\" ota_notice\":\" カメラドライバーを更新して、ビデオがぼやけないようにします。 \"}"
              }
          },
          "id": 1626969597470、
          "メッセージ": "成功"
      } 
    • MQTT経由でOTAアップデートパッケージをダウンロードします:
      {
          "code":"1000" 、
          "data":{
              "サイズ":432945、
              "version":"2.0.0" 、
              "isDiff":1、
              "signMethod":"MD5" 、
              "dProtocol":"mqtt" 、
              "streamId":1397345、
              "streamFileId":1、
              "md5":"93230c3bde425 ***" 、
              "digestsign":"A4WOP *** SYHJ6DDDJD9 ***" 、
              "sign":"93230c3bde425 ***" 、
              "モジュール":"MCU" 、
              "extData":{
                  "key1":"value1" 、
                  "key2":"value2"
              }
          },
          "id":1507707025、
          "メッセージ":"成功"
      } 
  • 複数のファイルを含むOTA更新パッケージは、HTTP経由でのみダウンロードできます。 サンプル情報:
    {
        "code": "1000",
        "data": {
            "version": "2.0.0",
            "isDiff": 1、
            "signMethod": "MD5" 、
            "files":[
                {
                    "fileSize":432944、
                    "fileName":"file1-name" 、
                    "fileUrl":"https:// ***/nop *** .tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=*** XJEH0qAKU % 3D&security-token=CAISuQJ ***" 、
                    "fileMd5":"93230c3bde425a9d ***" 、
                    "fileSign":"93230c3bde425a9d ****"
                },
                {
                    "fileSize":432945、
                    "fileName":"file2-name" 、
                    "fileUrl":"https:// ***/no *** .tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=*** qAKU % 3D&security-token=*** q6Ft5B2y ***" 、
                    "fileMd5":"93230c3bde425a92 ***" 、
                    "fileSign":"93230c3bde425a92 ****"
                }
            ],
            "モジュール": "MCU" 、
            "extData":{
                "key1":"value1" 、
                "key2":"value2" 、
                "_package_udi":"{\" ota_notice\":\" カメラドライバーを更新して、ビデオがぼやけないようにします。 \"}"
            }
        },
        "id": 1626969597470、
        "メッセージ": "成功"
    } 
表2. パラメーター
パラメーターデータ型説明
idLongメッセージの ID 。 各メッセージIDは、デバイスに対して一意である。
メッセージString応答メッセージ。
コードStringHTTP ステータスコード
バージョンStringOTAアップデートパッケージのバージョン。
サイズLong更新パッケージのサイズ。 単位:バイト

このパラメーターは、OTA更新パッケージに単一のファイルが含まれている場合に使用できます。

urlStringOTA更新パッケージのObject Storage Service (OSS) URL。

このパラメーターは、OTAアップデートパッケージに単一のファイルが含まれ、ダウンロードプロトコルがHTTPSの場合に使用できます。

dProtocolStringOTA更新パッケージのダウンロードに使用されるプロトコル。

このパラメーターは、ダウンロードプロトコルがMQTTの場合に使用できます。

streamIdLongMQTT経由でOTA更新パッケージをダウンロードするときに生成される一意のID。

このパラメーターは、ダウンロードプロトコルがMQTTの場合に使用できます。

streamFileIdInteger単一のファイルを含むOTA更新パッケージの一意のID。

このパラメーターは、ダウンロードプロトコルがMQTTの場合に使用できます。

isDiffLongこのパラメーターは、更新パッケージがデルタ更新パッケージの場合に使用できます。

値を1に設定します。 この値は、更新パッケージに新しいバージョンと以前のバージョンの違いのみが含まれることを示します。 この場合、デルタ更新が実行される。

digestsignStringセキュアな更新後のOTA更新パッケージの署名が実行される。 このパラメータは、安全な更新機能がOTA更新パッケージで有効になっている場合に使用できます。 安全な更新機能を有効にする方法の詳細については、「更新パッケージの追加」をご参照ください。
サインStringOTA更新パッケージの署名。

このパラメーターは、OTA更新パッケージに単一のファイルが含まれている場合に使用できます。

signMethodString署名アルゴリズム。 有効な値:
  • SHA256
  • MD5
Android用のDeltaアップデートパッケージは、MD5アルゴリズムのみをサポートします。
md5String署名アルゴリズムがMD5の場合、IoT Platformはsignおよびmd5パラメーターの値を指定します。

このパラメーターは、OTA更新パッケージに単一のファイルが含まれている場合に使用できます。

モジュールStringOTA更新パッケージが適用されるモジュールの名前。
説明 OTA更新パッケージがデフォルトモジュールに適用されている場合、IoT Platformはmoduleパラメーターを送信しません。
extDataオブジェクト更新バッチのタグと、IoT Platformでデバイスにプッシュするカスタム情報。

_package_udiはカスタム情報を指定します。

各タグの形式: "key":"value"

ファイル配列更新パッケージ内のファイルに関する情報。

このパラメーターは、OTA更新パッケージに複数のファイルが含まれている場合に使用できます。 単一のファイルに関する情報:

  • fileSize: ファイルのサイズ。
  • fileName: ファイルの名前。
  • fileUrlfileMd5、およびfileSign: これらのパラメーターは、このテーブルのurlmd5、およびsignパラメーターに対応します。

更新の進行状況をIoT Platformに送信する

次のトピックは、デバイスがIoT Platformにデータを送信するときに使用されます。

トピック: /ota/device/progress/${productKey}/${deviceName}

OTA更新中に、デバイスは前のトピックに対するパーセンテージとして更新の進行状況を送信します。

説明 進捗レポートの頻度は、最大3秒に1回に設定することを推奨します。 実際の頻度が制限を超えると、IoT PlatformコンソールのOTA更新パッケージの [バッチ詳細] ページですべての進行状況情報を表示できない場合があります。

リクエストの例

{
    "id": "123",
    "params": {
        "step": "-1",
        "desc": "アップデートパッケージ情報が見つからないため、OTAアップデートに失敗しました。"
        "モジュール": "MCU"
    }
}
表3. パラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
ステップString

OTAアップデートの進行状況。

有効な値:
  • 1から100までの整数: 更新の進行状況を表すパーセンテージを示します。
  • -1: 更新が失敗したことを示します。
  • -2: ダウンロードが失敗したことを示します。
  • -3: 検証が失敗したことを示します。
  • -4: ファームウェアのフラッシュが失敗したことを示します。

OTA更新の進捗値と説明は、実際の要件に基づいてデバイスで設定できます。 デバイスでOTA更新機能を開発する方法の詳細については、「サンプルコード」をご参照ください。

descString現在のステップの説明。 説明の長さは128文字を超えることはできません。 例外が発生した場合、このパラメーターにはエラーメッセージが含まれます。
モジュールStringOTA更新パッケージが適用されるモジュールの名前。 詳細については、「アップデートパッケージの追加」をご参照ください。
説明 デバイスがデフォルトモジュールの更新進行状況を送信する場合、moduleパラメーターはオプションです。

OTA更新パッケージに関する情報を要求する

次のトピックは、デバイスがIoT Platformにデータを送信するときに使用されます。

リクエストトピック: /sys/${productKey}/${deviceName}/thing/ota/firmware/get

レスポンストピック: /sys/${productKey}/${deviceName}/thing/ota/firmware/get_reply

リクエストの例

{
    "id": "123",
    "version": "1.0"、
    "params": {
        "モジュール": "MCU"
    },
    "method": "thing.ota.firmware.get"
} 
表4. パラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
バージョンStringプロトコルのバージョン。 値を 1.0 に設定します。
paramsオブジェクトリクエストのパラメーター
モジュールStringOTA更新パッケージが適用されるモジュールの名前。
説明 このパラメーターを設定しない場合、デフォルトモジュールの更新パッケージ情報が要求されます。
メソッドStringリクエスト方式。 値をthing.ota.firmware.getに設定します。

IoT Platformがデバイスからリクエストを受信すると、IoT Platformはレスポンスを送信します。

  • IoT Platformは、最新の更新パッケージに関する情報をデバイスに送信します。 レスポンス例:
    • 単一のファイルを含むOTAアップデートパッケージに関するサンプル情報:
      • HTTPS経由でOTAアップデートパッケージをダウンロードします:
        {
            "id": "123",
            "code": 200,
            "data": {
                "サイズ": 93796291、
                "sign": "f8d85b250d4d787a9f483d89a974 ***" 、
                "version": "10.0.1.9.20171112.1432" 、
                "isDiff": 1、
                "url": "https:// the_firmware_url" 、
                "signMethod": "MD5" 、
                "md5": "f8d85b250d4d787a9f48 ***" 、
                "モジュール": "MCU" 、
                "extData":{
                    "key1":"value1" 、
                    "key2":"value2" 、
                    "_package_udi":"{\" ota_notice\":\" カメラドライバーを更新して、ビデオがぼやけないようにします。 \"}"
                }
            }
        }
      • MQTT経由でOTAアップデートパッケージをダウンロードします:
        {
            "id": "123",
            "code": 200,
            "data":{
                "サイズ":432945、
                "digestsign":"A4WOP *** SYHJ6DDDJD9 ***" 、
                "version":"2.0.0" 、
                "isDiff":1、
                "signMethod":"MD5" 、
                "dProtocol":"mqtt" 、
                "streamId":1397345、
                "streamFileId":1、
                "md5":"93230c3bde ***" 、
                "sign":"93230c3bde42 ***" 、
                "モジュール":"MCU" 、
                "extData":{
                    "key1":"value1" 、
                    "key2":"value2"
                }
            }
        }
    • 複数のファイルを含むOTA更新パッケージは、HTTP経由でのみダウンロードできます。 サンプル情報:
      {
          "id": "123",
          "code": 200,
          "data": {
              "version": "2.0.0",
              "isDiff": 1、
              "signMethod": "MD5" 、
              "files":[
                  {
                      "fileSize":432944、
                      "fileName":"file1-name" 、
                      "fileUrl":"https:// iotx *** .aliyuncs.com/nop***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7***U%3D&security-token=CAISu***" 、
                      "fileMd5":"93230c3bde425a9d7984a594ac55ea1e" 、
                      "fileSign":"93230c3bde425a9d7984a594ac55 ****"
                  },
                  {
                      "fileSize":432945、
                      "fileName":"file2-name" 、
                      "fileUrl":"https:// iotx-*** .aliyuncs.com/no***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7P***KU%3D&security-token=CAISuQJ***" 、
                      "fileMd5":"93230c3bde425a9d7984a594ac56ea1f" 、
                      "fileSign":"93230c3bde425a9d7984a594ac56 ****"
                 }
              ],
              "モジュール": "MCU" 、
              "extData":{
                  "key1":"value1" 、
                  "key2":"value2" 、
                  "_package_udi":"{\" ota_notice\":\" カメラドライバーを更新して、ビデオがぼやけないようにします。 \"}"
              }
          }
      }
    表5. パラメーター
    パラメーターデータ型説明
    idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

    応答のメッセージIDは、要求のメッセージIDと同じです。 /sys/${productKey}/${deviceName}/thing/ota/firmware/getトピックに送信されたデータでidパラメーターを表示できます。

    コードIntegerステータスコード。 値が200の場合、リクエストが成功したことを示します。
    データオブジェクトOTA更新パッケージに関する情報。 詳細については、「OTAアップデートパッケージに関する情報をデバイスにプッシュする」をご参照ください。
  • 更新パッケージ情報が存在しない場合、IoT Platformは応答を送信します。 サンプル応答:
    {
        "id": "123",
        "code": 200,
        "data": {
        }
    }

パッケージセグメントのダウンロード要求の開始

OTAアップデートパッケージのダウンロードプロトコルがMQTTである場合、デバイスは、OTAアップデートパッケージをセグメントごとにダウンロードすることができる。 次のトピックが使用されます。

重要 MQTTプロトコルを使用してダウンロードされる更新パッケージのサイズは最大16 MBです。
  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/file/download
  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/file/download_reply

リクエストの例

{
    "id": "123456" 、
    "version": "1.0"、
    "params": {
        "fileToken":"1bb8 ***" 、
        "fileInfo":{
            "streamId":1234565、
            "fileId":1
        },
        "fileBlock":{
            "サイズ":256、
            "オフセット":2
        }
    }
}
表6. パラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。
バージョンStringプロトコルのバージョン。 値を 1.0 に設定します。
paramsオブジェクトリクエストのパラメーター
fileTokenStringオプションです。 更新パッケージを識別するために使用される一意のトークン。 値の長さは最大16文字で、数字、文字、アンダースコア (_) 、およびピリオド (.) を使用できます。

使用法のノート:

  • このパラメーターを設定すると、IoT Platformはレスポンスでこのパラメーターを返します。 これにより、複数の更新パッケージをデバイスにダウンロードするときに、異なる更新パッケージを識別できます。
  • 複数の更新パッケージを同時にダウンロードする必要がない場合は、このパラメーターを空のままにすることができます。
fileInfoオブジェクトOTA更新パッケージに関する情報。
streamIdLongMQTT経由でOTA更新パッケージをダウンロードするときに生成される一意のID。
fileIdIntegerOTA更新パッケージの一意のID。
fileBlockオブジェクト各セグメントに関する情報。
サイズIntegerダウンロードする各セグメントのサイズ。 単位:バイト 有効な値: 256〜131072。 最後のセグメントでは、値は1から131072の範囲です。
オフセットIntegerセグメントごとにダウンロードされる更新パッケージの最後のセグメントの開始位置。 単位:バイト 有効な値: 0 ~ 16777216

レスポンス例:

  • レスポンスのデータ構造を次の図に示します。Data structure
    フィールド説明
    JSONバイト長レスポンスのJSON文字列から変換されるバイト配列の長さを指定します。 バイト配列の長さは2バイトである必要があります。 第1のバイトは上位バイトであり、第2のバイトは下位バイトである。

    たとえば、レスポンスのUTF-8-encoded JSON文字列はバイト配列に変換されます。 バイト配列の長さは10進数字87であり、これは16進数字57に対応する。 上位バイトは0x00であり、下位バイトは0x57である。

    JSON文字列バイトレスポンス内のJSON文字列から変換されるバイト配列を指定します。 エンコード形式はUTF-8です。 詳細については、このトピックの「JSONレスポンスのサンプル」を参照してください。
    ファイルブロックバイトセグメントのバイト配列を指定します。 バイトは、各バイトとパッケージヘッダとの間のオフセットに基づいて昇順にソートされる。
    CRC16/IBMセグメントのチェック値を指定します。 チェック値の長さは2バイトである必要があります。 CRC-16-IBMのみサポートされています。 第1のバイトは上位バイトであり、第2のバイトは下位バイトである。

    たとえば、セグメントのチェック値が0x0809の場合、上位バイトは0x08、下位バイトは0x09です。

  • JSONレスポンスのサンプル:
    {
        "id": "123456" 、
        "code":200,
        "msg":"ファイルサイズが制限を超えました16 MB" 、
        "data": {
            "fileToken":"1bb8 ***" 、
            "fileLength":1238848、
            "bSize":1491、
            "bOffset":2
        }
    }
表7. パラメーター
パラメーターデータ型説明
idStringメッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

応答のメッセージIDは、要求のメッセージIDと同じです。 /sys/${productKey}/${deviceName}/thing/file/downloadトピックに送信されたデータのIDパラメーターでメッセージidを確認できます。

コードIntegerステータスコード。 値200は、成功したリクエストを示します。
msgString呼び出しが失敗した場合に返されるエラーメッセージ。
データオブジェクトデバイスに返されたデータ。
fileTokenString更新パッケージの一意のトークン。 fileTokenパラメーターに値を指定した場合、このパラメーターが返されます。
fileLengthInteger更新パッケージの合計サイズ。 単位:バイト
bSizeInteger現在のセグメントのサイズ。 単位:バイト
bOffsetInteger更新パッケージ上の現在のセグメントの開始位置。 この値は、offset requestパラメーターの値と同じです。 単位:バイト

参考資料

エラーコードとトラブルシューティング方法の詳細については、「デバイスのエラーコード」をご参照ください。