delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

23 Feb 2021

HP LaserJet P2055DN 的耗材数据采集

自从娃开始在家上课以来,因为每天都需要打印上课需要的资料,因此对于打印纸、硒鼓的使用显著增加了。 与打印纸不同,硒鼓的使用量不太容易直观地看出来,加上这部打印机是2009年10月26日购买的, 其耗材也越来越贵,因此能够有效地预测其耗材的预计什么时候会用完对于采购就很有参考意义了。

查了一下资料,没有找到 HP LaserJet P2055DN 的 SNMP 中导出硒鼓数据的 OID(用 snmpwalk 看了一下, 它确实暴露了一些墨盒的数据)。不过,由于这个打印机自带了一个 Web 服务器,并且在 /hp/device/supply_status.htm 页面提供了我最关心的估算剩余面数(Approximate Pages Remaining)和实际打印面数(Pages Printed With This Supply), 因此直接梭一把脚本把这个页面强行parse就好了。

数据呈现方面,我是个懒人,所以用了 D3 这个库,这样只要生成一个 CSV 然后让D3去画图就可以了。 具体来说是这样的:

#!/bin/sh

set -e

fetch -qo /tmp/supply.htm http://p2055dn.infra/hp/device/supply_status.htm
PAGES_REMAINING=$(grep -hA1 "Approximate Pages Remaining:" /tmp/supply.htm | tail -n 1 | cut -f2 -d\> | cut -f1 -d\<)
PAGES_PRINTED=$(grep -hA1 "Pages Printed With This Supply:" /tmp/supply.htm | tail -n 1 | cut -f2 -d\> | cut -f1 -d\<)
DATE_NOW=$(date -u "+%Y-%m-%d %H:%M:%S")

echo "${DATE_NOW},${PAGES_REMAINING},${PAGES_PRINTED}" >> pages.csv

这个脚本每天晚上运行一次来采集数据,并追加到 pages.csv。

从数据来看,目前的耗材可以坚持到今年9月初,我目前使用的 05X 墨盒按照此消耗的速度也就能用个一年半左右。