Controla tu Raspberry Pi a distancia con PiControl

PiControl de PiCockpit es una potente función que le permite controlar su Raspberry Pi de forma remota desde cualquier navegador web, simplemente haciendo clic en los botones.
Verá el estado y la salida del comando.
Se pueden añadir nuevos comandos simplemente editando un archivo JSON en tu Raspberry Pi.
En este artículo te mostraremos cómo hacerlo y te daremos algunas ideas de lo que puedes construir con PiControl.
¿Qué aspecto tiene?
Notarás que, por defecto, tres comandos están incluidos e inmediatamente disponibles para tu Raspberry Pi: apagar, reiniciar, actualizar cliente.

¿Qué puedo hacer con una Raspberry Pi y PiControl?
Aquí hay algunas cosas que puedes construir con él. Estas ideas requerirán algo de investigación, y posiblemente conocimientos de codificación y/o hardware por tu parte; en cualquier caso, PiCockpit's PiControl te ayudará con la parte de la interfaz web fácil de usar de tu proyecto y te ahorrará toneladas de tiempo haciendo que esto funcione a través de Internet 🙂 .
- tomar una instantánea con el módulo de cámara de la Raspberry Pi y enviarla por correo
- inicie su servidor de Raspberry Pi Minecraft, y deténgalo también
- Reproducir un vídeo con omxplayer (también puedes establecer un bucle infinito para el vídeo y detener el bucle de vídeo si quieres cambiar a otro vídeo)
- crear un control sencillo para una cámara de animación stop-motion, utilizando el módulo de cámara de Raspberry Pi
- despertar un ordenador local en la misma red que su Raspberry Pi con la función Wake on LAN
- reproducir un sonido (como una broma para Halloween, por ejemplo)
- abrir una puerta, por ejemplo, una puerta de garaje, emitiendo los comandos de control adecuados a través de Z-Wave, etc.
- inicie el servicio SSH en su Raspberry Pi, y apáguelo - un enfoque de "golpear para abrir" para mejorar la seguridad
- control de maquetas de trenes
- encender y apagar un relé (se necesitan dos botones, o se puede hacer con un botón "toggle")
- controlar el televisor (cambiar de canal, cambiar el volumen, ...) mediante un LED IR, por ejemplo, para simular la actividad mientras está de viaje
- Lanzar un cohete desde la interfaz web
Publicaremos instrucciones paso a paso para algunas de estas ideas de proyectos, para que tengas una guía fácil para empezar con PiControl y controlar remotamente tu Raspberry Pi.
¿Cómo puedo añadir botones adicionales de mando a distancia para la Raspberry Pi con PiControl?
Puedes definir fácilmente y de forma segura tus propios comandos, simplemente editando archivos JSON en tu Raspberry Pi. Esto se hace por razones de seguridad - podría haber escrito PiCockpit de una manera que le permitiera añadir comandos desde la interfaz web, pero si alguien supiera su contraseña de PiCockpit, podría crear cualquier comando que deseara. Por lo tanto, siga estas sencillas instrucciones para crear un nuevo archivo JSON en su Pi.
Nota: estas instrucciones se han mantenido deliberadamente de forma que los usuarios que no tienen experiencia con la línea de comandos puedan seguirlas. Si sabes usar la línea de comandos, puede que te resulte más fácil/rápido crear el archivo y editarlo con nano.
En primer lugar, tendrás que abrir el explorador de archivos en modo de superusuario (este paso mantiene tus archivos de configuración de PiCockpit PiControl a salvo de cualquier usuario o aplicación que quiera manipularlos). Haz clic en el menú Raspberry Pi OS, y aquí haz clic en el comando "Ejecutar ...":

Ejecute pcmanfm como root (sudo pcmanfm) escribiendo "sudo pcmanfm" (sin las comillas) en el cuadro de diálogo que se abre, y haciendo clic en Aceptar:

Se abre una nueva ventana que muestra el contenido del directorio /home/pi:

Nota: debería ver este icono, justo debajo del menú "Archivo". Indica que está usando pcmanfm como usuario root, y por lo tanto debe tener mucho cuidado (¡ya que el root puede editar / borrar / mover cualquier archivo! incluso archivos que son críticos para un funcionamiento normal del sistema).

No te preocupes, aquí sólo tocaremos los archivos que necesites 🙂 .
Abra el siguiente directorio en su Raspberry Pi:
/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Consejo: también puedes copiar y pegar la ruta que te he dado arriba, y pulsar la tecla enter para navegar hasta el directorio.
Consejos útiles de Raspi Berry sobre Raspberry Pi
haga clic con el botón derecho del ratón en el área vacía junto a los archivos existentes y seleccione "Nuevo archivo...".

Llama al nuevo archivo ssh-server.json:


Ahora, tienes que hacer clic con el botón derecho del ratón en el nuevo archivo, para que aparezca el menú contextual. Elige "Geany":


Ahora puede ver el nuevo archivo que acabamos de crear. Sin embargo, por el momento, está vacío.
Vamos a crear dos nuevos comandos, uno para apagar el servicio del servidor SSH, y otro para iniciarlo. Introduce lo siguiente en el campo de texto que te muestra Geany:
{
"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"]
}
}
}

En este punto debemos guardar el archivo. Puede hacerlo desde el menú de archivo de Geany, por ejemplo, seleccionando Guardar. (O usar Ctrl + S):

En este punto nuestros nuevos comandos aún no han aparecido en el webinterface. En este punto, necesitarás reiniciar picockpit-client para esto. Haz clic en el comando "Ejecutar ..." en el menú Raspberry Pi OS, y escribe "sudo service picockpit-client restart" en la ventana antes de hacer clic en Aceptar:

Ahora eche un vistazo a su interfaz web PiControl:


Si ha escrito todo correctamente, los nuevos comandos aparecerán. Si ha cometido un error en su archivo JSON (por ejemplo, ha olvidado una llave), PiCockpit simplemente ignorará el archivo "roto".
Ahora puede probar los comandos. Si haces clic en el botón SSH SERVER OFF, se te preguntará si realmente quieres ejecutar el comando. Haz clic en ssh server off aquí también, para ejecutar realmente el comando (o haz clic en cancelar si no quieres después de todo).

Así, PiCockpit ejecutará ahora el comando, verás información sobre el progreso - y después de que haya terminado de ejecutarse, verás el siguiente indicador de éxito:

Si intentas conectarte a tu Pi ahora usando SSH, la conexión será rechazada:

Inicie de nuevo el servidor SSH haciendo clic en "SSH SERVER ON". Ahora la conexión será posible de nuevo.
¡Enhorabuena! Acabas de crear tu propio conjunto de comandos que puedes ejecutar desde la interfaz web.
Permanezca en la página mientras ejecuta los comandos - el estado se borrará si se aleja. Para determinar si el servidor SSH se está ejecutando, podría construir una prueba PiDoctor - PiControl es simplemente para ejecutar acciones remotas en su Pi.
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
Recuerda reiniciar el picockpit-client cuando añadas nuevos comandos, o actualices comandos. También puedes eliminar los comandos que no quieras tener, por ejemplo si quieres eliminar la capacidad de apagar tu Raspberry Pi de forma remota.
Explicación de la sintaxis del comando remoto
El archivo configura un nuevo módulo para PiControl. Tiene una sintaxis .JSON, por favor, asegúrese de que abre y termina con llaves de forma correcta, como se presenta en mi ejemplo.
Hay una cabecera, que configura el propio módulo, y los comandos (en la parte de "comandos"). Comparten algunas entradas comunes:
nombre
Las entradas de "nombre" son nombres legibles que se muestran en la interfaz web
icono
Las entradas de "icono" son opcionales para decorar sus botones y módulo. Son nombres de iconos de Material Design, por ejemplo "mdi-ssh".
Puede consultar un lista completa de iconos de Material Design aquí. Basta con copiar el nombre del icono (incluyendo el mdi- del principio).
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
descripción
Las entradas de "descripción" son opcionales y le permiten añadir un poco más de información para el comando o módulo.
manija
La entrada "handle" es explícita para el módulo, y tiene que ser única entre los módulos. En el caso de los comandos, el "handle" es implícito. "ssh-stop" y "ssh-start" son los dos manejadores que he utilizado para los comandos en mi ejemplo.
Puedes elegir cualquier cosa como asa, siempre que no incluya los caracteres "/", "+", "$", "*". Te recomiendo que te ciñas a los caracteres ASCII básicos en minúsculas, y que utilices el "-". El asa es requerido.
Su archivo puede, por cierto, tener un nombre de archivo diferente al del handle - le animo a utilizar al menos nombres relacionados para el nombre del archivo y el handle, para que pueda identificar fácilmente el archivo .JSON del módulo en su disco duro.
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
Los comandos van en la sección "comandos", y tienen posibilidades de configuración adicionales:
confirmar
Si "confirmar" está presente y es verdadero, la interfaz web de PiControl mostrará un diálogo de confirmación antes de ejecutar el comando. Esto es útil para asegurarse de que los comandos "peligrosos" no se ejecuten por un toque o clic accidental.
usuario
Si "usuario" está presente, el comando se ejecutará como este usuario en particular (como raíz en nuestro ejemplo, para asegurarnos de que tenemos suficientes privilegios).
PiControl ejecutará los comandos como usuario "pi" por defecto. También puede establecerlo para otros usuarios con menos privilegios que "pi“.
Si intentas ejecutar comandos GPIO, o reproducir videos usando omxplayer, puede que tengas que dar a tu nuevo usuario capacidades adicionales. El usuario pi tiene estos privilegios necesarios por defecto. Normalmente estos privilegios se establecen añadiendo el usuario a un grupo especial.
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
comando
Este es el comando real que debe ejecutar en su Raspberry Pi. Tenga en cuenta que debe reemplazar los espacios en el comando en comparación con como lo ejecutaría en la línea de comandos. Por ejemplo,
servicio ssh start
debería escribirse como:
["servicio", "ssh", "inicio"]
PiControl también soporta el encadenamiento de una secuencia de comandos (por ejemplo, la secuencia habitual de apt-get update, apt-get upgrade). Consulte core.json para ver un ejemplo de cómo se hace.
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
Conclusión: PiControl para sus necesidades de control remoto de Raspberry Pi
Usando PiCockpit y PiControl, es realmente fácil añadir cualquier comando remoto que desee ejecutar en su Raspi, y ser capaz de controlar su Pi desde una interfaz web. Para que esto funcione la Raspberry Pi sólo necesita una conexión a Internet - no es necesario estar en la misma red.
Qué te gustaría construir usando PiCockpit y PiControl? Comenta abajo, e intentaré ayudarte con tu proyecto 🙂 .

Un gran poder conlleva una gran responsabilidad - ten cuidado a quién das acceso a tu interfaz PiCockpit, mantén a salvo tu contraseña y claves API. También asegúrese de "proteger" los comandos peligrosos, como se discutió anteriormente, para que no se ejecuten al hacer clic accidentalmente en ellos.
Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)
¡Hola!
Quiero ejecutar el siguiente comando con un botón de picontrol: cd /home/pi/Sensoren ; python3 SCRIPT.py
Lo hice como se describe y puedo presionar el botón pero el comando no se ejecuta y tampoco se puede detener el proceso.
¿Algún consejo?
Gracias
recuerda que picontrol no es un shell - todos los comandos se ejecutan de forma independiente. tienes que utilizar rutas absolutas (cd - cambiar de directorio - es inútil en el contexto de picontrol).
El inicio de un script en python funciona bien, por ejemplo:
"comando": ["python3", "/home/pi/do_something.pyc"]
Pero tengo problemas si el script inicia posteriormente una aplicación con una GUI como Chromium o si se inicia directamente Chromium:
"comando": ["chromium-browser"] da como resultado "Imposible abrir la pantalla X. ".
¿Cómo puedo iniciar scripts o aplicaciones que requieren una pantalla X?
He escrito un poco más sobre esto aquí:
https://pi3g.com/2020/05/19/chromium-exit-code-5/
Básicamente tienes que decirle a la aplicación qué pantalla X debe utilizar.
En el caso de Chromium se hace con una bandera
chromium-browser -display=:0 -kiosk https://picockpit.com
nota, -kiosk inicia el navegador en modo kiosco. Solo lo digo como información extra.
nota II: son dos guiones para los parámetros - WordPress los cambia a un solo guión largo creo.
Para otras aplicaciones tendrá que comprobarlo. Con frecuencia esto se hace estableciendo una variable de entorno.
Posiblemente para PiCockpit habría que escribir un script bash que establezca la variable y luego inicie la aplicación.
Y luego ejecutar el script bash.
Si tienes algún éxito con esto, por favor compártelo con nosotros.
Max
También vea estos dos enlaces para más información sobre los interruptores de línea de comandos para Chromium:
http://peter.sh/experiments/chromium-command-line-switches/
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
Hola, acabo de configurar un comando utilizando su software e infraestructura y es impresionante. Muchas gracias por este software simple y fácil de usar. Quería un poco de consejo si estás libre. Básicamente, tengo mi configuración Pi para despertar a mi PC de sueño, y su software que permite una interfaz web simple para despertar el PC con un comando etherwake está trabajando, sin embargo, me gustaría una forma más rápida de ejecutar este comando inmediatamente. ¿Cree usted que hay alguna manera de hacer esto posible? Actualmente para despertar mi PC, tengo que iniciar sesión y luego ir a mi comando y luego elegir el botón en el cuadro emergente, pero si había una api o un acceso directo a la ejecución básicamente el comando en un solo clic, que sería útil. De cualquier manera, muchas gracias por esto. Muy impresionante 🙂 .
Gracias por la sugerencia de la función, la he añadido. Estamos planeando hacer una aplicación wake on lan en algún momento, tal vez podría ser un poco más conveniente.
Hola,
¿Cómo puedo, por ejemplo, hacer una pregunta como (¿Desea continuar? [Y/n]) sobre el script con "Y"?
¡Vielen Dank!
Hola Herr Hager,
Esta es una buena pregunta. Algunos programas de gestión, como por ejemplo apt-get, han integrado ya una -asumir-sí Opción que le permite utilizar en un modo no interactivo. Esto puede ser utilizado en programas que no necesitan ser modificados manualmente. Como alternativa existe el clásico Unix 'síPrograma con el que podrá obtener sus propios resultados. Por ejemplo, con:
yes | sudo apt upgrade
Dependiendo de su situación de uso, puede que una de estas dos opciones sea una buena solución. Por lo tanto, ¡puede enviarnos un mensaje!
Hola, ¿se puede usar el terminal RPi desde picockpit?
aún no, previsto para una próxima versión. (a partir de 19.4.2023)
No todos los iconos del sitio web mencionado están disponibles / funcionan.
¿Cómo utilizar iconos más recientes que la versión 4.9.95, por ejemplo 'mdi-lamps-outline'?
Estamos actualizando el código del frontend. Voy a compartir su comentario con nuestro desarrollador, posiblemente pueden mirar en esto antes de la próxima actualización para llevar los iconos a la versión más reciente.
Hola, hemos actualizado el frontend, lo que significa que ahora usted es capaz de utilizar todos los iconos hasta la última versión de Material Design Icons. También mantendremos actualizada la versión de la Fuente en el futuro.
[...] HAGA CLIC AQUÍ: Aprenda cómo puede configurar sus propios comandos en PiControl. [...]
[...] Las herramientas administrativas que te ayudan a controlar tu Pi funcionan. Esto incluye las aplicaciones GPIO, PiControl, PiDoctor y PiStats. ¿Quizás configurar tu nueva instalación de 64 bits con una forma fácil de activar tu servidor SSH? ¿O iniciar y detener ese centro multimedia que has configurado? ¿Enviar un mensaje WoL? Puedes encontrar una buena introducción a las posibilidades que ofrece nuestro software aquí. [...]
apt-get -just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s[([\w,\-,\d,\.,~,:,\+]+)\]\s(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PAQUETE: $1 INSTALADO: $2 DISPONIBLE: $3\n"}'
El comando anterior funciona bien con SSH pero PiControl tiene un problema e informa:
(100) E: La opción de línea de comandos 'n' [de -ne] no se entiende en combinación con las otras opciones.
Creo que escapé mi JSON correctamente ya que el comando mostrado en PiControl es el mismo que escapé y dividí los espacios en cadenas separadas.
JSON:
{
"nombre": "Comandos de actualización CISO",
"icono": "mdi-update",
"handle": "CISO",
"descripción": "CISO instalar todas las actualizaciones",
"comandos": {
"ciso-updates": {
"name": "CISO Updates",
"icono": "mdi-server-minus",
"descripción": "Actualiza la lista de todos los paquetes del repositorio y actualiza todos los paquetes instalados",
"confirmar": true,
"usuario": "root",
"comando": [
[
"apt-get",
"actualizar"
],
[
"apt-get",
"actualizar",
"-y"
],
[
"apt-get",
"-just-print",
"actualizar",
"2>&1",
“|”,
"perl",
"-ne",
"'si",
“(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
"/i)",
"{print",
"\"PAQUETE:",
“$1”,
"INSTALADO:",
“$2”,
"DISPONIBLE:",
"$3\\n\"}'"
]
]
}
}
}
Hola,
ich versuche die Ersten Schritte mit picockpit. leider gelingt es mir keine Anwendung über die Fernsteuerung zu öffnen. z.B. chromium-browser, dillo, geany
Las aplicaciones se conectan directamente a la tarjeta del terminal
"geany": {
"name": "EditorG",
"icon": "mdi-application-edit-outline",
"descripción": "Editor de texto",
"confirmar": true,
"noterminación": true,
"usuario": "root",
"command": ["geany"]
},