Azure IoT 中心:使用 MQTT 和 SDK 的云到设备消息传递

Azure IoT Hub : Cloud to Device messaging using MQTT and SDK

Microsoft 有自己的 SDK 用于与 IoT 中心交互 (Microsoft.Azure.Devices) 它具有一个名为 ServiceClient 的客户端,据我所知,它是您在通过 IoT 中心将消息从后端发送到设备时应该使用的客户端。

像下面这样初始化 ServiceClient 时,唯一支持的传输类型是 Amqp 和 Amqp_websockets_only。我的设备仅支持 MQTT。我应该怎么做?

public async Task SendMessage() { var serviceClient = ServiceClient.CreateFromConnectionString("", TransportType.Amqp); var commandMessage = new Message(Encoding.ASCII.GetBytes("Cloud to device message.")); await serviceClient.SendAsync("myFirstDevice", commandMessage); }

根据c2d guidelines"all protocols"都支持。

我已经通读了 this documentation,但它只记录了设备到云端,而不是云端到设备。

查看 SDK documentation 它只列出了设备到云下关键功能的 AMQP

对于设备到云的消息传递,设备可以使用 MQTT、MQTT-WS、AMQP、AMQP-WS 或 HTTP 协议。见IoT Hub device SDK key features. A device communicates with IoT Hub for both d2c and c2d using the Microsoft Azure IoT device SDK for .NET。请注意,还有适用于 Java、Node、Python 和 C.

的设备 SDK

如果您有一个后端应用程序需要向设备发送 c2d 消息,那么该后端应用程序应使用 Azure 物联网服务 SDK 之一,例如 Microsoft Azure IoT service SDK for C# 连接到 IoT 中心并发送 c2d 消息。后端应用程序必须使用 AMQP 或 AMQP-WS。

设备连接IoT Hub使用的协议独立于后端应用连接IoT Hub使用的协议。例如,后端应用程序可以使用 AMQP 连接到 IoT 中心,以将 c2d 消息发送到使用 MQTT 连接到中心的设备。