TUTO - Affichage déporté sur écran Raspberry PI en mode texte

Comme j’ai eu un peu de mal à arriver au résultat final, je vous partage les étapes pour parvenir à :

  • afficher des informations provenant de Jeedom (ou autre …),
  • en mode texte pur,
  • sur un Rapsberry PI indépendant avec écran intégré
  • en prenant le moins de place possible et juste un câble d’alime
  • et sans avoir besoin de reconfigurer qqch tous les 4 matins.

Dans mon cas c’est un petit écran 3.5 pouces (MHS35) qui ne coûte presque rien.
J’arrive à ça, afficher mes infos de consommation maison, autoconsommation PV et vente PV, ce qui est pleinement satisfaisant pour moi, mais ça reste adaptable à vos besoins/envies :


1. Configurer le R.PI

  • Là c’est votre toutouille, je vous laisse faire selon votre infra :slight_smile:
  • Pensez juste à activer le SSH, c’est plus pratique pour la config :wink:

2. Créer un script shell d’affichage à l’écran
Voici le mien, pensez bien à :

  • renseigner votre adresse IP Jeedom
  • la clé API qui va bien
  • les ID des virtuels à aller chercher
  • et forcément, à modifier le contenu pour afficher ce qui vous convient.

affichage(jeedom).txt (10,8 Ko)
Vous verrez que j’ai commenté au maximum, afin que chacun comprenne au mieux les commandes, quel que soit son niveau.
Nota : pour ma part je l’ai créé comme suit : /etc/afficheur/affichage.sh
Pensez bien à le renommer en « .sh », puis à le rendre exécutable :

chmod +x affichage.sh


3. Configurer le mode console

  • Un petit coup de nano, vim, cequevousvoudrez :

nano /etc/default/console-setup

  • ajoutez/modifiez ces lignes :
CHARMAP="UTF-8"
CODESET="Uni2"
FONTFACE="VGA"
FONTSIZE="16x32"
  • relancez le service :

systemctl daemon-reload && systemctl restart console-setup.service


4. Création du service d’affichage
Il faut d’abord créer un service qui va ouvrir une console (tty1 ici) et y lancer le script « affichage.sh ». Pour cela on recopie le fichier de config du service d’affichage sur tty1 d’origine, puis on désactive l’origine au profit de la copie. En passant, on utilise l’option de non-effacement de la console, dès fois qu’il y ait eu un message important :

cp -P /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty-no-clear@tty1.service
systemctl disable getty@tty1.service
systemctl enable getty-no-clear@tty1.service

Cherchez ensuite la ligne « TTYVTDisallocate=yes » dans la section [Service] pour la basculer à no :

nano /etc/systemd/system/getty-no-clear@tty1.service

TTYVTDisallocate=no

Puis ajoutez ou modifier ces lignes, dans les sections indiquées, pour lancer « affichage.sh » automatiquement :

[Service]
ExecStart=/etc/afficheur/affichage.sh
User=root
Type=idle
StandardOutput=tty
# Est-ce qu’on doit redémarrer le service si échec :
Restart=on-failure
# Délai avant tentative de redémarrage :
RestartSec=5
# Par défaut, un service sera relancé 5 fois en cas d’échec.
# Définition d’une limite d’essais de redémarrage (3x) :
StartLimitBurst=3
# en un certain laps de temps (60 secondes)
StartLimitIntervalSec=60
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=no
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target
DefaultInstance=tty1

Cela permet de lancer un script sur l’écran tty1, sans ouvrir de session utilisateur (autologin), donc sans problèmes de sécurité. Si on force le programme à quitter par le clavier, il se relance immédiatement.

  • On active maintenant ce nouveau service :

systemctl daemon-reload
systemctl enable getty-no-clear@tty1.service
systemctl start getty-no-clear@tty1.service


5. Décollage !
Et voilà, c’est terminé, on peut maintenant lancer le service :slight_smile:
Voici un petit script pour le stopper, recharger les fichiers, puis le relancer : utile en cas de modifications dans le script « affichage.sh » :

#!/bin/sh
systemctl stop getty-no-clear@tty1.service
systemctl daemon-reload
systemctl start getty-no-clear@tty1.service
3 « J'aime »

Petite explication sur les couleurs blanc vif et gris clair :

  • en blanc vif c’est ce qui s’actualise toutes les 20 secondes (les données du jour en gros)
  • en gris clair c’est ce qui s’actualise une fois par heure seulement (les historiques)

C’est fait pour éviter de surcharger le réseau de requêtes ‹ wget › inutiles.
A vous d’adapter en fonction de vos besoins bien sûr …

Joli travail, merci beaucoup pour le partage, dans l’idée de réformer mon Pi 3B pour une PI 5, il va pourvoir continuer sa carrière en afficheur auxiliaire.
(et j’ai du acheter exactement le même kit que toi: j’ai l’écran et le boitier cristal sans vis :slight_smile: )

Merci.
Vu le temps que j’ai passé en recherches pour aboutir à ce que je voulais, si ça peut aider d’autres personnes c’est avec plaisir :slight_smile:

1 « J'aime »