Versions Compared

Key

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

...

  • 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 をカメラへデプロイ (インストール) するためには、アプリをコンテナレジストリにアップロードする必要があります。アプリの開発フェーズにおいては、以下の手段が選択可能です。

  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を立ち上げます。

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」と表示されていること

    Image Removed
  • 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