ソースを参照

优化子设备消息

zhouhao 5 年 前
コミット
5286ff1c6c

+ 5 - 1
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/message/DeviceMessageConnector.java

@@ -116,8 +116,12 @@ public class DeviceMessageConnector
                         topic = "/device/" + deviceMessage.getDeviceId() + "/online";
                     } else if (message instanceof DeviceOfflineMessage) {   //设备离线
                         topic = "/device/" + deviceMessage.getDeviceId() + "/offline";
+                    } else if (message instanceof ChildDeviceMessage) { //子设备消息
+                        topic = "/device/" + deviceMessage.getDeviceId() + "/message/children";
+                        return onMessage(((ChildDeviceMessage) message).getChildDeviceMessage())
+                            .thenReturn(topic);
                     } else if (message instanceof ChildDeviceMessageReply) { //子设备消息
-                        topic = "/device/" + deviceMessage.getDeviceId() + "/message/child/reply";
+                        topic = "/device/" + deviceMessage.getDeviceId() + "/message/children/reply";
                         return onMessage(((ChildDeviceMessageReply) message).getChildDeviceMessage())
                             .thenReturn(topic);
                     } else if (message instanceof ReadPropertyMessage) { //读取属性

BIN
simulator/demo-protocol-1.0.jar


+ 70 - 0
simulator/scripts/demo-children-device.js

@@ -0,0 +1,70 @@
+/**
+ * 子设备消息模拟
+ */
+var _logger = logger;
+
+//事件类型
+var events = {
+    reportProperty: function (index, session) {
+        var deviceId = "child-device-1";
+        var topic = "/children/report-property";
+        var json = JSON.stringify({
+            "deviceId": deviceId,
+            "success": true,
+            "timestamp": new Date().getTime(),
+            properties: {"temperature": java.util.concurrent.ThreadLocalRandom.current().nextDouble(20, 40)},
+        });
+        session.sendMessage(topic, json)
+    },
+    fireAlarm: function (index, session) {
+        var deviceId = "child-device-1";
+        var topic = "/children/fire_alarm";
+        var json = JSON.stringify({
+            "deviceId": deviceId, // 设备编号 "pid": "TBS-110", // 设备编号
+            "a_name": "商务大厦", // 区域名称 "bid": 2, // 建筑 ID
+            "b_name": "C2 栋", // 建筑名称
+            "l_name": "12-05-201", // 位置名称
+            "timestamp": new Date().getTime() // 消息时间
+        });
+
+        session.sendMessage(topic, json)
+    }
+};
+
+//事件上报
+simulator.onEvent(function (index, session) {
+    //上报属性
+    events.reportProperty(index, session);
+
+    //上报火警
+    events.fireAlarm(index, session);
+});
+
+simulator.bindHandler("/children/read-property", function (message, session) {
+    _logger.info("读取子设备属性:[{}]", message);
+    session.sendMessage("/read-property-reply", JSON.stringify({
+        messageId: message.messageId,
+        deviceId: message.deviceId,
+        timestamp: new Date().getTime(),
+        properties: {"temperature": java.util.concurrent.ThreadLocalRandom.current().nextDouble(20, 40)},
+        success: true
+    }));
+});
+
+
+simulator.onConnect(function (session) {
+    //模拟子设备上线
+    session.sendMessage("/children/device_online_status", JSON.stringify({
+        deviceId: "child-device-1",
+        timestamp: new Date().getTime(),
+        status: "1",
+        success: true
+    }));
+});
+
+simulator.onAuth(function (index, auth) {
+    //使用网关设备id 连接平台
+    auth.setClientId("gateway-1" );
+    auth.setUsername("admin");
+    auth.setPassword("admin");
+});