特征
适用于 Azure IoT 中心和 Azure IoT Central 的 Android IoT 设备模拟器
即插即用设备型号DTDL版本 2
发送模拟遥测数据
使用原始时间戳重新发送设备遥测数据
使用二维码的物联网连接
通过分配其 PnP 模型来配置和连接新设备的能力
端口 8883 上的MQTT v3.1.1协议
直接根据MSDN Doc使用MQTT协议
无设备SDK
使用M2Mqtt - .NET 的MQTT 客户端库
介绍
五年前,我发布了一个名为Azure IoT Hub Tester的小型桌面工具,用于模拟连接到 Azure IoT Hub 和后来连接到 Azure IoT Central 的 IoT 设备。基于此,在转向即插即用设备模型(Azure IoT Central App 的概念点)时,我可以说本文及其实现是对适用于 Android 设备的 Azure IoT Hub Tester 工具的自然扩展。
正如文章的名称所暗示的那样,此实现专注于Azure IoT Central平台,但它也可以与 Azure IoT 中心和/或没有设备模板模型一起使用。
以下屏幕片段显示了IoTPnP设备的位置,例如本文在 Azure IoT Central 中的 Android 实现。基本上,IoTPnP应用程序是一个 MQTT 设备,可以配置和/或连接到 Azure IoT Central 应用程序,包括其设备模板作为它们之间的可共享资源,位于众所周知的 IoT 模型存储库中。
图 3
IoTPnP设备代表一个对连接到 Azure IoT Central 的真实设备完全透明的设备,使用与真实设备相同的设备模型,可以发送手动遥测数据,设备孪生,例如只读和可写属性,处理直接方法(命令) 并阅读云到设备的消息。换句话说,IoTPnP设备已经实现了模拟即插即用设备模型所需的所有功能。
除此之外,IoTPnP设备可以获得任何连接设备的特定时间批次的遥测数据,并使用原始时间戳重新发送它们。请注意,可以根据需要手动编辑或随机更新 IoTPnP 设备发布的任何有效载荷。
IoTPnP设备可以使用包含必要属性的 QR 代码连接到 Azure IoT Hub/Central,以创建设备连接字符串或直接使用设备连接字符串的标准文本。请注意, IoTPnP应用程序的所有重要配置属性、状态等都已缓存,因此应用程序可以关闭、最小化等,然后使用缓存的配置属性再次重新打开。
好的,让我们描述一下概念和设计。我假设您对 Azure IoT 基础设施、Azure IoT Central 有一定的了解,并且有使用我的 Azure IoT Hub Tester 工具的经验。
概念与设计
Azure IoT Central Tester 的概念和设计及其 Android 实现由设备模板模型驱动,就像在 Azure IoT Central 中一样。设备模型定义了设备和应用程序等两端之间的交互。设备功能分为由 properties (只读和可写)、遥测(D2C 消息)和命令(同步和排队/C2D 消息)集合描述的接口。接口可以打包到组件中并跨其他设备模型重复使用和/或在同一设备模型中多次重复使用,请参阅设备模型dtmi:com:example:TemperatureController;2,其中设备模型包含两个具有相同功能的恒温器.
基于上述理念,Azure IoT Central Tester 的设计是由组件驱动的,因此IoTPnP设备仅通过所选组件的能力与 Azure IoT Central 进行交互。特殊情况是设备模型在根模型中有一个接口,称为默认组件。
因此,如上所述,设备的功能由以下内容描述:遥测、属性和命令。它们之间的导航非常简单,如以下屏幕片段所示:
图 4
如您所见,上面是IoTPnP应用程序的主页面,顶部是用于显示设备名称、所选设备型号及其组件以及物联网连接状态图标(绿色/红色)的应用程序栏。此工具栏下方是界面功能的导航栏。可以通过单击应用栏右侧的可选菜单来扩展每个选定的导航菜单。导航栏的前四项与所选模型组件相关,右侧最后一项的名称为模型/日志,用于管理和记录IoTPnP应用程序。选择此项及其设置选项菜单,我们可以处理 IoT 连接、设备模板等。有关这方面的更多详细信息将在本文后面介绍。
导航栏下方的布局可水平滚动(模型/日志项除外),如以下屏幕片段所示:
图 5
基本上,第二个水平页面用于在订阅者和发布者 rsp 之间切换。模型(请求)和响应。请注意,订阅者表示一个只读页面,其中显示接收到的消息负载(来自 Azure Iot Hub/Central)。另一个,例如发布者页面,表示用于在显示的主题上发布消息的有效负载。该页面可以编辑。此外,您还可以看到在右下角,有一个用于发布页面内容的平面按钮。
以下屏幕片段显示了选择设置选项菜单的模型项:
图 6
好了,表演时间到了。让我们描述一下这个小工具可以为您做什么。我假设您对 Azure IoT Hub/Central 有一些了解。
用法
在您开始使用 Azure IoT Central 测试器之前,我假设您已经拥有 Azure IoT Central 应用程序。请注意,该工具仍适用于不需要设备连接到 Azure IoT Central 应用程序的功能,例如访问 PnP 模型存储库等。
请注意,本文是使用 IoT Central Application - 7 天免费试用版编写的rk2021iotcfree,因此所有二维码均已过期。
以下屏幕片段显示了点击启动器图标后 Android 手机上IoTPnP应用程序的主页:
图 7
该工具代表虚拟 MQTT 设备的主要部分是它与 Azure IoT Central rsp 的连接。到 Azure 物联网中心。基本上,IoT 设备是根据设备连接字符串连接的。对于 Azure IoT 中心,我们有可用的设备连接字符串,或者我们可以非常简单地从 Azure IoT 中心共享访问策略创建一个。另一个,例如 Azure IoT Central App,我们无法直接访问其底层的 Azure IoT Hub。我们必须使用设备配置服务 (DPS),请在此处查看有关其 REST API 的更多详细信息。
Azure IoT Central Tester 仅支持使用 SAS 令牌进行设备物联网连接:
设备配置服务
设备连接字符串
以下步骤详细说明了我们的虚拟 MQTT 设备(例如 Android 应用程序IoTPnP)如何连接到 Azure 物联网提供商。
您还应该注意的一件事是,设备模型表示设备实现及其功能,因此在设备配置和连接时,此模型 ID 会传递给 IoT 提供商。换句话说,基于此设备modelId,Azure IoT Central 应用程序将为应用程序中连接的设备分配或重新分配设备模板。
因此,如果我们不知道为特定设备分配的设备模板,该工具应该none 在设备配置期间使用设备模型,然后在连接后,我们可以根据需要选择一个。
1. 连接到 Azure IoT Central - 已配置的设备
这是设备连接到 Azure IoT Central 的最常见方式,其中应用程序已经注册了一个设备并为其分配了设备模型以进行消息数据交换。
以下屏幕片段显示了我rk2021iotcfree的所有设备的应用程序:
图 8
如您所见,device1是基于 IoT 即插即用移动模型进行配置和交互的。
让我们将我们的工具连接到这个应用程序作为一个设备来表示和交互device1,所以选择这个设备并点击连接 然后选择二维码:
图 9
设备连接二维码表示具有以下架构的 JSON 对象:
JavaScript
{
“ scopeId”:“ 0ne00461860”,
“ deviceId”:“ device1 ”,
“ deviceKey”:“ ...”
}
我试图与 Azure IoT Central 团队讨论添加一个额外的可选属性,例如modelId 分配的设备模板,请参阅此处的讨论。
请注意,此工具可以接受此可选modelId属性,并且基于此,IoTPnP可以重新选择应用程序,因此物联网两端都在同步其消息数据交换交互。您可以使用一些第三方免费工具生成此可选设备连接二维码,例如Snake Chia Labs的 QR Code Generator for Windows 10 。
好的,让我们继续我们的步骤,将我们的工具与预配置的 Azure IoT Central 连接起来device1。此端准备扫描设备连接二维码。
以下屏幕片段显示了如何连接IoTPnP应用程序。选择导航栏中的模型(日志)项,然后选择选项菜单设置