首页 > 解决方案 > Azure 设备孪生 - HTTP 或 MQTT

问题描述

我正在使用适用于 C 的 Azure IoT 设备 SDK 创建与 Azure IoT 门户通信并更新其设备孪生的设备应用程序。

设备孪生是否使用HTTPMQTT协议进行通信?

我以为是MQTT。但是,当我更新设备孪生的报告属性时,我会收到 HTTP 响应状态代码。

当我在我的代码中创建设备处理程序时,我将 MQTT 指定为传输协议,这就是我感到困惑的原因。

创建设备处理程序的代码片段:

IOTHUB_CLIENT_TRANSPORT_PROVIDER iothub_transport = MQTT_Protocol;
device_handler = IoTHubDeviceClient_CreateFromDeviceAuth(user_ctx.iothub_uri, user_ctx.device_id, iothub_transport 

更新报告属性的代码片段:

char* reportedProperties = SerializeEnergyInfoToJson(&info);// my own function which returns a JSON char* created from my data.
(void)IoTHubDeviceClient_SendReportedState(device_handler, (const unsigned char*)reportedProperties, strlen(reportedProperties), ReportedStateCallback, NULL);

标签: cazuremqttazure-iot-hubazure-sdk

解决方案


通过 DeviceClient API 报告属性更新将使用您在创建 DeviceClient 时指定的相同协议。因此,在您的情况下,它将使用 MQTT。

如果您想通过直接使用 MQTT 了解更多如何在幕后工作,您可以在此处阅读: https ://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support #update-device-twins-reported-properties


推荐阅读