shrpid是SH-RPi的电源监控和看门狗守护进程。
项目描述
Sailor Hat for Raspberry Pi: 守护进程
注意
以下描述适用于当前版本2的SH-RPi。版本2可在hatlabs.fi购买。安装脚本也支持SH-RPi的版本1,尽管以下大部分文档是针对版本2的。
简介
SH-RPi,正式名称为Raspberry Pi智能电源管理板Sailor Hat。主要功能包括
- 使用60法拉超级电容器进行电源管理,为系统断电后以受控方式关闭设备提供所谓的“最后一口气”能量。
- 峰值功率管理:相同的超级电容器电路可以为如Raspberry Pi 4B加SSD或NVMe驱动器等功率密集型设备提供峰值电流,允许这些设备通过如NMEA2000总线电源线等限流子电路供电。
- 保护电路:该板可防止车辆或船舶上常见的嘈杂的12V/24V电压。
- 电池供电的实时时钟电路,即使在无GPS或网络的情况下,设备也能保持时间。
shrpid
是 SH-RPi 的电源监控和看门狗。它与 SH-RPi 设备进行通信,提供操作的“智能”方面。支持的功能包括
- 如果输入电压低于定义的阈值,则报告停电
- 如果未恢复电力,则触发设备关机
- 超级电容电压报告
- 看门狗功能:如果 SH-RPi 在 10 秒内没有收到通信,SH-RPi 将重置设备。
- RTC 睡眠模式:板载实时时钟可以设置为在特定时间启动 Raspberry Pi。这对于需要执行计划任务(如船用电池和舱底水位监控)的电池供电设备很有用。
服务软件的主要用例是在断电后关闭 Raspberry Pi。这可以防止文件系统损坏,而无需手动关闭设备。
安装
将以下行复制并粘贴到您的终端中,以安装最新版本的守护进程并更新配置文件
curl -L \
https://raw.githubusercontent.com/hatlabs/SH-RPi-daemon/main/install-online.sh \
| sudo bash
从在线分支安装
如果您想从特定分支安装守护进程,可以使用以下命令
curl -L \
https://raw.githubusercontent.com/hatlabs/SH-RPi-daemon/BRANCH/install-online.sh \
| sudo bash -s -- https://github.com/hatlabs/SH-RPi-daemon BRANCH
将 BRANCH
替换为所需的分支名称。请注意,在命令中需要两次指定 BRANCH。
使用 Docker
如果您想使用 Docker 运行守护进程,可以克隆存储库并执行以下命令
docker compose -f docker/docker-compose.yml build
docker compose -d -f docker/docker-compose.yml up
如果您之前已使用 install-online.sh
脚本安装了守护进程,需要通过以下命令停止并禁用系统上的守护进程
sudo systemctl disable --now shrpid
在启动 Docker 容器之前,您需要手动通过以下命令在 Raspberry Pi 上启用 I2C
sudo raspi-config nonint do_i2c 0
无人值守安装
或者,可以在 Raspberry Pi 设备上克隆此存储库并运行 install.sh
脚本。这将安装守护进程和配置文件。如果您想在不经过交互式对话框的情况下定义所需的配置,可以在命令行中按如下方式定义
sudo ./install.sh --enable RTC,CAN
上述命令将启用 RTC 和 CAN(NMEA 2000)功能。以下功能可用
RTC
:启用实时时钟CAN
:启用 CAN(NMEA 2000)接口RS485
:启用 RS485 接口MAX-M8Q
:启用 u-blox MAX-M8Q GPS 接口
配置
shrpid
守护进程可以通过配置文件进行配置。默认配置文件位于 /etc/shrpid.conf
。配置文件为 YAML 格式。配置键与守护进程命令行参数相同,可以通过以下命令查看
shrpid --help
例如,如果您想将停电时间限制更改为 10 秒,并将关机命令更改为 /home/pi/bin/custom-poweroff
,可以按如下方式编辑配置文件
blackout-time-limit: 10
poweroff: /home/pi/bin/custom-poweroff
SH-RPi 文档
有关 SH-RPi 的更详细文档,请访问 文档网站。
获取硬件
Sh-RPi 设备可在 shop.hatlabs.fi 购买。
🛠️ 开发说明
查看 run
脚本以获取常见开发任务。以下说明适用于通用的 poetry
项目。
构建和发布您的包
构建应用程序的新版本包含以下步骤
- 提升您的包版本
poetry version <version>
。您可以明确传递新版本,例如major
、minor
或patch
。有关更多详细信息,请参阅 语义版本 标准。 - 在
GitHub
上提交。 - 创建
GitHub release
。 - 然后...发布 :)
poetry publish --build
开发功能
- 支持
Python 3.9
及更高版本。 - 使用
Poetry
作为依赖管理器。有关配置信息,请参阅pyproject.toml
和setup.cfg
。 - 使用
black
、isort
和pyupgrade
自动格式化代码风格。 - 提供可使用的代码格式化钩子
pre-commit
。 - 使用
mypy
进行类型检查;使用darglint
进行文档字符串检查;使用safety
和bandit
进行安全检查。 - 使用
pytest
进行测试。 - 提供可使用的
.editorconfig
、.dockerignore
和.gitignore
。您无需担心这些事情。
部署功能
GitHub
集成:问题(issue)和 pr 模板。Github Actions
,默认 CI/CD 为预定义的构建工作流。- 使用
Makefile
,已经为安全检查、代码风格检查、代码格式化、测试、代码审查、Docker 构建等设置了一切。更多详细信息请参阅 makefile-usage。 - 为您的包提供 Dockerfile。
- 使用
@dependabot
保持所有依赖项始终最新。您只需 启用它。 - 使用
Release Drafter
自动创建新版本发布草稿。您可以在release-drafter.yml
中查看标签列表。与 语义版本 规范配合使用效果极佳。
开源社区功能
- 提供可使用的 拉取请求(Pull Requests)模板 和几个 问题(Issue)模板。
- 自动生成如
LICENSE
、CONTRIBUTING.md
、CODE_OF_CONDUCT.md
和SECURITY.md
等文件。 - 使用
Stale bot
在一段时间内无活动后关闭废弃的问题。(您只需 设置免费计划)。配置信息 在此处。 - 使用 语义版本 规范与
Release Drafter
。
安装
pip install -U shrpid
或者使用 Poetry
进行安装
poetry add shrpid
使用 Conda
Conda 用户可以使用来自 Stack Overflow 的想法 设置开发环境。
conda create --name shrpid --file conda-linux-64.lock
conda activate shrpid
poetry install
和常规使用期间
conda activate shrpid
可以使用以下方式更新 Conda 环境
# Re-generate Conda lock file(s) based on environment.yml
conda-lock -k explicit --conda mamba
# Update Conda packages based on re-generated lock file
mamba update --file conda-linux-64.lock
# Update Poetry packages and re-generate poetry.lock
poetry update
Makefile 使用方法
Makefile
包含许多用于快速开发的函数。
1. 下载和删除 Poetry
要下载和安装 Poetry,请运行
make poetry-download
卸载
make poetry-remove
2. 安装所有依赖项和 pre-commit 钩子
安装需求
make install
在执行 git init
后,可以通过以下方式安装 pre-commit 钩子
make pre-commit-install
3. 代码风格
自动格式化使用 pyupgrade
、isort
和 black
。
make codestyle
# or use synonym
make formatting
仅进行代码风格检查,不重写文件
make check-codestyle
注意:
check-codestyle
使用isort
、black
和darglint
库
使用一条命令更新所有开发库到最新版本
make update-dev-deps
4. 代码安全
make check-safety
此命令将启动 Poetry
完整性检查,并使用 Safety
和 Bandit
识别安全漏洞。
make check-safety
5. 类型检查
运行 mypy
静态类型检查器
make mypy
6. 带覆盖徽章的测试
运行 pytest
make test
7. 所有代码风格检查器
当然有一个命令可以一次性运行所有代码风格检查器
make lint
等同于
make test && make check-codestyle && make mypy && make check-safety
8. Docker
make docker-build
这相当于
make docker-build VERSION=latest
使用以下命令删除 Docker 镜像
make docker-remove
关于 Docker 的更多信息,请访问 GitHub 仓库。
9. 清理
删除 pycache 文件
make pycache-remove
删除打包的包
make build-remove
删除 .DS_STORE 文件
make dsstore-remove
删除 .mypycache
make mypycache-remove
或者要删除所有上述内容,请运行
make cleanup
📈 版本发布
您可以在 GitHub 版本发布页面 上查看可用版本的列表。
我们遵循 语义化版本规范。
我们使用 Release Drafter
。随着拉取请求的合并,一个草稿版本会保持最新状态,列出更改,准备好发布。使用分类选项,您可以使用标签对发布说明中的拉取请求进行分类。
标签列表及其对应标题
标签 | 发布中的标题 |
---|---|
enhancement , feature |
🚀 功能 |
bug , refactoring , bugfix , fix |
🔧 修复 & 重构 |
build , ci , testing |
📦 构建系统 & CI/CD |
breaking |
💥 破坏性更改 |
documentation |
📝 文档 |
dependencies |
⬆️ 依赖更新 |
您可以在 release-drafter.yml
中更新它。
GitHub 会为您创建 bug
、enhancement
和 documentation
标签。Dependabot 会创建 dependencies
标签。当您需要时,可以在 GitHub 仓库的问题标签页上创建剩余的标签。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
shrpid-2.2.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b693b11baeaaf6aa9fb78426d50468a7a7af64e4498f3385b963dec6bea10676 |
|
MD5 | 33cecc233436ae0719bebdd59fec3999 |
|
BLAKE2b-256 | 17af27d43e54b74525302f37ecb83997427953f4f72ecf1b6335fc1c1a598840 |
shrpid-2.2.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ce9d71d239b3fac24a2397d4f713e8b3b7c96c72235b77545751644a09adab5 |
|
MD5 | 687e1fe5553490f72716321d55af7a03 |
|
BLAKE2b-256 | a3ce8f5aac528c7a18e8b3a2ff009ea35132073c617e871eec2b422479e30b3c |