master
parent da020ca30f
commit d1dd787ba9
1 changed files with 29 additions and 3 deletions

View File

@ -18,17 +18,22 @@ const ledRed = new Gpio(Number(process.env.GPIO_RED || 14), "out");
const ledGreen = new Gpio(Number(process.env.GPIO_GREEN || 15), "out");
const monitors: { [key: string]: { status: boolean, index: number } } = {};
const paused: { [key: string]: boolean } = {};
let paused: { [key: string]: boolean } = {};
const socket = io(`${KUMA_URL}`);
socket.on("monitorList", (items) => {
console.log("got monitor list");
paused = {};
for (const item of Object.values(items) as any[]) {
paused[item.id] = item.active == 0 || item.type == "group";
if (item.type == "group") continue;
paused[item.id] = item.active == 0;
}
console.log(Object.keys(paused));
think();
});
@ -104,7 +109,7 @@ function setStatus(status: Status, sound = true) {
function think() {
const down = Object.entries(monitors)
.filter(m => !m[1].status && !paused[m[0]]);
.filter(m => !m[1].status && paused[m[0]] === false);
if (down.length) {
if (currentStatus != "red") setStatus("red");
@ -114,3 +119,24 @@ function think() {
}
setStatus("working");
setInterval(async () => {
if (currentStatus == "green") {
ledGreen.writeSync(NO_GREEN ? 1 : 0);
await sleep(50);
ledGreen.writeSync(NO_GREEN ? 0 : 1);
}
else if (currentStatus == "red") {
for (let i = 0; i < 3; i++) {
ledRed.writeSync(0);
await sleep(50);
ledRed.writeSync(1);
await sleep(50);
}
// in case the status changed while we were flashing the LED
if (currentStatus != "red") {
setStatus(currentStatus);
}
}
}, 5000);