给老水表装个眼睛:不到 10 欧的 ESP32,把机械读数变成 MQTT 数据

第 128 期边缘 AIESP32非商用许可

先给判断:如果你家的水表、电表、燃气表还是那种要人工抄的机械表,AI-on-the-edge-device 是开源圈里目前最成熟的一条「不换表也能让读数进 Home Assistant」的路子——一块 ESP32-CAM 加一张 SD 卡,本地跑 TensorFlow Lite,识别结果直接走 MQTT,全程不出家门。但有两件事必须先接受:它在 2025 年 1 月换了一份许可协议,白纸黑字写着私人非商业免费、商用要另签;而且它本质上是要你自己买板子、打外壳、调对焦的硬件项目,不是装个 App 就完事。

痛点其实很日常:你想知道这个月哪天用水突然翻倍、想知道出门这几天有没有漏水、想给家里的能耗做个长期曲线,但表盘在楼道的水表箱里,读数只有抄表员上门那一刻才存在。换成智能表?要报装、要停水停电、要走物业流程,很多房子根本批不下来。于是一个折中思路就有了——表不动,只给它加一双眼睛。


一、它到底是做什么的

项目叫 jomjol/AI-on-the-edge-device,是一套跑在 ESP32 上的 C++ 固件。README 开头那句话把它概括得很准,原文是:

Easy to use device for connecting "old" measuring units (water, power, gas, ...) to the digital world

它的工作流也很朴素,README 原文这样描述:设备按设定的间隔给表盘拍一张照,从图像里裁出若干感兴趣区域(ROI),再把这些小图送进人工智能模型,最后得到表盘的数字读数。拿到读数之后有三条出路:发给 MQTT broker、写进 InfluxDB、或者通过 REST API 对外提供。

值得注意的是「边缘」这两个字不是噱头:拍照、对齐、裁 ROI、跑 TFLite 模型,全过程都在那块几厘米见方的 ESP32 上完成,不需要联网、不需要调云 API、没有月费,表盘照片也永远不会离开你家。

README 列出的能力清单大致是这些:

  • TFLite 集成,并且带一层易用封装,不用自己从零接 TensorFlow Lite for Microcontrollers;
  • 图像内处理:特征检测、对齐、ROI 裁剪,都在设备端完成;
  • 体积与成本极低,README 自述整机约 3 x 4.5 x 2 cm³,不到 10 欧;
  • 自带摄像头和补光灯,应对表盘照明不足;
  • 网页管理界面,配置与查看全在浏览器里;
  • 支持 OTA,之后升级固件不用再插线;
  • 完整接入 Home Assistant,同时支持 InfluxDB 1 和 2、MQTT、REST API。

二、怎么用:先刷一次固件,之后全在网页里

硬件部分需要自备:一块带摄像头且被支持的 ESP32 开发板(具体型号要查官方文档的 Hardware Compatibility 页面),加一张 microSD 卡。外壳要自己解决——README 直接给了水表、电表、燃气表、纯 ESP32-CAM 外壳以及顶盖天线架的Thingiverse 与 Printables 链接,也就是说3D 打印外壳是这个项目的标准动作,不是可选项

烧录固件这一步,README 的原话是:

Initially, you will have to flash the ESP32 via a USB connection.
Later updates are possible directly over the air (OTA using Wi-Fi).

它给了三条路径,第一条是官方推荐:

方式README 原文适用
Web Installer and Consolea browser-based tool to flash the ESP32 and extract the log over USB推荐,浏览器里点几下即可
Flash Tool from Espressif乐鑫官方图形化烧录工具习惯官方工具链的
ESPtool (command-line tool)命令行烧录需要脚本化/批量刷机的

SD 卡这块有个容易踩的细节。README 说固件装好之后 SD 卡可以自动配置,但前提是原话:

the SD card must be FAT formatted (which is the default on a new SD card)

也就是说新卡直接用没问题,但如果你手边是一张被格式化成 exFAT 或 NTFS 的旧卡,就得先重新格式化成 FAT。之后的工作流基本都在网页界面里完成:设一张参考图,在参考图上框出每个数字位的 ROI,调补光,配 MQTT 或 InfluxDB 的地址,然后等它按间隔出数。

需要说明:本文未做实机安装验证,以上步骤均为 README 原文转述,实际操作请以官方文档为准。


三、优点:省钱、不动表、数据在自己手里

  • 完全本地:不上云、不调 API、没有订阅费,表盘照片不出家门,隐私面很小;
  • 不动计量装置:只是在表盘外面加一个摄像头,不涉及拆表、改管道、动封印,这是它能落地的前提;
  • 生态接得顺:Home Assistant 一等公民,同时给 MQTT、InfluxDB 1/2 和 REST API 四条出口,数据进 Grafana 做长期曲线非常自然;
  • 成本极低:一块 ESP32-CAM 加一张 SD 卡,README 自述整机成本不到 10 欧;
  • 后续维护轻:首次 USB 刷机之后就可以走 OTA,不用每次爬到水表箱边上插线;
  • 社区配件现成:外壳模型、改造方案、排障经验都能在社区里找到现成的。

四、缺点:许可证这条最硬,其次是硬件门槛

先说最不能绕开的一条。这个仓库根目录放的不是常见的 LICENSE,而是英式拼写的 Licence.md,标题是 Dual Use License for AI-on-the-Edge Device,版本 1.0,日期 2025 年 1 月 5 日。核心条款如下:

  • §1.1 私人使用:允许为私人、非商业目的免费使用、修改和分发;
  • §1.2 商业使用:任何商业场景——包括销售、出租、作为服务提供、或集成进商业产品——都需要另行取得商业许可;
  • §2 衍生版本义务:修改版必须保留原许可与出处链接,并明确标注这是修改版,不得让人以为它出自原作者;
  • §4 贡献条款:你贡献的代码和功能,可能被用于商业版本,且不向你支付报酬。这一条对想贡献代码的人尤其要看清楚;
  • §5.2 使用禁区:由于图像处理依赖神经网络,结果可能因训练数据而出现错误或意外输出,因此明令不得用于安全相关系统或对可靠性要求高的系统。
GitHub 的接口把这个仓库的许可识别为 Other / NOASSERTION,也就是识别不出任何标准开源协议。所以别下意识当它是 MIT 或 Apache:自用没问题,拿去做产品、接单、做成服务,都要先联系作者签商业许可。

剩下的坑,基本都来自「它是个硬件项目」这件事本身:

  • 不是装软件,是做东西:要买对型号的板子、要打印或自制外壳、要调镜头对焦和补光、要在参考图上一个一个框 ROI。有人专门为这件事重做了一个可调 X/Z 轴、带对焦工具和柔光罩的外壳(#4056),足见这一步有多劝退;
  • 配置体验不佳:#3898 和 #3943 说的是同一件事——你在改配置的时候,识别流程并不会暂停,于是不断弹出对齐错误,配置做不下去,用户希望能暂停一轮识别;
  • 性能天花板真实存在:#2847 有用户反馈刚重启时网页界面要十分钟才渲染出来,建议把计算甩给外部服务器,作者把这个请求明确标记为不在项目范围内;
  • 稳定性有雷:#4043 是一个开放的 bug,用户升级后每次重启都必须断电才能恢复,日志里是摄像头初始化失败;同一份日志里还能看到网页界面版本与固件版本不匹配的告警,以及读数出现负速率报错;
  • 长期运行的损耗:#3732 有用户反馈设备 7×24 不停拍照,用了约一年半就换了一块板,他提议加夜间模式和度假模式来降低拍摄频率,这个请求至今还开着;
  • 有些表型不支持:#1936 针对的是那种会在多个显示模式之间自动轮换的数码表,从 2023 年提出到现在仍在讨论;
  • 不是官方计量依据:许可 §5.2 已经写明不能用于高可靠性场景,读数可以拿来看趋势和报警,别拿去当结算凭证。

五、最终效果:从月度账单变成分钟级数据

装上并且调稳之后,你会得到的是一条连续的数据流:每几分钟一个读数点,直接落进 Home Assistant 或者 InfluxDB。这样一来,漏水能在当天而不是下个月被发现,出门忘关水龙头可以设自动化报警,长期曲线能看出季节变化和异常尖峰。这是「换智能表」之外的另一条路,成本差了两个数量级。

谁适合:

  • 家里还是机械表,且不方便或不愿意换表的人;
  • 已经在玩 Home Assistant / MQTT / Grafana,缺的只是数据源的人;
  • 愿意折腾硬件、有 3D 打印机或能找到打印服务的人;
  • 纯个人自用,不涉及任何商业场景的人。

谁不适合:

  • 想拿它做产品、接项目、做成收费服务的人——许可不允许;
  • 想要开箱即用、不想动烙铁和打印机的人;
  • 表盘是那种轮换显示多屏的数码表;
  • 指望读数作为正式计量或结算依据的场景——许可里明令禁止。
三个最容易踩的坑:第一,别默认它是自由开源许可,商用前先把 Licence.md 读完;第二,摄像头初始化失败先怀疑供电和排线,#4043 那类问题不少人最后是靠断电重启绕过去的;第三,外壳和对焦是最大的时间黑洞,先把壳打好、光调匀,再去纠结模型准不准。

下期预告:同样是「把物理世界数字化」这条线,下一篇做自建环境监测与能耗统计方案的横向对比,讲清传感器选型、数据落地方式和许可证差异。

项目:github.com/jomjol/AI-on-the-edge-device(C++)· 许可证:Dual Use License v1.0(私人非商业免费,商用需另行授权;GitHub 接口识别为 Other / NOASSERTION)· 资料来源:仓库主页、raw README(main 分支)、Licence.md、开放问题列表 · 抓取时间:2026-09-16 · 本文未安装、未实机验证,安装步骤逐字取自 README,结论请以实际环境为准。