Thingsboard バージョン 3.4 の OTA アップグレード

バックグラウンド

デバイス側を Thingsboard プラットフォームに接続する際、デバイス側のドッキング プラットフォームを検討するのに多くの時間がかかりました。その前に関連するドキュメントが見つからなかったので、皆さんの調査時間を短縮するためにこの記事を書きました。ブログ、皆さんも気に入ってコレクションしていただければ幸いです。

注: OTA 機能はバージョン 3.3 からのみサポートされます。
ここに画像の説明を挿入

参考英語ドキュメントアドレス:
https://thingsboard.io/docs/user-guide/ota-updates/

1. デバイスはこれらのトピックを事前に購読します

v1/devices/me/attributes
v1/devices/me/attributes/response/+
v1/devices/me/rpc/request/+
v1/devices/me/rpc/response/+
v2/fw/response/+/chunk/+

2. 更新プロセスのステータスが変更され、テレメトリ データをプラットフォームにアップロードする必要があります

DOWNLOADING 收到关于新固件/软件更新的通知,设备开始下载更新包
DOWNLOADED  设备已完成更新包的下载
VERIFIED 设备已验证下载包的校验和。
UPDATING  设备已启动固件/软件更新。通常在设备重新启动或服务重新启动之前发送
UPDATED 固件已成功更新到下一版本
FAILED -未验证校验和,或设备更新失败。

トピック:

v1/devices/me/telemetry

送信メッセージ形式:
//ソフトウェアアップグレード通知を受信し、この形式で送信します

{
    
    
	"current_fw_title": "Initial", //设备当前标题
	"current_fw_version": "v0",//设备当前版本号
	"fw_state": "DOWNLOADING" //固件升级状态,一共刘总,参考上述说明
}

//この形式を使用してソフトウェア アップグレード通知を送信すると、デバイスの現在のバージョン番号がプラットフォーム上で確認できるようになります。

{
    
    
	"current_fw_title": "Initial", //设备当前标题
	"current_fw_version": "v0",//设备当前版本号
}

3. デバイスはアップデートをアクティブにチェックします

プラットフォームによって設定されたデバイスのバージョン情報を取得します (たとえば、単一デバイスで [変更] をクリックしてアップグレードするバージョンを選択すると、デバイス内の共有属性が更新されます)。デバイスは、プラットフォームによって設定された共有属性情報をアクティブに取得できます。プラットフォームのバージョン情報を取得した後にバージョン情報が一致していないことが判明した場合は、更新することができ、その方法は次のとおりです

v1/devices/me/attributes/request/${requestId}
${requestId} - 请求id,从1开始递增

送信メッセージの形式:

{
    
    
	"sharedKeys": "fw_version,fw_checksum_algorithm,fw_checksum,fw_size,fw_title,fw_version"
}

返信メッセージのトピック

v1/devices/me/attributes/response/1

戻りメッセージの例:

{
    
    "shared":{
    
    "fw_checksum":"17ae291d08837890026d562e5b666f88d6389fe71d1183d6ed7eeee7505cc209","fw_size":421320,"fw_title":"f","fw_checksum_algorithm":"SHA256","fw_version":"1.2"}}

プロパティキーの説明

fw_checksum	校验和
fw_size	文件大小,以字节为单位
fw_title	标题
fw_checksum_algorithm	校验和算法,默认SHA256
fw_version	版本

4. プラットフォーム上のデバイスのバッチ更新

アップグレード メッセージは、このデバイスで構成されているすべてのデバイスに送信されます。バージョンが個別に設定されている場合、個々のデバイスはアップグレードされません。
ここに画像の説明を挿入

プラットフォームは現在の最新バージョン情報をデバイスに積極的にプッシュし、デバイスは現在のバージョンから判断でき、異なる場合は更新されます。

注: デバイスは、最初にデバイスの現在のバージョン情報をプラットフォームにプッシュする必要があります。その後、プラットフォームはバージョン情報を変更し、通知バージョン アップグレード情報をデバイスに送信します。バージョン情報を受信した後、デバイスはそれを処理する必要があります。 、最後にバージョンの成功または失敗のメッセージをアップロードします。プラットフォームは次のバージョン アップグレード メッセージをデバイスに送信します。つまり、デバイスはアップグレードが完了した後でのみ次のアップグレードに入ることができます。

受信メッセージのトピック:

v1/devices/me/attributes

受信メッセージの形式:

{
    
    
	"fw_title": "f",
	"fw_version": "1.0",
	"fw_tag": "f 1.0",
	"fw_size": 128537,
	"fw_checksum_algorithm": "SHA256",
	"fw_checksum": "67f3b40ba0cbb7d289a9cf6f3f75e6c319f12bdc82d5c35ecc2f51515a13e5cc"
}
属性key	描述
fw_checksum	校验和
fw_size	文件大小,以字节为单位
fw_title	标题
fw_checksum_algorithm	校验和算法,默认SHA256
fw_version	版本

5. デバイスはインストール パッケージ ファイルの取得を要求します。

プラットフォームが設​​定した対象バージョンのインストールパッケージファイルのみを取得可能であり、要求および取得方法は、
デバイスからメッセージトピックを送信することで取得可能です。

v2/fw/request/${requestId}/chunk/${chunkNum}

送信メッセージ内容の例:

1230

${requestId}- リクエスト ID は 1 から始まります。
${chunkNum}- リクエスト ブロック番号。0 から始まり、毎回 1 ずつ増加する必要があります。送信内容は毎回受信するバイト数であり、値は 65535 を超えることはできません。ブロック番号の増分数 = ファイル内の総バイト数 / 毎回受信するバイト数を切り上げて、インストールパッケージファイルを完全に取得できます。

インストール パッケージ ファイル データはトピックを返します。

v2/fw/response/${requestId}/chunk/${chunkNum}

インストールパッケージファイルの返却内容:
ファイルのバイトデータ。毎回1230バイトのデータが返却され、前回は通常1230バイト未満のデータが返され、ファイル受信のエンドマークとして使用できます。ファイル全体を受信した後、sha256 を使用してファイルを検証し、チェックサムが手順 4 のチェックサムと等しい場合、データは完全であるとみなされます。

おすすめ

転載: blog.csdn.net/qq_40351360/article/details/127659776