Azure物联网中心。云到设备消息(MQTT、自定义主题)

Azure物联网中心。云到设备消息(MQTT、自定义主题),mqtt,azure-iot-hub,Mqtt,Azure Iot Hub,Azure物联网中心。云到设备消息(MQTT,自定义主题) 我有一个Azure物联网中心。在这里,我创建了一个自定义设备。 此设备已成功连接到Azure IoT集线器。 我还可以从这个设备接收数据(设备到云) 但我也想向这个设备发送一条消息 此设备使用“MQTT协议”。我无法更改此设备中的订阅主题和发布主题,因此我必须能够在Azure(Function App)中设置此“customtopics” 为此,我创建了一个功能应用程序(IoT Hub(Event Hub)),但我不知道如何在这里实现“

Azure物联网中心。云到设备消息(MQTT,自定义主题)

我有一个Azure物联网中心。在这里,我创建了一个自定义设备。 此设备已成功连接到Azure IoT集线器。 我还可以从这个设备接收数据(设备到云)

但我也想向这个设备发送一条消息

此设备使用“MQTT协议”。我无法更改此设备中的订阅主题和发布主题,因此我必须能够在Azure(Function App)中设置此“customtopics”

为此,我创建了一个功能应用程序(IoT Hub(Event Hub)),但我不知道如何在这里实现“发布和/或订阅主题”。所有示例都是关于“消息/事件”的

run.csx

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("{\"Values\": {\"Slave 8.Channel 1.Output\": false,");
    var c2dmsg = new Microsoft.Azure.Devices.Message(Encoding.ASCII.GetBytes(msg));

    await client.SendAsync(deviceId, c2dmsg);
}
设备配置


Azure IOT中心不是通用的MQTT代理。有面向设备一侧的预定义主题,请参阅更多详细信息

通过基于AMQP协议的面向服务的端点向设备发送C2D消息。您应该使用Microsoft Azure IoT服务客户端SDK(Microsoft.Azure.Devices)中的ServiceClient代理。以下代码段显示了此部分:

// create proxy
string connectionString = ConfigurationManager.AppSettings["myIoTHub"];
var client = ServiceClient.CreateFromConnectionString(connectionString);

// send AMQP message
await client.SendAsync(deviceId, c2dmsg);
在面向设备的一侧,设备应订阅以下主题筛选器:

devices/{device_id}/messages/devicebound/#

请查看以下链接@E75以获取MQTT的自定义主题。您可以通过.@Rita.Thnx提交功能问题,因此目前无法使用Azure IoT Hub实现这一点,因为它不是通用的Hub代理。@E75是的,支持有限的主题,正如您已经发现的那样。@E75为了确认您的场景,您可以使用
设备/{device u id}/messages/devicebound/#
订阅并使用
消息/事件
成功发布消息?如果您可以让这两个主题都工作,那么您是否希望指定自己的主题,而不是只指定两个现成的主题?如果我理解正确,则必须更改设备订阅主题(在我的情况下,这是不可能的)。如果我理解正确,则必须在设备本身中更改设备订阅主题(在我的情况下,这是不可能的)。因此我无法在Azure IoT Hub中实现自定义订阅/发布主题?文档提供了使用直接MQTT协议的所有详细信息。@E75发送D2C消息的主题是
devices/{devceid}/messages/events/
,而
devices/{deviceid}/messages/devicebound/#
主题用于接收C2D消息。目前,Azure IoT Hub不支持创建自定义主题。您是否介意分享您无法在设备端更改订阅主题的原因?@FeiXue MSFT在我的例子中,我正在尝试使用使用一些特定主题的Tasmota(sonoff)开关