Fjärrstyr din Raspberry Pi med PiControl

Styr din Raspberry Pi Titelbild

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.

Grundläggande kommandon för att fjärrstyra din Pi med hjälp av ett webbgränssnitt - från vilken webbläsare som helst.
Denna PiCockpit PiControl-skärmdump visar hur kommandona ser ut

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 ...":

Raspberry Pi OS-menyn, som visar kommandot run.
Raspberry Pi OS-menyn. Kommandot Run finns längst ner

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

Kör dialogrutan Kommando på Raspberry Pi OS
Kommandot run, förbereder för att köra pcmanfm som root

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

pcmanfm skärmdump med superanvändarrättigheter
pcmanfm, filhanteraren som körs som superanvändare

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).

Indikator för rotläge

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

Visar konfigurationskatalogen för PiCockpits PiControl. Observera att om du har en ny installation av PiCockpit kommer du bara att se core.json. De andra modulerna skapades av mig i test- och demonstrationssyfte (experiment med fjärrstyrning).

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...".

Skapa en ny fil med Raspbian OS
Raspberry Pi OS-menyn för ett högerklick för att skapa en ny fil

Kalla den nya filen ssh-server.json:

En dialogruta frågar efter namnet på den nya filen.
skapa en ny fil som rotanvändare med pcmanfm
ssh-server.json skapas nu i den här mappen.

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

Kontextmeny som visar programmeringsredigeraren Geany på Raspberry Pi OS
Geany är ett redigeringsprogram som du kan använda för att redigera filen
Geany programmering editor skärmdump
Geany visar filen ssh-server.json - inget i den ännu

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"]
    }
  }
}

Lägg till texten i Geany. Var uppmärksam på parenteserna, dokumentstrukturen och att orden är korrekt stavade för att det ska fungera.

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):

Geanys filmeny

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:

starta om tjänsten picockpit-client med hjälp av dialogrutan körning
starta om en tjänst från dialogrutan Kör

Ta nu en titt på PiControls webbgränssnitt:

PiControl webbgränssnitt för fjärrstyrning skärmdump
En ny knapp för att snabbt hoppa till de nya SSH-kommandona dök upp.
De nya kommandona (knapparna) som vi lagt till i webbgränssnittet för att köra fjärrkommandon på Raspi!

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).

En säkerhetsåtgärd som förhindrar att du utför farliga kommandon genom att klicka på dem av misstag.

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:

PiControl har kört "service ssh stop" på din Pi.

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

PuTTYNG visar ett dödligt fel.
Nätverksfel: anslutning 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 🙂 .

PiControl-skärmdump som visar knappar för att fjärrstyra omxplayer och för att styra Chrome-webbläsaren med hjälp av webbgränssnittet.
Denna skärmdump av PiControl visar en anpassad modul som jag har satt upp: kontrollera Chrome (Chromium), köra videor i en loop med omxplayer, visa YouTube-videor på Pi

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)

19 Kommentarer

  1. Max den maj 12, 2021 kl 5:30 e m

    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

    • raspi berry den juli 1, 2021 kl 5:22 e m

      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).

  2. Alex den augusti 16, 2021 kl 6:34 e m

    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?

    • PiCaptain den augusti 19, 2021 kl 5:08 e m

      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

      • PiCaptain den augusti 19, 2021 kl 5:09 e m

        Som bild

    • PiCaptain den augusti 19, 2021 kl 5:11 e m

      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

  3. Sri den oktober 13, 2021 kl 1:23 e m

    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 🙂 .

    • PiCaptain den oktober 23, 2021 kl 1:41 e m

      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.

  4. Hager den mars 31, 2022 kl 12:26 e m

    Hej,
    Wie kann ich zum Beispiel Abfragen wie (Vill du fortsätta? [Y/n]) über das Script mit "Y" bekräfta?

    Vielen Dank!

    • Hanno den april 20, 2022 kl 7:30 f m

      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!

  5. Jaka den mars 30, 2023 kl 7:32 f m

    Hej, kan du använda RPi-terminalen från picockpit?

    • raspi berry den april 19, 2023 kl 7:48 e m

      inte ännu, planeras för en framtida version. (från och med 19.4.2023)

  6. DGDodo den april 25, 2023 kl 10:09 e m

    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"?

    • PiCaptain den maj 10, 2023 kl 12:33 e m

      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.

    • PiCaptain den maj 19, 2023 kl 11:54 f m

      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.

  7. [...] KLICKA HÄR: Lär dig hur du kan ställa in dina egna kommandon i PiControl. [...]

  8. Expanding PiCockpit to 64 Bit Pi OS den augusti 28, 2023 kl 9:32 f m

    [...] 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. [...]

  9. chris l den september 4, 2023 kl 11:11 f m

    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\"}'"
    ]
    ]
    }
    }
    }

  10. Bruchpilot den oktober 8, 2023 kl 12:28 e m

    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"]
    },

Lämna en kommentar