快速入门:将遥测数据从设备发送到 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 中心。 IoT 中心用于将大量遥测数据从许多设备引入到云中。 然后,该中心会允许一个或多个在云中运行的后端服务读取和处理该遥测数据。

  1. 登录到 Azure 门户

  2. 选择“创建资源” > “物联网” > “IoT 中心”。

    选择安装 IoT 中心

  3. 在“IoT 中心”窗格中,输入 IoT 中心的以下信息:

    • 订阅:选择需要将其用于创建此 IoT 中心的订阅。
    • 资源组:创建用来存放 IoT 中心的资源组,或使用现有的资源组。 通过将所有相关资源都放在一个组(例如 TestResources)中,可以一起管理它们。 例如,删除资源组会删除包含在该组中的所有资源。 有关详细信息,请参阅使用资源组管理 Azure 资源
    • 区域:选择离你的设备最近的位置。
    • 名称:为你的 IoT 中心创建一个唯一名称。 如果输入的名称可用,会显示一个绿色复选标记。

    Important

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

    IoT 中心基本信息窗口

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

  5. 选择“定价和缩放层”。 就本文来说,请选择“F1 - 免费”层(前提是此层在订阅上仍然可用)。 有关详细信息,请参阅定价和缩放层

    IoT 中心大小和规模窗口

  6. 选择“查看 + 创建”。

  7. 查看 IoT 中心信息,然后单击“创建”。 创建 IoT 中心可能需要数分钟的时间。 可在“通知”窗格中监视进度。

注册设备

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

  1. 添加 IoT 中心 CLI 扩展并创建设备标识。 将 {YourIoTHubName} 替换为 IoT 中心选择的名称:

    az extension add --name azure-cli-iot-ext
    az iot hub device-identity create --hub-name {YourIoTHubName} --device-id MyDotnetDevice
    

    如果为设备选择不同名称,则在运行示例应用程序之前,请在其中更新设备名称。

  2. 运行以下命令,获取刚注册设备的设备连接字符串:

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

    记下看起来类似于 Hostname=...= 的设备连接字符串。 稍后会在快速入门中用到此值。

  3. 还需要来自 IoT 中心的与事件中心兼容的终结点、与事件中心兼容的路径和 iothubowner 主键,确保后端应用程序能连接到 IoT 中心并检索消息。 以下命令可检索 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 {your IoT Hub name}
    

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

发送模拟遥测数据

模拟设备应用程序会连接到 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# 应用程序发送了模拟遥测数据到中心,并使用简单的后端应用程序读取中心的遥测数据。

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