【问题标题】:Azure IoT Hub : Cloud to Device messaging using MQTT and SDKAzure IoT 中心:使用 MQTT 和 SDK 的云到设备消息传递
【发布时间】:2018-11-14 08:37:39
【问题描述】:

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

当像下面这样初始化 ServiceClient 时,唯一支持的 TransportType 是 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“所有协议”都支持。

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

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

【问题讨论】:

  • 您确定此功能与设备到云端的消息传递有关吗?
  • 我什么都不确定。这对我来说是新的领域。
  • 好的,本文档中的表格显示了后端应用程序的云到设备消息传递和协议 AMQP 和 AMQP-WS。这是正确的。后端通过 Azure IoT Hub(面向服务的端点)与设备进行通信,并且仅使用 AMQP 和 AMQP-WS 协议,但 Azure IoT Hub 通过连接的设备协议(例如 MQTT)与设备(面向设备的端点)进行通信, AMQP 或 Https。

标签: azure azure-iot-hub


【解决方案1】:

对于设备到云的消息传递,设备可以使用 MQTT、MQTT-WS、AMQP、AMQP-WS 或 HTTP 协议。请参阅IoT Hub device SDK key features。设备使用Microsoft Azure IoT device SDK for .NET 与 d2c 和 c2d 的 IoT 中心通信。请注意,还有适用于 Java、Node、Python 和 C 的设备 SDK。

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

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

【讨论】:

  • 谢谢!有道理!
  • 尝试使用 MQTT over Websocket 更改 SDK for ServiceClient 传输协议,但不允许这样做。试图找出任何解决方法来做同样的事情,但我想不可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2020-02-18
  • 2023-03-24
相关资源
最近更新 更多