Controla tu Raspberry Pi a distancia con PiControl

PiCockpit's PiControl es una poderosa característica que le permite controlar su Raspberry Pi de forma remota desde cualquier navegador web, simplemente haciendo clic en los botones. Usted verá el estado y la salida del comando. Se pueden añadir nuevos comandos simplemente editando un archivo JSON en tu Raspberry Pi - ¡te mostraremos cómo hacerlo, y te daremos algunas ideas de lo que puedes construir usando PiControl!

¿Qué aspecto tiene?

Por defecto se incluyen tres comandos que están disponibles inmediatamente para su Raspi: ( apagar, reiniciar, actualizar el cliente)

Comandos básicos para controlar su Pi de forma remota mediante una interfaz web, desde cualquier navegador
Esta captura de pantalla de PiCockpit PiControl muestra el aspecto de los comandos

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

Menú del sistema operativo Raspberry Pi, mostrando el comando de ejecución.
El menú del sistema operativo Raspberry Pi. El comando Run está cerca de la parte inferior

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:

Ejecutar el diálogo de comandos en Raspberry Pi OS
El comando de ejecución, preparando la ejecución de pcmanfm como root

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

Captura de pantalla de pcmanfm con derechos de superusuario
pcmanfm, el gestor de archivos que se ejecuta como superusuario

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

Indicador del modo raíz

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

Mostrando el directorio de configuración para el PiCockpit de PiControl. Tenga en cuenta, si usted tiene una instalación fresca de PiCockpit, sólo verá core.json. Los otros módulos fueron creados por mí con fines de prueba y demostración (experimentos de control remoto).

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

Creación de un nuevo archivo con el sistema operativo Raspbian
Menú del sistema operativo Raspberry Pi para crear un nuevo archivo con el botón derecho del ratón

Llama al nuevo archivo ssh-server.json:

Un cuadro de diálogo pide el nombre del nuevo archivo.
creación de un nuevo archivo como usuario root con pcmanfm
ssh-server.json se crea ahora en esta carpeta.

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

Menú contextual mostrando Geany el editor de programación en Raspberry Pi OS
Geany es un editor con el que puedes editar el archivo
Captura de pantalla del editor de programación Geany
Geany muestra el archivo ssh-server.json - nada en él todavía

Ahora puedes ver el nuevo archivo que acabamos de crear. Hasta ahora 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:

{
  "nombre": "Comandos SSH",
  "icono": "mdi-ssh",
  "handle": "ssh",
  "descripción": "Controla el servidor SSH",
  "comandos": {
    "ssh-stop": {
      "name": "Servidor SSH apagado",
      "icono": "mdi-server-minus",
      "descripción": "Apaga el servicio SSH",
      "confirmar": "verdadero",
      "usuario": "root",
      "comando": ["service", "ssh", "stop"]
    },
    "ssh-start": {
      "name": "Servidor SSH activado",
      "icono": "mdi-server-plus",
      "descripción": "Inicia el servicio SSH",
      "usuario": "root",
      "comando": ["service", "ssh", "start"]
    }
  }
}
Añadir el texto en Geany. Preste atención a los paréntesis, y la estructura del documento y las palabras tienen que ser escritas correctamente para que funcione.

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

Menú de archivos de Geany

En este punto nuestros nuevos comandos no han aparecido en la interfaz web todavía. Para ello debemos reiniciar picockpit-client. Haga clic en el comando "Ejecutar ..." en el menú del sistema operativo Raspberry Pi, y escriba "sudo service picockpit-client restart" en la ventana antes de hacer clic en Aceptar:

reiniciando el servicio picockpit-client mediante el diálogo de ejecución
reiniciar un servicio desde el cuadro de diálogo Ejecutar

Ahora eche un vistazo a su interfaz web de PiControl:

Captura de pantalla de la interfaz web de PiControl para el control remoto
Apareció un nuevo botón para saltar rápidamente a los nuevos comandos SSH
¡Los nuevos comandos (botones) que hemos añadido a la interfaz web para ejecutar comandos remotos en la Raspi!

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

Una salvaguarda para evitar que ejecute comandos peligrosos al hacer clic accidentalmente

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

PiControl ha ejecutado con éxito "service ssh stop" en su Pi.

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

PuTTYNG muestra un error fatal.
Error de red: conexión 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 se establece como 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 ser ejecutado en su Raspberry Pi. Tenga en cuenta que tiene que 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 🙂 .

Captura de pantalla de PiControl mostrando los botones para controlar remotamente omxplayer y controlando el navegador web Chrome usando la interfaz web
Esta captura de pantalla de PiControl muestra un módulo personalizado que he configurado: controlar Chrome (Chromium), ejecutar vídeos en un bucle usando omxplayer, mostrar vídeos de YouTube en la Pi

Un gran poder conlleva una gran responsabilidad: tenga cuidado de a quién da acceso a su interfaz PiCockpit, mantenga a salvo su contraseña y las claves de la API. También asegúrese de "proteger" los comandos peligrosos, como se ha comentado anteriormente, para que no se ejecuten al hacer clic por error.

Consejos útiles de Raspi Berry sobre Raspberry Pi (y PiCockpit)

10 Comentarios

  1. Max el mayo 12, 2021 a las 5:30 pm

    ¡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

    • raspi berry el julio 1, 2021 a las 5:22 pm

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

  2. Alex el agosto 16, 2021 a las 6:34 pm

    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?

    • PiCaptain el agosto 19, 2021 a las 5:08 pm

      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

      • PiCaptain el agosto 19, 2021 a las 5:09 pm

        Como imagen

    • PiCaptain el agosto 19, 2021 a las 5:11 pm

      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

  3. Sri el octubre 13, 2021 a las 1:23 pm

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

    • PiCaptain el octubre 23, 2021 a las 1:41 pm

      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.

  4. Hager el marzo 31, 2022 a las 12:26 pm

    Hola,
    ¿Cómo puedo, por ejemplo, hacer una pregunta como (¿Desea continuar? [Y/n]) sobre el script con "Y"?

    ¡Vielen Dank!

    • Hanno el abril 20, 2022 a las 7:30 am

      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 'Programa con el que podrá obtener sus propios resultados. Por ejemplo, con:
      sí | 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!

Deja un comentario