Controlla il tuo Raspberry Pi da remoto usando PiControl

PiControl di PiCockpit è una potente funzione che ti permette di controllare il tuo Raspberry Pi a distanza da qualsiasi web-browser, semplicemente cliccando dei pulsanti. Vedrete lo stato e l'output del comando. Nuovi comandi possono essere aggiunti semplicemente modificando un file JSON sul tuo Raspberry Pi - ti mostreremo come fare, e ti daremo alcune idee su cosa puoi costruire usando PiControl!

Che aspetto ha?

Di default tre comandi sono inclusi e immediatamente disponibili per il vostro Raspi: ( spegnere, riavviare, aggiornare il client)

Comandi di base per controllare il tuo Pi a distanza usando un'interfaccia web - da qualsiasi browser
Questa schermata di PiCockpit PiControl mostra come appaiono i comandi

Cosa posso fare con un Raspberry Pi e PiControl?

Ecco alcune cose che potete costruire con esso. Queste idee richiederanno alcune ricerche, e possibilmente conoscenze di codifica e/o hardware da parte vostra; In ogni caso, PiControl di PiCockpit vi aiuterà con la parte di interfaccia web facile da usare del vostro progetto e vi farà risparmiare tonnellate di tempo per far funzionare il tutto su Internet 🙂

  • scattare un'istantanea usando il modulo Raspberry Pi Camera e farsela spedire per posta
  • avviare il server Raspberry Pi Minecraft e fermarlo
  • Riproduci un video usando omxplayer (puoi anche impostare un loop infinito per il video, e fermare il loop del video se vuoi passare a un altro video)
  • creare un facile controllo per una telecamera di animazione stop-motion, utilizzando il modulo telecamera Raspberry Pi
  • svegliare un computer locale nella stessa rete del Raspberry Pi con la funzionalità Wake on LAN
  • riprodurre un suono (come scherzo per Halloween, per esempio)
  • aprire una porta, ad esempio quella di un garage, impartendo opportuni comandi di controllo tramite Z-Wave, ecc.
  • avviare il servizio SSH sul vostro Raspberry Pi, e spegnerlo - un approccio "bussare per aprire" per una maggiore sicurezza
  • controllare i modelli di treni
  • accendere e spegnere un relais (richiede due pulsanti, o può essere fatto usando un pulsante "toggle")
  • controllare la TV (cambiare canale, cambiare volume, ...) usando un LED IR, per esempio per simulare un'attività mentre si è in viaggio
  • Lanciare un razzo dall'interfaccia web

Pubblicheremo istruzioni passo dopo passo per alcune di queste idee di progetto, in modo da avere una guida facile per iniziare con PiControl e controllare a distanza il vostro Raspberry Pi.

Come posso aggiungere ulteriori pulsanti di comando a distanza per il Raspberry Pi con PiControl?

Puoi facilmente e in modo sicuro definire i tuoi comandi, semplicemente modificando i file JSON sul tuo Raspberry Pi. Questo è fatto per ragioni di sicurezza - avrei potuto scrivere PiCockpit in un modo che ti avrebbe permesso di aggiungere comandi dall'interfaccia web, ma se qualcuno conoscesse la password di PiCockpit, potrebbe creare qualsiasi comando che desidera. Quindi, per favore segui queste semplici istruzioni per creare un nuovo file JSON sul tuo Pi.

Nota: queste istruzioni sono volutamente tenute in un modo che gli utenti che non hanno esperienza con la linea di comando possono seguire. Se sai come usare la linea di comando, potresti trovare più facile / veloce creare semplicemente il file e modificarlo con nano.

Per prima cosa, è necessario aprire il browser dei file in modalità super user (questo passaggio mantiene i file di configurazione di PiCockpit PiControl al sicuro da qualsiasi utente o applicazione che voglia manometterli). Clicca su Raspberry Pi OS Menu, e qui clicca sul comando "Run ...":

Raspberry Pi OS Menu, che mostra il comando run.
Il menu del sistema operativo Raspberry Pi. Il comando Run è vicino al fondo

Eseguite pcmanfm come root (sudo pcmanfm) digitando "sudo pcmanfm" (senza le virgolette) nella finestra di dialogo che si apre, e cliccando su OK:

Eseguire il dialogo dei comandi su Raspberry Pi OS
Il comando di esecuzione, preparando l'esecuzione di pcmanfm come root

Si apre una nuova finestra che mostra il contenuto della directory /home/pi:

schermata di pcmanfm con diritti di super utente
pcmanfm, il file manager in esecuzione come super utente

Nota: dovresti vedere questa icona, proprio sotto il menu "File". Indica che stai usando pcmanfm come utente root, e quindi dovresti stare molto attento (dato che root può modificare/cancellare/spostare qualsiasi file! anche i file che sono critici per un normale funzionamento del sistema).

Indicatore di modalità radice

Non preoccuparti, toccheremo solo i file di cui hai bisogno qui 🙂

Aprite la seguente directory sul vostro Raspberry Pi:

/etc/picockpit-client/apps/com.picockpit/picontrol/moduli

Mostra la directory di configurazione per il PiControl di PiCockpit. Nota, se hai una nuova installazione di PiCockpit, vedrai solo core.json. Gli altri moduli sono stati creati da me per scopi di test e dimostrazione (esperimenti di controllo remoto).

Suggerimento: puoi anche copiare e incollare il percorso che ho dato sopra, e premere il tasto invio per navigare nella directory.

I consigli utili di Raspi Berry su Raspberry Pi

cliccare con il tasto destro del mouse nell'area vuota accanto ai file esistenti e selezionare "Nuovo file...".

Creare un nuovo file con Raspbian OS
Raspberry Pi OS menu per un clic destro per creare un nuovo file

Chiama il nuovo file ssh-server.json:

Una finestra di dialogo chiede il nome del nuovo file.
creare un nuovo file come utente root con pcmanfm
ssh-server.json è ora creato in questa cartella.

cliccate con il tasto destro del mouse sul nuovo file, per far apparire il menu contestuale. Scegliere "Geany":

Menu contestuale che mostra Geany l'editor del programmatore su Raspberry Pi OS
Geany è un editor con cui è possibile modificare il file
Screenshot dell'editor di programmazione Geany
Geany mostra il file ssh-server.json - ancora niente in esso

Ora puoi vedere il nuovo file che abbiamo appena creato. Per ora è vuoto.

Creiamo due nuovi comandi, uno per spegnere il servizio server SSH e uno per avviarlo. Inserisci quanto segue nel campo di testo che Geany ti mostra:

{
  "nome": "Comandi SSH",
  "icona": "mdi-ssh",
  "handle": "ssh",
  "descrizione": "Controlla il server SSH",
  "comandi": {
    "ssh-stop": {
      "nome": "Server SSH spento",
      "icona": "mdi-server-minus",
      "descrizione": "Spegne il servizio SSH",
      "conferma": true
      "utente": "root",
      "comando": ["servizio", "ssh", "stop"]
    },
    "ssh-start": {
      "nome": "Server SSH acceso",
      "icona": "mdi-server-plus",
      "descrizione": "Avvia il servizio SSH",
      "utente": "root",
      "comando": ["service", "ssh", "start"]
    }
  }
}
Aggiungere il testo in Geany. Fate attenzione alle parentesi e alla struttura del documento e le parole devono essere scritte correttamente perché funzioni.

A questo punto dovremmo salvare il file. Puoi farlo dal menu file di Geany, per esempio, selezionando Save. (Oppure usa Ctrl + S):

Menu file di Geany

A questo punto i nostri nuovi comandi non sono ancora apparsi nell'interfaccia web. Abbiamo bisogno di riavviare picockpit-client per questo. Clicca sul comando "Run ..." nel menu del Raspberry Pi OS, e digita "sudo service picockpit-client restart" nella finestra prima di cliccare su OK:

riavviare il servizio picockpit-client utilizzando la finestra di dialogo di esecuzione
riavviare un servizio dalla finestra di dialogo Esegui

Ora date un'occhiata alla vostra interfaccia web di PiControl:

Schermata dell'interfaccia web di PiControl per il controllo remoto
È apparso un nuovo pulsante per saltare rapidamente ai nuovi comandi SSH
I nuovi comandi (pulsanti) che abbiamo aggiunto all'interfaccia web per eseguire comandi remoti sul Raspi!

Se hai digitato tutto correttamente, i nuovi comandi appariranno. Se hai fatto un errore nel tuo file JSON (ad esempio hai dimenticato una parentesi graffa), PiCockpit ignorerà semplicemente il file "rotto".

Ora puoi provare i comandi. Se clicchi sul pulsante SSH SERVER OFF, ti verrà chiesto se vuoi davvero eseguire il comando. Clicca anche qui su ssh server off, per eseguire effettivamente il comando (o clicca su cancel se non vuoi farlo dopo tutto).

Una salvaguardia per evitare di eseguire comandi pericolosi cliccando accidentalmente

PiCockpit ora eseguirà il comando, vedrete le informazioni di progresso - e dopo che avrà finito di funzionare, vedrete il seguente indicatore di successo:

PiControl ha eseguito con successo "service ssh stop" sul tuo Pi.

Se ora cercate di connettervi al vostro Pi usando SSH, la connessione sarà rifiutata:

PuTTYNG mostra un errore fatale.
Errore di rete: connessione rifiutata

Riavvia il server SSH cliccando su "SSH SERVER ON". Ora una connessione sarà di nuovo possibile.

Congratulazioni! Hai appena creato il tuo set di comandi che puoi eseguire dall'interfaccia web.

Rimanete sulla pagina mentre eseguite i comandi - lo stato sarà attualmente cancellato se navigate via. Per determinare se il server SSH è in funzione, potresti costruire un test PiDoctor - PiControl è semplicemente per eseguire azioni remote sul tuo Pi.

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

Ricordati di riavviare il picockpit-client quando aggiungi nuovi comandi, o aggiorni i comandi. Puoi anche rimuovere i comandi che non vuoi avere, per esempio se vuoi rimuovere la capacità di spegnere il tuo Raspberry Pi da remoto.

Spiegazione della sintassi del comando remoto

Il file configura un nuovo modulo per PiControl. Ha una sintassi .JSON, assicuratevi di aprire e terminare con le parentesi graffe in modo corretto, come presentato nel mio esempio.

C'è una testa, che configura il modulo stesso, e i comandi (nella parte "commands"). Condividono alcune voci comuni:

nome

Le voci "nome" sono nomi leggibili dall'uomo che vengono mostrati nell'interfaccia web

icona

Le voci "icona" sono opzionali per decorare i vostri pulsanti e moduli. Sono nomi di icone del Material Design, per esempio "mdi-ssh".

Potete controllare un elenco completo delle icone del Material Design qui. Copiate semplicemente il nome dell'icona (incluso il mdi- all'inizio).

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

descrizione

Le voci "description" sono opzionali e permettono di aggiungere un po' più di informazioni per il comando o il modulo.

maniglia

La voce "handle" è esplicita per il modulo, e deve essere unica tra i moduli. Nel caso dei comandi, l'handle è implicito. "ssh-stop" e "ssh-start"Sono le due maniglie che ho usato per i comandi nel mio esempio.

Potete scegliere qualsiasi cosa come maniglia, purché non includa i caratteri "/", "+", "$", "*". Raccomando di attenersi ai caratteri ASCII minuscoli di base, e di usare il "-". La maniglia è richiesto.

Il tuo file può, a proposito, avere un nome diverso da quello dell'handle - ti incoraggio a usare almeno nomi correlati per il nome del file e l'handle, così puoi identificare facilmente il file .JSON del modulo sul tuo disco rigido.

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

I comandi vanno nella cartella "comandi"e hanno ulteriori possibilità di configurazione:

confermare

Se "confermare" è presente e impostato a true, l'interfaccia web di PiControl mostrerà una finestra di dialogo di conferma prima di eseguire effettivamente il comando. Questo è utile per assicurarsi che i comandi "pericolosi" non vengano eseguiti da un tocco o un clic accidentale.

utente

Se "utente" è presente, il comando sarà eseguito come questo particolare utente (come radice nel nostro esempio, per assicurarci di avere sufficienti privilegi).

PiControl eseguirà i comandi come utente "pi" di default. Potete anche impostarlo su altri utenti con meno privilegi di "pi“.

Se cercate di eseguire comandi GPIO, o di riprodurre video usando omxplayer, potreste dover dare al vostro nuovo utente capacità aggiuntive. L'utente pi ha questi privilegi richiesti per impostazione predefinita. Di solito questi privilegi sono impostati aggiungendo l'utente a un gruppo speciale.

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

comando

Questo è il comando effettivo che dovrebbe essere eseguito sul vostro Raspberry Pi. Notate che dovete sostituire gli spazi nel comando rispetto a come lo eseguireste sulla linea di comando. Per esempio,

servizio ssh start

dovrebbe essere scritto come:

["service", "ssh", "start"]

PiControl supporta anche il concatenamento di una sequenza di comandi (ad esempio la solita sequenza apt-get update, apt-get upgrade). Controlla il core.json per un esempio di come viene fatto.

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

Conclusione: PiControl per le vostre esigenze di controllo remoto di Raspberry Pi

Usando PiCockpit e PiControl, è davvero facile aggiungere qualsiasi comando remoto che vuoi eseguire sul tuo Raspi, ed essere in grado di controllare il tuo Pi da un'interfaccia web. Affinché questo funzioni il Raspberry Pi ha solo bisogno di una connessione a Internet - non è necessario essere nella stessa rete.

Cosa ti piacerebbe costruire usando PiCockpit e PiControl? Commenta qui sotto, e cercherò di aiutarti con il tuo progetto 🙂

Schermata di PiControl che mostra i pulsanti per il controllo remoto di omxplayer e il controllo del webbrowser Chrome tramite l'interfaccia web
Questa schermata di PiControl mostra un modulo personalizzato che ho impostato: controllare Chrome (Chromium), eseguire video in un ciclo utilizzando omxplayer, mostrare video di YouTube sul Pi

Da un grande potere derivano grandi responsabilità - stai attento a chi dai accesso alla tua interfaccia PiCockpit, tieni al sicuro la tua password e le chiavi API. Assicurati anche di "proteggere" i comandi pericolosi, come discusso sopra, in modo che non vengano eseguiti cliccando erroneamente.

I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)

10 commenti

  1. Max in Maggio 12, 2021 il 5:30 pm

    Ciao a tutti!
    Voglio eseguire il seguente comando con un pulsante picontrol: cd /home/pi/Sensoren ; python3 SCRIPT.py
    Ho fatto come descritto e posso premere il pulsante ma il comando non viene eseguito e anche il processo non può essere fermato.
    Qualche consiglio?
    Grazie

    • raspi berry in Luglio 1, 2021 il 5:22 pm

      Ricordate che picontrol non è una shell - tutti i comandi sono eseguiti indipendentemente. dovete usare percorsi assoluti (cd - cambiare directory - è inutile nel contesto di picontrol).

  2. Alex in Agosto 16, 2021 il 6:34 pm

    Avviare uno script python funziona bene, esempio:
    "comando": ["python3", "/home/pi/do_something.pyc"]
    Ma ho problemi se lo script avvia successivamente un'app con un'interfaccia grafica come Chromium o se Chromium viene avviato direttamente:
    "comando": ["chromium-browser"] dà come risultato "Impossibile aprire il display X. ".

    Come faccio ad avviare script o applicazioni che richiedono un display X?

    • PiCaptain in Agosto 19, 2021 il 5:08 pm

      Ho scritto un po' di più su questo argomento qui:
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      In pratica devi dire all'applicazione quale display X usare.
      Nel caso di Chromium è fatto con un flag

      chromium-browser -display=:0 -kiosk https://picockpit.com

      nota, -kiosk avvia il browser in modalità kiosk. Lo inserisco solo come informazione extra.
      nota II: questi sono due trattini per i parametri - WordPress li cambia in un singolo trattino lungo credo.

      Per altre applicazioni dovrete controllare. Spesso questo viene fatto impostando una variabile d'ambiente.
      Forse per PiCockpit dovreste scrivere uno script bash che imposta la variabile e poi avvia l'applicazione.
      E poi eseguire lo script bash.

      Se hai successo con questo, per favore condividilo con noi.

      Max

      • PiCaptain in Agosto 19, 2021 il 5:09 pm

        Come immagine

    • PiCaptain in Agosto 19, 2021 il 5:11 pm

      Vedi anche questi due link per saperne di più sugli interruttori della linea di comando per Chromium:

      http://peter.sh/experiments/chromium-command-line-switches/
      https://www.chromium.org/developers/how-tos/run-chromium-with-flags

  3. Sri in Ottobre 13, 2021 il 1:23 pm

    Ciao, ho appena impostato un comando utilizzando il vostro software e la vostra infrastruttura ed è fantastico! Grazie mille per questo software semplice e facile da usare. Volevo un consiglio se sei libero. Fondamentalmente, ho il mio Pi impostato per svegliare il mio pc dal sonno, e il tuo software che permette una semplice interfaccia web per svegliare il pc con un comando etherwake funziona, tuttavia mi piacerebbe un modo più veloce di eseguire questo comando immediatamente. Pensi che ci sia un modo per renderlo possibile? Attualmente per svegliare il mio pc, devo fare il login e poi andare al mio comando e poi scegliere il pulsante nella casella pop-up, ma se ci fosse una api o una scorciatoia per eseguire fondamentalmente il comando in un clic, sarebbe utile. In ogni caso, grazie mille per questo. Davvero fantastico 🙂

    • PiCaptain in Ottobre 23, 2021 il 1:41 pm

      Grazie per il suggerimento, l'ho aggiunto. Stiamo pianificando di fare una veglia sull'app lan prima o poi, forse potrebbe essere un po' più conveniente.

  4. Hager in Marzo 31, 2022 il 12:26 pm

    Ciao,
    Come posso fare, ad esempio, per continuare (Vuoi continuare? [Y/n]) su questo script con "Y"?

    Vielen Dank!

    • Hanno in Aprile 20, 2022 il 7:30 am

      Hallo Herr Hager,

      questo è un problema molto serio! Einige Kommandozeilen Programme wie zum etwa apt-get haben eine bereits integrierte -assume-yes Option, die es ermöglicht sie in einem nicht-interaktivem Modus zu nutzen. Questo è possibile anche in Skripten ausgenutzt, che non hanno bisogno di Bestätigungen a mano. In alternativa c'è il classico Unix 'Programm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
      sì | sudo apt upgrade
      Abhängig von Ihrem konkretem Anwendungsfall sollte eigentlich eine dieser zöglichkeiten eine gute Lösung darstellen. Ansonsten können Sie uns gerne noch einmal schreiben!

Lascia un commento