普段、Repetier-ServerをWebブラウザより利用させていただいております。
しかし、実際の調整作業が終わり印刷を開始するとブラウザを開いたままにしておくのは邪魔。でも印刷進捗のモニターはしたいと感じ下画像のようなガジェット風アプリを作成してみました。
製作にはNode.js+Electronを利用しました。
Repetier-ServerにWebSocketで接続してWeb APIを利用して各種情報を取得。ガジェット上に表示しています。
[詳細について]
Repetier-Serverに接続するには
var apikey = 'Repetier-Serverから取得したkey'; var ws = new WerbSocket(`ws://localhost:3344/socket/?apikey=${apikey};Repetier-Serverは10秒に1回Pingコマンドを受け取らないと自動で接続を閉じます。
その為にsetIntervalを利用するなどして定期的にPingを送信する必要があります。
function sendPing() { var req = { action: 'ping', data: {}, printer: [printer-slug], callback_id: getCallbackId() }; ws.send(JSON.stringify(req)); if(debugLevel & recordPing) console.log(`[ping]send : ${JSON.stringify(req)}`); } setInterval('sendPing()', 10000);[printer-slug]は http://localhost:3344/printer/info の返答内に記載があるslugの値を記載します。
あとは、任意のコマンドでプリンターの情報を取得し結果を画面に反映しています。
例)stateListを取得。
var req = { action: 'stateList', data: {}, printer: [printer-slug], callback_id: getCallBackId() }; var ret = ws.send(JSON.stringify(req)); // ret変数内にコマンド実行結果が保存される。