OctoPrintの導入とLine通知機能の実装

「OctoPrintの導入とLine通知機能の実装」のアイキャッチ画像

こんにちは

prusa i3 MK3S+に関する記事としては,今回で6記事目になります.

前回までで組立およびキャリブレーションとテスト印刷が完了し,無事,正常に動作することを確認することができました.

ここで,このシリーズを終わりにしても良かったのですが,勢いで,「OctoPrintの導入」も行い,PCから無線で3Dプリンタを管理できるようにしたので,自身のためにも書き残しておこうと思います.

また,Lineに印刷に関する通知機能も実装しましたので,そちらについても触れておきたいと思います.

これらの話はprusa i3 MK3S+とは関係なく,3Dプリンタを使っている方に参考になるかと思いますので,よければ見ていってください.

OctoPrintとは

OctoPrint」とは接続されたプリンターにwebインターフェースを提供するオープンソースの3Dプリンタコントローラアプリケーションです.

できることはプラグイン次第で様々ですが,基本的な機能としては以下のようなものがあります.

  • プリントヘッド,ヒードベッドの温度監視
  • 各軸やエクストルーダの遠隔操作
  • Wi-FiでGコードをアップロード
  • 印刷の開始・停止・一時停止の遠隔制御
  • webカメラを用いた印刷監視
  • Gコードの視覚化(非同期)

などです.

私の「prusa i3 MKS3+」の場合,印刷する際,毎回GコードをSDカードに移すか,USBで本体とPCを繋ぐ必要があり,また印刷の様子も本体を見に行かねばならないという状態でしたが,OctoPrintを導入することでこれらの問題を解決することができます.

OctoPrintの導入についてですが,調べると数多の優良な記事が見つかります.

私が改めてまとめるまでもないと思いますので,ここでは詳細は割愛し,大まかな流れと参考にさせていただいた記事を引用させていただきたいと思います.

用意するもの

まず用意するものが,

  • Raspberry Pi(Model 3B, 3B+, 4Bが推奨)
  • MicroSDカード:OctoPiをインストールするために使用
  • USBケーブル:本体とRaspberryPiを接続するのに使用
  • 電源:RaspberryPi用の電源

RaspberryPi 3Bなどが推奨されているのは,毎回のGコードのアップロードを快適に行なったり,webカメラでタイムラプスを撮ったりしたければ,なるべくマシンパワーがあるものを最初から選んでおくのが吉ですよ,ということらしいです.

Raspberry Pi Zero W has no 5GHz Wi-Fi (only 2.4GHz), and a somewhat weak processor. It does not support using a large amount of Octoprint-plugins or streaming of video and is not officially recommended by the OctoPrint project. Use more powerful models like the 3B+ or the latest RPI 4 to take full advantage of Octoprint. However, they do need to be connected by USB, plus they need a separate PSU, which results in a less clean setup.
(Deeplで翻訳:Raspberry Pi Zero Wは、5GHzのWi-Fiがなく(2.4GHzのみ)、プロセッサもやや弱いです。大量のOctoprint-pluginsの使用やビデオのストリーミングには対応しておらず、OctoPrintプロジェクトでは公式に推奨していません。Octoprintを最大限に活用するためには、3B+や最新のRPI 4のようなよりパワフルなモデルをお使いください。ただし、これらの機種はUSBで接続する必要があり、さらに別の電源が必要となるため、セットアップがすっきりしません。)

引用元: Prusa Knowledge Base

prusaでraspberryPi zeroを使ったセットアップをする場合はこちらにその方法が書かれています.

RaspberryPiをPrusa i3 MK3S+にマウントするためのケースですが,すでにThingiverceにありましたので,こちらをありがたく印刷して使わせていただくことにしました.

早速印刷し,

組み立てます.

あっというまに完成です.
こんなケースが家で作れるなんて感動です.

OctoPi導入の大まかな流れ

次にOctoPi導入の大まかな流れです.

流れはざっくり,

  1. OctoPiOSをRaspberryPiにインストールする.
  2. 「octopi-wpa-supplicant.txt」を編集し,OctoPiに接続するWi-Fiアクセスポイントを登録する.
  3. OctoPiを起動し,各種設定(パスワード変更,タイムゾーン変更など)を行う.(SSH接続しておくと手元のマシンで操作できるので,ディスプレイやキーボード,マウスを用意する必要がなくて便利です.)
  4. PCのブラウザから「http://octoPi.local」にアクセスする.
  5. 案内に従って設定を行う.
  6. 接続できることを確認し,終了

詳しい流れについてはこちらの記事が非常に参考になりましたので,引用させていただきます.

少し細かい部分について

Mac環境からのSSH接続

Windows環境の方の多くは,RaspberryPiへのssh接続の手段として,「Teraterm」を用いていましたが,Mac環境では使えません.

mac環境でssh接続して,OctoPiにアクセスするにはこちらの記事が参考になりました.ここでは割愛しますが,私はこちらを参考に公開鍵と秘密鍵を生成して,認証方式をパスワード認証方式から公開鍵認証方式に変更しておきました.

Prusa i3 MK2S +のプリンタプロファイルについて

また5.の「案内に従って〜」の部分では,プリンタ固有の値を設定する部分があります.

Prusaの公式ページをよく探すとこの設定部分についても,詳しく記載がありました.

Select “Printer profiles” and click the pen icon (purple square) to edit. Under “Print bed & Build volume”, change the values in the table below. All other values can be left to default. This will only affect Octoprint’s control over your printer, and will not affect sliced G-codes.
(Deeplで翻訳:Printer profiles “を選択し、ペンアイコン(紫の四角)をクリックして編集します。Print bed & Build volume」で、下の表の値を変更します。その他の値はデフォルトのままで構いません。この設定は、Octoprintのプリンタに対する制御にのみ影響し、スライスされたGコードには影響しません。)

引用元:Prusa Knowledge Base

これにしたがってプリンタプロファイルを設定します.

言語を日本語に変更

OctoPiはデフォルトだと言語が英語なので,日本語に変更します.

日本語への変更については,こちらの記事のオマケを参考にさせていただきました.

Line通知機能の実装

続いてLine通知機能の実装です.

OctoPrintのプラグインの中に,Slack等に印刷完了やエラーといった通知を送るプラグインはありましたが,Lineに通知ができるものは見当たりませんでした.

私にはLineで通知が来てくれた方が一番気が付きやすいので,Lineにこれらの通知を送りたいと考え,実装することにしました.

大まかな流れとしては,

  1. プラグイン「Octo-IFTTT」をインストール
  2. IFTTTに登録
  3. IFTTTのwebhookを使ってLineに通知が来るよう設定

と言った感じです.

これについても,調べると非常に参考になる記事がたくさん出てくるので,引用させていただきます.

プラグイン「OctoPi-IFTTT」のインストール

OctoPrintのプラグインにはIFTTTのwebhooksと連携するためのプラグイン「OctoPrint-IFTTT」が存在します.

この「OctoPrint-IFTTT」の使い方については,こちらの記事が参考になりました.

様々な通知を設定できるようですが,あまり通知が多くても嫌なので,最も基本的な「印刷開始」「印刷失敗」「印刷完了」の3つの通知がくるように設定したい思います.

IFTTTに登録・webhooksとLineの連携

次にIFTTTに登録します.

IFTTT(イフト:IF This Then That)を使うことで,あるwebサービスと別のwebサービスを簡単に連携させて,新しいサービスにすることができます.

ここでやりたいことは,IFTTTのwebhooksを「トリガー」に,指定のトリガーが発火したら「Line通知をする」という「アクション」をさせる仕組みを作ることです.

IFTTTの無料版では3つまでアプレット(どのサービスに何をさせるのかの指示)を設定することができます.

私はこの3枠をそれぞれ「印刷開始」「印刷失敗」「印刷完了」の3つに割り当てることにしました.

作成したものがこちら↓

これらの中身はこのようになっています.

「IF:webリクエストが来たら」
「Then : Lineメッセージを送る」

という非常に単純な設定です.

もう少し中身中身を見てみます.

例えば「印刷開始」のアプレットの中身はこのようになっています.

この「Event Name」に先程の「OctoPrint-IFTTT」で設定した「TriggerName」を設定することで,トリガーを検出します.

このトリガーが発火するとLineメッセージが来ます.

Line側の設定はこのようになっています.

「ぷるさ」というグループに設定したメッセージが来るように設定しました.

実際の動作

実際に動作させるとこんな感じです.

まず印刷を開始すると…

ちゃんと通知が来ました.

そして,印刷が完了すると…

ちゃんと知らせてくれます.

もちろん外出していてもしっかりと通知がきます.

まとめ

今回はOctoPrint の導入とLine通知機能の実装を行いました.

まずOctoPrintの導入によって,これまで必要だったGコード移動のためのSDカードの抜き差しが必要なくなり,家の中からであればどこからでも,3Dプリンタの操作が行えるようになりました.

また,OctoPrintのプラグインである,「OctoPrint-IFTTT」と「IFTTT」を利用することで,煩雑なプログラミングをすることなく,「印刷開始」「印刷完了」「印刷失敗」といった通知を受け取る仕組みを作りました.

これにより,外出先からでも印刷が完了したかどうか確認できるようになりました.

今後はラズパイカメラor別のネットワークカメラを取り付けて,外出先から3Dプリンタの様子を画像情報として取得したいと考えています.

(とはいえ,3Dプリンタやラズパイの購入等,先行投資がかなり嵩んでしまったので,しばらく先になりそうです.)

とりあえずprusa i3 MK3S+に関する記事としてはここで完結としたいと思いますが,今後も3Dプリンタに関する記事は挙げていきたいと思いますので,よろしくお願いします.

それでは!