Azure Functions 作为物联网中心设备

Azure Functions as IoT Hub device

是否可以使用 Azure Functions 来模拟连接到 Azure IoT 中心的设备? (到目前为止,我只找到了处理中心接收到的数据的 Azure Functions 示例。)

更准确地说,Azure Functions 应该像设备一样执行以下两项任务:

  1. 定期向 IoT 中心发送遥测数据。

    • 显而易见的解决方案是使用一个带有定时器触发器的函数,并在代码中实例化一个物联网客户端来发送数据。是吗?
  2. 在设备孪生 属性 更改时触发,并使用新的设备孪生属性执行某些操作。

    • 这种事件有触发因素吗?

任何代码片段或示例指针都会有所帮助!

是的,可以使用以下函数来完成:

  1. 使用 REST API 发送遥测数据
  2. 设备孪生更改事件 的 Azure IoT 中心消息路由到内置端点以供 IoTHubTrigger function 使用。我确实建议在 Azure IoT 中心为此功能创建自己的使用者组。

Azure IoT 中心的设备模拟通常是很长的 运行 过程,因此您不会找到许多用于此目的的 Azure Functions 实现。这并不意味着这是不可能的。正如您所建议的,计时器触发器可用于定期将遥测数据发送到 Azure IoT 中心。然后您可以发送一条或多条消息,关闭连接(如果使用 MQTT 或 AMQP),该功能将停止。您也可以为此使用 REST API。

通常情况下,设备将通过保持双向连接打开(再次通过 MQTT 或 AMQP)来响应其设备孪生的更改所需属性事件。因为您的函数并不总是 运行,所以您需要以不同的方式完成此操作。一种解决方案是将 Device Twin Change 事件路由到您的 Function 正在侦听的 EventHub。