Ceci est une ancienne révision du document !
Raspberry TV-Accueil
Le projet repose sur l'utilisation conjointe de 2 outils :
- Une appli d'enregistrement de réservations : Booked. Appli libre forkée et disponible ici : https://github.com/effgarces/BookedScheduler
- Cette appli sert à stocker des réservations de salles : https://ladoc.cemea.org/dsi/booked_an
- Un raspberry connecté à une TV qui vient piocher les infos dans Booked et les affiche de manière personnalisée
Comment ça marche ?
1) Booked fonctionne sur le mode d'une appli Web avec PHP & une base de données MySQL dont la structure reste technique.
Une partie du code du projet propose à l'aide d'un script Python-Flask apibkd.py (lancé par le script runapi.sh) une API qui affiche les événements voulus sur une URL dans un fichier JSON donné :
http://ip_booked:5000/v1/YYYY-MM-DD renvoie des infos du jour :
{ "titre": "D4", "description": "", "organisateur": "Edwige MASSON", "datedebut": "2021-04-26 09:00:00", "datefin": "2021-04-26 17:00:00", "nbpers": "", "salle": "Salle 15", "series_id": 49, "reservation_instance_id": 38 },
Installation et services en détail de l'API
- le code est placé dans /srv/raspitv depuis le dépot cloné : https://code.cemea.org/francois.audirac/raspitv
- Personnaliser le .env (issu du .env.example) pour se connecter à la base de données.
- installer le service apibkd.service qui va lancer /srv/raspitv/runapi.sh qui va lancer apibkd.py
- le service doit alors répondre aux requêtes web : http://ip_booked:5000/v1/YYYY-MM-DD et http://ip_booked:5000/v1/lastupdate qui renvoie la date de dernière modification de la base de données.
Voir procédure technique : https://ladoc.cemea.org/doku.php?id=dsi:tv_diffus_raspberrys#depot_git_et_installation
2) Du côté du Raspberry, un script permanent diffuse un diaporama à partir d'images contenues dans des dossiers distants.
Le code du projet propose un script plangen.py qui vient régulièrement chercher les modifications issues de Booked et générer une image planning.png à partir d'un fichier HTML + CSS. Ce fichier placé dans /var/lib/rs/ sera donc affiché au milieu des images diffusées. Si aucun événement n'est programmé, le planning est noir.
Installation et services en détail de la diffusion sur la TV
- le code est placé dans /srv/raspitv depuis le dépot cloné : https://code.cemea.org/francois.audirac/raspitv
- Personnaliser le .env (issu du .env.example) pour adapter des paramètres de diffusion
- Personnaliser le fichier /var/lib/rs/media.conf pour personnaliser les paramètres de connexion au serveur/cloud : accès aux images distantes
- installer le service raspitv.service qui va lancer /srv/raspitv/raspitvdiff.sh qui va générer le planning (plangen.py) et lancer la diffusion du diaporama.
- le fichier /etc/crontab est personnalisé pour varier les périodes d'affichage avec : extinction d'écran + arrêt diffusion / démarrage écran + départ diffusion
Voir procédure technique : https://ladoc.cemea.org/doku.php?id=dsi:tv_diffus_raspberrys#depot_git_et_installation
Déroulement des étapes sur le raspberry rpi1
1) lors du démarrage (rpi ou service raspitv), lancement de rapitvdifff.sh : si le planning est absent, on copie un planning noir pour avoir au moins une image à diffuser (TODO : mettre autre chose = logo CEMEA ?)
2) On stoppe le diaporama (il est peut-être lancé) et on arrête la diffusion sur HDMI.
3) On lance plangen.py pour générer le planning qui est généré régulièrement selon les modifications. Ce programme est sensé tourner en permanence.
4) On ouvre la diffusion sur HDMI et 3 secondes après on lance le diaporama.
5) à intervalles réguliers (9h, 17h, week-end), on arrête la diffusion sur HDMI et le diaporama. Et le matin on relance la diffusion et le diaporama (rs).
Utilisation - vérifications - commandes
En cas de modification du code, voici les étapes à respecter pour relancer le diaporama :
systemctl stop rs # service qui diffuse le diaporama systemctl stop raspitv # service de génération du diaporama systemctl start raspitv.service # service qui relance le nouveau planning, puis le diaporama # Pour éteindre / allumer la diffusion sur HDMI tvservice -o # éteindre tvservice -p && fbset -accel true; fbset -accel false ~ pour allumer l'écran
Pour info, par défaut, le nouveau planning est généré sous forme d'image “planning.png
” dans le dossier /var/lib/rs/
à partir des fichiers modele.html et modele.css.
Le fichier planning.html
est aussi le fichier final généré actualisé avant transformation en image.
Il est possible de consulter la liste des images diffusées en utilisant :
journalctl -u rs.service
Parcourir le fichier de log avec les flèches du clavier ou espace (pgdown) et “q” pour quitter le fichier.