ZenovaConnect
← 返回观点笔记
2026-05-26·15 分钟

为什么能源 SaaS 不应该从零写每家逆变器适配:3 年生产经验

初次成本、长期维护、API 改版事故、决策框架——基于 Zenergy Monitor 三年生产数据。


那是个普通的周二早上。standup 5 分钟,工程组组长把白板擦了。

「我们这个月又花了 3 周接第 4 家逆变器厂商。每家平均 5–7 周。算上之前 3 家,我们今年在『接入』这一件事上已经投了 5 个工程师月。」

「我们的产品是什么?监控看板。我们这个月给监控看板新增了什么客户能感知的功能?」白板上写了一个「0」。

那天我们决定:这种做法不能再延续下去。

三年后回头看,那个决定催生了 ZenovaConnect。这篇文章是当时那个决策推理的复盘——为什么对能源 SaaS 团队来说,从零写每家逆变器厂商的适配,几乎一定是个错的选择。

初次接入的真实成本

假设你的工程师每天 8 小时,扣除会议、code review、其它琐事,一周纯写代码大约 25 小时。下面这些数字是 Zenergy Monitor 三年里跨 15 家厂商的真实经验摘录。

接一家新厂商,要经过 4 个阶段:

  • 账号申请:对接商务流程,签 NDA 或 API 协议,等凭据下发。耗时 1–6 周,但工程师实际投入约 1–3 天(等待时间不算工程量,但延误项目交付)
  • 文档消化:阅读 API 文档、理清认证流程、找清楚字段含义。1–5 天(看文档质量)
  • 字段映射:把厂商字段映射到你的统一 schema,处理单位、时区、采样频率。3–5 天
  • 错误处理与测试:rate limit、重试、超时、单元测试、上线前观察。3–5 天

加起来,单家厂商初次接入 4–8 周(工程师纯投入时间,不含等待)。

但是有规律。下面是按厂商类型的拆解:

厂商类型账号申请等待文档消化字段映射错误处理工程师合计
国内头部(华为/阳光/固德威级别)1–2 周2–4 天3–5 天3–4 天4–6 周
国内中型(锦浪/古瑞瓦特级别)1–3 周1–3 天3–5 天3 天5–7 周
国内小型2–4 周(商务流程长)1–2 天2–4 天2 天6–8 周
海外品牌(SMA / Fronius 级别)2–6 周(国际客服)2–5 天(英文文档)3–5 天4–5 天6–12 周

看清楚:国内小型厂商不见得比国内头部好接。头部厂商文档完整、字段命名规范、API 改版有 changelog;小型厂商往往文档过时,字段语义需要邮件确认,商务流程能拖一个月。

长期维护:真正的隐性成本

初次接入的成本相对可见——它是个一次性投入,你能在项目计划里看到。

真正贵的是长期维护。它不在项目计划里。它每个月、每个季度、每次厂商发版都重新发生一次。

维护成本按 4 类:

维护项频率(每厂商)单次工时年化工时/厂商
API minor version 升级每年 2–4 次2–4 天6–12 工程师日
字段语义变更追踪不定期(平均年 5–8 次)0.5–2 天4–8 工程师日
凭据 / 证书轮换每 6–12 月1–2 天2–3 工程师日
新机型告警代码扩展每新机型一次1 天3–5 工程师日
合计15–28 工程师日/年/厂商

把这个数字放到你的盘子里:接 5 家厂商,长期维护投入约 75–140 工程师日/年,相当于 0.4–0.7 个全职工程师。

这还没算事故响应。事故是另外的故事——发生时优先级压一切,通常需要 24 小时 SLA 内响应。下一节说事故。

这里要强调的是:长期维护不是「项目完成之后的事」,它是「项目永远完不成」。 每家厂商都是一条永远在维护的产品线。你接得越多,维护团队越压不动。

三个真实事件:API 改版风险

不是「会不会改」,是「什么时候改」。三年里我们经历过的几个事件,匿名化处理:

事件 1:单位悄悄变了

某头部厂商的某型号逆变器,某天起 EDay(当日发电量)从 kWh 变成 kWh × 10。无 changelog。

发现是因为有客户在产品里看自己电站日发电量,某天起数字翻 10 倍。监控看板看起来「电站爆发」,工程师上去看才发现单位变了。

后续:重发 6 个月历史数据(单位换算);客户沟通(信任修复);监控规则加单位校验(防再次发生)。

工程量:2 周 + 客户关系修复

事件 2:OAuth2 endpoint 静默迁移

某央企对接的某厂商在某次发布 v3 API 后,把旧 OAuth2 endpoint 静默 410'd。

发现是因为晚上 11 点客户告警群刷屏——所有该厂商的数据全停了。

处理:连夜申请新 endpoint 凭据,改采集管道认证逻辑,重启所有该厂商的采集任务。

工程量:8 小时停机 + 1 个工程师整夜响应。后续与厂商建立了改版预警机制(每月固定沟通)。

事件 3:海外厂商 rate limit 收紧

某海外厂商把 API rate limit 从 1000 req/min 收紧到 100 req/min。无预警。

发现是历史数据回补脚本全部 429 失败,历史数据回放卡住。

处理:重写采集策略——并发降 10 倍,增量请求改分片,加请求队列。

工程量:3 天工程师专注修复

这三个事件共同点:不是技术上特别难,但每次发生都需要立即响应。如果你的工程团队同时维护 10 个厂商,每年大约会发生 15–20 次这种「需要立即响应」的事件。这是真正的隐性成本

决策框架:什么时候应该自研,什么时候应该买

把上面的成本结构内化进决策,你应该:

自研 当:

  • 你只接 1–2 家专属厂商,且这些厂商不再扩展
  • 你的接入需求非常深(自定义协议、私有字段、特殊业务逻辑),通用接入层无法覆盖
  • 你的数据合规要求极严,任何第三方都不能参与采集(注:Self-Hosted 部署的接入层依然可以满足这个,见下一篇)

买接入层 当:

  • 你的产品需覆盖 5+ 厂商
  • 你的客户会持续提出新厂商需求
  • 你的工程师时间应该花在你自己的核心产品上(看板、AI 报告、调度优化)
  • 你需要 SLA 保障与持续维护承诺

决策表:

你的场景自研买接入层
接入 1–2 家专属厂商
接入 5+ 家国内厂商
海外品牌覆盖需求✅(海外凭据流程外包)
短期(<1 月)PoC 验证
数据完全不能出域✅ 或 Self-Hosted 接入层✅(Self-Hosted)
长期 SLA 责任明确✅(明确服务边界)

注意「数据不出域」这一行——很多团队默认这就意味着自研,但 Self-Hosted 部署的接入层是另一个选项。下一篇文章讨论 Cloud vs Self-Hosted。

一句话总结

接入工作不构成你的产品差异化,但它会消耗你最值钱的工程资源。

把它外包给一个专门做这件事有 3 年生产数据沉淀支持 Cloud 与 Self-Hosted 两种部署的团队,是大多数能源 SaaS 在第 3 个厂商之后会做的判断。

我们当时做了这个判断。三年后这套能力变成了 ZenovaConnect。