Controlla il tuo Raspberry Pi da remoto usando PiControl

PiControl di PiCockpit è una potente funzione che consente di controllare il Raspberry Pi in remoto da qualsiasi browser web, semplicemente facendo clic sui pulsanti.
Verranno visualizzati lo stato e l'output del comando.
È possibile aggiungere nuovi comandi semplicemente modificando un file JSON sul Raspberry Pi.
In questo articolo vi mostreremo come farlo e vi daremo alcune idee su cosa potete costruire utilizzando PiControl!
Che aspetto ha?
Noterete che, per impostazione predefinita, sono inclusi e immediatamente disponibili tre comandi per il vostro Raspberry Pi: spegnimento, riavvio, aggiornamento del client.

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

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

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

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

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

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

Chiama il nuovo file ssh-server.json:


A questo punto, è necessario fare clic con il tasto destro del mouse sul nuovo file, per richiamare il menu contestuale. Scegliere "Geany":


Ora è possibile vedere il nuovo file appena creato. Tuttavia, al momento è 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:
{
"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"]
}
}
}

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

A questo punto i nuovi comandi non sono ancora apparsi nell'interfaccia web. A questo punto è necessario riavviare picockpit-client. Fare clic sul comando "Esegui..." nel menu del sistema operativo Raspberry Pi e digitare "sudo service picockpit-client restart" nella finestra prima di cliccare su OK:

Ora date un'occhiata all'interfaccia web di PiControl:


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

A questo punto PiCockpit eseguirà il comando, verranno visualizzate le informazioni sull'avanzamento e, al termine dell'esecuzione, verrà visualizzato il seguente indicatore di successo:

Se ora cercate di connettervi al vostro Pi usando SSH, la connessione sarà 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 su 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 da un clic accidentale.
utente
Se "utente" è presente, il comando verrà 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 da eseguire sul vostro Raspberry Pi. Si noti che è necessario sostituire gli spazi nel comando rispetto a come lo si eseguirebbe alla riga di comando. Ad 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 🙂

Da un grande potere derivano grandi responsabilità: fate attenzione a chi date accesso alla vostra interfaccia PiCockpit, tenete al sicuro la password e le chiavi API. Assicuratevi anche di "proteggere" i comandi pericolosi, come discusso sopra, in modo che non vengano eseguiti facendo accidentalmente clic su di essi.
I consigli utili di Raspi Berry su Raspberry Pi (e PiCockpit)
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
Ricordate che picontrol non è una shell - tutti i comandi sono eseguiti indipendentemente. dovete usare percorsi assoluti (cd - cambiare directory - è inutile nel contesto di picontrol).
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?
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
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
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 🙂
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.
Ciao,
Come posso fare, ad esempio, per continuare (Vuoi continuare? [Y/n]) su questo script con "Y"?
Vielen Dank!
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 'sìProgramm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
yes | 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!
Salve, è possibile utilizzare il terminale RPi da picockpit?
non ancora, previsto per una release futura. (a partire dal 19.4.2023)
Non tutte le icone del sito web citato sono disponibili/funzionanti.
Come utilizzare icone più recenti della versione 4.9.95, ad esempio 'mdi-lamps-outline'?
stiamo aggiornando il codice del frontend. Condividerò il tuo commento con il nostro sviluppatore, che forse potrà occuparsene prima del prossimo aggiornamento per portare le icone alla versione più recente.
Salve, abbiamo aggiornato il frontend, il che significa che ora è possibile utilizzare tutte le icone fino alla versione più recente di Material Design Icons. In futuro terremo aggiornata anche la versione del font.
[...] FARE CLIC QUI: Imparare a impostare i propri comandi in PiControl. [...]
[...] Gli strumenti amministrativi che vi aiutano a controllare il vostro Pi sono tutti funzionanti. Questo include le applicazioni GPIO, PiControl, PiDoctor e PiStats. Magari configurare la vostra nuova installazione a 64 bit con un modo semplice per attivare il server SSH? Oppure avviare e arrestare il media center che avete impostato? Inviare un messaggio WoL? Qui potete trovare una buona introduzione alle possibilità offerte dal nostro software. [...]
apt-get -just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PACKAGE: $1 INSTALLATO: $2 DISPONIBILE: $3\n"}'
Il comando di cui sopra funziona perfettamente con SSH, ma PiControl ha un problema e lo segnala:
(100) E: L'opzione della riga di comando 'n' [da -ne] non è compresa in combinazione con le altre opzioni.
Credo di aver eseguito correttamente l'escape del mio JSON, poiché il comando visualizzato in PiControl è lo stesso che ho eseguito con l'escape e la suddivisione degli spazi in stringhe separate.
JSON:
{
"nome": "Comandi di aggiornamento CISO",
"icona": "mdi-update",
"maniglia": "CISO",
"descrizione": "CISO installa tutti gli aggiornamenti",
"comandi": {
"ciso-updates": {
"nome": "Aggiornamenti CISO",
"icona": "mdi-server-minus",
"descrizione": "Aggiorna l'elenco di tutti i pacchetti presenti nel repository e aggiorna tutti i pacchetti installati",
"conferma": vero,
"utente": "root",
"comando": [
[
"apt-get",
"aggiornamento"
],
[
"apt-get",
"aggiornamento",
"-y"
],
[
"apt-get",
"-just-print",
"aggiornamento",
"2>&1",
“|”,
"perl",
"-ne",
"se",
“(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
"/i)",
"{stampa}",
"PACKAGE:",
“$1”,
"INSTALLATO:",
“$2”,
"DISPONIBILE:",
"$3\n" }'"
]
]
}
}
}
Ciao,
Ho provato le prime schermate con picockpit. ma non riesco a capire quale sia l'utilizzo per la gestione del traffico.
Con l'inserimento nel terminale si possono utilizzare direttamente le funzioni.
"geany": {
"nome": "EditorG",
"icona": "mdi-application-edit-outline",
"descrizione": "Editor di testo",
"conferma": vero,
"notermination": vero,
"utente": "root",
"comando": ["geany"]
},