Original Prusa MK4SをAIから扱うとき、最初に開くべきなのはクラウドの管理画面ではなく、同じLAN内のPrusaLinkである。Prusa公式資料と公式OpenAPIを2026年9月14日に確認し、APIバージョン、本体情報、状態、ジョブを読む順序をまとめた。実機への接続、認証、ファイル送信、印刷、一時停止・再開・停止は行っていない。
0. PrusaLinkとPrusa Connectを分ける
Prusa公式の説明では、MK4/SにはPrusaLinkが内蔵され、Wi-FiまたはEthernetでネットワークへ接続できる。PrusaLinkはプリンターと同じローカルネットワークで使うWebサービス、Prusa Connectはインターネット経由で複数プリンターを管理するクラウドサービスで、到達範囲と認証経路が違う。
ここで扱うのはMK4S本体のPrusaLinkである。MK3S+にRaspberry Piを足す旧Prusa-Linkの手順をMK4Sへ移さない。PrusaLinkをインターネットへ直接公開せず、必要ならVPNやネットワーク境界の内側から読む。
1. 本体IPとDigest認証を準備する
プリンターをWi-Fiまたは有線LANへ接続し、プリンター側のネットワーク画面でIPアドレスとPrusaLinkの初期設定を確認する。クライアントとプリンターが同じLAN、または許可したVPN経路にいることを確かめる。Digest認証のユーザー名・パスワードはURL、ソースコード、シェル履歴、共有ログへ書かない。
認証情報を秘密ストアからプロセスへ渡した上で、まずAPIの版を読む。
PRUSALINK_URL="http://<PRINTER_IP>"
curl --digest --fail --silent --show-error \
-u "${PRUSALINK_USER}:${PRUSALINK_PASSWORD}" \
"${PRUSALINK_URL}/api/version"
この応答が200になることは、認証されたHTTP読取が成立したという意味である。プリンターが造形可能、安全、または現在ジョブがないことまでは示さない。
2. 情報・状態・ジョブを順に読む
Prusa-Link-Webの公式OpenAPIでは、次の読取口が定義されている。
GET /api/version: APIのバージョン情報GET /api/v1/info: プリンター情報GET /api/v1/status: プリンター、ジョブ、転送、ストレージ、カメラのテレメトリGET /api/v1/job: 現在のジョブ情報
for endpoint in /api/v1/info /api/v1/status /api/v1/job; do
curl --digest --fail --silent --show-error \
-u "${PRUSALINK_USER}:${PRUSALINK_PASSWORD}" \
"${PRUSALINK_URL}${endpoint}"
done
監視側はHTTP statusとJSONを一緒に保存し、認証ヘッダーやURL内の資格情報は保存しない。/api/v1/statusのprinter.stateには、公式OpenAPI上でIDLE、BUSY、PRINTING、PAUSED、FINISHED、STOPPED、ERROR、ATTENTION、READYが定義されている。温度、軸位置、進行率、残り時間、転送状態などは応答に存在する場合だけ扱い、フィールドが無いことを停止や異常の証拠にしない。
PRINTINGやPAUSEDのときは、まずジョブID、進行率、温度、造形物の状態を人間が確認する。通信断、タイムアウト、空の応答を「停止した」と解釈せず、最後に正常に受け取った時刻と接続状態を分けて記録する。
3. ジョブ操作は監視の後に限定する
公式OpenAPIには、ジョブIDを指定した一時停止・再開・タイムラプス後の継続・停止が定義されている。
PUT /api/v1/job/{id}/pause 一時停止
PUT /api/v1/job/{id}/resume 再開
PUT /api/v1/job/{id}/continue タイムラプス撮影後に継続
DELETE /api/v1/job/{id} 停止
本稿ではどの操作も実行していない。AIへ操作を渡す場合でも、直前の/api/v1/jobで対象IDを読み、ノズル・ベッド・造形物・周囲・人が使える停止手段を確認してから、許可したジョブだけへ明示的に送る。APIの204 No ContentはHTTP処理の成功であり、物理的な停止や安全の証明ではない。
G-codeのファイルAPIにはアップロード、転送開始、印刷開始、転送停止がある。Print-After-Uploadヘッダーは印刷開始の有無を指定するが、初期のAI監視面へ任意G-code送信や印刷開始を含めない。状態の温度取得を、任意温度設定の根拠へ読み替えない。
4. 監視の最小ループ
最初の監視関数は次の3つへ分ける。
read_prusalink_version()
read_prusalink_status()
read_current_job()
read_prusalink_status()はstate、temp_nozzle、temp_bed、axis、progress、time_remainingなど、応答にある値だけを返す。定期取得の間隔は機器とネットワークへ合わせ、タイムアウト時に同じ操作を無制限に再送しない。再接続後は新しいstatus/jobを読んでから、監視を再開する。
PrusaLinkがローカルAPIであることは、ネットワーク内の誰でも読めるという意味ではない。LANの到達制御、Digest資格情報の保管、ログのマスキング、プリンター側のアップデート後のAPI再確認を別の管理項目にする。
5. ファームウェアの対象を混ぜない
Prusa-Firmware-Buddyの公式リポジトリはMK4Sをサポート対象に含む。2026年9月14日に確認した公式リリースでは、MK4Sを含む6.5.7と、XL系など別機種向けの新しいリリースが並んでいた。リポジトリ全体の最新番号だけをMK4Sの最新ファームウェアと断定せず、対象機種を含むリリースノートと本体表示を照合する。
完了判定
- PrusaLinkとPrusa Connectの到達範囲を分けて説明できる
- Digest認証で
/api/version、/api/v1/info、/api/v1/status、/api/v1/jobを読む順序を確認できる - 状態の
state、ジョブID、進行率、温度、残り時間を通信状態と分けて解釈できる - G-code送信・印刷開始・ジョブ操作を監視の初期権限へ混ぜていない
- 実機未接続、実API送信未実施であることを明示できる
機種の接続口とAI-4/自律度2の判定根拠はOriginal Prusa MK4Sの標本にまとめている。