我正在使用Azure功能,通过IoT集线器向少数设备发送数据。我正在尝试记录整个过程,但我不确定我目前的解决方案是否足够。到目前为止,我使用消息反馈(如文档中所述)来记录设备是否收到发送消息。
我的理解是,这是绝对确认消息是否被设备正确接收?还是有另一个选项来获得确认?
aamkag611#
我建议通读"接收云到设备交付反馈"一节以更好地理解这一点。该节解释了如何设置确认反馈选项。Azure IoT Hub在正面和负面两种情况下都提供反馈。如果您使用以下代码commandMessage.Ack = DeliveryAcknowledgement.Full;将消息Ack设置为full(如本文所示),则在 * Completed * 和 * Dead letter * 两种情况下(肯定和否定结果)都将收到消息。
commandMessage.Ack = DeliveryAcknowledgement.Full;
如果您专门针对成功消息,则需要将确认设置为***肯定***。然后您收到的反馈是一个确认,证明设备已成功接收消息。希望这有帮助!
k97glaaz2#
我按照以下步骤使用Azure功能向物联网设备发送消息。其他答案请发送至@LeelaRajesh_Sayana。
创建IoT集线器并添加设备
添加设备名称并单击"Save
try { log.Loginformation($"Message sent : {message}"); } catch (Exception ex) { log.LogError($"Error sending message :{ex.Message}); }
using System; using Microsoft.Azure.Devices; using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; namespace AzureFunctionIoT { public static class SendMessageToIoTDevices { [FunctionName("SendMessageToIoTDevices")] public static void Run([TimerTrigger("0 0 0 * * *")]TimerInfo myTimer, ILogger log) { string connectionString = Environment.GetEnvironmentVariable("IoTHubConnectionString"); ServiceClient serviceClient = ServiceClient.CreateFromConnectionString(connectionString); var message = new Microsoft.Azure.Devices.Message(System.Text.Encoding.ASCII.GetBytes("Hello IoT Devices")); serviceClient.SendAsync("<DeviceId>", message).GetAwaiter().GetResult(); log.LogInformation("Message sent successfully"); } } }
Run the messages with Azure IoT Hub (.NET) Code
2条答案
按热度按时间aamkag611#
我建议通读"接收云到设备交付反馈"一节以更好地理解这一点。该节解释了如何设置确认反馈选项。Azure IoT Hub在正面和负面两种情况下都提供反馈。
如果您使用以下代码
commandMessage.Ack = DeliveryAcknowledgement.Full;
将消息Ack设置为full(如本文所示),则在 * Completed * 和 * Dead letter * 两种情况下(肯定和否定结果)都将收到消息。如果您专门针对成功消息,则需要将确认设置为***肯定***。然后您收到的反馈是一个确认,证明设备已成功接收消息。
希望这有帮助!
k97glaaz2#
我按照以下步骤使用Azure功能向物联网设备发送消息。
其他答案请发送至@LeelaRajesh_Sayana。
创建IoT集线器并添加设备
添加设备名称并单击"Save
Run the messages with Azure IoT Hub (.NET) Code