2019年4月29日月曜日

OctoPrint の API を試しに使ってみました

環境

API サーバー (OctoPrint) 側

  • Raspberry Pi 3 Model B
  • Raspbian GNU/Linux 9.4 (stretch)
  • OctoPrint, version 1.3.9

API クライアント 側

  • Windows 10 Home 64Bit
  • Windows Subsystem for Linux: Ubuntu 18.04.2 LTS

まずは API キー無しでアクセスしてみた

OctoPrint と 3D プリンターの接続情報は今回の環境では以下の URL で取得できるようです。

http://octoprint:5000/api/connection

curl コマンドで API キー無しでこの URL にアクセスすると。。。

$ curl http://octoprint:5000/api/connection
No API key provided

というように、API キーが無いので取得できませんでした。

API キーを確認

ブラウザから OctoPrint の URL http://octoprint:5000/api にアクセスしました。

画面上部のスパナアイコンの Settings をクリックしました。

API タブで API キーを確認しました。今回は C14B4FA3BE854CAAA740A43BEAFD6FB3 でした。

API キーを指定してアクセスしてみた

以下のように curl コマンドで API キーを指定すると以下のように取得できました。 (今回は OctoPrint と 3D プリンターを接 続していないので "state": "Closed" となっていると思われます)

$ curl --header 'X-Api-Key: C14B4FA3BE854CAAA740A43BEAFD6FB3' http://octoprint:5000/api/connection
{
  "current": {
    "baudrate": null,
    "port": null,
    "printerProfile": "_default",
    "state": "Closed"
  },
  "options": {
    "baudratePreference": null,
    "baudrates": [
      250000,
      230400,
      115200,
      57600,
      38400,
      19200,
      9600
    ],
    "portPreference": null,
    "ports": [],
    "printerProfilePreference": "_default",
    "printerProfiles": [
      {
        "id": "_default",
        "name": "Default"
      }
    ]
  }
}

念のため、使用した API キーを無効化しておく

本来 API キーは公開せず秘密にしておくものですが、このブログで公開してしまったので無効にしておきます。

ブラウザで API キーを確認した画面で、更新のアイコンの Generate new API Key をクリックして新しい API キーを生成しました。これで今まで使っていた API キーは使えなくなるようです。

試しに更新前の API キーで API にアクセスしてみたところ。。。

$ curl --header 'X-Api-Key: C14B4FA3BE854CAAA740A43BEAFD6FB3' http://octoprint:5000/api/connecion
Invalid API key

というように期待通り情報を取得できませんでした。

参考

  • http://docs.octoprint.org/en/master/api/

2019年4月16日火曜日

Raspberry Pi 起動時に OctoPrint も自動起動

Raspberry Pi で OS 起動時に OctoPrint も自動で起動するように設定しました。といっても、 https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian/2337 に書いてあることをほぼそのまま実施しただけです。

環境

  • Raspberry Pi 3 model B
  • Raspbian GNU/Linux 9.4 (stretch)
  • OctoPrint version 1.3.9

テンポラリなディレクトリに以下のファイルをダウンロードしました。

$ wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init
$ wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.default

ダウンロードした octoprint.default を以下のように修正しました。

$ diff -u octoprint.default{.org,}
--- octoprint.default.org       2019-04-13 20:46:49.355866063 +0900
+++ octoprint.default   2019-04-13 20:58:54.984395654 +0900
@@ -13,7 +13,7 @@
 PORT=5000

 # Path to the OctoPrint executable, you need to set this to match your installation!
-#DAEMON=/home/pi/OctoPrint/venv/bin/octoprint
+DAEMON=/home/pi/OctoPrint/venv/bin/octoprint

 # What arguments to pass to octoprint, usually no need to touch this
 DAEMON_ARGS="--port=$PORT"

octoprint.default の以下の項目はコメントアウトしたままにしてます

  • #BASEDIR=/home/pi/.octoprint
  • #CONFIGFILE=/home/pi/.octoprint/config.yaml

スクリプトのオーナーを root に変更しました。

$ sudo chown root:root octoprint.default
$ sudo chown root:root octoprint.init

スクリプトをインストールしました

$ sudo mv octoprint.init /etc/init.d/octoprint
$ sudo mv octoprint.default /etc/default/octoprint

/etc/init.d/octoprint に実行権限を付与しました

$ sudo chmod +x /etc/init.d/octoprint

オートスタートに登録しました

$ sudo update-rc.d octoprint defaults

OctoPrint を起動しました

$ sudo service octoprint start

OS 起動時に OctoPrint も自動的に起動しました。