次の方法で共有


新しいシミュレートされたデバイスをデプロイする

リモート監視およびデバイス シミュレーション ソリューション アクセラレータは、いずれも独自のシミュレートされたデバイスを定義できます。 この記事では、カスタマイズされた chiller デバイスの種類と新しい lightbulb デバイスの種類をリモート監視ソリューション アクセラレータに展開する方法について説明します。

この記事の手順では、「Create and test a new simulated device」(新しいシミュレートされたデバイスの作成とテスト) ハウツー ガイドを完了し、カスタマイズされた chiller デバイスの種類と新しい lightbulb デバイスの種類を定義するファイルがあることを前提としています。

このハウツー ガイドの手順では、以下の方法を説明します。

  1. SSH を使用して、リモート監視ソリューション アクセラレータをホストしている仮想マシンのファイル システムにアクセスします。

  2. Docker コンテナーの外部からデバイス モデルを読み込むように Docker を構成します。

  3. カスタム デバイス モデル ファイルを使用してリモート監視ソリューション アクセラレータを実行します。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

このハウツー ガイドの手順を完了するには、アクティブな Azure サブスクリプションが必要です。

Azure サブスクリプションがない場合は、開始する前に無料アカウントを作成してください。

前提条件

このハウツー ガイドに従うには、次のものが必要です。

  • リモート監視ソリューション アクセラレータのデプロイ済みインスタンス。
  • ssh および scp コマンドを実行するローカルの bash シェル。 Windows の場合、git をインストールするには、bash をインストールする方法が簡単です。
  • カスタム デバイス モデル ファイル (「Create and test a new simulated device」(新しいシミュレーションされたデバイスの作成とテスト) で説明されているファイルなど)。

仮想マシンにアクセスする

次の手順では、Azure Cloud Shell の Azure CLI を使用します。 必要に応じて、開発用マシンに Azure CLI をインストールし、ローカルでコマンドを実行することができます。

次の手順は、SSH アクセスを許可するように Azure 仮想マシンを構成する方法を示しています。 ここに示された手順では、ソリューション アクセラレータ用に選択された名前を contoso-simulation と想定しています。この値を実際のデプロイの名前に置き換えてください。

  1. ソリューション アクセラレータ リソースを含むリソース グループの内容を一覧表示します。

    az resource list -g contoso-simulation -o table
    

    仮想マシンの名前、パブリック IP アドレス、およびネットワーク セキュリティ グループをメモします。これらの値は後で必要になります。

  2. SSH アクセスを許可するようにネットワーク セキュリティ グループを更新します。 次のコマンドでは、ネットワーク セキュリティ グループの名前を contoso-simulation-nsg と想定しています。この値を実際のネットワーク セキュリティ グループの名前に置き換えてください。

    az network nsg rule update --name SSH --nsg-name contoso-simulation-nsg -g contoso-simulation --access Allow -o table
    

    SSH アクセスを有効にするのはテストおよび開発中のみにしてください。 SSH を有効にした場合、できるだけ早く無効にする必要があります

  3. 仮想マシン上の azureuser アカウントのパスワードを既知のパスワードに更新します。 次のコマンドを実行するときに自分のパスワードを選択してください。

    az vm user update --name vm-vikxv --username azureuser --password YOURSECRETPASSWORD  -g contoso-simulation
    
  4. 仮想マシンのパブリック IP アドレスを調べます。 次のコマンドでは、仮想マシンの名前を vm-vikxv と想定しています。この値を以前にメモした仮想マシンの名前に置き換えてください。

    az vm list-ip-addresses --name vm-vikxv -g contoso-simulation -o table
    

    仮想マシンのパブリック IP アドレスをメモします。

Docker を構成する

このセクションでは、Docker コンテナー内からではなく、仮想マシンの /tmp/devicemodels フォルダーからデバイス モデル ファイルを読み込むように Docker を構成します。 このセクションのコマンドは、ローカル マシンの bash シェルで実行してください。

このセクションでは、Docker コンテナー内からではなく、仮想マシンの /tmp/devicemodels フォルダーからデバイス モデル ファイルを読み込むように Docker を構成します。 このセクションのコマンドは、ローカル マシンの bash シェルで実行してください。

  1. SSH を使用して、ローカル マシンから Azure の仮想マシンに接続します。 次のコマンドでは、仮想マシン vm-vikxv のパブリック IP アドレスが 104.41.128.108 であることを前提としています。この値を前のセクションの仮想マシンのパブリック IP アドレスに置き換えます。

     ssh azureuser@104.41.128.108
    

    プロンプトに従い、前のセクションで設定したパスワードを使用して仮想マシンにサインインします。

  2. コンテナーの外部からデバイス モデルを読み込むようにデバイス シミュレーション サービスを構成します。 まず Docker 構成ファイルを開きます。

    sudo nano /app/docker-compose.yml
    

    devicesimulation コンテナーの設定を探し、次のスニペットのように volumes の設定を編集します。

    devicesimulation:
      image: azureiotpcs/device-simulation-dotnet:1.0.0
      networks:
        - default_net
      depends_on:
        - storageadapter
      environment:
        - PCS_KEYVAULT_NAME
        - PCS_AAD_APPID
        - PCS_AAD_APPSECRET
      # How one could mount custom device models
      volumes:
        - /tmp/devicemodels:/app/webservice/data/devicemodels:ro
    

    変更を保存します。

  3. 既存のデバイス モデル ファイルをコンテナーから新しい場所にコピーします。 まず、デバイス シミュレーション コンテナーのコンテナー ID を探します。

    sudo docker ps
    

    次に、デバイス モデル ファイルを仮想マシンの tmp フォルダーにコピーします。 次のコマンドでは、コンテナー ID が c378d6878407 であることを前提としています。この値をデバイス シミュレーション コンテナー ID に置き換えます。

    sudo docker cp c378d6878407:/app/webservice/data/devicemodels /tmp
    sudo chown -R azureuser /tmp/devicemodels/
    

    [bash] ウィンドウで SSH セッションを開いたままにしておきます。

  4. カスタム デバイス モデル ファイルを仮想マシンにコピーします。 このコマンドは、カスタム デバイス モデルを作成したマシン上の別の bash シェルで実行します。 まず、デバイス モデルの JSON ファイルが保存されているローカル フォルダーに移動します。 次のコマンドでは、仮想マシンのパブリック IP アドレスが 104.41.128.108 であることを前提としています。この値を実際の仮想マシンのパブリック IP アドレスに置き換えます。 プロンプトが表示されたら、仮想マシンのパスワードを入力します。

    scp *json azureuser@104.41.128.108:/tmp/devicemodels
    cd scripts
    scp *js azureuser@104.41.128.108:/tmp/devicemodels/scripts
    
  5. 新しいデバイス モデルを使用するためにデバイス シミュレーション Docker コンテナーを再起動します。 仮想マシンへの SSH セッションを開いた状態で、bash シェルで次のコマンドを実行します。

    sudo /app/start.sh
    

    実行中の Docker コンテナーの状態とそのコンテナー ID を確認するには、次のコマンドを使用します。

    sudo docker ps
    

    デバイス シミュレーション コンテナーからログを表示するには、次のコマンドを実行します。 コンテナー ID を実際のデバイス シミュレーション コンテナーの ID に置き換えます。

    sudo docker logs -f 5d3f3e78822e
    

シミュレーションを実行する

リモート監視ソリューションで、カスタム デバイス モデルを使用できるようになりました。

  1. リモート監視ダッシュボードを起動します。

  2. [デバイス] ページを使用して、シミュレートされたデバイスを追加します。 新しいシミュレートされたデバイスを追加するときに、新しいデバイス モデルを選択できます。

  3. ダッシュボードを使用すると、デバイスのテレメトリを表示し、デバイス メソッドを呼び出すことができます。

リソースをクリーンアップする

さらに調べる場合は、リモート監視ソリューション アクセラレータをデプロイしたままにします。

ソリューション アクセラレータが不要になった場合は、削除します。

次のステップ

このガイドでは、カスタム デバイス モデルをリモート監視ソリューション アクセラレータに展開する方法について説明しました。 次は、実際のデバイスをご利用のリモート監視ソリューションに接続する方法について学習することをお勧めします。