IoT Platform のデバイスは、無線 (OTA) 更新をサポートしています。 ここでは、OTA 更新のプロセス、OTA 更新で使用されるトピック、およびデータ形式について説明します。

OTA 更新プロセス

MQTT プロトコルを使用してファームウェアを OTA 更新するプロセスを、次の図に示します。

ファームウェア更新用のトピック:
  • デバイスは、次のトピックにメッセージをパブリッシュして、ファームウェアのバージョンを IoT Platform に報告します。
    /ota/device/inform/${YourProductKey}/${YourDeviceName}
  • デバイスは、次のトピックをサブスクライブして、IoT Platform からファームウェア更新の通知を受信します。
    /ota/device/upgrade/${YourProductKey}/${YourDeviceName}
  • デバイスは、次のトピックにメッセージをパブリッシュして、ファームウェア更新の進行状況を IoT Platform に報告します。
    /ota/device/progress/${YourProductKey}/${YourDeviceName}
  • デバイスは、ファームウェアのバージョンを IoT Platform に定期的に送信するわけではありません。 起動時にのみファームウェアバージョンを IoT Platform に送信します。
  • コンソールでデバイスのファームウェア更新をトリガーしたとしても、デバイスが正常に更新されたという意味ではありません。

    IoT Platform ファームウェア更新システムは、デバイスの更新中に (つまり、デバイスの更新ステータスが Updating のとき) に、更新の進行状況レポートをデバイスから受信します。

  • OTA 更新が成功したかどうかを確認するには、ファームウェアのバージョンを表示します。
  • オフラインデバイスは、OTA サーバーから更新通知を受信できません。

    デバイスが IoT Platform にもう一度接続すると、デバイスは OTA サーバーにオンラインであることを通知します。 サーバーがオンライン通知を受信後、デバイスの更新が必要かどうかを判断します。 更新が必要な場合、サーバーはデバイスに更新メッセージを送信します。

メッセージのデータ形式

OTA の開発とコード例については、「Link Kit SDK」のドキュメントをご参照ください。

  1. デバイスが OTA サービスに接続すると、ファームウェアのバージョンを報告します。
    MQTT プロトコルを使用してファームウェアのバージョンを報告するデバイスのトピックは、/ota/device/inform/${YourProductKey}/${YourDeviceName} です。 メッセージの例を以下に示します。
    
    {
      "id": 1,
      "params": {
        "version": "1.0.0"
      }
    }
    • id: メッセージ ID 。
    • version: デバイスの現在のファームウェアバージョン。
  2. IoT Platform コンソールで、ファームウェア更新ファイルをアップロードし、一部のデバイスを使用してファイルを確認してから、プロダクトのすべてのデバイスに対してファームウェア更新をトリガーします。

    詳細については、「ファームウェアの更新」をご参照ください。

  3. コンソールでバッチ更新を起動すると、プロダクトのデバイスはファームウェアファイルの URL を受け取ります。
    デバイスは /ota/device/upgrade/${YourProductKey}/${YourDeviceName} トピックをサブスクライブし、更新メッセージを受信します。 その後、デバイスに対するファームウェア更新リクエストを開始すると、デバイスはこのトピックからファームウェアファイルの URL を受け取ります。 メッセージの例を以下に示します。
    
    {
      "code": "1000",
      "data": {
        "size": 432945,
        "version": "2.0.0",
        "url": "https://iotx-ota-pre.oss-cn-shanghai.aliyuncs.com/nopoll_0.4.4.tar.gz?    Expires=1502955804&OSSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Signature=XfgJu7P6DWWejstKJgXJEH0qAKU%3D&security-  token=CAISuQJ1q6Ft5B2yfSjIpK6MGsyN1Jx5jo6mVnfBglIPTvlvt5D50Tz2IHtIf3NpAusdsv03nWxT7v4flqFyTINVAEvYZJOPKGrGR0DzDbDasumZsJbo4f%2FMQBqEaXPS2MvVfJ%2BzLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fr6%2F5gdc9FcQSkL0B8ZrFsKxBltdUROFbIKP%2BpKWSKuGfLC1dysQcO1wEP4K%2BkkMqH8Uic3h%2Boy%2BgJt8H2PpHhd9NhXuV2WMzn2%2FdtJOiTknxR7ARasaBqhelc4zqA%2FPPlWgAKvkXba7aIoo01fV4jN5JXQfAU8KLO8tRjofHWmojNzBJAAPpYSSy3Rvr7m5efQrrybY1lLO6iZy%2BVio2VSZDxshI5Z3McKARWct06MWV9ABA2TTXXOi40BOxuq%2B3JGoABXC54TOlo7%2F1wTLTsCUqzzeIiXVOK8CfNOkfTucMGHkeYeCdFkm%2FkADhXAnrnGf5a4FbmKMQph2cKsr8y8UfWLC6IzvJsClXTnbJBMeuWIqo5zIynS1pm7gf%2F9N3hVc6%2BEeIk0xfl2tycsUpbL2FoaGk6BAF8hWSWYUXsv59d5Uk%3D",
        "md5": "93230c3bde425a9d7984a594ac55ea1e"
      },
      "id": 1507707025,
      "message": "success"
    }
    • size: ファイルのサイズ。
    • md5: MD5 で暗号化されたファームウェアの内容。 32 ビットの 16 進数文字列です。
    • url: ファームウェアファイルの URL 。 URL は 24 時間まで使用可能です。 URL が生成されてから 24 時間以内に、デバイスはファームウェアファイルをダウンロードする必要があります。
    • version: ファームウェアのバージョン。
  4. デバイスは、HTTPS プロトコルを使用して URL からファームウェアをダウンロードします。
    ファームウェアの URL は 24 時間以内にリリースされます。
    ファームウェアのダウンロードプロセス中、デバイスはトピック /ota/device/progress/${YourProductKey}/${YourDeviceName} を使用して、進行状況を IoT Platform に報告します。 メッセージの例を以下に示します。
    
    {
      "id": 1
      "params": {
        "step":"1", 
        "desc":" xxxxxxxx "
      }   
    }
    • id: メッセージ ID 。
    • step:
      • [1, 100]: この値は、ダウンロードの進行状況の割合を示します。
      • -1: 更新に失敗しました。
      • -2: ファームウェアのダウンロードに失敗しました。
      • -3: デバイスの認証に失敗しました。
      • -4: ファームウェアのインストールに失敗しました。
    • desc: 更新の進行状況の説明。 エラーが発生した場合は、このパラメーターにエラーメッセージが表示されます。
  5. デバイスが更新されると、このトピック /ota/device/inform/${YourProductKey}/${YourDeviceName} を使用して新しいファームウェアバージョンを報告します。 報告されたバージョンがファームウェア更新ファイルに定義されているバージョンと同じであれば、更新は成功です。
    報告されたバージョンは、更新が成功したかどうかを判断できる唯一の識別子です。 報告された進捗が 100% であっても、デバイスが新しいファームウェアバージョンを IoT Platform に報告していなければ、更新は失敗しています。

エラー

  • 署名エラーです。 デバイスが受信したファームウェアの URL が不完全な場合、または URL の内容が手動で変更された場合は、次のエラーが発生します。


  • ファームウェアファイルのダウンロードに失敗しました。 ファームウェアファイルの URL が期限切れです。 URL は生成後 24 時間まで使用可能です。