close
Unix, Linux & Tips

Les tribulations d'un admin sys

Image par Customgadz de Flickr

Après quelques mois d’arrêt dans la publication d’articles, je me décide (enfin!) à re-publier du contenu et notamment sur la configuration du Miroir Magique. Lors de cet article, nous allons nous intéresser à quelques éléments de customisation. En effet, si nous avons vu comment installer et configurer notre miroir (ici et ici); nous allons maintenant nous intéresser aux différentes manipulations à effectuer pour qu’il puisse fonctionner sans notre intervention et surtout, sans nous en préoccuper le moins du monde.

Rappel : Cet article fait partie d’une série en plusieurs parties, dont vous trouverez les éléments ci-dessous :

  • Réflexion autour d’un appareil connecté (Allons-y!)
  • Installation du Magic Mirror – Partie 1 (Allons-y!)
  • Installation du Magic Mirror – Partie 2 (Allons-y!)
  • Installation du Magic Mirror – Partie 3 (Allons-y!)
  • Installation du Magic Mirror – Partie 4 (Allons-y!)
  • Installation du Magic Mirror – Partie 5 (vous y êtes!)

Modification de la résolution

Lors de l’installation, nous avons laissé les paramètres par défaut de l’affichage sur notre Raspberry Pi. Or, lorsque nous lançons la miroir, de larges bandes noires apparaissent sur les bords; ce qui n’est pas des plus esthétique, en plus de nous faire perde pas mal d’affichage. Pour modifier cet affichage, nous allons éditer le fichier de configuration.

Dans la fenêtre de terminal taper la commande suivante, et appuyer sur Entrée pour modifier le fichier de configuration :

Ajouter dans ce fichier les lignes suivantes, toutefois, sachez que même si la position dans le fichier importe peu, nous allons essayer de regrouper les options entre-elles. Sauvegardez les modifications :wq!

Le paramètre hdmi_group définit si la sortie HDMI doit être utilisé soit en CEA (Consumer Electronics Association, le standard utilisé par les télévisions) ou DMT (Display Monitor Timings, le standard utilisé pour les moniteurs d’ordinateurs).

Le paramètre hdmi_mode, utilisé avec hdmi_group sert à définir le format de sortie HDMI. Dans notre exemple, la valeur 85 correspond à une résolution de 1280×720 pixels.

Remarque :
Vous pouvez modifier la résolution de votre écran en fonction du moniteur que vous avez en votre possession. Plus d’informations sont disponibles : ici.

Démarrage automatique du Miroir

Maintenant que notre logiciel est fonctionnel, nous allons voir comment faire pour que les processus soient démarrés automatiquement au démarrage du système. En effet, par défaut, vous avez du vous rendre compte que celui-ci affiche le bureau de la distribution. Pour se faire, nous allons utiliser PM2 qui est un gestionnaire de processus pour les applications Node.js et qui inclus un répartiteur de charge. Il permet notamment de laisser les applications en fonctionnement, de les recharger sans interruption et de faciliter les différentes tâches d’administration.

Dans la fenêtre de terminal taper la commande suivante, et appuyer sur Entrée pour installer le logiciel :

Pour s’assurer que PM2 peut effectuer correctement les actions qui lui sont demandées suite à un redémarrage, il doit être démarré au lancement du Raspberry Pi. Pour se faire, taper la commande suivante, et appuyer sur Entrée pour afficher les commandes nécessaires :

Remarque :
PM2 vous donne les commandes à exécuter ensuite.

Nous allons maintenant réaliser un petit script qui sera lancé au démarrage. De préférence, positionner celui-ci dans la home utilisateur et non dans le dossier MagicMirror (ceci pour éviter les effets de bords des différentes mises à jour).

Dans la fenêtre de terminal taper la commande suivante, et appuyer sur Entrée pour éditer le script :

Ajouter dans ce fichier les lignes suivantes :

Sauvegardez les modifications :wq!. Il faut ensuite rendre le script exécutable, et s’assurer que celui-ci sera lancé automatiquement, via les commandes suivantes :

Remarque :
Je ne vous détaille pas à quoi servent les 2 dernières commandes, si vous avez des questions, n’hésitez pas à me poser des questions. De plus, je vous invite à lire l’article original écrit par le créateur du Miroir Magique : ici

Suppression du pointeur de la souris

Rien de plus agaçant, une fois notre miroir lancé, que d’avoir le curseur de la souris présent et qui refuse de disparaître! Pour nous permettre d’avoir un affichage propre, nous allons installer un module qui permet d’enlever la souris : Unclutter.

Dans la fenêtre de terminal taper la commande suivante, et appuyer sur Entrée pour installer le logiciel :

Maintenant que le logiciel est installé, nous allons le configurer pour qu’il se lance au démarrage et face rende notre pointeur invisible au bout de quelques secondes :

Ajouter la ligne suivante en fin de fichier :

Remarque :
Cette option de configuration alloue un délai de 3 secondes avant la disparition du pointeur sur l’écran.

Allumage / Extinction automatique de l’écran

Avoir un miroir magique, c’est bien, mais cela ne présente aucun intérêt qu’il soit allumé tout le temps notamment si nous ne sommes pas présents pour le regarder. Je vous propose donc, un petit script qui va vous permettre d’arrêter l’écran tout en laissant notre Raspberry Pi en fonctionnement. Ceci présente plusieurs avantages, principalement, celui de ne pas avoir à redémarrer le système régulièrement pour avoir accès aux informations.

Remarque :
Vous avez déjà été nombreux à me demander s’il était possible que le miroir s’allume et s’éteigne automatiquement avec une reconnaissance faciale. Sachez que je n’ai pas mis en place cette solution actuellement (il me manque du temps et le matériel pour le faire), mais qu’elle existe et pour cela, il faut utiliser le module de reconnaissance qui est developpé pour Raspberry.

Dans la fenêtre de terminal taper la commande suivante, et appuyer sur Entrée pour éditer le script :

Ajouter dans ce fichier le bloc de code suivant :

Les commandes à utiliser sont les suivantes, elles permettent d’allumer, éteindre, et voir le status de notre écran :

Remarque :
Pour ma part, j’ai simplement décidé d’implémenter ce script via une crontab qui va allumer et éteindre l’écran à heures fixes. Dans mon cas, le cycle de vie de l’écran est le suivant :

  1. En Semaine :
    • De 07h30 à 09h45Allumé
    • De 10h00 à 19h00Eteint
    • De 19h00 à 23h59Allumé
  2. Le Week-end :
    • De 07h30 à 23h59Allumé

Pour éditer la crontab, saisissez la commande :

Ajouter les valeurs suivantes pour définir les heures d’arrêt et d’allumage de l’écran :

Personnalisation de l’affichage

L’affichage par défaut, est très sobre (écriture blanche sur fond noir). Il est intéressant de modifier certains éléments d’affichage pour permettre l’ajout d’un peu de couleur à l’ensemble. Pour se faire, il suffit d’éditer le fichier de configuration custom.css, et de définir de nouvelles couleurs.

Pour éditer le fichier, saisissez les commandes suivantes :

Ajouter les valeurs suivantes pour définir le nouveau code couleur :

Remarque :
Dans mon exemple, je n’ai modifié l’affichage que certains modules (Calendar, Forecast, Weather Forecast). Libre à vous de choisir quels modules vous pouvez modifier et personnaliser.

Au cours de cet article, nous avons vu comment personnaliser notre affichage et surtout avoir un miroir qui peut agir de manière autonome sans notre intervention. Si vous avez des remarques, n’hésitez pas à me laisser des commentaires et j’essaierai dans la mesure du possible d’y répondre. Lors de prochains articles, nous essaierons de parler de la construction du cadre et de sa mise en place.

Review overview

Mise en oeuvre 4
Connaissances nécessaires 5
Difficulté de prise en main 6

Summary

5 Compliqué Votre miroir étant installé et fonctionnel, il ne s'agit ici que de l'amélioration et de l'optimisation des différents éléments qui le composent. Cela ne représente pas de difficultés pour quiconque connaît un peu le code et lira la documentation, mais une erreur peut vite amener à un écran noir, hélas ! Soyez donc prudent lors de la manipulation des différents fichiers de customisation, et pensez à faire des sauvegardes régulièrement, afin de ne pas perdre tout le travail réalisé jusque-là!

Tags : magicmagic mirrormagiquemiroirmiroir magiquemirrorRaspberry pi
Emmanuel V.

The author Emmanuel V.

33 commentaires

  1. Bonsoir, je voudrais faire fonctionner mon module MMM-LocalTemperature mais rien n’y fait je n’y arrive pas
    Pouvez-vous m’aider ?

      1. Bonjour, j’ai installé le modules local température, le modules s’afficje Bien mais rien ne se passe. J’ai branché le capteur DHT22 AM2302 avec une résistance de 4,7kohm entre le positif et le out et le négatif sur le ground
        Je ne comprends pas
        Merci

        1. Bonjour,

          Actuellement, je ne possède pas ces solutions, je ne peux malheureusement pas vous accompagner pour la résolution de ce problème. Mais n’hésitez pas à poser des questions aux personnes qui ont développé le module en question 🙂

          Bon courage.

        2. Bonjour, j’ai également le même problème . J’ai essayé sur plusieurs GPOI différents en modifiant bien sur la déclaration de « sensorPIN » a chaque fois. Avez vous trouvé la solution?

          Mon module affiche:
          Température undefined °C
          Humidité %

          Merci

  2. Bonjour et merci pour votre travail. Ma question concerne la mise en place de google calendar. Avez vous la possibilité de détailler un peu plus car je pense qu’il faut rentrer l’adresse mail, le mot de passe, l’url… Merci à vous

    1. Bonjour,

      Non, aucune de ces informations n’est nécessaire dans la configuration du module. Si vous utilisez google, il vous faut éventuellement autoriser le partage public du calendrier, mais en aucun cas, le miroir n’a besoin de l’adresse mail, mot de passe ou autre information pour fonctionner.

      Bon courage pour la suite de votre configuration.

  3. salut Manu, je fais suite à mon précédent message j’ai une alerte de mise à jour de MM mais impossible de la faire j’ai le message suivant ( au secours):
    Mise à jour de57daa..e6fb18d
    error: Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :
    modules/default/calendar/calendar.js
    package-lock.json
    vendor/package-lock.json
    Veuillez valider ou remiser vos modifications avant la fusion.
    Abandon
    merci pour ton aide

    1. Bonjour,

      C’est normal, il te prévient juste que les modifications que tu vas installer vont avoir un effet de bord. Pour information, tu ne dois pas voir besoin de modifier les fichiers « .js »…

      Pour la mise à jour ensuite, il te suffit de valider les modifications et l’installation débutera.

      1. Bonjour, je reviens vers vous car je ne réussi toujours pas à faire les mises à jour, quand je lance la commande il me signale que deux fichiers vont être écrasés ou quelques chese dans le genre et « abandon » je n’ai aucune possibilité de valider HELP SVP

        1. Bonjour,

          Tout dépend des fichiers qui vont être modifiés, mais de base, il vous préviens normalement d’un fichier « xxxx_package.json ». Vous pouvez ignorer cette alerte, et forcer la mise à jour en tapant la commande suivante, qui aura pour but de vous remettre à la version souhaitée :
          pi@raspberrypi:~/MagicMirror $ git reset --hard
          HEAD est maintenant à 447c0bf Merge pull request #1968 from MichMich/developgit reset --hard

          Une fois cette commande effectuée, vous pouvez lancer la mise à jour, via la commande :
          pi@raspberrypi:~/MagicMirror $ git pull

          Cela devrait marcher maintenant!

  4. « Sauvegardez les modifications :wq! »

    Normale que sa ne marche pas ?!?

    Car rien n’est détaillé on fait un tuto comme si qu’on été des connaisseurs alors que je début dans Raspbian donc le « :wq! » je le tape bien en dessous de la ligne et en « THEORIE » sa devrait enregistrer mon fichier et quitter donc pourquoi sa ne fait rien ?!?

    Faut vraiment penser le tuto pour les néophytes…

    En espérant ne pas chercher sur d’autre forum pour quelque chose qui va surement me prendre quelques secondes a taper

    1. Bonjour,

      Tout d’abord, quand on demande de l’aide, on s’adresse aux gens avec un « Bonjour »… Surtout quand il s’agit d’un blog personnel et que le contributeur prend sur son temps pour écrire… Mais soit, je vais passer outre et quand même vous répondre!

      Le tutoriel que vous suivez est le plus détaillé possible, compte tenu du fait que vous êtes en en train de chercher un élément précis sur une configuration de Raspberry pi… Avant de demander de l’aide en suivant les commandes, on réfléchit 2 secondes à l’utilisation du logiciel VI ou VIM, et l’on se rend compte que pour sauvegarder on doit d’abord faire « Echap » (la touche, hein? Pas taper le mot échap) et ensuite saisir la commande.

      Bon courage néanmoins pour la suite de votre configuration, mais apprenez la politesse car je serais sûrement moins enclin à vous répondre la prochaine fois.

  5. Bonjour et merci d’avance pour votre aide, voila ce que j’ai comme message quand je tente la MAJ, je fais quelque chose de mal?

    pi@raspberrypi:~ $ cd \MagicMirror
    pi@raspberrypi:~/MagicMirror $ git pull
    Mise à jour 5bf90ae..447c0bf
    error: Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :
    modules/default/calendar/calendar.js
    package-lock.json
    Veuillez valider ou remiser vos modifications avant la fusion.
    Abandon
    pi@raspberrypi:~/MagicMirror $

    1. Bonjour,

      Tout dépend des fichiers qui vont être modifiés, mais de base, il vous prévient normalement d’un fichier « package.json » comme c’est le cas dans votre exemple. Vous pouvez ignorer cette alerte, et forcer la mise à jour en tapant la commande suivante, qui aura pour but de vous remettre à la version souhaitée :
      pi@raspberrypi:~/MagicMirror $ git reset --hard
      HEAD est maintenant à 447c0bf Merge pull request #1968 from MichMich/develop

      Une fois cette commande effectuée, vous pouvez lancer la mise à jour, via la commande :
      pi@raspberrypi:~/MagicMirror $ git pull

      Cela devrait marcher maintenant!

      1. @Emmanuel V.Bonjour et merci pour l’astuce, ça passe sans problème, grace à vous j’ai ENFIN la solution à mon problème, merci encore, du coup je vais abuser de votre savoir svp, j’ai installé sur mon MM quelques modules météo,calendar,résultats de foot, news, donc rien devraiment très compliqué mais les modules fonctionnent parfaitement, mon problème est le suivant: au bout de 2 ou 3 heures de fonctionnement j’ai des dysfonctionnements la pendule reste figée (les secondes ne défilent plus) les modules restent bloqués, j’avais mis ça sur le compte de mon pi2 j’ai donc changé pour un pi3 avec une installation « toute fraiche » et j’ai les mêmes symptômes, la seule solution que j’ai trouvé pour le moment c’est de faire rebooter le pi toutes les heures…peutêtre avez vous une idée?
        merci pour votre aide

        1. Ravi d’avoir pu vous aider dans vos problèmes! Tant que je peux, je vais essayer de continuer de la sorte!

          Alors concernant ce problème, je l’ai déjà constaté en effet sur mon système. Pour ma part, c’était car j’étais connecté en wifi sur mon Raspberry, mais le wifi n’était activé qu’à certaines heures. Ce qui avait pour conséquence de saturer la mémoire du Raspberry et du coup de figer le miroir. J’ai réussi à résoudre le problème en le connectant en filaire.

          J’ai pensé que la saturation de mémoire intervenait à cause de ces fameux Time Out. Je n’ai pas ouvert de ticket chez le créateur du miroir pour lui en faire part. Toutefois, tiens moi au courant si ton problème ressemble à ça !

          Bon courage!

  6. Bonjour,
    Dans la partie « DÉMARRAGE AUTOMATIQUE DU MIROIR », apres avoir inserer les commandes :

    cd ~/MagicMirror
    DISPLAY=:0 npm start

    Je n’arrive pas à souvegarder les fichier, la touche echap ne repond pas, alors qu’elle fonctionne correctement sur les autres applications.
    Deuxième problème qui est arrivé suite à cela, une erreur apparaît car j’ai quitté la fenêtre de commande

    E325: ATTENTION
    Found a swap file by the name ".mm.sh.swp"
    owned by: pi dated: Mon Jun 1 16:12:56 2020
    file name: ~pi/mm.sh
    modified: YES
    user name: pi host name: raspberrypi
    process ID: 987
    While opening file "mm.sh"
    CANNOT BE FOUND
    (1) Another program may be editing the same file. If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes. Quit, or continue with caution.
    (2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r mm.sh"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".mm.sh.swp"
    to avoid this message.

    "mm.sh" [New File]
    Press ENTER or type command to continue

    Le problème etant qu’aucune des commande proposé ne fonctionne. J’ai remarqué qu’en appuyant sur « Entrée », on arrivait dans le fichier donc peut-être que l’on peut écraser la précédente ‘sauvegarde » (qui n’en est pas une puisque je n’arrive pas à sauvegarder 😀 ).

    Merci d’avance pour votre retour !

    1. Bonjour,

      En effet, lorsque vous saisissez la touche Echap, il ne se passe absolument rien, ce qui est logique, car vous quittez le mode édition du logiciel « vi » ou « vim ». Une fois que vous avez quitté ce mode, il suffit de taper littéralement les commandes données « :wq! » (ou alors, effectuer une autre commande : tapez « shift (au dessus de ctrl) (touche) Z (touche) Z) »; cela effectuera une sauvegarde du fichier et vous le quitterez.

      Le reste sont des informations qui vous confirment que vous avez mal fermé le fichier. Ce qui est logique, au final! Vous pouvez donc ignorer cet avertissement et effacer le fichier temporaire, soit en validant le fait d’abandonner les modifications, soit en supprimant directement le fichier.

      Je vous invite à lire la fiche suivante, qui va vous être bien utile à l’avenir : ici

      Bon courage!

  7. Bonjour,

    Merci pour ce tuto très utile.

    J’essai de programmer l’allumage et l’extinction automatique de l’écran par rapport aux heures. Il valide bien les commandes mais cela ne fonctionne pas. Je ne sais pas où est que je me trompe.
    Pourriez-vous m’aider svp. ?
    Merci d’avance pour votre retour

  8. Bonjour Emmanuel,

    Bravo pour votre travail. Je suis vraiment admiratif.

    Je viens de suivre le tuto pour la mise à jour.

    Ce message d’erreur apparait
    WARNING! Could not load config file. Starting with default configuration. Error found: Error: Cannot find module ‘googleapis’
    Require stack:
    – /home/pi/MagicMirror/modules/MMM-GoogleTasks/node_helper.js
    – /home/pi/MagicMirror/js/app.js
    – /home/pi/MagicMirror/js/electron.js
    – /home/pi/MagicMirror/node_modules/electron/dist/resources/default_app.asar/main.js*

    A ce que je comprends, la mise à jour à effacer ma confi initiale.
    Que dois faire ?

    Merci pour ta réponse

    Yann

  9. J’ai trouvé la réponse du moins en partie. C’est le module GoogleTasks qui pose problème. Je l’ai donc retiré et ça fonctionne de nouveau. Reste à trouver la raison de ce couac.

  10. Bonjour Emmanuel,
    merci pour ce tuto, il m’a bien aidé à réaliser mon magicmirror.
    je n’arrive pas à mettre en place l’allumage/extinction aux heures indiquées. je ne comprend pas s’il faut faire la partie du fichier .sh ou le crontab, ou les deux?
    merci pour votre aide.
    Cdt. Hervé

    1. Bonjour,

      Il faut tout faire, le fichier .sh contient le code qu’il faut lancer pour allumer et éteindre le miroir, et la crontab permet de définir les heures auxquelles le fichier est exécuté.

      Bon courage.

  11. Bonsoir Emmanuel.
    Pour commancer mes meilleurs voeux pour 2021.
    voila mon probleme je veux faire la mise a jour de Remote control quand je lance la mise a jour il me donne cette reponse que je ne sait quoi faire avez vous une idée.
    pi@raspberrypi:~/MagicMirror/modules $ bash -c  » $ ( curl -s https://raw.githubusercontent.com/Jopyth/MMM-Remote-Control/master/installer.sh )  »
    bash: -c: ligne 0: erreur de syntaxe près du symbole inattendu « curl »
    bash: -c: ligne 0: ` $ ( curl -s https://raw.githubusercontent.com/Jopyth/MMM-Remote-Control/master/installer.sh ) ‘
    Merci
    Patrick

    1. Bonjour,

      Pour réaliser des mises à jour de plugin, je n’utilise pas la même méthode.
      En se positionnant dans le répertoire voulu :
      git pull

      et éventuellement derrière, je lance :
      npm install

      En espérant que ça vous aide dans votre résolution.

      Bon courage.

  12. Bonjour,
    Merci pour ce tutoriel qui m’a bien servi pour paramétrer le MagicMirror acheté sur Kubii;fr pour un ami.
    Mais là je commence à devenir chèvre. J’ai le message « Une mise à jour de MagicMirror² est disponible », mais dès que je tente de mettre à jour en suivant ton tuto (ou d’autre personne), et bien MagicMirror ne se lance plus tout seul et ne fonctionne plus du tout. Bon, j’ai trouvé une parade pour effacer le message en quittant avec CTRL+M puis en fermant MagicMirror (qui se relance tout seul dans la foulée), mais çà ne résout pas le soucis qu’il ne veuille pas se mettre à jour.

    Et j’ai également une autre question, est-il possible d’intégrer un raccourci CTRL+M pour switcher sur le bureau Raspbian sans avoir à utiliser un clavier? Et si oui comment faire plz?

    Et une dernière question, est-il possible de changer la taille d’affichage de l’horloge? J’ai réussi à la mettre au centre, mais j’aimerai bien qu’elle soit plus affichée en grand.

    Merci d’avance et bonne continuation!

  13. Bonjour Emmanuel,

    Je me retrouve avec un problème. Sur l’écran de mon magic Mirror2 il m’affiche
    Une mise à jour de magic mirror2 est disponible
    Installation actuelle est 387 commits en retard sur la branche master…
    J’ai la même chose en dessous avec remot control et mmm moon phase.

    Comment faire toutes les mise à jour des applications ?

    Merci de ton retour

    Cordialement

    Passer de bonnes fêtes

Leave a Response

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.