mqtt - Azure 物联网中心。云到设备消息(MQTT、自定义主题)
问题描述
Azure 物联网中心。云到设备消息(MQTT,自定义主题)
我有一个 Azure IoT 中心。在这里,我创建了一个自定义设备。此设备已成功连接到 Azure IoT 中心。我还可以从该设备接收数据(设备到云)。
但我也想向这个设备发送消息。
本设备使用“MQTT 协议”。我无法更改此设备中的订阅主题和发布主题,因此我必须能够在 Azure(功能应用程序)中设置此“自定义主题”。
为此,我创建了一个函数App(IoT Hub(事件中心)),但我不知道如何在这里实现“发布和/或订阅主题”。所有示例都是关于“消息/事件”的。
运行.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 Hub 不是通用 MQTT 代理。面向设备端有预定义的主题,请在此处查看更多详细信息。
向设备发送 C2D 消息是通过基于 AMQP 协议的面向服务的端点。您应该使用 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/#
推荐阅读
- ubuntu - Ubuntu 20.04 平台中 VSCode 中的 Code Runner 扩展不适用于 python 文件
- algorithm - 有效找到高密度区间的最佳数据结构
- julia - 如何解决此警告?
- tensorflow - 增加层大小,同时保持较旧的权重冻结
- google-apps-script - 如果重新提交表单,链接到表单的工作表中的数据是否可以合并到谷歌文档中?
- python - 除了具有相同错误的多个异常不起作用(或我错了):Python
- html - npm start:手动刷新浏览器以反映更改
- python - 汽车越过终点线后如何让文本弹出?
- powerbi - Fantasy Premier League API 数据 Power BI
- python - 尝试使用用户输入值从文件中获取输出,然后在 python 中打印该值