Azure IoT中心简单的发布 - 订阅通信

问题描述 投票:0回答:2

我是微软的Azure IoT Hub和MQTT / AMQP通信的新手。我正在尝试在我的覆盆子pi和在我的计算机上运行的Ubunutu VM之间建立简单的通信。我打算使用我的pi作为客户端将消息发布到我的VM上运行的服务,该服务只是将消息内容回显到std out。阅读Azure网站/ github页面上的所有文献后,我无法找到最佳方法。是否可以在本地网络上托管服务? SDK上的iotHub服务客户端示例是用作服务还是用于与Azure上的现有服务(SQL数据库,Web服务器等)进行通信的客户端?我能够使用azure-iot-sdk-c / iothub_client / samples / iothub_client_sample_mqtt.c样本向我的IoT Hub门户发送消息,但无法找出包含我的消息发布到的主题的位置。我真的很感激任何帮助/输入。

谢谢

azure azure-iot-hub azure-iot-sdk
2个回答
0
投票

Azure IoT Hub只是一个消息通道,它不处理消息。

对于设备端(raspberry pi),您使用设备SDK通过MQTT发送D2C消息,并且它可以工作。对于服务端(Ubuntu VM),您需要Event Hub SDK来接收由raspberry pi发送的D2C消息(Why Event Hub?https://blogs.msdn.microsoft.com/zhqqitest/2017/03/18/do-not-make-it-a-mess-why-therere-so-many-endpoints-in-iot-hub/)。

此外,IoT Hub仅在设备端支持MQTT,也就是说,您无法在服务端(Ubuntu VM)上使用MQTT连接到IoT Hub,但您需要AMQP。

您可能有另一个问题,那么在服务端侦听D2C消息的AMQP主题是什么?这是/<compatibleName>/ConsumerGroups/<ConsumerGroups>/Partitions/<PartitionID>

  • compatibleName:IoT Hub事件中心兼容的名称(多么糟糕:-S),您可以从Azure门户(端点 - 内置端点 - 事件)中找到它
  • ConsumerGroups:您可以在Azure门户网站$Default中找到它
  • PartitionID:分区ID,当你用AMQP连接到Event Hub时,你可以得到它,它是一个数字,通常从0开始

如果您不想直接呼叫AMQP,您只需在Ubuntu VM上使用带有IoT Hub连接字符串的Event Hub SDK(不是与Event Hub兼容的端点或与Event Hub兼容的名称,Event Hub SDK将为您执行此操作) 。


2
投票

Azure IoT设备SDK旨在构建将与Azure云中的Azure IoT Hub服务连接和通信的设备应用程序。

Azure IoT服务SDK旨在构建将用于配置,监视Azure云中运行的Azure IoT Hub服务实例并与之交互的应用程序。

如果您正在寻找一种简单的解决方案来建立利用MQTT的设备或设备到服务器通信的本地设备,那么您可以在那里查看MQTT代理解决方案。

现在,如果您想利用物联网云来管理设备,轻松保护和验证它们,以高吞吐量将遥测数据上传到云端,并利用云中的高级分析服务(大数据,机器学习......),然后Azure IoT Hub适合您。

© www.soinside.com 2019 - 2024. All rights reserved.