...
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拡張機能をインストールします。
Visual Studio Codeを起動します。
左側の拡張機能アイコンをクリックして拡張機能ウィンドウを表示させます。
サーチテキストボックスに “Azure IoT”と入力します。
検索結果から「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 |
クラウド対応を「On」に変更して「設定」を押します。
...
「拡張モジュール名」の下にある「ファイルを選択」ボタンから拡張モジュールを選択し、「実行」ボタンを押します。拡張モジュールファイルはこちらから取得してください。
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」を選択します。
...
左側のリストの「デバイス管理」から「IoT Edge」を選択します。
...
IoT Edgeデバイスの追加を選択します。
...
デバイスIDに任意のデバイス名を入力し、あとはデフォルトのままで「保存」ボタンを押します。
...
「最新の情報に更新」押下後、作成されたデバイスがリストに表示されることを確認します。
...
そのデバイスをクリックし、「プライマリ接続文字列」の文字列をコピーします。
...
コマンドプロンプト等から以下のコマンドを入力します。 すでにIoTコンポーネントが開始されている場合がありますので、以下を送信していったん停止します。
Code Block |
---|
curl -u admin:Admin123 --anyauth "http://[i-PROカメラIPアドレス]/cgi-bin/cadam.cgi?methodName=stopIoTComponent" --verbose |
その後以下のコマンドを実施して接続文字列を設定します。
Code Block |
---|
curl --anyauth -u admin:Admin123 "http://[i-PROカメラIPアドレス]/cgi-bin/cadam.cgi?methodName=setConfigIoTComponent&componentType=AzureIoT&connectionType=connectionString&connectionString=[プライマリ接続文字列]" --verbose |
200 OKが返却されたら、引き続き以下のコマンドを入力します。
Code Block |
---|
curl -u admin:Admin123 --anyauth "http://[i-PROカメラIPアドレス]/cgi-bin/cadam.cgi?methodName=startIoTComponent" --verbose |
自動でAzureと接続します。数分後、Azure Portalで「最新の情報に更新」ボタンを押して以下のようにIoT Edge ランタイムの応答が417になったら認識されています。
Info |
---|
応答が表示されるまで初回は時間がかかります。 |
...
コンテナレジストリの準備
使用するコンテナレジストリの選択
開発した Container Adamapp をカメラへデプロイ (インストール) するためには、アプリをコンテナレジストリにアップロードする必要があります。アプリの開発フェーズにおいては、以下の手段が選択可能です。
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を立ち上げます。
Code Block |
---|
cd ${SDK_DIR}
code . |
メニューの「表示」->「コマンドパレット」から「Azure: Sign In」を選択しAzureにログイン。
...
ブラウザが起動するので自身の認証情報を入力しログインする。以下のように表示されたらOK。
...
メニューの「表示」->「コマンドパレット」から「Azure IoT Hub: IoT Hubを選択」を選択し、登録済みのサブスクリプション->IoT Hubを選択する。選択後、左下の「AZURE IOT HUB」以下にIoT Hubおよび登録されているデバイスが表示されます。
...
これで開発環境の構築は完了です。
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