Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

目次

...

Table of Contents
minLevel1
maxLevel4

はじめに

...

ここでは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等を用意いただくことも可能です。

...

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エッジデバイスモード」に変更して「設定」を押します。

...

「追加コンポーネント」の下にある「ファイルを選択」ボタンから追加コンポーネントを選択し、「実行」ボタンを押します。追加コンポーネントファイルはこちらから取得してください。
※SDK ver2.00での追加コンポーネントファイルはこちらのお問い合わせから申請ください。

Info

追加コンポーネントのインストールには数分かかります。

以下のようにコンポーネント名が表示されればインストール完了です。

...

クラウド対応を「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」を選択します。

...

Info

応答が表示されるまで初回は時間がかかります。

...

コンテナレジストリの準備

使用するコンテナレジストリの選択

開発した Container Adamapp for Azure IoT Edge をカメラへデプロイ (インストール) するためには、アプリをコンテナレジストリにアップロードする必要があります。アプリの開発フェーズにおいては、以下の手段が選択可能です。

  1. i-PRO が運営するコンテナレジストリを利用する
    i-PRO では SDK利用者に使用していただけるコンテナレジストリを用意しています。必要な場合、こちらよりお問い合わせください。商品化に際してはご自身でコンテナレジストリを用意していただくか、サービス運用を行っているサービスプロバイダが保有するコンテナレジストリを使用することを想定しています。

  2. ご自身でコンテナレジストリを用意する
    すでにご自身でコンテナレジストリを保有されている場合は、そちらを使用することも可能です。

独自のコンテナレジストリを使用する場合の申請方法

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

...