Steuern Sie Ihren Raspberry Pi aus der Ferne mit PiControl
PiControl von PiCockpit ist eine leistungsstarke Funktion, mit der Sie Ihren Raspberry Pi von einem beliebigen Webbrowser aus fernsteuern können, indem Sie einfach auf Schaltflächen klicken. Sie werden den Status und die Ausgabe des Befehls sehen. Neue Befehle können durch einfaches Bearbeiten einer JSON-Datei auf Ihrem Raspberry Pi hinzugefügt werden - wir zeigen Ihnen, wie das geht, und geben Ihnen einige Ideen, was Sie mit PiControl bauen können!
Wie sieht sie aus?
Standardmäßig sind drei Befehle enthalten und sofort für Ihren Raspi verfügbar: (Ausschalten, Neustart, Client aktualisieren)

Was kann ich mit einem Raspberry Pi und PiControl machen?
Hier sind einige Dinge, die Sie damit bauen können. Diese Ideen erfordern einige Recherchen und möglicherweise Programmier- und/oder Hardware-Kenntnisse Ihrerseits. In jedem Fall wird PiCockpit's PiControl Ihnen mit dem einfach zu bedienenden Web-Interface-Teil Ihres Projekts helfen und Ihnen viel Zeit ersparen, damit dies über das Internet funktioniert 🙂 .
- mit dem Raspberry Pi-Kameramodul einen Schnappschuss machen und sich diesen zuschicken lassen
- Starten Sie Ihren Raspberry Pi Minecraft Server, und beenden Sie ihn auch wieder
- Spielen Sie ein Video mit dem Omxplayer ab (Sie können auch eine Endlosschleife für das Video einrichten und die Schleife anhalten, wenn Sie zu einem anderen Video wechseln möchten)
- eine einfache Steuerung für eine Stop-Motion-Animationskamera mit dem Raspberry Pi-Kameramodul erstellen
- einen lokalen Computer im gleichen Netzwerk wie Ihr Raspberry Pi mit der Wake on LAN-Funktionalität aufwecken
- einen Ton abspielen (z. B. als Streich zu Halloween)
- ein Tor zu öffnen - zum Beispiel ein Garagentor, indem Sie entsprechende Steuerbefehle über Z-Wave usw. erteilen.
- Starten Sie den SSH-Dienst auf Ihrem Raspberry Pi und beenden Sie ihn - ein "Klopf-zum-Öffnen"-Ansatz für mehr Sicherheit
- Steuerung von Modelleisenbahnen
- ein Relais ein- und ausschalten (dazu sind zwei Tasten erforderlich, oder es kann eine "Umschalttaste" verwendet werden)
- das Fernsehgerät über eine IR-LED zu steuern (Kanäle umschalten, Lautstärke ändern, ...), z. B. um Aktivität zu simulieren, während Sie unterwegs sind
- Starten Sie eine Rakete über das Webinterface
Wir werden Schritt-für-Schritt-Anleitungen für einige dieser Projektideen veröffentlichen, damit Sie eine einfache Anleitung für den Einstieg in PiControl und die Fernsteuerung Ihres Raspberry Pi haben.
Wie kann ich mit PiControl zusätzliche Fernbedienungsknöpfe für den Raspberry Pi hinzufügen?
Sie können Ihre eigenen Befehle einfach und sicher definieren, indem Sie JSON-Dateien auf Ihrem Raspberry Pi bearbeiten. Dies geschieht aus Sicherheitsgründen - ich hätte PiCockpit so schreiben können, dass Sie Befehle über das Webinterface hinzufügen können, aber wenn jemand Ihr PiCockpit-Passwort kennen würde, könnte er jeden beliebigen Befehl erstellen, den er möchte. Bitte folgen Sie daher dieser einfachen Anleitung, um eine neue JSON-Datei auf Ihrem Pi zu erstellen.
Hinweis: Diese Anweisungen sind absichtlich so gehalten, dass auch Benutzer, die keine Erfahrung mit der Kommandozeile haben, ihnen folgen können. Wenn Sie wissen, wie man die Kommandozeile benutzt, ist es vielleicht einfacher/schneller, die Datei zu erstellen und mit nano zu bearbeiten.
Zuerst müssen Sie den Dateibrowser im Superuser-Modus öffnen (dieser Schritt schützt Ihre PiCockpit PiControl-Konfigurationsdateien vor jedem Benutzer oder jeder Anwendung, die sie manipulieren möchte). Klicken Sie auf Raspberry Pi OS Menu und hier auf den Befehl "Run ...":

Führen Sie pcmanfm als root (sudo pcmanfm) aus, indem Sie "sudo pcmanfm" (ohne Anführungszeichen) in das sich öffnende Dialogfeld ein und klicken Sie auf OK:

Es öffnet sich ein neues Fenster, in dem Sie den Inhalt des Verzeichnisses /home/pi sehen:

Hinweis: Sie sollten dieses Symbol sehen, direkt unter dem Menü "Datei". Es zeigt an, dass Sie pcmanfm als Benutzer root verwenden und daher besonders vorsichtig sein sollten (da root jede Datei bearbeiten / löschen / verschieben kann! sogar Dateien, die für den normalen Systembetrieb wichtig sind).

Keine Sorge, wir fassen nur die Dateien an, die Sie hier brauchen 🙂
Öffnen Sie das folgende Verzeichnis auf Ihrem Raspberry Pi:
/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Tipp: Sie können auch den Pfad, den ich oben angegeben habe, kopieren und einfügen und die Eingabetaste drücken, um zu dem Verzeichnis zu navigieren.
Raspi Berrys hilfreiche Raspberry Pi Tipps
Klicken Sie mit der rechten Maustaste in den leeren Bereich neben den vorhandenen Dateien und wählen Sie "Neue Datei...".

Nennen Sie die neue Datei ssh-server.json:


Klicken Sie mit der rechten Maustaste auf die neue Datei, um das Kontextmenü aufzurufen. Wählen Sie "Geany":


Jetzt können Sie die neue Datei sehen, die wir gerade erstellt haben. Sie ist bisher noch leer.
Lassen Sie uns zwei neue Befehle erstellen, einen zum Herunterfahren des SSH-Serverdienstes und einen zum Starten desselben. Geben Sie in das Textfeld, das Geany Ihnen anzeigt, Folgendes ein:
{
"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"]
}
}
}

An dieser Stelle sollten wir die Datei speichern. Dies können Sie z.B. über das Dateimenü von Geany tun, indem Sie Speichern wählen. (Oder verwenden Sie Strg + S):

Zu diesem Zeitpunkt sind unsere neuen Befehle noch nicht im Webinterface erschienen. Hierfür müssen wir den picockpit-client neu starten. Klicken Sie im Menü des Raspberry Pi OS auf den Befehl "Ausführen ..." und geben Sie "sudo service picockpit-client neu starten" in das Fenster ein, bevor Sie auf OK klicken:

Werfen Sie nun einen Blick auf Ihr PiControl Webinterface:


Wenn Sie alles richtig getippt haben, erscheinen die neuen Befehle. Wenn Sie einen Fehler in Ihrer JSON-Datei gemacht haben (z. B. eine geschweifte Klammer vergessen haben), ignoriert PiCockpit die "fehlerhafte" Datei einfach.
Sie können die Befehle nun ausprobieren. Wenn Sie auf die Schaltfläche SSH SERVER OFF klicken, werden Sie gefragt, ob Sie den Befehl wirklich ausführen wollen. Klicken Sie auch hier auf ssh server off, um den Befehl tatsächlich auszuführen (oder klicken Sie auf Abbrechen, wenn Sie es doch nicht wollen).

PiCockpit führt nun das Kommando aus, Sie sehen eine Fortschrittsanzeige - und wenn es fertig ist, sehen Sie die folgende Erfolgsanzeige:

Wenn Sie jetzt versuchen, sich mit SSH mit Ihrem Pi zu verbinden, wird die Verbindung abgelehnt:

Starten Sie den SSH-Server wieder, indem Sie auf "SSH SERVER ON" klicken. Nun ist wieder eine Verbindung möglich.
Herzlichen Glückwunsch! Sie haben soeben Ihren eigenen Befehlssatz erstellt, den Sie über die Weboberfläche ausführen können.
Bleiben Sie auf der Seite, während Sie Befehle ausführen - der Status wird derzeit gelöscht, wenn Sie wegnavigieren. Um festzustellen, ob der SSH-Server läuft, könnten Sie einen PiDoctor-Test erstellen - PiControl ist einfach dazu da, Remote-Aktionen auf Ihrem Pi auszuführen.
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Denken Sie daran, den picockpit-Client neu zu starten, wenn Sie neue Befehle hinzufügen oder Befehle aktualisieren. Sie können auch Befehle entfernen, die Sie nicht haben möchten, z. B. wenn Sie die Möglichkeit, Ihren Raspberry Pi aus der Ferne herunterzufahren, entfernen möchten.
Erläuterung der Syntax des Remote-Befehls
Die Datei konfiguriert ein neues Modul für PiControl. Sie hat eine .JSON-Syntax, bitte stellen Sie sicher, dass Sie die Datei korrekt mit geschweiften Klammern öffnen und beenden, wie in meinem Beispiel dargestellt.
Es gibt einen Kopf, der das Modul selbst konfiguriert, und die Befehle (im Teil "Befehle"). Sie haben einige gemeinsame Einträge:
Name
Die "name"-Einträge sind menschenlesbare Namen, die Ihnen im Web-Interface angezeigt werden
Symbol
Die "Icon"-Einträge sind optional, um Ihre Schaltflächen und Module zu dekorieren. Dies sind Material Design Icon Namen, zum Beispiel "mdi-ssh".
Sie können sich eine vollständige Liste der Material Design Icons hier. Kopieren Sie einfach den Namen des Symbols (einschließlich des mdi- am Anfang).
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Beschreibung
Die "description"-Einträge sind optional und ermöglichen es Ihnen, weitere Informationen zu dem Befehl oder Modul hinzuzufügen.
Griff
Der Eintrag "Handle" ist für das Modul explizit und muss unter den Modulen eindeutig sein. Bei den Befehlen ist das Handle implizit. "ssh-stop" und "ssh-start" sind die beiden Handles, die ich für die Befehle in meinem Beispiel verwendet habe.
Sie können alles als Handle wählen, solange es nicht die Zeichen "/", "+", "$", "*" enthält. Ich empfehle, sich an einfache ASCII-Zeichen in Kleinbuchstaben zu halten und das "-" zu verwenden. Das Handle lautet erforderlich.
Ihre Datei kann übrigens einen anderen Dateinamen haben als das Handle - ich empfehle Ihnen, zumindest verwandte Namen für den Dateinamen und das Handle zu verwenden, damit Sie die JSON-Datei des Moduls auf Ihrer Festplatte leicht identifizieren können.
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Die Befehle werden in das Verzeichnis "BefehleBlock" und haben zusätzliche Konfigurationsmöglichkeiten:
bestätigen.
Wenn "bestätigen" vorhanden und auf true gesetzt ist, zeigt das PiControl-Webinterface einen Bestätigungsdialog an, bevor der Befehl tatsächlich ausgeführt wird. Dies ist nützlich, um sicherzustellen, dass "gefährliche" Befehle nicht durch ein versehentliches Tippen oder Klicken ausgeführt werden.
Benutzer
Wenn "Benutzer" vorhanden ist, wird der Befehl als dieser bestimmte Benutzer ausgeführt (als Wurzel in unserem Beispiel, um sicherzustellen, dass wir über ausreichende Berechtigungen verfügen).
PiControl führt Befehle als Benutzer "pi" standardmäßig. Sie können ihn auch auf andere Benutzer mit weniger Rechten als "pi“.
Wenn Sie versuchen, GPIO-Befehle auszuführen oder Videos mit dem omxplayer abzuspielen, müssen Sie Ihrem neuen Benutzer möglicherweise zusätzliche Fähigkeiten geben. Der Benutzer pi verfügt standardmäßig über diese erforderlichen Berechtigungen. Normalerweise werden diese Berechtigungen durch Hinzufügen des Benutzers zu einer speziellen Gruppe festgelegt.
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Befehl
Dies ist der eigentliche Befehl, der auf Ihrem Raspberry Pi ausgeführt werden sollte. Beachten Sie, dass Sie die Leerzeichen im Befehl im Vergleich zu ersetzen, wie Sie es auf der Kommandozeile ausführen würden. Zum Beispiel,
service ssh start
sollte geschrieben werden als:
["service", "ssh", "start"]
PiControl unterstützt auch die Verkettung einer Sequenz von Befehlen (z.B. die übliche apt-get update, apt-get upgrade Sequenz). In core.json finden Sie ein Beispiel dafür, wie das gemacht wird.
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Schlussfolgerung: PiControl für Ihre Raspberry Pi Fernsteuerungsbedürfnisse
Mit PiCockpit und PiControl ist es sehr einfach, jeden beliebigen Befehl, den Sie auf Ihrem Raspi ausführen möchten, hinzuzufügen und Ihren Pi über ein Webinterface zu steuern. Damit dies funktioniert, benötigt der Raspberry Pi lediglich eine Internetverbindung - Sie müssen sich nicht im selben Netz befinden.
Was würdest du gerne mit PiCockpit und PiControl bauen? Kommentieren Sie unten, und ich werde versuchen, Ihnen bei Ihrem Projekt zu helfen 🙂

Mit großer Macht kommt große Verantwortung - seien Sie vorsichtig, wem Sie Zugang zu Ihrem PiCockpit Interface geben, bewahren Sie Ihr Passwort und Ihre API-Schlüssel sicher auf. Stellen Sie außerdem sicher, dass Sie gefährliche Befehle, wie oben beschrieben, "schützen", damit sie nicht durch versehentliches Anklicken ausgeführt werden können.
Raspi Berrys hilfreiche Raspberry Pi (und PiCockpit) Tipps
Guten Tag!
Ich möchte das folgende Kommando mit einer picontrol Schaltfläche ausführen: cd /home/pi/Sensoren ; python3 SCRIPT.py
Ich habe es wie beschrieben gemacht und ich kann die Taste drücken, aber der Befehl wird nicht ausgeführt und der Prozess kann auch nicht gestoppt werden.
Haben Sie einen Rat?
Danke
Denken Sie daran, dass picontrol keine Shell ist - alle Befehle werden unabhängig voneinander ausgeführt. Sie müssen absolute Pfade verwenden (cd - change directory - ist im Kontext von picontrol nutzlos).
Das Starten eines Python-Skripts funktioniert gut, Beispiel:
"Befehl": ["python3", "/home/pi/do_something.pyc"]
Aber ich habe Probleme, wenn das Skript später eine Anwendung mit einer grafischen Benutzeroberfläche wie Chromium startet oder wenn Chromium direkt gestartet wird:
"Befehl": ["chromium-browser"] führt zu "Unable to open X display. ".
Wie starte ich Skripte oder Anwendungen, die eine X-Anzeige erfordern?
Ich habe hier ein wenig mehr darüber geschrieben:
https://pi3g.com/2020/05/19/chromium-exit-code-5/
Grundsätzlich müssen Sie der Anwendung mitteilen, welche X-Anzeige sie verwenden soll.
Im Fall von Chromium wird dies mit einem Flag gemacht
chromium-browser -display=:0 -kiosk https://picockpit.com
Hinweis: -kiosk startet den Browser im Kioskmodus. Ich füge das nur als zusätzliche Information ein.
Anmerkung II: Dies sind zwei Bindestriche für die Parameter - WordPress ändert sie in einen einzigen langen Bindestrich, glaube ich.
Bei anderen Anwendungen müssen Sie dies überprüfen. Häufig geschieht dies durch Setzen einer Umgebungsvariablen.
Möglicherweise müssen Sie für PiCockpit ein Bash-Skript schreiben, das die Variable setzt und dann die Anwendung startet.
Und führen Sie dann das Bash-Skript aus.
Wenn Sie damit Erfolg haben, lassen Sie uns bitte daran teilhaben.
Max
Siehe auch diese beiden Links für weitere Informationen zu Kommandozeilenoptionen für Chromium:
http://peter.sh/experiments/chromium-command-line-switches/
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
Hallo, ich habe gerade einen Befehl mit Ihrer Software und Infrastruktur eingerichtet und es ist großartig! Vielen Dank für diese einfache und leicht zu bedienende Software. Ich wollte ein wenig Beratung, wenn Sie frei sind. Grundsätzlich habe ich meinen Pi so eingerichtet, dass er meinen PC aus dem Ruhezustand aufweckt, und Ihre Software ermöglicht eine einfache Webschnittstelle, um den PC mit einem etherwake-Befehl aufzuwecken, aber ich hätte gerne eine schnellere Möglichkeit, diesen einen Befehl sofort auszuführen. Glauben Sie, dass es eine Möglichkeit gibt, dies zu ermöglichen? Derzeit muss ich mich anmelden, um meinen PC aufzuwecken, dann zu meinem Befehl gehen und dann die Schaltfläche im Pop-up-Fenster auswählen. Wenn es jedoch eine API oder eine Verknüpfung gäbe, um den Befehl mit einem Klick auszuführen, wäre das hilfreich. Wie auch immer, vielen Dank dafür. Sehr genial 🙂
Danke für den Funktionsvorschlag, ich habe ihn aufgenommen. Wir planen, irgendwann eine Weckfunktion für die Lan-App einzurichten, vielleicht ist das dann etwas bequemer.
Hallo,
wie kann ich zum Beispiel Abfragen wie (Do you want to continue? [Y/n]) über das Script mit "Y" bestätigen?
Vielen Dank!
Hallo Herr Hager,
das ist eine sehr gute Frage! Einige Kommandozeilen-Programme wie zum Beispiel apt-get haben eine bereits integrierte -Annahme- Ja Option, die es ihnen ermöglicht in einem nicht-interaktivem Modus zu nutzen. Das wird etwa gerne in Skripten ausgenutzt, die ohne Bestätigungen per Hand laufen sollen. Alternativ gibt es das klassische Unix 'ja' Programm mit dem Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
yes | sudo apt upgrade
Abhängig von Ihrem konkreten Anwendungsfall sollte eigentlich eine dieser zwei Möglichkeiten eine gute Lösung darstellen. Ansonsten können Sie uns gerne noch einmal schreiben!
Hallo, kann man das RPi-Terminal von picockpit aus benutzen?
noch nicht, geplant für eine zukünftige Version. (Stand: 19.4.2023)
Nicht alle Icons von der genannten Website sind verfügbar/funktionieren.
Wie kann man neuere Icons als die Version 4.9.95 verwenden, z.B. 'mdi-lamps-outline'?
wir sind gerade dabei, den Code des Frontends zu aktualisieren. Ich werde Ihren Kommentar an unsere Entwickler weiterleiten. Möglicherweise können sie sich vor dem nächsten Update darum kümmern, um die Icons auf den neuesten Stand zu bringen.
Hallo, wir haben das Frontend aktualisiert, was bedeutet, dass Sie nun alle Icons bis zur neuesten Version von Material Design Icons verwenden können. Wir werden auch die Version der Schriftart in Zukunft auf dem neuesten Stand halten.
[...] KLICKEN SIE HIER: Erfahren Sie, wie Sie Ihre eigenen Befehle in PiControl einrichten können. [...]
[...] Die Verwaltungstools, mit denen Sie Ihren Pi steuern können, funktionieren alle. Dazu gehören die GPIO-, PiControl-, PiDoctor- und PiStats-Anwendungen. Vielleicht möchten Sie Ihre neue 64-Bit-Installation mit einer einfachen Möglichkeit zum Umschalten Ihres SSH-Servers einrichten? Oder das Media Center starten und stoppen, das Sie eingerichtet haben? Eine WoL-Nachricht verschicken? Eine gute Einführung in die Möglichkeiten, die unsere Software bietet, finden Sie hier. [...]
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"}'
Der obige Befehl funktioniert problemlos mit SSH, aber PiControl hat ein Problem und meldet es:
(100) E: Die Kommandozeilenoption 'n' [aus -ne] wird in Kombination mit den anderen Optionen nicht verstanden.
Ich vermute, dass ich mein JSON korrekt escaped habe, da der angezeigte Befehl in PiControl derselbe ist, den ich escaped und Leerzeichen in getrennte Strings aufgeteilt habe.
JSON:
{
"Name": "CISO Update-Befehle",
"Symbol": "mdi-update",
"Griff": "CISO",
"Beschreibung": "CISO installiert alle Updates",
"Befehle": {
"ciso-updates": {
"Name": "CISO Updates",
"Symbol": "mdi-server-minus",
"Beschreibung": "Aktualisiert die Liste aller Pakete im Repository und führt ein Upgrade aller installierten Pakete durch",
"Bestätigen": wahr,
"Benutzer": "root",
"Befehl": [
[
"apt-get",
"aktualisieren"
],
[
"apt-get",
"Upgrade",
"-y"
],
[
"apt-get",
"-just-print",
"Upgrade",
"2>&1",
“|”,
"Perl",
"-ne",
"wenn",
“(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
"/i)",
"{Druck",
"\"PACKAGE:",
“$1”,
"INSTALLIERT:",
“$2”,
"VERFÜGBAR:",
"$3\\n\"}'"
]
]
}
}
}