c - Azure 设备孪生 - HTTP 或 MQTT
问题描述
我正在使用适用于 C 的 Azure IoT 设备 SDK 创建与 Azure IoT 门户通信并更新其设备孪生的设备应用程序。
设备孪生是否使用HTTP或MQTT协议进行通信?
我以为是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);
解决方案
通过 DeviceClient API 报告属性更新将使用您在创建 DeviceClient 时指定的相同协议。因此,在您的情况下,它将使用 MQTT。
如果您想通过直接使用 MQTT 了解更多如何在幕后工作,您可以在此处阅读: https ://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support #update-device-twins-reported-properties
推荐阅读
- mongodb - 如何编写查询以获取“project_branch_config”字段中特定键的值?
- windows - 调用 windows 命令提示符并使用 find 检查字符串是否在文本文件中
- django - Django 和实例创建的时刻
- matlab - 如何从 MATLAB (Image Labeler) 生成正确的标记图像以进行图像分割
- julia - 在 Julia 1.0+ 中执行 for 循环有哪些不同的方法?
- powershell - 重定向等待用户输入的命令输出
- computational-geometry - 从边界中的一点计算可见性多边形
- sql - 分组日期之间的间隔
- node.js - 程序崩溃时如何让nodemon杀死进程?
- python - 将包含字典列表的列分隔到保留旧索引的新数据框中