自制硬件监测的起点
搭建家庭服务器时,很多人习惯先去找现成软件。想要机器汇报点什么,几乎总能找到自托管方案,而且大多免费、工程水平也往往比自己周末折腾出来的东西更可靠。但有些需求,现成工具就是满足不了。
![]()
对我来说,这个需求就是盯住服务器主机内部的硬件温度。最初只是想用一块 ESP32 看着 SAS 阵列的温度,但物理读数屏这种东西,一旦做出来,能玩的上限其实很高。
为什么不用浏览器标签页
这个项目的直接起因,是我在给 8TB SAS 镜像盘做初始格式化时,看到一个让人不安的温度读数。Proxmox 自带 smartmontools,理论上可以 SSH 进去反复敲 smartctl 命令,但那样太累,而且我本来就想在实验室里找地方用上一块 ESP32。
物理读数屏更符合我的使用方式。它一直开着,功耗几乎为零,扫一眼数字就能继续干活。很多人习惯把 Grafana 开着随时看,但对我来说,一块干净的实体显示屏更合适。一块 ESP32-S3 加小尺寸 OLED 成本很低,唯一需要的就是一个可用的 Wi-Fi 连接。
三十分钟做出第一版
这套东西只有两个部分,拼起来比预想快得多。Proxmox 主机负责所有需要权限的操作:用一个 Python 脚本调用 smartctl,读取连接在 LSI 卡上的两块 Seagate Exos 硬盘,从 JSON 里把当前温度抽出来,再以极小的数据包形式放到本地网络上。脚本只用标准 Python,需要 sudo,但没有做成完整的 systemd 单元。
单片机按定时器唤醒,通过 Wi-Fi 抓取那个数据包,把温度显示到屏幕上。超过我设定的阈值时,它还会做出标记。脚本读的是 smartmontools 归一化后的温度字段,而不是原始 SMART 属性,因为后者走的是 ATA 路径。我的硬盘是 SAS 接口,所以只能这么处理。
数据只向一个方向流动:ESP32 从不直接与硬盘或 HBA 通信,也没有任何访问数据池的权限。它只读取几个数值,然后送到显示屏上。
现成工具的问题
跑硬盘阵列的人,大概率会想到 Scrutiny。它确实是比我自己写的东西更完善的软件,有网页仪表盘、历史趋势,还有基于数据设定的阈值。但这类现成方案也有自己的麻烦,比如需要额外部署、维护,还要为它开放相应的访问权限。
自制方案的好处在于足够小、足够专一。它只做一件事:把两块 SAS 硬盘的温度显示在一块小屏幕上。没有多余服务,没有历史数据库,也没有需要持续更新的依赖。对于家庭服务器这种长期运行的环境,越简单反而越省心。
物理读数屏的实际价值
实体显示屏最大的优势是即时可见。不用解锁手机、不用打开浏览器、不用登录任何面板,抬头就能看到数字。对于需要持续关注硬件状态的场景,这种低摩擦的交互方式比任何仪表盘都直接。
而且它的运行成本极低。ESP32 的功耗几乎可以忽略,一块小 OLED 常亮也不会带来明显电费。相比让一台机器一直跑着 Grafana 或者频繁 SSH 进去查温度,这种方案在长期使用中反而更轻松。
自制工具的边界
这个项目能成立,前提是需求足够具体。如果只是偶尔看一眼温度,SSH 敲命令就够了;如果需要历史曲线和报警通知,Scrutiny 这类工具更合适。自制硬件读数的价值,恰恰在于它填补了一个很窄的空白:持续、低功耗、零操作的物理显示。
做这类小工具,关键是想清楚数据流和权限边界。让单片机只读一个经过处理的数值,不接触存储数据,不直接访问硬件,这样即使设备本身出问题,也不会影响服务器主体。安全边界划得越清楚,自制方案就越值得信任。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.