Octoprint(ラズベリーパイ)を外出先からインターネット接続

Octoprintは3Dプリンターに無くてはならないソフトウェアだ。しかしながらOctoprintは自宅のLANに接続出来るが外出先からは使えない。

The Spaghetti DetectiveやOctoPrint Anywhereなどのプラグインを使えばインターネット経由で監視出来るが、無料での制限事項が大きく、ほとんど使い物にはならない。

今回、自宅のoctoprintを簡単にインターネット経由で接続する方法を実施したので紹介する。

3DプリンターとOctoprintについて

私が使っている3Dプリンターは、Creality Ender-3 V2で、プリンター単体で印刷出来るものであるが、Octoprintに繋ぐことで、使い勝手が飛躍的に向上する。

Octoprintには、以下の機能がある。

  1. スライサーソフトで作成したstlファイルをSDカードを介してプリンターに読込ませる必要がなく、パソコンからLAN経由でプリンターへアップロードして印刷を開始できる。
  2. RaspberryPiにカメラを付加することで、タイムラプスを作成することが出来る。
  3. LAN上のスマホやパソコンで、離れた場所にて温度や印刷レイヤーを確認したり、カメラで印刷動作を監視することが出来る。
  4. その他、豊富なプラグインソフトが利用出来るので、機能追加が簡単に出来る。

Octoprintの詳細は下記記事で紹介している。

3DプリンターがDIYを楽しくする - OctoPiをインストール -
よく見かける3Dプリンターで印刷している様子の動画。これを撮りたくてOctoPiをインストールしてみました。OctoPiは3Dプリンターと接続して管理するソフトOctoPrintをRaspberryPi (ラズベリーパイ)と言うマイコンに...

外出先からインターネットでOctoprintに接続する

これまで、自宅内で、家庭内LAN上に接続したパソコンやスマホでOctoprintに接続してブラウザで見ていたが、外出中は、The Spaghetti Detectiveのプラグインを追加して使用していた。

ところが、The Spaghetti Detectiveの無料版では、機能が限定的で、ベッド温度、ノズル温度の他、印刷時間、カメラ静止画像程度しか利用出来なかった。

特に監視上重要なカメラ画像は数秒に1画面で送信され、動作しているのかを判断するには、しばらく目を凝らして見ていなければならず、利用上の不便さは免れなかった。

他のプラグインでもほぼ同じことで、月に数ドル程度を払えば満足した機能となるが、そこまでする必要もなく、現在のOctoprintをインターネット上に開放することに決めた。

方法としては、自宅の光回線(Nuro光)のルーター(ONU)のポートフォワーディング機能を使って、自宅外(外出先)からスマホで自宅のラズベリーパイ(RaspberryPi)に転送するようにした。

ラズベリーパイにはOctoprintがインストールされており、Octoprintがブラウザ上に表示されることになる。

以下に、各設定について詳細に説明をしています。

ラズベリーパイ(RaspberryPi)の設定

ラズベリーパイ側の設定では、まず、IPアドレスを固定化することです。

これは、IPアドレスが電源のONの度に変化するので、ポートフォワーディングのため固定化する必要があります。

ラズベリーパイの現在のIPアドレスを調べる

ラズベリーパイにディスプレイとキーボードを接続するか、sshで下記IDとパスワードでログインします。

octopi login: pi
password: raspberry

まず、現在のIPアドレスを調べるため、次のコマンド”ifconfig”を入力する。

pi@octopi:~ $ ifconfig
eth0: flags=4163 mtu 1500
inet 192.168.1.17 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::da54:7637:adeb:1cb1 prefixlen 64 scopeid 0x20

inet6 240d:1e:265:ba00:8bae:9bc6:1b30:80f prefixlen 64 scopeid 0x0
ether b8:27:eb:50:e0:ff txqueuelen 1000 (Ethernet)(MACアドレスはルーター設定に必要)
RX packets 3568 bytes 514490 (502.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2465 bytes 507799 (495.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 1179 bytes 913550 (892.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1179 bytes 913550 (892.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4099 mtu 1500
ether b8:27:eb:05:b5:aa txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

現在、IPアドレスは、電源オン時にDHCPサーバーが自動割振りした”192.168.1.17″となっています。

このアドレスを固定IPアドレスに設定しますが、DHCPサーバーにて割振りされる他のIPアドレスと重ならないように自動割振りの範囲外にIPアドレスを決める必要があります。

ここでは、DHCPサーバーにて自動割振りされるIPアドレスを”192.168.1.1″から”192.168.1.100”までとして、ラズベリーパイのIPアドレスを”192.168.1.101″に設定します。

デフォルトゲートウェイのIPアドレスを調べる

コマンド”route”で、ゲートウェイのIPアドレスを調べます。

pi@octopi:~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0

デフォルトゲートウェイのIPアドレスは、”192.168.1.1″と分かりました。

ラズベリーパイのIPアドレスを固定化する

次に、ラズベリーパイのIPアドレスを固定化するため、”dhhcpcd.conf”を編集しますが、その前にコピーを取っておきます。(もしも、動作がおかしくなった時に元に戻すため)

次にエディターを起動しますが、ここでは”nano”を使っています。

pi@octopi:~ $ sudo cp /etc/dhcpcd.conf /etc/dhhcpcd.org.conf(コピーを取っておく)
pi@octopi:~ $ sudo nano /etc/dhcpcd.conf(エディターを起動)

下記の”static IP configuration:”部を変更します。

ここでは、IPアドレスを”192.168.1.101″に設定しています。

また、先ほど調べたゲートウェイのIPアドレスを”routers”と”domain_name_servers”に設定します。

#Example static IP configuration:
interface eth0
static ip_address=192.168.1.101/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

以上でラズベリーパイの設定は完了です。

上記の設定は、ラズベリーパイをイーサネットでLAN接続した場合を示しています。

WiFiで接続する場合は、”interface eth0″でなく、”interface wlan0″を編集します。(要領は同じなので、詳細は省略します)

ラズベリーパイのIPアドレスの確認

上記設定後、ラズベリーパイを再起動して、IPアドレスが”192.168.1.101″になっていることを確認します。

pi@octopi:~ $ ifconfig
eth0: flags=4163 mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 240d:1e:265:ba00:ba27:ebff:fe50:e0ff prefixlen 128 scopeid 0x0
inet6 240d:1e:265:ba00:8bae:9bc6:1b30:80f prefixlen 64 scopeid 0x0
inet6 fe80::da54:7637:adeb:1cb1 prefixlen 64 scopeid 0x20

ether b8:27:eb:50:e0:ff txqueuelen 1000 (Ethernet)
RX packets 14505 bytes 2069291 (1.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6576 bytes 1294520 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 7292 bytes 5495442 (5.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7292 bytes 5495442 (5.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163 mtu 1500
inet 192.168.1.7 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 240d:1e:265:ba00::1 prefixlen 128 scopeid 0x0
inet6 fe80::cb3f:336f:60ec:90a3 prefixlen 64 scopeid 0x20

inet6 240d:1e:265:ba00:d1b0:3818:eea0:f098 prefixlen 64 scopeid 0x0
ether b8:27:eb:05:b5:aa txqueuelen 1000 (Ethernet)
RX packets 1739 bytes 241853 (236.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 893 bytes 182664 (178.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ルーター(ONU)の設定

次にルーターの設定を行いますが、自宅のインターネット回線は光回線なのでONUの設定を行います。

回線契約は、Fon光ですが、Nuro光と同一で、ONU(ルーター)にはF660Tを使用しています。

F660Tを次の手順で設定します。

  1. ルーターを起動、ログインする
  2. 自動割振りIPアドレスの範囲を設定する
  3. IPアドレスとMACアドレスを関連付ける
  4. ポートフォワーディングの設定を行う

以上のステップで完了です。

以下、順に説明します。

ルーターを起動、ログインする

ルーターの起動はブラウザにアドレス”192.168.1.1″を入力します。

次の画面が表示されるので、ユーザー名に”admin”、パスワードに既に設定している場合はそのパスワードを、未設定の場合は”admin”を入力してログインします。

自動割振りIPアドレスの範囲を設定する

次に、「ネットワーク」-「LAN」-「ダイナミックアドレス管理(IV4)」を開き、DHCP(Dynamic Host Configuration Protocol)の自動割振りIPアドレスの範囲を「DHCPプール終了IPアドレス」に入力して、「設定」を押します。

ここでは、「DHCPプール終了IPアドレス」を”192.168.1.100″に設定しています。

IPアドレスとMACアドレスを関連付ける

次に、ラズベリーパイに設定した固定IPアドレスにラズベリーパイのMACアドレスを関連付けます。

MACアドレスは先ほどのRaspberryPiで調べた値を入力します。

スクリーンショットでは、既に設定済みの値が表示されています。

ポートフォワーディングの設定を行う

ポートフォワーディングとは、インターネットからのアクセスをポート番号にて判別して、目的のマシン(この場合、ラズベリーパイ)にフォワード(転送)することである。

インターネットからアクセスする時、ルーターのグローバルIPアドレスとポート番号が必要ですが、ポートフォワーディングでは、ポート番号と先ほど固定化したIPアドレス(LAN内のIPアドレスでプライベートIPアドレスと言う)を設定します。

この設定によって、ルーターにアクセスがあった時、そのポート番号に割当てられたIPアドレスに要求が転送されます。

ポート番号は、ウェルノウンポート番号 (0–1023)を避けた方が良いので、ここではポート番号を”8080″としました。

スクリーンショットでは、既に設定済みの値が画面下に表示されています。

外部からインターネット経由で自宅ルーターに接続してみる

自宅ルーターのグローバルIPアドレスを調べる

外部からインターネットで自宅ルーターにアクセスするには、自宅ルーターのグローバルIPアドレスを知る必要があります。

このIPアドレスを”確認くん“を使って調べることが出来ます。

“確認くん”をパソコンのブラウザでクリックすると下記画面が表示され、グローバルIPアドレスが表示されます。(赤枠で囲んだ部分)

自宅ラズベリーパイ(Octoprint)にアクセスする

スマホなどをWiFiからモバイル通信に切換え、ブラウザを起動します。

URLに自宅ルーターのグローバルIPアドレスとポート番号を下記のようにコロン”:”で連結して入力します。

“http://218.185.174.252:8080”

すると、下記のように自宅のラズベリーパイに繋がり”octoprint”が表示されます。

ブラウザのURLに”http://218.185.174.252:8080″と入力すると、インターネット経由で自宅のOctoprintにアクセスすることが可能となる。

これにより、自宅LANでOctoprintを利用するのと同じように外出先からも利用出来るようになる。

まとめ

octoprintは3Dプリンターを活用する上で非常に効果的な手段です。そして、ラズベリーパイを家庭内LANで接続している場合、WiFi接続などでその稼働状況を他の部屋から監視できるので非常に便利です。

一方、外出先から監視する必要性もあり、この場合、自宅にVPNサーバーを自宅LANに接続するか、The Spaghetti DetectiveやOctoPrint Anywhereなどのプラグインソフトを使うことで可能となります。

ところが、VPNサーバーを立上げるのも面倒ですし、また、プラグインソフト(無料版)の使用には制限があり、OctoPrintと同レベルでの使用は出来ません。

有料版は、監視時間の制限がなく、カメラ画像が動画で見られたり、印刷状況や印刷情報などが表示されますが、月額の使用料が5~10USDと高額です。

ここで紹介した方法は、設定が非常に簡単な上、家庭内で見ているoctoprintをそのまま外出先で無料で見られるのが大きなメリットです。

タイトルとURLをコピーしました