4个版本 (破坏性更新)

0.4.0 2024年7月28日
0.3.0 2023年6月8日
0.2.0 2023年4月5日
0.1.0 2022年12月1日

#411 in 嵌入式开发

Download history 83/week @ 2024-07-22 90/week @ 2024-07-29

173 个月下载量
用于 drmemd

MIT 许可证

81KB
1.5K SLoC

drmem-drv-sump

此驱动程序通过自定义的非商业接口[^1]监控坑道泵的状态,并根据其行为更新一组设备。

通过TCP,使用RaspberryPi监控GPIO引脚的坑道泵状态变化,每当状态变化时,都会发送一个12字节的包。前8个字节包含大端格式的毫秒时间戳。接下来的4个字节包含新状态。

使用这些包,驱动程序可以使用时间戳计算坑道池的占空比和流入流量率。当泵关闭时,dutyin-flow 参数会更新以反映最后一个周期。

配置

驱动程序需要知道如何访问远程服务。它还需要知道如何缩放结果。使用两个驱动程序参数来指定这些信息

  • addr 是一个包含主机名、IP地址和端口号的字符串,该地址实际上是监控坑道泵的机器(在 "hostname:#""#.#.#.#:#" 格式。)
  • gpm 是一个整数,表示坑道泵的每分钟加仑容量。泵的业主手册通常会有一个表格,表明根据排放管的上升高度流量率。

设备

驱动程序创建了以下设备

基础名称 类型 单位 注释
service bool, RO 当与远程服务通信时设置为 true
state bool, RO 当泵正在运行时设置为 true
duty f64, RO % 指示最后一个周期的占空比。
in-flow f64, RO gpm 指示最后一个周期的流入流量率。
duration f64, RO min 指示上一个周期的持续时间。

注意事项

远程进程以20Hz的频率轮询泵的状态,因此时间戳将具有50毫秒的精度。不幸的是,当前的开关似乎在快速开启方面有一些滑动。根据激活继电器需要多少个60Hz周期,可能会增加30毫秒或更多的延迟。当前开关中的继电器可能也有一些延迟。最后,观察到长周期时间(> 5分钟)可能会变化10秒或更多!这可能是由于当坑缓慢填满时,浮球和连接的开关在激活时会有很大的滑动。

结论是,开关/关时间的测量可能准确到小于100毫秒。造成测量误差最大的是浮球。

历史

在v0.1.0中添加。

[^1]:远程端运行在装有NetBSD 9.0的树莓派上。源代码可以在这里找到。GPIO代码是针对NetBSD的,因此需要对Linux进行调整。

依赖关系

~7–16MB
~190K SLoC