import { LCD } from '@sek1ro/i2c-lcd' import si from 'systeminformation' const lcd = new LCD(1, 0x27) await lcd.open() function BtoGB(bytes) { return (bytes / 1024 ** 3).toFixed(1) } async function showSystemStats() { const [cpu, mem, disks] = await Promise.all([ si.currentLoad(), si.mem(), si.fsSize(), ]); const cpuLoad = cpu.currentLoad.toFixed(1).padStart(4, ' ') const totalMem = BtoGB(mem.total) const usedMem = BtoGB(mem.total - mem.available) let diskTotalMem = 0 let diskUsedMem = 0 for (const disk of disks) { diskTotalMem += disk.size diskUsedMem += disk.used } diskTotalMem = BtoGB(diskTotalMem) diskUsedMem = BtoGB(diskUsedMem) await lcd.send(LCD.ClearDisplay()) const hours = new Date().getHours() if (hours >= 23 || hours < 7) { lcd.backlight = false } else { lcd.backlight = true } await lcd.jump(0, 0) await lcd.sendString(`${diskUsedMem}/${diskTotalMem}GB`) await lcd.jump(0, 1) await lcd.sendString(`${usedMem}/${totalMem}GB`) await lcd.jump(11, 1) await lcd.sendString(`${cpuLoad}%`) } await showSystemStats() setInterval(showSystemStats, 1000)