【问题标题】:Sending Cloud to Device Messages using IoT DevKit and Azure IoT Hub - Device Code使用 IoT DevKit 和 Azure IoT Hub 向设备发送云消息 - 设备代码
【发布时间】:2020-02-18 08:49:24
【问题描述】:

我需要从 IoT 中心向 DevKit 设备发送一条消息。基于https://docs.microsoft.com/en-au/azure/iot-hub/iot-hub-devguide-c2d-guidance,我想发送一个直接方法,因为我需要管理一组继电器。

我有一个 IoT DevKit 并已成功配置它,并且能够将设备发送到 IoT 中心消息,但我正在寻找一个示例以另一种方式执行此操作。我目前只能找到设置设备孪生属性的示例,而不是发送直接方法。在服务器端,我相信我会使用 Microsoft.Azure.Devices.ServiceClient 向设备发送异步消息(很高兴被纠正是不正确的)。

在我认为 (???) 的设备上,我需要使用 SetDeviceMethodCallback,但我不知道如何初始化它并接收消息。理想情况下,该示例还包括如何发送确认消息已收到并采取行动。

任何帮助都将不胜感激,即使只是让我知道我在正确的轨道上。提前致谢。

【问题讨论】:

    标签: azure-iot-hub azure-iot-sdk iot-devkit mxchip


    【解决方案1】:

    这是我之前在设备端使用 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;
    

    【讨论】:

    • 谢谢,这为我指明了正确的方向......无论是在客户端还是服务器上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2018-06-28
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2017-08-30
    • 2017-04-15
    相关资源
    最近更新 更多