3台の3Dプリンタ(Guider2S_A、Guider2S_B、Creator4S)の使用状況を自動監視し、Slackに通知するシステムです。
-
電源状態の検知
- Webカメラでプリンタのディスプレイを監視
- 正解画像との特徴量比較による電源ON/OFF判定
- OpenCV ORB特徴量とテンプレートマッチングを組み合わせた高精度検知
-
使用状態の検知
- プリンタの温度監視(ノズル・ベッド温度)
- 温度閾値に基づく使用状況判定(待機中/使用中/加熱中/冷却中)
-
使用状況の抽出
- OCRによるディスプレイ情報読み取り
- 印刷進行状況、残り時間、ファイル名の抽出
-
Slack通知
- 状態変化の自動通知
- 定期的な使用状況更新
- システム稼働状況の通知
-
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
pip install -r requirements.txt主要な依存関係:
opencv-python: 画像処理・コンピュータビジョンeasyocr: OCRによるテキスト認識slack-sdk: Slack API連携pyautogui: GUI自動化(マウス・キーボード操作)pygetwindow: ウィンドウ管理psutil: プロセス監視
-
Slack Appを作成し、以下の情報を取得:
- Bot User OAuth Token (xoxb-で始まる)
- App ID
- Client ID
- Client Secret
- Signing Secret
- Verification Token
-
.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各プリンタの電源ON時のディスプレイ画像を撮影し、reference_images/ フォルダに保存:
reference_images/
├── guider2s_a_on.jpg
├── guider2s_b_on.jpg
└── creator4s_on.jpg
USBカメラを各プリンタのディスプレイを撮影できる位置に設置し、config/config.json でカメラインデックスを設定。
config/config.json で以下を調整:
- プリンタごとのカメラインデックス
- 温度閾値
- 画像類似度閾値
- Slackチャンネル
python main.py monitorオプション:
--interval 30: 監視間隔を30秒に設定--log-level DEBUG: デバッグレベルのログ出力
# 全プリンタの現在状況をチェック
python main.py check
# 特定プリンタのみチェック
python main.py check --printer Guider2S_Apython main.py testWindows 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\ にインストールされている必要があります。
{
"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())"- 照明環境を統一
- カメラ位置を固定
image_similarity_thresholdを調整(0.6-0.9の範囲)- 参照画像を高品質で再撮影
- ディスプレイの解像度と明度を確認
- カメラのフォーカスを調整
status_extractor.pyの前処理パラメータを調整
- ボットトークンの権限を確認(
chat:write,chat:write.public) - チャンネルにボットを招待
- ネットワーク接続を確認
-
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
-
PyAutoGUI/PyGetWindowが初期化できない場合
# パッケージの再インストール pip uninstall pyautogui pygetwindow pip install pyautogui pygetwindow -
フェイルセーフが働く場合
- マウスを画面左上に移動すると自動停止します
pyautogui.FAILSAFE = Falseで無効化可能(非推奨)
-
ウィンドウ操作が失敗する場合
- FlashPrintが最小化されていないか確認
- 他のアプリケーションがフルスクリーンになっていないか確認
- Windows のアクセス許可設定を確認
-
GUI操作の精度が低い場合
- 画面解像度を1920x1080に設定
- 画面のスケーリングを100%に設定
- FlashPrint 5のバージョンを確認(最新版推奨)
test_flashprint_path.pyでパス検出をテスト
- Python 3.8+
- Windows 11(GUI自動化機能用)
- OpenCV対応のWebカメラ
- インターネット接続(Slack API用)
- 十分な照明環境
- 安定したカメラ設置
- 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で通知してください。