Azure Iot Hub 到 Esp-32(运行 猫鼬 OS)
Azure Iot Hub To Esp-32 (Running Mongoose OS)
我已经尝试了几个小时来寻找一种方法来从 Azure IoT Hub 在我的 esp 运行 Mongoose OS 上接收消息,我的目标是触发一些代码(或函数)来自 Azure IoT 中心(使用 Functions 应用程序,但我稍后会弄清楚)。
如何连接这些?
我正在考虑使用 MQTT,但我找不到有关如何执行此操作的任何文档。
非常感谢!
要通过 IoT 中心从云端向设备发送消息,您不使用 MQTT 协议。相反,您(通常)使用 IoT Hub Service SDK。有关如何在 C# 中执行此操作的示例,请参见此处:
https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-c2d#send-a-cloud-to-device-message
还有其他语言的 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);
我已经尝试了几个小时来寻找一种方法来从 Azure IoT Hub 在我的 esp 运行 Mongoose OS 上接收消息,我的目标是触发一些代码(或函数)来自 Azure IoT 中心(使用 Functions 应用程序,但我稍后会弄清楚)。
如何连接这些?
我正在考虑使用 MQTT,但我找不到有关如何执行此操作的任何文档。 非常感谢!
要通过 IoT 中心从云端向设备发送消息,您不使用 MQTT 协议。相反,您(通常)使用 IoT Hub Service SDK。有关如何在 C# 中执行此操作的示例,请参见此处: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-c2d#send-a-cloud-to-device-message
还有其他语言的 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);