SHIVANSHTECH22/satellite-telemetry-health-monitor
GitHub: SHIVANSHTECH22/satellite-telemetry-health-monitor
基于 Python 的实时卫星遥测模拟器,通过规则引擎实现故障检测并将遥测数据记录到 CSV,用于模拟航天器健康监控流程。
Stars: 0 | Forks: 0
# 卫星遥测健康监控
# 带有基于规则的故障检测和 CSV 日志记录的实时卫星遥测模拟器。使用 Python 编写,采用模块化架构。
# 卫星遥测健康监控系统
一个带有基于规则的故障检测和 CSV 日志记录的实时卫星遥测模拟器。使用 Python 编写,采用模块化架构。
## 本系统的作用
该系统模拟了卫星健康监控 pipeline。它持续生成关键卫星参数的遥测读数,根据故障阈值检查每个读数,并将所有数据带时间戳记录到 CSV 文件中——模仿真实的地面站软件监控航天器健康状态的方式。
## 系统架构
```
satellite_telemetry/
│
├── simulator/
│ └── generator.py # Generates simulated telemetry data
│
├── monitor/
│ └── fault_detector.py # Rule-based fault detection engine
│
├── logger/
│ └── telemetry_logger.py # Logs telemetry + fault status to CSV
│
├── data/
│ └── telemetry_log.csv # Auto-generated on first run
│
└── main.py # Orchestrates all modules
```
## 模块
### simulator/generator.py
使用 `random.uniform()` 在真实的卫星参数范围内每秒生成一个遥测快照。参数包括温度、电池、电压和燃料。使用 `datetime.now()` 获取真实的时间戳。
### monitor/fault_detector.py
接收遥测快照,并根据定义的阈值检查每个参数。返回一个包含每个参数 `NORMAL`、`WARNING` 或 `CRITICAL` 的故障状态字典。
使用的阈值:
| 参数 | WARNING | CRITICAL |
|---|---|---|
| 温度 (°C) | > 75 | > 90 |
| 电池 (%) | < 20 | < 10 |
| 电压 (V) | < 3.5 | < 3.3 |
| 燃料 (%) | < 15 | < 5 |
### logger/telemetry_logger.py
接收遥测快照和故障状态字典。将每次读数写入带有完整时间戳的 `telemetry_log.csv` 中。首次运行时会创建带有表头的文件,之后每次运行都会追加数据。
## 如何运行
无需外部依赖。仅需标准 Python 3.x。
```
python main.py
```
系统将开始每秒生成并记录遥测数据。按 `Ctrl + C` 停止。
## 输出示例
```
{'timestamp': datetime.datetime(2026, 5, 23, 14, 42, 5), 'temperature': 71.4, 'battery': 97.5, 'voltage': 4.6, 'fuel': 64.5}
{'temperature': 'Normal', 'battery': 'Normal', 'voltage': 'Normal', 'fuel': 'Normal'}
```
## 已修复的最难 Bug
故障检测器最初在每个 `if/elif` 链中先检查 `WARNING`,然后再检查 `CRITICAL`。这意味着 3% 的电池读数会触发 `WARNING` 而不是 `CRITICAL`,因为 `3 < 20` 会先被判定为 `True`,Python 永远不会执行到 `elif`。已通过始终优先检查最严重的情况来修复此问题。
当前进度
✅ V1 - 遥测监控系统
✅ V2 - 故障注入引擎
🚧 V3 - 遥测日志分析器
- 日志加载器
- 汇总统计
- 事件检测
- 故障统计
- 任务时间线
- 健康评分
- 仪表板(进行中)
🔜 V4 - 遥测可视化仪表板
🔜 V5 - 高级基于规则的故障检测
🔜 V6 - 数据包通信模拟器
🔜 V7 - AI 异常检测
## 技术栈
- Python 3.x
- `random` — 遥测值模拟
- `datetime` — 实时时间戳记录
- `csv` — 结构化数据记录
- `os` — 文件存在性检查
- `time` — 循环间隔控制
## 领域背景
本项目的灵感来源于卫星地面站软件中使用的真实航空航天 FDIR 系统(Fault Detection, Isolation, and Recovery,故障检测、隔离与恢复)。其模块化架构反映了真实的遥测 pipeline 如何将数据采集、故障分析和数据持久化分离为独立的组件。
## 作者
Shivansh — 逐步构建模块,迈向航空航天 AI 系统。
标签:Python, 代码示例, 仿真模拟, 卫星遥测, 数据分析, 无后门, 物联网, 运维监控