使用 Azure IoT SDK 为 Android Things 平台开发

Azure IoT 中心 SDK 为常用平台(如 Windows、Linux、OSX、MBED 和 Android 和 iOS)提供第一层支持。 作为我们在 IoT 部署中实现更大选择和灵活性的承诺的一部分,Java SDK 还支持 Android Things 平台。 开发人员可以利用设备端 Android Things 操作系统的优势,同时使用 Azure IoT 中心 作为能够扩展到数百万台设备的中央消息中心。

本教程概述了使用 Azure IoT Java SDK 在 Android Things 上生成设备端应用程序的步骤。

先决条件

  • Android Things 支持的硬件,与 Android Things OS 一起运行。 可以按照 Android Things 文档 来学习如何刷写 Android Things OS。 请确保 Android Things 设备已连接到互联网,并配备基本的外围设备,如键盘、显示器和鼠标。 本教程使用 Raspberry Pi 3。

  • 最新版本的 Android Studio

  • 最新版本的 Git

可以使用本地 Azure CLI。

创建 IoT 中心

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

  1. 登录到 Azure 门户

  2. 在 Azure 主页上,选择“+ 创建资源”按钮。

  3. 在“类别”菜单中选择“物联网”,然后选择“IoT 中心”

  4. 在“基本信息”选项卡上,按如下所示填写字段:

    重要

    由于 IoT 中心将作为 DNS 终结点公开可发现,因此请务必避免在命名它时输入任何敏感信息或个人身份信息。

    资产 价值
    Subscription 选择要用于中心的订阅。
    资源组 选择一个资源组或新建一个资源组。 若要新建资源组,请选择“新建”并填写要使用的名称。
    IoT 中心名称 输入中心的名称。 此名称必须全局唯一,长度介于 3 到 50 个字母数字字符之间。 名称还可以包含短破折号 ('-') 字符。
    Region 选择离你最近的地区,也就是你希望中心所在的位置。 某些功能(如 IoT 中心设备流)仅适用于特定区域。 对于这些受限功能,你必须选择受支持的区域之一。
    选择要用于中心的层。 根据你需要多少功能以及每天通过解决方案发送多少消息来选择层。

    免费层适用于测试和评估。 如果是免费层,则可将 500 台设备连接到中心,每天最多可传输 8,000 条消息。 每个 Azure 订阅可以在免费层中创建一个 IoT 中心。

    若要比较每个层可使用的功能,请选择“比较层”。 有关详细信息,请参阅 为解决方案选择合适的 IoT 中心层和大小。
    每日消息数量限制 选择中心每日消息的最大配额。 可用选项取决于您为集线器选择的级别。 若要查看可用的消息传送和定价选项,请选择“查看所有选项”,然后选择最符合中心需求的选项。 有关详细信息,请参阅 IoT 中心配额和限制

    显示如何在 Azure 门户中创建 IoT 中心的屏幕截图。

    注释

    所示价格仅用作示例。

  5. 选择“下一步: 网络”以继续创建中心

  6. 在“网络”选项卡上填写字段,如下所示:

    资产 价值
    连接配置 选择设备可以用来连接到 IoT 中心的终结点。 对于此示例,请接受默认设置“公共访问”。 可以在创建 IoT 中心后更改此设置。 有关详细信息,请参阅 IoT 中心终结点
    最低 TLS 版本 选择 IoT 中心支持的最低 TLS 版本 。 创建 IoT 中心后,无法更改此值。 接受此示例的默认设置 (1.0)。

    显示如何选择可连接到新 IoT 中心的终结点的屏幕截图。

  7. 选择“下一步: 管理”,继续创建中心。

  8. 在“管理”选项卡上,接受默认设置。 如果需要,可以修改以下任何字段:

    资产 价值
    权限模型 作为基于角色的访问控制的一部分,此属性决定如何管理对 IoT 中心的访问。 允许共享访问策略或仅选择基于角色的访问控制。 有关详细信息,请参阅使用 Azure Microsoft Entra ID 控制对 IoT 中心的访问
    分配给我 可能需要访问 IoT 中心数据 API 来管理实例中的元素。 如果你有权访问角色分配,请选择“IoT 中心数据参与者角色”,以授予自己对数据 API 的完全访问权限。

    若要分配 Azure 角色,必须拥有 Microsoft.Authorization/roleAssignments/write 权限,例如用户访问管理员所有者
    设备到云的分区 此属性将设备到云消息与这些消息的同步读取器数目相关联。 大多数 IoT 中心只需要 4 个分区。

    显示如何为新的 IoT 中心设置基于角色的访问控制和缩放的屏幕截图。

  9. 选择“下一步: 加载项”,转到下一屏幕。

  10. 在“加载项”选项卡上,接受默认设置。 如果需要,可以修改以下任何字段:

    资产 价值
    启用 Device Update for IoT Hub 打开 Device Update for IoT Hub,为设备启用无线更新。 如果选择此选项,系统会提示你提供信息,以预配 Device Update for IoT Hub 帐户和实例。 有关详细信息,请参阅什么是 Device Update for IoT Hub?
    启用 Defender for IoT 启用 Defender for IoT,为 IoT 和设备添加额外的一层防护。 此选项不可用于免费层的中心。 有关详细信息,请参阅 Microsoft Defender for IoT 文档中 IoT 中心的安全建议

    一个屏幕截图,显示了如何为新的 IoT 中心设置可选加载项。

    注释

    所示价格仅用作示例。

  11. 在完成时选择“下一步: 标记”以转到下一屏幕。

    标记是名称/值对。 可以为多个资源和资源组分配相同的标记,以便对资源进行分类并合并计费。 在本文档中,不会添加任何标记。 有关详细信息,请参阅使用标记对 Azure 资源和管理层次结构进行组织

    显示如何为新 IoT 中心分配标记的屏幕截图。

  12. 选择下一步:查看+创建以查看您的选择。

  13. 选择“创建”,以启动新中心的部署。 在创建中心时,部署可能会持续几分钟。 部署完成后,选择“转到资源”以打开新的中心

注册设备

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

  1. 在 Azure 本地 Shell 中运行以下命令,添加 IoT 中心 CLI 扩展并创建设备标识。

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

    MyAndroidThingsDevice:这是为注册设备提供的名称。 按照如下所示使用 MyAndroidThings设备。 如果为设备选择其他名称,则还需要在本文中使用该名称,并在运行示例应用程序之前更新示例应用程序中的设备名称。

    az extension add --name azure-iot
    az iot hub device-identity create --hub-name YourIoTHubName --device-id MyAndroidThingsDevice
    
  2. 在 Azure 本地 Shell 中运行以下命令,以获取您刚刚注册的设备的 设备连接字符串。 将 YourIoTHubName 替换为您为 IoT 中心选择的名称。

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

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

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

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

生成 Android Things 应用程序

  1. 生成 Android Things 应用程序的第一步是连接到 Android Things 设备。 将 Android Things 设备连接到显示器并将其连接到 Internet。 Android Things 提供有关如何连接到 WiFi 的文档 。 连接到 Internet 后,记下“网络”下列出的 IP 地址。

  2. 使用 adb 工具通过上面所述的 IP 地址连接到 Android Things 设备。 使用终端中的此命令仔细检查连接。 应会看到你的设备列为“已连接”。

    adb devices
    
  3. Azure IoT SDKs for Java 存储库 下载适用于 Android/Android Things 的示例,或使用 Git 克隆该存储库,如以下示例所示。

    git clone https://github.com/Azure/azure-iot-sdk-java.git
    
  4. 在 Android Studio 中,从存储库副本中的 \azure-iot-sdk-java\device\iot-device-samples\android-sample 文件夹中打开 Android 项目。

  5. 打开 gradle.properties 文件,并将“Device_connection_string”替换为前面所述的设备连接字符串。

  6. 单击“运行 - 调试”并选择设备将此代码部署到 Android Things 设备。

  7. 成功启动应用程序后,可以看到在 Android Things 设备上运行的应用程序。 此示例应用程序发送随机生成的温度读数。

从中心读取遥测数据

可以在数据被接收到 IoT 中心时通过 IoT 中心查看数据。 IoT 中心 CLI 扩展可以连接到在 IoT 中心的服务端 事件 端点。 该扩展接收从模拟设备发送的设备到云的消息。 IoT 中心后端应用程序通常在云中运行,以接收和处理设备到云的消息。

在 Azure 本地 Shell 中运行以下命令,将 YourIoTHubName 替换为您的 IoT 中心的名称:

az iot hub monitor-events --device-id MyAndroidThingsDevice --hub-name YourIoTHubName

清理资源

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

否则,可以删除本文中创建的 Azure 资源,以避免产生费用。

重要

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

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

  1. 登录 Azure 门户,然后选择“资源组”。

  2. “筛选任何字段 ”文本框中,键入包含 IoT 中心的资源组的名称。

  3. 在结果列表中,选择包含 IoT 中心的资源组。

  4. 在资源组的工作窗格中,从命令栏中选择 “删除资源组 ”。

    显示 Azure 门户中资源组的工作窗格的屏幕截图,其中命令栏中突出显示了“删除资源组”命令。

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

后续步骤