PiControlを使ってRaspberry Piを遠隔操作する

タイトル画像

PiCockpitのPiControlは、Webブラウザからボタンをクリックするだけで、Raspberry Piをリモートコントロールできる強力な機能です。

コマンドの状態と出力が表示される。

新しいコマンドは、Raspberry Pi上のJSONファイルを編集するだけで追加できる。

この記事では、その方法を紹介し、PiControlを使ってどのようなものを作ることができるかを紹介します!

それはどのようなものですか?

デフォルトでは、Raspberry Piの電源オフ、再起動、クライアントのアップグレードの3つのコマンドが含まれており、すぐに利用できることに気づくだろう。

Webインターフェイスを使ってPiを遠隔操作するための基本的なコマンド(どのブラウザからでも可
このPiCockpit PiControlのスクリーンショットは、コマンドがどのように見えるかを示しています。

Raspberry PiとPiControlで何ができるの?

ここでは、それを使って作ることができるいくつかのものを紹介します。いずれにしても、PiCockpitのPiControlは、あなたのプロジェクトの使いやすいウェブインターフェース部分をサポートし、インターネット上での作業にかかる時間を大幅に短縮してくれます。

  • Raspberry Piのカメラモジュールを使ってスナップショットを撮影し、それを郵送する。
  • Raspberry PiのMinecraftサーバーを起動し、同様に停止します。
  • omxplayerを使った動画の再生(動画の無限ループを設定し、他の動画に切り替えたい場合は動画のループを停止することもできます。)
  • Raspberry Piのカメラモジュールを使って、ストップモーション・アニメーション・カメラを簡単にコントロールすることができます。
  • Wake on LAN機能を使って、Raspberry Piと同じネットワーク上にあるローカルコンピュータを起動させることができます。
  • 音を鳴らす(ハロウィンなどの悪ふざけとして)
  • ガレージドアなどのドアを、Z-Waveなどで適切な制御コマンドを発行して開く。
  • Raspberry PiでSSHサービスを開始し、それを停止する。
  • 鉄道模型の制御
  • リレイのオン/オフ(2つのボタンが必要ですが、"トグル "ボタンでも可能です。)
  • IR LEDを使ってテレビを操作(チャンネル切り替え、音量変更など)する。
  • ウェブインターフェースからのロケット発射

これらのプロジェクトアイデアのいくつかについては、ステップバイステップの説明書を公開する予定ですので、PiControlを始めてRaspberry Piをリモートコントロールするための簡単なガイドとなります。

PiControlでRaspberry Piのリモートコマンドボタンを追加するにはどうしたらいいですか?

Raspberry Pi上でJSONファイルを編集するだけで、簡単かつ安全に独自のコマンドを定義することができます。これはセキュリティ上の理由から行われています。ウェブインターフェイスからコマンドを追加できるようにPiCockpitを書くこともできましたが、もし誰かがあなたのPiCockpitのパスワードを知っていれば、望むコマンドを作成することができてしまいます。そのため、以下の簡単な説明に従って、あなたのPiに新しいJSONファイルを作成してください。

注意:ここでの説明は、コマンドラインを使ったことがない人でも理解できるように配慮されています。コマンドラインの使い方をご存知の方は、ファイルを作成してnanoで編集した方が簡単で早いと思います。

まず、スーパーユーザーモードでファイルブラウザを開く必要があります(このステップは、PiCockpit PiControlの設定ファイルを、ユーザーやアプリケーションが改ざんできないようにします)。Raspberry Pi OS Menuをクリックし、ここで "Run ... "コマンドをクリックします。

Raspberry PiのOSメニュー、runコマンドを表示しています。
Raspberry PiのOSメニュー。Runコマンドは下の方にあります

root(sudo pcmanfm)でpcmanfmを実行するには、"sudo pcmanfm"(と入力し、「OK」をクリックしてください。

Raspberry Pi OS上でコマンドダイアログを実行する
rootでpcmanfmを実行する準備をするrunコマンド

新しいウィンドウが開き、/home/pi ディレクトリの内容が表示されます。

スーパーユーザー権限でのpcmanfmのスクリーンショット
pcmanfm - スーパーユーザーとして動作するファイルマネージャー

注意:「ファイル」メニューのすぐ下に、このアイコンが表示されます。これは、pcmanfm をユーザ root で使用していることを示しており、特に注意が必要です(root はあらゆるファイルを編集・削除・移動できるため、システムの正常な動作に不可欠なファイルも編集・削除できてしまいます)。

ルートモード表示

心配ありません、ここでは必要なファイルだけを触ります 🙂 。

Raspberry Piで以下のディレクトリを開きます。

/etc/picockpit-client/apps/com.picockpit/picontrol/modules

PiCockpitのPiControl用の設定ディレクトリを表示しています。なお、PiCockpitを新規にインストールした場合は、core.jsonしか表示されません。その他のモジュールは、テストやデモンストレーション(遠隔操作の実験)のために私が作成したものです。

ヒント:上記で示したパスをコピー&ペーストし、エンターキーを押してディレクトリに移動することもできます。

ラズパイベリーのお役立ちRaspberry Pi Tips

既存のファイルの横の何もないところで右クリックして、「新規ファイル...」を選択します。

Raspbian OSで新規ファイルを作成する
Raspberry Pi OSの右クリックで新規ファイルを作成するメニュー

新しいファイルをssh-server.jsonと呼びます。

新しいファイルの名前を尋ねるダイアログが表示されます。
rootユーザーでpcmanfmを使って新規ファイルを作成する
このフォルダにssh-server.jsonが作成されました。

新規ファイルを右クリックして、コンテキストメニューを表示させます。Geany "を選択してください:

Raspberry Pi OS上でプログラマーズエディター「Geany」を表示するコンテキストメニュー
Geanyは、ファイルを編集するために使用できるエディタです。
Geanyプログラミングエディタのスクリーンショット
Geanyは、ファイルssh-server.jsonを表示していますが、まだ何も入っていません。

これで、先ほど作成した新しいファイルが見えるようになった。ただし、現時点では空です。

2つの新しいコマンドを作りましょう。1つはSSHサーバーサービスをシャットダウンするため、もう1つは起動するためです。Geanyが表示するテキストフィールドに次のように入力します。

{
  "name": "SSH commands",
  "icon": "mdi-ssh",
  "handle": "ssh",
  "description": "Control the SSH server",
  "commands": {
    "ssh-stop": {
      "name": "SSH Server off",
      "icon": "mdi-server-minus",
      "description": "Shuts the SSH service down",
      "confirm": true,
      "user": "root",
      "command": ["service", "ssh", "stop"]
    },
    "ssh-start": {
      "name": "SSH Server on",
      "icon": "mdi-server-plus",
      "description": "Starts the SSH service",
      "user": "root",
      "command": ["service", "ssh", "start"]
    }
  }
}

Geanyでテキストを追加する。括弧や文書構造に注意し、単語が正しく綴られていないと動作しません。

この時点で、ファイルを保存する必要があります。これはGeanyのファイルメニューから、例えば「Save」を選択して行うことができます。(または、Ctrl + Sで)。

ジーニーのファイルメニュー

この時点では、新しいコマンドはまだウェブインターフェイスに表示されていません。この時点で、picockpit-clientを再起動する必要があります。Raspberry Pi OSメニューの "Run ... "をクリックし、"sudo service picockpit-client restartを入力してから「OK」をクリックしてください。

実行ダイアログでpicockpit-clientサービスを再起動する。
ファイル名を指定して実行ダイアログからサービスを再起動する

PiControlのウェブインターフェイスを見てみましょう:

リモートコントロール用PiControlウェブインターフェースのスクリーンショット
新しいSSHコマンドに素早くジャンプするためのボタンが登場しました
ラズパイでリモートコマンドを実行するために、ウェブインターフェースに追加した新しいコマンド(ボタン)です。

すべて正しく入力されていれば、新しいコマンドが表示されます。もし、JSONファイルに間違いがあった場合(例えば、中括弧を忘れた場合)、PiCockpitは単に「壊れた」ファイルを無視します。

これで、コマンドを試すことができます。SSH SERVER OFF」というボタンをクリックすると、本当にそのコマンドを実行するかどうかを聞かれます。ここでも「ssh server off」をクリックすると、実際にコマンドが実行されます(結局、実行したくない場合は「cancel」をクリックします)。

誤ってクリックして危険なコマンドを実行してしまわないようにするためのセーフガード

PiCockpitがコマンドを実行し、進捗情報が表示され、実行が終了すると、次のように成功のインジケーターが表示されます:

PiControlはあなたのPiで "service ssh stop "の実行に成功しました。

今、PiにSSHで接続しようとすると、接続が拒否されます。

PuTTYNGで致命的なエラーが発生しました。
ネットワークエラー:接続が拒否されました

SSH SERVER ON "をクリックして、SSHサーバーを再開します。これで再び接続できるようになります。

おめでとうございます。これで、ウェブインターフェースから実行できる独自のコマンドセットができました。

コマンドを実行している間は、そのページに留まってください。離れた場所に移動すると、現在のステータスはクリアされます。SSHサーバーが動作しているかどうかを判断するには、PiDoctorテストを作ってみましょう。PiControlは、単にPi上でリモートアクションを実行するためのものです。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

新しいコマンドを追加したり、コマンドを更新したりするときは、picockpit-clientを再起動することを忘れないでください。また、必要のないコマンドを削除することもできます。例えば、Raspberry Pi をリモートでシャットダウンする機能を削除したい場合などに使用します。

リモートコマンド構文の説明

このファイルは、PiControlの新しいモジュールを設定するものです。.JSONの構文になっていますので、私の例にあるように、正しい方法で中括弧を開いて終わらせるようにしてください。

モジュール自体を設定するヘッドと、コマンド(「コマンド」の部分)があります。これらはいくつかの共通のエントリーを持っています。

名前

name "には、ウェブ・インターフェースで表示される人間が読める名前を入力します。

アイコン

icon "項目は、ボタンやモジュールを装飾するためのオプションです。これらはMaterial Design Iconの名前で、例えば "mdi-ssh "などです。

をチェックすることができます。 Material Design Iconsの全リストはこちら.アイコンの名前をコピーするだけです(先頭のmdi-を含む)。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

記述

description "項目はオプションで、コマンドやモジュールの情報をもう少し追加することができます。

ハンドル

ハンドルネームは、モジュールに対して明示的に設定され、モジュール間で一意でなければなりません。コマンドの場合、ハンドルは暗黙の了解です。"ssh-stop" と "ssh-start「は、私の例でコマンドに使用した2つのハンドルです。

ハンドルネームは、「/」、「+」、「$」、「*」を含まないものであれば、何を選んでも構いません。基本的なダウンケースのASCII文字にこだわり、「-」を使うことをお勧めします。ハンドルネームは 必須.

ちなみに、ファイルはハンドルとは別のファイル名にすることができます。ハードドライブ上のモジュール.JSONファイルを簡単に識別できるように、ファイル名とハンドルには少なくとも関連する名前を使用することをお勧めします。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

コマンドは「」の中に入ります。コマンド「ブロックを使用しており、追加の構成が可能です。

確認

もし "confirm" が存在し、trueに設定されている場合、PiControlウェブインターフェイスは、実際にコマンドを実行する前に確認ダイアログを表示します。これは、"危険な "コマンドが誤ってタップやクリックで実行されないようにするのに便利です。

ユーザー

もし "user" が存在する場合、コマンドはそのユーザーとして実行される。 ルート この例では、十分な権限を持っていることを確認しています)。

PiControlは、ユーザー" "としてコマンドを実行します。パイ" をデフォルトで設定します。また、「」よりも少ない権限の他のユーザーに設定することもできます。パイ“.

GPIOコマンドを実行したり、omxplayerを使って動画を再生したりする場合は、新しいユーザーに追加の機能を与える必要があるかもしれません。ユーザーは パイ は、これらの必要な権限をデフォルトで持っています。通常、これらの権限は、ユーザーを特別なグループに追加することで設定されます。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

コマンド

これはRaspberry Pi上で実行する実際のコマンドである。コマンドライン上で実行する場合と比較して、コマンド内のスペースを置き換える必要があることに注意してください。例えば

service ssh start

と書かれているはずです。

["service", "ssh", "start"] です。

PiControlは、一連のコマンドの連鎖もサポートしています(例えば、通常のapt-get update、apt-get upgradeのシーケンス)。その例としてcore.jsonをチェックしてみてください。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

結論から言うとRaspberry Piのリモートコントロールのニーズに応えるPiControl

PiCockpitとPiControlを使えば、Raspberry Piで実行したい任意のリモートコマンドを追加して、WebインターフェイスからPiを制御することがとても簡単にできます。この機能を利用するには、Raspberry Piがインターネットに接続されている必要があります。 同じネットワークにいる必要はありません。.

PiCockpitとPiControlを使って何を作りたいですか?以下にコメントしてください、あなたのプロジェクトのお役に立てるよう努力します 🙂 。

omxplayerを遠隔操作するためのボタンと、Webインターフェースを使ってChrome Webブラウザを制御するPiControlのスクリーンショット
このPiControlのスクリーンショットは、私が設定したカスタムモジュールを示しています。Chrome(Chromium)を制御し、omxplayerを使ってビデオをループで実行し、YouTubeのビデオをPiに表示します。

大きな力には大きな責任が伴います。PiCockpitインターフェイスにアクセスさせる相手に注意し、パスワードとAPIキーを安全に管理してください。また、上記で説明したように、危険なコマンドを "保護 "し、誤ってクリックして実行されないようにしましょう。

ラズパイベリーのRaspberry Pi(およびPiCockpit)に関するお役立ち情報

19コメント

  1. Max on 5月 12, 2021 at 5:30 pm となります。

    こんにちわ
    picontrolのボタンで次のコマンドを実行したい: cd /home/pi/Sensoren ; python3 SCRIPT.py
    説明通りにやってみると、ボタンは押せるのですが、コマンドが実行されず、プロセスも停止できません。
    何かアドバイスはありますか?
    ありがとうございます。

    • raspi berry on 7月 1, 2021 at 5:22 pm となります。

      picontrolはシェルではなく、すべてのコマンドが独立して実行されることを覚えておいてください。

  2. Alex on 8月 16, 2021 at 6:34 pm となります。

    パイソンスクリプトの起動は問題なく行えます。
    "コマンド"["python3", "/home/pi/do_something.pyc"] です。
    しかし、このスクリプトが後でChromiumのようなGUIを持つアプリを起動したり、Chromiumが直接起動したりすると問題が発生します。
    "command":["chromium-browser"] の結果は、"Unable to open X display.".

    Xディスプレイを必要とするスクリプトやアプリを起動するにはどうすればいいですか?

    • PiCaptain on 8月 19, 2021 at 5:08 pm となります。

      これについては、ここで少し詳しく書いています。
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      基本的には、どのXディスプレイを使用するかをアプリケーションに伝える必要があります。
      Chromiumの場合は、フラグを立てて行います。

      chromium-browser -display=:0 -kiosk https://picockpit.com

      note, -kiosk は、ブラウザをキオスクモードで起動します。これは追加情報として入れておきます。
      note II: パラメーターには2つのダッシュが使われていますが、WordPressでは1つの長いダッシュに変更されています。

      その他のアプリケーションでは、確認が必要です。多くの場合、環境変数を設定して行います。
      PiCockpitの場合は、変数を設定してからアプリケーションを起動するbashスクリプトを書く必要があるかもしれません。
      そして、bashスクリプトを実行します。

      これで成功したという方は、ぜひ教えてください。

      マックス

      • PiCaptain on 8月 19, 2021 at 5:09 pm となります。

        イメージとして

    • PiCaptain on 8月 19, 2021 at 5:11 pm となります。

      また、Chromiumのコマンドラインスイッチの詳細については、以下の2つのリンクを参照してください。

      http://peter.sh/experiments/chromium-command-line-switches/
      https://www.chromium.org/developers/how-tos/run-chromium-with-flags

  3. Sri on 10月 13, 2021 at 1:23 pm となります。

    このソフトウェアとインフラを使ってコマンドを設定しましたが、これは素晴らしいことです。このシンプルで使いやすいソフトウェアにとても感謝しています。ちょっとしたアドバイスが欲しかったのですが、もしよろしければお願いします。基本的に、私のPiはPCのスリープを解除するように設定されています。そして、あなたのソフトウェアは、etherwakeコマンドでPCを解除するためのシンプルなウェブインターフェイスを可能にし、機能していますが、この1つのコマンドをすぐに実行するためのより高速な方法が欲しいと思っています。これを可能にする方法はないでしょうか?現在、PCを起動させるためには、ログインしてからコマンドにアクセスし、ポップアップボックスでボタンを選択しなければなりませんが、基本的にワンクリックでコマンドを実行できるAPIやショートカットがあれば、それは助かります。いずれにしても、本当にありがとうございました。とても素晴らしいです。

    • PiCaptain on 10月 23, 2021 at 1:41 pm となります。

      機能提案をありがとうございます、追加しました。今度、wake on lanアプリをやろうと思っているんですが、もしかしたらもう少し便利になるかもしれません。

  4. Hager on 3月 31, 2022 at 12:26 pm となります。

    Hallo,
    wie kannich zum Beispiel Abfragen wie (Do you want to continue? [Y/n]) über das Script mit "Y" bestätigen?

    Vielen Dank!

    • Hanno on 4月 20, 2022 at 7:30 am となります。

      ハーガーさん、こんにちは。

      これは非常に難しい問題です。apt-get のようなコマンドライン・プログラムは、以前から統合されています。 -だくだく このオプションは、相互作用のないモードで使用することを可能にします。このオプションは、特にスクリプトで使用されることが多く、手で操作することはできません。代わりに、古典的な Unix ' を使用することができます。' プログラムを使用すると、自分自身の結果を得ることができます。Beispielsweise mit:
      yes | sudo apt upgrade
      この2つの方法のいずれかを使用することで、より良い方法を見つけることができます。それでも、私たちは喜んで、もう一度質問をさせていただきます。

  5. Jaka on 3月 30, 2023 at 7:32 am となります。

    こんにちは、picockpitからRPiのターミナルが使えるのですか?

    • raspi berry on 4月 19, 2023 at 7:48 pm となります。

      まだ、将来のリリースで予定されています。(19.4.2023現在)

  6. DGDodo on 4月 25, 2023 at 10:09 pm となります。

    記載されているウェブサイトのすべてのアイコンが利用可能/動作するわけではありません。
    バージョン4.9.95以降の新しいアイコン、例えば「mdi-lamps-outline」を使うにはどうしたらいいですか?

    • PiCaptain on 5月 10, 2023 at 12:33 pm となります。

      フロントエンドのコードを更新している最中です。あなたのコメントを私たちの開発者と共有し、おそらく彼らはアイコンを最新バージョンにするために、次の更新の前にこれを調べることができます。

    • PiCaptain on 5月 19, 2023 at 11:54 am となります。

      こんにちは、私たちはフロントエンドを更新しました。つまり、Material Design Iconsの最新バージョンまでのすべてのアイコンを使用できるようになりました。今後はフォントのバージョンも最新のものに更新していきます。

  7. [ここをクリックしてください:PiControlで独自のコマンドを設定する方法をご紹介します。[...]

  8. Expanding PiCockpit to 64 Bit Pi OS on 8月 28, 2023 at 9:32 am となります。

    [Pi をコントロールするための管理ツールはすべて動作しています。これにはGPIO、PiControl、PiDoctor、PiStatsアプリが含まれます。SSH サーバーを簡単に切り替えられるように、新しい 64 Bit インストールをセットアップするとか?あるいは、セットアップしたメディアセンターの起動と停止?WoLメッセージの送信?私たちのソフトウェアが提供する可能性については、こちらをご覧ください。[...]

  9. chris l on 9月 4, 2023 at 11:11 am となります。

    /i) {print "PACKAGE:$1 INSTALLED: $2 AVAILABLE: $3n"}'.

    上記のコマンドはSSHでは問題なく動作するが、PiControlでは問題が発生し、レポートが表示される:
    (100) E: コマンドラインオプション 'n' [-ne から] は、他のオプションとの組み合わせでは理解されません。

    PiControlに表示されるコマンドは、エスケープしてスペースを分割した文字列と同じなので、JSONを正しくエスケープしたと思います。

    JSON:
    {
    "name":「CISO更新コマンド」、
    "アイコン":「mdi-update"、
    「ハンドルネーム"CISO"、
    "説明":"CISOはすべてのアップデートをインストールする"、
    "コマンド":{
    "ciso-updates":{
    "name":「CISOアップデート」、
    "アイコン":"mdi-server-minus"、
    "description":"リポジトリ内の全パッケージのリストを更新し、インストールされている全パッケージをアップグレードする、
    「confirm": true、
    "ユーザー":「root」、
    "コマンド":[
    [
    「apt-get」、
    "更新"
    ],
    [
    「apt-get」、
    「アップグレード」、
    "-y"
    ],
    [
    「apt-get」、
    「ジャストプリント」、
    「アップグレード」、
    "2>&1",
    “|”,
    「perl」である、
    "-ネ"、
    "if "である、
    “(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
    "/i)",
    "{print"、
    "PACKAGE:"、
    “$1”,
    "INSTALLED:"、
    “$2”,
    「AVAILABLE:」である、
    "$3T3N"}'
    ]
    ]
    }
    }
    }

  10. Bruchpilot on 10月 8, 2023 at 12:28 pm となります。

    Hallo,
    私はpicockpitで最初の部分を試しましたが、クロミウムブラウザ、dillo、geanyを使うことはできませんでした。
    端末に接続することで、直接使用することができます。

    "geany":{
    "name":「EditorG」、
    "アイコン":"mdi-application-edit-outline"、
    "description":「テキストエディタ"、
    「confirm": true、
    "notermination":真、
    "ユーザー":「root」、
    "コマンド":["geany"]。
    },

コメントを残す