|
|
此文章由 dootbear 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dootbear 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这里的“偏低”是指:在我家这种 AC-coupled / 第三方太阳能 系统里,Modbus 39604/39603 读出来的数值比 FoxCloud Analysis 页面里的 PV Production / Production 明显小。
例如我家当晚的数据:
原来 Modbus 39604/39603 算出来:38.30 kWh
FoxCloud Analysis 页面显示:57.70 kWh
差了约:19.40 kWh
Modbus 39604 是什么
准确说不是单独 39604,而是一组 32-bit 寄存器:
39604 / 39603
名称:solar_energy_today
显示名:Solar Generation Today
单位:kWh
比例:0.01
也就是说,代码读 39604/39603 后乘以 0.01,得到“今日太阳能发电量”。
这个名字来自 FoxESS Modbus 社区寄存器表,例如 foxess_modbus 项目和 H3 register wiki。
原来的算法:
以前今天的 PV produced 是这样算的:
solarProductionKwh = readUInt([39604, 39603]) * 0.01
returnToGridKwh = readUInt([39616, 39615]) * 0.01
selfConsumptionKwh = max(solarProductionKwh - returnToGridKwh, 0)
也就是:
PV produced = Modbus solar_energy_today
Self-consumption = PV produced - Return to grid
问题是,我家系统里 solar_energy_today 只显示 38.30 kWh,但 FoxCloud Analysis 的 Production 是 57.70 kWh。
现在的算法
现在优先按 FoxCloud Analysis 的口径算:
PV produced = Self-consumption + Return to grid
其中实时 Self-consumption 用 5 分钟功率曲线估算:
Self-consumption =
Home usage
+ Battery charge
- Battery discharge
- Grid consumption
所以现在逻辑大概是:
Return to grid = feedinPower 曲线积分
Self-consumption = max(Home + Battery charge - Battery discharge - Grid import, 0)
PV produced = Self-consumption + Return to grid
如果 FoxCloud 5 分钟历史曲线拿不到,才 fallback 到本地 Modbus/live samples;最后才 fallback 到 39604/39603 solar_energy_today。
所以更准确的说明应该写成:
For FoxESS AC-coupled or third-party solar systems, Modbus solar_energy_today
(39604/39603) may not match FoxCloud Analysis Production.
The dashboard now prioritises the FoxCloud Analysis-style formula:
PV produced = Self-consumption + Return to grid.
|
|