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
- Pensez juste à activer le SSH, c’est plus pratique pour la config
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
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