Files
i2c-lcd-js/index.mjs
2026-04-03 19:02:44 +03:00

52 lines
1.1 KiB
JavaScript

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)