4 个版本
0.2.1 | 2023 年 12 月 25 日 |
---|---|
0.2.0 | 2023 年 10 月 22 日 |
0.1.1 | 2023 年 6 月 27 日 |
0.1.0 | 2023 年 6 月 27 日 |
#4 in #soc
每月 22 次下载
50KB
987 行
充电状态控制
此软件包积极控制最小充电状态(电池水平)以适应减载并减少电池的不必要循环。它集成了EskomSePush API,以获取南非减载的实时信息。
目前仅支持 Sunsynk 单相逆变器(Deye 逆变器也支持,因为它们在底层是同一东西)。
编译
- 安装 Rust,例如使用这些说明。
- 运行
cargo install socit
来安装二进制文件。或者,检出仓库并运行cargo build --release
。这将编译二进制文件到target/release/socit
。
如果您想交叉编译
- 安装并设置cross,例如使用这些说明。
- 运行
cross build --release --target=armv7-unknown-linux-gnueabihf
(替换为目标架构)。 - 在
target/<arch>/release/target
中找到二进制文件。
我发现,在 Raspberry Pi(1B 型号)上运行 arm-unknown-linux-gnueabi 构建会产生错误的结果。使用 arm-unknown-linux-gnueabihf(注意最后两个字符,表示硬浮点)可以给出正确的结果,并且速度也更快。
配置
配置存储在 TOML 文件中。仓库中有一个示例,您可以复制并编辑它以提供您的配置。它包含了关于可用设置的详细说明。
执行
运行二进制文件(socit
)并将配置文件作为唯一的命令行参数传递。它使用 env_logger crate 进行日志记录,因此您可以通过(例如)设置环境变量 RUST_LOG=info
来启用日志记录。
时间同步
您应该确保运行socit的系统其时区设置正确,并且时钟与NTP等同步。Socit会定期更新逆变器的时钟以匹配主机时钟(因此,即使没有官方的USB闪存盘,逆变器时钟也能保持同步)。
算法
周期性地(撰写本文时,每分钟一次)预测在未来24小时内,假设没有电网输入,电荷状态可能会如何变化。在限电期间,它使用悲观建模(max_discharge_power
)并且假设没有太阳能光伏,而在其他时间内,它使用乐观假设(min_discharge_power
)并假设没有云来估计太阳能光伏。然后,它确定系统现在应具有的最小电荷状态,以避免在未来(如果可能)低于minimum_soc
。
计算了三个SoC级别。当高于target_soc_high
时,不需要电网电力。在target_soc_low
和target_soc_high
之间,电网电力用于负载,但电池不改变,而当低于target_soc_low
时,电池也会充电。最后,值alarm_soc
没有内部影响,但在数据库中存储,可由外部警报工具使用:如果实际SoC低于alarm_soc
,则存在低于minimum_soc
的风险。
变更日志
0.2.1
- 将鲁棒的Modbus访问重构为单独的crate(modbus-robust)。
0.2.0
- 添加
alarm_soc
- 使启动鲁棒,如果Modbus连接无法立即建立,socit将继续运行并重复尝试。
0.1.1
修复示例配置文档,指出如果需要,将重新启动mbusd连接。
0.1.0
首次发布。
许可证
此程序是自由软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款和条件下重新分配和/或修改它,许可证版本为3,或者(根据您的选择)许可证的任何后续版本。
此程序分发时,希望它是有用的,但没有提供任何保证;甚至没有对适销性或特定目的适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/。
依赖关系
~17–35MB
~518K SLoC