Skip to content

sugimoto-aeterlink/3dp-usage-log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3Dプリンタ使用状況監視システム

3台の3Dプリンタ(Guider2S_A、Guider2S_B、Creator4S)の使用状況を自動監視し、Slackに通知するシステムです。

機能

第一フェーズ実装機能

  1. 電源状態の検知

    • Webカメラでプリンタのディスプレイを監視
    • 正解画像との特徴量比較による電源ON/OFF判定
    • OpenCV ORB特徴量とテンプレートマッチングを組み合わせた高精度検知
  2. 使用状態の検知

    • プリンタの温度監視(ノズル・ベッド温度)
    • 温度閾値に基づく使用状況判定(待機中/使用中/加熱中/冷却中)
  3. 使用状況の抽出

    • OCRによるディスプレイ情報読み取り
    • 印刷進行状況、残り時間、ファイル名の抽出
  4. Slack通知

    • 状態変化の自動通知
    • 定期的な使用状況更新
    • システム稼働状況の通知
  5. FlashPrint GUI自動化

    • PyAutoGUIとPyGetWindowを使用したGUI操作
    • FlashPrintアプリケーションの自動起動・制御
    • プリンター接続画面への自動アクセス
    • 安全なマウス・キーボード操作とフェイルセーフ機能

システム構成

3dp-usage-log/
├── main.py                 # メインエントリーポイント
├── requirements.txt        # 依存関係
├── .env.example           # 環境変数サンプル
├── example_flashprint_usage.py # FlashPrint GUI自動化サンプル
├── test_flashprint_path.py # FlashPrintパス・動作テスト
├── config/
│   └── config.json        # システム設定
├── src/
│   ├── power_detector.py      # 電源状態検知
│   ├── temperature_monitor.py # 温度監視
│   ├── status_extractor.py    # OCR状況抽出
│   ├── slack_notifier.py      # Slack通知
│   ├── flashprint_controller.py # FlashPrint GUI自動化
│   └── printer_monitor.py     # 統合監視クラス
├── reference_images/      # 電源ON時の参照画像
├── flashprint_images/     # FlashPrint用画像
├── logs/                  # ログファイル
└── README.md

セットアップ

1. 必要なライブラリのインストール

pip install -r requirements.txt

主要な依存関係:

  • opencv-python: 画像処理・コンピュータビジョン
  • easyocr: OCRによるテキスト認識
  • slack-sdk: Slack API連携
  • pyautogui: GUI自動化(マウス・キーボード操作)
  • pygetwindow: ウィンドウ管理
  • psutil: プロセス監視

2. Slackボットの設定

  1. Slack Appを作成し、以下の情報を取得:

    • Bot User OAuth Token (xoxb-で始まる)
    • App ID
    • Client ID
    • Client Secret
    • Signing Secret
    • Verification Token
  2. .env ファイルを作成し、Slack設定を追加:

cp .env.example .env
# .env ファイルを編集して以下の値を設定
SLACK_BOT_TOKEN=xoxb-your-actual-bot-token
SLACK_APP_ID=A095DV3Q64C
SLACK_CLIENT_ID=1613908555942.9183989822148
SLACK_CLIENT_SECRET=your-actual-client-secret
SLACK_SIGNING_SECRET=your-actual-signing-secret
SLACK_VERIFICATION_TOKEN=your-actual-verification-token

3. 参照画像の準備

各プリンタの電源ON時のディスプレイ画像を撮影し、reference_images/ フォルダに保存:

reference_images/
├── guider2s_a_on.jpg
├── guider2s_b_on.jpg
└── creator4s_on.jpg

4. カメラのセットアップ

USBカメラを各プリンタのディスプレイを撮影できる位置に設置し、config/config.json でカメラインデックスを設定。

5. 設定ファイルの調整

config/config.json で以下を調整:

  • プリンタごとのカメラインデックス
  • 温度閾値
  • 画像類似度閾値
  • Slackチャンネル

使用方法

継続監視モード(推奨)

python main.py monitor

オプション:

  • --interval 30: 監視間隔を30秒に設定
  • --log-level DEBUG: デバッグレベルのログ出力

単発チェックモード

# 全プリンタの現在状況をチェック
python main.py check

# 特定プリンタのみチェック
python main.py check --printer Guider2S_A

設定テストモード

python main.py test

FlashPrint GUI自動化デモ

Windows 11でFlashPrint 5のGUI操作を自動化するデモを実行:

# FlashPrintパス・動作テスト(推奨)
python test_flashprint_path.py

# GUI自動化デモ実行
python example_flashprint_usage.py

このデモでは以下の機能をテストできます:

  • FlashPrint 5の自動起動とウィンドウ管理
  • スライスメニューへの自動アクセス
  • プリンター接続画面の自動オープン
  • ホットキー操作(Alt+P、Ctrl+O など)
  • 安全なマウス・キーボード操作
  • スクリーンショット取得と画像保存

注意: FlashPrint 5は C:\Program Files\FlashForge\FlashPrint 5\ にインストールされている必要があります。

設定ファイル詳細

config.json

{
  "printers": {
    "Guider2S_A": {
      "camera_index": 0,
      "reference_image": "reference_images/guider2s_a_on.jpg",
      "nozzle_temp_threshold": 50,
      "bed_temp_threshold": 40
    }
  },
  "slack": {
    "bot_token": "YOUR_SLACK_BOT_TOKEN_HERE",
    "channel": "#3dプリンター_使用ログ"
  },
  "monitoring": {
    "check_interval_seconds": 60,
    "image_similarity_threshold": 0.8,
    "ocr_languages": ["en", "ja"]
  }
}

ログ

  • ログファイルは logs/ ディレクトリに日付別で作成
  • ログレベル:DEBUG, INFO, WARNING, ERROR
  • Slackにもシステム通知が送信される

トラブルシューティング

カメラが認識されない場合

# 利用可能なカメラデバイスを確認
ls /dev/video*

# Pythonでカメラテスト
python -c "import cv2; print(cv2.VideoCapture(0).read())"

画像認識精度が低い場合

  1. 照明環境を統一
  2. カメラ位置を固定
  3. image_similarity_threshold を調整(0.6-0.9の範囲)
  4. 参照画像を高品質で再撮影

OCR精度が低い場合

  1. ディスプレイの解像度と明度を確認
  2. カメラのフォーカスを調整
  3. status_extractor.py の前処理パラメータを調整

Slack通知が届かない場合

  1. ボットトークンの権限を確認(chat:write, chat:write.public
  2. チャンネルにボットを招待
  3. ネットワーク接続を確認

GUI自動化が動作しない場合

  1. FlashPrint 5が見つからない場合

    # FlashPrint 5のインストール場所を確認
    dir "C:\Program Files\FlashForge\FlashPrint 5\FlashPrint.exe"
    dir "C:\Program Files (x86)\FlashForge\FlashPrint 5\FlashPrint.exe"
    
    # または、パステストスクリプトを実行
    python test_flashprint_path.py
  2. PyAutoGUI/PyGetWindowが初期化できない場合

    # パッケージの再インストール
    pip uninstall pyautogui pygetwindow
    pip install pyautogui pygetwindow
  3. フェイルセーフが働く場合

    • マウスを画面左上に移動すると自動停止します
    • pyautogui.FAILSAFE = False で無効化可能(非推奨)
  4. ウィンドウ操作が失敗する場合

    • FlashPrintが最小化されていないか確認
    • 他のアプリケーションがフルスクリーンになっていないか確認
    • Windows のアクセス許可設定を確認
  5. GUI操作の精度が低い場合

    • 画面解像度を1920x1080に設定
    • 画面のスケーリングを100%に設定
    • FlashPrint 5のバージョンを確認(最新版推奨)
    • test_flashprint_path.py でパス検出をテスト

システム要件

基本要件

  • Python 3.8+
  • Windows 11(GUI自動化機能用)
  • OpenCV対応のWebカメラ
  • インターネット接続(Slack API用)
  • 十分な照明環境
  • 安定したカメラ設置

GUI自動化追加要件

  • FlashPrint 5 アプリケーション(FlashForge社製)
    • インストールパス: C:\Program Files\FlashForge\FlashPrint 5\
    • または: C:\Program Files (x86)\FlashForge\FlashPrint 5\
  • デスクトップ環境(GUI必須)
  • 画面解像度 1920x1080 以上推奨
  • マウス・キーボードアクセス権限
  • Windows管理者権限(プロセス監視用)

今後の拡張計画

  • プリンタAPIとの直接接続による高精度な温度データ取得
  • Webダッシュボードの追加
  • 履歴データの保存とレポート機能
  • 異常検知とアラート機能
  • マルチプリンタ環境での負荷分散

メ:

FlashPrint 5を開いて、デスクトップアプリの画面を最大化し、スライス(P)をalt+pで表示し、Enterでプリンターに接続するを押下し、プラインターに接続するダイアログを開
き、スクリーンショットをFn+PrtScn全画面を撮影し、reference_imagesフォルダ配下にある画像と同じかどうかをOpenCVで検知し、異なる場合は処理を継続、同じ場合は処理を
終了し、Creator 4Sに接続し、マルチ機器制御画面でinfoボタンをクリックし、OCRで情報を収集し、Slackで通知してください。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published