这是我的项目:我有一个连接到 ESP32 的温度传感器,它使用 MQTTS 连接到端口 8883 上的 Microsoft Azure 虚拟机。虚拟机上运行着一个使用 uWSGI 和 Python 应用程序的 Nginx 服务器。该应用程序通过 MQTTS 收集数据,将其保存在 SQL 数据库中,并运行 REST API 进行外部连接以从数据库中查询数据。
我需要做的是从使用虚拟机更改为使用 Azure 功能(如 SQL 数据库、iotHub、RestAPI……)。到目前为止,我设法将我的 ESP32 设备连接到 iotHub。所以我需要知道下一步应该做什么?我应该使用 iotHub 消息触发器吗?我如何将数据保存在 SQL 数据库中?我如何创建 Rest API?
提前致谢!
答案1
由于您使用 Iot Hub,因此您有两个选择:
1a. 使用 Azure 事件网格并开始这里,您将看到,作为事件发布者,您还将看到对 IoT 中心的支持。当消息发送到 IoT 中心时,事件网格将知道 IoT 中心有一条新消息,然后您可以以逻辑应用程序或函数的形式配置接收器\订阅器\侦听器。在逻辑应用程序或函数中,您将看到事件通知,然后使用该通知从 IoT 中心命名空间读取消息并处理该消息,在您的情况下,该消息将存储在 Azure SQL 中。
1b. 您可以使用 Azure 函数触发器,而不是使用事件网格。建议使用事件网格,因为它具有重试和故障检测功能,并且您可以为一个发布者拥有多个订阅者,而且您可以从 Azure 门户轻松进行设置,如果一切正常,还可以设置过滤器。在触发器上,您可以从 IoT 中心命名空间读取消息,并通过将其存储在 SQL DB 中来处理它。
- 一种非常不同的方法,那就是使用Azure 数据资源管理器使用 Event Hub 或 IoT Hub。Data Explorer 是为此类场景构建的,它将是最佳和最便宜的选择,并且几乎不需要任何代码。
- 向事件中心发送消息,
- 创建 ADX 群集然后创建 DB,使用这,这里使用最便宜的选项,即 DevTest
- 要获取数据,您必须创建一个表,该表需要具有表架构,并且可以使用内置的简单获取工具来创建这里。
- 从示例 JSON 文件创建表后,您可以设置持续数据提取连接,使用这。
- 完成摄取后,就到了查询的时间,从这里。
- 您可以连接到 Power BI 并可视化您的数据,并使用 ADX 的 REST API 连接基础数据。由于它是用于大数据探索的工具,因此您可以在时间序列分析、预测等方面使用它。
在这两种情况下,我都建议使用 Iot Hub 的捕获选项,因为它会在收到消息时将其存储在 Azure BLOB 存储中,并备份所有 RAW 消息。您还可以同时使用 Event Hub 和 Iot Hub,如果是单向的,我建议使用 Event Hub,而且它也更便宜一些。