バックグラウンド
デバイス側を 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 のチェックサムと等しい場合、データは完全であるとみなされます。