快速入门:将遥测数据从设备发送到 IoT 中心并使用后端应用程序读取该数据 (C#)

IoT 中心是一项 Azure 服务,用于将大量遥测数据从 IoT 设备引入云中进行存储或处理。 本快速入门会将模拟设备应用程序的遥测数据通过 IoT 中心发送到后端应用程序进行处理。

本快速入门使用两个预先编写的 C# 应用程序,一个用于发送遥测数据,一个用于从中心读取遥测数据。 运行这两个应用程序前,请先创建 IoT 中心并在中心注册设备。

如果没有 Azure 订阅,请在开始前创建一个试用帐户

先决条件

本快速入门中运行的两个示例应用程序是使用 C# 编写的。 开发计算机上需要有 .NET Core SDK 2.1.0 或更高版本。

可以从 .NET 为多个平台下载 .NET Core SDK。

可以使用以下命令验证开发计算机上 C# 的当前版本:

dotnet --version

https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/master.zip 下载示例 C# 项目并提取 ZIP 存档。

创建 IoT 中心

此部分介绍如何使用 Azure 门户创建 IoT 中心。

  1. 登录到 Azure 门户

  2. 选择+“创建资源”,然后选择“物联网”。

  3. 在右侧列表中单击“Iot 中心”。 随即显示 IoT 中心创建过程的第一个屏幕。

    显示了在 Azure 门户中创建中心的屏幕截图

    填充字段。

    订阅:请选择要用于 IoT 中心的订阅。

    资源组:可创建新的资源组或使用现有资源组。 若要新建一个,请单击“新建”,并填写要使用的名称。 若要使用现有资源组,请单击“使用现有资源组”并从下拉列表中选择该组。 有关详细信息,请参阅使用资源组管理 Azure 资源

    区域:这是要在其中设置中心的区域。 从下拉列表中选择最靠近自己的位置。

    IoT 中心名称:输入 IoT 中心的名称。 此名称必须全局唯一。 如果输入的名称可用,会显示一个绿色复选标记。

    Important

    IoT 中心将公开为 DNS 终结点,因此,命名时请务必避免包含任何敏感信息。

  4. 单击“下一步: 大小和规模”,以便继续创建 IoT 中心。

    屏幕截图显示使用 Azure 门户为新的 IoT 中心设置大小和缩放级别

    在此屏幕上,可以采用默认值,只需在底部单击“查看+创建”即可。

    定价和缩放层级:可以根据需要的功能数以及每天通过解决方案发送的消息数从多个层中进行选择。 免费层适用于测试和评估。 它允许 500 台设备连接到 IoT 中心,并且每天最多传输 8,000 条信息。 每个 Azure 订阅可以在免费层中创建一个 IoT 中心。

    IoT 中心单位:每日每单位允许的消息数取决于中心的定价层。 例如,如果希望 IoT 中心支持 700,000 条消息输入,则选择两个 S1 层单位。

    有关其他层选项的详细信息,请参阅选择合适的 IoT 中心层

    高级/设备到云的分区:此属性将设备到云消息与这些消息的同步读取器数目相关联。 大多数 IoT 中心只需要 4 个分区。

  5. 单击“查看+创建”可查看选择。 会显示类似于以下的屏幕。

    屏幕截图显示用于创建新 IoT 中心的信息

  6. 单击“创建”以创建新的 IoT 中心。 创建中心需要几分钟时间。

注册设备

必须先将设备注册到 IoT 中心,然后该设备才能进行连接。 在本快速入门中,请使用 Azure CLI 来注册模拟设备。

  1. 在终端窗口 Shell 中运行以下命令,以添加 IoT 中心 CLI 扩展并创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyDotnetDevice:这是为注册的设备提供的名称。 请按显示的方法使用 MyDotnetDevice。 如果为设备选择不同名称,则可能还需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az extension add --name azure-cli-iot-ext
    az iot hub device-identity create --hub-name YourIoTHubName --device-id MyDotnetDevice
    
  2. 运行以下命令,获取刚注册设备的_设备连接字符串_:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    az iot hub device-identity show-connection-string --hub-name YourIoTHubName --device-id MyDotnetDevice --output table
    

    记下如下所示的设备连接字符串:

    HostName={YourIoTHubName}.azure-devices.cn;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    稍后会在快速入门中用到此值。

  3. 还需要来自 IoT 中心的与事件中心兼容的终结点、与事件中心兼容的路径和 iothubowner 主键,确保后端应用程序能连接到 IoT 中心并检索消息。 以下命令可检索 IoT 中心的这些值:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    az iot hub show --query properties.eventHubEndpoints.events.endpoint --name YourIoTHubName
    
    az iot hub show --query properties.eventHubEndpoints.events.path --name YourIoTHubName
    
    az iot hub policy show --name iothubowner --query primaryKey --hub-name YourIoTHubName
    

    记下这三个值,稍后会在快速入门中用到这些值。

发送模拟遥测数据

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,并发送模拟的温度和湿度遥测数据。

  1. 在本地终端窗口中,导航到示例 C# 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\simulated-device 文件夹。

  2. 在所选文本编辑器中打开 SimulatedDevice.cs 文件。

    s_connectionString 变量的值替换为之前记下的设备连接字符串。 然后将更改保存到 SimulatedDevice.cs 文件。

  3. 在本地终端窗口中,运行以下命令以安装模拟设备应用程序所需的包:

    dotnet restore
    
  4. 在本地终端窗口中,运行以下命令,生成并运行模拟设备应用程序:

    dotnet run
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    运行模拟设备

从中心读取遥测数据

后端应用程序会连接到 IoT 中心上的服务端“事件”终结点。 应用程序会接收模拟设备发送的设备到云的消息。 IoT 中心后端应用程序通常在云中运行,接收和处理设备到云的消息。

  1. 在另一本地终端窗口中,导航到示例 C# 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\read-d2c-messages 文件夹。

  2. 在所选文本编辑器中打开 ReadDeviceToCloudMessages.cs 文件。 更新以下变量并保存对文件所做的更改。

    变量
    s_eventHubsCompatibleEndpoint 将变量的值替换为之前记下的与事件中心兼容的终结点。
    s_eventHubsCompatiblePath 将变量的值替换为之前记下的与事件中心兼容的路径。
    s_iotHubSasKey 将变量的值替换为之前记下的 iothubowner 主键。
  3. 在本地终端窗口中,运行以下命令,安装后端应用程序所需的库:

    dotnet restore
    
  4. 在本地终端窗口中,运行以下命令,生成并运行后端应用程序:

    dotnet run
    

    以下屏幕截图显示了后端应用程序接收模拟设备发送到 IoT 中心的遥测数据后的输出:

    运行后端应用程序

清理资源

如果想要继续学习下一篇建议的文章,可以保留已创建的资源,以便重复使用。

否则,可删除本文中创建的 Azure 资源,避免收费。

Important

删除资源组的操作不可逆。 资源组以及包含在其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有的包含要保留资源的资源组中创建了 IoT 中心,则只删除 IoT 中心资源本身,而不要删除资源组。

若要按名称删除资源组,请执行以下操作:

  1. 登录到 Azure 门户,然后单击“资源组”。

  2. 在“按名称筛选...”文本框中键入包含 IoT 中心的资源组的名称。

  3. 在结果列表中的资源组右侧,单击“...”,然后单击“删除资源组”。

    Delete

  4. 系统会要求确认是否删除资源组。 再次键入资源组的名称进行确认,然后单击“删除”。 片刻之后,将会删除该资源组及其包含的所有资源。

后续步骤

本快速入门设置了 IoT 中心、注册了设备、使用 C# 应用程序发送了模拟遥测数据到中心,并使用简单的后端应用程序读取中心的遥测数据。

若要了解如何从后端应用程序控制模拟设备,请继续阅读下一快速入门教程。