Fjärrstyr din Raspberry Pi med PiControl

PiCockpit's PiControl är en kraftfull funktion som gör att du kan fjärrstyra din Raspberry Pi från vilken webbläsare som helst, genom att helt enkelt klicka på knappar.
Du kommer att se kommandots tillstånd och utdata.
Nya kommandon kan läggas till genom att helt enkelt redigera en JSON-fil på din Raspberry Pi.
I den här artikeln visar vi hur du gör det och ger dig några idéer om vad du kan bygga med PiControl!
Hur ser den ut?
Du kommer att märka att tre kommandon ingår som standard och är omedelbart tillgängliga för din Raspberry Pi: stäng av, starta om, uppgradera klient.

Vad kan jag göra med en Raspberry Pi och PiControl?
Här är några saker som du kan bygga med den. Dessa idéer kommer att kräva en del forskning och eventuellt kodning och/eller kunskap om hårdvara från din sida. I vilket fall som helst kommer PiCockpit's PiControl att hjälpa dig med den lättanvända webbgränssnittsdelen av ditt projekt och spara dig massor av tid för att få det här att fungera över Internet 🙂 .
- ta en ögonblicksbild med hjälp av Raspberry Pi Camera-modulen och få den skickad till dig
- starta din Raspberry Pi Minecraft-server och stoppa den också
- Spela upp en video med omxplayer (du kan också ställa in en oändlig loop för videon och stoppa videoslingan om du vill byta till en annan video).
- skapa en enkel kontroll för en kamera för stop-motion-animation med hjälp av Raspberry Pi:s kameramodul
- väcka en lokal dator i samma nätverk som Raspberry Pi med Wake on LAN-funktionen
- spela upp ett ljud (till exempel som ett skämt på Halloween)
- öppna en dörr, t.ex. en garageport, genom att ge lämpliga kontrollkommandon via Z-Wave osv.
- starta SSH-tjänsten på din Raspberry Pi och stänga av den - en "knacka för att öppna"-metod för ökad säkerhet.
- styrning av modelltåg
- slå på och stänga av en relä (kräver två knappar eller kan göras med en växelknapp)
- styra TV:n (byta kanal, ändra volymen, ...) med hjälp av en IR LED, till exempel för att simulera aktivitet när du är på resande fot.
- Starta en raket från webbgränssnittet
Vi kommer att publicera steg-för-steg-instruktioner för några av dessa projektidéer, så att du får en enkel guide för att komma igång med PiControl och fjärrstyra din Raspberry Pi.
Hur kan jag lägga till ytterligare fjärrstyrningsknappar för Raspberry Pi med PiControl?
Du kan enkelt och säkert definiera dina egna kommandon genom att helt enkelt redigera JSON-filer på din Raspberry Pi. Detta görs av säkerhetsskäl - jag kunde ha skrivit PiCockpit så att du kunde lägga till kommandon från webbgränssnittet, men om någon känner till ditt PiCockpit-lösenord skulle de kunna skapa vilket kommando som helst. Följ därför dessa enkla instruktioner för att skapa en ny JSON-fil på din Pi.
Observera: dessa instruktioner är medvetet utformade så att användare som inte har erfarenhet av kommandoraden kan följa dem. Om du vet hur man använder kommandoraden kan det vara enklare/snålare att bara skapa filen och redigera den med nano.
Först måste du öppna filbläddraren i superanvändarläge (det här steget skyddar dina PiCockpit PiControl-konfigurationsfiler från alla användare eller program som vill manipulera dem). Klicka på Raspberry Pi OS Menu och klicka här på kommandot "Run ...":

Kör pcmanfm som root (sudo pcmanfm) genom att skriva "sudo pcmanfm" (utan citattecken) i dialogrutan som öppnas och klicka på OK:

Ett nytt fönster öppnas och visar innehållet i katalogen /home/pi:

Observera: du bör se den här ikonen precis under menyn "File". Den indikerar att du använder pcmanfm som användare root, och bör därför vara extra försiktig (eftersom root kan redigera/ta bort/flytta vilken fil som helst! även filer som är kritiska för en normal systemdrift).

Ingen fara, vi rör bara de filer som du behöver här 🙂 .
Öppna följande katalog på din Raspberry Pi:
/etc/picockpit-client/apps/com.picockpit/picontrol/moduler

Tips: Du kan också kopiera och klistra in sökvägen som jag har angett ovan och trycka på enter-tangenten för att navigera till katalogen.
Raspi Berrys användbara tips om Raspberry Pi
högerklicka på det tomma området bredvid de befintliga filerna och välj "Ny fil...".

Kalla den nya filen ssh-server.json:


Nu måste du högerklicka på den nya filen för att visa snabbmenyn. Välj "Geany":


Nu kan du se den nya filen som vi just skapade. Just nu är den dock tom.
Vi skapar två nya kommandon, ett för att stänga av SSH-servertjänsten och ett för att starta den. Skriv in följande i det textfält som Geany visar dig:
{
"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"]
}
}
}

Nu ska vi spara filen. Du kan göra detta från Geanys filmeny, till exempel genom att välja Save. (Eller använd Ctrl + S):

Vid denna tidpunkt har våra nya kommandon ännu inte visats i webbgränssnittet. Nu måste du starta om picockpit-client för detta. Klicka på kommandot "Kör ..." i Raspberry Pi OS-menyn och skriv "sudo service picockpit-client restart" i fönstret innan du klickar på OK:

Ta nu en titt på PiControls webbgränssnitt:


Om du har skrivit allting korrekt kommer de nya kommandona att visas. Om du har gjort ett misstag i din JSON-fil (t.ex. glömt en parentes) kommer PiCockpit helt enkelt att ignorera den "trasiga" filen.
Du kan nu prova kommandona. Om du klickar på knappen SSH SERVER OFF får du frågan om du verkligen vill köra kommandot. Klicka på ssh server off även här för att faktiskt köra kommandot (eller klicka på avbryt om du inte vill trots allt).

Så PiCockpit kommer nu att köra kommandot, du kommer att se förloppsinformation - och när det är klart kommer du att se följande framgångsindikator:

Om du försöker ansluta till din Pi nu med SSH kommer anslutningen att nekas:

Starta SSH-servern igen genom att klicka på "SSH SERVER ON". Nu är det möjligt att ansluta igen.
Grattis! Du har just skapat din egen uppsättning kommandon som du kan köra från webbgränssnittet.
Stanna kvar på sidan när du kör kommandon - statusen kommer att rensas om du går därifrån. För att avgöra om SSH-servern körs kan du bygga ett PiDoctor-test - PiControl är helt enkelt till för att utföra fjärråtgärder på din Pi.
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
Kom ihåg att starta om picockpit-klienten när du lägger till nya kommandon eller uppdaterar kommandon. Du kan också ta bort kommandon som du inte vill ha, till exempel om du vill ta bort möjligheten att stänga av din Raspberry Pi på distans.
Förklaring av syntaxen för fjärrkommandot
Filen konfigurerar en ny modul för PiControl. Den har en .JSON-syntax, se till att du öppnar och avslutar med parenteser på ett korrekt sätt, som i mitt exempel.
Det finns ett huvud som konfigurerar själva modulen och kommandona (i delen "commands"). De har vissa gemensamma poster:
namn
"Name"-posterna är människoläsbara namn som visas för dig i webbgränssnittet.
ikon
Ikonerna är valfria för att dekorera dina knappar och moduler. Det är materialdesign-ikonnamn, till exempel "mdi-ssh".
Du kan kolla in en fullständig lista över Material Design-ikoner här. Kopiera helt enkelt ikonens namn (inklusive mdi- i början).
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
beskrivning
Posterna "description" är valfria och gör det möjligt att lägga till lite mer information om kommandot eller modulen.
handtag
"Handle"-posten är explicit för modulen och måste vara unik bland modulerna. När det gäller kommandon är handtaget implicit. "ssh-stop" och "ssh-start" är de två handtag som jag har använt för kommandona i mitt exempel.
Du kan välja vad som helst som handtag, så länge det inte innehåller tecknen "/", "+", "$", "*". Jag rekommenderar att du håller dig till enkla ASCII-tecken med gemener och använder "-". Handtaget är krävs.
Din fil kan förresten ha ett annat filnamn än handtaget - jag uppmuntrar dig att använda åtminstone relaterade namn för filnamnet och handtaget, så att du lätt kan identifiera modulens JSON-fil på din hårddisk.
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
Kommandon går in i "kommandon", och har ytterligare konfigurationsmöjligheter:
bekräfta
Om "bekräfta" finns och är inställd på true, kommer PiControls webbgränssnitt att visa en bekräftelsedialog innan kommandot faktiskt körs. Detta är användbart för att se till att "farliga" kommandon inte utförs genom ett oavsiktligt tryck eller klick.
användare
Om "användare" är närvarande kommer kommandot att köras som just denna användare (som rot i vårt exempel, för att se till att vi har tillräckliga rättigheter).
PiControl kör kommandon som användare "pi" som standard. Du kan också ställa in den på andra användare med mindre rättigheter än "pi“.
Om du försöker köra GPIO-kommandon eller spela upp videor med omxplayer kan du behöva ge din nya användare ytterligare möjligheter. Användaren pi har som standard dessa nödvändiga privilegier. Vanligtvis fastställs dessa privilegier genom att användaren läggs till i en särskild grupp.
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
Kommando
Detta är det faktiska kommandot som du ska köra på din Raspberry Pi. Observera att du måste ersätta mellanslagen i kommandot med så som du skulle köra det på kommandoraden. Till exempel,
service ssh start
ska skrivas som:
["service", "ssh", "start"]
PiControl stöder också kedjning av en sekvens av kommandon (t.ex. den vanliga sekvensen apt-get update, apt-get upgrade). Kolla in core.json för ett exempel på hur detta görs.
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
Slutsats: PiControl för dina behov av fjärrkontroll för Raspberry Pi
Med PiCockpit och PiControl är det väldigt enkelt att lägga till alla fjärrkommandon som du vill köra på din Raspi och styra din Pi från ett webbgränssnitt. För att detta ska fungera behöver Raspberry Pi bara en Internetanslutning - Du behöver inte vara i samma nätverk..
Vad skulle du vilja bygga med PiCockpit och PiControl? Kommentera nedan, så ska jag försöka hjälpa dig med ditt projekt 🙂 .

Med stor makt kommer stort ansvar - var försiktig med vem du ger åtkomst till ditt PiCockpit-gränssnitt, håll ditt lösenord och API-nycklar säkra. Se också till att "skydda" farliga kommandon, som diskuterats ovan, så att de inte utförs om man klickar på dem av misstag.
Raspi Berrys användbara tips om Raspberry Pi (och PiCockpit)
Hej där!
Jag vill köra följande kommando med en picontrol-knapp: cd /home/pi/Sensoren ; python3 SCRIPT.py
Jag gjorde som beskrivet och jag kan trycka på knappen, men kommandot utförs inte och processen kan inte heller stoppas.
Har du några råd?
Tack
Kom ihåg att picontrol inte är ett skal - alla kommandon utförs oberoende av varandra. du måste använda absoluta sökvägar (cd - ändra katalog - är värdelöst i picontrols sammanhang).
Det fungerar bra att starta ett pythonskript, till exempel:
"kommando": ["python3", "/home/pi/do_something.pyc"]
Men jag har problem om skriptet senare startar en app med ett grafiskt gränssnitt som Chromium eller om Chromium startas direkt:
"kommando": ["chromium-browser"] resulterar i "Unable to open X display. ".
Hur startar jag skript eller appar som kräver en X-skärm?
Jag har skrivit lite mer om detta här:
https://pi3g.com/2020/05/19/chromium-exit-code-5/
I princip måste du tala om för programmet vilken X-display som ska användas.
I fallet Chromium görs det med en flagga
chromium-browser -display=:0 -kiosk https://picockpit.com
notera att -kiosk startar webbläsaren i kioskläge. Det är bara en extra upplysning.
not II: det är två streck för parametrarna - WordPress ändrar dem till ett enda långt streck tror jag.
För andra tillämpningar måste du kontrollera. Ofta görs detta genom att ställa in en miljövariabel.
För PiCockpit skulle du eventuellt behöva skriva ett bash-skript som ställer in variabeln och sedan startar programmet.
Kör sedan bash-skriptet.
Om du har lyckats med detta, dela gärna med dig till oss.
Max
Se även de här två länkarna för mer information om kommandoradsväxlar för Chromium:
http://peter.sh/experiments/chromium-command-line-switches/
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
Hej, jag har just installerat ett kommando med hjälp av din programvara och infrastruktur och det är fantastiskt! Tack så mycket för denna enkla och lättanvända programvara. Jag ville ha lite råd om du är ledig. I grund och botten har jag min Pi inställd för att väcka min dator från vila, och din programvara som tillåter ett enkelt webbgränssnitt för att väcka datorn med ett etherwake-kommando fungerar, men jag skulle vilja ha ett snabbare sätt att utföra detta enda kommando omedelbart. Tror du att det finns något sätt att göra detta möjligt? För närvarande måste jag för att väcka min dator logga in och sedan gå till mitt kommando och välja knappen i popup-rutan, men om det fanns ett api eller en genväg för att i princip köra kommandot med ett klick skulle det vara till hjälp. Hur som helst, tack så mycket för detta. Väldigt häftigt 🙂 .
Tack för förslaget, jag har lagt till det. Vi planerar att göra en Wake on Ian-app någon gång, kanske det kan bli lite mer bekvämt.
Hej,
Wie kann ich zum Beispiel Abfragen wie (Vill du fortsätta? [Y/n]) über das Script mit "Y" bekräfta?
Vielen Dank!
Hej Herr Hager,
das ist eine sehr gute Frage! Vissa kommandotekniska program som exempelvis apt-get har redan integrerats i programmet. -assume-yes Alternativ, som gör det möjligt för dem att använda i ett icke interaktivt läge. Detta kommer ungefär gärna att användas i skripten, som inte har några begränsningar per hand och som ska köras. Alternativt finns det klassiska Unix 'ja' Programm mit Sie das selbe Ergebnis erzielen können. Exempelvis med:
yes | sudo apt upgrade
Abhängig av ditt konkreta tillämpningsfall bör egentligen en av dessa två möjligheter utgöra en bra lösning. Ansonsten können Sie uns gerne noch einmal schreiben!
Hej, kan du använda RPi-terminalen från picockpit?
inte ännu, planeras för en framtida version. (från och med 19.4.2023)
Alla ikoner från den nämnda webbplatsen är inte tillgängliga/fungerande.
Hur använder man nyare ikoner än version 4.9.95, till exempel "mdi-lamps-outline"?
Vi håller på att uppdatera koden för frontend. Jag ska dela din kommentar med vår utvecklare, så att de kanske kan titta på detta innan nästa uppdatering för att få ikonerna till den senaste versionen.
Hej, vi har uppdaterat frontenden, vilket innebär att du nu kan använda alla ikoner upp till den senaste versionen av Material Design Icons. Vi kommer även att hålla versionen av Font uppdaterad framöver.
[...] KLICKA HÄR: Lär dig hur du kan ställa in dina egna kommandon i PiControl. [...]
[...] Alla administrativa verktyg som hjälper dig att styra din Pi fungerar. Detta inkluderar apparna GPIO, PiControl, PiDoctor och PiStats. Du kanske vill konfigurera din nya 64-bitarsinstallation med ett enkelt sätt att växla din SSH-server? Eller starta och stoppa det mediacenter du har satt upp? Skicka ett WoL-meddelande? Du hittar en bra introduktion till de möjligheter som vår programvara erbjuder här. [...]
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"}'
Kommandot ovan fungerar bra med SSH men PiControl har ett problem och rapporterar:
(100) E: Kommandoradsalternativet 'n' [från -ne] förstås inte i kombination med de andra alternativen.
Jag antar att jag undkom min JSON korrekt eftersom det visade kommandot i PiControl är detsamma som jag undkom och delade mellanslag i separata strängar.
JSON:
{
"Namn": "CISO uppdateringskommandon",
"ikon": "mdi-uppdatering",
"handtag": "CISO",
"Beskrivning": "CISO installerar alla uppdateringar",
"kommandon": {
"ciso-uppdateringar": {
"Namn": "CISO uppdateringar",
"ikon": "mdi-server-minus",
"Beskrivning": "Uppdaterar listan över alla paket i arkivet och uppgraderar alla installerade paket",
"bekräfta": sant,
"Användare": "root",
"Kommando": [
[
"apt-get",
"uppdatering"
],
[
"apt-get",
"Uppgradering",
"-y"
],
[
"apt-get",
"-just-print",
"Uppgradering",
"2>&1",
“|”,
"perl",
"-ne",
"'om",
“(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
"/i)",
"{utskrift",
"\"PACKAGE:",
“$1”,
"INSTALLERAD:",
“$2”,
"TILLGÄNGLIG:",
"$3\\n\"}'"
]
]
}
}
}
Hej,
jag försöker de första stegen med picockpit. tyvärr gelingt det mig ingen tillämpning över den fjärrstyrning att öppna. z.B. chromium-browser, dillo, geany
Över ingången i terminalen kan du direkt öppna applikationerna
"geany": {
"Namn": "EditorG",
"ikon": "mdi-applikation-edit-outline",
"Beskrivning": "Textredigerare",
"bekräfta": sant,
"notermination": sant,
"Användare": "root",
"Kommando": ["geany"]
},