使用PiControl远程控制你的Raspberry Pi

PiCockpit的PiControl是一个强大的功能,它允许你从任何网络浏览器上远程控制你的Raspberry Pi,只需点击按钮即可。你会看到命令的状态和输出。通过简单地编辑Raspberry Pi上的JSON文件就可以添加新的命令--我们将告诉你如何做,并给你一些想法,你可以使用PiControl建立什么

它看起来是怎样的?

默认情况下,有三个命令被包括在内,并立即可用于你的Raspi。( 关闭电源,重新启动,升级客户端)

使用网络界面远程控制你的Pi的基本命令 - 从任何浏览器
这个PiCockpit PiControl的屏幕截图显示了命令的模样

我可以用Raspberry Pi和PiControl做什么?

这里有一些你可以用它建造的东西。这些想法需要一些研究,可能还需要你的编码和/或硬件知识;无论如何,PiCockpit的PiControl将帮助你完成项目中易于使用的网络界面部分,并为你节省大量的时间,使其在互联网上运行。

  • 使用Raspberry Pi相机模块拍摄快照,并将其邮寄给你。
  • 启动你的Raspberry Pi Minecraft服务器,并同时停止它
  • 使用omxplayer播放视频(你也可以为视频设置一个无限循环,如果你想切换到另一个视频,可以停止视频循环)。
  • 使用Raspberry Pi相机模块,为定格动画相机创建一个简单的控制。
  • 利用局域网唤醒功能唤醒与你的Raspberry Pi在同一网络中的本地计算机
  • 发出声音(例如,作为万圣节的恶作剧)。
  • 通过Z-Wave等发出适当的控制命令,打开一扇门--例如车库门。
  • 在你的Raspberry Pi上启动SSH服务,并将其关闭--这是一种 "敲开 "的方法,可以提高安全性。
  • 控制模型火车
  • 开启和关闭继电器(需要两个按钮,或者可以使用 "切换 "按钮)。
  • 使用红外LED控制电视(切换频道、改变音量......),例如,在你旅行时模拟活动。
  • 从网络界面发射火箭

我们将公布其中一些项目想法的分步说明,这样你就有了一个简单的指南来开始使用PiControl和远程控制你的Raspberry Pi。

如何用PiControl为Raspberry Pi添加额外的远程命令按钮?

你可以通过简单地编辑Raspberry Pi上的JSON文件,轻松而安全地定义你自己的命令。这样做是出于安全考虑--我本来可以通过写PiCockpit的方式让你从web界面添加命令,但如果有人知道你的PiCockpit密码,他们就可以创建任何他们想要的命令。因此,请按照这些简单的说明,在你的Pi上创建一个新的JSON文件。

注意:这些说明是特意保留的,没有使用命令行经验的用户可以遵循。如果你知道如何使用命令行,你可能会发现直接创建文件并使用nano编辑它更容易/更快。

首先,你需要在超级用户模式下打开文件浏览器(这一步可以保证你的PiCockpit PiControl配置文件的安全,防止任何用户或应用程序想篡改它们)。点击Raspberry Pi OS菜单,在这里点击 "运行... "命令。

Raspberry Pi操作系统菜单,显示运行命令。
Raspberry Pi操作系统的菜单。运行命令在靠近底部的位置

以root身份运行pcmanfm(sudo pcmanfm),键入"sudo pcmanfm"(不含引号),然后点击 "确定"。

在Raspberry Pi操作系统上运行命令对话框
运行命令,准备以root身份运行pcmanfm

一个新的窗口打开,显示/home/pi目录的内容。

具有超级用户权限的pcmanfm屏幕截图
pcmanfm,以超级用户身份运行的文件管理器

注意:您应该看到这个图标,就在 "文件 "菜单下。它表示您是以root用户的身份使用pcmanfm,因此应该格外小心(因为root可以编辑/删除/移动任何文件!即使是对系统正常运行至关重要的文件)。

根部模式指示器

不用担心,我们在这里只接触你需要的文件 🙂

在你的Raspberry Pi上打开以下目录。

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

显示PiCockpit的PiControl的配置目录。注意,如果你有一个新安装的PiCockpit,你将只看到core.json。其他模块是我为测试和演示目的(远程控制实验)而创建的。

提示:你也可以复制和粘贴我上面给出的路径,然后按回车键导航到该目录。

Raspi Berry的有用的Raspberry Pi提示

右键单击现有文件旁边的空白区域,并选择 "新文件..."。

用Raspbian操作系统创建一个新文件
树莓派操作系统菜单,用于右击创建一个新文件

调用新文件ssh-server.json。

一个对话框要求输入新文件的名称。
用pcmanfm以根用户身份创建一个新文件
ssh-server.json现在已经在这个文件夹中创建。

右键单击新文件,调出上下文菜单。选择 "Geany"。

在Raspberry Pi操作系统上显示Geany程序员编辑器的上下文菜单
Geany是一个编辑器,你可以用它来编辑文件。
Geany编程编辑器屏幕截图
Geany显示文件ssh-server.json--里面还没有任何东西

现在你可以看到我们刚刚创建的新文件。到目前为止,它是空的。

让我们创建两个新的命令,一个用于关闭SSH服务器服务,另一个用于启动它。在Geany显示的文本字段中输入以下内容。

{
  "名称":"SSH命令",
  "图标":"mdi-ssh",
  "handle":"ssh",
  "描述":"控制SSH服务器",
  "命令":{
    "ssh-stop":{
      "name":"SSH服务器关闭",
      "图标":"mdi-server-minus",
      "描述":"关闭SSH服务"。
      "确认": true,
      "用户":"root",
      "命令":["服务", "ssh", "停止"]
    },
    "ssh-start":{
      "name":"SSH服务器开启"。
      "图标":"mdi-server-plus",
      "描述":"启动SSH服务"。
      "用户":"root",
      "命令":["service", "ssh", "start"]
    }
  }
}
在Geany中添加文本。注意括号,和文件结构,单词必须拼写正确,才能发挥作用。

在这一点上,我们应该保存该文件。你可以从Geany的文件菜单中做这件事,例如,选择保存。(或者使用Ctrl + S)。

盖尼的文件菜单

在这一点上,我们的新命令还没有出现在web界面上。我们需要重新启动picockpit-client来实现。点击Raspberry Pi操作系统菜单中的 "运行... "命令,然后输入"sudo service picockpit-client重启"进入窗口,然后点击确定。

使用运行对话框重新启动picockpit-client服务
从 "运行 "对话框中重新启动一个服务

现在来看看你的PiControl网络界面吧。

用于远程控制的PiControl网络界面截图
出现了一个新的按钮,可以快速跳到新的SSH命令。
我们在网络界面上添加了新的命令(按钮),以便在Raspi上运行远程命令!"。

如果你输入的内容正确,新的命令就会出现。如果你在你的JSON文件中犯了一个错误(例如,忘记了一个大括号),PiCockpit将直接忽略这个 "坏 "文件。

你现在可以试试这些命令了。如果你点击SSH SERVER OFF按钮,你会被问到你是否真的想运行这个命令。在这里也点击SSH SERVER OFF,就可以真正运行该命令了(如果你不想运行,可以点击取消)。

防止你因不小心点击而执行危险命令的保障措施

PiCockpit现在会运行该命令,你会看到进度信息--在它运行完毕后,你会看到以下成功指示。

PiControl已经在你的Pi上成功运行了 "service ssh stop"。

如果你现在尝试使用SSH连接到你的Pi,连接将被拒绝。

PuTTYNG显示一个致命的错误。
网络错误:拒绝连接

通过点击 "SSH SERVER ON "来启动SSH服务器。现在,连接将再次成为可能。

祝贺你!你刚刚创建了你自己的一套命令,你可以从网络界面上运行。你刚刚创建了你自己的命令集,你可以从网络界面运行。

当你运行命令时,请留在页面上--如果你导航离开,目前的状态会被清除。为了确定SSH服务器是否正在运行,你可以建立一个PiDoctor测试--PiControl只是为了在你的Pi上执行远程操作。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

当您添加新的命令或更新命令时,请记得重新启动picockpit-client。你也可以删除你不想要的命令,例如你想删除远程关闭Raspberry Pi的功能。

远程命令语法的解释

该文件为PiControl配置了一个新模块。它有一个.JSON语法,请确保你以正确的方式打开和结束大括号,就像我的例子中介绍的那样。

有一个头,用来配置模块本身,还有命令(在 "命令 "部分)。它们有一些共同的条目。

名称

名称 "条目是人类可读的名称,会在网络界面上显示给你。

图示

图标 "条目是可选的,用于装饰你的按钮和模块。这些是Material Design图标名称,例如 "mdi-ssh"。

你可以查看一下 材料设计图标的完整列表,请点击这里.只需复制图标的名称(包括开头的mdi-)。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

描述

描述 "条目是可选的,允许你为命令或模块添加更多信息。

处理

"句柄 "条目对模块来说是明确的,而且在各模块中必须是唯一的。在命令的情况下,手柄是隐含的。"ssh-stop"和"ssh-start"是我在例子中用于命令的两个手柄。

你可以选择任何东西作为手柄,只要不包括"/"、"+"、"$"、"*"等字符。我建议坚持使用基本的小写ASCII字符,并使用"-"。句柄是 需要.

顺便说一下,你的文件可以有一个与手柄不同的文件名--我鼓励你对文件名和手柄至少使用相关的名字,这样你就可以很容易地识别你硬盘上的模块.JSON文件。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

这些命令进入""。命令"块,并有额外的配置可能性。

确认

如果 "确认" 存在,并且设置为 "true",PiControl Web界面将在实际运行命令之前显示一个确认对话框。这对于确保 "危险 "的命令不会因为意外的点击而被执行是非常有用的。

用户

如果 "用户" 出现时,命令将以这个特定用户的身份运行(如 在我们的例子中,以确保我们有足够的权限)。

PiControl将以用户""的身份运行命令。pi"的默认值。你也可以将其设置为其他权限小于" "的用户。pi“.

如果你试图运行GPIO命令,或使用omxplayer播放视频,你可能必须给你的新用户提供额外的能力。该用户 pi 默认情况下拥有这些必要的权限。通常情况下,这些权限是通过将用户添加到一个特殊组来设置的。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

指挥部

这是应该在你的Raspberry Pi上运行的实际命令。注意,你必须把命令中的空格替换成你在命令行上运行时的样子。比如说。

service ssh start

应写为:

["服务", "ssh", "启动"]

PiControl还支持链式的命令序列(例如通常的apt-get update、apt-get upgrade序列)。请看core.json中的一个例子,它是如何实现的。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

总结。PiControl满足你的Raspberry Pi远程控制需求

使用PiCockpit和PiControl,真的很容易在你的Raspi上添加任何你想运行的远程命令,并能够从网络界面控制你的Pi。要做到这一点,Raspberry Pi只需要一个互联网连接 -- 你不一定要在同一个网络中.

你想用PiCockpit和PiControl建造什么?请在下面评论,我将努力帮助你完成你的项目 🙂

PiControl的截图显示了远程控制omxplayer的按钮和使用网络界面控制Chrome浏览器的按钮。
这个PiControl的截图显示了我设置的一个自定义模块:控制Chrome(Chromium),使用omxplayer循环运行视频,在Pi上显示YouTube视频

巨大的权力伴随着巨大的责任--要小心你给谁访问你的PiCockpit界面,保持你的密码和API密钥安全。还要确保 "保护 "危险的命令,就像上面讨论的那样,这样它们就不会因为误点而被执行。

Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示

10评论

  1. Max 在五月 12, 2021在5:30 下午

    你们好!
    我想用picontrol按钮运行以下命令: cd /home/pi/Sensoren ; python3 SCRIPT.py
    我按照描述做了,我可以按下按钮,但命令没有被执行,也不能停止进程。
    有什么建议吗?
    谢谢

    • raspi berry 在七月 1, 2021在5:22 下午

      记住,picontrol不是一个shell--所有的命令都是独立执行的。你必须使用绝对路径(cd--改变目录--在picontrol中没有用)。

  2. Alex 在八月 16, 2021在6:34 下午

    启动一个Python脚本可以正常工作,例如。
    "命令"。["python3", "/home/pi/do_something.pyc"]
    但是,如果这个脚本后来启动了一个像Chromium这样的图形用户界面的应用程序,或者直接启动了Chromium,我就会遇到问题。
    "命令"。["chromium-browser"] 结果是 "无法打开X显示器。".

    如何启动需要X显示的脚本或应用程序?

    • PiCaptain 在八月 19, 2021在5:08 下午

      我在这里写过更多关于这个问题的文章。
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      基本上你需要告诉应用程序使用哪种X显示器。
      在Chromium的情况下,它是通过一个标志来完成的

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

      注意,-kiosk是在kiosk模式下启动浏览器。只是把它作为一个额外的信息扔进去。
      注二:这些参数是两个破折号--WordPress把它们改成一个长破折号,我相信。

      对于其他应用程序,你将需要检查。这通常是通过设置一个环境变量来完成的。
      对于PiCockpit来说,你可能需要写一个bash脚本来设置这个变量,然后启动应用程序。
      然后运行bash脚本。

      如果你在这方面有任何成功经验,请与我们分享。

      最大

      • PiCaptain 在八月 19, 2021在5:09 下午

        如图

    • PiCaptain 在八月 19, 2021在5:11 下午
  3. Sri 在十月 13, 2021在1:23 下午

    嗨,我刚刚用你们的软件和基础设施设置了一个命令,它非常棒!我很高兴。非常感谢你的这个简单而又易于使用的软件。如果你有空的话,我想得到一点建议。基本上,我把我的Pi设置为从睡眠中唤醒我的电脑,你的软件允许一个简单的网络界面用etherwake命令来唤醒电脑,这很有效,但是我想有一个更快的方法来立即执行这一个命令。你认为有什么方法可以做到这一点吗?目前,为了唤醒我的电脑,我必须登录,然后进入我的命令,然后在弹出的对话框中选择按钮,但如果有一个api或一个快捷方式,基本上可以一键运行命令,那将会很有帮助。无论如何,非常感谢你的帮助。非常棒 🙂

    • PiCaptain 在十月 23, 2021在1:41 下午

      谢谢你的功能建议,我已经把它加上了。我们正计划在一段时间内做一个唤醒的应用程序,也许它可能会更方便一些。

  4. Hager 在三月 31, 2022在12:26 下午

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

    谢谢你!

    • Hanno 在四月 20, 2022在7:30 上午

      你好,哈格先生。

      这是一个非常好的问题。有一些程序,如apt-get,已经有了一个完整的程序。 -假设-是 选项,它可以让你在非交互式模式下使用。这通常是在脚本中使用,而不是在手写的情况下使用。另外还有经典的Unix系统。'程序,使你能够实现自己的结果。例如,通过以下方式。
      yes | sudo apt upgrade
      根据我的实际情况,我应该把这两种方法中的一种变成一种好的解决方案。Ansonsten können Sie uns gerne noch einmal schreiben!

发表评论