我已经尝试了几个小时来寻找一种方法来从 Azure IoT Hub 运行 Mongoose OS 的 esp 上接收消息,我的目标是从 Azure IoT Hub 触发一些代码(或函数)(使用 Functions 应用程序,但我稍后会弄清楚)。
我怎样才能连接这些?
我正在考虑使用 MQTT,但我找不到任何有关如何执行此操作的文档。非常感谢!
我已经尝试了几个小时来寻找一种方法来从 Azure IoT Hub 运行 Mongoose OS 的 esp 上接收消息,我的目标是从 Azure IoT Hub 触发一些代码(或函数)(使用 Functions 应用程序,但我稍后会弄清楚)。
我怎样才能连接这些?
我正在考虑使用 MQTT,但我找不到任何有关如何执行此操作的文档。非常感谢!
要通过 IoT 中心从云端向设备发送消息,请不要使用 MQTT 协议。相反,您(通常)使用 IoT 中心服务SDK。有关如何在 C# 中执行此操作的示例,请参见此处: https ://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-c2d#send-a-cloud-to-设备消息
还有其他语言的 SDK。如果您不想使用任何 SDK,也可以调用 IoT Hub 服务端的 REST API。
这也是一个示例,展示了如何在 Azure 函数中执行此操作(只是第一个 google 结果):https ://gist.github.com/jsturtevant/1d383c682d0d2c6422218bac4b7f5c8d#file-run-csx
感谢您抽出宝贵时间回复,我得到了它的工作。在 Mongoose OS 中,使用此代码订阅 IoT 中心消息:
MQTT.sub('devices/' + Cfg.get('device.id') + '/messages/devicebound/#', function(conn, topic, msg) {
print('Topic:', topic, 'message:', msg);
}, null);
在 Azure Functions 中,我使用带有以下代码的 HTTP 触发器:
var connnectionString = ConfigurationManager.AppSettings["aConnectionString"];
var serviceClient = ServiceClient.CreateFromConnectionString(connnectionString);
var commandMessage = new Message(Encoding.ASCII.GetBytes($"Message!"));
await serviceClient.SendAsync("esp32_8965FC", commandMessage);