跳转到主要内容

shrpid是SH-RPi的电源监控和看门狗守护进程。

项目描述

Sailor Hat for Raspberry Pi: 守护进程

Dependencies Status

Code style: black Security: bandit Pre-commit Semantic Versions

注意

以下描述适用于当前版本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>。您可以明确传递新版本,例如 majorminorpatch。有关更多详细信息,请参阅 语义版本 标准。
  • GitHub 上提交。
  • 创建 GitHub release
  • 然后...发布 :) poetry publish --build

开发功能

部署功能

  • GitHub 集成:问题(issue)和 pr 模板。
  • Github Actions,默认 CI/CD 为预定义的构建工作流。
  • 使用 Makefile,已经为安全检查、代码风格检查、代码格式化、测试、代码审查、Docker 构建等设置了一切。更多详细信息请参阅 makefile-usage
  • 为您的包提供 Dockerfile
  • 使用 @dependabot 保持所有依赖项始终最新。您只需 启用它
  • 使用 Release Drafter 自动创建新版本发布草稿。您可以在 release-drafter.yml 中查看标签列表。与 语义版本 规范配合使用效果极佳。

开源社区功能

安装

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. 代码风格

自动格式化使用 pyupgradeisortblack

make codestyle

# or use synonym
make formatting

仅进行代码风格检查,不重写文件

make check-codestyle

注意:check-codestyle 使用 isortblackdarglint

使用一条命令更新所有开发库到最新版本

make update-dev-deps

4. 代码安全

make check-safety

此命令将启动 Poetry 完整性检查,并使用 SafetyBandit 识别安全漏洞。

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 会为您创建 bugenhancementdocumentation 标签。Dependabot 会创建 dependencies 标签。当您需要时,可以在 GitHub 仓库的问题标签页上创建剩余的标签。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

shrpid-2.2.4.tar.gz (20.6 kB 查看哈希值)

上传时间 源代码

构建分发

shrpid-2.2.4-py3-none-any.whl (17.7 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面