technique:raspitv-accueil

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
  • Un raspberry connecté à une TV sur lequel est installé :
    • RS : RaspberrySlideShow, un système de diffusion de diaporama
    • RaspiTV : une appli qui vient piocher les infos dans Booked et les affiche de manière personnalisée
  1. Installation de l'appli Booked dans un serveur web : Procédure d'installation
  2. Sur un Raspberry, installation du système Raspberry SlideShow
  3. Sur le même Raspberry, installation du code RaspiTV
  4. Connexion entre le RaspiTV et l'appli Booked avec les bons paramètres

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
    },

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

- 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 de mise en place du raspiTV

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

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 stoppe l'affichage, stop le diapo, relance le nouveau planning, puis relance l'affichage et relance le diaporama
# Pour éteindre / allumer la diffusion sur HDMI
vcgencmd display_power 0 # éteindre
vcgencmd display_power 1 # 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 # dernier log : q pour quitter
ou
journalctl -fu rs.service # pour avoir le flux en continu : Ctrl + C pour quitter.

Parcourir le fichier de log avec les flèches du clavier ou espace (pgdown) et “q” pour quitter le fichier.

  • technique/raspitv-accueil.1620245526.txt.gz
  • Dernière modification : 2021/05/05 22:12
  • de francoisa