Web API リファレンス¶
FBSAT59 は REST API と WebSocket を外部ツール統合用に公開しています。
ベース URL¶
http://localhost:8080/api
またはローカルネットワーク上のリモートマシンから:
http://192.168.x.x:8080/api (あなたの IP に置き換え)
REST エンドポイント¶
すべての衛星を取得¶
GET /satellites
レスポンス:
[
{
"norad_cat_id": 25544,
"name": "ISS (ZARYA)",
"status": "alive",
"uplink_mhz": 144.39,
"downlink_mhz": 145.80,
"updated_at": "2024-01-15T10:30:00Z"
},
...
]
NORAD ID で衛星を取得¶
GET /satellites/{norad_id}
例:
GET /satellites/25544 (ISS)
今後のパスを取得¶
GET /satellites/{norad_id}/passes?days=7
レスポンス:
[
{
"aos": "2024-01-15T12:45:00Z",
"los": "2024-01-15T13:15:00Z",
"max_elevation_deg": 72,
"duration_seconds": 1800,
"quality": "excellent"
},
...
]
トランスミッターを取得¶
GET /satellites/{norad_id}/transmitters
レスポンス:
[
{
"uuid": "satnogs-12345",
"downlink_mhz": 145.800,
"uplink_mhz": 144.390,
"mode": "FM",
"ctcss_tone": 67.0,
"description": "ISS Voice Repeater"
},
...
]
現在のステータスを取得¶
GET /status
レスポンス:
{
"version": "0.3.50",
"uptime_seconds": 3600,
"location": {
"latitude": 35.6762,
"longitude": 139.6503,
"elevation_m": 35
},
"rig_connected": true
}
WebSocket 接続¶
WebSocket 経由でリアルタイム追尾データ:
WS /ws/tracking
接続:
ws = new WebSocket('ws://localhost:8080/ws/tracking');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
};
受信データ(毎 1~2 秒):
{
"satellites": [
{
"norad_id": 25544,
"name": "ISS",
"azimuth_deg": 247.5,
"elevation_deg": 34.2,
"range_km": 1234,
"velocity_kmps": 7.65,
"is_visible": true
},
...
]
}
使用例¶
Python¶
import requests
# ISS の次の 7 日間のパスを取得
resp = requests.get('http://localhost:8080/api/satellites/25544/passes?days=7')
passes = resp.json()
for pass_data in passes:
print(f"AOS: {pass_data['aos']}, Max Elevation: {pass_data['max_elevation_deg']}°")
JavaScript¶
// 送信機周波数を取得
fetch('http://localhost:8080/api/satellites/25544/transmitters')
.then(r => r.json())
.then(transmitters => {
transmitters.forEach(tx => {
console.log(`${tx.description}: ${tx.downlink_mhz} MHz`);
});
});
Bash¶
# すべての衛星を取得
curl http://localhost:8080/api/satellites | jq '.[] | .name'
# ISS パスを取得
curl "http://localhost:8080/api/satellites/25544/passes?days=7" | jq '.'
レート制限¶
- 認証不要(ローカルネットワークのみ)
- レート制限なし
- WebSocket:1~2 Hz 更新レート
エラーレスポンス¶
404 見つかりません¶
{
"error": "Satellite not found",
"norad_id": 99999
}
400 不正なリクエスト¶
{
"error": "Invalid date format",
"detail": "Use ISO 8601 format (YYYY-MM-DD)"
}
統合アイデア¶
- Wavelog 統合:TLE、パス時刻をインポート
- カスタム追尾ダッシュボード:リアルタイム Web アプリ
- ロガーボット:QSO 更新を Slack/Discord に投稿
- モバイルアプリ:リモート衛星追尾用クライアント
ソースコード¶
API サーバー:src/web/api.py(FastAPI)
あなたのニーズに合わせて自由に拡張またはカスタマイズできます!