目次
...
Table of Contents | ||||
---|---|---|---|---|
|
はじめに
...
ここではiPRO Camera SDKを利用してAzure IoT Edgeデバイス用コンテナアプリを開発する環境を構築する手順を説明します。また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}
として記載します。
Info |
---|
このチュートリアルはSDK ver.2.00以降のみ対応しています。SDK ver.2.00未満では利用できませんのでご注意ください。また、SDK ver.2.00以降のContainer AdamAppはambaCV5Xアプリのみ開発可能です。AdamApp for Azure IoT EdgeはambaCV5Xアプリのみ開発可能です。 |
Azure IoT Edge コンテナ版開発で推奨する開発環境
...
サポート対象となる推奨環境は以下となります。
開発用OS :Linux (64bit)
ディストリビューション :Ubuntu 20.04以降
Azure IoT アプリ用開発ツール:Visual Studio Code + Azure IoT Edge 拡張機能
+ Azure IoT Hub 拡張機能。コンテナレジストリ : Azure Container Registry (開発用にi-PROが提供)
※パートナー様自身で、Docker-hub等を用意いただくことも可能です。
Azure IoT Edgeデバイス向けアプリを開発するためには、Azureアカウントの開設が必要です。Azure のご利用には費用が掛かる可能性があります。
Tip |
---|
2024/01/25時点では、Azure を最大 30 日間無料で試すことができます。それ以降は費用がかかる可能性があります。 ※2024/1 β版リリース時点では、ユーザがテスト用のAzure Container Registryを用意する必要があり、有償となります。参考 価格 - Container Registry | Microsoft Azure) 今後、無料で開発いただくことが可能かどうかに関しては、継続調査中です ※2024/1QのカメラファームアップでAzureなしでもアプリの開発、インストール可能になる予定で、Azureを使わない場合は無料で開発いただけます。3/15時点では、開発に必要なAzure IoT Hubを無料で使用できるプランもあります |
Info |
---|
Azure関連の契約はi-PRO株式会社では行っておりませんので、お客様にて実施ください。Azureについて詳細はこちらなどからマイクロソフトにお問い合わせください。 また、推奨環境以外での開発はサポート対象外となります。 |
開発環境構築手順
...
Docker環境の準備
開発PCにDocker Engineをインストールします。出典:Docker Engine インストール(Ubuntu 向け) | Docker ドキュメント (matsuand.github.io)
...
Info |
---|
Windows上にWSL + Docker Engineをインストールする場合、Visual Studio Codeで Remote Development 拡張機能パック をインストールする必要があります。詳細は WSL で VS Code の使用を開始する を参照してください。 |
qemuインストール
コンテナ版追加アプリを作成するために、開発環境にインストールする必要のある、qemuのインストール方法を記載します。
Info |
---|
PCを再起動すると、build可能なアーキテクチャにlinux/arm64が表示されなくなる場合があります。その際は、再度同じ手順でqemuをインストールしてください。 |
qemuのインストール
Code Block |
---|
sudo apt update sudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts |
docker buildxの準備
experimental 機能や BuildKit を使うため、環境変数を追加設定 & 反映 します。
設定ファイルを開きます。
Code Block vi ~/.bashrc
以下を末尾に追加
Code Block export DOCKER_CLI_EXPERIMENTAL=enabled export DOCKER_BUILDKIT=1
保存します。
buildxが使えるようになっているか確認します。
Code Block docker --help | grep buildx
出力例
Code Block buildx* Docker Buildx (Docker Inc., v0.10.5)
現在build可能なアーキテクチャを確認します。
Code Block docker buildx ls
出力例
Code Block NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS default * docker default default running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
この出力の中に linux/arm64 があれば成功です。
開発環境構築のチェック
環境構築ができたかどうかのチェックを行います。 ※結果は一例ですので、環境によって異なります。
Docker Engineがインストール済みであること
Code Block $ docker --version Docker version 23.0.1, build cb74dfc
インストール出来ていない場合はDocker Engineをインストールしてください。
Dockerデーモンが起動中であること
【systemdを使用している場合】Code Block $ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-06-28 08:41:48 JST; 5h 6min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 1051 (dockerd) Tasks: 24 Memory: 199.9M CPU: 5.471s CGroup: /system.slice/docker.service └─1051 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (以下略)
Activeが inactive (dead) になっている場合は、
systemctl start docker
コマンドでサービスを起動してください。【SysVinitを使用している場合】
Code Block $ sudo /etc/init.d/docker status * Docker is running
not running と表示される場合は
sudo /etc/init.d/docker start
コマンドでサービスを起動してください。docker buildxがインストールされていること
Code Block $ docker --help | grep buildx buildx* Docker Buildx (Docker Inc., v0.10.5)
何も表示されていない場合は、 Docker Buildx に従って個別にインストールしてください。
qemuがインストールされ、Arm64ビットアプリがクロスビルド可能になっていること
以下のリストの中にlinux/arm64
があることを確認してください。Code Block $ docker buildx ls default * docker default default running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
linux/arm64
がない場合は、qemuをインストールしてください。
Visual Studio CodeにAzure IoT Edge拡張機能およびAzure IoT Hub拡張機能をインストール
Azure IoT Edgeデバイス用アプリを開発するためには、Visual Studio CodeにAzure IoT Edge拡張機能およびAzure IoT Hub拡張機能をインストールします。
...
※WSL環境の場合、これらの拡張機能をWSL環境でも有効にする必要があります。WSL内の任意プロジェクトを開いた状態(WSLで任意プロジェクトフォルダにcdした状態で code .
コマンドなどでVIsual Studio Codeを開く)で拡張機能メニューの「Install in WSL: Ubuntu-20.04」を押下してWSL内にもインストールしてください。
...
i-PROカメラをAzure IoTに登録する
事前に、i-PROカメラおよび開発用PCをインターネット接続し、Azure IoTと通信できる状態にしておいてください。ここでは下記図のようなネットワーク構成になっている想定で説明します。
...
Info |
---|
i-PROカメラのローカルエリアIPアドレスが192.168.0.10、IDがadmin、パスワードがAdmin123 の想定で説明します。 |
i-PRO Docker拡張モジュールをインストールする
カメラWEBブラウザからインストールする方法に付いて説明します。
i-PRO設定ツールを用いることで、複数のカメラに同時にインストールすることも可能です。i-PRO設定ツールを使用する手順についてはこちらを参照ください。
以下のURLでカメラにアクセスします。
Code Block |
---|
http://192.168.0.10/admin/setup_ca_software.html |
機能拡張ソフトウェア動作モードを「IoTエッジデバイスモード」に変更して「設定」を押します。クラウド対応を「On」に変更して「設定」を押します。
...
「追加コンポーネント」の下にある「ファイルを選択」ボタンから追加コンポーネントを選択し、「実行」ボタンを押します。追加コンポーネントファイルはこちら(★準備中)から取得してください。
※SDK ver2.00ベータ版での追加コンポーネントファイルはこちらのお問い合わせから申請ください。
Info |
---|
追加コンポーネントのインストールには数分かかります。 |
以下のようにコンポーネント名が表示されればインストール完了です。
...
「拡張モジュール名」の下にある「ファイルを選択」ボタンから拡張モジュールを選択し、「実行」ボタンを押します。拡張モジュールファイルはこちらから取得してください。
Info |
---|
i-PRO Docker拡張モジュールのインストールには数分かかります。それまで画面を触らないでください。 |
Note |
---|
ファームウェアVer. 3.20以降では、セキュリティ対策のためにDocker拡張モジュール Ver. 1.01が動作しなくなります。 ファームウェアVer. 3.20以降では、Docker拡張モジュール Ver. 2.00をご使用下さい。 初めにファームウェアをVer. 3.20に更新後、Docker拡張モジュールの更新してください。 |
以下のように拡張モジュール名が表示されればインストール完了です。
...
Azure IoT Edge Hubにi-PROカメラを登録する
Azure Portal にログインします。
...
IoT Hubを選択してリストから各自で準備した項目を選択します。ここでは例として「CV5xIoTHub2」を選択します。
...
Info |
---|
応答が表示されるまで初回は時間がかかります。 |
...
コンテナレジストリの準備
使用するコンテナレジストリの選択
開発した Container Adamapp for Azure IoT Edge をカメラへデプロイ (インストール) するためには、アプリをコンテナレジストリにアップロードする必要があります。アプリの開発フェーズにおいては、以下の手段が選択可能です。
i-PRO が運営するコンテナレジストリを利用する
i-PRO では SDK利用者に使用していただけるコンテナレジストリを用意しています。必要な場合、こちらよりお問い合わせください。商品化に際してはご自身でコンテナレジストリを用意していただくか、サービス運用を行っているサービスプロバイダが保有するコンテナレジストリを使用することを想定しています。ご自身でコンテナレジストリを用意する
すでにご自身でコンテナレジストリを保有されている場合は、そちらを使用することも可能です。
独自のコンテナレジストリを使用する場合の申請方法
i-PRO のカメラはセキュリティ上の理由から、特定のコンテナレジストリのみからイメージを取得することができます。上記2を選択した場合および商品化の際には、こちらよりこのコンテナレジストリのアドレスを申請してください。i-PRO で確認の上、このコンテナレジストリへのアクセスを許可するようにカスタマイズされたプラットフォーム拡張モジュールを提供いたしますので、対象のカメラで更新をお願いします。
Azure IoT Edgeでアプリを開発する
イメージのビルドとレジストリへのPush、デバイスへのデプロイはVisual Studio Code + Azure IoT Edge拡張機能 + Azure IoT Hub拡張機能で一続きに行うことができます。
事前にSDKのzipファイルを任意のフォルダに展開しておいてください。
Visual Studio Code上での初期設定
[SDKフォルダ]直下でVisual Studio Codeを立ち上げます。
...
メニューの「表示」->「コマンドパレット」から「Azure IoT Hub: IoT Hubを選択」を選択し、登録済みのサブスクリプション->IoT Hubを選択する。選択後、左下の「AZURE IOT HUB」以下にIoT Hubおよび登録されているデバイスが表示されます。
...
Info |
---|
メニューの「表示」->「コマンドパレット」から登録済みのサブスクリプションが表示されない場合、コマンドパレットに「sub」と入力し該当するサブスクリプションを選択しておいてください。 |
これで開発環境の構築は完了です。
WSL環境でうまくいかない場合のチェックポイント
...
WSL環境でうまくいかない場合は以下をチェックしてください。
Visual Studio Codeの「LOCAL」の拡張機能で以下が有効になっていること
Dev Containers
Remote - SSH, Remote - SSH: Editing Configuration FIles, Remote - Tunnels, Remote Development, Remote Explorer
WSL
Visual Studio Codeの「WSL: UBUNTU-20.04 」の拡張機能で以下が有効になっていること
Azure Account
Azure IoT Edge
Azure IoT Hub
Visual Studio Codeの画面左下が「WSL: Ubuntu-20.04」と表示されていること
Build IoT Edge Solutionでpermission denied と表示される場合、対象のディレクトリに現在のユーザーのアクセス権があるかどうか確認する。
Code Block sudo chown -r ipro:ipro [開発ディレクトリ] ※ipro:ipro は例ですので、各環境に合わせて設定ください。
を実行して所有者を変更。
商標について
サイトで使用している商標について掲載します。
・Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein
...