RaspberryPI: Chiosco informativo

Piattaforme ad hoc

Esistono dei client collegabili a piattaforme di digital signage che permettono di realizzare un chiosco informativo in modo diretto, di seguito un paio di indicazioni:

Creazione manuale

Dopo aver scaricato e installato Raspbian sul RaspberryPi configurare tramite l’apposita utility o il comando raspi-config

  • boot_behaviour in desktop
  • layout tastiera corretto
  • lingua di sistema desiderata
  • attivazione dell’accesso via SSH
  • attivazione dell’accesso via VNC
  • timezone desiderato
  • espansione del file system
  • modifica della password

I software utili da installare per realizzare il chiosco informativo sono i seguenti

sudo apt-get install xdotool cec-utils libcec unclutter midori

può essere utile rimuovere pacchetti non utilizzati

sudo apt-get purge libreoffice* wolfram*
sudo apt autoremove

 

Per fare in modo che dopo il login (all’apertura dell’ambiente grafico sul desktop) si avvii il browser o altri programmi/script vanno inserite le relative direttive nel file

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

Accesso via VNC

Di base attivare l’accesso via VNC da raspi-config attiva il server di RealVNC all’avvio automatico e il login è possibile con le credenziali dell’utente pi

Nel caso in cui si desideri utilizzare un’altro server VNC è possibile seguire la seguente procedura

  • installare il serve
apt-get install x11vnc
  • impostare la password con
sudo x11vnc -storepasswd /etc/x11vnc.pass
  • impostare l’avvio automatico aggiungendo al file /etc/xdg/lxsession/LXDE/autostart (per Wheezly) ~/.config/lxsession/LXDE-pi/autostart (per Jessie e Strech)
@x11vnc -rfbauth /etc/x11vnc.pass -shared -forever

NTP

Nelle release Jessie va installato il pacchetto ntp per fare in modo che il dispositivo prenda in modo automatico l’orario

sudo apt-get install ntp

In Raspbian Strech è già presente il servizio Timesyncd che permette l’utilizzo come client NTP

  • per verificare lo stato del servizio e riavviarlo dopo la modifica
systemctl status systemd-timesyncd.service
sudo systemctl restart systemd-timesyncd
  • nel caso si voglia aggiungere un server privato o diverso dai predefiniti va aggiunto nel file di configurazione
sudo nano /etc/systemd/timesyncd.conf

[Time]
NTP=192.168.1.1

Comportamento desktop

Al fine di bloccare lo schermo sul desktop ed evitare lo schermo nero dopo 15 minuti

  • va inserita nel file di configurazione la direttiva seguente
sudo nano /etc/lightdm/lightdm.conf

[SeatDefaults]
xserver-command=X -s 0 dpms
  • oppure inserite le seguenti righe nel file autostart succitato
@xset s off
@xset -dpms
@xset s noblank

Inoltre è possibile fare in modo che il puntatore del mouse scompaia dal desktop dopo qualche secondo tramite unclutter inserendo nel file autostart

@unclutter -display :0 -root -idle 1 &

senza specificare -root il cursore verrà nascosto solo nei programmi avviati ma non nel window manager, con -idle XX si specifica dopo quanti (XX) secondi la freccia verrà nascosta.

Gestione alimentazione e avvio

Risulta utile riavviare il dispositivo almeno una volta al giorno, per evitare che si blocchi.

Tramite la libreria dedicata è possibile sfruttare il protocollo CEC per accendere/spegnere il televisore (compatibile con CEC) a cui è collegato.

Sono comportamenti possibili inserendo le relative direttive nel cron, con il comando crontab -e

#Accensione schermo
00 8 * * 1-5 echo on 0 | cec-client -s -d 1 >/dev/null 2>&1
#Riavvio dispositivo
05 8 * * 1-5 sudo reboot
#Spegnimento schermo
00 19 * * 1-5 echo standby 0 | cec-client -s -d 1 >/dev/null 2>&1
00 23 * * 1-5 sudo reboot
10 23 * * 1-5 echo standby 0 | cec-client -s -d 1 >/dev/null 2>&1

Gestione presentazione

La presentazione da visualizzare sullo schermo può essere hostata su un sito esterno oppure sul server web installato localmente.

I browser per la visualizzazione possono essere Midori (leggero e utile sulle versioni hw 1 e 2 della piattaforma) oppure Chromium (performante nella versione 3 della piattaforma e con supporto alla decodifica hardware h264).

Nel caso la presentazione sia semplice e le pagine del sito procedano in modo autonomo è possibile avviare direttamente il browser nel file autostart

@midori -e Fullscreen -a http://www.example.com

altrimenti è utile avviare uno script

@/home/pi/Utili/autostart.sh

Il contenuto di questo script può essere il seguente

#!/bin/bash
#Attendi un attimo prima di avviare il tutto
sleep 60

#Alternativa usando Midori
#export DISPLAY=:0 && midori -e Fullscreen -a "http://www.google.it" &

pidof chromium-browser >/dev/null

if [[ $? -ne 0 ]] ; then
 echo "Restarting Chromium: $(date)" >> /var/log/autostartScript.log
 #Lancia il browser
 export DISPLAY=:0 && chromium-browser \
 --disable \
 --disable-translate \
 --disable-infobars \
 --allow-running-insecure-content \
 --disable-session-crashed-bubble \
 --incognito \
 --disable-suggestions-service \
 --disable-save-password-bubble \
 --start-maximized \
 --kiosk "http://www.example.com/" &
 #Attendi il caricamento
 sleep 20
 #Inserisci le credenziali per l'accesso in caso ci sia da effettuare un login
 export DISPLAY=:0 && xdotool key "Tab"
 export DISPLAY=:0 && xdotool type "user"
 export DISPLAY=:0 && xdotool key "Tab"
 export DISPLAY=:0 && xdotool type "password"
 export DISPLAY=:0 && xdotool key "Return"
fi
#Per cambiare cambiare indirizzo in modalità fullscreen va tolta e rimessa con F11
# export DISPLAY=:0 && xdotool key "F11"
# export DISPLAY=:0 && xdotool key "ctrl+l"
# export DISPLAY=:0 && xdotool type "www.google.it"
# export DISPLAY=:0 && xdotool key "Return"
# sleep 3
# export DISPLAY=:0 && xdotool key "F11"

#Per aggiornare la pagina periodicamente è possibile usare F5
# while : ; do
#  export DISPLAY=:0 && xdotool key "ctrl+F5"
#  sleep 10
# done

Creazione sito

Per far procedere le pagine in modo autonomo nel sito è possibile utilizzare delle librerie javascript dedicate come Reveal.js oppure inserire un javascript come il seguente

<script type="text/javascript">
var redirectURL ='http://www.example.com/page2'; // edit this value for the next page
var redirectDelayInSeconds = 15; // edit this value after how many seconds
var d = redirectDelayInSeconds * 1000;
window.setTimeout ('parent.location.replace(redirectURL)', d);
</script>

Manutenzione piattaforma

Aggiornamenti

Per aggiornare i pacchetti del sistema operativo e il firmware della piattaforma

sudo apt-get update && sudo apt-get dist-upgrade && sudo rpi-update

Pulizia pacchetti

Se lo spazio del RaspberryPi è in esaurimento potrebbe dipendere dal fatto che gli aggiornamenti del firmware stanno occupando uno spazio notevole (in quanto non vengono cancellati dopo l’installazione).

Per liberare spazio è possibile eliminare le vecchie versioni da /lib/modules/

Aggiungi ai preferiti : Permalink.

I commenti sono chiusi