Skip to content

vavavavavavavavava/realtime-wave-app

Repository files navigation

realtime-wave

FastAPI + シンプルな HTML/JS だけで、 「センサ値をリアルタイム表示して CSV ダウンロードできるサンプルアプリ」です。

GitHub からクローンして、少しコードを書き換えて自分用に使うことを想定しています。


できること

  • 温湿度センサ(シミュレータ / DHT22 / BME280 など)の値をリアルタイムにグラフ表示
  • 計測の開始 / 停止、サンプリング周期・バッファ長の変更
  • 設定内容を JSON ファイルに自動保存
  • 表示中の波形をそのまま CSV ダウンロード
  • 単一 FastAPI アプリで API / WebSocket / HTML UI まで完結

クイックスタート

前提:

  • Python がインストールされていること
  • パッケージマネージャーとして uv v0.5 以降を使用

セットアップ:

uv sync
uv run uvicorn backend:app --reload

ブラウザで http://localhost:8000/realtime にアクセスすると UI が開きます。 別のフロントエンドを立ち上げる必要はありません。


使い方(基本の流れ)

  1. ページ右上の設定からサンプリング周期やバッファ長、センサ種別を選ぶ
  2. 「Start」ボタンで計測開始(グラフがリアルタイム更新されます)
  3. 「Stop」で計測停止
  4. 必要に応じて「CSV ダウンロード」で現在の波形データを保存

設定は settings.json に自動保存され、次回起動時に復元されます (このファイルは .gitignore 済みなのでリポジトリには含まれません)。


設定・環境変数

主にセンサ構成は環境変数で切り替えます。 代表的なものだけを挙げます。

  • SENSOR_ID
    • 既定: climate(温湿度センサ構成)
    • accelerometer にすると三軸加速度センサ構成になります。
  • SENSOR_DRIVER
    • センサごとのドライバ ID。
    • climate: simulated / dht22 / bme280
    • accelerometer: simulated / lis3dh
  • DHT22_DATA_PIN
    • DHT22 のデータピン(例: D4)。
  • BME280_TEMP_OFFSET, BME280_HUM_OFFSET
    • BME280 の温度・湿度補正値(数値)。
  • ACCEL_SIM_NOISE_G
    • 加速度シミュレータに乗せるノイズ量(単位 g、例: 0.02)。
  • LIS3DH_ADDRESS
    • LIS3DH の I2C アドレス(例: 0x18)。
  • CORS_ORIGINS
    • 別ホストの Web フロントから叩きたい場合のオリジンリスト(カンマ区切り)。

コード構成(カスタマイズの入口)

「ちょっと書き換えて使いたい」場合、まず以下のファイルを見るのがおすすめです。

  • backend.py
    • FastAPI アプリ本体。
    • 設定 API (/api/settings/*)、ストリーム API (/api/stream/*)、WebSocket (/ws/sensor)、HTML (/realtime) を提供。
  • templates/realtime.html
    • Plotly ベースの UI テンプレート。
    • グラフの見た目やボタン配置を変えたい場合はここを編集。
  • sensor.py / sensors/
    • センサ抽象化レイヤー。新しいセンサやドライバを追加したいときの入口です。
  • settings_store.py
    • settings.json への保存・読み込みまわり。

CSV エクスポートの挙動

ブラウザ上のバッファに溜まっているデータを、画面で選んだ時間範囲で切り出して realtime-log-YYYYMMDD-HHMMSS.csv というファイル名でダウンロードします。

将来的にはサーバー側に /api/logs/export や長期保存用ストレージを追加することを想定しています(仕様書フェーズ 4 に記載)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published