見出し画像

Klipperでプリント完了時にLINE通知する

Klipperで稼働する3Dプリンターで、プリントが完了した際にLINEにメッセージ送信するごく簡単な一例。

仕組み

・Line notifyという外部からLineへメッセージ送信等ができるサービスを利用し、メッセージ送信するシェルスクリプトを作成
・kiauhでインストール可能なG-code shell commandの機能で↑のシェルスクリプトを実行するマクロ作成
・G-codeの最後に作成したマクロを追記
といった具合です。

手順

kiauhのインストールメニューの 4)Advanced Menu  → 8)G-Code Shell Commandからインストールします。
インストール後にサンプルをインストールするか?的なことを聞かれますがインストールしなくてokです。

Line notifyでトークン(文字列)を取得し控えておきます
(この手順はぐぐると親切な丁寧なサイトがイロイロあるので調べて・・)

klipperを実行してるラズパイ等にSSHでログインして、任意のフォルダにスクリプトを作成します。(本例では ~/script/sendline.sh で作成しています)
*****部分に↑で取得したトークンを記入してください。

#!/bin/sh

#line notifyのトークン
token="*****************"

mess="3Dプリンターの出力が完了しました。"

curl -X POST -H "Authorization: Bearer $token" -F "message=$mess" https://notify-api.line.me/api/notify

作成したスクリプトに実行権限を与えます。

 chmod u+x ~/script/sendline.sh 

スクリプトのテストをします。
作成したスクリプトを実行してLineにメッセージが送信されたらok

 ~/script/sendline.sh

klipperのprinter.cfgのマクロ設定部に下記のマクロを追加します。
commad; の部分には作成したスクリプトをフルパスで設定してください。

[gcode_shell_command send_line]
command: ~/script/sendline.sh
timeout: 2.
verbose: False

[gcode_macro SEND_END_MESSAGE]
gcode:
    RUN_SHELL_COMMAND CMD=send_line

設定したマクロのテスト。
Mainsail等でFirmware restartした後、コンソールから SEND_END_MESSAGE のコマンドを送信して↑と同様にLineにメッセージが送信されたらok

ここまでくれば勝ったも同然。
あとはプリントするGコードの末尾に SEND_END_MESSAGE を追加しておけば、プリント完了後にLineにメッセージが送信されます。
スライサーの終了時に追加するGコードに設定しておけば手間がかかりません。
※画像はPrusa Slicerでの設定です。

以上です。

今回のはごく簡単なメッセージ送信のスクリプトですが、あれこれすればカメラ画像を送ったりすることも可能、
というかG-codeからシェルスクリプトで実行するかたちなので、なんでも可能です。

G-code shell command。G-codeからなんでもできてとても便利ですが、悪意をもって使われると危険な機能でもある旨お忘れなく。


この記事が気に入ったらサポートをしてみませんか?