爱意满满的作品展示区。
HiFiwu

写了个微信小程序,用 SOC 增量反推电车电池健康度

  •  
  •   HiFiwu · 3 days ago · 515 views

    背景:

    开电车两年,充电账一直记在备忘录里。高速快充、家充、公司免费桩、商场补电混在一起,月底完全对不上。试过几个记账 App ,要么太重,要么记不了电车专属的东西(电耗、电池衰减、峰谷电价占比),记到第三笔就放弃。

    于是自己写了个小程序。做的时候有三个技术问题比较有意思,记一下。

    1. 无后端 + 微信本地存储只有 10MB ,怎么存几年的充电记录

    微信小程序的 Storage 单 key 上限 1MB 、总量 10MB 。一年 100 多次充电,记录攒几年就会顶到上限。

    做法是按键分片:charge_records@2024 / @2025 / @2026,新增只重写当年那一片。每个分片接近 1MB 时在「我的」页提醒导出备份。从旧版本升级的时候第一次读数据会自动把老的 charge_records 拆到对应年份分片并清掉旧键。

    代价是没有多设备同步,数据只在那台手机上。所以导出做得比较重:CSV 文件(可以直接转发到微信聊天长期保存,需要时再导入恢复)+ 剪贴板两条通路,文件通路失败会自动降级到剪贴板。

    2. 用充电电量和 SOC 增量反推满充容量,画 SOH 曲线

    没有 OBD ,拿不到 BMS 数据,只能用充电侧的数据估算:

    满充容量 ≈ 本次充电电量 ÷ SOC 增量

    一次充电 SOC 从 30% 到 80% 用了 30 度,那满充容量大概 60 度。把多次估算画成曲线就是一条 SOH 趋势。误差不小(充电损耗、SOC 跳变都会影响),但用来看长期衰减趋势够用。

    3. 真实电耗:不信车机上那块表

    按相邻两次充电的里程差除以充电电量,算出真实的 kWh/100km 和每度电跑多少公里。和表显对比,差距有时挺明显。

    其他几个实现细节:

    • 图表是 Canvas 2D 手绘的(趋势/环形/柱状),没引图表库,顺便做了点击命中测试,点柱子能看到具体数值
    • Excel 导入用 SheetJS 的 mini 构建,250KB ,按表头名自动识别列
    • 实时油价双源拉取(主源 + 备源),本地缓存 6 小时,两个源都挂了支持手动录入兜底
    • 峰谷电价按充电时间自动标峰/平/谷,谷电时段可自定义

    技术栈就是微信小程序原生 + TypeScript ,没有云开发、没有后端、没有数据库,不登录不要手机号。

    局限也说清楚:

    • 数据只在你自己手机上,清缓存就没了,得靠导出的 CSV 备份
    • 油价来自第三方免费接口,仅供参考
    • 个人主体,没有微信认证也没有支付,搜一搜收录也基本没有

    小程序叫「电车车主小助手」,微信里搜这个名字能找到。

    想听听两件事的意见:

    1. SOH 这种用 SOC 增量反推的做法,有没有更靠谱的估法?充电损耗那部分我一直没找到好的补偿方式。
    2. 本地存储的分片方案,有没有踩过 1MB 上限的朋友,你们怎么处理的?
    HiFiwu
        1
    HiFiwu  
    OP
       3 days ago
    补一个小程序码,微信扫码可以直接打开:

    ![]( https://cdn.jsdelivr.net/gh/haifeiWu/haifeiWu@main/carAssistant-promo/miniprogram-qr.png)
    HiFiwu
        2
    HiFiwu  
    OP
       3 days ago
    小程序码( V2EX 回复区只放行 imgur 图床,重贴一次):

    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5528 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:24 · PVG 14:24 · LAX 23:24 · JFK 02:24
    ♥ Do have faith in what you're doing.