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

时间:2017-03-17 16:25:54

标签: azure azure-iot-hub azure-iot-sdk

我是微软的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门户发送消息,但无法找出包含我的消息发布到的主题的位置。我真的很感激任何帮助/输入。

由于

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

对于设备端(raspberry pi),您使用设备SDK通过MQTT发送D2C消息,并且它可以工作。对于服务端(Ubuntu VM),您需要 Event Hub SDK 来接收raspberry pi发送的D2C消息(为什么选择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将为你这样做。)