📝

Menderで始める組み込みOTA 第5回 : Quickstart Part4 : アプリケーションを更新(その2)

2022/06/06に公開

MenderはオープンソースベースのLinux向けOTA(Over the Air Update)ソリューションです。

Mender is a secure, risk tolerant and efficient over-the-air update manager. Remotely manage and deploy software updates to your IoT devices at scale, worldwide.

https://mender.io/

筆者の会社コードギアではこのたびご縁あってMenderの技術サポートを提供する機会を得ました。
この一連の記事ではMender OTAソリューションの技術的な側面を紹介します。


Menderで始める組み込みOTA」記事インデックス

はじめに

今回は自分でアップデートファイル (ARTIFACT)を作成し、SaaSの mender.io に接続中のRaspberry Pi 3/4 デバイスに対して配布します。
基本的な流れは docs.mender.io にある Deploy an application update の後半部、「Step 2 - Modify the application」の内容と同じです。

本来、ARTIFACTはオフラインツール mender-artifact を利用してPC上で作成しますが、例外としてmenderのWebUIで1ファイルのみ登録した際に自動的にARTIFACT形式に変換して登録する機能があります。今回は前回OTA実行したARTIFACTに含まれているうちの1ファイル index.html をさらに更新するシナリオでOTA実行します。

前回作成したDEPLOYMENTのキャンセル

WebUIにログイン後、DEPLOYMENTS画面の「ACTIVE」 に前回作成したDEPLOYMENT (アップデートジョブ)が進行中で残っている場合、これを実行キャンセル(abort)するために右のバツ印をクリックします。

DEPLOYMENTのキャンセル

確認の表示が出るので、緑のチェックボタンを押してabortを完了します。これにより、前回実施したDEPLOYMENTはFinished項目に移動します。既に終了済みの場合は何も行う必要はありません。

DEPLOYMENTのキャンセル2

更新対象の index.html を作成

前回のARTIFACTに含まれていた index.html の内容を更新するために、新規に更新対象になる index.html をローカルPC上で作成します。PC上の任意のディレクトリに index.html というファイルを作成し、以下の内容を保存します。(あるいはもっと本格的な内容でもかまいません)

index.html
Hello World!

新規ARTIFACT(アップデートファイル)を登録

WebUIのRELEASES画面に移動します。すると下の方に UPLOAD というボタンがあるので、これを押します。

UPLOADボタン

Upload an Artifact ダイアログの「Drag hear or browse to upload an Artifact file」と書いてある領域に、先ほど作成した index.html をExplorerからドラッグするか、ここをクリックして開くオープンダイアログで index.html を選択後 NEXT ボタンを押して登録します。ここは本来オフラインツールで作成済の ARTIFACTファイルを登録するダイアログですが、単一ファイルを指定するとアップロード時に自動的にARTIFACTファイルに変換されてから登録されます。

UPLOADボタン

ここで展開先のディレクトリを以下のように /var/www/localhost/htdocs に設定したあと NEXT ボタンを押します。これはWebサーバーのコンテンツが保存されているディレクトリです。

ARTIFACT設定1

Deploy対象のDevice TypeとARTIFACT名を指定します。ここではDevice Typeに Raspberrypi3 RaspberryPi4を両方設定し、ARTIFACT名には mender-demo-artifact2 を指定しています。(既に存在しているものと同じARTIFACT名は使用できません)

ARTIFACT設定2

UPLOAD ボタンを押すと以下のように Type が single-file の ARTIFACT が登録されました。

ARTIFACT登録

新しいDEPLOYMENT (アップデートジョブ)を作成し、OTA実行

RELEASES画面で、今回登録したmender-demo-artifact2 を選択後、表示される CREATE DEPLOYMENT WITH THIS RELEASE ボタンを押して新しいアップデートジョブを作成します。

これ以降の手順は前回の記事と同一です。

  • Select device group : All devices を選択
  • Select a start time : Start Immediately を選択
  • Select a rollout pattern : Single phase : 100% を選択
  • Set update process options : 何も変更せず NEXT を押す

最後の画面で CREATE ボタンを押すとDEPLOYMENTが作成され、(ポーリング間隔設定が30秒のままの場合) 数分以内に接続してきたデバイスに対してOTAが実行されます。

DEPLOYMENT進行中

アップデートジョブの結果を確認

アップデートが実行されると、対象のRaspberry PiのIPアドレスではWebサーバーのコンテンツが更新されたはずです。Webブラウザで http://<ターゲットのIPアドレス>:85/ (ポート85)を開くと、以下のようにコンテンツが更新されていることを確認できます。

OTA実行結果

アップデートログを確認

ちなみに、DEPLOYMENTS画面の RELEASE 行にある VIEW DETAILS ボタンを押すとOTA実行が完了したデバイスが表示されます。もし何かエラーが報告された場合にもこの画面に表示されます。

OTAログ

この記事のまとめ

単一ファイルのアップデートを行うARTIFACTファイルとDEPLOYMENTジョブを作成し、OTAを実行しました。これにより、Webアプリケーションが更新できました。

今後の予定

コードギアでは Menderで始める組み込みOTA のタイトルで以下のZenn記事を公開しています。

これ以降の記事も準備中です。ご期待ください。

Discussion