Uw Raspberry Pi op afstand bedienen met PiControl

PiControl van PiCockpit is een krachtige functie waarmee je je Raspberry Pi op afstand kunt bedienen vanaf elke webbrowser, door simpelweg op knoppen te klikken.
Je ziet de status en uitvoer van het commando.
Nieuwe commando's kunnen worden toegevoegd door simpelweg een JSON-bestand op je Raspberry Pi te bewerken.
In dit artikel laten we je zien hoe je dat doet en geven we je wat ideeën over wat je kunt bouwen met PiControl!
Hoe ziet het eruit?
Je zult merken dat er standaard drie commando's zijn opgenomen en direct beschikbaar zijn voor je Raspberry Pi: power off, reboot, upgrade client.

Wat kan ik doen met een Raspberry Pi en PiControl?
Hier zijn enkele dingen die u ermee kunt bouwen. Deze ideeën vereisen wat onderzoek en mogelijk kennis van codering en/of hardware van uw kant; In elk geval zal PiControl van PiCockpit u helpen met het gebruiksvriendelijke web-interface-gedeelte van uw project en u tonnen tijd besparen om dit via het internet te laten werken 🙂
- een snapshot maken met de Raspberry Pi Camera module en het naar u laten mailen
- start uw Raspberry Pi Minecraft server, en stop hem ook
- Speel een video af met omxplayer (u kunt ook een oneindige lus instellen voor de video, en de videolus stoppen als u naar een andere video wilt overschakelen)
- een eenvoudige besturing maken voor een stop-motion animatie camera, met behulp van de Raspberry Pi camera module
- een lokale computer in hetzelfde netwerk als uw Raspberry Pi wakker maken met Wake on LAN-functionaliteit
- een geluid afspelen (als een grap voor Halloween, bijvoorbeeld)
- een deur te openen - bijvoorbeeld een garagedeur, door de juiste besturingscommando's te geven via Z-Wave, enz.
- start de SSH service op uw Raspberry Pi, en sluit hem af - een "klop om te openen" aanpak voor betere beveiliging
- besturen van modeltreinen
- een relais in- en uitschakelen (hiervoor zijn twee knoppen nodig, of kan een "toggle"-knop worden gebruikt)
- de TV bedienen (van kanaal wisselen, volume veranderen, ...) met een IR-LED, bijvoorbeeld om activiteit te simuleren terwijl u op reis bent
- Lanceer een raket vanuit de webinterface
We zullen stap-voor-stap instructies publiceren voor enkele van deze projectideeën, zodat u een eenvoudige handleiding hebt om aan de slag te gaan met PiControl en uw Raspberry Pi op afstand te besturen.
Hoe kan ik extra knoppen voor afstandsbediening toevoegen voor de Raspberry Pi met PiControl?
U kunt gemakkelijk en veilig uw eigen commando's definiëren, door eenvoudigweg JSON bestanden op uw Raspberry Pi te bewerken. Dit is gedaan om veiligheidsredenen - ik had PiCockpit zo kunnen schrijven dat u commando's van de webinterface zou kunnen toevoegen, maar als iemand uw PiCockpit wachtwoord zou kennen, zou hij elk commando kunnen maken dat hij wenst. Volg daarom deze eenvoudige instructies om een nieuw JSON-bestand op uw Pi aan te maken.
Opmerking: deze instructies zijn opzettelijk zo gehouden dat gebruikers die geen ervaring hebben met de commandoregel ze kunnen volgen. Als u weet hoe u de commandoregel moet gebruiken, vindt u het misschien gemakkelijker / sneller om gewoon het bestand te maken en het te bewerken met nano.
Eerst moet u de bestandsbrowser openen in super gebruikersmodus (deze stap houdt uw PiCockpit PiControl configuratiebestanden veilig voor elke gebruiker of toepassing die ermee wil knoeien). Klik op Raspberry Pi OS Menu, en klik hier op de "Run ..." opdracht:

Start pcmanfm als root (sudo pcmanfm) door te typen "sudo pcmanfm" (zonder de aanhalingstekens) in het dialoogvenster dat wordt geopend, en klik op OK:

Een nieuw venster opent en toont de inhoud van de /home/pi directory:

Opmerking: je zou dit icoontje moeten zien, net onder het "File" menu. Het geeft aan dat je pcmanfm als gebruiker root gebruikt, en dus extra voorzichtig moet zijn (aangezien root elk bestand kan bewerken / verwijderen / verplaatsen! zelfs bestanden die kritisch zijn voor een normale werking van het systeem).

Geen zorgen, we raken alleen de bestanden aan die je hier nodig hebt 🙂
Open de volgende map op uw Raspberry Pi:
/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Tip: je kunt ook het pad kopiëren en plakken dat ik hierboven heb gegeven, en op de enter toets drukken om naar de directory te navigeren.
Raspi Berry's nuttige Raspberry Pi tips
klik met de rechtermuisknop in het lege gebied naast de bestaande bestanden, en selecteer "Nieuw bestand...".

Noem het nieuwe bestand ssh-server.json:


Klik nu met de rechtermuisknop op het nieuwe bestand om het contextmenu te openen. Kies "Geany":


Je kunt nu het nieuwe bestand zien dat we zojuist hebben gemaakt. Op dit moment is het echter leeg.
Laten we twee nieuwe commando's maken, één om de SSH server service af te sluiten, en één om hem te starten. Voer het volgende in het tekstveld in dat Geany u toont:
{
"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"]
}
}
}

Op dit punt moeten we het bestand opslaan. U kunt dit doen vanuit Geany's bestandsmenu, bijvoorbeeld door Opslaan te selecteren. (Of gebruik Ctrl + S):

Op dit moment zijn onze nieuwe commando's nog niet verschenen in de webinterface. Hiervoor moet je picockpit-client herstarten. Klik op het commando "Uitvoeren ..." in het menu van het Raspberry Pi OS en typ "sudo service picockpit-client restart" in het venster alvorens op OK te klikken:

Kijk nu naar je PiControl webinterface:


Als u alles juist getypt hebt, zullen de nieuwe commando's verschijnen. Als u een fout hebt gemaakt in uw JSON-bestand (bv. een haakje vergeten), zal PiCockpit het "gebroken" bestand gewoon negeren.
U kunt nu de commando's proberen. Als je op de knop SSH SERVER OFF klikt, krijg je de vraag of je het commando echt wilt uitvoeren. Klik ook hier op ssh server off, om het commando daadwerkelijk uit te voeren (of klik op cancel als je het toch niet wilt).

PiCockpit zal nu het commando uitvoeren, je zult voortgangsinformatie zien - en nadat het commando is uitgevoerd, zie je de volgende succesindicator:

Als u nu probeert verbinding te maken met uw Pi via SSH, zal de verbinding geweigerd worden:

Start de SSH-server weer op door op "SSH SERVER ON" te klikken. Nu zal een verbinding weer mogelijk zijn.
Gefeliciteerd! U hebt zojuist uw eigen set commando's gemaakt die u kunt uitvoeren vanuit de webinterface.
Blijf op de pagina terwijl u commando's uitvoert - de status wordt momenteel gewist als u wegnavigeert. Om te bepalen of de SSH-server draait, zou u een PiDoctor-test kunnen bouwen - PiControl is gewoon voor het uitvoeren van acties op afstand op uw Pi.
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
Vergeet niet om de picockpit-client te herstarten wanneer je nieuwe commando's toevoegt, of commando's update. U kunt ook commando's verwijderen die u niet wilt hebben, bijvoorbeeld als u de mogelijkheid wilt verwijderen om uw Raspberry Pi op afstand af te sluiten.
Uitleg van de syntaxis van het commando op afstand
Het bestand configureert een nieuwe module voor PiControl. Het heeft een .JSON syntaxis, zorg ervoor dat u opent en eindigt met accolades op een correcte manier, zoals in mijn voorbeeld.
Er is een hoofd, dat de module zelf configureert, en de commando's (in het "commando's" gedeelte). Ze delen enkele gemeenschappelijke ingangen:
naam
De "name" entries zijn menselijk leesbare namen die aan u getoond worden in de web-interface
pictogram
De "icon" entries zijn optioneel om je knoppen en module te versieren. Dit zijn Material Design Icon namen, bijvoorbeeld "mdi-ssh".
U kunt een volledige lijst van Material Design-pictogrammen hier. Kopieer gewoon de naam van het icoon (inclusief de mdi- aan het begin).
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
beschrijving
De "beschrijving" is optioneel en geeft u de mogelijkheid om wat meer informatie over het commando of de module toe te voegen.
handvat
Het "handle" gegeven is expliciet voor de module, en moet uniek zijn onder de modules. In het geval van de commando's is het handvat impliciet. "ssh-stop" en "ssh-start"zijn de twee handvatten die ik heb gebruikt voor de commando's in mijn voorbeeld.
U kunt om het even wat als handvat kiezen, zolang het maar niet de tekens "/", "+", "$", "*" bevat. Ik raad aan om het bij gewone ASCII karakters te houden, en de "-" te gebruiken. Het handvat is vereist.
Uw bestand kan, tussen haakjes, een andere bestandsnaam hebben dan het handvat - ik moedig u aan om tenminste verwante namen te gebruiken voor de bestandsnaam en het handvat, zodat u het module .JSON bestand gemakkelijk kunt identificeren op uw harde schijf.
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
De commando's gaan in de "commando's" blok, en hebben extra configuratiemogelijkheden:
bevestigen
Als "bevestigen" aanwezig is en ingesteld is op waar, zal de PiControl webinterface een bevestigingsvenster tonen voordat het commando daadwerkelijk wordt uitgevoerd. Dit is handig om ervoor te zorgen dat "gevaarlijke" commando's niet per ongeluk worden uitgevoerd door een tik of klik.
gebruiker
Als "gebruiker" aanwezig is, wordt de opdracht uitgevoerd als deze specifieke gebruiker (als root in ons voorbeeld, om er zeker van te zijn dat we voldoende privileges hebben).
PiControl zal commando's uitvoeren als gebruiker "pi" standaard. U kunt het ook instellen op andere gebruikers met minder rechten dan "pi“.
Als je probeert GPIO commando's uit te voeren, of video's af te spelen met omxplayer, moet je misschien je nieuwe gebruiker extra mogelijkheden geven. De gebruiker pi heeft standaard deze vereiste rechten. Gewoonlijk worden deze rechten ingesteld door de gebruiker toe te voegen aan een speciale groep.
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
commando
Dit is het eigenlijke commando dat je op je Raspberry Pi moet uitvoeren. Merk op dat je de spaties in het commando moet vervangen door zoals je het op de commandoregel zou uitvoeren. Bijvoorbeeld,
service ssh start
moet worden geschreven als:
["service", "ssh", "start"]
PiControl ondersteunt ook het chainen van een serie commando's (b.v. de gebruikelijke apt-get update, apt-get upgrade sequentie). Kijk in core.json voor een voorbeeld van hoe dat gedaan wordt.
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
Conclusie: PiControl voor uw behoeften op het gebied van afstandsbediening voor Raspberry Pi
Met PiCockpit en PiControl is het heel eenvoudig om elk commando op afstand toe te voegen dat u op uw Raspi wilt uitvoeren, en om uw Pi via een webinterface te kunnen bedienen. Om dit te laten werken heeft de Raspberry Pi alleen een internetverbinding nodig - u hoeft niet in hetzelfde netwerk te zitten.
Wat zou u willen bouwen met PiCockpit en PiControl? Reageer hieronder, en ik zal proberen om u te helpen met uw project 🙂

Met grote macht komt grote verantwoordelijkheid - wees voorzichtig met wie je toegang geeft tot je PiCockpit interface, houd je wachtwoord en API sleutels veilig. Zorg er ook voor dat je gevaarlijke commando's "beschermt", zoals hierboven besproken, zodat ze niet worden uitgevoerd door er per ongeluk op te klikken.
Raspi Berry's nuttige Raspberry Pi (en PiCockpit) tips
hallo daar!
Ik wil de volgende comand uitvoeren met een picontrol knop: cd /home/pi/Sensoren ; python3 SCRIPT.py
Ik heb het gedaan zoals beschreven en ik kan op de knop drukken maar de opdracht wordt niet uitgevoerd en ook het proces kan niet worden gestopt.
Enig advies?
Bedankt
Onthoud dat picontrol geen shell is - alle commando's worden onafhankelijk uitgevoerd. Je moet absolute paden gebruiken (cd - change directory - is nutteloos in de context van picontrol).
Een python script starten werkt prima, voorbeeld:
"commando": ["python3", "/home/pi/do_something.pyc"]
Maar ik heb problemen als het script later een app start met een GUI zoals Chromium of als Chromium direct wordt gestart:
"commando": ["chromium-browser"] resulteert in "Unable to open X display. ".
Hoe start ik scripts of apps die een X-scherm vereisen?
Ik heb er hier wat meer over geschreven:
https://pi3g.com/2020/05/19/chromium-exit-code-5/
In principe moet je de applicatie vertellen welk X scherm gebruikt moet worden.
In het geval van Chromium wordt dit gedaan met een vlag
chromium-browser -display=:0 -kiosk https://picockpit.com
Let op, -kiosk start de browser in kiosk modus. Dat is gewoon wat extra informatie.
noot II: dit zijn twee streepjes voor de parameters - WordPress verandert ze in een enkel lang streepje geloof ik.
Voor andere toepassingen moet u dat controleren. Vaak wordt dit gedaan door een omgevingsvariabele in te stellen.
Mogelijk zou u voor PiCockpit een bash-script moeten schrijven dat de variabele instelt en dan de toepassing start.
En voer dan het bash script uit.
Als je hier succes mee hebt, deel het dan met ons.
Max
Zie ook deze twee links voor meer informatie over opdrachtregel-switches voor Chromium:
http://peter.sh/experiments/chromium-command-line-switches/
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
Hallo, ik heb net een commando opgezet met jullie software en infrastructuur en het is geweldig! Heel erg bedankt voor deze eenvoudige en makkelijk te gebruiken software. Ik wilde een beetje advies als je vrij bent. In principe, heb ik mijn Pi ingesteld om mijn pc uit de slaap te wekken, en uw software die een eenvoudige webinterface toestaat om de pc met een etherwake commando te wekken werkt, maar ik zou een snellere manier willen om dit ene commando onmiddellijk uit te voeren. Denk je dat er een manier is om dit mogelijk te maken? Op dit moment moet ik, om mijn pc wakker te maken, inloggen en dan naar mijn commando gaan en dan de knop in het pop-upvenster kiezen, maar als er een api of een snelkoppeling was om in principe het commando met één klik uit te voeren, zou dat nuttig zijn. Hoe dan ook, heel erg bedankt voor dit. Zeer geweldig 🙂 🙂 🙂 ♥
Bedankt voor de suggestie, ik heb het toegevoegd. We zijn van plan om een keer een wake on lan app te doen, misschien is het dan wat handiger.
Hallo,
Wie kan ik zum Beispiel Abfragen wie (Wilt u doorgaan? [Y/n]) über das Script mit "Y" bestätigen?
Vielen Dank!
Hallo, meneer Hager,
das ist eine sehr gute Frage! Sommige Kommandozeilen programma's, zoals bijvoorbeeld apt-get, hebben al een geïntegreerde -aanvaarden-ja Optie, die es ermöglicht sie in einem nicht-interaktivem Modus zu nutzen. Dit wordt vaak gebruikt in scripts, die zonder Bestätigungen per hand kunnen worden uitgevoerd. Als alternatief is er de klassieke Unix 'ja' Programm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
yes | sudo apt upgrade
Afhankelijk van uw moeilijke gebruiksomstandigheden, moet elk van deze twee mogelijkheden een goede oplossing bieden. In het beste geval kunt u ons alstublieft nog een keer schrijven!
Hallo, kun je RPi terminal van picockpit gebruiken?
nog niet, gepland voor een toekomstige versie. (vanaf 19.4.2023)
Niet alle pictogrammen van de genoemde website zijn beschikbaar / werken.
Hoe gebruik je nieuwere iconen dan versie 4.9.95, bijvoorbeeld 'mdi-lamps-outline' ?
we zijn bezig met het updaten van de frontend code. Ik zal uw opmerking delen met onze ontwikkelaar, mogelijk kunnen zij hiernaar kijken voor de volgende update om de pictogrammen naar de meest recente versie te brengen.
Hallo, we hebben de voorkant bijgewerkt, wat betekent dat je nu alle pictogrammen tot en met de nieuwste versie van Material Design Icons kunt gebruiken. We zullen in de toekomst ook de versie van het lettertype up-to-date houden.
[...] KLIK HIER: Leer hoe je je eigen commando's kunt instellen in PiControl. [...]
[...] De beheertools waarmee je je Pi kunt besturen werken allemaal. Hieronder vallen de GPIO, PiControl, PiDoctor en PiStats apps. Misschien je nieuwe 64 Bit-installatie instellen met een gemakkelijke manier om je SSH-server aan te zetten? Of dat mediacenter dat je hebt opgezet starten en stoppen? Een WoL-bericht versturen? Je kunt hier een goede introductie vinden in de mogelijkheden die onze software biedt. [...]
apt-get -just-print upgrade 2>&1 | perl -ne 'als (/Inst.([\w,\d,\d.,~,:,\+]+)\[([\w,\d,\d.,~,:,\+]+)\? /i) {print "PACKAGE: $1 GEÏNstalleerd: $2 BESCHIKBAAR: $3"}".
Het bovenstaande commando werkt prima met SSH, maar PiControl heeft een probleem en rapporteert:
(100) E: Commandoregeloptie 'n' [van -ne] wordt niet begrepen in combinatie met de andere opties.
Ik denk dat ik mijn JSON correct heb geëscaped, aangezien het weergegeven commando in PiControl hetzelfde is dat ik heb geëscaped en spaties heb opgesplitst in afzonderlijke strings.
JSON:
{
"naam": "CISO update commando's",
"pictogram": "mdi-update",
"handvat": "CISO",
"description": "CISO installeer alle updates",
"commando's": {
"ciso-updates": {
"naam": "CISO Updates",
"pictogram": "mdi-server-minus",
"description": "Updates van de lijst van alle pakketten in het archief en upgrades van alle geïnstalleerde pakketten."
"bevestigen": waar,
"gebruiker": "root",
"commando": [
[
"apt-get",
"update"
],
[
"apt-get",
"upgrade",
"-y"
],
[
"apt-get",
"-just-print",
"upgrade",
"2>&1",
“|”,
"perl",
"-ne",
"'als',
“(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
"/i)",
"{afdruk,
"PAKKET:",
“$1”,
"INSTALLED:",
“$2”,
"BESCHIKBAAR:",
"$3\n"}".
]
]
}
}
}
Hallo,
Ik heb de eerste stappen geprobeerd met picockpit. Ik heb echter geen gebruik gemaakt van die Fernsteuerung zu öffnen. z.B. chromium-browser, dillo, geany
Over die Eingabe im terminal lassen sich die Anwendungen direktöffnen
"geany": {
"naam": "EditorG",
"pictogram": "mdi-toepassing-edit-outline",
"beschrijving": "Teksteditor",
"bevestigen": waar,
"notermination": waar,
"gebruiker": "root",
"commando": ["geany"].
},