AlarmBarClient.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. var option = {
  2. //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档
  3. clientId: 'mqttjs_' + (Math.random() * 1000000).toString(),
  4. timeout: 5000,
  5. useSSL: false
  6. }
  7. var href = window.location.href;
  8. var path = window.location.pathname;
  9. let alarmBasicUrl = href.slice(0, href.indexOf(path));
  10. //"ws://localhost:8384/mqtt"
  11. let alarmMqttUrl = "ws:" + alarmBasicUrl.slice(alarmBasicUrl.indexOf("//")) + "/mqtt";
  12. var alarmMqttClient = mqtt.connect(alarmMqttUrl, option);
  13. alarmMqttClient.on('connect', function () {
  14. console.log("alarm bar connected to mqtt server successfully");
  15. //alarmMqttClient.subscribe('/sys/+/+/thing/event/OnAlarm/+', function(err) {
  16. alarmMqttClient.subscribe('/+/+/thing/event/OnAlarm/+', function(err) {
  17. if (err) {
  18. console.log("subscribe OnAlarm event failed, error info:"+err);
  19. }
  20. });
  21. alarmMqttClient.subscribe('/+/+/thing/event/OnGenericAlarm/+', function (err) {
  22. if (err) {
  23. console.log("failed to subsecribe OnGenericAlarm event");
  24. }
  25. });
  26. });
  27. alarmMqttClient.on('message', function (topic, message) {
  28. var reg = RegExp(/OnAlarm/);
  29. if (topic.toString().match(reg)) {
  30. ProcessAlarmInformations(JSON.parse(message.toString()));
  31. } else if (topic.toString().match(RegExp(/OnGenericAlarm/))) {
  32. //console.log("OnGenericAlarm Received");
  33. ProcessGenericAlarm(JSON.parse(message.toString()));
  34. }
  35. });
  36. function ProcessGenericAlarm(message){
  37. if (message === null) {
  38. console.log("Invalid generic alarm message received");
  39. return;
  40. }
  41. if (Array.isArray(message)) {
  42. message.forEach(function (alarm) {
  43. var temp = {
  44. "Key": alarm.Title + alarm.Category + alarm.Severity, "Description": alarm.Title, "OccurTime": null, "Module": alarm.Category, "Severity": alarm.Severity, "Action": alarm.Action,
  45. "Acked": false
  46. };
  47. AddAlarmInfomation(JSON.stringify(temp));
  48. });
  49. } else {
  50. var temp = {
  51. "Key": message.Title + message.Category + message.Severity, "Description": message.Title, "OccurTime": null, "Module": message.Category, "Severity": message.Severity, "Action": message.Action,
  52. "Acked": false
  53. };
  54. AddAlarmInfomation(JSON.stringify(temp));
  55. }
  56. }
  57. function ProcessAlarmInformations(message) {
  58. if (message == null || message.Alarms == null || !Array.isArray(message.Alarms)) {
  59. console.log("Invalid alarm message received");
  60. return;
  61. }
  62. message.Alarms.forEach(function(alarm) {
  63. var temp = {
  64. "Key": alarm.TankNumber + alarm.Type, "Description": alarm.Description, "OccurTime": alarm.CreatedTimeStamp, "Module": "ATG", "Severity": alarm.Priority, "Action": null,
  65. "Acked":false
  66. };
  67. AddAlarmInfomation(JSON.stringify(temp));
  68. });
  69. }
  70. //message is a json string
  71. function AddAlarmInfomation(message) {
  72. $.ajax({
  73. url: "/AlarmBar/AddInformation",
  74. contentType: 'application/json',
  75. data: message,
  76. type: 'post',
  77. success: function (res) {
  78. //console.log("Alarm information added successfully");
  79. },
  80. error: function (msg) {
  81. console.log(msg);
  82. }
  83. });
  84. }
  85. //the key should be the same as it used when added into alarm bar
  86. function RemoveAlarmInfomationByKey(key) {
  87. $.ajax({
  88. url: "/AlarmBar/RemoveInformation?key="+key,
  89. contentType: 'application/json',
  90. //data: message,
  91. type: 'post',
  92. success: function (res) {
  93. //console.log("Alarm information removed successfully, the key is:"+key);
  94. },
  95. error: function (msg) {
  96. console.log(msg);
  97. }
  98. });
  99. }