了解 Microsoft Azure IoT 网关 SDK 模块
Microsoft Azure IoT 网关 SDK 提供了大量工具,使您能够以多种方式启用网关设备。
获取新的 Intel® IoT 开发人员套件,这是一个完整的硬件和软件解决方案,允许开发人员使用 Intel® Galileo 和 Intel® Edison 开发板创建令人兴奋的新解决方案。 访问 Intel® IoT 开发人员专区。
引言
Microsoft Azure* IoT 网关 SDK 提供了大量工具,使您能够以多种方式启用网关设备。它还可以使几乎任何具有互联网连接的设备成为网关。它适用于能够编译 C 和 C++ 代码的 Windows* 和 Linux* 开发环境。它也具有高度模块化,具有一个轻量级的核心来驱动您可以包含在其中的模块。这个核心处理模块之间如何相互通信,而与它所处的环境无关。这个代理是拥有有效模块和整体有效网关的关键。它还简化了与 Microsoft Azure* 云服务的通信。
模块
SDK 默认包含几个模块,这可以帮助您了解它们的结构、应用和通信。它们还可以为网关或您的自定义模块提供一个良好的测试平台。首先,我们将了解 Microsoft 创建的一些模块,以及它们如何整体融入 SDK。每个模块的“包装”方式不同,具体取决于它是在 Windows 还是 Linux 开发环境中使用,但其他方面都是相同的。
hello_world
hello_world 模块旨在将简单的 "hello world" 消息输出到系统日志。大部分代码是错误检查,以确保在执行之前 SDK 的核心功能已正确设置环境。此模块是一个发布者,这意味着它的目标是向代理发布消息,然后代理可以将消息发送给需要它的人。在这种情况下,它只是将 "helloWorld", "from Azure IoT Gateway SDK simple sample!" 发送给代理,但其他模块可以发送传感器信息或指令。
Logger
Logger 模块是另一个简单的模块,它侦听代理的任何消息,然后将它们保存到 JSON 文件中。Logger 不向代理输出任何数据,而是保留所有通过代理的数据。它在它们之上附加了一些东西,比如事件的时间、内容和消息的来源,然后将其附加到指定的 JSON 日志文件中。这个简单的模块非常适合用于错误检查,因为它可以在实时显示导致意外输出的事件序列。
构建您的 "网关"
SDK 有一个内置功能来构建您的网关。当然,它不会通过魔术蓝烟来组装硬件。相反,它构建了一个对象,该对象充当 SDK 用于正确与模块和硬件交互的配置。此功能以 JSON 文件的形式接收输入,该文件需要指示程序要包含哪些模块,以及代理需要如何对其进行操作。
模块
JSON 文件的模块部分必须包含三件事。首先,模块的名称,它在您的 SDK 中必须是唯一的。必须填写的下一个字段是模块的路径。此路径必须以 .so 或 .dll 结尾,具体取决于您用于网关的操作系统。最后,您必须输入您的模块期望的参数。像 logger 这样的模块期望一个用于它要输出到的文件的参数。hello_world 模块不期望任何参数,因此您传递它 "null"。
链接
JSON 的这一部分用于指示代理如何处理发送给它的消息。源模块被指定用于向代理发送消息。指定为接收器的模块从代理接收消息。对于 "Hello World" 示例,hello_world 模块被指定为源,而 logger 模块被指定为接收器。以下是一个 JSON 示例,用于在 Linux 主机上构建网关环境,取自 Azure IoT 网关 SDK github。
结论
希望设计自己模块的开发人员必须查看 Microsoft 提供的当前模块。本文应该为您提供了模块与 SDK 核心之间关系的良好理解。在构建您自己的模块时,您需要考虑它们将如何反应,并在 SDK 和代理的世界中应用。模块的真正力量在于它与其他模块通信以完成它们需要做的事情的方式。所以去设计你自己的模块,测试它们,并让你的网关按照你想要的方式行动!
资源
此文档的主要来源是 Azure IoT 网关 SDK GitHub 页面。