diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/message/DeviceMessageConnector.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/message/DeviceMessageConnector.java index 0bf98387..2d1dce5a 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/message/DeviceMessageConnector.java +++ b/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) { //读取属性 diff --git a/simulator/demo-protocol-1.0.jar b/simulator/demo-protocol-1.0.jar index badb06d8..7d9fdba2 100644 Binary files a/simulator/demo-protocol-1.0.jar and b/simulator/demo-protocol-1.0.jar differ diff --git a/simulator/scripts/demo-children-device.js b/simulator/scripts/demo-children-device.js new file mode 100644 index 00000000..b39d3730 --- /dev/null +++ b/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"); +}); \ No newline at end of file