2017-03-17 72 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就是爲你準備的。