使用 IoT DevKit 和 Azure IoT 中心将云发送到设备消息 - 设备代码
Sending Cloud to Device Messages using IoT DevKit and Azure IoT Hub - Device Code
我需要从 IoT 中心向 DevKit 设备发送消息。基于 https://docs.microsoft.com/en-au/azure/iot-hub/iot-hub-devguide-c2d-guidance 我想发送直接方法,因为我需要管理一组中继。
我有一个 IoT DevKit 并已成功配置它并且能够将设备发送到 IoT 中心消息,但我正在寻找一个示例来以其他方式执行此操作。我目前只能找到设置设备孪生属性的示例,而不是发送直接方法。在服务器端,我相信我会使用 Microsoft.Azure.Devices.ServiceClient 向设备发送 Async 消息(很高兴被纠正是不正确的)。
在我认为 (???) 的设备上,我需要使用 SetDeviceMethodCallback,但我不知道如何初始化它和接收消息。理想情况下,示例还包括如何发送消息已收到并已执行操作的确认。
即使只是让我知道我在正确的轨道上,也将不胜感激任何帮助。提前致谢。
这是我之前在设备端使用 IoT DevKit (=Mxchip) 的一些示例:
static int DeviceMethodCallback(const char *methodName, const unsigned char *payload, int size, unsigned char **response, int *response_size)
{
LogInfo("Try to invoke method %s", methodName);
const char *responseMessage = "\"Successfully invoke device method\"";
int result = 200;
if (strcmp(methodName, "start") == 0)
{
DoSomething();
}
else if (strcmp(methodName, "stop") == 0)
{
DoSomethingElse();
}
else
{
LogInfo("No method %s found", methodName);
responseMessage = "\"No method found\"";
result = 404;
}
*response_size = strlen(responseMessage) + 1;
*response = (unsigned char *)strdup(responseMessage);
return result;
}
DevKitMQTTClient_SetDeviceMethodCallback(DeviceMethodCallback);
在服务端(调用方法的地方)这里有一些 C# 示例
ServiceClient _iothubServiceClient = ServiceClient.CreateFromConnectionString(config["iothubowner_cs"]);
var result = await _iothubServiceClient.InvokeDeviceMethodAsync(deviceid, "start");
var status = result.Status;
我需要从 IoT 中心向 DevKit 设备发送消息。基于 https://docs.microsoft.com/en-au/azure/iot-hub/iot-hub-devguide-c2d-guidance 我想发送直接方法,因为我需要管理一组中继。
我有一个 IoT DevKit 并已成功配置它并且能够将设备发送到 IoT 中心消息,但我正在寻找一个示例来以其他方式执行此操作。我目前只能找到设置设备孪生属性的示例,而不是发送直接方法。在服务器端,我相信我会使用 Microsoft.Azure.Devices.ServiceClient 向设备发送 Async 消息(很高兴被纠正是不正确的)。
在我认为 (???) 的设备上,我需要使用 SetDeviceMethodCallback,但我不知道如何初始化它和接收消息。理想情况下,示例还包括如何发送消息已收到并已执行操作的确认。
即使只是让我知道我在正确的轨道上,也将不胜感激任何帮助。提前致谢。
这是我之前在设备端使用 IoT DevKit (=Mxchip) 的一些示例:
static int DeviceMethodCallback(const char *methodName, const unsigned char *payload, int size, unsigned char **response, int *response_size)
{
LogInfo("Try to invoke method %s", methodName);
const char *responseMessage = "\"Successfully invoke device method\"";
int result = 200;
if (strcmp(methodName, "start") == 0)
{
DoSomething();
}
else if (strcmp(methodName, "stop") == 0)
{
DoSomethingElse();
}
else
{
LogInfo("No method %s found", methodName);
responseMessage = "\"No method found\"";
result = 404;
}
*response_size = strlen(responseMessage) + 1;
*response = (unsigned char *)strdup(responseMessage);
return result;
}
DevKitMQTTClient_SetDeviceMethodCallback(DeviceMethodCallback);
在服务端(调用方法的地方)这里有一些 C# 示例
ServiceClient _iothubServiceClient = ServiceClient.CreateFromConnectionString(config["iothubowner_cs"]);
var result = await _iothubServiceClient.InvokeDeviceMethodAsync(deviceid, "start");
var status = result.Status;