How to setup Fluidd and timelapse component @Creality K1 !

はじめに

こんにちは,孔明です.引き続きCreality K1ネタです. 今回は内蔵fluiddのWEB UIを利用可能にする手順と,そのfluiddにタイムラプスコンポーネントを追加&利用可能にする手順の備忘録をお送りします.

!注意!

あくまでこの手順は私の備忘録であり,メーカや公式が推奨している方法ではありません. また,この手順を真似した際に引き起こされる不具合や不利益について私は一切の責任を持ちません.自己責任でお願いしますね!

環境

  • exploit用ブラウザ: Edge @Windows11
  • SSH用端末: GitBash @Windows11
  • K1のファームウェア: V1.2.9.15(最新版だとこの手順は使えないとの噂です)
  • K1用純正カメラ(タイムラプスを行う場合)

1. Exploit for SSH

例によってSSHパスフレーズのハッシュを上書きし,SSHログインできるようにexploitします.済んでいる方はこの節は飛ばして問題ありません. 私はこのページの手順をEdgeで行いました.chromeは警告が出てダメでした.

2. Setup Fluidd

この動画の概要欄にある手順に従えばOKです.

ちなみにこの動画はTwitterで教えていただきました.感謝しかない…

概要欄の手順はわかりにくいポイントもあったので一応解説を添えて手順を転記しておきます.

  1. SSHでK1に接続.

  2. 以下のコマンドで設定ファイルをコピー.

     cp /usr/share/moonraker/moonraker.conf /usr/data/printer_data/config/
    
  3. 以下のコマンドで設定ファイルを開く.viは初見さんに優しくないエディタなので,使い方をご存知ない方は「vi 使い方」でググってください…
     vi /etc/init.d/S50nginx
    
  4. 以下の記述を検索して,#を削除してコメントアウト解除. これを,
     # mkdir -p /var/log/nginx /var/tmp/nginx
     # start-stop-daemon -S -x "$NGINX" -p "$PIDFILE” 
    

    こう!

     mkdir -p /var/log/nginx /var/tmp/nginx
     start-stop-daemon -S -x "$NGINX" -p "$PIDFILE” 
    
  5. 以下のコマンドで別の設定ファイルを開きます.
     vi /etc/init.d/S56moonraker_service
    
  6. 「start」でファイル内を検索して,#でコメントアウトされたものがあればそれを解除しまs.私のときは37行目あたりに #startがあった記憶です.これをstartにすればOK.

  7. K1本体の電源を入れ直します.

  8. K1と同じネットワークにあるブラウザから,K1のIPアドレス:4408に接続できたらOK!例えば,K1のIPアドレスが192.168.1.100であれば,192.168.1.100:4408に接続します.

Setup Timelapse

せっかくFluiddが使えるようになったので,タイムラプス機能を追加します. これでCreality Cloudのスマホアプリから脱却できます.

  1. K1にSSHで接続.

  2. 以下のコマンドでtimelapseコンポーネントを取得.

     cd ~
     git clone https://github.com/mainsail-crew/moonraker-timelapse.git
    
  3. 以下のコマンドで設定ファイルをコピー.
     cd ~
     cp moonraker-timelapse/klipper_macro/timelapse.cfg /usr/data/printer_data/config/timelapse.cfg
    
  4. 以下のコマンドでタイムラプスコンポーネントのPythonスクリプトをコピー.
     cp moonraker-timelapse/component/timelapse.py /usr/share/moonraker/moonraker/components/timelapse.py
    
  5. 以下のコマンドでコピーしたスクリプトを開きます.
     vi /usr/share/moonraker/moonraker/components/timelapse.py
    
  6. ffmpegのコマンドを修正します.672~682行目にある以下の箇所を,
     cmd = self.ffmpeg_binary_path \
         + " -r " + str(fps) \
         + " -i '" + inputfiles + "'" \
         + filterParam \
         + " -threads 2 -g 5" \
         + " -crf " + str(self.config['constant_rate_factor']) \
         + " -vcodec libx264" \
         + " -pix_fmt " + self.config['pixelformat'] \
         + " -an" \
         + " " + self.config['extraoutputparams'] \
         + " '" + self.temp_dir + outfile + ".mp4' -y"
    

    このように編集します↓

     cmd = self.ffmpeg_binary_path \
         + " -r " + str(fps) \
         + " -i '" + inputfiles + "'" \
         + filterParam \
         + " -threads 2 -g 5" \
         + " -vcodec h264_v4l2m2m" \
         + " -pix_fmt " + self.config['pixelformat'] \
         + " -an" \
         + " " + self.config['extraoutputparams'] \
         + " '" + self.temp_dir + outfile + ".mp4' -y"
    

    これはK1のボードにインストールされているffmpegがlibx264を持っておらず,-crfオプションのパースもできないためです.

  7. 編集が面倒な方は,私のリポジトリに編集済みのものを公開しているのでこちらを使ってもOKです.

     cd ~
     git clone https://github.com/kim-xps12/fluidd_timelapse_k1
     cp fluidd_timelapse_k1/timelapse.py /usr/share/moonraker/moonraker/components/timelapse.py
    
  8. ブラウザからFluiddのWeb UIへ接続しmoonraker.confを開いて,以下を追記します.
     [timelapse]
     ##   Following basic configuration is default to most images and don't need
     ##   to be changed in most scenarios. Only uncomment and change it if your
     ##   Image differ from standart installations. In most common scenarios 
     ##   a User only need [timelapse] in there configuration.
     #output_path: ~/timelapse/
     ##   Directory where the generated video will be saved
     #frame_path: /tmp/timelapse/
     ##   Directory where the temporary frames are saved
     #ffmpeg_binary_path: /usr/bin/ffmpeg
     ##   Directory where ffmpeg is installed
    
  9. ブラウザからFluiddのWeb UIへ接続しprinter.cfgを開いて,以下を追記します.
     [include timelapse.cfg]
    
  10. K1本体の電源を入れ直します.

  11. Fluiddの左バーにTimelapseの項目が追加されたらOK. 印刷開始で自動的に撮影開始,印刷終了で画像からレンダリングしてmp4ファイルが作成されるはずです.細かな設定は公式ドキュメントを参照してください.

関連記事

おわりに

いかがでしたか?本記事の手順でCreality K1のポテンシャルを引き出せたら嬉しいです. それでは.

参考