注意

Mixed Reality Academy チュートリアルでは、HoloLens として設計された (第 1 世代) と混在の現実イマーシブ ヘッドセットに注意してください。The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. そのため、これらのデバイス向けの開発にガイダンスがまだ必要な開発者のための場所でこれらのチュートリアルのままにすることが重要と思われます。As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. これらのチュートリアルは いない 最新のツールセットや相互作用が使用されている HoloLens 2 で更新されます。These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. サポートされているデバイスで作業を続行するが保持されます。They will be maintained to continue working on the supported devices. 一連の新しい HoloLens 2 を開発する方法を示すチュートリアルは、今後投稿があります。There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. この通知が投稿されるときにこれらのチュートリアルへのリンクが更新されます。This notice will be updated with a link to those tutorials when they are posted.

MR と Azure 313:IoT Hub サービスMR and Azure 313: IoT Hub Service

コースの結果

このコースでは、実装する方法について説明します、 Azure IoT Hub Service仮想マシン上には、Ubuntu 16.4 オペレーティング システムを実行します。In this course, you will learn how to implement an Azure IoT Hub Service on a virtual machine running the Ubuntu 16.4 operating system. Azure Function App 、Ubuntu VM から送信されるメッセージを使用して、内で結果を格納するAzure Table Serviceします。An Azure Function App will then be used to receive messages from your Ubuntu VM, and store the result within an Azure Table Service. 使用してこのデータを表示できるが、 Power BI Microsoft HoloLens または没入型の (VR) ヘッドセット。You will then be able to view this data using Power BI on Microsoft HoloLens or immersive (VR) headset.

このコースの内容適用IoT Edge デバイスにこのコースでは、目的が、フォーカスがあり、仮想マシン環境でされる物理的なエッジ デバイスへのアクセスが必要ではありません。The content of this course is applicable to IoT Edge devices, though for the purpose of this course, the focus will be on a virtual machine environment, so that access to a physical Edge device is not necessary.

このコースを完了するを学習します。By completing this course, you will learn to:

  • デプロイをIoT Edge モジュールIoT デバイスを表す仮想マシン (Ubuntu 16 OS) にします。Deploy an IoT Edge module to a Virtual Machine (Ubuntu 16 OS), which will represent your IoT device.
  • 追加、 Azure Custom Vision Tensorflow モデルエッジ モジュールには、コンテナーに格納されているイメージを分析するコードにします。Add an Azure Custom Vision Tensorflow Model to the Edge module, with code that will analyze images stored in the container.
  • 分析結果のメッセージを送信する、モジュールの設定に戻す、 IoT Hub Serviceします。Set up the module to send the analysis result message back to your IoT Hub Service.
  • 使用して、 Azure Function App内でメッセージを格納する、 Azure Tableします。Use an Azure Function App to store the message within an Azure Table.
  • 設定するPower BIを格納されたメッセージを収集してレポートを作成します。Set up Power BI to collect the stored message and create a report.
  • 内で IoT メッセージ データを視覚化するPower BIします。Visualize your IoT message data within Power BI.

使用するサービスは次のとおりです。The Services you will use include:

  • Azure IoT Hubにより、接続、監視、および IoT 資産の管理、開発者が Microsoft Azure サービスです。Azure IoT Hub is a Microsoft Azure Service which allows developers to connect, monitor, and manage, IoT assets. 詳細については、次を参照してください。、 Azure IoT Hub Serviceページします。For more information, visit the Azure IoT Hub Service page.

  • Azure Container Registryは、開発者がさまざまな種類のコンテナーのコンテナー イメージを格納する Microsoft Azure サービスです。Azure Container Registry is a Microsoft Azure Service which allows developers to store container images, for various types of containers. 詳細については、次を参照してください。、 Azure コンテナー レジストリ サービスページします。For more information, visit the Azure Container Registry Service page.

  • Azure Function App開発者が小規模なコードを実行する、Microsoft Azure のサービス '関数'、Azure では、します。Azure Function App is a Microsoft Azure Service, which allows developers to run small pieces of code, 'functions', in Azure. これは、多くのメリットを持つことができる、ローカル アプリケーションではなく、クラウドに作業を委任する方法を提供します。This provides a way to delegate work to the cloud, rather than your local application, which can have many benefits. Azure Functions C をなど、複数の開発言語をサポートしている#、F#Node.js、Java、および PHP します。Azure Functions supports several development languages, including C#, F#, Node.js, Java, and PHP. 詳細については、次を参照してください。、 Azure Functionsページします。For more information, visit the Azure Functions page.

  • Azure Storage:テーブルMicrosoft Azure サービスで、開発者が格納する構造化、非 SQL、データ、クラウドで任意の場所で簡単にアクセスできるようにします。Azure Storage: Tables is a Microsoft Azure Service, which allows developers to store structured, non-SQL, data in the cloud, making it easily accessible anywhere. サービスは、スキーマなしの設計は幅広いプラットフォーム、必要に応じて、テーブルの進化のことができます、非常に柔軟なは。The Service boasts a schema-less design, allowing for the evolution of tables as needed, and thus is very flexible. 詳細については、次を参照してください、 Azure Tablesページ。For more information, visit the Azure Tables page

このコースでは、セットアップし、IoT Hub サービスを使用し、デバイスによって提供される応答を視覚化する方法を説明します。This course will teach you how to setup and use the IoT Hub Service, and then visualize a response provided by a device. までにビルドしている場合カスタムの IoT Hub サービス設定でこれらの概念を適用することがあります。It will be up to you to apply these concepts to a custom IoT Hub Service setup, which you might be building.

デバイスのサポートDevice support

コースCourse HoloLensHoloLens イマーシブ ヘッドセットImmersive headsets
MR と Azure 313:IoT Hub サービスMR and Azure 313: IoT Hub Service ✔️✔️ ✔️✔️

前提条件Prerequisites

Microsoft HoloLens などの複合現実での開発の最新の前提条件をご覧ください、ツールをインストールする記事。For the most up-to-date prerequisites for developing with mixed reality, including with the Microsoft HoloLens, visit the Install the tools article.

注意

このチュートリアルは、Python を使用した基本的な経験を持っている開発者向けに設計されています。This tutorial is designed for developers who have basic experience with Python. また、前提条件やこのドキュメント内の書面の手順を表すテストおよび (2018 年 7 月) の書き込み時に検証されたがどのようなことに注意してください。Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (July 2018). 内に一覧表示するには自由に最新のソフトウェアを使用して、ツールをインストールする記事、ただし、このコースの情報が一致は完全にするよりも下に示す新しいソフトウェアで表示されますは仮定されません。You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you will find in newer software than that listed below.

次のハードウェアとソフトウェアが必要です。The following hardware and software is required:

  • Windows 10 Fall Creators Update (またはそれ以降)開発者モードが有効になっています。Windows 10 Fall Creators Update (or later), Developer Mode enabled

    警告

    Windows 10 Home エディションで、HYPER-V を使用して仮想マシンを実行することはできません。You cannot run a Virtual Machine using Hyper-V on Windows 10 Home Edition.

  • Windows 10 SDK (最新バージョン)Windows 10 SDK (latest version)

  • HoloLens、a開発者モードが有効になっています。A HoloLens, Developer Mode enabled

  • Visual Studio 2017.15.4 (Azure のクラウド エクスプ ローラーへのアクセスにのみ使用)Visual Studio 2017.15.4 (Only used to access the Azure Cloud Explorer)

  • Azure、および IoT Hub サービスのインターネット アクセス。Internet Access for Azure, and for IoT Hub Service. 詳細についてに従ってくださいこのIoT Hub サービスのページへのリンクFor more information, please follow this link to IoT Hub Service page

  • 機械学習モデル。A machine learning model. モデルを使用する準備がない、このコースで提供されるモデルを使用するします。If you do not have your own ready to use model, you can use the model provided with this course.

  • HYPER-Vソフトウェア、Windows 10 開発用コンピューターで有効にします。Hyper-V software enabled on your Windows 10 development machine.

  • 開発用コンピューターまたは別の方法として実行されている Ubuntu (16.4 または 18.4) を実行する仮想マシンには、Linux (Ubuntu 16.4 または 18.4) を実行している別のコンピューターを使用できます。A Virtual Machine running Ubuntu (16.4 or 18.4), running on your development machine or alternatively you can use a separate computer running Linux (Ubuntu 16.4 or 18.4). HYPER-V を使用して、Windows 上の VM を作成する方法の詳細についてを見つけることができます、 「開始前の準備」の章(。 https://docs.microsoft.com/virtualization/hyper-v-on-windows/quick-start/quick-create-virtual-machine).You can find more information on how to create a VM on Windows using Hyper-V in the "Before you Start" chapter.(https://docs.microsoft.com/virtualization/hyper-v-on-windows/quick-start/quick-create-virtual-machine).

開始前の作業Before you start

  1. 設定して、HoloLens をテストします。Set up and test your HoloLens. 場合は、HoloLens の設定をサポートする必要があるHoloLens のセットアップ記事を参照してください。 確認します。If you need support setting up your HoloLens, make sure to visit the HoloLens setup article.
  2. 実行することをお勧め調整センサー チューニング(も役立ちますユーザーごとにこれらのタスクを実行する) 新しい HoloLens アプリの開発を始めるときにします。It is a good idea to perform Calibration and Sensor Tuning when beginning developing a new HoloLens app (sometimes it can help to perform those tasks for each user).

調整に関するヘルプを参照するに従ってくださいこのHoloLens 調整記事へのリンクします。For help on Calibration, please follow this link to the HoloLens Calibration article.

センサーの調整に関する詳細についてに従ってくださいこのHoloLens センサー チューニング記事へのリンクします。For help on Sensor Tuning, please follow this link to the HoloLens Sensor Tuning article.

  1. セットアップ、 Ubuntu 仮想マシンを使用してHYPER-Vします。Set up your Ubuntu Virtual Machine using Hyper-V. 次のリソースでプロセスを役立ちます。The following resources will help you with the process.

    1. 最初に、このリンクに従う16.04.4 の Ubuntu LTS (Xenial Xerus) の ISO をダウンロードします。First, follow this link to download the Ubuntu 16.04.4 LTS (Xenial Xerus) ISO. 選択、 64 ビット PC (AMD64) デスクトップ イメージします。Select the 64-bit PC (AMD64) desktop image.
    2. 確認HYPER-Vは、Windows 10 コンピューターで有効になっています。Make sure Hyper-V is enabled on your Windows 10 machine. ガイダンスについては、このリンクをフォローできますインストールと Windows 10 で HYPER-V を有効化します。You can follow this link for guidance on installing and enabling Hyper-V on Windows 10.
    3. HYPER-V を開始し、新しい Ubuntu VM を作成します。Start Hyper-V and create a new Ubuntu VM. このリンクを利用できる、 、HYPER-V と VM を作成する方法についてステップ バイ ステップ ガイドします。You can follow this link for a step by step guide on how to create a VM with Hyper-V. 要求されると 「ブート イメージ ファイルからオペレーティング システムをインストールする」 を選択、 Ubuntu ISO以前ダウンロードがあります。When requested to "Install an operating system from a bootable image file", select the Ubuntu ISO you have download earlier.

    注意

    使用して 、HYPER-V のクイック作成はお勧めしません。Using Hyper-V Quick Create is not suggested.

第 1 章 - カスタム ビジョン モデルを取得します。Chapter 1 - Retrieve the Custom Vision model

このコースにアクセスすること、構築済みのカスタム ビジョン モデルキーボードとマウスの画像から検出します。With this course you will have access to a pre-built Custom Vision model that detects keyboards and mice from images. これを使用する場合に進みます第 2 章します。If you use this, proceed to Chapter 2.

ただし、独自のカスタム ビジョン モデルを使用する場合は、次の手順にできます。However, you can follow these steps if you wish to use your own Custom Vision model:

  1. カスタム ビジョン プロジェクトに移動して、パフォーマンスタブ。In your Custom Vision Project go to the Performance tab.

    警告

    モデルを使用する必要があります、 compactドメイン モデルをエクスポートします。Your model must use a compact domain, to export the model. プロジェクトの設定でドメイン モデルを変更できます。You can change your models domain in the settings for your project.

    [パフォーマンス] タブ

  2. 選択、イテレーションエクスポートし、をクリックするエクスポートします。Select the Iteration you want to export and click on Export. ブレードが表示されます。A blade will appear.

    ブレードをエクスポートします。

  3. ブレードで、 Docker ファイルします。In the blade click Docker File.

    docker を選択します。

  4. クリックしてLinuxクリックしてドロップダウン メニューでダウンロードします。Click Linux in the drop-down menu and then click on Download.

    ダウンロードをクリックします。

  5. コンテンツを解凍します。Unzip the content. このコースで後ほど使用します。You will use it later in this course.

第 2 章 - コンテナー レジストリ サービスChapter 2 - The Container Registry Service

コンテナー レジストリ サービスは、コンテナーをホストするために使用するリポジトリです。The Container Registry Service is the repository used to host your containers.

IoT Hub サービスビルドし、使用して、このコースでは参照するコンテナー レジストリ サービスEdge デバイスにデプロイするコンテナーを取得します。The IoT Hub Service that you will build and use in this course, refers to Container Registry Service to obtain the containers to deploy in your Edge Device.

  1. 最初に、これに従ってAzure ポータルへのリンク、資格情報を使用してログインします。First, follow this link to the Azure Portal, and login with your credentials.

  2. 移動してリソースの作成を探してContainer Registryします。Go to Create a resource and look for Container Registry.

    コンテナー レジストリ

  3. をクリックして作成です。Click on Create.

  4. サービスのセットアップ パラメーターを設定します。Set the Service setup parameters:

    1. この例では、プロジェクトの名前を挿入、呼び出されたIoTCRegistryします。Insert a name for your project, In this example its called IoTCRegistry.

    2. 選択、リソース グループか新規に作成します。Choose a Resource Group or create a new one. リソース グループは、監視、プロビジョニング、アクセスを制御および Azure の資産のコレクションの課金を管理する方法を提供します。A resource group provides a way to monitor, control access, provision, and manage, billing for a collection of Azure assets. 勧めします (例: これらのコース) などの 1 つのプロジェクトに共通のリソース グループの下の Azure サービスに関連付けられているすべて保持する)。It is recommended to keep all the Azure Services associated with a single project (e.g. such as these courses) under a common resource group).

    3. サービスの場所を設定します。Set the location of the Service.

    4. 設定管理者ユーザーを有効にするします。Set Admin user to Enable.

    5. 設定SKU基本的なします。Set SKU to Basic.

  5. クリックして作成し、サービスを作成するまで待ちます。Click Create and wait for the Services to be created.

  6. 通知はポップアップ通知が正常に作成すると、 Container Registry、 をクリックしてリソースに移動サービス ページにリダイレクトします。Once the notification pops up informing you of the successful creation of the Container Registry, click on Go to resource to be redirected to your Service page.

  7. Container Registryサービス ページで、をクリックしてアクセス キーします。In the Container Registry Service page, click on Access keys.

  8. メモしてをおきます (、メモ帳を使用する可能性があります)、次のパラメーター。Take note (you could use your Notepad) of the following parameters:

    1. ログイン サーバーLogin Server
    2. UsernameUsername
    3. PasswordPassword

第 3 章 - IoT Hub サービスChapter 3 - The IoT Hub Service

作成とのセットアップを開始するようになりました、 IoT Hub Serviceします。Now you will begin the creation and setup of your IoT Hub Service.

  1. サインインしていない場合のログイン、 Azure Portalします。If not already signed in, log into the Azure Portal.

  2. ログインすると、をクリックしてリソースの作成左上隅にある検索してIoT Hub、 をクリックEnterします。Once logged in, click on Create a resource in the top left corner, and search for IoT Hub, and click Enter.

ストレージ アカウントの検索

  1. 新しいページがの説明を入力、ストレージ アカウントサービス。The new page will provide a description of the Storage account Service. このダイアログ ボックスの左下にある at をクリックして、作成ボタンは、サービスのこのインスタンスを作成します。At the bottom left of this prompt, click the Create button, to create an instance of this Service.

    ストレージのインスタンスを作成します。

  2. クリックすると作成パネルが表示されます。Once you have clicked on Create, a panel will appear:

    1. 選択、リソース グループか新規に作成します。Choose a Resource Group or create a new one. リソース グループは、監視、プロビジョニングのアクセスを制御および Azure の資産のコレクションの課金を管理する方法を提供します。A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 勧めします (例: これらのコース) などの 1 つのプロジェクトに共通のリソース グループの下の Azure サービスに関連付けられているすべて保持する)。It is recommended to keep all the Azure Services associated with a single project (e.g. such as these courses) under a common resource group).

      詳細にする場合について、Azure リソース グループに従ってくださいこのリソース グループを管理する方法についてのリンクします。If you wish to read more about Azure Resource Groups, please follow this link on how to manage a Resource Group.

    2. 適切な選択場所(同じ場所でこのコースを作成するすべてのサービスを使用して)。Select an appropriate Location (Use the same location across all the Services you create in this course).

    3. 必要な挿入名前このサービス インスタンス。Insert your desired Name for this Service instance.

  3. ページの下部にある をクリックして次へ。サイズとスケールします。On the bottom of the page click on Next: Size and scale.

    ストレージのインスタンスを作成します。

  4. このページで、選択、価格とスケールティア(最初の IoT Hub サービス インスタンスの場合は、free レベルできるようにする)。In this page, select your Pricing and scale tier (if this is your first IoT Hub Service instance, a free tier should be available to you).

  5. をクリックして確認および作成です。Click on Review + Create.

    ストレージのインスタンスを作成します。

  6. 設定を確認して、をクリックして作成です。Review your settings and click on Create.

    ストレージのインスタンスを作成します。

  7. 通知はポップアップ通知が正常に作成すると、 IoT Hubサービス、 をクリックしてリソースに移動サービス ページにリダイレクトします。Once the notification pops up informing you of the successful creation of the IoT Hub Service, click on Go to resource to be redirected to your Service page.

    ストレージのインスタンスを作成します。

  8. 左側のサイド パネルに表示されるまでスクロールデバイスの自動管理、 をクリックIoT Edgeします。Scroll the side panel on the left until you see Automatic Device Management, the click on IoT Edge.

    ストレージのインスタンスを作成します。

  9. 右側に表示されるウィンドウでクリックしてIoT Edge デバイスの追加します。In the window that appears to the right, click on Add IoT Edge Device. ブレードが右側に表示されます。A blade will appear to the right.

  10. ブレードで、新しいデバイスを提供するデバイス ID (好みの名前)。In the blade, provide your new device a Device ID (a name of your choice). をクリックし、保存します。Then, click Save. プライマリセカンダリ キーは自動生成があればの自動生成オンします。The Primary and Secondary Keys will auto generate, if you have Auto Generate ticked.

    ストレージのインスタンスを作成します。

  11. 移動するが、 IoT Edge デバイス セクションで、新しいデバイスが表示されます。You will navigate back to the IoT Edge Devices section, where your new device will be listed. 新しいデバイスをクリックします (で赤で、イメージの下)。Click on your new device (outlined in red in the below image).

    ストレージのインスタンスを作成します。

  12. デバイスの詳細が表示されたら、ページのコピーを作成する、接続文字列(主キー)。On the Device Details page that appears, take a copy of the Connection String (primary key).

    ストレージのインスタンスを作成します。

  13. 、左側のパネルに戻り、をクリックして共有アクセス ポリシー、を開きます。Go back to the panel on the left, and click Shared access policies, to open it.

  14. 表示されるページで、をクリックしてiothubowner、し、画面の右側のブレードが表示されます。On the page that appears, click iothubowner, and a blade will appear to the right of the screen.

  15. 書き留めて (上、メモ帳)、接続文字列(主キー) を設定するときに、後で使用、接続文字列デバイスにします。Take note (on your Notepad) of the Connection string (primary key), for later use when setting the Connection String to your device.

    ストレージのインスタンスを作成します。

第 4 章 - 開発環境を設定します。Chapter 4 - Setting up the development environment

作成、展開用モジュールIoT Hub の Edge、Windows 10 を実行している開発用コンピューターにインストールされている、次のコンポーネントが必要になります。In order to create and deploy modules for IoT Hub Edge, you will require the following components installed on your development machine running Windows 10:

  1. Windows の docker、ダウンロードできるようにするアカウントを作成するよう求められます。Docker for Windows, it will ask you to create an account to be able to download.

    windows の docker をダウンロードします。download docker for windows

    重要

    Docker 必要がありますWindows 10 PROEnterprise 14393、またはWindows Server 2016 RTMを実行します。Docker requires Windows 10 PRO, Enterprise 14393, or Windows Server 2016 RTM, to run. その他のバージョンの Windows 10 を実行している場合、Docker を使用してをインストールしてくださいことができます、 Docker Toolboxします。If you are running other versions of Windows 10, you can try installing Docker using the Docker Toolbox.

  2. Python 3.6します。Python 3.6.

    python 3.6 をダウンロードします。download python 3.6

  3. Visual Studio Code (VS Code とも呼ばれます)します。Visual Studio Code (also known as VS Code).

    VS Code をダウンロードします。download VS Code

上記で説明したソフトウェアのインストール後は、コンピューターを再起動する必要があります。After installing the software mentioned above, you will need to restart your machine.

第 5 章 - Ubuntu 環境のセットアップChapter 5 - Setting up the Ubuntu environment

デバイスのセットアップ移動できますようになりましたUbuntu OS を実行しているします。Now you can move on to setting up your device running Ubuntu OS. ボード上、コンテナーをデプロイするために必要なソフトウェアをインストールするのには、下の手順に従います。Follow the steps below, to install the necessary software, to deploy your containers on your board:

重要

ターミナル、コマンドの前に常にsudo管理者ユーザーとして実行します。You should always precede the terminal commands with sudo to run as admin user. つまり、します。i.e:

sudo docker \<option> \<command> \<argument>
  1. 開く、 Ubuntu のターミナル、次のコマンドを使用してインストールしてpip:Open the Ubuntu Terminal, and use the following command to install pip:

    [!ヒント] を開く*ターミナル*キーボード ショートカットを使用して非常に簡単に使用します。*Ctrl + Alt + T*します。 You can open *Terminal* very easily through using the keyboard shortcut: *Ctrl + Alt + T*.

        sudo apt-get install python-pip
    
  2. この章では、する必要があります、によってターミナルデバイス ストレージを使用するアクセス許可、および入力するをはい/いいえ(はいまたは no)、型 'y'、キーを押しますと、Enterを受け入れるためのキー。Throughout this Chapter, you may be prompted, by Terminal, for permission to use your device storage, and for you to input y/n (yes or no), type 'y', and then press the Enter key, to accept.

  3. そのコマンドが完了すると、次のコマンドを使用してをインストールするcurl:Once that command has completed, use the following command to install curl:

        sudo apt install curl
    
  4. 1 回pipcurlは、次のコマンドを使用してインストールする、インストールされている、 IoT Edge ランタイムを展開し、ボード上のモジュールを制御するために必要になります。Once pip and curl are installed, use the following command to install the IoT Edge runtime, this is necessary to deploy and control the modules on your board:

        curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > ./microsoft-prod.list
    
        sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
    
        curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    
        sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
    
        sudo apt-get update
    
        sudo apt-get install moby-engine
    
        sudo apt-get install moby-cli
    
        sudo apt-get update
    
        sudo apt-get install iotedge
    
  5. この時点で求められますを開く、ランタイム構成ファイル、挿入する、 Device Connection String、(、メモ帳で)、メモしたを作成するとき、 IoT Hub サービス (第 3 章の手順 14 で)。At this point you will be prompted to open up the runtime config file, to insert the Device Connection String, that you noted down (in your Notepad), when creating the IoT Hub Service (at step 14, of Chapter 3). そのファイルを開くターミナルで次の行を実行します。Run the following line on the terminal to open that file:

        sudo nano /etc/iotedge/config.yaml
    
  6. Config.yamlファイルが表示されている、編集するための準備完了になります。The config.yaml file will be displayed, ready for you to edit:

    警告

    このファイルが開いたら、やや混乱を招く場合があります。When this file opens, it may be somewhat confusing. テキスト内で、このファイルを編集する必要がある、ターミナル自体。You will be text editing this file, within the Terminal itself.

    1. キーボードの矢印キーを使用して、スクロール ダウン (少し方法下へスクロールする必要があります) を含む行に到達する"。Use the arrow keys on your keyboard to scroll down (you will need to scroll down a little way), to reach the line containing":

      "<デバイス接続文字列をここでの追加 >"。"<ADD DEVICE CONNECTION STRING HERE>".

    2. 行を置き換える 、中かっこも含めで、デバイスの接続文字列先ほどメモします。Substitute line, including the brackets, with the Device Connection String you have noted earlier.

  7. キーボードの場所に、接続文字列とキーを押して、 CTRL + Xキー ファイルを保存します。With your Connection String in place, on your keyboard, press the Ctrl-X keys to save the file. 」と入力して確認するよう求められますYします。次に、キーを押して、 」と入力キーを確認します。It will ask you to confirm by typing Y. Then, press the Enter key, to confirm. 通常に戻り、ターミナルします。You will go back to the regular Terminal.

  8. インストールがこれらのコマンドがすべて正常に実行すると、 IoT Edge ランタイムします。Once these commands have all run successfully, you will have installed the IoT Edge Runtime. 初期化されると、ランタイムは、デバイスの電源が入っている独自たびに開始して、バック グラウンドでモジュールから展開するを待つ内に配置されます、 IoT Hub Serviceします。Once initialized, the runtime will start on its own every time the device is powered up, and will sit in the background, waiting for modules to be deployed from the IoT Hub Service.

  9. 初期化するために次のコマンドラインの実行、 IoT Edge ランタイム:Run the following command line to initialize the IoT Edge Runtime:

        sudo systemctl restart iotedge
    

    重要

    .Yaml ファイル、または上記の設定を変更する場合、上記の再起動の行を再度実行する必要があります。 内ターミナルします。If you make changes to your .yaml file, or the above setup, you will need to run the above restart line again, within Terminal.

  10. チェック、 IoT Edge ランタイム次のコマンドラインを実行している別の状態。Check the IoT Edge Runtime status by running the following command line. ランタイムが、状態で表示される必要がありますアクティブ (実行中) を緑のテキスト。The runtime should appear with the status active (running) in green text.

        sudo systemctl status iotedge
    
  11. キーを押して、 Ctrl + Cキー、状態 ページを終了します。Press the Ctrl-C keys, to exit the status page. 確認することができます、 IoT Edge ランタイム次のコマンドを入力して、コンテナーを正しく引いています。You can verify that the IoT Edge Runtime is pulling the containers correctly by typing the following command:

        sudo docker ps
    
  12. 2 つのコンテナーの一覧が表示されます。A list with two (2) containers should appear. これらは、IoT Hub サービス (edgeAgent および edgeHub) によって自動的に作成される既定のモジュールです。These are the default modules that are automatically created by the IoT Hub Service (edgeAgent and edgeHub). 作成して、独自のモジュールを展開すると、既定の下に、この一覧に表示されます。Once you create and deploy your own modules, they will appear in this list, underneath the default ones.

第 6 章 - 拡張機能をインストールします。Chapter 6 - Install the extensions

重要

次のいくつかの章 (6 ~ 9) では、Windows 10 コンピューターで実行します。The next few Chapters (6-9) are to be performed on your Windows 10 machine.

  1. 開いているVS Codeします。Open VS Code.

  2. をクリックして、拡張機能(正方形) ボタンの左側の VS、バーコードを開く、拡張機能パネルします。Click on the Extensions (square) button on the left bar of VS Code, to open the Extensions panel.

  3. 検索し、インストールの場合は、(次の図に示すように)、次の拡張機能。Search for, and install, the following extensions (as shown in the image below):

    1. Azure IoT EdgeAzure IoT Edge
    2. Azure IoT ToolkitAzure IoT Toolkit
    3. DockerDocker

    コンテナーを作成します。

  4. 拡張機能がインストールされると、VS Code を再度開くを閉じています。Once the extensions are installed, close and re-open VS Code.

  5. VS Code で、もう一度開きに移動しますビュー > 統合ターミナルします。With VS Code open once more, navigate to View > Integrated terminal.

  6. インストールするようになりましたCookiecutterします。You will now install Cookiecutter. ターミナルで次の bash コマンドを実行します。In the terminal run the following bash command:

        pip install --upgrade --user cookiecutter
    

    [!ヒント] で次のコマンドに問題がある場合: If you have trouble with this command:

    1. VS Code、および/またはコンピューターを再起動します。Restart VS Code, and/ or your computer.
    2. 切り替える必要があります、 VS Code ターミナルを使用してつまり、Python をインストールする 1 つPowershell (特に場合に、Python 環境は、コンピューターに既にインストールされている)。It might be necessary to switch the VS Code Terminal to the one you have been using to install Python, i.e. Powershell (especially in case the Python environment was already installed on your machine). ターミナルを開き、端末の右側にあるメニューのドロップダウンが表示されます。With the Terminal open, you will find the drop down menu on the right side of the Terminal. コンテナーを作成します。Create your container
    3. 確認、 Pythonとしてのインストール パスが追加されます環境変数コンピューターにします。Make sure the Python installation path is added as Environment Variable on your machine. Cookiecutter は、同じロケーション パスの一部にする必要があります。Cookiecutter should be part of the same location path. これに従ってください環境変数の詳細については、リンクPlease follow this link for more information on Environment Variables,
  7. 1 回Cookiecutter 、インストールが完了した、コンピューターを再起動する必要がありますようにCookiecutterはシステムの環境でのコマンドとして認識します。Once Cookiecutter has finished installing, you should restart your machine, so that Cookiecutter is recognized as a command, within your System's environment.

7 -」の章のコンテナー ソリューションを作成します。Chapter 7 - Create your container solution

この時点では、モジュールにプッシュされると、コンテナーを作成する必要があります、 Container Registryします。At this point, you need to create the container, with the module, to be pushed into the Container Registry. 使用するコンテナーをプッシュすると、 IoT Hub の Edgeを実行しているデバイスにデプロイするサービス、 IoT Edge ランタイムします。Once you have pushed your container, you will use the IoT Hub Edge Service to deploy it to your device, which is running the IoT Edge runtime.

  1. VS Code からクリックしてビュー > コマンド パレットします。From VS Code, click View > Command palette.

  2. パレットで、検索し、実行Azure IoT Edge:新しい Iot Edge ソリューションします。In the palette, search and run Azure IoT Edge: New Iot Edge Solution.

  3. ソリューションを作成する場所を参照します。Browse into a location where you want to create your solution. キーを押して、 」と入力キー、場所をそのままにします。Press the Enter key, to accept the location.

  4. ソリューションに名前を付けます。Give a name to your solution. キーを押して、 Enterキーを指定された名前を確認します。Press the Enter key, to confirm your provided name.

  5. 今すぐ求め、ソリューション テンプレートの framework を選択します。Now you will be prompted to choose the template framework for your solution. クリックしてPython モジュールします。Click Python Module. キーを押して、 Enterキーは、この選択内容を確認します。Press the Enter key, to confirm this choice.

  6. モジュールの名前を付けます。Give a name to your module. キーを押して、 Enterキーをモジュールの名前を確認します。Press the Enter key, to confirm the name of your module. 後で使用するために、モジュール名 (、メモ帳) をメモしてを実行することを確認してください。Make sure to take a note (with your Notepad) of the module name, as it is used later.

  7. 構築済みわかりますDocker イメージ リポジトリパレットにアドレスが表示されます。You will notice a pre-built Docker Image Repository address will appear on the palette. 次のようになります。It will look like:

    localhost:5000/名前、モジュールのします。localhost:5000/-THE NAME OF YOUR MODULE-.

  8. 削除localhost:5000、およびその場所の挿入、Container Registry ログイン サーバーアドレスで、作成するときにメモしておいた、コンテナーレジストリ サービス(手順 8、第 2 章の)。Delete localhost:5000, and in its place insert the Container Registry Login Server address, which you noted when creating the Container Registry Service (in step 8, of Chapter 2). キーを押して、 Enterキー、アドレスを確認します。Press the Enter key, to confirm the address.

  9. この時点で、テンプレート、Python モジュールを含むソリューションが作成され、その構造が表示されます、探索タブ画面の左側にある、VS Code の。At this point, the solution containing the template for your Python module will be created and its structure will be displayed in the Explore Tab, of VS Code, on the left side of the screen. 場合、探索タブが開いていない場合、開くことができますが、左側のバーで、最上位のボタンをクリックしています。If the Explore Tab is not open, you can open it by clicking the top-most button, in the bar on the left.

    コンテナーを作成します。

  10. この章の最後の手順は、をクリックして開く、 .env ファイル、内から、 タブの調査、追加、 Container Registry ユーザー名パスワードします。The last step for this Chapter, is to click and open the .env file, from within the Explore Tab, and add your Container Registry username and password. このファイルは、git によって無視されますが、コンテナーでは、ビルドにへのアクセスに資格情報の設定は、コンテナー レジストリ サービスします。This file is ignored by git, but on building the container, will set the credentials to access the Container Registry Service.

    コンテナーを作成します。

第 8 章 - コンテナー ソリューションの編集Chapter 8 - Editing your container solution

今すぐは、次のファイルを更新することで、コンテナー ソリューションを行います。You will now complete the container solution, by updating the following files:

  • メイン.py python スクリプト。main.py python script.
  • requirements.txtします。requirements.txt.
  • deployment.template.jsonします。deployment.template.json.
  • Dockerfile.amd64Dockerfile.amd64

作成して、イメージと照合するイメージを確認する python スクリプトで使用される、フォルダー、カスタム ビジョン モデルします。You will then create the images folder, used by the python script to check for images to match against your Custom Vision model. 最後に、追加、 labels.txt 、モデルを読み取るためのファイルとmodel.pbファイルで、これは、モデルです。Lastly, you will add the labels.txt file, to help read your model, and the model.pb file, which is your model.

  1. VS Code で開き、モジュール フォルダーに移動し、という名前のスクリプトを探してメイン.pyします。With VS Code open, navigate to your module folder, and look for the script called main.py. ダブルクリックして開きます。Double-click to open it.

  2. ファイルの内容を削除し、次のコードを挿入します。Delete the content of the file and insert the following code:

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license. See LICENSE file in the project root for
    # full license information.
    
    import random
    import sched, time
    import sys
    import iothub_client
    from iothub_client import IoTHubModuleClient, IoTHubClientError, IoTHubTransportProvider
    from iothub_client import IoTHubMessage, IoTHubMessageDispositionResult, IoTHubError
    import json
    import os
    import tensorflow as tf
    import os
    from PIL import Image
    import numpy as np
    import cv2
    
    # messageTimeout - the maximum time in milliseconds until a message times out.
    # The timeout period starts at IoTHubModuleClient.send_event_async.
    # By default, messages do not expire.
    MESSAGE_TIMEOUT = 10000
    
    # global counters
    RECEIVE_CALLBACKS = 0
    SEND_CALLBACKS = 0
    
    TEMPERATURE_THRESHOLD = 25
    TWIN_CALLBACKS = 0
    
    # Choose HTTP, AMQP or MQTT as transport protocol.  Currently only MQTT is supported.
    PROTOCOL = IoTHubTransportProvider.MQTT
    
    
    # Callback received when the message that we're forwarding is processed.
    def send_confirmation_callback(message, result, user_context):
        global SEND_CALLBACKS
        print ( "Confirmation[%d] received for message with result = %s" % (user_context, result) )
        map_properties = message.properties()
        key_value_pair = map_properties.get_internals()
        print ( "    Properties: %s" % key_value_pair )
        SEND_CALLBACKS += 1
        print ( "    Total calls confirmed: %d" % SEND_CALLBACKS )
    
    
    def convert_to_opencv(image):
        # RGB -> BGR conversion is performed as well.
        r,g,b = np.array(image).T
        opencv_image = np.array([b,g,r]).transpose()
        return opencv_image
    
    def crop_center(img,cropx,cropy):
        h, w = img.shape[:2]
        startx = w//2-(cropx//2)
        starty = h//2-(cropy//2)
        return img[starty:starty+cropy, startx:startx+cropx]
    
    def resize_down_to_1600_max_dim(image):
        h, w = image.shape[:2]
        if (h < 1600 and w < 1600):
            return image
    
        new_size = (1600 * w // h, 1600) if (h > w) else (1600, 1600 * h // w)
        return cv2.resize(image, new_size, interpolation = cv2.INTER_LINEAR)
    
    def resize_to_256_square(image):
        h, w = image.shape[:2]
        return cv2.resize(image, (256, 256), interpolation = cv2.INTER_LINEAR)
    
    def update_orientation(image):
        exif_orientation_tag = 0x0112
        if hasattr(image, '_getexif'):
            exif = image._getexif()
            if (exif != None and exif_orientation_tag in exif):
                orientation = exif.get(exif_orientation_tag, 1)
                # orientation is 1 based, shift to zero based and flip/transpose based on 0-based values
                orientation -= 1
                if orientation >= 4:
                    image = image.transpose(Image.TRANSPOSE)
                if orientation == 2 or orientation == 3 or orientation == 6 or orientation == 7:
                    image = image.transpose(Image.FLIP_TOP_BOTTOM)
                if orientation == 1 or orientation == 2 or orientation == 5 or orientation == 6:
                    image = image.transpose(Image.FLIP_LEFT_RIGHT)
        return image
    
    
    def analyse(hubManager):
    
        messages_sent = 0;
    
        while True:
            #def send_message():
            print ("Load the model into the project")
            # These names are part of the model and cannot be changed.
            output_layer = 'loss:0'
            input_node = 'Placeholder:0'
    
            graph_def = tf.GraphDef()
            labels = []
    
            labels_filename = "labels.txt"
            filename = "model.pb"
    
            # Import the TF graph
            with tf.gfile.FastGFile(filename, 'rb') as f:
                graph_def.ParseFromString(f.read())
                tf.import_graph_def(graph_def, name='')
    
            # Create a list of labels
            with open(labels_filename, 'rt') as lf:
                for l in lf:
                    labels.append(l.strip())
            print ("Model loaded into the project")
    
            results_dic = dict()
    
            # create the JSON to be sent as a message
            json_message = ''
    
            # Iterate through images 
            print ("List of images to analyse:")
            for file in os.listdir('images'):
                print(file)
    
                image = Image.open("images/" + file)
    
                # Update orientation based on EXIF tags, if the file has orientation info.
                image = update_orientation(image)
    
                # Convert to OpenCV format
                image = convert_to_opencv(image)
    
                # If the image has either w or h greater than 1600 we resize it down respecting
                # aspect ratio such that the largest dimension is 1600
                image = resize_down_to_1600_max_dim(image)
    
                # We next get the largest center square
                h, w = image.shape[:2]
                min_dim = min(w,h)
                max_square_image = crop_center(image, min_dim, min_dim)
    
                # Resize that square down to 256x256
                augmented_image = resize_to_256_square(max_square_image)
    
                # The compact models have a network size of 227x227, the model requires this size.
                network_input_size = 227
    
                # Crop the center for the specified network_input_Size
                augmented_image = crop_center(augmented_image, network_input_size, network_input_size)
    
                try:
                    with tf.Session() as sess:     
                        prob_tensor = sess.graph.get_tensor_by_name(output_layer)
                        predictions, = sess.run(prob_tensor, {input_node: [augmented_image] })
                except Exception as identifier:
                    print ("Identifier error: ", identifier)
    
                print ("Print the highest probability label")
                highest_probability_index = np.argmax(predictions)
                print('FINAL RESULT! Classified as: ' + labels[highest_probability_index])
    
                l = labels[highest_probability_index]
    
                results_dic[file] = l
    
                # Or you can print out all of the results mapping labels to probabilities.
                label_index = 0
                for p in predictions:
                    truncated_probablity = np.float64(round(p,8))
                    print (labels[label_index], truncated_probablity)
                    label_index += 1
    
            print("Results dictionary")
            print(results_dic)
    
            json_message = json.dumps(results_dic)
            print("Json result")
            print(json_message)
    
            # Initialize a new message
            message = IoTHubMessage(bytearray(json_message, 'utf8'))
    
            hubManager.send_event_to_output("output1", message, 0)
    
            messages_sent += 1
            print("Message sent! - Total: " + str(messages_sent))      
            print('----------------------------')
    
            # This is the wait time before repeating the analysis
            # Currently set to 10 seconds
            time.sleep(10)
    
    
    class HubManager(object):
    
        def __init__(
                self,
                protocol=IoTHubTransportProvider.MQTT):
            self.client_protocol = protocol
            self.client = IoTHubModuleClient()
            self.client.create_from_environment(protocol)
    
            # set the time until a message times out
            self.client.set_option("messageTimeout", MESSAGE_TIMEOUT)
    
        # Forwards the message received onto the next stage in the process.
        def forward_event_to_output(self, outputQueueName, event, send_context):
            self.client.send_event_async(
                outputQueueName, event, send_confirmation_callback, send_context)
    
        def send_event_to_output(self, outputQueueName, event, send_context):
            self.client.send_event_async(outputQueueName, event, send_confirmation_callback, send_context)
    
    def main(protocol):
        try:
            hub_manager = HubManager(protocol)
            analyse(hub_manager)
            while True:
                time.sleep(1)
    
        except IoTHubError as iothub_error:
            print ( "Unexpected error %s from IoTHub" % iothub_error )
            return
        except KeyboardInterrupt:
            print ( "IoTHubModuleClient sample stopped" )
    
    if __name__ == '__main__':
        main(PROTOCOL)
    
  3. というファイルを開くrequirements.txt、その内容を次に置き換えます。Open the file called requirements.txt, and substitute its content with the following:

    azure-iothub-device-client==1.4.0.0b3
    opencv-python==3.3.1.11
    tensorflow==1.8.0
    pillow==5.1.0
    
  4. というファイルを開くdeployment.template.json、その次のコンテンツを置き換えると、以下のガイドライン。Open the file called deployment.template.json, and substitute its content following the below guideline:

    1. 自分で、一意の JSON 構造を必要があります、ため (例をコピー) ではなく手動で編集する必要があります。Because you will have your own, unique, JSON structure, you will need to edit it by hand (rather than copying an example). 簡単にするを使用して、次のガイドとして画像。To make this easy, use the below image as a guide.

    2. 次に、さまざまな領域があるは変更しないでくださいは黄色で強調表示します。Areas which will look different to yours, but which you should NOT change are highlighted yellow.

    3. を削除する必要があるセクションでは、強調表示されている red です。Sections which you need to delete, are a highlighted red.

    4. 正しいの角かっこを削除するように注意してくださいし、も、コンマを削除します。Be careful to delete the correct brackets, and also remove the commas.

      コンテナーを作成します。

    5. 完了した JSON は、次の図のようになります (一意の相違点は、サーバーでは、:モジュール/ユーザー名/パスワード/モジュール名参照)。The completed JSON should look like the following image (though, with your unique differences: username/password/module name/module references):

      コンテナーを作成します。

  5. というファイルを開くDockerfile.amd64、その内容を次に置き換えます。Open the file called Dockerfile.amd64, and substitute its content with the following:

    FROM ubuntu:xenial
    
    WORKDIR /app
    
    RUN apt-get update && \
        apt-get install -y --no-install-recommends libcurl4-openssl-dev python-pip libboost-python-dev && \
        rm -rf /var/lib/apt/lists/* 
    RUN pip install --upgrade pip
    RUN pip install setuptools
    
    COPY requirements.txt ./
    RUN pip install -r requirements.txt
    
    RUN pip install pillow
    RUN pip install numpy
    
    RUN apt-get update && apt-get install -y \ 
        pkg-config \
        python-dev \ 
        python-opencv \ 
        libopencv-dev \ 
        libav-tools  \ 
        libjpeg-dev \ 
        libpng-dev \ 
        libtiff-dev \ 
        libjasper-dev \ 
        python-numpy \ 
        python-pycurl \ 
        python-opencv
    
    
    RUN pip install opencv-python
    RUN pip install tensorflow
    RUN pip install --upgrade tensorflow
    
    COPY . .
    
    RUN useradd -ms /bin/bash moduleuser
    USER moduleuser
    
    CMD [ "python", "-u", "./main.py" ]
    
    
  6. 下にフォルダーを右クリックしてモジュール(以前; 指定した名前になりますで例をそれをさらに、呼び出されますpythonmodule)、 をクリック新しいフォルダー.Right-click on the folder beneath modules (it will have the name you provided previously; in the example further down, it is called pythonmodule), and click on New Folder. フォルダーの名前イメージします。Name the folder images.

  7. フォルダー内には、マウスまたはキーボードを含む一部のイメージを追加します。Inside the folder, add some images containing mouse or keyboard. イメージ、Tensorflow モデルによって分析されるものになります。Those will be the images that will be analyzed by the Tensorflow model.

    警告

    独自のモデルを使用している場合は、独自のモデル データを反映するようにこれを変更する必要があります。If you are using your own model, you will need to change this to reflect your own models data.

  8. 取得する必要がありますこれで、 labels.txtmodel.pb以前ダウンロード モデル フォルダーからファイルを (または独自から作成したCustom Vision Service) で第 1 章します。You will now need to retrieve the labels.txt and model.pb files from the model folder, which you previous downloaded (or created from your own Custom Vision Service), in Chapter 1. ファイルを作成したら、その他のファイルと共に、ソリューション内でそれらを配置します。Once you have the files, place them within your solution, alongside the other files. 最終的な結果は、次の図のようになります。The final result should look like the image below:

    コンテナーを作成します。

第 9 章 – パッケージのコンテナーとしてソリューションChapter 9 - Package the solution as a container

  1. コンテナーとして、ファイルを「パッケージ」し、それをプッシュする準備が整いました、 Azure Container Registryします。You are now ready to "package" your files as a container and push it to your Azure Container Registry. VS Code 内で開く、統合ターミナル(ビュー > 統合ターミナル/CTRL + ') へのログインに次の行を使用してDocker (の値に置き換えてください、コマンドの資格情報をAzure Container Registry (ACR))。Within VS Code, open the Integrated Terminal (View > Integrated Terminal / CTRL + `), and use the following line to login to Docker (substitute the values of the command with the credentials of your Azure Container Registry (ACR)):

        docker login -u <ACR username> -p <ACR password> <ACR login server>
    
  2. ファイルを右クリックしてdeployment.template.json、 をクリックIoT Edge ソリューションのビルドします。Right-click on the file deployment.template.json, and click Build IoT Edge Solution. このビルド プロセス (デバイス) によってはかなり時間のかかるので、待機します。This build process takes quite some time (depending on your device), so be prepared to wait. ビルド プロセスが完了した後、 deployment.jsonという名前の新しいフォルダー内のファイルが作成されているがconfigします。After the build process finishes, a deployment.json file will have been created inside a new folder called config.

    デプロイを作成します。

  3. 開く、コマンド パレット、もう一度検索してAzure:サインインします。Open the Command Palette again, and search for Azure: Sign In. Azure アカウントの資格情報以外を使用して、画面の指示をに従ってください。VS Code の提供するためのオプションコピーして開く、どちらの間もなくし、既定の web ブラウザーを開きますが、デバイス コードをコピーします。Follow the prompts using your Azure Account credentials; VS Code will provide you with an option to Copy and Open, which will copy the device code you will soon need, and open your default web browser. メッセージが表示されたら、コンピューターの認証に、デバイス コードを貼り付けます。When asked, paste the device code, to authenticate your machine.

    コピーを開きます

  4. 表示されますの下にある符号付き 1 回、探索パネル、という名前の新しいセクションAzure IoT Hub デバイスします。Once signed in you will notice, on the bottom side of the Explore panel, a new section called Azure IoT Hub Devices. 展開するには、このセクションをクリックします。Click this section to expand it.

    エッジ デバイス

  5. デバイスがここではない場合を右クリックする必要があります。 Azure IoT Hub デバイス、をクリックし、 IoT Hub 接続文字列の設定します。If your device is not here, you will need to right-click Azure IoT Hub Devices, and then click Set IoT Hub Connection String. 表示されますが、コマンド パレット(VS Code の上部) にはプロンプトで入力する、接続文字列します。You will then see that the Command Palette (at the top of VS Code), will prompt you to input your Connection String. これは、接続文字列の最後にメモした第 3 章します。This is the Connection String you noted down at the end of Chapter 3. キーを押して、 Enterで文字列をコピーした後、キーします。Press the Enter key, once you have copied the string in.

  6. デバイスは、読み込み、および表示する必要があります。Your device should load, and appear. デバイス名を右クリックし、をクリック1 つのデバイスの Create Deploymentします。Right-click on the device name, and then click, Create Deployment for Single Device.

    デプロイを作成します。

  7. 表示されます、ファイル エクスプ ローラープロンプトに移動することができます、 configフォルダー、および選択し、 deployment.jsonファイル。You will get a File Explorer prompt, where you can navigate to the config folder, and then select the deployment.json file. そのファイルを選択すると、クリックして、 Edge 配置マニフェストの選択ボタンをクリックします。With that file selected, click the Select Edge Deployment Manifest button.

    デプロイを作成します。

  8. この時点で指定した、 IoT Hub Serviceマニフェスト モジュールとしてから、コンテナーをデプロイするために、 Azure Container Registry、実質的に、デバイスに展開します。At this point you have provided your IoT Hub Service with the manifest for it to deploy your container, as a module, from your Azure Container Registry, effectively deploying it to your device.

  9. デバイスから IoT Hub に送信されるメッセージを表示するには、もう一度右クリックで、デバイス名をAzure IoT Hub デバイスセクションで、エクスプ ローラーパネルをクリックします監視の開始D2C メッセージします。To view the messages sent from your device to the IoT Hub, right-click again on your device name in the Azure IoT Hub Devices section, in the Explorer panel, and click on Start Monitoring D2C Message. VS ターミナルで、デバイスから送信されたメッセージが表示されます。The messages sent from your device should appear in the VS Terminal. 患者に、これは時間がかかります。Be patient, as this may take some time. デバッグ、および配置が成功したかどうかにチェックの次の章を参照してください。See the next Chapter for debugging, and checking if deployment was successful.

内のイメージ間でこのモジュールに処理され、今すぐ、イメージフォルダーの各イテレーションで分析したりと。This module will now iterate between the images in the images folder and analyze them, with each iteration. これは、単なる明らかに、IoT Edge デバイスの環境で動作する基本的な機械学習モデルを取得する方法のデモンストレーションです。This is obviously just a demonstration of how to get the basic machine learning model to work in an IoT Edge device environment.

この例の機能を展開するには、いくつかの方法で続行する可能性があります。To expand the functionality of this example, you could proceed in several ways. デバイスに接続されていて、images フォルダーにイメージを保存します。 web カメラから写真をキャプチャすると、コンテナーで 1 つの方法をいくつかのコードなどでした。One way could be including some code in the container, that captures photos from a webcam that is connected to the device, and saves the images in the images folder.

別の方法でしたするイメージのコピー、IoT デバイスからコンテナーにします。Another way could be copying the images from the IoT device into the container. そのための実用的な方法では、IoT デバイス (おそらく小規模なアプリがジョブを実行、プロセスを自動化する場合) のターミナルで次のコマンドを実行します。A practical way to do that is to run the following command in the IoT device Terminal (perhaps a small app could do the job, if you wished to automate the process). このコマンドをテストするには、ファイルが格納されているフォルダーの場所から手動で実行します。You can test this command by running it manually from the folder location where your files are stored:

    sudo docker cp <filename> <modulename>:/app/images/<a name of your choice>

第 10 章 - IoT Edge ランタイムのデバッグChapter 10 - Debugging the IoT Edge Runtime

コマンドライン、および監視およびのメッセージング アクティビティをデバッグするためのヒントの一覧を次に、 IoT Edge ランタイムから、 Ubuntu デバイスします。The following are a list of command lines, and tips, to help you monitor and debug the messaging activity of the IoT Edge Runtime, from your Ubuntu device.

  • チェック、 IoT Edge ランタイム次のコマンドラインを実行している別の状態。Check the IoT Edge Runtime status by running the following command line:

        sudo systemctl status iotedge
    

    注意

    キーを押すようにCtrl + Cステータスの表示が完了する。Remember to press Ctrl + C, to finish viewing the status.

  • 現在展開されているコンテナーを一覧表示します。List the containers that are currently deployed. 場合、 IoT Hub Serviceコンテナーを正常にデプロイが次のコマンドラインを実行してが表示されます。If the IoT Hub Service has deployed the containers successfully, they will be displayed by running the following command line:

        sudo iotedge list
    

    またはOr

        sudo docker ps
    

    注意

    上記の適しているかどうか、モジュールのデプロイが正常にリストに表示されるかを確認するにはそれ以外の場合は、のみを参照してください、 edgeHubedgeAgentします。The above is a good way to check whether your module has been deployed successfully, as it will appear in the list; you will otherwise only see the edgeHub and edgeAgent.

  • コンテナーのコードのログを表示するには、次のコマンドラインを実行します。To display the code logs of a container, run the following command line:

        journalctl -u iotedge
    

IoT Edge ランタイムを管理する便利なコマンド:Useful commands to manage the IoT Edge Runtime:

  • ホストのすべてのコンテナーを削除します。To delete all containers in the host:

        sudo docker rm -f $(sudo docker ps -aq)
    
  • 停止する、 IoT Edge ランタイム:To stop the IoT Edge Runtime:

        sudo systemctl stop iotedge
    

章 11 - Table Service を作成します。Chapter 11 - Create Table Service

ストレージ リソースを作成して、Azure テーブル サービスを作成する、Azure Portal に移動します。Navigate back to your Azure Portal, where you will create an Azure Tables Service, by creating a Storage resource.

  1. サインインしていない場合のログイン、 Azure Portalします。If not already signed in, log into the Azure Portal.

  2. ログインすると、をクリックしてリソースの作成、左上の検索および上隅にあるストレージ アカウント、キーを押すと、 」と入力キー、検索を開始します。Once logged in, click on Create a resource, in the top left corner, and search for Storage account, and press the Enter key, to start the search.

  3. 表示されていますとクリックしてストレージ アカウント - blob、ファイル、テーブル、キュー一覧から。Once it has appeared, click Storage account - blob, file, table, queue from the list.

    ストレージ アカウントの検索

  4. 新しいページがの説明を入力、ストレージ アカウントサービス。The new page will provide a description of the Storage account Service. このダイアログ ボックスの左下にある at をクリックして、作成ボタンは、サービスのこのインスタンスを作成します。At the bottom left of this prompt, click the Create button, to create an instance of this Service.

    ストレージのインスタンスを作成します。

  5. クリックすると作成パネルが表示されます。Once you have clicked on Create, a panel will appear:

    1. 必要な挿入名前このサービス インスタンスの (すべて小文字である必要があります)。Insert your desired Name for this Service instance (must be all lowercase).

    2. デプロイ モデル、 をクリックしてResource managerします。For Deployment model, click Resource manager.

    3. アカウントの種類、ドロップダウン メニューを使用して、クリックしてストレージ (汎用 v1) します。For Account kind, using the dropdown menu, click Storage (general purpose v1).

    4. 適切なクリックして場所します。Click an appropriate Location.

    5. レプリケーションドロップダウン メニューで、をクリックして読み取りアクセスの geo 冗長ストレージ (RA-GRS) します。For the Replication dropdown menu, click Read-access-geo-redundant storage (RA-GRS).

    6. パフォーマンス、 をクリックして標準します。For Performance, click Standard.

    7. 内で、転送が必須のセキュリティで保護されたセクションで、無効します。Within the Secure transfer required section, click Disabled.

    8. サブスクリプションドロップダウン メニューで、適切なサブスクリプションをクリックします。From the Subscription dropdown menu, click an appropriate subscription.

    9. 選択、リソース グループか新規に作成します。Choose a Resource Group or create a new one. リソース グループは、監視、プロビジョニング、アクセスを制御および Azure の資産のコレクションの課金を管理する方法を提供します。A resource group provides a way to monitor, control access, provision, and manage, billing for a collection of Azure assets. 勧めします (例: これらのコース) などの 1 つのプロジェクトに共通のリソース グループの下の Azure サービスに関連付けられているすべて保持する)。It is recommended to keep all the Azure Services associated with a single project (e.g. such as these courses) under a common resource group).

      詳細にする場合について、Azure リソース グループに従ってくださいこのリソース グループを管理する方法についてのリンクします。If you wish to read more about Azure Resource Groups, please follow this link on how to manage a Resource Group.

    10. まま仮想ネットワークとして無効になっているするためのオプションは、この場合、します。Leave Virtual networks as Disabled, if this is an option for you.

    11. [作成] をクリックします。Click Create.

      ストレージの詳細を入力します。

  6. クリックすると作成サービスを作成するを待機する必要があります、これは少し時間がかかる場合があります。Once you have clicked on Create, you will have to wait for the Service to be created, this might take a minute.

  7. 通知は、サービス インスタンスが作成されたら、ポータルに表示されます。A notification will appear in the Portal once the Service instance is created. 新しいサービス インスタンスを探索する通知をクリックします。Click on the notifications to explore your new Service instance.

    新しい記憶域の通知

  8. をクリックして、リソースに移動通知で、[新しい記憶域のサービス インスタンスの概要] ページが表示されます。Click the Go to resource button in the notification, and you will be taken to your new Storage Service instance overview page.

    リソースに移動します。

  9. 概要 ページの右側にあるをクリックします。テーブルします。From the overview page, to the right-hand side, click Tables.

    テーブル

  10. 右側のパネルを表示する変更は、 Table Serviceについては、の新しいテーブルを追加する必要があります。The panel on the right will change to show the Table Service information, wherein you need to add a new table. クリックして、 + テーブルボタンの左上隅をクリックします。Do this by clicking the + Table button to the top-left corner.

    テーブルを開く

  11. 入力する必要があります、新しいページが表示されます、テーブル名します。A new page will be shown, wherein you need to enter a Table name. これは、(関数アプリ、および Power BI の作成) 以降の章で、アプリケーションでデータを指すために使用する名前です。This is the name you will use to refer to the data in your application in later Chapters (creating Function App, and Power BI). 挿入IoTMessages名として (、独自に選択することができますので、このドキュメントの後半で使用する場合) をクリックOKします。Insert IoTMessages as the name (you can choose your own, just remember it when used later in this document) and click OK.

  12. 新しいテーブルが作成されたら、できなく内を確認する、 Table Service (下部) のページ。Once the new table has been created, you will be able to see it within the Table Service page (at the bottom).

    新しいテーブルの作成

  13. 今すぐクリックしてアクセス キーのコピーを作成し、ストレージ アカウント名キー (、メモ帳を使用)、これらの値は使用、このコースの後半で作成するときに、Azure Function Appします。Now click on Access keys and take a copy of the Storage account name and Key (using your Notepad), you will use these values later in this course, when creating the Azure Function App.

    新しいテーブルの作成

  14. までスクロールし、左側のパネルを使用して、 Table Serviceセクションをクリックしますテーブル(または参照テーブル、新しいポータル) のコピーを作成し、 テーブルの URL (、メモ帳を使用)。Using the panel on the left again, scroll to the Table Service section, and click Tables (or Browse Tables, in newer Portals) and take a copy of the Table URL (using your Notepad). テーブルをリンクするときに、このコースの後半でこの値が使用されます、 Power BIアプリケーション。You will use this value later in this course, when linking your table to your Power BI application.

    新しいテーブルの作成

第 12 章 - Azure テーブルの完了Chapter 12 - Completing the Azure Table

これで、 Table Serviceストレージ アカウントを設定したら、情報格納および取得するために使用するデータを追加する時間。Now that your Table Service storage account has been setup, it is time to add data to it, which will be used to store and retrieve information. テーブルの編集を実行できますVisual Studioします。The editing of your Tables can be done through Visual Studio.

  1. 開いているVisual Studio (いないVisual Studio Code)。Open Visual Studio (not Visual Studio Code).

  2. メニューから、次のようにクリックします。ビュー > Cloud Explorerします。From the menu, click View > Cloud Explorer.

    クラウド エクスプ ローラーを開く

  3. Cloud Explorer (に患者、読み込み時間がかかる場合があります) がドッキングされている項目として開きます。The Cloud Explorer will open as a docked item (be patient, as loading may take time).

    警告

    サブスクリプションの作成に使用する場合、ストレージ アカウントが表示されないできることを確認します。If the subscription you used to create your Storage Accounts is not visible, ensure that you have:

    • Azure Portal を使用したものと同じアカウントにログインします。Logged in to the same account as the one you used for the Azure Portal.

    • (アカウント設定からフィルターを適用する必要があります)、アカウントの管理ページからサブスクリプションを選択します。Selected your subscription from the Account Management page (you may need to apply a filter from your account settings):

      サブスクリプションが見つかりません

  4. Azure クラウド サービスが表示されます。Your Azure cloud Services will be shown. 検索ストレージ アカウントアカウントを展開するの左側にある矢印をクリックします。Find Storage Accounts and click the arrow to the left of that to expand your accounts.

    ストレージ アカウント を開きます

  5. 展開されている場合、新しく作成した後ストレージ アカウントできるようにします。Once expanded, your newly created Storage account should be available. ストレージの左側にある矢印をクリックしを展開したら探しますテーブルを表示する横の矢印をクリックします、テーブル最後の章で作成しました。Click the arrow to the left of your storage, and then once that is expanded, find Tables and click the arrow next to that, to reveal the Table you created in the last Chapter. ダブルクリックして、テーブルします。Double-click your Table.

  6. テーブルには、Visual Studio ウィンドウの中央に開かれます。Your table will be opened in the center of your Visual Studio window. テーブル アイコンをクリックして、 + には、(+)。Click the table icon with the + (plus) on it.

    新しいテーブルを追加します。

  7. ウィンドウがするためのプロンプトを表示する表示エンティティの追加します。A window will appear prompting for you to Add Entity. 3 つのプロパティである必要が 1 つだけのエンティティを作成します。You will create only one entity, though it will have three properties. わかりますPartitionKeyRowKeyが既に提供されている、使用される場合は、テーブルでデータを検索します。You will notice that PartitionKey and RowKey are already provided, as these are used by the table to find your data.

    パーティションと行キー

  8. 次の値を更新します。Update the following values:

    • 名前:PartitionKey値。PK_IoTMessagesName: PartitionKey, Value: PK_IoTMessages

    • 名前:RowKey値。RK_1_IoTMessagesName: RowKey, Value: RK_1_IoTMessages

  9. をクリックし、プロパティを追加(の左下に、エンティティの追加ウィンドウ) し、次のプロパティを追加します。Then, click Add property (to the lower left of the Add Entity window) and add the following property:

    • MessageContent、として、文字列値を空のままにします。MessageContent, as a string, leave the Value empty.
  10. 次の図に、テーブルと一致する必要があります。Your table should match the one in the image below:

    正しい値を追加します。

    注意

    エンティティの数 1、行キーでがなぜ理由ためにである可能性があります、複数のメッセージを追加する実験をご希望する必要がありますこのコースでさらにします。The reason why the entity has the number 1 in the row key, is because you might want to add more messages, should you desire to experiment further with this course.

  11. クリックしてOKは終了するとき。Click OK when you are finished. テーブルには、使用する準備ができました。Your table is now ready to be used.

章 13 - Azure Function App を作成します。Chapter 13 - Create an Azure Function App

作成に時間をここでは、 Azure Function App、によって呼び出される、 IoT Hub Serviceを格納する、 IoT Edgeデバイスにメッセージが、 テーブルサービスは、前の章で作成しました。It is now time to create an Azure Function App, which will be called by the IoT Hub Service to store the IoT Edge device messages in the Table Service, which you created in the previous Chapter.

最初に、必要なライブラリの読み込みに、Azure 関数を許可するファイルを作成する必要があります。First, you need to create a file that will allow your Azure Function to load the libraries you need.

  1. 開いているメモ帳(キーを押して、 Windows キー、および種類メモ帳)。Open Notepad (press the Windows Key, and type notepad).

    メモ帳を開く

  2. メモ帳を開く、そこに以下の JSON 構造を挿入します。With Notepad open, insert the JSON structure below into it. 完了したら、としてデスクトップに保存project.jsonします。Once you have done that, save it on your desktop as project.json. このファイルは、関数を使用してライブラリを定義します。This file defines the libraries your function will use. NuGet を使用した場合は、使い慣れたが検索されます。If you have used NuGet, it will look familiar.

    警告

    名前の付け方が正しい; 重要です。確認は 、.txt が付いていないファイル拡張子。It is important that the naming is correct; ensure it does NOT have a .txt file extension. 参照に以下をご覧ください。See below for reference:

    保存の JSON

    {
    "frameworks": {
        "net46":{
        "dependencies": {
            "WindowsAzure.Storage": "9.2.0"
        }
        }
    }
    }
    
  3. Azure ポータル にログインします。Log in to the Azure Portal.

  4. ログインした後は、をクリックしてリソースの作成左上隅にある検索してFunction App、キーを押すと、 」と入力キーを検索します。Once you are logged in, click on Create a resource in the top left corner, and search for Function App, and press the Enter key, to search. クリックしてFunction App結果から、新しいパネルを開きます。Click Function App from the results, to open a new panel.

    関数アプリの検索

  5. 新しいパネルがの説明を入力、 Function Appサービス。The new panel will provide a description of the Function App Service. このパネルの下部にある左はで、をクリックして、作成ボタンは、この関連付けサービスを作成します。At the bottom left of this panel, click the Create button, to create an association with this Service.

    関数アプリ インスタンス

  6. クリックすると作成次を入力します。Once you have clicked on Create, fill in the following:

    1. アプリ名、このサービス インスタンスのご希望の名前を挿入します。For App name, insert your desired name for this Service instance.

    2. 選択、サブスクリプションします。Select a Subscription.

    3. 作成時刻の場合、これは、最初に、適切な価格レベルを選択、 Function App サービス、free レベルを使用することがあります。Select the pricing tier appropriate for you, if this is the first time creating a Function App Service, a free tier should be available to you.

    4. 選択、リソース グループか新規に作成します。Choose a Resource Group or create a new one. リソース グループは、監視、プロビジョニング、アクセスを制御および Azure の資産のコレクションの課金を管理する方法を提供します。A resource group provides a way to monitor, control access, provision, and manage, billing for a collection of Azure assets. 勧めします (例: これらのコース) などの 1 つのプロジェクトに共通のリソース グループの下の Azure サービスに関連付けられているすべて保持する)。It is recommended to keep all the Azure Services associated with a single project (e.g. such as these courses) under a common resource group).

      詳細にする場合について、Azure リソース グループに従ってくださいこのリソース グループを管理する方法についてのリンクします。If you wish to read more about Azure Resource Groups, please follow this link on how to manage a Resource Group.

    5. OS、目的のプラットフォームであるために、Windows をクリックします。For OS, click Windows, as that is the intended platform.

    6. 選択、ホスティング プラン(このチュートリアルを使用して、従量課金プランします。Select a Hosting Plan (this tutorial is using a Consumption Plan.

    7. 選択、場所(前の手順で作成したストレージと同じ場所を選択)Select a Location (choose the same location as the storage you have built in the previous step)

    8. ストレージセクション 、前の手順で作成したストレージ サービスを選択する必要がありますします。For the Storage section, you must select the Storage Service you created in the previous step.

    9. 必要はありませんApplication Insightsこのアプリでため、自由にオフします。You will not need Application Insights in this app, so feel free to leave it Off.

    10. [作成] をクリックします。Click Create.

      新しいインスタンスを作成します。

  7. クリックすると作成サービスを作成するを待機する必要があります、これは少し時間がかかる場合があります。Once you have clicked on Create, you will have to wait for the Service to be created, this might take a minute.

  8. 通知は、サービス インスタンスが作成されたら、ポータルに表示されます。A notification will appear in the Portal once the Service instance is created.

    新しい通知

  9. デプロイが成功すると、通知をクリックします (終了)。Click on the notification, once deployment is successful (has finished).

  10. をクリックして、リソースに移動通知では、新しいサービス インスタンスを表示するボタンをクリックします。Click the Go to resource button in the notification to explore your new Service instance.

    リソースに移動します。

  11. 新しいパネルの左側にある クリックして、 + (隣にアイコン +)関数、新しい関数を作成します。In the left side of the new panel, click the + (plus) icon next to Functions, to create a new function.

    新しい関数を追加します。

  12. 中央のパネル内、関数作成ウィンドウが表示されます。Within the central panel, the Function creation window will appear. さらに、下にスクロールし、をクリックしてカスタム関数します。Scroll down further, and click on Custom function.

    カスタム関数

  13. 次のページが表示されるまで下へスクロールIoT Hub (イベント ハブ) の順にクリックします。Scroll down the next page, until you find IoT Hub (Event Hub), then click on it.

    カスタム関数

  14. IoT Hub (イベント ハブ) ブレードで、設定、言語C# し、新しいします。In the IoT Hub (Event Hub) blade, set the Language to C# and then click on new.

    カスタム関数

  15. このウィンドウは表示されますが、ことを確認しますIoT Hubが選択されているとの名前、 IoT Hubの名前を持つ対応するフィールド、 IoT Hub サービス必要のあります。以前に作成 (手順 8、第 3 章の)。In the window that will appear, make sure that IoT Hub is selected and the name of the IoT Hub field corresponds with the name of your IoT Hub Service that you have created previously (in step 8, of Chapter 3). をクリックし、選択ボタンをクリックします。Then click the Select button.

    カスタム関数

  16. 戻り、 IoT Hub (イベント ハブ) ブレードで、クリック作成です。Back on the IoT Hub (Event Hub) blade, click on Create.

    カスタム関数

  17. 関数エディターにリダイレクトされます。You will be redirected to the function editor.

    カスタム関数

  18. すべてのコードを削除し、次のように置き換えます。Delete all the code in it and replace it with the following:

    #r "Microsoft.WindowsAzure.Storage"
    #r "NewtonSoft.Json"
    
    using System;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Table;
    using Newtonsoft.Json;
    using System.Threading.Tasks;
    
    public static async Task Run(string myIoTHubMessage, TraceWriter log)
    {
        log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");
    
        //RowKey of the table object to be changed
        string tableName = "IoTMessages";
        string tableURL = "https://iothubmrstorage.table.core.windows.net/IoTMessages";
    
        // If you did not name your Storage Service as suggested in the course, change the name here with the one you chose.
        string storageAccountName = "iotedgestor"; 
    
        string storageAccountKey = "<Insert your Storage Key here>";   
    
        string partitionKey = "PK_IoTMessages";
        string rowKey = "RK_1_IoTMessages";
    
        Microsoft.WindowsAzure.Storage.Auth.StorageCredentials storageCredentials =
            new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccountName, storageAccountKey);
    
        CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true);
    
        // Create the table client.
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
    
        // Get a reference to a table named "IoTMessages"
        CloudTable messageTable = tableClient.GetTableReference(tableName);
    
        //Retrieve the table object by its RowKey
        TableOperation operation = TableOperation.Retrieve<MessageEntity>(partitionKey, rowKey);
        TableResult result = await messageTable.ExecuteAsync(operation);
    
        //Create a MessageEntity so to set its parameters
        MessageEntity messageEntity = (MessageEntity)result.Result;
    
        messageEntity.MessageContent = myIoTHubMessage;
        messageEntity.PartitionKey = partitionKey;
        messageEntity.RowKey = rowKey;
    
        //Replace the table appropriate table Entity with the value of the MessageEntity Ccass structure.
        operation = TableOperation.Replace(messageEntity);
    
        // Execute the insert operation.
        await messageTable.ExecuteAsync(operation);
    }
    
    // This MessageEntity structure which will represent a Table Entity
    public class MessageEntity : TableEntity
    {
        public string Type { get; set; }
        public string MessageContent { get; set; }   
    }
    
  19. 適切な値に対応するように、次の変数を変更 (テーブルストレージ値から11、13 をそれぞれ、第 11 章の手順)、使用される、ストレージ アカウント:Change the following variables, so that they correspond to the appropriate values (Table and Storage values, from step 11 and 13, respectively, of Chapter 11), that you will find in your Storage Account:

    • tableNameの名前を持つ、テーブル内にある、ストレージ アカウントします。tableName, with the name of your Table located in your Storage Account.
    • tableURLの URL を使用して、テーブル内にある、ストレージ アカウントします。tableURL, with the URL of your Table located in your Storage Account.
    • storageAccountNameの名前に対応する値の名前を持つ、ストレージ アカウント名。storageAccountName, with the name of the value corresponding with the name of your Storage Account name.
    • storageAccountKey、以前に作成したストレージ サービスで取得したキーを使用します。storageAccountKey, with the Key you have obtained in the Storage Service you have created previously.

    カスタム関数

  20. コードの場所で、次のようにクリックします。保存します。With the code in place, click Save.

  21. 次に、クリックして、 < (矢印) アイコンをページの右側にあります。Next, click the < (arrow) icon, on the right-hand side of the page.

    カスタム関数

  22. パネルは、右からにスライドします。A panel will slide in from the right. そのパネル で、アップロード、およびファイル ブラウザーが表示されます。In that panel, click Upload, and a File Browser will appear.

  23. 、に移動し、クリックすると、、 project.jsonファイルで、で作成したメモ帳以前は、順にクリックします、オープンボタンをクリックします。Navigate to, and click, the project.json file, which you created in Notepad previously, and then click the Open button. このファイルは、関数が使用するライブラリを定義します。This file defines the libraries that your function will use.

    カスタム関数

  24. ファイルがアップロードされると、右側のパネルに表示されます。When the file has uploaded, it will appear in the panel on the right. 内で開くをクリックすると、関数エディター。Clicking it will open it within the Function editor. 表示する必要がありますまったく次のイメージと同じです。It must look exactly the same as the next image.

    カスタム関数

  25. この時点でものメッセージを格納する、関数の機能をテストするよいでしょう、テーブルします。At this point it would be good to test the capability of your Function to store the message on your Table. ウィンドウの上部右側にある、 をクリックしてテストします。On the top right side of the window, click on Test.

    カスタム関数

  26. メッセージの挿入、要求本文で上の図に示すように、実行します。Insert a message on the Request body, as shown in the image above, and click on Run.

  27. 関数が実行され、結果の状態を表示する (緑色で表示されますステータス 202 Accepted、上記の出力ウィンドウで、正常な呼び出しが)。The function will run, displaying the result status (you will notice the green Status 202 Accepted, above the Output window, which means it was a successful call):

    出力結果

第 14 章 – アクティブなメッセージの表示Chapter 14 - View active messages

今すぐ Visual Studio を開く場合 (いないVisual Studio Code) で保存するように、テスト メッセージの結果を視覚化できます、 MessageContent領域の文字列します。If you now open Visual Studio (not Visual Studio Code), you can visualize your test message result, as it will be stored in the MessageContent string area.

カスタム関数

Table Service で Function App と Ubuntu デバイスのメッセージが表示されます、 IoTMessagesテーブル。With the Table Service and Function App in place, your Ubuntu device messages will appear in your IoTMessages Table. を実行していない場合、デバイスを再度起動して、Visual Studio を使用して、デバイス、および、テーブル内のモジュールから結果メッセージを表示することができますCloud Explorerします。If not already running, start your device again, and you will be able to see the result messages from your device, and module, within your Table, through using Visual Studio Cloud Explorer.

データを視覚化します。

第 15 章「Power BI のセットアップChapter 15 - Power BI Setup

セットアップは、IOT デバイスからデータを視覚化するPower BI (デスクトップのバージョン) からデータを収集、テーブルサービスで、先ほど作成しました。To visualize the data from your IOT device you will setup Power BI (desktop version), to collect the data from the Table Service, which you just created. HoloLensバージョンの Power BI を使用してそのデータを結果を視覚化します。The HoloLens version of Power BI will then use that data to visualize the result.

  1. Windows 10 の Microsoft Store を開き、検索Power BI Desktopします。Open the Microsoft Store on Windows 10 and search for Power BI Desktop.

    Power BI

  2. アプリケーションをダウンロードします。Download the application. これには、ダウンロードが完了したら、したら、それを開きます。Once it has finished downloading, open it.

  3. ログインPower BIで、 Microsoft 365 アカウントします。Log into Power BI with your Microsoft 365 account. ブラウザー、サインアップにリダイレクトされます。You may be redirected to a browser, to sign up. サインアップし、Power BI アプリに戻ってもう一度サインインします。Once you are signed up, go back to the Power BI app, and sign in again.

  4. をクリックしてデータの取得し、より..Click on Get Data and then click on More....

    Power BI

  5. クリックしてAzureAzure Table Storage、をクリックしてConnectします。Click Azure, Azure Table Storage, then click on Connect.

    Power BI

  6. 挿入を求められます、テーブル URL以前に収集した (第 11 章の 13 の手順で)、Table Service の作成中にします。You will be prompted to insert the Table URL that you collected earlier (in step 13 of Chapter 11), while creating your Table Service. URL を挿入した後は、テーブル「サブ フォルダー」(IoTMessages は、このコースでは) を参照するパスの部分を削除します。After inserting the URL, delete the portion of the path referring to the Table "sub-folder" (which was IoTMessages, in this course). 次の図に表示される最終的な結果があります。The final result should be as displayed in the image below. をクリックしてOKします。Then click on OK.

    Power BI

  7. 挿入を求め、ストレージ キー書き留めた (手順 11 第 11 章の)、Table Storage を作成するときに以前。You will be prompted to insert the Storage Key that you noted (in step 11 of Chapter 11) earlier while creating your Table Storage. をクリックしてConnectします。Then click on Connect.

    Power BI

  8. Aナビゲーター パネルが表示されます、テーブルの横にあるボックスをオンにしをクリックしてロードします。A Navigator Panel will be displayed, tick the box next to your Table and click on Load.

    Power BI

  9. テーブルが Power BI に読み込まれているようになりました、クエリが値を表示する必要しますが、あります。Your table has now been loaded on Power BI, but it requires a query to display the values in it. これを行うにあるテーブル名を右クリックし、フィールド パネル画面の右側にあります。To do so, right-click on the table name located in the FIELDS panel at the right side of the screen. をクリックしてクエリの編集します。Then click on Edit Query.

    Power BI

  10. A Power Query エディターとして、テーブルを表示する、新しいウィンドウが開きます。A Power Query Editor will open up as a new window, displaying your table. [単語] をクリックしてレコード内、コンテンツ格納されているコンテンツを視覚化する、テーブルの列。Click on the word Record within the Content column of the table, to visualize your stored content.

    Power BI

  11. をクリックしてInto テーブルウィンドウの上部左にあります。Click on Into Table, at the top-left of the window.

    Power BI

  12. をクリックして閉じて適用します。Click on Close & Apply.

    Power BI

  13. 内で、クエリの読み込みが完了すると、フィールド パネル、画面の右側にある、パラメーターに対応するボックスをオンに名前を視覚化、 MessageContent列のコンテンツ。Once it has finished loading the query, within the FIELDS panel, on the right side of the screen, tick the boxes corresponding to the parameters Name and Value, to visualize the MessageContent column content.

    Power BI

  14. をクリックして、青いディスク アイコンで任意のフォルダーで作業内容を保存するには、ウィンドウの左上。Click on the blue disk icon at the top left of the window to save your work in a folder of your choice.

    Power BI

  15. ワークスペースに、テーブルをアップロードする [発行] ボタンをクリックすることができますようになりました。You can now click on the Publish button to upload your table to your Workspace. メッセージが表示されたら、 をクリックして個人用ワークスペース をクリック選択します。When prompted, click My workspace and click Select. 送信の成功した結果を表示するには待機します。Wait for it to display the successful result of the submission.

    Power BI

    Power BI

警告

次の章では、特定の HoloLens です。The following Chapter is HoloLens specific. Power BI は現在使用できません没入型アプリケーションとして Windows 混合現実ポータル (Cliff 家とも呼ばれます) で、デスクトップ バージョンを実行することができますが、デスクトップ アプリを使用します。Power BI is not currently availble as an immersive application, however you can run the desktop version in the Windows Mixed Reality Portal (aka Cliff House), through the Desktop app.

第 16 章 – HoloLens でデータを Power BI の表示Chapter 16 - Display Power BI data on HoloLens

  1. HoloLens へログイン、 Microsoft Storeアプリケーションの一覧で、アイコンをタップします。On your HoloLens, log in to the Microsoft Store, by tapping on its icon in the applications list.

    Power BI HL

  2. 検索し、ダウンロード、 Power BIアプリケーション。Search and then download the Power BI application.

    Power BI HL

  3. 開始Power BIアプリケーションの一覧から。Start Power BI from your applications list.

  4. Power BIにログインするよう求められます可能性があります、 Microsoft 365 アカウントします。Power BI might ask you to login to your Microsoft 365 account.

  5. 1 回、アプリ内次の図に示すように、ワークスペースが既定で表示します。Once inside the app, the workspace should display by default as shown in the image below. 発生しない場合は、単にウィンドウの左側にあるワークスペース アイコンをクリックします。If that does not happen, simply click on the workspace icon on the left side of the window.

    Power BI HL

IoT Hub のアプリケーションが完了しましたYour finished your IoT Hub application

これで、シミュレートされた仮想マシンのエッジ デバイスで、IoT Hub サービスを作成しました。Congratulations, you have successfully created an IoT Hub Service, with a simulated Virtual Machine Edge device. デバイスは、machine learning のモデルを Power BI に読み取られ、Microsoft HoloLens 内で視覚化する Azure Function App によって容易になります、Azure Table Service の結果を通信できます。Your device can communicate the results of a machine learning model to an Azure Table Service, facilitated by an Azure Function App, which is read into Power BI, and visualized within a Microsoft HoloLens.

Power BI

ボーナスの演習Bonus exercises

手順 1Exercise 1

テーブルに格納されているメッセージの構造を展開し、グラフとして表示します。Expand the messaging structure stored in the table and display it as a graph. 多くのデータを収集し、後で表示される、同じテーブルに保存する場合があります。You might want to collect more data and store it in the same table, to be later displayed.

手順 2Exercise 2

追加で作成するため、分析するカメラでイメージをキャプチャできます、IoT ボード上に展開する「カメラ キャプチャ」モジュール。Create an additional "camera capture" module to be deployed on the IoT board, so that it can capture images through the camera to be analyzed.