jetlinks-community/simulator/scripts/demo-device.js

119 lines
3.8 KiB
JavaScript
Raw Normal View History

2020-01-17 13:23:36 +00:00
/**
* 烟感设备模拟器
*/
var _logger = logger;
//设备实例id前缀
var devicePrefix = "demo-";
var eventId = Math.ceil(Math.random() * 1000);
//事件类型
var events = {
reportProperty: function (index, session) {
2020-07-31 07:51:39 +00:00
var deviceId = session.auth.clientId;
2020-01-17 13:23:36 +00:00
var topic = "/report-property";
2020-03-05 10:42:18 +00:00
var json = JSON.stringify({
2020-01-17 13:23:36 +00:00
"deviceId": deviceId,
"success": true,
2020-03-05 10:42:18 +00:00
"timestamp": new Date().getTime(),
2020-01-17 13:23:36 +00:00
properties: {"temperature": java.util.concurrent.ThreadLocalRandom.current().nextInt(20, 30)},
});
session.sendMessage(topic, json)
},
fireAlarm: function (index, session) {
2020-07-31 07:51:39 +00:00
var deviceId = session.auth.clientId;
2020-01-17 13:23:36 +00:00
var topic = "/fire_alarm/department/1/area/1/dev/" + deviceId;
2020-03-05 10:42:18 +00:00
var json = JSON.stringify({
2020-01-17 13:23:36 +00:00
"deviceId": deviceId, // 设备编号 "pid": "TBS-110", // 设备编号
"a_name": "商务大厦", // 区域名称 "bid": 2, // 建筑 ID
"b_name": "C2 栋", // 建筑名称
"l_name": "12-05-201", // 位置名称
"timestamp": new Date().getTime() // 消息时间
});
2020-03-05 10:42:18 +00:00
session.sendMessage(topic, json)
2020-01-17 13:23:36 +00:00
}
};
//事件上报
simulator.onEvent(function (index, session) {
2020-01-17 13:24:18 +00:00
//上报属性
2020-03-05 10:42:18 +00:00
events.reportProperty(index, session);
2020-01-17 13:24:18 +00:00
//上报火警
2020-03-05 10:42:18 +00:00
events.fireAlarm(index, session);
2020-01-17 13:23:36 +00:00
});
2020-08-05 02:36:29 +00:00
//读取属性
2020-01-17 13:23:36 +00:00
simulator.bindHandler("/read-property", function (message, session) {
2020-01-18 09:09:35 +00:00
_logger.info("读取属性:[{}]", message);
2020-01-17 13:23:36 +00:00
session.sendMessage("/read-property-reply", JSON.stringify({
messageId: message.messageId,
deviceId: message.deviceId,
timestamp: new Date().getTime(),
properties: {"temperature": java.util.concurrent.ThreadLocalRandom.current().nextInt(20, 30)},
success: true
}));
});
2020-08-05 02:36:29 +00:00
//读取子设备属性
2020-03-09 07:45:25 +00:00
simulator.bindHandler("/children/read-property", function (message, session) {
_logger.info("读取子设备属性:[{}]", message);
session.sendMessage("/children/read-property-reply", JSON.stringify({
messageId: message.messageId,
deviceId: message.deviceId,
timestamp: new Date().getTime(),
properties: {"temperature": java.util.concurrent.ThreadLocalRandom.current().nextInt(20, 30)},
success: true
}));
});
2020-08-05 02:36:29 +00:00
//调用功能
2020-03-05 10:42:18 +00:00
simulator.bindHandler("/invoke-function", function (message, session) {
_logger.info("调用功能:[{}]", message);
session.sendMessage("/invoke-function", JSON.stringify({
messageId: message.messageId,
deviceId: message.deviceId,
timestamp: new Date().getTime(),
output: "ok", //返回结果
success: true
}));
});
2020-08-05 02:36:29 +00:00
//修改属性
simulator.bindHandler("/write-property", function (message, session) {
var reply = com.alibaba.fastjson.JSON.toJSONString({
messageId: message.messageId,
deviceId: message.deviceId,
timestamp: new Date().getTime(),
properties: new java.util.HashMap(message.properties),
success: true
});
_logger.info("修改属性:{}\n{}", message,reply);
session.sendMessage("/write-property",reply);
});
2020-01-17 13:23:36 +00:00
simulator.onConnect(function (session) {
2020-03-26 05:14:14 +00:00
//自动绑定下级设备
// session.sendMessage("/children/register", JSON.stringify({
// deviceId: "test202278", //子设备ID
// timestamp: new Date().getTime(),
// success: true
// }));
//注销子设备
// simulator.runDelay(function () {
// session.sendMessage("/children/unregister", JSON.stringify({
// deviceId: "test202278",
// timestamp: new Date().getTime(),
// success: true
// }));
// },2000)
2020-01-17 13:23:36 +00:00
});
simulator.onAuth(function (index, auth) {
auth.setClientId(devicePrefix + index);
auth.setUsername("admin");
auth.setPassword("admin");
});