Ping Network Devices From a List

image

change the function to this...

const chatId = 11111111; // << update this

if (!msg.ping.host) return null; //ensure host has a value

var pingMonitor = flow.get("pingMonitor") || {};//get lookup object ||or|| a new empty object
var pingPrev = pingMonitor[msg.ping.host] || {};//this ping monitor object ||or|| a new empty object
var sendTelegram = false;

//if ping is good, you get a number in payload...
if (typeof msg.payload == "number" && pingPrev.status === "bad" ) {
    pingPrev.status = "good";
    msg.payload = {};
    msg.payload.type = 'message';
    msg.payload.content = `'${msg.ping.name}' (${msg.ping.host}) is now back on line`;
    msg.payload.chatId = chatId;
    sendTelegram = true;
} else if (msg.payload === false && (pingPrev.status === "good" || !pingPrev.status)) {
    pingPrev.status = "bad";
    msg.payload = {};
    msg.payload.type = 'message';
    msg.payload.content = `Ping to '${msg.ping.name}' (${msg.ping.host}) failed`;
    msg.payload.chatId = chatId;
    sendTelegram = true;
}

//update context
pingPrev.datetime = new Date();
pingPrev.host = msg.ping.host;
pingPrev.name = msg.ping.name;
pingMonitor[msg.ping.host] = pingPrev;
flow.set("pingMonitor", pingMonitor);

if (sendTelegram) return msg;

return null;

you will also see the status in flow context viewer...

1 Like