debug improved
This commit is contained in:
5
dist/callchain.js
vendored
5
dist/callchain.js
vendored
@ -23,6 +23,7 @@ class AChainItem extends events.EventEmitter {
|
||||
this.next = next;
|
||||
}
|
||||
send(message) {
|
||||
log.info(`Calling ${this.label} with ${message}`);
|
||||
this.emit('yourturn', message);
|
||||
}
|
||||
}
|
||||
@ -36,7 +37,7 @@ class AAsyncBaseChainItem extends AChainItem {
|
||||
this.next.begin();
|
||||
}
|
||||
this.addListener('yourturn', (message) => {
|
||||
log.info(`Calling ${this.toString()}`);
|
||||
log.info(`Executing ${this.toString()}`);
|
||||
this.func(message, this.next.send);
|
||||
});
|
||||
}
|
||||
@ -51,7 +52,7 @@ class ABaseChainItem extends AChainItem {
|
||||
this.next.begin();
|
||||
}
|
||||
this.addListener('yourturn', (message) => {
|
||||
log.info(`Calling ${this.toString()}`);
|
||||
log.info(`Executing ${this.toString()}`);
|
||||
let result = this.func(message);
|
||||
this.next.send(result);
|
||||
});
|
||||
|
26
dist/log.js
vendored
26
dist/log.js
vendored
@ -2,6 +2,8 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const chalk = require("chalk");
|
||||
const moment = require("moment");
|
||||
const config = require("./config");
|
||||
const nodemailer = require("nodemailer");
|
||||
var Level;
|
||||
(function (Level) {
|
||||
Level[Level["All"] = 0] = "All";
|
||||
@ -28,6 +30,30 @@ function setLevel(value) {
|
||||
}
|
||||
}
|
||||
exports.setLevel = setLevel;
|
||||
function sendAlarmMail(message) {
|
||||
let transport = nodemailer.createTransport({
|
||||
host: config.dict.smtpHost,
|
||||
port: config.dict.smtpPort,
|
||||
secure: false,
|
||||
tls: {
|
||||
rejectUnauthorized: false
|
||||
}
|
||||
});
|
||||
let mail = {
|
||||
from: config.dict.smtpSender,
|
||||
to: config.dict.smtpReceiver,
|
||||
subject: "Alarm from Dispatcher",
|
||||
text: message
|
||||
};
|
||||
transport.sendMail(mail)
|
||||
.then((v) => {
|
||||
info(`Alarm mail sent, ${message}, ${v.response}`);
|
||||
})
|
||||
.catch((reason) => {
|
||||
error(`Failure when sending alarm mail: ${message}, ${reason}`);
|
||||
});
|
||||
}
|
||||
exports.sendAlarmMail = sendAlarmMail;
|
||||
function info(message) {
|
||||
if (level < Level.NoDebugNoInfo) {
|
||||
console.log(`${timestamp()} ${chalk.bold.cyan('[ II ]')} ${message}`);
|
||||
|
6
dist/main.js
vendored
6
dist/main.js
vendored
@ -13,8 +13,10 @@ const ESP_THERM_TOPIC = 'IoT/espThermometer2/#';
|
||||
dispatcher.register(ESP_THERM_TOPIC, 'toJson', EspThermToJson.espThermToJson);
|
||||
let missingeventdetector = new MissingEventDetector.MissingEventDetector();
|
||||
dispatcher.register(ESP_THERM_TOPIC, 'MissingEventDetector', missingeventdetector);
|
||||
let mongo = new MongoSave.MongoSave(config.dict.mongoDbUrl);
|
||||
dispatcher.register(ESP_THERM_TOPIC, 'MongoSave', mongo);
|
||||
if (!config.dict.disableDatabaseAccess) {
|
||||
let mongo = new MongoSave.MongoSave(config.dict.mongoDbUrl);
|
||||
dispatcher.register(ESP_THERM_TOPIC, 'MongoSave', mongo);
|
||||
}
|
||||
dispatcher.exec();
|
||||
log.info("Dispatcher running");
|
||||
//# sourceMappingURL=main.js.map
|
32
dist/missingeventdetector.js
vendored
32
dist/missingeventdetector.js
vendored
@ -1,10 +1,8 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const nodemailer = require("nodemailer");
|
||||
const log = require("./log");
|
||||
const CallChain = require("./callchain");
|
||||
const Processor = require("./processor");
|
||||
const config = require("./config");
|
||||
const CHECK_PERIOD = 60; // seconds
|
||||
class ClientEntry {
|
||||
}
|
||||
@ -12,40 +10,20 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
constructor() {
|
||||
super("MissingEventProcessor");
|
||||
this.clientMap = new Map();
|
||||
this.smtp = nodemailer.createTransport({
|
||||
host: config.dict.smtpHost,
|
||||
port: config.dict.smtpPort,
|
||||
secure: false,
|
||||
tls: {
|
||||
rejectUnauthorized: false
|
||||
}
|
||||
});
|
||||
this.timer = setInterval(() => {
|
||||
this.clientMap.forEach((value, key) => {
|
||||
let currentTime = new Date().getTime();
|
||||
let elapsedTime = currentTime - value.lastEvent;
|
||||
log.info(`Checking ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
log.info(`MissingEventProcessor: Checking ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
if ((value.avgDelay != 0) && (elapsedTime > (value.avgDelay * 3))) {
|
||||
let mail = {
|
||||
from: config.dict.smtpSender,
|
||||
to: config.dict.smtpReceiver,
|
||||
subject: `Missing Event Detected for ${key}`,
|
||||
text: `Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`
|
||||
};
|
||||
this.smtp.sendMail(mail)
|
||||
.then((v) => {
|
||||
log.info(`Missing event info mail sent, ${v.response}`);
|
||||
})
|
||||
.catch((reason) => {
|
||||
log.error(`Failure when sending missing event info: ${reason}`);
|
||||
});
|
||||
log.sendAlarmMail(`Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`);
|
||||
}
|
||||
});
|
||||
}, CHECK_PERIOD * 1000);
|
||||
}
|
||||
process(message) {
|
||||
let client = message.metadata.client;
|
||||
log.info(`Event for client ${client}`);
|
||||
log.info(`MissingEventProcessor: Event for client ${client}`);
|
||||
let currentTime = new Date().getTime();
|
||||
if (this.clientMap.has(client)) {
|
||||
let clientEntry = this.clientMap.get(client);
|
||||
@ -58,7 +36,7 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
clientEntry.avgDelay = clientEntry.delaySum / clientEntry.count;
|
||||
}
|
||||
this.clientMap.set(client, clientEntry);
|
||||
log.info(`Entry for ${client} updated`);
|
||||
log.info(`MissingEventProcessor: Entry for ${client} updated`);
|
||||
}
|
||||
else {
|
||||
let clientEntry = new ClientEntry();
|
||||
@ -69,7 +47,7 @@ class MissingEventProcessor extends Processor.AProcessor {
|
||||
clientEntry.delaySum = 0;
|
||||
clientEntry.avgDelay = 0;
|
||||
this.clientMap.set(client, clientEntry);
|
||||
log.info(`Entry for ${client} inserted`);
|
||||
log.info(`MissingEventProcessor: Entry for ${client} inserted`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
10
dist/mqttdispatcher.js
vendored
10
dist/mqttdispatcher.js
vendored
@ -79,22 +79,22 @@ class MqttDispatcher {
|
||||
for (let field in registeredTopicFields) {
|
||||
let regField = registeredTopicFields[field];
|
||||
let recvField = receivedTopicFields[field];
|
||||
log.info(`recv: ${recvField}, reg: ${regField}`);
|
||||
log.debug(`topicMatch: recv: ${recvField}, reg: ${regField}`);
|
||||
if (regField === "#") {
|
||||
log.info('true');
|
||||
log.debug('topicMatch: true 1');
|
||||
return true;
|
||||
}
|
||||
if (regField != recvField && regField != "+") {
|
||||
log.info('false');
|
||||
log.debug('topicMatch: false 1');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (registeredTopicFields.length == receivedTopicFields.length) {
|
||||
log.info('true');
|
||||
log.debug('topicMatch: true 2');
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
log.info('false');
|
||||
log.debug('topicMatch: false 2');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user