使用PiControl远程控制你的Raspberry Pi
PiCockpit的PiControl是一个强大的功能,它允许你从任何网络浏览器上远程控制你的Raspberry Pi,只需点击按钮即可。你会看到命令的状态和输出。通过简单地编辑Raspberry Pi上的JSON文件就可以添加新的命令--我们将告诉你如何做,并给你一些想法,你可以使用PiControl建立什么
它看起来是怎样的?
默认情况下,有三个命令被包括在内,并立即可用于你的Raspi。( 关闭电源,重新启动,升级客户端)

我可以用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菜单,在这里点击 "运行... "命令。

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

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

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

不用担心,我们在这里只接触你需要的文件 🙂
在你的Raspberry Pi上打开以下目录。
/etc/picockpit-client/apps/com.picockpit/picontrol/modules

提示:你也可以复制和粘贴我上面给出的路径,然后按回车键导航到该目录。
Raspi Berry的有用的Raspberry Pi提示
右键单击现有文件旁边的空白区域,并选择 "新文件..."。

调用新文件ssh-server.json。


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


现在你可以看到我们刚刚创建的新文件。到目前为止,它是空的。
让我们创建两个新的命令,一个用于关闭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的文件菜单中做这件事,例如,选择保存。(或者使用Ctrl + S)。

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

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


如果你输入的内容正确,新的命令就会出现。如果你在你的JSON文件中犯了一个错误(例如,忘记了一个大括号),PiCockpit将直接忽略这个 "坏 "文件。
你现在可以试试这些命令了。如果你点击SSH SERVER OFF按钮,你会被问到你是否真的想运行这个命令。在这里也点击SSH SERVER OFF,就可以真正运行该命令了(如果你不想运行,可以点击取消)。

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

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

通过点击 "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建造什么?请在下面评论,我将努力帮助你完成你的项目 🙂

巨大的权力伴随着巨大的责任--要小心你给谁访问你的PiCockpit界面,保持你的密码和API密钥安全。还要确保 "保护 "危险的命令,就像上面讨论的那样,这样它们就不会因为误点而被执行。
Raspi Berry的有用的Raspberry Pi(和PiCockpit)提示
你们好!
我想用picontrol按钮运行以下命令: cd /home/pi/Sensoren ; python3 SCRIPT.py
我按照描述做了,我可以按下按钮,但命令没有被执行,也不能停止进程。
有什么建议吗?
谢谢
记住,picontrol不是一个shell--所有的命令都是独立执行的。你必须使用绝对路径(cd--改变目录--在picontrol中没有用)。
启动一个Python脚本可以正常工作,例如。
"命令"。["python3", "/home/pi/do_something.pyc"]
但是,如果这个脚本后来启动了一个像Chromium这样的图形用户界面的应用程序,或者直接启动了Chromium,我就会遇到问题。
"命令"。["chromium-browser"] 结果是 "无法打开X显示器。".
如何启动需要X显示的脚本或应用程序?
我在这里写过更多关于这个问题的文章。
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脚本。
如果你在这方面有任何成功经验,请与我们分享。
最大
另外,关于Chromium的命令行开关,请看这两个链接。
http://peter.sh/experiments/chromium-command-line-switches/
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
嗨,我刚刚用你们的软件和基础设施设置了一个命令,它非常棒!我很高兴。非常感谢你的这个简单而又易于使用的软件。如果你有空的话,我想得到一点建议。基本上,我把我的Pi设置为从睡眠中唤醒我的电脑,你的软件允许一个简单的网络界面用etherwake命令来唤醒电脑,这很有效,但是我想有一个更快的方法来立即执行这一个命令。你认为有什么方法可以做到这一点吗?目前,为了唤醒我的电脑,我必须登录,然后进入我的命令,然后在弹出的对话框中选择按钮,但如果有一个api或一个快捷方式,基本上可以一键运行命令,那将会很有帮助。无论如何,非常感谢你的帮助。非常棒 🙂
谢谢你的功能建议,我已经把它加上了。我们正计划在一段时间内做一个唤醒的应用程序,也许它可能会更方便一些。
Hallo,
wie kann ich zum Beispiel Abfragen wie (Do you want to continue? [Y/n]) über das Script mit "Y" bestätigen?
谢谢你!
你好,哈格先生。
这是一个非常好的问题。有一些程序,如apt-get,已经有了一个完整的程序。 -假设-是 选项,它可以让你在非交互式模式下使用。这通常是在脚本中使用,而不是在手写的情况下使用。另外还有经典的Unix系统。是'程序,使你能够实现自己的结果。例如,通过以下方式。
yes | sudo apt upgrade
根据我的实际情况,我应该把这两种方法中的一种变成一种好的解决方案。Ansonsten können Sie uns gerne noch einmal schreiben!