syedraihanali/dhaka-environment-logger
GitHub: syedraihanali/dhaka-environment-logger
自动记录达卡市每小时天气、空气质量和紫外线数据的开源工具,用于支持环境数据分析。
Stars: 19 | Forks: 0
# 🌤️ 达卡环境数据记录器
一个自动化的开源系统,用于记录**孟加拉国达卡市的每小时环境数据**,包括:
- ☁️ 天气(温度、湿度、气压、风速)
- 🌫️ 空气质量(PM2.5、PM10、CO、NO₂、O₃、AQI)
- 🌞 紫外线指数(紫外线辐射等级)
该记录器通过 **GitHub Actions** 自动运行,并从 **[OpenWeatherMap](https://openweathermap.org/api)** 和 **[OpenUV](https://www.openuv.io/)** API 收集数据。
所有数据均以 **JSON** 和 **CSV** 格式保存,每月自动轮换,并公开可供分析使用。
## 🧠 功能特性
✅ 通过 GitHub Actions 实现每小时自动更新
✅ 每月自动轮换文件(例如 `environment_2025_10.json`)
✅ 双格式输出 — JSON 和 CSV
✅ 独立的文件夹结构,便于清晰管理
✅ 100% 免费且无服务器(无需 VPS)
✅ 数据适用于分析、可视化或研究
## 🗂️ 项目结构
```
dhaka-environment-logger/
├── environment_logger.py
├── README.md
├── data/
│ ├── json/
│ │ └── environment_2025_10.json
│ └── csv/
│ └── environment_2025_10.csv
└── .github/
└── workflows/
└── environment.yml
```
## ⚙️ 工作原理
1. **GitHub Actions** 每小时自动运行。
2. Python 脚本 (`environment_logger.py`) 获取:
- 天气数据(温度、湿度、气压、风力)
- 空气污染水平(PM2.5、PM10 等)
- 紫外线指数
3. 脚本将这些数据以 JSON 和 CSV 格式保存在 `/data/json` 和 `/data/csv` 目录下。
4. 每个月,记录器会自动创建一组新文件。
5. 数据被提交并推送到 GitHub。
## 🧩 设置说明
### 1️⃣ 获取免费 API 密钥
您需要两个 API 密钥:
- **OpenWeatherMap API** → [https://home.openweathermap.org/api_keys](https://home.openweathermap.org/api_keys)
- **OpenUV API** → [https://www.openuv.io/](https://www.openuv.io/)
### 2️⃣ 向 GitHub 仓库添加 Secrets
1. 进入您的仓库 → **Settings → Secrets and variables → Actions → New repository secret**
2. 添加以下 Secrets:
| Secret 名称 | 描述 |
|--------------|-------------|
| `OPENWEATHER_API_KEY` | 您的 OpenWeatherMap API 密钥 |
| `OPENUV_API_KEY` | 您的 OpenUV API 密钥 |
### 3️⃣ 配置作者信息
编辑 `.github/workflows/environment.yml` 文件,替换:
```
git config --global user.name "YOUR_GITHUB_USERNAME"
git config --global user.email "YOUR_VERIFIED_EMAIL@example.com"
```
➡ 使用您的**实际 GitHub 用户名和已验证的电子邮件**(以便您的提交计入贡献图)。
### 4️⃣ 推送代码
推送后,工作流将在下一个整点(例如 1:00、2:00、3:00 等)自动开始运行。
您也可以在 **Actions → “Run workflow.”** 下手动触发它。
## 📊 示例数据条目
```
{
"time": "2025-10-12T10:00:00Z",
"city": "Dhaka, BD",
"temp_c": 30.2,
"humidity": 68,
"pressure": 1005,
"weather": "clear sky",
"wind_speed": 3.5,
"air_pm2_5": 62,
"air_pm10": 98,
"air_co": 300,
"air_no2": 28,
"air_o3": 40,
"air_aqi": 4,
"uv_index": 6.3
}
```
## 🕒 数据收集计划
| 数据类型 | 频率 | 来源 |
|------------|------------|---------|
| 天气 | 每小时 | OpenWeatherMap |
| 空气质量 | 每小时 | OpenWeatherMap |
| 紫外线指数 | 每小时 | OpenUV |
| 文件轮换 | 每月 | 自动管理 |
## 📁 数据文件夹
```
data/
├── json/ → Hourly JSON logs per month
└── csv/ → Hourly CSV logs per month
```
每个月都会自动创建新文件(例如 `environment_2025_11.json` 和 `environment_2025_11.csv`)。
## 📈 潜在用途
- 🌦️ 长期环境趋势跟踪
- 🌫️ 空气污染与紫外线暴露分析
- 📊 可视化仪表盘(Chart.js、Grafana 等)
- 🧠 数据科学或气候研究的教育项目
- 🤖 用于天气和 AQI 预测的 AI/ML 建模
## 🧰 技术栈
- **Python 3.11**
- **GitHub Actions**
- **OpenWeatherMap API**
- **OpenUV API**
- **CSV 与 JSON 用于数据存储**
## 🧑💻 作者
**[Syed Raihan Ali](https://github.com/syedraihanali)**
💡 为开放数据、自动化和环境意识而构建。
## 📄 许可证
本项目采用 **MIT 许可证**。
您可以自由使用、修改和分享,但需注明出处。
### 🔍 关键词
`达卡`, `孟加拉国`, `天气`, `空气质量`, `紫外线指数`, `环境`, `数据记录器`, `自动化`, `开放数据`, `GitHub Actions`, `Python`
标签:API集成, CSV, GitHub Actions, Homebrew安装, JSON, OpenUV, OpenWeatherMap, Python, 代码示例, 可观测性, 孟加拉国, 定时任务, 开放数据, 开源, 数据分析, 数据记录, 文件轮换, 无后门, 无服务器, 每小时更新, 气象数据, 环境数据分析, 环境监测, 环境研究, 空气质量, 紫外线指数, 网络调试, 自动化, 自动笔记, 达卡, 逆向工具