• 给热水器装上“电量显示”:用 Shelly Gen4 脚本实现零改装水量预测


    前言#

    相信很多家里还在用储水式热水器的朋友都有热水焦虑:洗澡前要提前开,洗到一半怕没水。市面上大多数传统热水器就是一个黑盒,除了一个模糊的温度表,你根本不知道剩下的热水够洗 5 分钟还是 15 分钟。

    最近我拿到了德国外企 Shelly 的新款 Shelly 2PM Gen4,尝试用一种极客的方式彻底解决这个问题。

    思路#

    把”电量”翻译成”水量”

    传统的解决办法是拆机加传感器,但这不仅破坏保修,还有漏水风险。

    Shelly 方案的巧妙之处在于:利用 Gen4 芯片的本地脚本能力,构建一个虚拟传感器。

    注意:Shelly 2PM Gen4 不仅能预测热水量,还支持远程开关控制实时能耗计量。Gen4 设备更支持 Matter 协议和 Zigbee,可与 HomeKit、Google Home、Alexa 等主流智能家居平台无缝联动。

    原理很简单:

    1. 升温模型: 脚本监测实时功率。只要功率达到阈值,就说明热水器在加热,根据物理公式计算注入的热量,实时增加水量百分比。
    2. 损耗模拟: 即使不使用,热水器也会散热。脚本会根据时间自动扣除热散失导致的百分比下降。
    3. 本地 UI: 所有的计算都在 Shelly 内部完成,并直接在手机 App 上生成一个像手机电量一样的百分比进度条。

    实现原理#

    硬件安装#

    接线图

    安装过程非常简单:

    1. 断电操作:首先关闭家庭配电箱中热水器对应的断路器
    2. 串联安装:将 Shelly 2PM Gen4 串联在热水器的火线上
    3. 接线规范
      • 火线进线(L)连接到 Shelly 的 1 脚
      • 火线出线连接到 Shelly 的 2 脚(输出至热水器)
      • 零线(N)直接连接到热水器
    4. 恢复供电:确认接线无误后,合上断路器

    安全提示:如果对电气操作不熟悉,建议请专业电工协助安装。

    功率限制提醒:Shelly 2PM Gen4 的额定负载为 2400W(单路)/ 3840W(总路)。安装前务必核对热水器铭牌功率——部分大容量或即热式热水器功率可能高达 3000W~6000W,严禁超限使用,否则存在过热甚至火灾风险。如热水器功率超出限制,请选择更高规格的 Shelly 设备或仅用于控制回路。

    智能算法#

    我们开发了一段运行在继电器里的脚本,核心原理如下:

    1. 功率监测#

    // 获取实时功率
    let status = Shelly.getComponentStatus("switch:0");
    let power = status.apower; // 单位:瓦特
    

    2. 状态判断#

    • 加热状态:当实时功率 > 额定功率 × 70% 时,判定为加热中
    • 保温状态:当功率低于阈值时,判定为保温或关机状态

    3. 热水量计算#

    // 加热时:按时间比例累加
    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;
    

    4. 状态持久化#

    使用 Shelly 的虚拟组件(Virtual Component)存储热水量百分比,即使设备重启也不会丢失数据。

    实际效果#

    创建脚本#

    在 Shelly App 中,进入"脚本"功能模块,点击"+"创建新脚本。将我们的智能预测脚本粘贴进去,保存并运行。

    创建新脚本

    运行监控#

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

    电量检测和热水量变化

    实时数据#

    脚本运行中

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

    • 设备主页:显示设备在线状态和快速控制按钮,支持远程开关热水器
    • 功率图表:实时功率曲线,清晰展示加热和保温周期
    • 能耗统计:累计用电量和运行时长,帮助你掌握热水器的真实能耗

    App 各界面展示

    更多功能展示

    验证准确性#

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

    热水器温度表

    为什么这个方案更有意义?#

    在智能家居领域,我们经常讨论智能化,但很多方案只是简单的远程开关。Shelly 这个项目的意义在于软件定义硬件

    • 非侵入式: 不需要动水路,不破坏原机。
    • 低延迟 & 隐私: 数据不上传云端,本地脚本直接算出结果,响应速度是秒级的。
    • 远程控制: 出门忘记关热水器?手机一点即可远程关闭,还能定时开关。
    • 能耗计量: 精确记录每次加热的用电量,帮你优化使用习惯、节省电费。
    • 场景联动: 可以设置——“当热水量达到 80% 时,给手机推送消息,并自动关闭洗手间排气扇”。
    • 生态兼容(Gen4): 支持 Matter 和 Zigbee 协议,可接入 Apple HomeKit、Google Home、Amazon Alexa 等主流平台,与其他智能设备无缝联动。

    小结#

    对于用户来说,Shelly 2PM Gen4 不仅仅是一个开关,它更像是一个运行在家里的微型服务器。通过开放的脚本接口,我们可以把任何传统家电进行智能化改造。

    除了本文介绍的热水量预测,还能获得远程开关能耗统计等实用功能。Gen4 设备更支持 Matter 和 Zigbee 协议,轻松融入全屋智能生态。

    如果你也受够了盲猜热水温度,这种用代码解决生活痛点的方式,或许是另一种优雅的解决方案。

    最后提醒:选购和安装前,请务必确认热水器功率在 Shelly 2PM Gen4 的承载范围内(单路 ≤ 2400W,总路 ≤ 3840W)。部分大功率热水器(如 3000W 以上的储水式或即热式)需要选择更高规格的设备,切勿超限使用。

    作者:DealiAxy

    出处:https://www.cnblogs.com/deali/p/20169618

    版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

    微信公众号:「程序设计实验室」
    新版StarBlog已经上线,地址:http://blog.deali.cn

  • 相关阅读:
    开了挂似的,直接涨薪25K,跪谢这份Java性能调优实战宝典
    使用SpaceDesk连接平板作为电脑副屏详细步骤教程
    在 Rust 中实现 TCP : 4. 完成握手
    【云原生】第二篇--容器管理工具 Docker生态架构及部署
    基于食肉植物优化的BP神经网络(分类应用) - 附代码
    Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析
    nodejs毕业设计基于Nodejs实现的心理健康咨询微信小程序
    序列查询新解
    nvidia 驱动问题
    【ROOTFS】1-构建rootfs与nfs调试
  • 原文地址:https://www.cnblogs.com/deali/p/20169618