En las anteriores entradas hemos visto cómo llevar a cabo todo el sistema, desde cero. Llegados a este punto ya tenemos todos los códigos de los scripts, los archivos de texto que usaremos para controlar nuestra aplicación, etc. Es el momento de recapitular y enumerar los pasos necesarios para hacer una instalación desde cero y cómo añadir a ella nuevas pantallas o distintos usuarios.
Instalación desde cero
Raspberry
-
- Instalación de Raspbian Desktop
- Configurar País, lenguaje, Timezone
- Poner un pass decente a Pi
- Activar SSH, VNC, desactivar overscan y poner memoria GPU a 128
- Configurar WiFi y actualizar sistema
- Poner nombre a host que lo diferencie del resto de pantallas
- Generar el par de claves para conectar al servidor
- Configurar ficheros y carpetas
- Instalar FIM
- Crear fichero de configuración FIM
- Instalar cec-utils
- Crear las carpetas y copiar los ficheros
- Carpeta dias
- Ficheros de días
- Ficheros de texto de control
- Scripts
- Configurar
- Configurar conexión
- Configurar correo de destino de los mensajes
- Configurar Mutt
- Configurar Crontab
- Instalación de Raspbian Desktop
Servidor
-
- Instalar Ubuntu
- Crear usuario «Pi» para conexión con Pi de Raspberry
- Crear fichero con clave pública
- Crear estructura de carpetas
- Almacenar ficheros de días (calendario)
- Crear usuario userpantallas para actualizaciones
- Crear enlace simbólico ftp en su home hacia carpeta de Pi
- Configurar Samba
- Instalar VSFTPD
- Configurar VSFTPD
Partiendo desde cero, es largo, pero tampoco excesivamente complicado cuanto ya tenemos los scripts preparados. Llegados a este punto sería bueno «clonar» la tarjeta de la Raspberry y así, además de servirnos como copia de seguridad ante un eventual desastre, podemos añadir más pantallas muy fácilmente.
Añadir más pantallas (para un mismo usuario)
Actualización Diciembre de 2019
Se ha añadido la siguiente entrada que detalla el proceso y sugiere algún cambio que lo facilita:
Pantallas informativas (anexo 4): Añadir pantallas -explicado paso a paso-
Para añadir más pantallas lo único que habría que hacer sería grabar esta imagen en una nueva tarjeta y:
En la Raspberry
-
- Cambiar el nombre del host
- Generar un nuevo par de claves
- Machacar la anterior clave privada con la nueva (dar mismo nombre)
En el servidor
-
- Mandar la clave pública al servidor y añadirla al final del archivo.
Y ya está, ahora sí que es tremendamente fácil y podemos añadir todas las que queramos.
Añadir otros usuarios (y sus pantallas)
Y si lo que queremos es añadir otros usuarios que se conecten a nuestro servidor, pero que usen sus conexiones y proyecten sus propios archivos, lo que haríamos sería lo siguiente:
En la Raspberry
Tras grabar nuestra imagen:
-
- Cambiar el nombre del host
- Generar un nuevo par de claves
- Machacar la anterior clave privada con la nueva (dar mismo nombre)
- Modificar el archivo correo.txt con el correo al que dirigir los mensajes
- Modificar wpa_supplicant con login y pass de conexión
- Modificar los scripts actualiza y actualizadia con el login Pi2 (o el que creemos nuevo en el servidor)
En el servidor
-
- Crear otro usuario «Pi2»
- Crear su fichero con clave pública
- Crear estructura de carpetas
- Almacenar ficheros de días (calendario)
- Crear otro usuario userpantallas2 en sistema y Samba
- Crear enlace simbólico ftp en su home hacia carpeta de Pi2
- Configurar Samba para este usuario
- Añadir este usuario a la lista de usuarios de VSPFTP
- Crear otro usuario «Pi2»
Es importante que el enlace simbólico también se llame ftp y así sólo habrá que añadirlo a la lista de usuarios VSFTPD
Y que no se nos olvide clonar su tarjeta por seguridad.
En fin, que lo más laborioso ha sido toda la creación de scripts y ficheros, pero una vez que los tenemos, añadir usuarios o trasladar el sistema a otros nuevos no requiere de mucha complicación.
Además, he modificado ligeramente los scripts para que el correo de destino lo tomen del archivo correo.txt, que aparece en estas líneas, para que haya que tocar menos cosas.
Descarga de ficheros
En las entradas previas se ha ido publicando el código de los distintos scripts paso a paso. El siguiente enlace contiene, comprimido en 7z, todos los scripts que se han ido mencionando y los ficheros de texto para el manejo de la aplicación.
Ficheros Proyecto Pantallas v.01
Clonar la tarjeta
Llegados a este punto resultaría bastante aconsejable que una vez que tengamos perfectamente configurada la tarjeta le sacáramos una copia por si las moscas. Además con esta copia sería fácil adaptar el sistema para nuevas pantallas.
Para el proceso de clonado de la tarjeta hay una entrada específica aquí:
Cosas que faltan
Seguridad
Como ya he dicho por algún rincón de este blog, todo esto son cosas que van saliendo conforme las voy aprendiendo, así que estoy a eones de ser ya no un «experto» sino un mero «entendido», pero me relaja escribir y me sirve de bloc de notas, y quién sabe si además le puede servir esto a alguien. Pero esta inexperiencia es la que me lleva a pensar que lo primero que habría que revisar es la seguridad en la Raspberry y el Servidor, cerrar las puertas a que alguien pueda hacer «la gracia». La seguridad hay que revisarla.
Apagado de emergencia
Un botón de apagado de emergencia en la Raspberry estaría bien. Alguna prueba me ha llevado a tener que apagarla a las bravas, y aunque la tarjeta de memoria ha aguantado sé que estas prácticas le sientan como una patada entre las patillas (del micro). Se me ocurre que con Python se podría hacer un programeja para controlar una interrupción en un puerto GPIO, de modo que al accionar un pulsador se activara dicha interrupción y se produjera un apagado ordenado, incluso le podríamos poner un led para saber cuando concluye el apagado y no tener que abrir la caja, que además los bombillicos siempre hacen gracia.
SAI
Un SAI de bajo coste también aparece como tarea pendiente: Un power bank con capacidad de carga y descarga simultánea (pass through charging), un relé, un par de adaptadores y lo de antes, mediante una interrupción controlar cuando hay un corte de suministro eléctrico, controlar el tiempo que estamos sin electricidad y llegado el momento hacer un apagado ordenado.
Fecha de caducidad de los ficheros
También, en el tiempo que llevamos de pruebas con una de las pantallas, se va echando en falta un sistema de caducidad de los ficheros a reproducir. Y para evitar que las tripas de la Raspberry se vayan llenando de ficheros caducados, se me ocurre que eso habría que hacerlo en el servidor. Quizás con un simple script leyendo un índice supiera qué fichero tiene que borrar y cuando.
Se podría hacer lo mismo pero a la inversa, programar un día de activación del fichero, en la web (WordPress, Drupal, etc.) es una opción que encontramos disponible de forma bastante común, pero mi experiencia precisamente con la publicación de contenidos web en trabajos similares al que nos ocupa me dice que es una característica perfectamente prescindible, creo que no la he usado nunca. La caducidad sí, no hay publicación de esta índole que se libre porque se trata de charlas, cursos, exposiciones, etc. perfectamente definidos en el tiempo, pero la activación no, porque interesa que el evento tenga días de publicidad y además lo habitual es que te den las cosas «para ayer».