Azure IoT中心。云到设备的消息(MQTT,自定义主题)
我有一个Azure IoT中心。在这里,我创建了一个自定义设备。 该设备已成功与Azure IoT中心连接。 我还可以从此设备(设备到-cloud)接收数据。
但是我也想向该设备发送消息。
此设备使用“ MQTT协议”。我无法在此设备上更改订阅主题和发布主题,因此我必须能够在Azure(功能应用程序)中设置此“ customtopics”。
为此,我创建了一个功能应用程序(IoT中心(事件中心)),但是我不知道如何在此处实现“发布和/或订阅主题”。所有示例均与“消息/事件”有关。
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);
}
答案 0 :(得分:0)
Azure物联网中心不是通用的MQTT代理。有面向设备端的预定义主题,更多详细信息,here。
通过基于AMQP协议的面向服务的端点向设备发送C2D消息。您应该使用Microsoft Azure IoT Service Client 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/#