簡體   English   中英

將Azure功能連接到Iot Hub雲到設備反饋終結點

[英]Connect Azure Function to Iot Hub cloud to device feedback endpoint

是否可以通過某種方式將Azure功能連接到Iot Hub雲到設備反饋終結點? 看來此終結點與Azure事件中心不兼容。

寫自定義事件觸發器?

我使用C#Azure函數。

是的,您可以為IoT中心創建自定義功能。 每當IoT中心為事件中心兼容的端點傳遞新消息時,便會運行此功能。 您可以按照以下步驟操作:

  1. 使用IoT中心(事件中心)模板創建自定義功能。 在此處輸入圖片說明
  2. 創建一個名為project.json的json文件,其內容如下:

     { "frameworks": { "net46":{ "dependencies": { "Microsoft.Azure.Devices": "1.4.1" } } } } 
  3. 上載project.json文件,該文件用於引用Microsoft.Azure.Devices的程序集。您可以查看此文檔以獲取更多信息。 在此處輸入圖片說明

  4. 將IoT集線器連接字符串添加到功能應用程序設置中。 在此處輸入圖片說明

  5. 將run.csx修改為以下代碼:

     #r "Microsoft.ServiceBus" using System.Configuration; using System.Text; using System.Net; using Microsoft.Azure.Devices; using Microsoft.ServiceBus.Messaging; using Newtonsoft.Json; static Microsoft.Azure.Devices.ServiceClient client = ServiceClient.CreateFromConnectionString(ConfigurationManager.AppSettings["iothubConnectionstring"]); public static async void Run(EventData myIoTHubMessage, TraceWriter log) { log.Info($"{myIoTHubMessage.SystemProperties["iothub-connection-device-id"]}"); var deviceId = myIoTHubMessage.SystemProperties["iothub-connection-device-id"].ToString(); var msg = JsonConvert.SerializeObject(new { temp = 20.5 }); var c2dmsg = new Microsoft.Azure.Devices.Message(Encoding.ASCII.GetBytes(msg)); await client.SendAsync(deviceId, c2dmsg); } 

保存並運行該功能之后,如果IoT中心發送新消息,則將觸發該功能,並且在該功能中它將發送雲到設備的消息。

當前,雲到設備反饋終結點不支持直接訂閱Azure功能。

通常的情況是,我們應在立即發送C2D消息后處理反饋。 這是由IoT中心服務SDK通過ServiceClient.GetFeedbackReceiver()實現的。 有關處理C2D消息反饋的更多詳細信息,請參閱接收傳遞反饋

並且,如果您還想處理來自Azure函數的這些反饋,則可以使用HTTP請求在其中發送C2D消息的方式從ServiceClient轉發它。 然后,您可以使用Http觸發器創建一個Azure函數來接收它。

如果您對Azure IoT中心有任何想法和反饋,可以從此處提交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM