Skip to content

一个监控OUC宿舍电费变化的工具,实现了电量余量监控、可视化和通知,支持多种一键部署方式和自定义配置。

Notifications You must be signed in to change notification settings

hongjr03/OUC-Electricity-Monitor

Repository files navigation

OUC Electricity Monitor

Demo

一个监控电费变化的工具,实现了电量余量监控、可视化和通知。原始实现源于白佬

预览

可视化页面

使用

支持 Docker 部署、通过 Bash 脚本安装和手动配置三种方法部署。Docker 一键部署较方便,而后两种方法要求自行修改 config.toml 文件定制配置参数,如有 Bark 推送需求请使用后两种方法部署。

Docker 部署

先构建镜像。根据你的学号修改 student_id 后的 12345。如果住的宿舍有两个隔间,修改 categoryEnergy_id 后的空调编号(对应隔间编号,1或者2),否则无需修改。

docker build --build-arg student_id=12345 --build-arg categoryEnergy_id=1 -t ouc-electricity-monitor .

运行镜像:

docker run -d -p 8501:8501 --name ouc-electricity-container ouc-electricity-monitor

编辑配置文件

请保证已连接到校园网,然后编辑 config.toml 文件,填入学号和数据库信息。

Note

如果对数据库使用不熟悉,建议除了在 student.id 处填写学号外,维持配置原样,程序会自动创建数据库文件。

[database]
type = "SQLite" # 数据库类型,支持 SQLite 和 MySQL

[student]
id = "your_student_id"    # 学号,请务必填写
root_url = "your_root_url"# 如果有自己部署的 Tunnel 服务,可以填写,否则留空或删除该行
electricity_fee = 0.54    # 电费单价,单位为 RMB/度

[cron]
interval = 5            # 定时任务执行间隔,单位为分钟,例如 5 表示每 5 分钟执行一次
crontab = "*/5 * * * *" # 定时任务执行时间,例如 "*/5 * * * *" 表示每 5 分钟执行一次

[visualize]
port = 8501            # 服务端口
title = "Electricity!" # 网站标题
icon = ""             # 网站图标

[database.MySQL] # MySQL 数据库配置
host = "localhost"
port = 3306
user = "your_username"
password = "your_password"
database_name = "your_database_name"

[database.SQLite] # SQLite 数据库配置,初始化后会替换成绝对路径
file_path = "Electricity.db"

[notify.bark] # Bark 配置,用于推送电量告警和充电提醒
# https://bark.day.app/
enabled = false
device_token = "your_device_token"

对于 iOS 用户,如果需要推送通知,请填写 bark 配置项,device_token 为 Bark 的设备码。关于 Bark 的更多信息请参考 Bark 官网Bark GitHub

Bark 通知

自动安装

Warning

仅支持 Ubuntu + bash。

项目提供了一个 setup.sh 脚本,可以自动安装依赖并配置定时任务、部署服务。请确保已经编辑好了配置文件,然后确认以下几点:

  • 请确保已经配置好 config.toml 文件。

  • 请确保已经安装了 crontab。

    sudo apt install cron
  • 如需使用 Bark 推送,请取消 requirements.txt 中的注释。

  • 如果使用 MySQL 数据库,请取消 requirements.txt 中的注释。

然后,运行以下命令:

chmod +x setup.sh
./setup.sh

手动配置

首先,请确保您的 Python 版本为 3.8 及以上。创建虚拟环境:

python -m venv .venv

激活虚拟环境:

# Windows CMD
.venv\Scripts\activate.bat

# Windows PowerShell
.venv\Scripts\Activate.ps1

# macOS and Linux
source .venv/bin/activate

接着,根据 requirements.txt 安装依赖,关于 requirements.txt 的说明同自动安装脚本,请根据需要取消注释。

pip install -r requirements.txt

配置完成后,初始化数据库:

python init.py

初始化过程中程序会判断是否有多个空调终端,如果有则会提示选择一个,请注意选择自己的空调终端。如果选错了,可以再次运行 init.py 重新选择。如果运行顺利,在 config.toml 中会显示当前电费终端的信息。

接下来配置定时任务,可以使用 crontab 或者 Windows 任务计划程序。例如,每 10 分钟执行一次:

*/10 * * * * python get.py

最后运行 visualize.py 可以启动一个本地服务器,用于查看电费变化情况。

streamlit run visualize.py

注意

  • 请勿将配置文件上传至公开仓库,其中包含了个人信息。
  • 请勿频繁请求电费数据,以免对校园网造成影响。
  • 对于电量的平均消耗计算仅供参考,在可视化页面选取较长的时间范围可能可以获取更准确的预测值。

Star History

Star History Chart

About

一个监控OUC宿舍电费变化的工具,实现了电量余量监控、可视化和通知,支持多种一键部署方式和自定义配置。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •