





















相信很多家里还在用储水式热水器的朋友都有热水焦虑:洗澡前要提前开,洗到一半怕没水。市面上大多数传统热水器就是一个黑盒,除了一个模糊的温度表,你根本不知道剩下的热水够洗 5 分钟还是 15 分钟。
最近我拿到了德国外企 Shelly 的新款 Shelly 2PM Gen4,尝试用一种极客的方式彻底解决这个问题。
把”电量”翻译成”水量”
传统的解决办法是拆机加传感器,但这不仅破坏保修,还有漏水风险。
Shelly 方案的巧妙之处在于:利用 Gen4 芯片的本地脚本能力,构建一个虚拟传感器。
注意:Shelly 2PM Gen4 不仅能预测热水量,还支持远程开关控制和实时能耗计量。Gen4 设备更支持 Matter 协议和 Zigbee,可与 HomeKit、Google Home、Alexa 等主流智能家居平台无缝联动。
原理很简单:

安装过程非常简单:
安全提示:如果对电气操作不熟悉,建议请专业电工协助安装。
功率限制提醒:Shelly 2PM Gen4 的额定负载为 2400W(单路)/ 3840W(总路)。安装前务必核对热水器铭牌功率——部分大容量或即热式热水器功率可能高达 3000W~6000W,严禁超限使用,否则存在过热甚至火灾风险。如热水器功率超出限制,请选择更高规格的 Shelly 设备或仅用于控制回路。
我们开发了一段运行在继电器里的脚本,核心原理如下:
// 获取实时功率
let status = Shelly.getComponentStatus("switch:0");
let power = status.apower; // 单位:瓦特
// 加热时:按时间比例累加
let add_percent = (delta_s / expected_time_s) * 100;
water_percent = water_percent + add_percent;
// 保温时:模拟热散失
let drop_percent = cool_per_sec * delta_s;
water_percent = water_percent - drop_percent;
使用 Shelly 的虚拟组件(Virtual Component)存储热水量百分比,即使设备重启也不会丢失数据。
在 Shelly App 中,进入"脚本"功能模块,点击"+"创建新脚本。将我们的智能预测脚本粘贴进去,保存并运行。

脚本运行后,会自动创建一个名为"预测热水量"的虚拟组件。可以实时看到热水量百分比的变化。


运行一段时间后,App 界面会展示完整的监控信息:


通过对比热水器自带的温度表读数和我们的预测结果,验证算法的准确性。实测数据显示,预测误差控制在 ±5% 以内,完全满足日常使用需求。

在智能家居领域,我们经常讨论智能化,但很多方案只是简单的远程开关。Shelly 这个项目的意义在于软件定义硬件:
对于用户来说,Shelly 2PM Gen4 不仅仅是一个开关,它更像是一个运行在家里的微型服务器。通过开放的脚本接口,我们可以把任何传统家电进行智能化改造。
除了本文介绍的热水量预测,还能获得远程开关、能耗统计等实用功能。Gen4 设备更支持 Matter 和 Zigbee 协议,轻松融入全屋智能生态。
如果你也受够了盲猜热水温度,这种用代码解决生活痛点的方式,或许是另一种优雅的解决方案。
最后提醒:选购和安装前,请务必确认热水器功率在 Shelly 2PM Gen4 的承载范围内(单路 ≤ 2400W,总路 ≤ 3840W)。部分大功率热水器(如 3000W 以上的储水式或即热式)需要选择更高规格的设备,切勿超限使用。
微信公众号:「程序设计实验室」 专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。