【问题标题】:Trigger a function when message received in Azure IoT Hub在 Azure IoT 中心收到消息时触发函数
【发布时间】:2020-10-07 13:25:48
【问题描述】:

首先我想说我是 Azure 的新手。 我的大部分云体验都来自 AWS。

我将 IoT 中心与每 1 分钟发送一次消息的连接设备一起使用。

到目前为止,我根据 Microsoft 团队的指南做了什么:

https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps

现在,我想在 AWS 中创建类似 Lambda 函数的东西,根据我在 Azure 中的理解,他们将其称为 Azure Functions。我想创建一个函数,每次收到来自我的设备的新消息时都会触发它,做一些事情(比如说添加 1)然后将其发回(这样我就可以将“新”数据拉到我的后端)。

到目前为止,我所做的是创建一个新的“Azure 函数”(我猜它就像函数的容器?) 然后我尝试通过单击“添加新”并单击“IoT 中心(事件中心)”模板来创建新功能。但是当我拿到我的代码并尝试测试它时,我得到了 404 响应。我需要创建其他东西吗?我是否需要在我的 IoT 中心创建一个新的“事件”?我需要创建一个新的“事件中心”吗?

谢谢!

附言 我尝试用谷歌搜索,但答案必须是旧门户网站或 C#,我使用的是 Node 和 Python。

【问题讨论】:

  • 您好@itaik,下面的回答是否回答了您的问题?请将其标记为答案,以帮助其他人找到解决方案。谢谢!

标签: python node.js azure azure-functions azure-iot-hub


【解决方案1】:

this 示例中涵盖了此场景。该示例使用 JavaScript。它将消息写入数据库,但您可以根据需要更改这部分。

要回答您的其他一些问题: IoTHub 带有一个内置的事件中心,因此无需创建任何其他东西!您的 Azure 函数将使用事件中心触发器来订阅来自 IoT 中心的事件。默认情况下,设备发送到 IoT 中心的每个事件都将在该端点上结束,因此要“创建”一个新事件,请使用设备 SDK(在设备上或您的机器上)向 IoT 中心发送消息。

您提到了“发回”,但在大多数情况下,您不必响应 IoT 中心消息。例如,您可以将消息存储在数据库中并构建一个从该数据库读取的 Web 应用程序。您还可以在 Web 应用程序中获得实时更新,但这超出了您的问题范围。

【讨论】:

    【解决方案2】:

    我已尝试在下面回答您的问题:-

    我想创建一个函数,每次新函数都会触发 已收到来自我的设备的消息,做点什么(比如说添加 1) 然后将其发回(这样我就可以将“新”数据拉到我的后端)。

    如果您的意思是将数据发送回IoTHub,这对我来说似乎不合逻辑,因为操作的数据不是由设备发送的。我宁愿将我的 Azure 函数视为后端,并将数据保存/发送到某个持久存储或消息代理中,其他使用者可以访问它。

    到目前为止,我所做的是创建一个新的“Azure 函数”(我猜 它就像一个功能容器?)然后我尝试创建一个新的 单击“添加新”并单击“IoT 中心(事件中心)” 模板。但是当我得到我的代码并尝试测试它时,我得到了 404 回复。我需要创建其他东西吗?

    您可以通过多种方式使用与事件中心兼容的内置终结点作为触发器来创建 Azure 函数。检查下图。内置端点的相关信息可以在here找到。

    我是否需要在我的 IoT 中心创建一个新的“事件”?

    不确定你的意思。流程的工作方式是

    1. 从设备发送遥测消息。 NodeJS 示例可以在here 找到。
    2. 您需要添加消息路由,以便在内置端点中接收到达 IoTHub 的消息。查看下图,了解如何将遥测消息路由到内置端点。

    同样,您可以将设备孪生更改事件、生命周期事件路由到内置端点。

    我需要创建一个新的“事件中心”吗?

    不需要,因为内置终结点与事件中心兼容。检查文档here。除非您根据业务用例有特定需求,否则不需要自定义事件中心端点。

    但是当我访问我的代码并尝试对其进行测试时,我得到了 404 响应。 现在,我们需要在内置端点收到新事件/消息时触发 azure 函数。您可以通过多种方式做到这一点。

    1. Azure portal
    2. Command line
    3. VS code

    上面要注意的要点是你的 azure function binding[trigger] 在 function.json 文件中设置正确。 Here 是触发器的样子。 MyEventHubmyEventHubReadConnectionAppSetting 值应从应用程序设置中选择。检查下面的图像。

    我建议您阅读此page,以深入了解事件中心触发器如何与 Azure 函数配合使用。

    完成上述所有步骤后,您可以在门户中打开 Azure 函数应用,然后转到函数应用刀片中的函数部分。在那里,您可以监控、编码和测试,检查您的 Azure 功能的集成。

    【讨论】:

    • 我在“应用程序设置”中找不到 myeventhub 和 connectionappsetting。是否在函数应用配置中?
    • 您需要自己添加这些 myEventHub 值是事件中心名称,myEventHubReadConnectionAppSetting 是事件中心的连接字符串
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多