我是微软的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门户发送消息,但无法找出包含我的消息发布到的主题的位置。我真的很感激任何帮助/输入。
由于
答案 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>
。
$Default
0
开始如果您不想直接拨打AMQP,您只需在Ubuntu VM上使用带有IoT Hub连接字符串的Event Hub SDK(不是与Event Hub兼容的端点或与Event Hub兼容的名称,Event Hub SDK将为你这样做。)