レバーデバイスのリアルタイム可視化システム
LeverSystemは、ESP8266ベースのレバーデバイスから送信される値をリアルタイムで可視化するシステムです。ポータブル版のNode.jsとPythonを含むため、システムにインストール不要で動作します。
- リアルタイム可視化: レバーの位置をリアルタイム表示
- クロマキー: 録画用ウィンドウ
- ログ記録・再生: データの記録と再生機能
- 自動デバイス検出: UDP検出による自動デバイス検出
- ポータブル版対応: Node.jsとPythonのポータブル版を含むため、システムインストール不要
leverSystem/
├── positionVisualizer/ # フロントエンド(HTML/JavaScript)
│ ├── index.html # メインウィンドウ
│ ├── overlay.html # オーバーレイウィンドウ
│ ├── js/ # JavaScriptソースコード
│ ├── http-server.js # HTTPサーバー
│ ├── bridge-server.js # WebSocketブリッジサーバー
│ ├── integrated-server.js # 統合サーバー
│ └── other server files # その他のサーバー関連ファイル
├── app/ # コンパイル済み実行ファイル
│ ├── Windows/ # Windows向け実行ファイル
│ └── macOS/ # macOS向け実行ファイル
├── LeverAPI/ # Python APIサーバー
│ ├── app.py # メインAPIサーバー
│ └── requirements.txt # Python依存パッケージ
├── LeverFirmware/ # Arduinoファームウェア
│ └── LeverFirmware.ino # ESP8266ファームウェア
├── node-portable/ # Node.jsポータブル版
├── python-portable/ # Pythonポータブル版
└── start-visualizer.bat # メイン起動スクリプト
app/Windows/またはapp/macOS/ディレクトリの実行ファイルを使用LeverVisualizer.exe(Windows)またはLeverVisualizer(macOS)を実行
-
Node.jsポータブル版のセットアップ
- 必要に応じて
npm installを実行して依存パッケージをインストール cd positionVisualizer && node integrated-server.jsを実行
- 必要に応じて
-
サーバーを個別に起動
- HTTP Server:
cd positionVisualizer && node http-server.js - Bridge Server:
cd positionVisualizer && node bridge-server.js - API Server:
cd LeverAPI && python app.py
- HTTP Server:
LeverVisualizer.exe(Windows)またはLeverVisualizer(macOS)を実行- 統合サーバーが自動的に以下のサービスを起動します:
- LeverAPI Server (ポート5000)
- HTTP Server (ポート8000)
- Bridge Server (ポート8123)
- ブラウザでメインウィンドウとオーバーレイウィンドウが自動的に開きます
- LeverAPI Server:
app/[OS]/LeverAPI.exeまたはcd LeverAPI && python app.py - HTTP Server:
app/[OS]/LeverHTTP.exeまたはcd positionVisualizer && node http-server.js - Bridge Server:
app/[OS]/LeverBridge.exeまたはcd positionVisualizer && node bridge-server.js - ブラウザで
http://localhost:8000/にアクセス
起動したサーバーウィンドウ(LeverAPI Server、HTTP Server、Bridge Server)を閉じると、アプリが終了します。
- OS: Windows 10/11 (64bit)
- インターネット接続: 初回セットアップ時のみ必要
- ディスク容量: 約100MB(ポータブル版含む)
このプロジェクトには、Node.jsとPythonのポータブル版が含まれています:
- Node.js v20.11.0 (約50MB)
- Python 3.11.9 (約25MB)
これにより、システムにNode.jsやPythonをインストールする必要がありません。
start-visualizer.bat を実行すると、ポータブル版が存在しない場合、自動的にダウンロード・セットアップされます。
- Node.js:
setup-node-portable.batを実行 - Python:
setup-python-portable.batを実行
別のPCでダウンロードしたポータブル版を手動で配置することもできます:
-
Node.js
- https://nodejs.org/dist/v20.11.0/node-v20.11.0-win-x64.zip をダウンロード
- 展開して
node-portableフォルダに配置
-
Python
- https://www.python.org/ftp/python/3.11.9/python-3.11.9-embed-amd64.zip をダウンロード
- 展開して
python-portableフォルダに配置 - pipをセットアップ(詳細は各セットアップスクリプトを参照)
コードを更新した後に実行ファイルを再コンパイルする手順を説明します。初回のスタンドアロン化セットアップについては、claudedocs/positionVisualizer_スタンドアロン化手順.md を参照してください。
LeverAPIのコードを更新した場合、PyInstallerを使用して再コンパイルします。
重要: PyInstallerは実行している環境(OS)向けの実行ファイルしか生成できません。クロスプラットフォームビルド(MacからWindows用バイナリを作成するなど)には対応していません。Windows用の実行ファイル(.exe)を生成するには、Windows環境でコマンドを実行する必要があります。
# positionVisualizerディレクトリから実行
npm run build:api # 現在の環境に合ったビルドを実行
# または個別に実行する場合
# Windows環境の場合
npm run build:api:win
# macOS環境の場合
npm run build:api:mac
# または手動で実行する場合
cd ./LeverAPI
pip install -r requirements.txt
python -m PyInstaller --onefile --collect-submodules=dns --collect-submodules=eventlet \
--hidden-import=engineio.async_drivers.eventlet \
--hidden-import=api.discovery --hidden-import=api.device_manager \
--hidden-import=api.transformers --hidden-import=api.cache \
--name LeverAPI app.pyWindows環境でコンパイルした場合、実行ファイルは ./LeverAPI/dist/LeverAPI.exe に作成されます。
macOSでコンパイルした場合は .exe 拡張子なしの実行ファイルが作成されます。
更新する場合は ./app/[OS name] の実行ファイルと置換してください。
フロントエンドのコードを更新した場合、以下の手順で再コンパイルします。
注意: Bunのビルドツールはクロスプラットフォームビルドをサポートしているため、macOSからでもWindows用の実行ファイルを生成できます。
# positionVisualizerディレクトリに移動
cd positionVisualizer
# 依存パッケージが追加された場合はインストール
npm install
# メインビルドコマンド - サーバーとAPIをビルド
npm run build # サーバー類とAPIをビルド(デフォルト)
# 統合サーバー(LeverVisualizer)のビルド
npm run build:win # Windows版のみビルド
npm run build:mac # macOS版のみビルド
# HTTPサーバー(LeverHTTP)とWebSocketブリッジ(LeverBridge)のビルド
npm run build:servers # 両方のサーバーをビルド
npm run build:http # HTTPサーバーのみビルド(Windows版とmacOS版の両方)
npm run build:bridge # Bridgeサーバーのみビルド(Windows版とmacOS版の両方)
# APIサーバー(LeverAPI)のビルド
npm run build:api # APIサーバーをビルド(実行環境用)
npm run build:api:win # Windows版のみビルド(Windows環境でのみ実行可能)
npm run build:api:mac # macOS版のみビルド(macOS環境でのみ実行可能)コンパイル後の実行ファイルは以下の場所に作成されます:
- Windows版:
./app/Windows/LeverVisualizer.exe,./app/Windows/LeverHTTP.exe,./app/Windows/LeverBridge.exe - macOS版:
./app/macOS/LeverVisualizer,./app/macOS/LeverHTTP,./app/macOS/LeverBridge
プロジェクトで使用している実行ファイルを新しくコンパイルしたものと置き換えてください。
-
依存関係の変更: 新しいライブラリやモジュールを追加した場合、コンパイル前に必ず依存パッケージをインストールしてください。
-
隠れた依存関係: PyInstallerで新しいモジュールを使用する場合、
--hidden-importオプションの追加が必要になることがあります。 -
クロスプラットフォームビルド:
- Python (LeverAPI): PyInstallerは実行している環境と同じOS向けの実行ファイルしか生成できません。Windows用の.exeファイルが必要な場合は、Windows環境でコンパイルする必要があります。
- JavaScript (サーバー): Bunのコンパイラはクロスプラットフォームビルドをサポートしているため、macOSからでもWindows用の実行ファイルを生成できます。
-
ファイルパス: コンパイル後の実行ファイルは、それぞれ適切なディレクトリに移動・配置してください。
-
配布: 最終的な実行ファイル一式をまとめる場合は、配布用パッケージの作成手順を参照してください(
claudedocs/positionVisualizer_スタンドアロン化手順.mdの「配布パッケージの作成」セクション)。
- レバーの位置を円グラフ・棒グラフで表示
- 複数のデバイスを同時に監視可能
- ログの記録・再生機能
- ゲーム画面に重ねて表示可能
- 常に前面に表示される設定
- シンプルな表示でゲームの邪魔にならない
- 記録開始: メインウィンドウで「記録開始」ボタンをクリック
- 記録停止: 「記録停止」ボタンをクリック
- 保存: 記録したデータをJSON形式で保存
- 再生: 保存したログファイルを読み込んで再生
- positionVisualizer/: フロントエンド(Vanilla JavaScript)
- LeverAPI/: Python Flask APIサーバー
- LeverFirmware/: ESP8266 Arduinoファームウェア
詳細は LeverAPI/API_DOCUMENTATION.md を参照してください。
主なエンドポイント:
GET /api/devices- 検出されたデバイスのリストGET /api/devices/{device_id}/value- 特定デバイスの値GET /api/values- すべてのデバイスの値を一括取得
cd positionVisualizer
npm installcd LeverAPI
pip install -r requirements.txt
python app.pyPlatformIOを使用してビルド・アップロード:
cd LeverFirmware
platformio run --target uploadsetup-node-portable.batを実行してポータブル版をセットアップ- または、システムにNode.jsをインストール
setup-python-portable.batを実行してポータブル版をセットアップ- または、システムにPythonをインストール
- ポート5000、8000、8123が使用されている場合、他のアプリケーションを終了してください
- ESP8266デバイスが同じネットワークに接続されているか確認
- LeverAPIサーバーが起動しているか確認
- ファームウェアが正しくアップロードされているか確認
(プロジェクトのライセンス情報を記載)
(貢献方法を記載)