2017-03-17 77 views
0

我是微软Azure IoT Hub和MQTT/AMQP通信的新手,我试图在我的电脑上运行我的树莓派和Ubunutu VM之间建立简单的通信。我打算使用我的pi作为客户端,将消息发布到运行在我的虚拟机上的服务,只需简单地回复消息内容即可。在阅读Azure网站/ github页面上的所有文献后,我很难找出实现这一目标的最佳方法。是否可以在本地网络上托管服务? SDK上的iotHub服务客户端示例是作为服务使用还是作为旨在与Azure上的现有服务进行通信的客户端(SQL数据库,Web服务器等)?我能够通过azure-iot-sdk-c/iothub_client/samples/iothub_client_sample_mqtt.c示例向我的IoT Hub门户发送消息,但无法弄清楚我的消息发布到哪里的主题。我真的很感激任何帮助/输入。Azure IoT hub简单的发布 - 订阅通信

感谢

+0

我同意@Olivier Bloch。至于包含主题,[因为IoT Hub不是通用发布 - 订阅消息代理,它只支持记录的主题名称和主题过滤器。](https://docs.microsoft.com/en-us/azure/iot -hub/IOT - 轮毂MQTT支持#使用最MQTT - 协议 - 直接地) –

回答

0

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

对于设备端(树莓派),您可以使用设备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:物联网中心事件中心兼容名(什么乱七八糟的:-S),你可以从Azure的门户网站找到它(端点 - 内置端点 - 活动)
  • ConsumerGroups:你可以找到它从Azure的门户,$Default默认
  • 的partitionid:分区ID,您可以在使用AMQP连接到活动中心得到它,这是一个数字,后容易从0

开始如果你不想直接调用AMQP,您可以简单地在Ub上使用Event Hub SDK通过物联网集线器连接字符串(未与事件集线器兼容的端点或与事件集线器兼容的名称,Event Hub SDK将为您执行此操作)找到VM。

2

Azure的物联网设备的SDK旨在建立一个将连接并与Azure的物联网中心服务,住在Azure云通信设备的应用。

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

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

现在,如果您想利用物联网云来管理设备,轻松实现安全性并对其进行身份验证,请以高吞吐量将遥测数据上传到云,并利用云中的高级分析服务(大数据,机器学习,. ..),那么Azure IoT Hub就是为你准备的。