.NET を使用してデバイスを IoT ハブに接続するConnect your device to your IoT hub using .NET

はじめにIntroduction

Azure IoT Hub は、何百万もの IoT (モノのインターネット) デバイスとソリューション バックエンド間で、セキュリティで保護された信頼性のある双方向通信を実現する、完全に管理されたサービスです。Azure IoT Hub is a fully managed service that enables reliable and secure bi-directional communications between millions of Internet of Things (IoT) devices and a solution back end. IoT プロジェクトが直面する最も大きな課題の 1 つは、ソリューション バックエンドにデバイスを確実かつ安全に接続する方法です。One of the biggest challenges that IoT projects face is how to reliably and securely connect devices to the solution back end. この課題に対応するために、IoT Hub は次の機能を備えています。To address this challenge, IoT Hub:

  • 非常にスケール性が高く信頼性に優れた、デバイスとクラウド間の双方向メッセージングを提供します。Offers reliable device-to-cloud and cloud-to-device hyper-scale messaging.
  • デバイスごとのセキュリティ資格情報とアクセス制御を使用して、セキュリティで保護された通信を可能します。Enables secure communications using per-device security credentials and access control.
  • 最も一般的な言語とプラットフォームのデバイスのライブラリが含まれます。Includes device libraries for the most popular languages and platforms.

このチュートリアルでは、次の操作方法について説明します。This tutorial shows you how to:

  • Azure ポータルを使用して IoT Hub を作成する。Use the Azure portal to create an IoT hub.
  • IoT Hub におけるデバイス ID を作成する。Create a device identity in your IoT hub.
  • ソリューション バックエンドにテレメトリを送信するシミュレーション対象デバイス アプリを作成する。Create a simulated device app that sends telemetry to your solution back end.

このチュートリアルの最後には、次の 3 つの .NET コンソール アプリが完成します。At the end of this tutorial, you have three .NET console apps:

  • CreateDeviceIdentity。デバイス ID および関連付けられているセキュリティ キーを作成し、デバイス アプリを接続します。CreateDeviceIdentity, which creates a device identity and associated security key to connect your device app.
  • ReadDeviceToCloudMessages。デバイス アプリから送信されたテレメトリを表示します。ReadDeviceToCloudMessages, which displays the telemetry sent by your device app.
  • SimulatedDevice。以前に作成したデバイス ID で IoT Hub に接続し、MQTT プロトコルを使用して 1 秒ごとにテレメトリ メッセージを送信します。SimulatedDevice, which connects to your IoT hub with the device identity created earlier, and sends a telemetry message every second by using the MQTT protocol.

3 つのアプリを含んだ Visual Studio ソリューションを GitHub からダウンロードまたは複製することができます。You can download or clone the Visual Studio solution, which contains the three apps from Github.

git clone https://github.com/Azure-Samples/iot-hub-dotnet-simulated-device-client-app.git

注意

デバイス上で動作するアプリケーションの作成とソリューションのバックエンドで動作するアプリケーションの開発に利用できる各種 Azure IoT SDK については、「Azure IoT SDK」を参照してください。For information about the Azure IoT SDKs that you can use to build both applications to run on devices, and your solution back end, see Azure IoT SDKs.

このチュートリアルを完了するには、以下が必要です。To complete this tutorial, you need the following:

  • Visual Studio 2015 または Visual Studio 2017。Visual Studio 2015 or Visual Studio 2017.
  • アクティブな Azure アカウント。An active Azure account. (アカウントがない場合は、無料アカウントを数分で作成できます)。(If you don't have an account, you can create a free account in just a couple of minutes.)

IoT Hub の作成Create an IoT hub

シミュレーション対象デバイス アプリの接続先となる IoT Hub を作成します。Create an IoT hub for your simulated device app to connect to. 次の手順では、この作業を Azure ポータルで行う方法を示しています。The following steps show you how to complete this task by using the Azure portal.

  1. Azure Portal にサインインします。Sign in to the Azure portal.
  2. [新規] > [モノのインターネット (IoT)] > [IoT Hub] の順に選択します。Select New > Internet of Things > IoT Hub.

    Azure portal Jumpbar

  3. [IoT Hub] ウィンドウで、IoT Hub のために以下の情報を入力します。In the IoT hub pane, enter the following information for your IoT hub:

    • [名前]: IoT ハブの名前を作成します。Name: Create a name for your IoT hub. 入力した名前が有効である場合は、緑色のチェック マークが表示されます。If the name you enter is valid, a green check mark appears.

    重要

    IoT ハブは DNS エンドポイントとして公開されます。そのため、名前を付ける際は機密情報を含めないようにしてください。The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

    • [価格とスケールティア]: このチュートリアルでは、[F1 - Free] レベルを選択します。Pricing and scale tier: For this tutorial, select the F1 - Free tier. 詳細については、価格とスケールティアに関するページを参照してください。For more information, see the Pricing and scale tier.

    • [リソース グループ]: IoT Hub をホストするリソース グループを作成するか、既存のリソース グループを使用します。Resource group: Create a resource group to host the IoT hub or use an existing one. 詳細については、リソース グループを使用した Azure リソースの管理に関するページを参照してください。For more information, see Use resource groups to manage your Azure resources

    • [場所]: 最も近い場所を選択します。Location: Select the closest location to you.

    • [ダッシュボードにピン留めする]: ダッシュボードから IoT ハブに簡単にアクセスできるようにするには、このオプションをオンにします。Pin to dashboard: Check this option for easy access to your IoT hub from the dashboard.

      [IoT Hub] ウィンドウ

  4. Create をクリックしてください。Click Create. IoT ハブの作成には数分かかることがあります。Your IoT hub might take a few minutes to create. [通知] ウィンドウで進行状況を監視できます。You can monitor the progress in the Notifications pane.

IoT Hub を作成したら、その IoT Hub にデバイスとアプリケーションを接続するために必要な重要な情報を把握します。Now that you have created an IoT hub, locate the important information that you use to connect devices and applications to your IoT hub.

  1. IoT ハブが正常に作成されたら、Azure Portal で IoT ハブの新しいタイルをクリックし、新しい IoT ハブのプロパティ ウィンドウを開きます。When the IoT hub has been created successfully, click the new tile for your IoT hub in the Azure portal to open the properties window for the new IoT hub. ホスト名をメモして、[共有アクセス ポリシー] をクリックします。Make a note of the Hostname, and then click Shared access policies.

    新しい [IoT Hub] ウィンドウ

  2. [共有アクセス ポリシー] で、[iothubowner] ポリシーをクリックし、[iothubowner] ウィンドウで IoT Hub 接続文字列をコピーしてメモします。In Shared access policies, click the iothubowner policy, and then copy and make note of the IoT Hub connection string in the iothubowner window. 詳細については、IoT Hub 開発者ガイドのアクセス制御に関するページを参照してください。For more information, see Access control in the "IoT Hub developer guide."

    共有アクセス ポリシー

IoT Hub の作成は以上です。以降の作業に必要なホスト名と IoT Hub 接続文字列が得られました。You have now created your IoT hub, and you have the host name and IoT Hub connection string that you need to complete the rest of this tutorial.

デバイス ID の作成Create a device identity

このセクションでは、IoT ハブの ID レジストリにデバイス ID を作成する .NET コンソール アプリケーションを作成します。In this section, you create a .NET console app that creates a device identity in the identity registry in your IoT hub. IoT hub に接続するデバイスは、あらかじめ ID レジストリに登録されている必要があります。A device cannot connect to IoT hub unless it has an entry in the identity registry. 詳細については、IoT Hub 開発者ガイドの ID レジストリに関するセクションをご覧ください。For more information, see the "Identity registry" section of the IoT Hub developer guide. このコンソール アプリケーションを実行すると、デバイスからクラウドへのメッセージを IoT Hub に送信するときにそのデバイスを識別する一意の ID とキーが生成されます。When you run this console app, it generates a unique device ID and key that your device can use to identify itself when it sends device-to-cloud messages to IoT Hub. デバイス ID には大文字と小文字の区別があります。Device IDs are case sensitive.

  1. Visual Studio で、[Console App (.NET Framework)] プロジェクト テンプレートを使用し、Visual C# Windows クラシック デスクトップ プロジェクトを新しいソリューションに追加します。In Visual Studio, add a Visual C# Windows Classic Desktop project to a new solution by using the Console App (.NET Framework) project template. .NET Framework のバージョンが 4.5.1 以降であることを確認します。Make sure the .NET Framework version is 4.5.1 or later. プロジェクトに CreateDeviceIdentity という名前を付け、ソリューションに IoTHubGetStarted という名前を付けます。Name the project CreateDeviceIdentity and name the solution IoTHubGetStarted.

    New Visual C# Windows Classic Desktop project

  2. ソリューション エクスプローラーで CreateDeviceIdentity プロジェクトを右クリックし、[NuGet パッケージの管理] をクリックします。In Solution Explorer, right-click the CreateDeviceIdentity project, and then click Manage NuGet Packages.
  3. [NuGet パッケージ マネージャー] ウィンドウで [参照] を選択し、microsoft.azure.devices を検索します。[インストール] を選択して Microsoft.Azure.Devices パッケージをインストールし、使用条件に同意します。In the NuGet Package Manager window, select Browse, search for microsoft.azure.devices, select Install to install the Microsoft.Azure.Devices package, and accept the terms of use. この手順により、パッケージのダウンロードとインストールが実行され、Azure IoT service SDK NuGet パッケージへの参照とその依存関係が追加されます。This procedure downloads, installs, and adds a reference to the Azure IoT service SDK NuGet package and its dependencies.

    NuGet Package Manager window

  4. Program.cs ファイルの先頭に次の using ステートメントを追加します。Add the following using statements at the top of the Program.cs file:

     using Microsoft.Azure.Devices;
     using Microsoft.Azure.Devices.Common.Exceptions;
    
  5. Program クラスに次のフィールドを追加します。Add the following fields to the Program class. プレースホルダーの値は、前のセクションで作成したハブの IoT Hub 接続文字列に置き換えてください。Replace the placeholder value with the IoT Hub connection string for the hub that you created in the previous section.

     static RegistryManager registryManager;
     static string connectionString = "{iot hub connection string}";
    
  6. Program クラスに次のメソッドを追加します。Add the following method to the Program class:

     private static async Task AddDeviceAsync()
     {
         string deviceId = "myFirstDevice";
         Device device;
         try
         {
             device = await registryManager.AddDeviceAsync(new Device(deviceId));
         }
         catch (DeviceAlreadyExistsException)
         {
             device = await registryManager.GetDeviceAsync(deviceId);
         }
         Console.WriteLine("Generated device key: {0}", device.Authentication.SymmetricKey.PrimaryKey);
     }
    

    これは、myFirstDevice という ID でデバイス ID を作成するメソッドです This method creates a device identity with ID myFirstDevice. (そのデバイス ID が既に ID レジストリに存在する場合は、単にその既存のデバイス情報を取得します)。続けてその ID のプライマリ キーが表示されます。(If that device ID already exists in the identity registry, the code simply retrieves the existing device information.) The app then displays the primary key for that identity. シミュレーション対象デバイス アプリでこのキーを使用し、IoT Hub に接続します。You use this key in the simulated device app to connect to your IoT hub.

    重要

    デバイス ID は、カスタマー サポートとトラブルシューティング目的で収集されたログに表示される場合があります。そのため、名前を付ける際は機密情報を含めないようにしてください。The device ID may be visible in the logs collected for customer support and troubleshooting, so make sure to avoid any sensitive information while naming it.

  7. 最後に、 Main メソッドに次の行を追加します。Finally, add the following lines to the Main method:

     registryManager = RegistryManager.CreateFromConnectionString(connectionString);
     AddDeviceAsync().Wait();
     Console.ReadLine();
    
  8. このアプリケーションを実行し、デバイスのキーを書き留めます。Run this application, and make a note of the device key.

    Device key generated by the application

注意

IoT Hub の ID レジストリには、IoT ハブに対するセキュリティで保護されたアクセスを有効にするためのデバイス ID のみが格納されます。The IoT Hub identity registry only stores device identities to enable secure access to the IoT hub. セキュリティ資格情報として使用するキーとデバイス ID、そして個々のデバイスについてアクセスを無効にすることのできる有効/無効フラグが格納されます。It stores device IDs and keys to use as security credentials, and an enabled/disabled flag that you can use to disable access for an individual device. その他デバイス固有のメタデータをアプリケーションで保存する必要がある場合は、アプリケーション固有のストアを使用する必要があります。If your application needs to store other device-specific metadata, it should use an application-specific store. 詳細については、IoT Hub 開発者ガイドをご覧ください。For more information, see IoT Hub developer guide.

デバイスからクラウドへのメッセージの受信Receive device-to-cloud messages

このセクションでは、デバイスからクラウドへのメッセージを IoT Hub から読み取る .NET コンソール アプリケーションを作成します。In this section, you create a .NET console app that reads device-to-cloud messages from IoT Hub. IoT Hub は、デバイスからクラウドへのメッセージを読み取るための、Azure Event Hubs と互換性のあるエンドポイントを公開します。An IoT hub exposes an Azure Event Hubs-compatible endpoint to enable you to read device-to-cloud messages. わかりやすくするために、このチュートリアルで作成するリーダーは基本的なものであり、高スループットのデプロイメントには適していません。To keep things simple, this tutorial creates a basic reader that is not suitable for a high throughput deployment. デバイスからクラウドへのメッセージを大規模に処理する方法については、デバイスからクラウドへのメッセージの処理に関するチュートリアルを参照してください。To learn how to process device-to-cloud messages at scale, see the Process device-to-cloud messages tutorial. Event Hubs からのメッセージを処理する方法の詳細については、「Event Hubs の使用」のチュートリアルを参照してください。For more information about how to process messages from Event Hubs, see the Get Started with Event Hubs tutorial. このチュートリアルは、IoT Hub の Event Hub 対応エンドポイントで応用できます。(This tutorial is applicable to the IoT Hub Event Hub-compatible endpoints.)

注意

Event Hub 対応エンドポイントは、常に、デバイスからクラウドへのメッセージを読み取るために AMQP プロトコルを使用します。The Event Hub-compatible endpoint for reading device-to-cloud messages always uses the AMQP protocol.

  1. Visual Studio で、[Console App (.NET Framework)] プロジェクト テンプレートを使用し、Visual C# Windows クラシック デスクトップ プロジェクトを現在のソリューションに追加します。In Visual Studio, add a Visual C# Windows Classic Desktop project to the current solution, by using the Console App (.NET Framework) project template. .NET Framework のバージョンが 4.5.1 以降であることを確認します。Make sure the .NET Framework version is 4.5.1 or later. プロジェクトに ReadDeviceToCloudMessagesという名前を付けます。Name the project ReadDeviceToCloudMessages.

    New Visual C# Windows Classic Desktop project

  2. ソリューション エクスプローラーで ReadDeviceToCloudMessages プロジェクトを右クリックし、[NuGet パッケージの管理] をクリックします。In Solution Explorer, right-click the ReadDeviceToCloudMessages project, and then click Manage NuGet Packages.

  3. [NuGet パッケージ マネージャー] ウィンドウで WindowsAzure.ServiceBus を検索し、[インストール] を選択して、使用条件に同意します。In the NuGet Package Manager window, search for WindowsAzure.ServiceBus, select Install, and accept the terms of use. この手順により、Azure Service Bus のダウンロードとインストールが実行され、その参照とすべての依存関係が追加されます。This procedure downloads, installs, and adds a reference to Azure Service Bus, with all its dependencies. このパッケージは、アプリケーションが IoT Hub でイベント ハブと互換性のあるエンドポイントに接続できるようにします。This package enables the application to connect to the Event Hub-compatible endpoint on your IoT hub.

  4. Program.cs ファイルの先頭に次の using ステートメントを追加します。Add the following using statements at the top of the Program.cs file:

    using Microsoft.ServiceBus.Messaging;
    using System.Threading;
    
  5. Program クラスに次のフィールドを追加します。Add the following fields to the Program class. プレースホルダーの値は、「IoT Hub の作成」セクションで作成したハブの接続文字列に置き換えてください。Replace the placeholder value with the IoT Hub connection string for the hub you created in the "Create an IoT hub" section.

    static string connectionString = "{iothub connection string}";
    static string iotHubD2cEndpoint = "messages/events";
    static EventHubClient eventHubClient;
    
  6. Program クラスに次のメソッドを追加します。Add the following method to the Program class:

    private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)
    {
        var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
        while (true)
        {
            if (ct.IsCancellationRequested) break;
            EventData eventData = await eventHubReceiver.ReceiveAsync();
            if (eventData == null) continue;
    
            string data = Encoding.UTF8.GetString(eventData.GetBytes());
            Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data);
        }
    }
    

    このメソッドは、EventHubReceiver インスタンスを使用して、IoT Hub のすべてのデバイスからクラウドへの受信パーティションからメッセージを受け取ります。This method uses an EventHubReceiver instance to receive messages from all the IoT hub device-to-cloud receive partitions. EventHubReceiver オブジェクトを作成するときの DateTime.Now パラメーターの渡し方に注目してください。これによって、起動後に送信されたメッセージのみを受信するようにしています。Notice how you pass a DateTime.Now parameter when you create the EventHubReceiver object, so that it only receives messages sent after it starts. このフィルターは、現在のメッセージのセットを表示できるので、テスト環境で便利です。This filter is useful in a test environment so you can see the current set of messages. 運用環境では、すべてのメッセージがコードによって処理されるようにする必要があります。In a production environment, your code should make sure that it processes all the messages. 詳細については、IoT Hub のデバイスからクラウドへのメッセージを処理する方法に関するチュートリアルを参照してください。For more information, see the tutorial How to process IoT Hub device-to-cloud messages.

  7. 最後に、 Main メソッドに次の行を追加します。Finally, add the following lines to the Main method:

    Console.WriteLine("Receive messages. Ctrl-C to exit.\n");
    eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);
    
    var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
    
    CancellationTokenSource cts = new CancellationTokenSource();
    
    System.Console.CancelKeyPress += (s, e) =>
    {
        e.Cancel = true;
        cts.Cancel();
        Console.WriteLine("Exiting...");
    };
    
    var tasks = new List<Task>();
    foreach (string partition in d2cPartitions)
    {
        tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
    }  
    Task.WaitAll(tasks.ToArray());
    

デバイス アプリの作成Create a device app

このセクションでは、デバイスからクラウドへのメッセージを IoT ハブに送信するデバイスをシミュレートする .NET コンソール アプリを作成します。In this section, you create a .NET console app that simulates a device that sends device-to-cloud messages to an IoT hub.

  1. Visual Studio で、[Console App (.NET Framework)] プロジェクト テンプレートを使用し、Visual C# Windows クラシック デスクトップ プロジェクトを現在のソリューションに追加します。In Visual Studio, add a Visual C# Windows Classic Desktop project to the current solution, by using the Console App (.NET Framework) project template. .NET Framework のバージョンが 4.5.1 以降であることを確認します。Make sure the .NET Framework version is 4.5.1 or later. プロジェクトに SimulatedDeviceという名前を付けます。Name the project SimulatedDevice.

    New Visual C# Windows Classic Desktop project

  2. ソリューション エクスプローラーで SimulatedDevice プロジェクトを右クリックし、[NuGet パッケージの管理] をクリックします。In Solution Explorer, right-click the SimulatedDevice project, and then click Manage NuGet Packages.

  3. [NuGet パッケージ マネージャー] ウィンドウで [参照] を選択し、Microsoft.Azure.Devices.Client を検索します。その後、[インストール] を選択し、Microsoft.Azure.Devices.Client パッケージをインストールして使用条件に同意します。In the NuGet Package Manager window, select Browse, search for Microsoft.Azure.Devices.Client, select Install to install the Microsoft.Azure.Devices.Client package, and accept the terms of use. この手順により、パッケージのダウンロードとインストールが実行され、Azure IoT device SDK NuGet パッケージへの参照とその依存関係が追加されます。This procedure downloads, installs, and adds a reference to the Azure IoT device SDK NuGet package and its dependencies.

  4. Program.cs ファイルの先頭に次の using ステートメントを追加します。Add the following using statement at the top of the Program.cs file:

    using Microsoft.Azure.Devices.Client;
    using Newtonsoft.Json;
    
  5. Program クラスに次のフィールドを追加します。Add the following fields to the Program class. {iot hub hostname} は、「IoT ハブの作成」セクションで取得した IoT ハブ ホスト名に置き換えます。Substitute {iot hub hostname} with the IoT hub host name you retrieved in the "Create an IoT hub" section. {device key} は、「デバイス ID の作成」セクションで取得したデバイス キーに置き換えます。Substitute {device key} with the device key you retrieved in the "Create a device identity" section.

    static DeviceClient deviceClient;
    static string iotHubUri = "{iot hub hostname}";
    static string deviceKey = "{device key}";
    
  6. Program クラスに次のメソッドを追加します。Add the following method to the Program class:

    private static async void SendDeviceToCloudMessagesAsync()
    {
        double minTemperature = 20;
        double minHumidity = 60;
        int messageId = 1;
        Random rand = new Random();
    
        while (true)
        {
            double currentTemperature = minTemperature + rand.NextDouble() * 15;
            double currentHumidity = minHumidity + rand.NextDouble() * 20;
    
            var telemetryDataPoint = new
            {
                messageId = messageId++,
                deviceId = "myFirstDevice",
                temperature = currentTemperature,
                humidity = currentHumidity
            };
            var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
            var message = new Message(Encoding.ASCII.GetBytes(messageString));
            message.Properties.Add("temperatureAlert", (currentTemperature > 30) ? "true" : "false");
    
            await deviceClient.SendEventAsync(message);
            Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, messageString);
    
            await Task.Delay(1000);
        }
    }
    

    このメソッドは、デバイスからクラウドへの新しいメッセージを 1 秒おきに送信します。This method sends a new device-to-cloud message every second. このメッセージには、JSON 形式でシリアル化されたオブジェクトが、デバイス ID、ランダムに生成された番号と共に含まれ、これによって温度センサーと湿度センサーがシミュレートされます。The message contains a JSON-serialized object, with the device ID and randomly generated numbers to simulate a temperature sensor, and a humidity sensor.

  7. 最後に、 Main メソッドに次の行を追加します。Finally, add the following lines to the Main method:

    Console.WriteLine("Simulated device\n");
    deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey ("myFirstDevice", deviceKey), TransportType.Mqtt);
    
    SendDeviceToCloudMessagesAsync();
    Console.ReadLine();
    

    既定では、.NET Framework アプリの Create メソッドは、IoT Hub と通信するために AMQP プロトコルを使用する DeviceClient インスタンスを作成します。By default, the Create method in a .NET Framework app creates a DeviceClient instance that uses the AMQP protocol to communicate with IoT Hub. MQTT または HTTPS プロトコルを使用するには、プロトコルを引数として受け取る、Create メソッドのオーバーライドを使用します。To use the MQTT or HTTPS protocol, use the override of the Create method that enables you to specify the protocol. UWP および PCL クライアントは、既定で HTTPS プロトコルを使用します。UWP and PCL clients use the HTTPS protocol by default. HTTPS プロトコルを使用する場合は、Microsoft.AspNet.WebApi.Client NuGet パッケージをプロジェクトに追加して、System.Net.Http.Formatting 名前空間を含める必要もあります。If you use the HTTPS protocol, you should also add the Microsoft.AspNet.WebApi.Client NuGet package to your project to include the System.Net.Http.Formatting namespace.

このチュートリアルでは、IoT Hub デバイス アプリを作成する手順について説明します。This tutorial takes you through the steps to create an IoT Hub device app. Visual Studio 拡張機能である Connected Service for Azure IoT Hub を使用して、デバイス アプリに必要なコードを追加することもできます。You can also use the Connected Service for Azure IoT Hub Visual Studio extension to add the necessary code to your device app.

注意

わかりやすくするために、このチュートリアルでは再試行ポリシーは実装しません。To keep things simple, this tutorial does not implement any retry policy. 運用環境のコードでは、一時的な障害処理に関する MSDN の記事で推奨されているように、再試行ポリシー (指数関数的バックオフなど) を実装することをお勧めします。In production code, you should implement retry policies (such as an exponential backoff), as suggested in the MSDN article Transient Fault Handling.

アプリの実行Run the apps

これで、アプリを実行する準備が整いました。You are now ready to run the apps.

  1. Visual Studio のソリューション エクスプローラーでソリューションを右クリックし、 [スタートアップ プロジェクトの設定]をクリックします。In Visual Studio, in Solution Explorer, right-click your solution, and then click Set StartUp projects. [マルチ スタートアップ プロジェクト] を選択し、ReadDeviceToCloudMessages プロジェクトと SimulatedDevice プロジェクトのアクションとして、どちらも [開始] を選択します。Select Multiple startup projects, and then select Start as the action for both the ReadDeviceToCloudMessages and SimulatedDevice projects.

    Startup project properties

  2. F5 キーを押して両方のアプリケーションを実行します。Press F5 to start both apps running. デバイス アプリから IoT ハブに送信されたメッセージは、SimulatedDevice アプリのコンソール出力に表示されます。The console output from the SimulatedDevice app shows the messages your device app sends to your IoT hub. IoT Hub が受信したメッセージは、 ReadDeviceToCloudMessages アプリのコンソール出力に表示されます。The console output from the ReadDeviceToCloudMessages app shows the messages that your IoT hub receives.

    Console output from apps

  3. Azure Portal[使用状況] タイルには、IoT Hub に送信されたメッセージ数が表示されます。The Usage tile in the Azure portal shows the number of messages sent to the IoT hub:

    Azure portal Usage tile

次のステップNext steps

このチュートリアルでは、Azure Portal で IoT Hub を構成し、IoT Hub の ID レジストリにデバイス ID を作成しました。In this tutorial, you configured an IoT hub in the Azure portal, and then created a device identity in the IoT hub's identity registry. デバイス アプリでデバイスからクラウドへのメッセージを IoT ハブに送信できるようにするために、このデバイス ID を使用しました。You used this device identity to enable the device app to send device-to-cloud messages to the IoT hub. また、IoT Hub で受け取ったメッセージを表示するアプリを作成しました。You also created an app that displays the messages received by the IoT hub.

引き続き IoT Hub の使用方法を確認すると共に、他の IoT のシナリオについて調べるには、次のページを参照してください。To continue getting started with IoT Hub and to explore other IoT scenarios, see:

既存の IoT ソリューションを拡張し、デバイスからクラウドへのメッセージを大規模に処理する方法については、デバイスからクラウドへのメッセージの処理に関するチュートリアルを参照してください。To learn how to extend your IoT solution and process device-to-cloud messages at scale, see the Process device-to-cloud messages tutorial.

引き続き Azure IoT Hub の使用方法を確認すると共に、他の IoT のシナリオについて調べるには、次のページを参照してください。To continue to get started with Azure IoT Hub and to explore other IoT scenarios, see the following: