给家里的服务器/树莓派装一个blinker监控程序-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2694|回复: 5

[分享] 给家里的服务器/树莓派装一个blinker监控程序

[复制链接]
发表于 2021-3-21 23:46 | 显示全部楼层 |阅读模式

QQ截图20210321234554.jpg


[md]给家里的nas装了一个状态监控程序,通过blinker查看nas状态,并进行相关控制。该程序也可以用于树莓派等带操作系统的设备。

这里用到的是blinker nodejs sdk:

源码如下:

```
import { BlinkerDevice } from '../lib/blinker';
import { ButtonWidget, TextWidget, RangeWidget, NumberWidget, RGBWidget, JoystickWidget, ChartWidget, ImageWidget } from '../lib/widget';
import * as os from 'os';
import fs from 'fs';
import * as osUtils from 'os-utils';
import { diskinfo } from '@dropb/diskinfo';

let state: any = {}
let platform = os.platform();

let device = new BlinkerDevice(/*您申请到的authkey*/);

let number1: NumberWidget = device.addWidget(new NumberWidget('cpu'));
let number2: NumberWidget = device.addWidget(new NumberWidget('mem'));


device.ready().then(() => {
   
    device.heartbeat.subscribe(message => {
        console.log('heartbeat:', message);
        number1.value(state.cpuUsage * 100).update();
        number2.value(state.memUsage * 100).update();
        device.builtinSwitch.setState('on').update();
    })

    setInterval(async () => {
        await getInfo()
        console.log('state', state);
        device.saveTsData({
            cpu: state.cpuUsage,
            mem: state.memUsage
        });
    }, 5000)


    async function getInfo() {
        if (platform == 'linux') {
            let meminfo = fs.readFileSync('/proc/meminfo', 'utf8');
            let itemArray = meminfo.split('\n');
            let memAvailable = parseInt(itemArray[2].replace(/[^0-9]/g, ""));
            let memTotle = parseInt(itemArray[0].replace(/[^0-9]/g, ""));
            let memUsage = 1 - (memAvailable / memTotle);
            addData('memAvailable', memAvailable);
            addData('memTotle', memTotle);
            addData('memUsage', memUsage);
        } else {
            addData('memAvailable', osUtils.freemem());
            addData('memTotle', osUtils.totalmem());
            addData('memUsage', osUtils.freememPercentage());
        }
        addData('cpuUsage', await getCpuUsage())
        addData('cpuFree', await getCpuFree())
        addData('cpuCount', osUtils.cpuCount())
        addData('average', [osUtils.loadavg(1), osUtils.loadavg(5), osUtils.loadavg(15)])
        await getDiskinfo()
    }
})

async function getDiskinfo() {
    let diskData = await diskinfo('./');
    addData('diskTotle', diskData.size)
    addData('diskUsed', diskData.used)
    addData('diskAvailable', diskData.avail)
}

function getCpuUsage() {
    return new Promise((reslove, reject) => {
        osUtils.cpuUsage(value => {
            reslove(value)
        })
    })
}

function getCpuFree() {
    return new Promise((reslove, reject) => {
        osUtils.cpuFree(value => {
            reslove(value)
        })
    })
}

function addData(key, value) {
    state[key] = value
}
```[/md]
发表于 2021-4-27 19:20 | 显示全部楼层
大佬,如何白嫖一个自定义图片背景,这似乎是重点,我仅需要一台设备有这个功能就行

点评

填图片的url就行了  详情 回复 发表于 2021-4-27 20:15
 楼主| 发表于 2021-4-27 20:15 | 显示全部楼层
John777 发表于 2021-4-27 19:20
大佬,如何白嫖一个自定义图片背景,这似乎是重点,我仅需要一台设备有这个功能就行 ...

填图片的url就行了
发表于 2021-4-27 22:08 | 显示全部楼层
自定义背景图片仅限专业版使用

点评

https://www.arduino.cn/thread-93866-1-1.html  详情 回复 发表于 2021-4-27 22:10
 楼主| 发表于 2021-4-27 22:10 | 显示全部楼层
发表于 2021-8-11 14:06 | 显示全部楼层
大佬,我blinker一件配网有问题可以帮我看一下吗

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 12:44 , Processed in 0.096582 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表