Uw Raspberry Pi op afstand bedienen met PiControl

Je Raspberry Pi besturen Titelafbeelding

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.

Basiscommando's om uw Pi op afstand te bedienen met een webinterface - vanaf elke browser
Deze PiCockpit PiControl screenshot laat zien hoe de commando's eruit zien

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:

Raspberry Pi OS Menu, met het run commando.
Het Raspberry Pi OS Menu. De opdracht Uitvoeren staat onderaan

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

Opdrachten uitvoeren op Raspberry Pi OS
Het run commando, ter voorbereiding om pcmanfm als root te draaien

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

pcmanfm screenshot met super gebruiker rechten
pcmanfm, de bestandsbeheerder die draait als supergebruiker

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

Wortelstand indicator

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

Toont de configuratiemap voor PiCockpit's PiControl. Let op, als u een verse installatie van PiCockpit heeft, zult u alleen core.json zien. De andere modules zijn door mij gemaakt voor test- en demonstratiedoeleinden (experimenten met afstandsbediening).

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

Een nieuw bestand maken met Raspbian OS
Raspberry Pi OS menu voor een rechtermuisklik om een nieuw bestand te maken

Noem het nieuwe bestand ssh-server.json:

Een dialoogvenster vraagt naar de naam voor het nieuwe bestand.
een nieuw bestand aanmaken als root gebruiker met pcmanfm
ssh-server.json is nu aangemaakt in deze map.

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

Context menu met Geany de programmeur's editor op Raspberry Pi OS
Geany is een editor die je kunt gebruiken om het bestand te bewerken
Geany programmeer editor screenshot
Geany toont het bestand ssh-server.json - er staat nog niets in

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

Het toevoegen van de tekst in Geany. Let op de haakjes, en de document structuur en de woorden moeten correct gespeld zijn om het te laten werken.

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

Geany's bestand menu

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:

de picockpit-client service herstarten via het run dialoogvenster
een dienst herstarten vanuit het dialoogvenster Uitvoeren

Kijk nu naar je PiControl webinterface:

PiControl webinterface voor afstandsbediening screenshot
Een nieuwe knop om snel naar de nieuwe SSH commando's te gaan verscheen
De nieuwe commando's (knoppen) die we hebben toegevoegd aan de webinterface om commando's op afstand uit te voeren op de Raspi!

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

Een beveiliging om te voorkomen dat u gevaarlijke commando's uitvoert door er per ongeluk op te klikken

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

PiControl heeft met succes "service ssh stop" op uw Pi uitgevoerd.

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

PuTTYNG vertoont een fatale fout.
Netwerkfout: verbinding geweigerd

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 🙂

PiControl screenshot met knoppen om omxplayer op afstand te bedienen en de Chrome webbrowser te bedienen via de webinterface
Deze PiControl screenshot toont een aangepaste module die ik heb opgezet: controleer Chrome (Chromium), laat video's in een lus lopen met omxplayer, toon YouTube video's op de Pi

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

19 Opmerkingen

  1. Max op mei 12, 2021 op 5:30 pm

    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

    • raspi berry op juli 1, 2021 op 5:22 pm

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

  2. Alex op augustus 16, 2021 op 6:34 pm

    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?

    • PiCaptain op augustus 19, 2021 op 5:08 pm

      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

      • PiCaptain op augustus 19, 2021 op 5:09 pm

        Als afbeelding

    • PiCaptain op augustus 19, 2021 op 5:11 pm

      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

  3. Sri op oktober 13, 2021 op 1:23 pm

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

    • PiCaptain op oktober 23, 2021 op 1:41 pm

      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.

  4. Hager op maart 31, 2022 op 12:26 pm

    Hallo,
    Wie kan ik zum Beispiel Abfragen wie (Wilt u doorgaan? [Y/n]) über das Script mit "Y" bestätigen?

    Vielen Dank!

    • Hanno op april 20, 2022 op 7:30 am

      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!

  5. Jaka op maart 30, 2023 op 7:32 am

    Hallo, kun je RPi terminal van picockpit gebruiken?

    • raspi berry op april 19, 2023 op 7:48 pm

      nog niet, gepland voor een toekomstige versie. (vanaf 19.4.2023)

  6. DGDodo op april 25, 2023 op 10:09 pm

    Niet alle pictogrammen van de genoemde website zijn beschikbaar / werken.
    Hoe gebruik je nieuwere iconen dan versie 4.9.95, bijvoorbeeld 'mdi-lamps-outline' ?

    • PiCaptain op mei 10, 2023 op 12:33 pm

      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.

    • PiCaptain op mei 19, 2023 op 11:54 am

      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.

  7. [...] KLIK HIER: Leer hoe je je eigen commando's kunt instellen in PiControl. [...]

  8. Expanding PiCockpit to 64 Bit Pi OS op augustus 28, 2023 op 9:32 am

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

  9. chris l op september 4, 2023 op 11:11 am

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

  10. Bruchpilot op oktober 8, 2023 op 12:28 pm

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

Laat een reactie achter