使用PiControl远程控制你的Raspberry Pi

控制您的 Raspberry Pi 标题图片

PiCockpit 的 PiControl 功能强大,您只需点击按钮,即可从任何网络浏览器远程控制您的 Raspberry Pi。

您将看到命令的状态和输出。

只需编辑 Raspberry Pi 上的 JSON 文件,即可添加新命令。

在本文中,我们将向您展示如何实现这一功能,并为您提供一些使用 PiControl 构建的想法!

它看起来像什么?

你会注意到,默认情况下,Raspberry Pi 包含并可立即使用三个命令:关机、重启、升级客户端。

使用网络界面远程控制你的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显示的文本字段中输入以下内容。

{
  "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的文件菜单中做这件事,例如,选择保存。(或者使用Ctrl + S)。

盖尼的文件菜单

此时,我们的新命令尚未出现在网络界面上。此时,您需要重启 picockpit-client。点击 Raspberry Pi OS 菜单中的 "运行... "命令,然后输入" "。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 网页界面将在实际运行命令前显示一个确认对话框。这对于确保 "危险 "命令不会因意外点击或单击而执行非常有用。

用户

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

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)提示

19评论

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

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

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

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

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

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

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

    • PiCaptain 在8 月 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 在8 月 19, 2021在5:09 下午

        如图

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

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

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

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

  4. Hager 在3 月 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 在4 月 20, 2022在7:30 上午

      你好,哈格先生。

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

  5. Jaka 在3 月 30, 2023在7:32 上午

    你好,你能从picockpit使用RPi终端吗?

    • raspi berry 在4 月 19, 2023在7:48 下午

      还没有,计划在未来的版本中推出。(截至19.4.2023)

  6. DGDodo 在4 月 25, 2023在10:09 下午

    并非上述网站的所有图标都可以使用/工作。
    如何使用4.9.95版之后的新图标,例如'mdi-lamps-outline'?

    • PiCaptain 在5 月 10, 2023在12:33 下午

      我们正在更新前台的代码。我将与我们的开发人员分享您的意见,可能他们会在下次更新之前研究这个问题,以使图标达到最新的版本。

    • PiCaptain 在5 月 19, 2023在11:54 上午

      您好,我们已经更新了前端,这意味着您现在可以使用最新版本的 Material Design Icons 图标。今后,我们还将不断更新字体版本。

  7. [...] 点击此处:了解如何在 PiControl 中设置自己的命令。[...]

  8. Expanding PiCockpit to 64 Bit Pi OS 在8 月 28, 2023在9:32 上午

    [...]帮助您控制 Pi 的管理工具全部正常工作。其中包括 GPIO、PiControl、PiDoctor 和 PiStats 应用程序。也许你可以用一种简单的方法来设置新安装的 64 位 SSH 服务器?或者启动和停止你设置的媒体中心?发送 WoL 消息?你可以在这里找到我们的软件提供的各种可能性的详细介绍。[...]

  9. chris l 在9 月 4, 2023在11:11 上午

    apt-get -just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\s\(([\w,\-,\d,\.,~,:,\+]+)\)?/i) {print "PACKAGE:$1 INSTALLED: $2 AVAILABLE: $3\n"}'

    上述命令在 SSH 下运行正常,但 PiControl 出现问题并报告:
    (100) E:命令行选项 "n"[来自 -ne]与其他选项组合时无法理解。

    我认为我正确地转义了 JSON 格式,因为 PiControl 中显示的命令与我转义并将空格分割成不同字符串的命令相同。

    JSON:
    {
    "名称":"CISO 更新命令"、
    "图标":"mdi-更新"、
    "把手":"CISO"、
    "描述":"CISO安装所有更新"、
    "命令":{
    "ciso-更新":{
    "名称":"CISO 更新"、
    图标"mdi-server-minus"、
    "描述":"更新软件源中所有软件包的列表,并升级所有已安装的软件包"、
    "确认":true、
    "用户":"root"、
    "命令":[
    [
    "apt-get"、
    "更新"
    ],
    [
    "apt-get"、
    "升级"、
    "-y"
    ],
    [
    "apt-get"、
    "-just-print"、
    "升级"、
    "2>&1",
    “|”,
    "perl"、
    "-ne"、
    "'如果'"、
    “(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
    "/i)",
    "{打印
    "PACKAGE:"、
    “$1”,
    "安装:"、
    “$2”,
    "可用:"、
    "$3\n\"}'"
    ]
    ]
    }
    }
    }

  10. Bruchpilot 在10 月 8, 2023在12:28 下午

    Hallo,
    我尝试了使用 picockpit 的前几个步骤,但仍无法在 Fernsteuerung 上运行。
    在终端上直接连接应用程序

    "geany":{
    "名称":"EditorG"、
    "图标":"mdi-application-edit-outline"、
    "描述":"文本编辑器"、
    "确认":true、
    "notermination": true、
    "用户":"root"、
    "命令":["geany"]["geany"]
    },

发表评论