我正在按照https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-monitoring-notifications-with-azure- 中所述的说明使用 Azure 逻辑应用程序创建 IoT 远程监控和通知-逻辑应用程序。遥测模拟器(Java 使用 com.microsoft.azure.sdk.iot -> iot-device-client -> 1.14.0 版本)public class SimulatedDevice { // The device connection string to authenticate the device with your IoT hub. // Using the Azure CLI: // az iot hub device-identity show-connection-string --hub-name {YourIoTHubName} // --device-id MyJavaDevice --output table private static String connString = "#ConnectionString"; private static IotHubClientProtocol protocol = IotHubClientProtocol.AMQPS; private static DeviceClient client; // Specify the telemetry to send to your IoT hub. private static class TelemetryDataPoint { public double temperature; public double humidity; public String isTrue = "true"; // Serialize object to JSON format. public String serialize() { Gson gson = new Gson(); return gson.toJson(this); } } // Print the acknowledgement received from IoT Hub for the telemetry message // sent. private static class EventCallback implements IotHubEventCallback { public void execute(IotHubStatusCode status, Object context) { System.out.println("IoT Hub responded to message with status: " + status.name()); if (context != null) { synchronized (context) { context.notify(); } } } }对于 QueryString - temperatureAlert = "true" - 一切正常。但是对于查询字符串 - $body.temperature > 30 - 那么我没有收到任何消息。
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
为了让 IoT 中心知道消息是否可以根据其正文内容进行路由,该消息必须包含描述其正文内容和编码的特定标头。特别是,消息必须具有以下两个标头才能在消息正文上路由才能工作:
“应用程序/json”的内容类型
内容编码必须匹配以下之一:
“utf-8”
“utf-16”
“utf-32”
在创建 Message 对象的语法下方添加以下两行:
msg.setContentEncoding("utf-8"); msg.setContentType("application/json");
添加回答
举报
0/150
提交
取消