<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Teddy Payet</title>
	<link>https://preprod.teddypayet.com/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://preprod.teddypayet.com/spip.php?id_mot=82&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>Teddy Payet</title>
		<url>https://preprod.teddypayet.com/local/cache-vignettes/L144xH162/siteon0-84dcb.png?1724344960</url>
		<link>https://preprod.teddypayet.com/</link>
		<height>162</height>
		<width>144</width>
	</image>

                   

<item xml:lang="fr">
		<title>MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie</title>
		<link>https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie</guid>
		<dc:date>2020-04-14T22:55:42Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>Astuce</dc:subject>
		<dc:subject>Notes de d&#233;veloppement</dc:subject>
		<dc:subject>Lignes de commandes</dc:subject>
		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Comme vous le savez tous, nous sommes en confinement depuis mi-mars. Pour m'occuper un peu en ch&#244;mage partiel, en plus de ma vie de famille, je me suis inscris &#224; une groupe d'entraide sur le MagicMirror sur Facebook. J'ai eu l'agr&#233;able surprise de voir qu'un article de mon blog &#233;tait cit&#233;. Merci de la confiance de ces utilisateurs ! Apr&#232;s quelques &#233;changes, j'ai propos&#233; d'expliquer plus en d&#233;tail mon installation script&#233;e et notamment ce &#224; quoi correspond mes diff&#233;rents principaux scripts. (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/Astuce" rel="tag"&gt;Astuce&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Notes-de-developpement" rel="tag"&gt;Notes de d&#233;veloppement&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Lignes-de-commandes" rel="tag"&gt;Lignes de commandes&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH100/arton158-32c60.jpg?1724428492' class='spip_logo spip_logo_right' width='150' height='100' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Comme vous le savez tous, nous sommes en confinement depuis mi-mars. Pour m'occuper un peu en ch&#244;mage partiel, en plus de ma vie de famille, je me suis inscris &#224; une groupe &lt;a href=&#034;https://www.facebook.com/groups/2832574870153883/about/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;d'entraide sur le MagicMirror&lt;/a&gt; sur Facebook. J'ai eu l'agr&#233;able surprise de voir qu'un article de mon blog &#233;tait cit&#233;. Merci de la confiance de ces utilisateurs ! &lt;br class='autobr' /&gt;
Apr&#232;s quelques &#233;changes, j'ai propos&#233; d'expliquer plus en d&#233;tail mon installation script&#233;e et notamment ce &#224; quoi correspond mes diff&#233;rents principaux scripts.&lt;/p&gt;
&lt;p&gt;Tout a &#233;t&#233; d&#233;pos&#233; sur github (vous pourrez trouver le lien en bas de l'article). Je reprends ici plus ou moins le contenu du fichier Readme.&lt;/p&gt;
&lt;p&gt;Cet article est un &lt;strong&gt;exemple d'automatisation de la maintenance &lt;/strong&gt; de mon installation de MagicMirror. Le d&#233;p&#244;t github a pour but de montrer la possibilit&#233; d'automatiser la maintenance d'une installation d'un MagicMirror.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Le d&#233;p&#244;t s'appelle mm_config_automate. Son existence n'est que p&#233;dagogique. Il n'est en aucun cas un module de MagicMirror.&lt;/p&gt;
&lt;p&gt;De plus, je ne suis pas responsable d'une alt&#233;ration de vos donn&#233;es. Il vous faudra tester et adapter chaque script pour correspondre &#224; VOS attentes.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Liste des scripts&lt;/h2&gt;
&lt;p&gt;L'ensemble des scripts sont en bash. Ils restent simples &#224; comprendre et &#224; prendre en main avec un peu de patience et de lecture. Voici la liste des scripts :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; first_install.sh&lt;/li&gt;&lt;li&gt; mm_reset.sh&lt;/li&gt;&lt;li&gt; mm_update.sh&lt;/li&gt;&lt;li&gt; update_files_config.sh&lt;/li&gt;&lt;li&gt; disk_usage.sh&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;first_install.sh&lt;/h2&gt;
&lt;p&gt;Ce script permet &lt;strong&gt;d'installer l'ensemble des &#233;l&#233;ments de base pour qu'un MagicMirror puisse fonctionner.&lt;/strong&gt; Il est &#224; lancer sur une installation toute belle, toute neuve d'un Raspberry Pi 3. Je n'ai pas test&#233; sur un Raspberry Pi 4 pour le moment. Il prend en compte un Raspbian bas&#233; sur un Debian Buster (10) mis &#224; disposition des utilisateurs en f&#233;vrier 2020.&lt;/p&gt;
&lt;p&gt;Il fera dans l'ordre :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;i&gt;sudo apt update -y&lt;/i&gt; : R&#233;cup&#232;re la liste des mises &#224; jour disponibles&lt;/li&gt;&lt;li&gt; &lt;i&gt;sudo apt upgrade -y&lt;/i&gt; : Installe quelques mises &#224; jour, ne supprime pas les packages&lt;/li&gt;&lt;li&gt; &lt;i&gt;sudo apt autoremove -y&lt;/i&gt; : Supprime tous les anciens paquets qui ne sont plus n&#233;cessaires&lt;/li&gt;&lt;li&gt; &lt;i&gt;sudo apt clean -y&lt;/i&gt; : Cette commande de terminal lib&#232;re de l'espace disque en nettoyant les fichiers .deb t&#233;l&#233;charg&#233;s du r&#233;f&#233;rentiel local.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Puis :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; On active le son par le HDMI ;&lt;/li&gt;&lt;li&gt; Forcer le HDMI ;&lt;/li&gt;&lt;li&gt; Forcer l'affichage vertical de l'&#233;cran ;&lt;/li&gt;&lt;li&gt; Enlever des programmes inutiles ;&lt;/li&gt;&lt;li&gt; Installation de quelques packages ;&lt;/li&gt;&lt;li&gt; Installation de Nodejs et NPM selon la m&#233;thode indiqu&#233;e ici : &lt;a href=&#034;https://github.com/audstanley/NodeJs-Raspberry-Pi&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/audstanley/NodeJs-Raspberry-Pi&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Ajouter les binaires de node dans le PATH ;&lt;/li&gt;&lt;li&gt; Installation de PM2 ;&lt;/li&gt;&lt;li&gt; Enregistrer les variables d'environnement (le home de MagicMirror, ainsi que de PM2) ;&lt;/li&gt;&lt;li&gt; Cr&#233;ation du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mm.sh&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/&lt;/code&gt; ;&lt;/li&gt;&lt;li&gt; Ex&#233;cution du script d'installation du MagicMirror ;&lt;/li&gt;&lt;li&gt; Sauvegarder les r&#233;glages de pm2 et lancement des scripts au d&#233;marrage ;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Et enfin, on enregistre le contenu du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crontab.txt&lt;/code&gt; dans le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crontab&lt;/code&gt; de l'utilisateur en cours.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;mm_reset.sh&lt;/h2&gt;
&lt;p&gt;Ce script installe MagicMirror &#224; partir du d&#233;p&#244;t github dudit projet. Il s'appelle &lt;i&gt;&#034;mm_reset&#034;&lt;/i&gt; au lieu de &lt;i&gt;&#034;mm_install&#034;&lt;/i&gt; car il supprime le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/&lt;/code&gt; s'il existe. Donc, il faut faire attention &#224; ce point si vous d&#233;sirez garder une pr&#233;c&#233;dente installation.&lt;/p&gt;
&lt;p&gt;A son tour, ce script va lancer une s&#233;rie de commandes :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Arr&#234;t de MM gr&#226;ce &#224; pm2 stop mm ;&lt;/li&gt;&lt;li&gt; Effacer le r&#233;pertoire de MagicMirror si existant ;&lt;/li&gt;&lt;li&gt; R&#233;cup&#233;ration du d&#233;p&#244;t de MagicMirror ;&lt;/li&gt;&lt;li&gt; Passer sur la branche develop de MagicMirror ;&lt;/li&gt;&lt;li&gt; Cr&#233;ation des liens symboliques dans MM (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;custom.css&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt;) ;&lt;/li&gt;&lt;li&gt; Installation des d&#233;pendances de MM gr&#226;ce &#224; npm ;&lt;/li&gt;&lt;li&gt; Lancement du script d'update des modules de MM (cf. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;update_files_config.sh&lt;/code&gt;) ;&lt;/li&gt;&lt;li&gt; Relancer MM sur pm2.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Liens symboliques&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dans le script &lt;i&gt;mm_reset.sh&lt;/i&gt;, il est pr&#233;sum&#233; que le fichier &lt;i&gt;&#034;config.js&#034;&lt;/i&gt; et le fichier de personnalisation de css vitaux &#224; MagicMirror soient pr&#233;sents dans votre r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/mm_config_automate/&lt;/code&gt;. Un lien symbolique dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/css/&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/config/&lt;/code&gt; sera fait pointant vers votre r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mm_config_automate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;MagicMirror n'y verra que du feu !&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;mm_update.sh&lt;/h2&gt;
&lt;p&gt;Ce script est plus rapide. Dans ce d&#233;p&#244;t d'exemple, il n'est pas utilis&#233; dans le crontab. Il est &#224; utiliser manuellement lorsque MM doit &#234;tre mis &#224; jour.&lt;/p&gt;
&lt;p&gt;Il arr&#234;te MM par pm2, puis va dans le r&#233;pertoire de MagicMirror. A partir de l&#224;, le d&#233;p&#244;t git est mis &#224; jour avec les derniers fichiers. Une installation et une mise &#224; jour des packages npm sont lanc&#233;es.&lt;/p&gt;
&lt;p&gt;Cela fait, on relance MM sur pm2.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;update_files_config.sh&lt;/h2&gt;
&lt;p&gt;Ce script bash est le nerf de la guerre. Crontab appellera dans notre exemple le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;update_files_config.sh&lt;/code&gt; tous les jours &#224; 00h15.&lt;/p&gt;
&lt;p&gt;Ce script contient 2 fonctions cl&#233;s :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;import_module&lt;/code&gt; ;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;delete_modules&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Apr&#232;s l'utilisation de ces fonctions, une boucle est lanc&#233;e pour v&#233;rifier l'existence du module MMM-AlarmClock. Ce dernier peut utiliser des fichiers mp3 comme sonnerie d'alarme.&lt;/p&gt;
&lt;p&gt;Si vous d&#233;sirez ajouter des fichiers mp3 &#224; votre convenance, il vous suffira de les copier dans le r&#233;pertoire sounds de votre d&#233;p&#244;t &lt;i&gt;&#034;mm_config_automate&#034;&lt;/i&gt;. Automatiquement, tous les soirs (selon le crontab mis en place), chaque fichier mp3 pr&#233;sent sera copi&#233; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/MMM-AlarmClock/sounds/&lt;/code&gt;. Vous n'aurez plus &#224; vous soucier d'autres choses que sa bonne utilisation dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;update_files_config.sh : fonction import_module&lt;/h2&gt;
&lt;p&gt;Cette fonction bash attend un param&#232;tre : l'url vers le d&#233;p&#244;t git du module que vous d&#233;sirez installer sur votre MagicMirror.&lt;/p&gt;
&lt;p&gt;Par exemple, si vous d&#233;sirez utiliser le module de pages de MM, vous devez indiquer dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;update_files_config.sh&lt;/code&gt; la commande suivante :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;import_module https://github.com/edward-shen/MMM-pages.git&lt;/textarea&gt;
&lt;p&gt;Elle ira dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/&lt;/code&gt;, v&#233;rifiera si le module existe d&#233;j&#224; (en gros l'existence du r&#233;pertoire &#034;MMM-pages&#034;) ou pas. S'il n'existe pas, elle clonera le r&#233;pertoire. Puis :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Acc&#233;der au r&#233;pertoire du module ;&lt;/li&gt;&lt;li&gt; Si un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;package.json &lt;/code&gt;existe, l'installation des packages &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;npm&lt;/code&gt; est lanc&#233;e.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il faudra utiliser cette fonction autant de fois que de modules d&#233;sir&#233;s. Vous trouverez des exemples dans ledit fichier. &lt;br class='autobr' /&gt;
Cerise sur le gateau, si le module existe d&#233;j&#224;, il le mettra &#224; jour avec les derniers fichiers provenant du d&#233;p&#244;t que vous avez indiqu&#233; en param&#232;tre.&lt;/p&gt;
&lt;div style=&#034;width:100%;height:0;padding-bottom:92%;position:relative;&#034;&gt;&lt;iframe src=&#034;https://giphy.com/embed/12NUbkX6p4xOO4&#034; width=&#034;100%&#034; height=&#034;100%&#034; style=&#034;position:absolute&#034; frameBorder=&#034;0&#034; class=&#034;giphy-embed&#034; allowFullScreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;update_files_config.sh : fonction delete_modules&lt;/h2&gt;
&lt;p&gt;Cette fonction se lance apr&#232;s l'ensemble des appels &#224; &lt;i&gt;import_module&lt;/i&gt;. Elle a pour but de supprimer les modules pr&#233;sents dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/&lt;/code&gt; devenus obsol&#232;tes.&lt;/p&gt;
&lt;p&gt;Comme vous le savez, pour utiliser un module dans MagicMirror, nous devons l'avoir t&#233;l&#233;charg&#233; d'une part dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/&lt;/code&gt; mais d'autre part l'avoir indiqu&#233; dans notre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/nom_repertoire/&lt;/code&gt; n'est pas indiqu&#233; dans ce fichier, le r&#233;pertoire sera consid&#233;r&#233; comme obsol&#232;te. Donc, qu'il peut &#234;tre supprim&#233;. La pr&#233;sente fonction v&#233;rifiera chaque r&#233;pertoire dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;modules/&lt;/code&gt; &#224; l'exclusion de :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;default/&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;node_modules/&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cela pr&#233;servera l'espace disque de votre Raspberry Pi et &#233;vitera des erreurs dans votre MagicMirror.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;disk_usage.sh&lt;/h2&gt;
&lt;p&gt;Ce script permet de savoir le pourcentage d'utilisation d'espace disque. Dans le pr&#233;sent exemple, si le taux d'utilisation arrive &#224; 90% de sa capacit&#233;, un email est envoy&#233; (je vous laisse le soin de configurer le serveur d'envoi d'emails).&lt;/p&gt;
&lt;p&gt;Il faut savoir que pm2 &#233;crit beaucoup d'information dans les logs (cela d&#233;pend surtout des applications lanc&#233;es sous pm2 mais c'est un autre sujet). En prenant cela en compte, si le taux d'utilisation exc&#232;de les 90%, le script lance en premier lieu la commande pm2 flush pour vider l'ensemble des fichiers logs de pm2. Puis v&#233;rifie &#224; nouveau le taux de remplissage. Si la commande n'a pas chang&#233; la donne, l'email est envoy&#233;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;crontab.txt&lt;/h2&gt;
&lt;p&gt;Ce petit bout de fichier vous permet d'indiquer l'heure &#224; laquelle vos routines doivent &#234;tre mises en place.&lt;/p&gt;
&lt;p&gt;Dans le pr&#233;sent exemple, voici les routines :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; A 0h00 : On v&#233;rifie d'abord l'espace disque&lt;/li&gt;&lt;li&gt; A 0h05 : On met &#224; jour les fichiers de mm_config_automate&lt;/li&gt;&lt;li&gt; A 0h10 : On importe le contenu du fichier crontab.txt dans le crontab &#224; 00h10&lt;/li&gt;&lt;li&gt; A 0h15 : On peut maintenant lancer les scripts de routine (update_files_config.sh)&lt;/li&gt;&lt;li&gt; A 0h20 : On relance MagicMirror pour prendre en compte la configuration &#224; jour.&lt;/li&gt;&lt;li&gt; Tous les mois, on red&#233;marre le Raspberry Pi&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Si vous &#234;tes parents et/ou assujetti &#224; des p&#233;riodes de vacances et un planning diff&#233;rents durant ces p&#233;riodes, il est possible de mettre en place un fichier de config d&#233;di&#233; &#224; cette p&#233;riode.&lt;/p&gt;
&lt;p&gt;Dans notre exemple, le contenu de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config_vac.js&lt;/code&gt; sont identiques. Le but est d'illustrer l'existence des fichiers selon la p&#233;riode. En ayant en t&#234;te les dates de vacances qui vous int&#233;ressent, vous pouvez ajouter une ligne d&#233;di&#233;e dans crontab pour que le lien symbolique de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/config/config.js&lt;/code&gt; pointe vers le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/mm_config_automate/config_vac.js&lt;/code&gt; au lieu de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/mm_config_automate/config.js&lt;/code&gt;. Le jour o&#249; vous devez revenir au travail (donc la fin de votre p&#233;riode de vacances) &#224; 00h30, il suffira de remettre le lien symbolique vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/mm_config_automate/config.js&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Exemple pour les vacances de l'Ascension de la zone C :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre spip_cadre_block' dir='ltr'&gt;############### # Vacances Ascension : 20 mai 30 0 20 5 0 cd /home/pi/MagicMirror/config/; rm -rf config.js; ln -s /home/pi/mm_config_automate/config_vac.js config.js; pm2 restart mm # Rentr&#233;e : 25 mai 30 0 25 5 * cd /home/pi/MagicMirror/config/; rm -rf config.js; ln -s /home/pi/mm_config_automate/config.js config.js; pm2 restart mm&lt;/textarea&gt;
&lt;p&gt;Voil&#224;. A vous de prendre en main ce projet en le copiant dans un d&#233;p&#244;t personnel priv&#233; et de le faire vivre.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le projet sur github&lt;/h2&gt;
&lt;p&gt;Comme indiqu&#233; en d&#233;but de cet article, les diff&#233;rents fichiers ont &#233;t&#233; d&#233;pos&#233; sur github. Ils ont pour but de vous aider &#224; mettre en place votre automatisation :&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/Ybbet/mm_config_automate&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/Ybbet/mm_config_automate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Attention de ne pas mettre le projet en public si vous l'utiliser sur VOTRE installation. Pr&#233;servez votre vie... priv&#233;e.&lt;/p&gt;
&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, configuration script&#233;e</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee</guid>
		<dc:date>2018-07-16T06:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>Lignes de commandes</dc:subject>
		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Toujours dans l'optique d'am&#233;liorer mon installation de MagicMirror&#178;, j'ai mis en place une mise en place automatique de mes modules. Prenez un caf&#233; ou th&#233; et voyons cela en d&#233;tail. &lt;br class='autobr' /&gt; Pour rappel, MagicMirror&#178; est install&#233; sur un Raspberry Pi 3 avec un Debian 9, Stretch. Cette installation permet donc pas mal de choses tr&#232;s sympathiques dont les crontab, la connection ssh et les scripts bash. &lt;br class='autobr' /&gt;
Pr&#233;ambule Pour des raisons de stabilit&#233;, je ne mets pas &#224; jour MagicMirror&#178; avec la derni&#232;re (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/Lignes-de-commandes" rel="tag"&gt;Lignes de commandes&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH100/arton156-f63be.jpg?1724428492' class='spip_logo spip_logo_right' width='150' height='100' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Toujours dans l'optique d'am&#233;liorer mon installation de MagicMirror&#178;, j'ai mis en place une mise en place automatique de mes modules. Prenez un caf&#233; ou th&#233; et voyons cela en d&#233;tail.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour rappel, MagicMirror&#178; est install&#233; sur un Raspberry Pi 3 avec un Debian 9, Stretch. Cette installation permet donc pas mal de choses tr&#232;s sympathiques dont les &lt;a href=&#034;https://fr.wikipedia.org/wiki/Cron#crontab&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;crontab&lt;/a&gt;, la connection &lt;a href=&#034;https://fr.wikipedia.org/wiki/Secure_Shell&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ssh&lt;/a&gt; et les scripts &lt;a href=&#034;https://en.wikipedia.org/wiki/Bash_(Unix_shell)&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bash&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Pr&#233;ambule&lt;/h2&gt;
&lt;p&gt;Pour des raisons de stabilit&#233;, je ne mets pas &#224; jour MagicMirror&#178; avec la derni&#232;re version en ligne. De m&#234;me, les modules tiers ne seront pas mis &#224; jour automatiquement. Je ne d&#233;sire pas casser mon installation avec des versions que je n'aurais pas test&#233; au pr&#233;alable. Ces derniers points seront donc mis &#224; jour manuellement pour avoir une meilleure maitrise de &#034;mon&#034; logiciel.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Versionner sa configuration&lt;/h2&gt;
&lt;p&gt;Comme vous commencez &#224; le savoir, MagicMirror&#178; a besoin d'un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/&lt;/code&gt; pour fonctionner correctement et surtout pour avoir votre personnalisation.&lt;br class='autobr' /&gt;
Au lieu de faire des copier-coller d'une machine &#224; une autre, j'ai mis en place un d&#233;p&#244;t (priv&#233;) sur mon compte gitlab.com. J'ai clon&#233; ce d&#233;p&#244;t sur mon Raspberry. Puis, j'ai cr&#233;&#233; un lien symbolique dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/config/&lt;/code&gt; vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/magicmirror_config/config.js&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;De m&#234;me, pour personnaliser la mise en page sur certains points, j'ai cr&#233;&#233; un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;custom.css&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/magicmirror_config/&lt;/code&gt;. Un lien symbolique dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/css/&lt;/code&gt; est &#233;galement pr&#233;sent.&lt;br class='autobr' /&gt;
Le concept de lien symbolique est mis en place sans difficult&#233;. Voyons maintenant les scripts bash.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Bash, une installation script&#233;e&lt;/h2&gt;
&lt;p&gt;Il n'y a rien de crypter, mais tout est script&#233;, rien de sorcier. :-)&lt;/p&gt;
&lt;p&gt;Ma philosophie dans tous mes d&#233;veloppements est d'automatiser (scripter) les actions r&#233;p&#233;titives. Ici vous &#234;tes dans un cas typique d'&#233;cole : le d&#233;ploiement de codes.&lt;/p&gt;
&lt;p&gt;Je teste sur ma machine locale (mon mac) certains modules tiers (voir des versions de modules que j'aurais fait &#233;voluer).&lt;br class='autobr' /&gt;
Dans mon r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/magicmirror_config/&lt;/code&gt;, j'ai cr&#233;&#233; un fichier bash &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;update_files_config.sh&lt;/code&gt;. &lt;br class='autobr' /&gt;
Le chemin vers mes r&#233;pertoires &lt;i&gt;MagicMirror&lt;/i&gt; et &lt;i&gt;magicmirror_config&lt;/i&gt; change selon la plateforme. Au lieu de changer le chemin vers ces r&#233;pertoires &#224; chaque fois, je vais cr&#233;er 2 variables dans mon profil bash :&lt;br class='autobr' /&gt;
Sur le Raspberry Pi, dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.bashrc&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;export MM_CFG_HOME=/home/pi/magicmirror_config/ export MM_HOME=/home/pi/MagicMirror/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sur mon Mac, dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.bash_profile&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;export MM_CFG_HOME=~/Sites/magicmirror_config/ export MM_HOME=~/Sites/MagicMirror/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce qui vous permettra d'appeler ces variables dans notre fichier bash sans sourciller :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;#!/usr/bin/env bash _MM_CFG_HOME=$MM_CFG_HOME _MM_HOME=$MM_HOME&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Un script classique affichera du texte de la couleur par d&#233;faut que vous aurez choisit dans votre Terminal. J'ai envie de rendre cela un peu plus lisible. Pour cela, je vais utiliser du texte &lt;a href=&#034;https://stackoverflow.com/a/20983251&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bold&lt;/a&gt; et de la &lt;a href=&#034;https://stackoverflow.com/a/5947802&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;couleur&lt;/a&gt;.&lt;br class='autobr' /&gt;
Voici ce que cela donne comme variable :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;txt_bold=$(tput bold) txt_normal=$(tput sgr0) txt_red='\033[0;31m' txt_green='\033[0;32m' txt_nc='\033[0m' # No Color&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Les param&#232;tres de personnalisation &#034;graphique&#034; sont en place. Cool. On les utilisera en temps voulu.&lt;/p&gt;
&lt;p&gt;M&#234;me si vous avez bien export&#233; votre variables d'environnement, il est pr&#233;f&#233;rable de &lt;strong&gt;mettre une petite s&#233;curit&#233;&lt;/strong&gt; (toujours la s&#233;curit&#233; !) :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='bash spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;if [ -z ${_MM_CFG_HOME} ]; then _MM_CFG_HOME=/home/pi/magicmirror_config/ fi if [ -z ${_MM_HOME} ]; then _MM_HOME=/home/pi/MagicMirror/ fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En gros, si votre variable d'environnement est &#034;vide&#034; pour X raisons, le script va leur donner une valeur par d&#233;faut.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Bash, liens symboliques, bis&lt;/h2&gt;
&lt;p&gt;Comme expliqu&#233; au d&#233;but de cet article, MagicMirror a besoin d'un fichier config.js. De ce fait, le script v&#233;rifie sa pr&#233;sence dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/config/&lt;/code&gt;. Et si il n'existe pas, il cr&#233;e un lien symbolique vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/magicmirror_config/config.js&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;if [ ! -f ${_MM_HOME}config/config.js ]; then ln -s ${_MM_CFG_HOME}config.js ${_MM_HOME}config/config.js fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans mon &lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee' class=&#034;spip_in&#034;&gt;pr&#233;c&#233;dent article&lt;/a&gt;, j'ai indiqu&#233; que j'utilisais le module MMM-AlarmClock avec des fichiers mp3 personnalis&#233;s. Pour que le module prenne en compte ces fichiers mp3, ils doivent &#234;tre pr&#233;sents dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/MMM-AlarmClock/sounds&lt;/code&gt;.&lt;br class='autobr' /&gt;
J'ai une carte SD de 16Go, ce qui assez confortable. Mais je ne veux pas surcharger inutilement la carte m&#233;moire. Pour se faire, les liens symboliques sont &#233;galement une tr&#232;s bonne solution.&lt;/p&gt;
&lt;p&gt;Dans mon d&#233;p&#244;t &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/magicmirror_config/&lt;/code&gt;, j'ai cr&#233;&#233; un r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sounds/&lt;/code&gt; qui contiendra tous mes fichiers mp3.&lt;/p&gt;
&lt;p&gt;Pour mon besoin de fichiers mp3, voici le code pr&#233;sent :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;if [ -d ${_MM_HOME}modules/MMM-AlarmClock ]; then #ls ${_MM_CFG_HOME}sounds/ | grep &#034;.mp3&#034; list_mp3=$(ls ${_MM_CFG_HOME}sounds/ | grep &#034;.mp3&#034;) for mp3_file in $list_mp3; do if [[ -f ${_MM_HOME}modules/MMM-AlarmClock/sounds/$mp3_file ]]; then echo &#034;Le fichier ${txt_bold}$mp3_file${txt_normal} existe dans ${_MM_HOME}modules/MMM-AlarmClock/sounds&#034;; else echo &#034;Le fichier ${txt_bold}$mp3_file${txt_normal} n'existe pas dans ${_MM_HOME}modules/MMM-AlarmClock/sounds. On cr&#233;e le lien symbolique.&#034;; ln -s ${_MM_CFG_HOME}sounds/$mp3_file ${_MM_HOME}modules/MMM-AlarmClock/sounds/$mp3_file; fi done fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Bash, des fonctions : importer un module&lt;/h2&gt;
&lt;p&gt;Le but principal du script &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;update_files_config.sh&lt;/code&gt; est d'importer un module qui est n&#233;cessaire au fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt; pour notre MagicMirror. J'utilise plus d'un module tiers. Certainement, cela sera &#233;galement votre cas.&lt;br class='autobr' /&gt;
Au lieu de r&#233;p&#233;ter X fois le m&#234;me code, vous allez cr&#233;er &lt;a href=&#034;https://fr.wikibooks.org/wiki/Programmation_Bash/Fonctions&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;une fonction&lt;/a&gt;. Appelons la &lt;i&gt;&#034;import_module&#034;&lt;/i&gt; (module au singulier).&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;import_module () { if [[ ! -z ${1} ]]; then cd ${_MM_HOME}modules/ repository=$(basename -s .git &#034;$1&#034;) echo &#034;&#034; printf &#034;${txt_green}${txt_bold}${repository}${txt_normal}${txt_nc}\n&#034; if [[ -d ${_MM_HOME}modules/${repository} ]]; then echo &#034;** ${_MM_HOME}modules/${repository} existe d&#233;j&#224;&#034; else echo &#034;** R&#233;cup&#233;ration du r&#233;pertoire ${1}&#034; git clone ${1} fi cd ${_MM_HOME}modules/${repository} if [[ -f $(ls | grep 'package.json') &amp;&amp; ! -d $(ls | grep 'node_modules') ]]; then echo &#034;** Installation des modules npm de ${repository}&#034; npm install npm audit fix else if [[ ! -f $(ls | grep 'package.json') ]]; then echo &#034;** Il n'y a pas de modules npm &#224; installer pour ${txt_bold}${repository}${txt_normal}&#034; else echo &#034;** Les modules npm de ${txt_bold}${repository}${txt_normal} sont d&#233;j&#224; install&#233;s&#034; fi fi cd ${_MM_HOME}modules/ else printf &#034;\n${txt_red}Vous avez oubli&#233; d'indiquer un d&#233;p&#244;t git en param&#232;tre${txt_nc}\n&#034; fi }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette fonction permet d'importer un module &#224; partir de son url git. Pour cela, vous devez indiquer l'url du git en param&#232;tre de cette fa&#231;on :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;import_module https://github.com/Ybbet/MMM-AlarmClock.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si vous ne donnez aucune url, vous aurez un message vous indiquant que l'information est manquante.&lt;/p&gt;
&lt;p&gt;Cool&#8230; Mais ce n'est pas tout. Un module a souvent besoin d'une installation de modules pour son bon fonctionnement. Pour le savoir, autrement que de lire la documentation, le script v&#233;rifie la pr&#233;sence d'un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;package.json&lt;/code&gt; mais &#233;galement l'absence du r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;node_modules&lt;/code&gt;. En effet, l'absence de ce r&#233;pertoire indique que l'installation n'a pas encore &#233;t&#233; r&#233;alis&#233;e. Le script lancera un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;npm install &amp;&amp; npm audit fix&lt;/code&gt; dans son r&#233;pertoire local.&lt;/p&gt;
&lt;p&gt;Pas mal non ? :-)&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Bash, des fonctions : effacer les modules inutiles&lt;/h2&gt;
&lt;p&gt;Vous aurez test&#233; des modules, rejet&#233; des modules et garder des modules. Pour que le script reconnaisse votre choix, il y a une solution tr&#232;s tr&#232;s simple : le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt;&lt;br class='autobr' /&gt;
En effet, quand vous utilisez un module, vous indiquez dans votre fichier la mention &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;module: &#034;MMM-AlarmClock&#034;&lt;/code&gt; (remplacez &#034;MMM-AlarmClock&#034; par votre nom de module). Ce nom de module correspond au nom du d&#233;p&#244;t git d&#233;sir&#233; et donc du r&#233;pertoire t&#233;l&#233;charg&#233; (merci &lt;i&gt;import_module&lt;/i&gt;).&lt;br class='autobr' /&gt;
Vous l'appellerez &#034;delete_modules&#034; (modules avec un &#034;s&#034; cette fois-ci car on s'occupe de tous les modules sans distinction)&lt;/p&gt;
&lt;p&gt;Donc, il suffit de v&#233;rifier la pr&#233;sence de cette chaine de caract&#232;res dans le fichier :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;delete_modules () { # Stocker l'ensemble des r&#233;pertoires pr&#233;sents /home/pi/MagicMirror/modules/ modules_list=$(ls ${_MM_HOME}/modules/) # Ne pas prendre en compte certains fichiers et r&#233;pertoires propres &#224; MagicMirror modules_list=${modules_list[@]//default/} modules_list=${modules_list[@]//README.md/} modules_list=${modules_list[@]//node_modules/} # lan&#231;ons une boucle pour s'occuper de chaque module. for module in ${modules_list[@]} do # Si le module n'est pas utilis&#233; dans config.js if grep -Fq &#034;module: \&#034;${module}\&#034;&#034; ${_MM_HOME}/config/config.js then echo &#034;${module} existe dans config.js&#034; else echo &#034;${module} n'existe pas dans config.js&#034; rm -rf ${_MM_HOME}/modules/${module} fi done }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Bash, oui mais dans l'ordre&lt;/h2&gt;
&lt;p&gt;Si vous n'avez pas &#233;t&#233; trop perdu, vous vous rendez compte que je parle de liens symboliques avant m&#234;me d'avoir install&#233; les modules. :-D&lt;br class='autobr' /&gt;
Ben, ouais, c'&#233;tait un petit pi&#232;ge. Ce n'est pas logique de lancer la cr&#233;ation de liens symboliques (cf. MMM-AlarmClock/sounds) dans un r&#233;pertoire si son installation n'a pas &#233;t&#233; faite d'abord. Cet ordre est surtout important lorsque vous lancez pour la premi&#232;re fois le script et/ou si vous revenez &#224; plusieurs reprises sur le choix d'un module. J'en ai fait l'exp&#233;rience avec MMM-AlarmClock. J'ai test&#233; MMM-TTS (pour avoir directement le texte prononc&#233; par la machine sans passer par un fichier mp3, sauf que le fran&#231;ais n'est pas pris en compte), cr&#233;&#233; un module MMM-Google-tts (pas tout &#224; fait convaincant sur le Raspberry Pi). Donc, voici l'ordre dans lequel le code doit &#234;tre plac&#233; (et donc ex&#233;cut&#233;) :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Bash, une installation script&#233;e ;&lt;/li&gt;&lt;li&gt; Bash, liens symboliques, bis (la partie config.js uniquement) ;&lt;/li&gt;&lt;li&gt; Bash, des fonctions : importer un module ;&lt;/li&gt;&lt;li&gt; Bash, des fonctions : effacer les modules inutiles ;&lt;/li&gt;&lt;li&gt; Bash, liens symboliques, bis (la partie sounds ici).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En gros, tous vos param&#232;tres d'environnement du fichier bash doivent se trouver en d&#233;but de script. Puis :&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; lancer les petites s&#233;curit&#233;s sur la pr&#233;sence de fichier et r&#233;pertoire propres &#224; MagicMirror ;&lt;/li&gt;&lt;li&gt; cr&#233;er les fonctions ;&lt;/li&gt;&lt;li&gt; lancer l'importation des modules, un module par ligne pour faciliter la relecture ;&lt;/li&gt;&lt;li&gt; lancer la suppression des modules inutiles (cf. delete_modules)&lt;/li&gt;&lt;li&gt; lancer vos actions dans les r&#233;pertoires (liens symboliques par exemple) &#224; la fin du fichier car l&#224;, vous serez s&#251;r de la pr&#233;sence de ces modules dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/pi/MagicMirror/modules/&lt;/code&gt;.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Voil&#224; ! C'est tout pour aujourd'hui. Je laisse un peu pour un nouvel article : &lt;strong&gt;la 2&#232;me partie&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, configuration script&#233;e&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;&lt;strong&gt;Visuel :&lt;/strong&gt; Photo by Annie Spratt on Unsplash&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, ma configuration personnalis&#233;e</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee</guid>
		<dc:date>2018-07-09T06:30:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Cela fait un mois que je vous parle de MagicMirror&#178; officiellement. Mais &#231;a fait 2 mois que je teste l'installation logicielle. Je vais vous pr&#233;senter les quelques modules que j'ai mis en place. &lt;br class='autobr' /&gt; Pour rappel, MagicMirror&#178; est bas&#233; sur NodeJS et les modules npm. Du full JavaScript ! :-D Je n'en ai pas fait depuis ma formation de d&#233;veloppeur multim&#233;dia. Un retour aux sources. &lt;br class='autobr' /&gt;
Mon installation est pour toute la famille, de ce fait, j'ai choisi des modules qui satisferont l'ensemble des (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH150/arton155-a448d.jpg?1725818001' class='spip_logo spip_logo_right' width='150' height='150' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cela fait un mois que je vous parle de MagicMirror&#178; officiellement. Mais &#231;a fait 2 mois que je teste l'installation logicielle. Je vais vous pr&#233;senter les quelques modules que j'ai mis en place.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour rappel, MagicMirror&#178; est bas&#233; sur NodeJS et les modules npm. Du full JavaScript ! :-D Je n'en ai pas fait depuis ma formation de d&#233;veloppeur multim&#233;dia. Un retour aux sources.&lt;/p&gt;
&lt;p&gt;Mon installation est pour toute la famille, de ce fait, j'ai choisi des modules qui satisferont l'ensemble des membres de la tribu. Je n'oublie pas de me faire plaisir &#233;galement. En plus des modules par d&#233;faut de MagicMirror&#178;, voici la liste des modules que j'ai install&#233; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; MMM-Freebox-Monitor&lt;/li&gt;&lt;li&gt; MMM-Lunartic&lt;/li&gt;&lt;li&gt; MMM-pages&lt;/li&gt;&lt;li&gt; MMM-page-indicator&lt;/li&gt;&lt;li&gt; worldclock&lt;/li&gt;&lt;li&gt; MMM-AlarmClock&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a id=&#034;mmm-freebox-monitor&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;MMM-Freebox-Monitor&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/tataille/MMM-FreeBox-Monitor&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/tataille/MMM-FreeBox-Monitor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quand on a une Freebox Revolution, la pr&#233;sence de ce module permet d'avoir des informations syst&#232;mes telles que :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Les appels manqu&#233;s ;&lt;/li&gt;&lt;li&gt; Les t&#233;l&#233;chargements en cours sur la Freebox.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il est possible de configurer le nombre d'&#233;l&#233;ments &#224; afficher sur l'&#233;cran.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;MMM-Lunartic&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;MMM-Lunartic&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/mykle1/MMM-Lunartic&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/mykle1/MMM-Lunartic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce module permet d'afficher les phases de Lune. &#199;a lance parfois des petites conversations avec mes enfants. J'aime.&lt;br class='autobr' /&gt;
Les configurations possibles :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;animation&lt;/strong&gt; : Une animation de la Lune ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;current&lt;/strong&gt; : phase de la Lune en cours.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;DayNight&lt;/strong&gt; : affiche une carte du monde avec les zones o&#249; il fait nuit et les zones o&#249; il fait jour ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;static&lt;/strong&gt; ou &lt;strong&gt;vide&lt;/strong&gt; : affiche une image fixe des phases de Lune.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a id=&#034;MMM-pages&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;MMM-pages&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/edward-shen/MMM-pages&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/edward-shen/MMM-pages&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce module permet d'avoir plusieurs pages sur le MagicMirror&#178; surtout quand on a beaucoup de modules ou que les modules affichent beaucoup d'informations. &lt;br class='autobr' /&gt;
Il est possible de mettre autant de pages qu'on veut. Voici un exemple de ma configuration :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ module: &#034;MMM-pages&#034;, config: { modules: [ [&#034;worldclock&#034;, &#034;weatherforecast&#034;, &#034;MMM-Lunartic&#034;, &#034;MMM-FreeBox-Monitor&#034;, &#034;compliments&#034;, &#034;MMM-SystemStats&#034;, &#034;MMM-AlarmClock&#034;], [&#034;calendar&#034;] ], excludes: [&#034;clock&#034;, &#034;currentweather&#034;, &#034;MMM-page-indicator&#034;, &#034;newsfeed&#034;], rotationTime: 12000 } },&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est possible d'exclure des modules du syst&#232;me de pagination pour qu'ils puissent &#234;tre affich&#233; en continu. Pratique pour les modules &#034;techniques&#034; tels que &lt;i&gt;MMM-page-indicator&lt;/i&gt;, &lt;i&gt;clock&lt;/i&gt; et &lt;i&gt;currentweather&lt;/i&gt;. Le nombre d'&#233;l&#233;ments dans le tableau &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[&#8230;]&lt;/code&gt; correspond au nombre de pages. Autrement dit, autant de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[&#8230;]&lt;/code&gt;, autant de pages.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;MMM-page-indicator&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;MMM-page-indicator&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/edward-shen/MMM-page-indicator&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/edward-shen/MMM-page-indicator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Avec MMM-pages, il est conseill&#233; d'avoir le module MMM-page-indicator. Il permet&#8230; d'indiquer la page en cours. Ce n'est pas automatique. Si vous indiquez 3 pages dans MMM-pages, alors il vous faudra mettre &#034;3&#034; comme indicateur de pages.&lt;/del&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;a href=&#034;#forum449&#034; class=&#034;spip_ancre&#034;&gt;Correction apport&#233;e&lt;/a&gt; gr&#226;ce &#224; l'auteur du module :&lt;/i&gt;&lt;br class='autobr' /&gt;
Avec MMM-pages, il est conseill&#233; d'avoir le module MMM-page-indicator. Il permet&#8230; d'indiquer la page en cours. Il est &lt;strong&gt;automatique&lt;/strong&gt;. Si vous indiquez 3 pages dans MMM-pages, celui-ci enverra une notification de &#034;3 pages&#034; &#224; MMM-page-indicator. Il n'est donc pas n&#233;cessaire d'indiquer le nombre de pages dans votre configuration.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ module: &#034;MMM-page-indicator&#034;, position: &#034;bottom_bar&#034;, },&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a id=&#034;worldclock&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;worldclock&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/eouia/worldclock&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/eouia/worldclock&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce module permet d'afficher les heures &#224; travers le monde. Vous savez que je suis r&#233;unionnais. Ma femme est guadeloup&#233;enne et on vit en r&#233;gion parisienne. Donc, au moins 3 horaires diff&#233;rents &#224; ne pas oublier. Outre une petite installation artistique d&#233;j&#224; en place dans notre salon (Merci Aude C. pour ton imprimante d&#233;coupeuse de papier), j'avais envie de mettre les heures de l'&#206;le de la R&#233;union et de la Guadeloupe sur le MagicMirror&#178;.&lt;/p&gt;
&lt;p&gt;Il faut indiquer le timezone associ&#233; &#224; la r&#233;gion que l'on d&#233;sire. Il faut faire une petite recherche sur cette page : &lt;a href=&#034;https://github.com/moment/moment-timezone/blob/develop/data/packed/latest.json&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;https://github.com/moment/moment-ti...&lt;/a&gt;&lt;br class='autobr' /&gt;
Pour la R&#233;union, on a &lt;i&gt;&#034;Indian/Reunion&#034;&lt;/i&gt; et la Guadeloupe, &lt;i&gt;&#034;America/Guadeloupe&#034;&lt;/i&gt;. Il est possible d'afficher un drapeau du pays si vous d&#233;sirez. Ce qui me donne :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ module: &#034;worldclock&#034;, position: &#034;top_left&#034;, // This can be any of the regions, best results in top_left or top_right regions config: { // See 'Configuration options' for more information. timeFormat: &#034;HH:mm&#034;, //defined in moment.js format() style: &#034;right&#034;, //predefined 4 styles; 'top', 'left','right','bottom' timeClass: &#034;normal large thin&#034;, captionClass: &#034;block-caption small bright light align-right&#034;, zoneElement: &#034;div&#034;, zoneClass: &#034;zone&#034;, gapElement: &#034;div&#034;, gapClass: &#034;dimmed&#034;, clocks: [ { title: &#034;R&#233;union&#034;, // Too long title could cause ugly text align. timezone: &#034;Indian/Reunion&#034;, //When omitted, Localtime will be displayed. It might be not your purporse, I bet. //flag: 're' }, { title: &#034;Guadeloupe&#034;, // Too long title could cause ugly text align. timezone: &#034;America/Guadeloupe&#034;, //When omitted, Localtime will be displayed. It might be not your purporse, I bet. //flag: 'gp' }, ] } },&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a id=&#034;MMM-AlarmClock&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;MMM-AlarmClock&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Source :&lt;/strong&gt; &lt;a href=&#034;https://github.com/fewieden/MMM-AlarmClock/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/fewieden/MMM-AlarmClock/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La partie la plus int&#233;ressante. :-)&lt;br class='autobr' /&gt;
Ce module permet de programmer des alarmes tout au long de la semaine et notamment de lancer un mp3 avec un message &#224; l'&#233;cran. Par d&#233;faut, on a 2 fichiers mp3 :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; alarm.mp3&lt;/li&gt;&lt;li&gt; blackforest.mp3&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;C'est bien mignon&#8230; Mais j'avais envie de quelque chose de plus &#034;ludique&#034; ou &#034;interactif&#034;. Google Translate permet de traduire du texte : &lt;a href=&#034;http://translate.google.fr/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://translate.google.fr/&lt;/a&gt; &lt;br class='autobr' /&gt;
Et ce n'est pas tout. Il est possible de faire lire un texte par une url : &lt;a href=&#034;http://translate.google.com/translate_tts?tl=fr&amp;client=tw-ob&amp;q=Sympa comme outil, non ?&#034; class=&#034;spip_url spip_out&#034; rel=&#034;external&#034;&gt;http://translate.google.com/transla...&lt;/a&gt;. Il est possible avec le module MMM-AlarmClock d'indiquer une url vers le fichier mp3. Malheureusement, Google renvoie une vid&#233;o. Ce qui ne fonctionnera pas ici.&lt;br class='autobr' /&gt;
La solution est donc de convertir cette &#034;traduction&#034; en mp3 pour l'avoir en local. Pour cela, il existe un site sympa :&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://soundoftext.com/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://soundoftext.com/&lt;/a&gt;&lt;br class='autobr' /&gt;
Il suffit de taper son, choisir la voix (la langue si vous pr&#233;f&#233;rez) et de cliquer sur le bouton. Et enfin d'enregistrer le fichier g&#233;n&#233;r&#233; sur notre machine.&lt;/p&gt;
&lt;p&gt;Avec la derni&#232;re version du plugin MMM-AlarmClock, il est maintenant possible d'indiquer une dur&#233;e pour chaque alarme. Soit le temps d'affichage (et d'ex&#233;cution de fichier audio). &#199;a&#8230; C'est &lt;a href=&#034;https://github.com/fewieden/MMM-AlarmClock/commit/fbf5fb017e4b1581094761b080d40f547bf24cce&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ma contribution perso&lt;/a&gt; au plugin.&lt;/p&gt;
&lt;p&gt;Je vous laisse d&#233;couvrir la documentation dudit module pour plus de d&#233;tails : &lt;a href=&#034;https://github.com/fewieden/MMM-AlarmClock/tree/develop&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/fewieden/MMM-AlarmClock/tree/develop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;par-defaut&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les modules par d&#233;faut&lt;/h2&gt;
&lt;p&gt;En autres de ces modules sp&#233;cifiques, j'utilise les modules fournis par MagicMirror&#178; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; weatherforecast ;&lt;/li&gt;&lt;li&gt; calendar ;&lt;/li&gt;&lt;li&gt; clock ;&lt;/li&gt;&lt;li&gt; currentweather ;&lt;/li&gt;&lt;li&gt; newsfeed.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pour le &lt;strong&gt;calendrier&lt;/strong&gt;, j'ai renseign&#233; l'url &lt;i&gt;ics&lt;/i&gt; de mes calendriers Google. Comme je l'ai dit dans un pr&#233;c&#233;dent article, j'ai un calendrier par membre de la tribu. Ce qui est super pratique. J'ai &#233;galement ajout&#233; un calendrier pour indiquer la personne (roulement entre mes deux fils) qui met la table. Mais &#233;galement :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le calendrier des vacances ;&lt;/li&gt;&lt;li&gt; Les jours f&#233;ri&#233;s ;&lt;/li&gt;&lt;li&gt; Les anniversaires.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pour plus de lisibilit&#233; et de compr&#233;hension par tous, j'ai regroup&#233; les diff&#233;rents calendriers par 3 &#034;groupes&#034; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; La table (1 &#233;v&#233;nement affich&#233;) ;&lt;/li&gt;&lt;li&gt; Agendas (10 &#233;v&#233;nements affich&#233;s) ;&lt;/li&gt;&lt;li&gt; Anniversaires (5 &#233;v&#233;nements affich&#233;s).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Je vous laisse deviner qui va dans quoi. :-)&lt;/p&gt;
&lt;p&gt;Pour les newsfeeds, on affiche le flux RSS des diff&#233;rents principaux journaux nationaux. Rien de bien sorcier ici.&lt;/p&gt;
&lt;p&gt;Le reste des modules est classique. Mais si vous avez des questions, vous pouvez laisser un commentaire ci-dessous.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;futurs-modules&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Futurs modules&lt;/h2&gt;
&lt;p&gt;A la rentr&#233;e prochaine, notre programme familial va changer avec la rentr&#233;e de notre fils ain&#233; au coll&#232;ge. Et sans oublier que j'aurais certainement une activit&#233; suppl&#233;mentaire la semaine. De ce fait, je pense d&#233;j&#224; &#224; faire &#233;voluer ma configuration en rajoutant des modules.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;MMM-ModuleScheduler :&lt;/strong&gt; &lt;a href=&#034;https://github.com/ianperrin/MMM-ModuleScheduler&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/ianperrin/MMM-ModuleScheduler&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;MMM-WeeklySchedule :&lt;/strong&gt; &lt;a href=&#034;https://github.com/pinsdorf/MMM-WeeklySchedule&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/pinsdorf/MMM-WeeklySchedule&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;MMM-LocalTransport :&lt;/strong&gt; &lt;a href=&#034;https://github.com/CFenner/MMM-LocalTransport&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/CFenner/MMM-LocalTransport&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;MMM-NetworkScanner :&lt;/strong&gt; &lt;a href=&#034;https://github.com/ianperrin/MMM-NetworkScanner&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/ianperrin/MMM-NetworkScanner&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;MMM-Remote-Control :&lt;/strong&gt; &lt;a href=&#034;https://github.com/Jopyth/MMM-Remote-Control&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/Jopyth/MMM-Remote-Control&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cette liste est un m&#233;mo pour moi, vais-je dire. Mais ne vous inqui&#233;tez pas, je ferais un article quand je les mettrai en place.&lt;/p&gt;
&lt;p&gt;Tout cela est bien beau&#8230; Mais je n'ai aucune &#034;sauvegarde&#034; en cas de crash de mon Raspberry. Et m&#234;me&#8230; Pour les alarmes, elles ne sont pas identiques quand on est en vacances&#8230; Je vous parlerai la semaine prochaine dans un article de la solution que j'ai mis en place. Teasing quand tu nous tiens !&lt;/p&gt;
&lt;p&gt;En attendant, si vous avez des suggestions, je suis enti&#232;rement preneur ! Alors, laissez-moi un petit message en bas de cet article. A tr&#232;s bient&#244;t.&lt;/p&gt;
&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Visuel : Photo by Alex Lopez on Unsplash&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau</guid>
		<dc:date>2018-06-24T00:43:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Voici mon dernier article sur l'installation (physique) de mon MagicMirror&#178;. L'article pr&#233;c&#233;dent vous a montr&#233; la construction du meuble en bois et son assemblage. Il me manque plus qu'&#224; vous montrer comment j'ai install&#233; l'&#233;cran, le Raspberry Pi et le c&#226;blage dans ce meuble. &lt;br class='autobr' /&gt; Mat&#233;riel Un meuble en bois assembl&#233; Un Raspberry Pi ; Un boitier avec ventilateur ; Une alimentation pour pour le Raspberry ; Un &#233;cran hdmi ; Un c&#226;ble HDMI ; Une multiprise Quelques vis ; &lt;br class='autobr' /&gt;
Vue g&#233;n&#233;rale Sur ces 2 (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH113/arton154-21cd2.jpg?1725818001' class='spip_logo spip_logo_right' width='150' height='113' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Voici mon dernier article sur l'installation (physique) de mon MagicMirror&#178;. &lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant' class=&#034;spip_in&#034;&gt;L'article pr&#233;c&#233;dent&lt;/a&gt; vous a montr&#233; la construction du meuble en bois et son assemblage. Il me manque plus qu'&#224; vous montrer comment j'ai install&#233; l'&#233;cran, le Raspberry Pi et le c&#226;blage dans ce meuble.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Mat&#233;riel&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant' class=&#034;spip_in&#034;&gt;Un meuble en bois assembl&#233;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Un Raspberry Pi ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.amazon.fr/gp/product/B06ZZJ2MWV&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Un boitier avec ventilateur&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; Une alimentation pour pour le Raspberry ;&lt;/li&gt;&lt;li&gt; Un &#233;cran hdmi ;&lt;/li&gt;&lt;li&gt; Un c&#226;ble HDMI ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.amazon.fr/gp/product/B01N358P7H&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Une multiprise&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Quelques vis ;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Vue g&#233;n&#233;rale&lt;/h2&gt;&lt;div class='spip_document_251 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;52&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/meuble_volume_monte_002.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH378/meuble_volume_monte_002-8b543.png?1725818001' width='500' height='378' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Maquette du logement de l'&#233;cran et du Raspberry Pi
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_253 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;25&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/magicmirror_installation_elec-r90.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH667/magicmirror_installation_elec-r90-75ddc.jpg?1725818001' width='500' height='667' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Installation &#233;lectrique
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
Sur ces 2 images, vous pouvez voir mon installation dans l'emplacement pr&#233;vu &#224; cet effet. Sur mon meuble, j'avais pris exactement la dimension (ext&#233;rieure) de mon &#233;cran d&#233;nud&#233; pour cet emplacement.
&lt;p&gt;Pour rappel, j'ai d&#233;cal&#233; l'ensemble de l'&#233;cran sur la droite (dans le sens de l'image ci-dessus). Cela me permet de mettre simplement un ensemble de cablage si besoin dans l'espace d&#233;gag&#233;.&lt;/p&gt;
&lt;p&gt;Mon &#233;cran s'est ins&#233;r&#233; en &#034;for&#231;ant&#034; l&#233;g&#232;rement sur la structure. Rien de m&#233;chant, juste assez serr&#233; pour maintenir mon &#233;cran sans aucun autre artifice. Je conseille toutefois de mettre 2 cales derri&#232;re l'&#233;cran, fix&#233;s sur les deux planches maintenant l'&#233;cran pour plus de s&#233;curit&#233;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;C&#226;blage &#233;lectrique&lt;/h2&gt;&lt;div class='spip_document_252 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;25&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/cablage_raspberry_ecran.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH667/cablage_raspberry_ecran-2651e.jpg?1725818001' width='500' height='667' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Cablage et Raspberry Pi
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Sur cette image, vous pouvez constater que le c&#226;blage est extr&#234;mement simple :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le c&#226;ble d'alimentation de l'&#233;cran ;&lt;/li&gt;&lt;li&gt; Le c&#226;ble HDMI reliant le Raspberry Pi &#224; l'&#233;cran ;&lt;/li&gt;&lt;li&gt; Le Raspberry Pi &lt;i&gt;(3 mod&#232;le B)&lt;/i&gt; avec son boitier et son propre c&#226;ble d'alimentation.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Tous ces c&#226;bles passent par 2 trous (des demi-cercles en fait) que j'ai r&#233;alis&#233; gr&#226;ce &#224; une cloche bois lors du montage. Ainsi pas de soucis pour que le miroir &#233;pouse le mur parfaitement.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Une multiprise pour les commander tous !&lt;/h2&gt;&lt;div class='spip_document_255 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;23&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/multiprises-r90.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH667/multiprises-r90-fa261.jpg?1725818002' width='500' height='667' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Multiprise &#233;lectrique
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;J'ai fait l'acquisition d'une multiprise (3 prises) sur &lt;a href=&#034;https://www.amazon.fr/gp/product/B01N358P7H&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Amazon.fr&lt;/a&gt; qui a l'avantage de pouvoir &#234;tre fix&#233;e &#224; une surface avec une simple vis.&lt;br class='autobr' /&gt;
Je l'ai install&#233; sur le c&#244;t&#233; gauche &#224; l'int&#233;rieur de la structure. J'ai la possibilit&#233; d'installer un autre mat&#233;riel si besoin &#224; l'avenir gr&#226;ce &#224; la 3&#232;me prise vide. :-)&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le contr&#244;leur de l'&#233;cran&lt;/h2&gt;&lt;div class='spip_document_254 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;28&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/controle_ecran.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH667/controle_ecran-9ee3d.jpg?1725818002' width='500' height='667' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Controleur de l'&#233;cran HDMI
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Comme tous les &#233;crans de t&#233;l&#233;vision, on a un contr&#244;le qui se fait &#224; l'aide d'une t&#233;l&#233;commande. J'ai gard&#233; ce petit circuit &#233;lectronique, d&#233;j&#224; pour pouvoir allumer l'&#233;cran ! Il ne faut pas oublier ce d&#233;tail. Mais le fait de garder ce contr&#244;leur est de pouvoir utiliser la t&#233;l&#233;commande pour changer de sources (pour retrouver mon Raspberry Pi sur HDMI) et surtout augmenter ou diminuer le volume des hauts parleurs !&lt;/p&gt;
&lt;p&gt;La longueur des fils me permet de l'installer sous la planche de support. Je me suis servi de 2 petites vis pour le maintenir en place.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Les hauts parleurs&lt;/h2&gt;&lt;div class='spip_document_256 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;26&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/speakers.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH375/speakers-d11f3.jpg?1725818002' width='500' height='375' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Haut-parleurs de l'&#233;cran
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;J'ai gard&#233; les hauts-parleurs d'origine de l'&#233;cran. Actuellement, j'ai install&#233; ces deux hauts-parleurs dans la partie basse en faisant attention &#224; la longueur des c&#226;bles. 2 vis pour chaque haut parleur permettent leur maintient. Ils sont fix&#233;s &#034;face&#034; au panneau. Je ne rencontre pas de probl&#232;me de son particulier. J'utilise surtout pour du text2speech (Merci Google translate !). La qualit&#233; est correcte.&lt;br class='autobr' /&gt;
Je verrai peut-&#234;tre dans l'avenir pour la r&#233;alisation d'un meilleur support pour ces haut-parleurs. Et ainsi b&#233;n&#233;ficier d'une caisse de r&#233;sonance.&lt;/p&gt;
&lt;p&gt;J'ai configur&#233; mon Raspberry Pi pour que le son sorte de la prise HDMI au lieu de la prise jack.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le boitier du Raspberry Pi&lt;/h2&gt;&lt;div class='spip_document_257 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;101&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/jpg/boitier_ventilateur_raspberrpi.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH500/boitier_ventilateur_raspberrpi-95a0f.jpg?1725818002' width='500' height='500' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Clearain 3 en 1 Kit pour Raspberry Pi 3 Model B+ Plus, cas boitier noir + ventilateur + dissipateur
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Comme vous avez pu le constater, j'ai install&#233; le Raspberry Pi dans un boitier. Rien ne nous emp&#234;cherait de le garder nu dans cette installation. Toutefois, j'ai constat&#233; une forte mont&#233;e de temp&#233;rature avec ma configuration logicielle. Le CPU est mont&#233;e &#224; 82,8&#176; !!&lt;/p&gt;
&lt;p&gt;En cherchant un peu sur internet, j'ai vu un &lt;a href=&#034;https://github.com/MichMich/MagicMirror/wiki/Configuring-the-Raspberry-Pi#enable-the-open-gl-driver-to-decrease-electrons-cpu-usage&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;script&lt;/a&gt; permettant de limiter la consommation CPU d'Electron (un module nodejs de MagicMirror2).&lt;br class='autobr' /&gt;
Apr&#232;s son installation, j'ai constat&#233; une baisse de la temp&#233;rature. On passe &#224; 61,9&#176; ! Ce qui fait environ 20&#176; de gain en moyenne. Pas n&#233;gligeable.&lt;br class='autobr' /&gt;
Mais je n'&#233;tais pas satisfait. Mon ami google est arriv&#233; &#224; mon aide. J'ai vu quelques vid&#233;os sympa sur le refroidissement du Raspberry Pi dont &lt;a href=&#034;https://www.youtube.com/watch?v=RxBaEiQHzLU&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;un comparatif avec chiffres &#224; l'appui&lt;/a&gt;. A partir de l&#224;, en recherchant sur amazon.fr &#034;Raspberry Pi boitier ventilateur&#034;, j'ai pu trouver mon bonheur.&lt;/p&gt;
&lt;p&gt;Apr&#232;s l'avoir command&#233; et install&#233;, j'ai constat&#233; une baisse encore de 20&#176;. Donc, au final, je passe de 82,8&#176; &#224; 43,8&#176;. La recherche valait le coup ! Je pense que je pourrais aller plus loin avec le &lt;a href=&#034;https://www.amazon.fr/NF-A4X10-FLX-5V-Ventilateur-ventilateur-refroidisseur/dp/B00NEMGCIA&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#034;Noctua NF-A4X10-FLX&#034;&lt;/a&gt;. Le budget et surtout le temps ne sont pas au rendez-vous. On verra plus tard.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;L&#224; encore, l'installation est rapide et tr&#232;s simple. Le plus compliqu&#233; sera d'installer les logiciels (les modules, etc.) sur votre Raspberry Pi et MagicMirror2 pour r&#233;pondre &#224; vos attentes.&lt;br class='autobr' /&gt;
Je reviendrais bient&#244;t avec un nouvel article pour vous montrer ce que j'ai install&#233; sur mon MagicMirror2. En tout cas, amusez-vous bien avec votre MagicMirror2. Ma petite famille et surtout ma moiti&#233; ont adopt&#233; le MagicMirror2 dans notre vie quotidienne. Un r&#233;gal pour moi.&lt;/p&gt;
&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, un socle qui lui va comme un gant</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant</guid>
		<dc:date>2018-06-21T07:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Dans le cycle de mes articles sur le MagicMirror&#178;, je vais vous pr&#233;senter le socle en bois que j'ai r&#233;alis&#233; pour le recevoir. En effet, j'ai pu installer le mat&#233;riel informatique, mais tout cela doit &#234;tre int&#233;gr&#233; dans une solution physique pour le rendre sexy. &lt;br class='autobr' /&gt; Pr&#233;ambule Avant toutes choses, il est &#224; noter que ce que je vais vous pr&#233;senter ici est propre &#224; mes besoins et &#224; mon environnement (mon appartement, ma petite tribu, etc.). De ce fait, vous devrez adapter selon vos propres (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH75/arton152-ec904.jpg?1725818002' class='spip_logo spip_logo_right' width='150' height='75' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Dans le cycle de mes articles sur le MagicMirror&#178;, je vais vous pr&#233;senter le socle en bois que j'ai r&#233;alis&#233; pour le recevoir. En effet, j'ai pu installer le mat&#233;riel informatique, mais tout cela doit &#234;tre int&#233;gr&#233; dans une solution physique pour le rendre sexy.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Pr&#233;ambule&lt;/h2&gt;
&lt;p&gt;Avant toutes choses, il est &#224; noter que ce que je vais vous pr&#233;senter ici est propre &#224; mes besoins et &#224; mon environnement (mon appartement, ma petite tribu, etc.). De ce fait, vous devrez adapter selon vos propres contraintes et envies.&lt;br class='autobr' /&gt;
Si vous arrivez sur cette page, je pr&#233;sume que vous avez d&#233;j&#224; un Raspberry Pi et install&#233; le MagicMirror&#178; sur celui-ci.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Objectifs&lt;/h2&gt;
&lt;p&gt;L'attrait du MagicMirror&#178; est d'avoir un outil convivial et esth&#233;tique int&#233;gr&#233; &#224; un miroir. Le plus souvent, on utilise un &#233;cran de r&#233;cup&#233;ration, du bois et une vitre sans tain.&lt;br class='autobr' /&gt;
Dans ma petite tribu, nous sommes relativement grands. J'ai d&#233;cid&#233; de l&#224; la r&#233;alisation d'un grand miroir que j'installerai dans notre salon. Car ce lieu est notre lieu commun &#224; tous, o&#249; nous nous r&#233;unissons pour divers &#233;v&#233;nements (quotidiens ou pas).&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Mat&#233;riel&lt;/h2&gt;
&lt;p&gt;Pour r&#233;aliser ce socle, comme nous allons r&#233;aliser un meuble en bois, il faudra les &#233;l&#233;ments suivants &#224; minima :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Une scie sauteuse ;&lt;/li&gt;&lt;li&gt; Une &#233;querre ;&lt;/li&gt;&lt;li&gt; Des serre-joints ;&lt;/li&gt;&lt;li&gt; Un m&#232;tre ruban ;&lt;/li&gt;&lt;li&gt; Un marteau ;&lt;/li&gt;&lt;li&gt; Des clous ;&lt;/li&gt;&lt;li&gt; Une perceuse et ses for&#234;ts (bois et b&#233;ton) ;&lt;/li&gt;&lt;li&gt; Des pinceaux (pour le vernis) ;&lt;/li&gt;&lt;li&gt; Un vieil &#233;cran HDMI ;&lt;/li&gt;&lt;li&gt; Un c&#226;ble HDMI ;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ce mat&#233;riel est &#224; adapter selon vos comp&#233;tences en bricolage et/ou travail du bois.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Mat&#233;riaux&lt;/h2&gt;
&lt;p&gt;Comme dit plus haut, je vais faire mon socle en bois. De ce fait, je vais indiquer les besoins en planches et autres. J'ai achet&#233; tout &#231;a dans un magasin de bricolage : Castorama.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; 4 planches en sapin brut 25 x 100 x 2400 mm ;&lt;/li&gt;&lt;li&gt; Panneau medium (ou fibre) 3 x 600 x 1200 mm ;&lt;/li&gt;&lt;li&gt; Colle &#224; bois.&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034;&gt;Principes&lt;/h2&gt;
&lt;p&gt;J'ai r&#233;cup&#233;r&#233; notre vieille t&#233;l&#233; &#034;HD Ready&#034; qui a 10 ans. Apr&#232;s avoir enlev&#233; toute son armature &#034;plastique&#034;, j'ai pu prendre les dimensions exactes de l'&#233;cran nu :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Dimensions ext&#233;rieures : 76 x 45cm&lt;/li&gt;&lt;li&gt; Dimensions int&#233;rieures (la dalle LED) : 70 x 40 cm.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ces dimensions me donnent l'espace que je mettrai entre les deux planches int&#233;rieures qui maintiendront mon &#233;cran en place et la largeur minimale &#224; prendre en compte. Mon &#233;cran sera &#224; la verticale mais rien ne nous emp&#234;che de le faire &#224; l'horizontale.&lt;br class='autobr' /&gt;
Je vais installer un &lt;strong&gt;miroir de 2m de hauteur pour une largeur de 60cm&lt;/strong&gt;. Dans tout mon appartement, j'ai une plinthe (c&#226;blage &#233;lectrique) qui court au sol. De ce fait, je vais devoir faire une encoche au niveau des pieds de 4 x 12 cm.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Technique d'assemblage&lt;/h2&gt;
&lt;p&gt;Pour &lt;a href=&#034;http://www.bois.com/decorer/bricoleurs/assemblages-tenon-mortaise/autres-assemblages&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;l'assemblage&lt;/a&gt;, je n'aurai aucune vis sur ma structure sauf pour le syst&#232;me de fixation au mur du miroir. Tout se fera avec 2 techniques de menuiserie :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Queue droite (&#224; la diff&#233;rence des queues d'arondes) ;&lt;/li&gt;&lt;li&gt; Enfourchement en T (pour la structure tenant l'&#233;cran)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pour l'accroche au mur, j'utiliserai le &lt;a href=&#034;https://fr.wikipedia.org/wiki/Taquet_fran%C3%A7ais&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;taquet fran&#231;ais&lt;/a&gt; qui est tr&#232;s pris&#233; par les amoureux du travail du bois (&lt;a href=&#034;https://www.youtube.com/watch?v=WYuoiefb2uk&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#034;French Cleats&#034;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Bien entendu, vous pouvez adapter l'assemblage des planches &#224; votre niveau (le mien n'est pas tr&#232;s haut ! Je suis un bricoleur du dimanche) : des &#233;querres de fixation, des vis, etc.&lt;/p&gt;
&lt;p&gt;Ce petit projet est juste l'occasion pour moi de tester ces types d'assemblage apr&#232;s avoir visionn&#233;s des centaines (je n'exag&#232;re pas) de vid&#233;os de chaines Youtube de Woodworker (Exemples : &lt;a href=&#034;https://www.youtube.com/channel/UC4v2tQ8GqP0RbmAzhp4IFkQ&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;April Wilkerson&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UCXbYtx6rZlbTHg8zY9AFZ-g&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Third Coast Craftsman&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UC-hTi9atsD6wAl2s46LpAVw&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Crafted Workshop&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UC7FkqjV8SU5I8FCHXQSQe9Q&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ISHITANI FURNITURE&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UC6pdMJwtkbCNoQRwbaNt77A&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;HomeMadeModern&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UCIxAaCJ84uefATKmazDyIjw&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Modern Builds&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UCRix1GJvSBNDpEFY561eSzw/videos&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Laura Kampf&lt;/a&gt;, &lt;a href=&#034;https://www.youtube.com/channel/UC8oVoLGDj2spRfZfxgf54tw&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Ana White&lt;/a&gt; et j'en passe !). Mon rendu, j'en suis s&#251;r, ne sera pas aussi magnifique que les leur. Mais au moins, je me serai bien amus&#233; &#224; faire &#231;a.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le meuble&lt;/h2&gt;
&lt;p&gt;Voici une maquette (Merci Sketchup !) de l'ensemble des pi&#232;ces coup&#233;es aux dimensions :&lt;/p&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_231 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;33&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH340/pieces_volume_eclate-20b9a.png?1725818002' width='500' height='340' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Ensemble des pi&#232;ces
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_243 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;60&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/piece_meuble.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH253/piece_meuble-fc69f.png?1725818003' width='500' height='253' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des pi&#232;ces du meuble - MagicMirror&#178;
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;Comme nous pouvons le voir, j'ai besoin de 10 pi&#232;ces dans ma configuration. Les 2 grandes barres/planches sont les &#233;l&#233;ments principaux de ma structure, les c&#244;t&#233;s. Vous pouvez &lt;a href='https://preprod.teddypayet.com/IMG/png/piece_meuble.png' class=&#034;spip_in&#034; type='image/png'&gt;t&#233;l&#233;charger ici&lt;/a&gt;, le fichier contenant toutes les dimensions en cm du meuble.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le meuble : les c&#244;t&#233;s&lt;/h2&gt;&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_233 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;36&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_210cm_100mm_gau.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_210cm_100mm_gau-1dee0.png?1725818003' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;C&#244;t&#233; gauche - 210x10cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_232 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;35&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_210cm_100mm_droit.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_210cm_100mm_droit-e28b2.png?1725818003' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;C&#244;t&#233; droit - 210x10cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;Mon miroir faisant 2m de haut, je d&#233;coupe mes planches &#224; 210cm. Ce qui me laissera un pied &#034;nu&#034; au miroir de 10cm.&lt;/p&gt;
&lt;p&gt;J'ai pris comme r&#233;f&#233;rence l'&#233;paisseur de mes planches : 2,5cm. Mes techniques d'assemblage devront avoir pour profondeur minimale 2,5cm pour que les pi&#232;ces soient parfaitement imbriqu&#233;es.&lt;/p&gt;
&lt;p&gt;Sur le pied gauche, j'ai fait des encoches de 2 cm sur 2,5cm (l'&#233;paisseur des planches pour rappel). Cela sera le premier &#233;l&#233;ment pour mon assemblage &#224; queues droites.&lt;/p&gt;
&lt;div class='spip_document_244 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;44&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/cote_queue_droite.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH361/cote_queue_droite-d8bee.png?1725818003' width='500' height='361' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des queues droites - c&#244;t&#233; haut.
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Sur un c&#244;t&#233;, je dois faire 2 encoches, et l'autre 3 encoches. Je pourrais faire 2 encoches, mais 2 et 3 me semblait apporter plus de solidit&#233; &#224; l'ensemble.&lt;/p&gt;
&lt;p&gt;Apr&#232;s ces queues droites, je r&#233;alise les encoches pour l'assemblage en fourche. Cela fait, je r&#233;alise 76 cm plus loin les m&#234;mes encoches. Ce qui laissera 4cm de bois au milieu, soit une d&#233;coupe de 2,5 x 3 cm.&lt;/p&gt;
&lt;p&gt;La partie du haut &#233;tant faite, je passe au pied. La coupe se fait en d&#233;caler. Je vous laisse d&#233;couvrir la d&#233;coupe avec l'image ci-dessous.&lt;/p&gt;
&lt;div class='spip_document_249 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;30&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/cote_pied_queue_droite.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH271/cote_pied_queue_droite-33ea1.png?1725818003' width='500' height='271' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des pieds de c&#244;t&#233;
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Le meuble : le dessus et le dessous&lt;/h2&gt;&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_237 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;37&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_60cm_100mm_haut.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_60cm_100mm_haut-1f3f3.png?1725818003' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dessus meuble - 60x10cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_245 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;25&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/haut_queue_droite.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH126/haut_queue_droite-e283b.png?1725818003' width='500' height='126' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions du couvercle
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;La partie du dessus est l'image inverse des encoches r&#233;alis&#233;es sur les c&#244;t&#233;s du socle, pr&#233;c&#233;demment.&lt;/p&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_238 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;40&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_60cm_40mm_pied.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_60cm_40mm_pied-23ef9.png?1725818004' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dessous, partie 1 - 60x4cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_246 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;32&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pied_partie1_queue_droite.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH82/pied_partie1_queue_droite-5499c.png?1725818004' width='500' height='82' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des pieds, partie 1
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;Comme dit plus haut, le pied est d&#233;coup&#233; en &#034;d&#233;cal&#233;&#034; &#224; cause des plinthes qui courent le long de mon plancher.&lt;/p&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_239 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;40&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_60cm_60mm_pied.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_60cm_60mm_pied-e6089.png?1725818004' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dessous, partie 2 - 60x6cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_247 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;32&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pied_partie2_queue_droite.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH97/pied_partie2_queue_droite-69674.png?1725818004' width='500' height='97' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des pieds, partie 2
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;&lt;h2 class=&#034;spip&#034;&gt;Le meuble : le support d'&#233;cran&lt;/h2&gt;&lt;div class='spip_document_240 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;36&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_fourche.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_fourche-4cdb9.png?1725818004' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Fourche (x2) - 60x10cm
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_250 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;31&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/transverse_fourche.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH125/transverse_fourche-fea48.png?1725818004' width='500' height='125' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions de la fourche (x2)
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;&lt;h2 class=&#034;spip&#034;&gt;Le meuble : la fa&#231;ade&lt;/h2&gt;&lt;div class='spip_document_234 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;50&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_210cm_600mm_dev.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_210cm_600mm_dev-d3011.png?1725818004' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Devant - 210x60cm et 3mm d'&#233;paisseur
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;Sur la maquette, j'ai mod&#233;lis&#233; un seul tenant&#8230; Mais j'ai achet&#233; 2 planches de 3mm qui font 120x60cm parce que je n'avais que &#231;a dans mon magasin. C'&#233;tait &#233;galement plus simple &#224; transporter.&lt;br class='autobr' /&gt;
Mon miroir fait 2m de hauteur. De ce fait, j'ai install&#233; le premier panneau d'1m20 en haut pour avoir un seul tenant au niveau de l'&#233;cran. Puis, j'ai coup&#233; le second panneau &#224; 80cm pour avoir mes 2m.&lt;/p&gt;
&lt;p&gt;Pour le fixer, j'ai d&#233;pos&#233; la structure en bois au sol. J'ajuste bord &#224; bord et j'ai clou&#233; un premier c&#244;t&#233; &#224; niveau. Puis, avec l'aide de mon fils, j'ai clou&#233; le c&#244;t&#233; &#034;haut&#034; de 60cm en faisant bien attention l&#224; aussi d'&#234;tre bien bord &#224; bord. Ce processus permet d'avoir une structure perpendiculaire, &#233;querre &#224; l'appui :-)&lt;br class='autobr' /&gt;
Le second panneau est fix&#233; de la m&#234;me mani&#232;re.&lt;/p&gt;
&lt;p&gt;Les panneaux fix&#233;s, je retourne la structure et l'installe sur deux chaises, ou des &#233;tablis si vous en avez. Cela va me permettre de prendre les dimensions de la t&#233;l&#233; pour son installation.&lt;br class='autobr' /&gt;
La d&#233;coupe au centre correspond aux dimensions de la dalle int&#233;rieure. Elle est faite en d&#233;cal&#233; pour pouvoir mettre des c&#226;bles de l'autre c&#244;t&#233;, ainsi que le Raspberry. Pour les dimensions, je rajoute l'&#233;paisseur de ma planche (2,5cm) et la largeur du cadre (environ 3cm). C'est &#224; adapter selon votre &#233;cran.&lt;br class='autobr' /&gt;
Apr&#232;s avoir trac&#233; au crayon le gabarit de ma dalle, je perce des trous aux quatre coins et au milieu de chaque c&#244;t&#233;. Cela va me permettre d'ins&#233;rer la lame de ma scie sauteuse pour faire la d&#233;coupe. C'est un processus tr&#232;s simple et rapide.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le meuble : le miroir sains tain&lt;/h2&gt;
&lt;p&gt;Je n'ai pas mod&#233;lis&#233; ici le miroir. Toutefois, il faut savoir que les &#034;vrais&#034; miroirs sans tain sont relativement chers. De ce fait, je me suis tourn&#233; vers du verre acrylique de 3mm transparent. Je compl&#232;terai cela par un film sans tain tr&#232;s simple &#224; mettre en place.&lt;/p&gt;
&lt;p&gt;La r&#233;f&#233;rence du verre acrylique est ici : &lt;br class='autobr' /&gt;
&lt;a href=&#034;https://www.amazon.fr/dp/B01DJ95MBU/?coliid=I3HMVNDN3WAZ6K&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.amazon.fr/dp/B01DJ95MBU/?coliid=I3HMVNDN3WAZ6K&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour le film sans tain, je l'ai pris chez &lt;a href=&#034;https://www.castorama.fr/film-miroir-sans-tain-250-x-90-cm/3700613320065_CAFR.prd&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Castorama&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le montage&lt;/h2&gt;&lt;div class='spip_document_241 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;33&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/meuble_volume_eclate.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH455/meuble_volume_eclate-73da5.png?1725818004' width='500' height='455' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Principe de montage
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_242 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;30&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/meuble_volume_monte.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH548/meuble_volume_monte-f23ae.png?1725818004' width='500' height='548' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Meuble pr&#233;mont&#233;.
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;p&gt;Pour le montage, c'est vraiment tr&#232;s simple. Il suffit d'emboiter chaque pi&#232;ce les unes dans les autres comme montrer sur les images. Il est pr&#233;f&#233;rable de commencer par un c&#244;t&#233; avec toutes les planches &#224; la perpendiculaire. Puis d'ins&#233;rer le c&#244;t&#233; oppos&#233;. &lt;br class='autobr' /&gt;
Monter une premi&#232;re fois le meuble pour voir si tout est parfait. Puis retirer chaque &#233;l&#233;ment pour y mettre de la colle &#224; bois sur chaque partie qui sera en contact. Et les ins&#233;rer &#224; nouveau.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Astuce,&lt;/strong&gt; pour mettre tout cela perpendiculaire, on va s'aider de la fa&#231;ade. On cloue d'un c&#244;t&#233; apr&#232;s avoir bien ajust&#233; la fa&#231;ade sur la structure. Puis, on ajuste de l'autre c&#244;t&#233; pour que tout soit bien align&#233; et on cloue le tout.&lt;/p&gt;
&lt;p&gt;Le syst&#232;me de fixation a &#233;t&#233; install&#233; en haut du meuble. On a un espace de 19cm. C'est pour cette raison que la planche fix&#233;e &#224; la structure fait 10cm, et celle qui sera fix&#233;e au mur est de 9cm. Cette derni&#232;re sera biseaut&#233;e des deux c&#244;t&#233;s pour faciliter le montage.&lt;/p&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;
&lt;div class='spip_document_236 spip_document spip_documents spip_document_image spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;58&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_55cm_100mm_french.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_55cm_100mm_french-6d5c4.png?1725818004' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Taquet fran&#231;ais - meuble - 55x10cm, biseaut&#233;
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_235 spip_document spip_documents spip_document_image spip_documents_right spip_document_right spip_document_avec_legende' data-legende-len=&#034;54&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/pieces_volume_eclate_53cm_100mm_french.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH305/pieces_volume_eclate_53cm_100mm_french-46c67.png?1725818005' width='500' height='305' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Taquet fran&#231;ais - mur - 53x9cm, biseaut&#233;
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_credits '&gt;Teddy Payet
&lt;/div&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_248 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;33&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://preprod.teddypayet.com/IMG/png/support_french_cleats.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L500xH263/support_french_cleats-1c8a8.png?1725818005' width='500' height='263' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Dimensions des taquets fran&#231;ais
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;hr class=&#034;clearfix clear&#034; style=&#034;clear:both;&#034;/&gt;&lt;h2 class=&#034;spip&#034;&gt;Les petits pi&#232;ges &#224; &#233;viter&lt;/h2&gt;
&lt;p&gt;Ce meuble est mon premier vrai projet touchy en bois (j'ai d&#233;j&#224; fait un bac &#224; linge pour la salle de bains, un meuble pour une vasque pour la salle de bain, un meuble liseuse pour ma femme, etc.) avec ces techniques d'assemblage. De ce fait, je me suis fait avoir sur certains points.&lt;/p&gt;
&lt;h4&gt;Premi&#232;re chose&#8230; la profondeur !&lt;/h4&gt;
&lt;p&gt;&#199;a peut para&#238;tre b&#234;te dit comme cela, mais la largeur de vos planches, et m&#234;me de votre meuble d&#233;pendra de votre &#233;cran. Comme dit dans la partie &#034;Principe&#034; de cet article, mon &#233;cran fait 76x45cm. Donc, mon meuble doit faire &#224; minima 45cm de largeur (je mets l'&#233;cran &#224; la vertical pour le projet). Mais &#224; cela, je dois ajouter l'&#233;paisseur de mes planches : 2,5cm. Donc, le miroir fera 50cm si on fait un bord &#224; bord.&lt;/p&gt;
&lt;p&gt;Ok. &#199;a, on le trouve tr&#232;s facilement. Mais la dimension qu'il faudra trouver est &lt;strong&gt;la profondeur de la t&#233;l&#233; avec les c&#226;bles ! &lt;/strong&gt; Pour cela, apr&#232;s avoir d&#233;mont&#233; votre &#233;cran pour n'avoir que la dalle LED (ou whatever !), on doit brancher tous les c&#226;bles.&lt;/p&gt;
&lt;p&gt;Poser votre dalle sur une surface plane, puis prendre la hauteur de la dalle jusqu'aux c&#226;bles, recourb&#233;es si besoin, et sans forcer pour ne pas les ab&#238;mer. Id&#233;alement, si vous avez un &#233;cran o&#249; les branchements se font en parall&#232;le &#224; l'&#233;cran et non &#224; la perpendiculaire, c'est g&#233;nial ! Mais ce n'est pas pour le commun des mortels.&lt;br class='autobr' /&gt;
10cm a &#233;t&#233; la taille minimal pour moi.&lt;/p&gt;
&lt;h4&gt;Deuxi&#232;me chose : les mesures&lt;/h4&gt;
&lt;p&gt;Avant tout d&#233;coupage, il est n&#233;cessaire de mesurer et bien tracer chaque trait de coupes. Et m&#234;me quand vous avez commenc&#233; &#224; couper, v&#233;rifier apr&#232;s coup votre travail. Cela facilitera le montage.&lt;br class='autobr' /&gt;
J'ai eu la mauvaise surprise en pensant lorsque j'avais fini toutes mes coupes de constater que je mettais tromper de 5 cm dans la d&#233;coupe de mon c&#244;t&#233; gauche, pour les points d'assemblage du support. &lt;br class='autobr' /&gt;
J'ai d&#251; refaire la d&#233;coupe comme indiqu&#233; sur le plan.&lt;/p&gt;
&lt;h4&gt;Troisi&#232;me chose : tester l'assemblage&lt;/h4&gt;
&lt;p&gt;Apr&#232;s que chaque pi&#232;ce est pr&#234;te, je teste l'assemblage. Ainsi, je vois s'il est n&#233;cessaire de reprendre un peu la coupe. Il faut qu'il y ait un peu de r&#233;sistance, mais pas trop.&lt;/p&gt;
&lt;h4&gt;Des encoches&lt;/h4&gt;
&lt;p&gt;Si votre meuble est de grande taille comme le mien, il faudra penser &#224; deux encoches de chaque c&#244;t&#233; pour que vous puissiez &lt;strong&gt;soulever votre meuble.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mais&#8230; Ce n'est pas tout comme encoches ! Sur les planches mis &#224; l'horizontal, il est n&#233;cessaire de faire des trous (d'1cm environ de diam&#232;tre) pour laisser l'air circuler &#224; l'int&#233;rieur du meuble. En effet, tout ce mat&#233;riel &#233;lectronique chauffe, et on doit permettre l'&#233;vacuation de cette chaleur.&lt;/p&gt;
&lt;p&gt;On pourra voir plus tard pour ajouter des ventilateurs (de refroidissement d'ordinateur) pour faire mieux circuler l'air et &lt;strong&gt;permettre le refroidissement de l'ensemble.&lt;/strong&gt;&lt;br class='autobr' /&gt;
Dans ma configuration, il n'est pas n&#233;cessaire de faire des trous au pied car l'air y passe sans soucis. Mais pour les 3 autres planches, j'ai perc&#233; un trou tous les 10 cm au centre des planches en longueur.&lt;/p&gt;
&lt;p&gt;A cela, il faudra faire un &lt;strong&gt;trou pour&lt;/strong&gt; que &lt;strong&gt;les c&#226;bles&lt;/strong&gt; puissent passer sans probl&#232;me. J'ai pris une cloche et j'ai fait un demi-cercle (la moiti&#233; de la cloche &#224; bois) sur la planche vers ce qui sera le &#034;dos&#034; du meuble.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Et voil&#224;, le produit est fini. Ce projet m'a permis d'essayer ces techniques d'assemblage du bois. Je suis un vrai d&#233;butant dans le travail du bois. Je n'ai pas les outils qui me permettraient d'avoir un r&#233;sultat parfait. Mais ce fut tr&#232;s sympathique de faire cette r&#233;alisation. J'aime &#233;norm&#233;ment le bois.&lt;br class='autobr' /&gt;
J'esp&#232;re que mon article vous permettra de voir ce qu'on peut faire pour le MagicMirror&#178;. Ce n'est pas super compliqu&#233;, il faut juste un peu de patience.&lt;/p&gt;
&lt;p&gt;Et d'ailleurs, je pense que je vais peut-&#234;tre diversifier le contenu de mon blog pour partager des petits projets qui ne sont pas forc&#233;ment li&#233;s au code (ou pas trop loin).&lt;/p&gt;
&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, on recommence depuis le d&#233;but</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut</guid>
		<dc:date>2018-06-08T05:30:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>Notes de d&#233;veloppement</dc:subject>
		<dc:subject>Lignes de commandes</dc:subject>
		<dc:subject>Javascript</dc:subject>
		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;R&#233;cemment, j'ai &#233;crit un article pour installer mon MagicMirror&#178;. Ce tutoriel est tout &#224; fait fonctionnel. Malheureusement, pas dans mon cas car j'avais des versions de packages trop anciennes (cf. node.js). Je vais vous expliquer comment j'ai rem&#233;di&#233; &#224; cela. :-) &lt;br class='autobr' /&gt; body background-color : white ; &lt;br class='autobr' /&gt;
J'ai achet&#233; mon Raspberry Pi en juin 2016. J'en avais fait l'acquisition pour tester Gladys. A cette p&#233;riode, la version 2 de Gladys sortait des cartons et avaient peu de plugins pour (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/Notes-de-developpement" rel="tag"&gt;Notes de d&#233;veloppement&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Lignes-de-commandes" rel="tag"&gt;Lignes de commandes&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Javascript" rel="tag"&gt;Javascript&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH100/arton151-862d6.jpg?1724428492' class='spip_logo spip_logo_right' width='150' height='100' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;R&#233;cemment, j'ai &#233;crit un article pour installer mon MagicMirror&#178;. Ce tutoriel est tout &#224; fait fonctionnel. Malheureusement, pas dans mon cas car j'avais des versions de packages trop anciennes (cf. node.js). Je vais vous expliquer comment j'ai rem&#233;di&#233; &#224; cela. :-)&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;style&gt; body { background-color: white; } &lt;/style&gt;
&lt;p&gt;J'ai achet&#233; mon Raspberry Pi en juin 2016. J'en avais fait l'acquisition pour tester &lt;a href=&#034;https://gladysproject.com/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Gladys&lt;/a&gt;. A cette p&#233;riode, la version 2 de Gladys sortait des cartons et avaient peu de plugins pour agr&#233;menter le tout.&lt;br class='autobr' /&gt;
Je l'ai donc laiss&#233; un peu de c&#244;t&#233; en attendant le bon moment pour r&#233;aliser mon deuxi&#232;me projet pour ce petit bijoux.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Incompatibilit&#233;&lt;/h2&gt;
&lt;p&gt;J'avais install&#233; toutes les librairies n&#233;cessaires pour Gladys et elle-m&#234;me &#233;galement. Or, ces versions sont conflictuelles avec ce que MagicMirror&#178; d&#233;sire. Je vais &#234;tre honn&#234;te, &#231;a me prendrait plus de temps de d&#233;sinstaller chaque composant plut&#244;t que de refaire la carte SD &#224; partir de l'image de Raspbian fourni par raspberry.org.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Recommen&#231;ons&lt;/h2&gt;
&lt;p&gt;Le premier point est de refaire la carte SD avec l'image &lt;i&gt;2018-04-18-raspbian-stretch&lt;/i&gt; issue du site officiel. Cela aura pour effet de repartir de z&#233;ro.&lt;/p&gt;
&lt;p&gt;Cela fait, on remet la carte SD dans le Raspberry PI pour un red&#233;marrage. Ce dernier point se passe quand m&#234;me rapidement. Il n'y a pratiquement rien &#224; faire. Les choses sont bien ficel&#233;es.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation de packages&lt;/h2&gt;
&lt;p&gt;Il est n&#233;cessaire d'installer quelques petits packages pour assurer leur disponibilit&#233; au moment voulu :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt-get install git zip unzip curl wget&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Oui, ce n'est pas vraiment n&#233;cessaire avec une installation fra&#238;che. Toutefois, cette action permettra de mettre tout le monde au m&#234;me niveau.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Mise &#224; jour des packages&lt;/h2&gt;
&lt;p&gt;Comme dans le pr&#233;c&#233;dent tutoriel, j'ai mis &#224; jour les packages et le firmware :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt-get update; sudo apt-get upgrade; sudo apt-get autoremove; sudo rpi-update; sudo apt-get clean&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A la fin de cette ligne, je vide le cache puis un red&#233;marrage : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo reboot&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation de Node et MagicMirror&#178;&lt;/h2&gt;
&lt;p&gt;Le red&#233;marrage &#233;tant fait, on va maintenant lancer les scripts initiaux :&lt;br class='autobr' /&gt;
&lt;strong&gt;Node.js&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | sudo bash node -v&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;MagicMirror&#178;&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;bash -c &#034;$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)&#034;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;J'ai vu qu'une branche develop &#233;tait pr&#233;sente et des commits sur cette branche r&#233;glaient quelques bugs. Alors, je passe &#224; cette branche :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/ git checkout -b develop git pull&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Apr&#232;s cela, on peut lancer l'installation :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tout s'est bien pass&#233; pour mon installation. Cool.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation des modules&lt;/h2&gt;
&lt;p&gt;Pour mes besoins actuels, j'utilise les modules suivants :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/tataille/MMM-FreeBox-Monitor&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MMM-Freebox-Monitor&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/spectroman/mmm-moon-phases&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MMM-moon-phases&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/edward-shen/MMM-page-indicator&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MMM-page-indicator&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/edward-shen/MMM-pages&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MMM-pages&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le principe d'installation est le m&#234;me pour tous les modules :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/modules/ git clone https://github.com/user/mmm-nom-module&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Soit :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/modules/ git clone https://github.com/tataille/MMM-FreeBox-Monitor.git git clone https://github.com/spectroman/mmm-moon-phases.git git clone https://github.com/edward-shen/MMM-page-indicator.git git clone https://github.com/edward-shen/MMM-pages.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le reste, la configuration des modules se fait dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/MagicMirror/config/config.js&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Configuration du fichier config.js&lt;/h2&gt;
&lt;p&gt;Comme le demande la documentation de MagicMirror&#178;, on doit copier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/MagicMirror/config/config.js.sample&lt;/code&gt; vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/MagicMirror/config/config.js&lt;/code&gt;&lt;br class='autobr' /&gt;
Cela dit&#8230; Je ne vais pas faire &#231;a. :-D&lt;/p&gt;
&lt;p&gt;En effet, je vais faire en sorte d'avoir une version du fichier config.js qui soit versionn&#233;e sur un git.&lt;br class='autobr' /&gt;
Comme tout projet git, il n'est pas possible de cibler sur un fichier purement et simplement (comme le ferait svn par exemple). De ce fait, j'ai cr&#233;&#233; sur &lt;a href=&#034;https://gitlab.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Gitlab.com&lt;/a&gt; un projet qui sera en mode priv&#233;.&lt;/p&gt;
&lt;p&gt;On peut nommer ce projet &#034;magicmirror_config&#034; pour faire simple.&lt;br class='autobr' /&gt;
Depuis le terminal, je tape les lignes suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/ git clone https://gitlab.com/user/magicmirror_config.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Maintenant, je cr&#233;e un lien symbolique dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/MagicMirror/config/&lt;/code&gt; pointant vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/magicmirror_config/config.js&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/config/ mv config.js config.js.old ln -s ~/magicmirror_config/config.js config.js&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Par la m&#234;me occasion, j'ai fait la m&#234;me chose avec le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/MagicMirror/css/custom.css&lt;/code&gt;. Pratique pour personnaliser son affichage graphiquement.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/css/ mv custom.css custom.css.old ln -s ~/magicmirror_config/custom.css custom.css&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;marrage automatique de MagicMirror&#178;&lt;/h2&gt;
&lt;p&gt;Comme indiqu&#233; dans &lt;a href=&#034;https://github.com/MichMich/MagicMirror/wiki/Auto-Starting-MagicMirror&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://github.com/MichMich/MagicMirror/wiki/Auto-Starting-MagicMirror&lt;/a&gt;, il est possible de lancer automatiquement MagicMirror&#178; au d&#233;marrage. Pour cela, il est n&#233;cessaire d'installer PM2 sur la machine.&lt;br class='autobr' /&gt;
Le script d'installation de MagicMirror&#178; le fait. Mais j'ai eu un souci que je ne saurais identifier pour le moment. Je verrai cela plus tard.&lt;/p&gt;
&lt;p&gt;Le script a bien install&#233; pm2 mais n'a pas fait les liens symboliques pour ce stretch. Cela se trouve dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/opt/nodejs/bin/&lt;/code&gt;.&lt;br class='autobr' /&gt;
Sur stretch, on fait un lien vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/alternatives/&lt;/code&gt; puis de l&#224;, un lien dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/usr/bin/&lt;/code&gt;.&lt;br class='autobr' /&gt;
Voici le code &#224; taper dans Terminal :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo ln -s /opt/nodejs/bin/pm2 /etc/alternatives/pm2 sudo ln -s /etc/alternatives/pm2 /usr/bin/pm2 sudo ln -s /opt/nodejs/bin/pm2-dev /etc/alternatives/pm2-dev sudo ln -s /etc/alternatives/pm2-dev /usr/bin/pm2-dev sudo ln -s /opt/nodejs/bin/pm2-docker /etc/alternatives/pm2-docker sudo ln -s /etc/alternatives/pm2-docker /usr/bin/pm2-docker sudo ln -s /opt/nodejs/bin/pm2-runtime /etc/alternatives/pm2-runtime sudo ln -s /etc/alternatives/pm2-runtime /usr/bin/pm2-runtime&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Cr&#233;er un fichier de d&#233;marrage de MagicMirror&#178;&lt;/strong&gt;&lt;br class='autobr' /&gt;
Pour nous simplifier la t&#226;che, il est conseill&#233; de cr&#233;er un fichier bash :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~ nano mm.sh&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis d'ajouter les lignes suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror DISPLAY=:0 npm start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On enregistre le tout. Puis on le rend ex&#233;cutable.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;chmod +x mm.sh&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;D&#233;marrer MagicMirror&#178; avec PM2&lt;/h2&gt;
&lt;p&gt;C'est vraiment tout simple :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 start mm.sh&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Activer le d&#233;marrage du script&lt;/strong&gt;&lt;br class='autobr' /&gt;
On doit &#234;tre s&#251;r que le script soit lanc&#233; au d&#233;marrage. Pour cela, on sauvegarde les r&#233;glages actuels de PM2 :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 save&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Contr&#244;ler son MagicMirror&#178; via PM2&lt;/h2&gt;
&lt;p&gt;Avec MagicMirror fonctionnant via PM2, on dispose d'outils pratiques :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Red&#233;marrer MagicMirror&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 restart mm&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Arr&#234;ter MagicMirror&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 stop mm&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Afficher les logs MagicMirror&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 logs mm&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Afficher les informations sur le processus MagicMirror&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pm2 show mm&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien'&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MagicMirror&#178;, un miroir qui vous veut du bien.</title>
		<link>https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien</link>
		<guid isPermaLink="true">https://preprod.teddypayet.com/MagicMirror2-un-miroir-qui-vous-veut-du-bien</guid>
		<dc:date>2018-06-01T15:09:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Teddy Payet</dc:creator>


		<dc:subject>Notes de d&#233;veloppement</dc:subject>
		<dc:subject>Lignes de commandes</dc:subject>
		<dc:subject>Javascript</dc:subject>
		<dc:subject>Personnel</dc:subject>
		<dc:subject>MagicMirror</dc:subject>
		<dc:subject>Domotique</dc:subject>

		<description>
&lt;p&gt;Le &#8220;MagicMirror&#178;&#8221; est un projet open source qui a &#233;t&#233; mis &#224; disposition par son cr&#233;ateur : Michael Teeuw Pr&#233;sentation : &#8220;MagicMirror&#178; est une plate-forme modulaires open source de miroirs intelligents. Avec une liste croissante de modules installables, le MagicMirror&#178; vous permet de convertir votre couloir ou votre miroir de salle de bains en votre assistant personnel. MagicMirror&#178; est construit par le cr&#233;ateur du MagicMirror original avec l'aide incroyable d'une communaut&#233; croissante de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://preprod.teddypayet.com/Blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://preprod.teddypayet.com/Notes-de-developpement" rel="tag"&gt;Notes de d&#233;veloppement&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Lignes-de-commandes" rel="tag"&gt;Lignes de commandes&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Javascript" rel="tag"&gt;Javascript&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Personnel" rel="tag"&gt;Personnel&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/MagicMirror" rel="tag"&gt;MagicMirror&lt;/a&gt;, 
&lt;a href="https://preprod.teddypayet.com/Domotique" rel="tag"&gt;Domotique&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://preprod.teddypayet.com/local/cache-vignettes/L150xH110/arton150-51e5b.png?1724428492' class='spip_logo spip_logo_right' width='150' height='110' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Le &#8220;&lt;a href=&#034;https://magicmirror.builders/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MagicMirror&#178;&lt;/a&gt;&#8221; est un projet open source qui a &#233;t&#233; mis &#224; disposition par son cr&#233;ateur : &lt;a href=&#034;http://michaelteeuw.nl/post/142629029062/magicmirror2-a-huge-announcement&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Michael Teeuw&lt;/a&gt;&lt;br class='autobr' /&gt;
Pr&#233;sentation : &#8220;MagicMirror&#178; est une plate-forme modulaires open source de miroirs intelligents. Avec une liste croissante de modules installables, le MagicMirror&#178; vous permet de convertir votre couloir ou votre miroir de salle de bains en votre assistant personnel. MagicMirror&#178; est construit par le cr&#233;ateur du MagicMirror original avec l'aide incroyable d'une communaut&#233; croissante de contributeurs.&#8221;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;style&gt; body { background-color: white; } .image_intro div.image { background-color: black; } &lt;/style&gt; &lt;iframe src=&#034;https://player.vimeo.com/video/171152845&#034; width=&#034;640&#034; height=&#034;360&#034; frameborder=&#034;0&#034; allowfullscreen&gt;&lt;/iframe&gt;&lt;h2 class=&#034;spip&#034;&gt;Le mat&#233;riel&lt;/h2&gt;
&lt;p&gt;Le mat&#233;riel n&#233;cessaire est le suivant :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un Raspberry Pi 3 (ne pas oublier une source d'alimentation) ;&lt;/li&gt;&lt;li&gt; Une carte SD de 8Go (minimum) ;&lt;/li&gt;&lt;li&gt; Un clavier ;&lt;/li&gt;&lt;li&gt; Une souris ;&lt;/li&gt;&lt;li&gt; Un c&#226;ble HDMI ;&lt;/li&gt;&lt;li&gt; Un &#233;cran HDMI.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Je vous propose de voir comment installer MagicMirror&#178; (aka MM&#178;) sur votre Raspberry Pi 3. Bien entendu, le moment venu, vous brancherez tous les &#233;l&#233;ments les uns aux autres lorsque vous devrez vous connecter au Raspberry PI.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation du Raspberry Pi&lt;br/&gt;
Pr&#233;parer une carte SD.&lt;/h2&gt;
&lt;p&gt;Il est n&#233;cessaire d'installer Raspbian sur votre carte SD pour optimiser votre utilisation du Raspberry Pi et de MagicMirror&#178;. Cette op&#233;ration doit &#234;tre r&#233;alis&#233;e depuis un ordinateur (Windows, Mac, Linux)&lt;/p&gt;
&lt;p&gt;Aller sur l'url &lt;a href=&#034;https://www.raspberrypi.org/downloads/raspbian/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.raspberrypi.org/downloads/raspbian/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;T&#233;l&#233;charger la derni&#232;re version de Raspbian (en mai 2018, &lt;i&gt;Raspbian Stretch with desktop&lt;/i&gt;). Une fois t&#233;l&#233;charg&#233; sur votre ordinateur, veuillez d&#233;compresser le fichier.&lt;/p&gt;
&lt;p&gt;Avec le r&#233;pertoire extrait, vous pouvez pr&#233;parer la carte SD. Ins&#233;rez votre carte SD dans votre ordinateur. Ouvrez votre logiciel* de gestion de disques (SD Card Formatter, Win32 Disk Imager, Utilitaire de Disques, etc.). S&#233;lectionnez votre carte SD et lui donner un nom (de pr&#233;f&#233;rence sans espace ou accents pour simplifier les lignes de commandes). R&#233;f&#233;rez-vous &#224; la documentation propre &#224; votre logiciel pour toutes ces &#233;tapes.&lt;/p&gt;
&lt;p&gt;S&#233;lectionnez l'image de Raspbian fra&#238;chement extrait pour l'importer sur la carte SD. Lancez l'&#233;criture de cette image sur la carte.&lt;/p&gt;
&lt;p&gt;Cela fait, &#233;jectez la carte SD.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;D&#233;marrer et configurer le Raspberry Pi&lt;/h2&gt;
&lt;p&gt;Maintenant que la carte SD est pr&#234;te avec Raspbian, il est n&#233;cessaire de l'ins&#233;rer dans le Raspberry Pi.&lt;/p&gt;
&lt;p&gt;Connecter le c&#226;ble HDMI &#224; l'&#233;cran puis au Raspberry. Allumez votre &#233;cran. Branchez le clavier, la souris au Raspberry. Ne pas oublier maintenant de brancher la source d'alimentation du Raspberry.&lt;/p&gt;
&lt;p&gt;Au premier d&#233;marrage du Raspberry Pi, cela peut prendre un peu de temps. Vous serez invit&#233; &#224; renseigner le mot de passe pour l'utilisateur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pi&lt;/code&gt; (soit par d&#233;faut : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;raspberry&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Depuis le terminal, entrez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo raspi-config&lt;/code&gt; et validez. Cela lancera la configuration du Raspberry. Choisissez &#8220;&lt;i&gt;Expand Filesystem&lt;/i&gt;&#8221; en tapant sur la touche &#8220;&lt;i&gt;Entr&#233;e&lt;/i&gt;&#8221;. On utilisera ainsi tout l'espace de la carte SD.&lt;br class='autobr' /&gt;
Cela fait, on s&#233;lectionne &#8220;Internationalisation Options&#8221; pour choisir la langue d&#233;sir&#233;e. Le faire &#224; votre convenance : la langue, le timezone, le format du clavier, le protocole Wifi.&lt;/p&gt;
&lt;p&gt;Maintenant, on va choisir &#8220;&lt;i&gt;Advanced options&lt;/i&gt;&#8221;, puis &#8220;&lt;i&gt;Hostname&lt;/i&gt;&#8221;. Par d&#233;faut, on a &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;raspberrypi&lt;/code&gt;. Mais au vu du projet, on peut appeler &#231;a &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;magicpi&lt;/code&gt;. A votre convenance ici :-)&lt;/p&gt;
&lt;p&gt;Apr&#232;s cela, revenir sur &#8220;&lt;i&gt;Advanced options&lt;/i&gt;&#8221; et choisir &#8220;&lt;i&gt;SSH&lt;/i&gt;&#8221;. Il sera utile de pouvoir une connexion SSH pour acc&#233;der au Raspberry &#224; distance.&lt;/p&gt;
&lt;p&gt;On devrait &#234;tre bon maintenant. Revenir &#224; l'&#233;cran principal et utiliser la touche de tabulation pour mettre en surbrillance &#8220;&lt;i&gt;Finish&lt;/i&gt;&#8221; en bas de l'&#233;cran et cliquer sur &#8220;&lt;i&gt;Entr&#233;e&lt;/i&gt;&#8221;. A la demande de red&#233;marrage, cliquer sur &#8220;&lt;i&gt;Yes&lt;/i&gt;&#8221;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Configurer le Wifi du Raspberry Pi&lt;/h2&gt;
&lt;p&gt;Une particularit&#233; du Raspberry Pi 3 est d'avoir le wifi nativement. Il va falloir le configurer pour avoir acc&#232;s &#224; votre r&#233;seau internet.&lt;/p&gt;
&lt;p&gt;Apr&#232;s le red&#233;marrage, vous aurez un bureau graphique Linux. Lancez le Terminal, vous y configurez le wifi en &#233;ditant le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;wpa_supplicant.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/wpa_supplicant/wpa_supplicant.conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A la fin du fichier, renseignez vos informations de connexion :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;network={ ssid=&#034;votre_nom_de_reseau&#034; psk=&#034;votre_mot_de_passe_reseau&#034; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour enregistrer votre configuration, cliquer sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;CTRL-X&lt;/code&gt; puis sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il faut red&#233;marrer votre raspberry : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo reboot&lt;/code&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Nettoyer et mettre &#224; jour le syst&#232;me&lt;/h2&gt;
&lt;p&gt;Bon, tout cela est sympa, mais il va falloir mettre tout ce petit monde &#224; jour et faire maigrir tout &#231;a.&lt;/p&gt;
&lt;p&gt;Depuis votre Terminal, taper &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;df -h&lt;/code&gt; pour avoir la capacit&#233; actuelle de votre Raspberry. Notez l'espace utilis&#233; pour le comparer.&lt;/p&gt;
&lt;p&gt;On va supprimer quelques packages inutiles pour le MM&#178; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt-get remove --purge idle3 java-common libreoffice* minecraft-pi scratch nuscratch penguinspuzzle python-minecraftpi python3-minecraftpi smartsim sonic-pi wolfram-engine&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt-get clean sudo apt-get autoremove&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cela va prendre un petit moment pour que ces op&#233;rations se terminent. Soyez patient et pas trop loin de votre &#233;cran pour valider certaines op&#233;rations. Faites &#224; nouveau &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;df -h&lt;/code&gt; dans votre terminal et remarquez le changement.&lt;/p&gt;
&lt;p&gt;Continuons. Il est temps de mettre &#224; jour vos packages :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt-get update ; sudo apt-get upgrade ; sudo rpi-update.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;&#8220;update&#8221;&lt;/strong&gt; met &#224; jour la liste des packages disponibles et leur version ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#8220;upgrade&#8221;&lt;/strong&gt; met &#224; jour les packages install&#233;es ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;&#8220;rpi-update&#8221;&lt;/strong&gt; va quant &#224; lui mettre &#224; jour le firmware du Raspberry Pi.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Respirez &#224; nouveau et tapez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo reboot&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation de MagicMirror&#178;&lt;/h2&gt;
&lt;p&gt;Le Raspberry est pr&#234;t. Alors, installons le temps attendu MagicMirror&#178;.&lt;/p&gt;
&lt;p&gt;Il existe un script qui permettra d'installer MM&#178; comme il se doit. Toutefois, il arrive que l'installation du package &#8220;node&#8221; pose un probl&#232;me. Le script installe une version NodeJS 9.x. La version de &lt;strong&gt;node test&#233;e par MM&#178;&lt;/strong&gt; est la &lt;strong&gt;5.1.0&lt;/strong&gt;. Si vous avec une version inf&#233;rieure, cela bloquera l'installation de composants node qui n&#233;cessitent eux un node 4.6.x minimum.&lt;br class='autobr' /&gt;
&lt;i&gt;Il faudra faire attention &#224; la version de NodeJS surtout si vous avez depuis un moment votre Raspberry Pi. Ce qui &#233;tait mon cas. J'avais un node v4.4.2 qui forc&#233;ment n'&#233;tait pas au go&#251;t de MM&#178;.&lt;/i&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation pr&#233;alable de NodeJS&lt;/h2&gt;
&lt;p&gt;Pour y rem&#233;dier, vous allez installer node en premier. Tapez ceci dans votre Terminal :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | sudo bash node -v&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce script bash installera par d&#233;faut la version NodeJS 10.x. Il est possible de changer la version de NodeJS en tapant ceci :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo node-install -v 9; # then you will get prompted with which # specific version of 9 you wish to install&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Mais on n'en est pas l&#224;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Ex&#233;cution du script pour MagicMirror&#178;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NodeJS &#233;tant install&#233;,&lt;/strong&gt; vous allez lancer le script d'installation de MagicMirror&#178; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;bash -c &#034;$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)&#034;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cela lancera le processus d'installation pour vous. Ne partez pas trop loin du Raspberry car des validations seront &#224; faire au fil de l'eau.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention, le script d'installation de MM&#178; s'occupe d&#233;j&#224; d'installer un NodeJS&lt;/strong&gt; &lt;i&gt;(v9.x en mai 2018)&lt;/i&gt;. Donc, vous pourriez vous passer de l'&#233;tape pr&#233;c&#233;dente en r&#233;alit&#233;. Mais si vous d&#233;sirez tester sur d'autres versions de NodeJS, une installation manuelle, cit&#233;e pr&#233;c&#233;demment, vous facilitera grandement la t&#226;che.&lt;br class='autobr' /&gt;
&lt;strong&gt;Si le script de MM&#178; d&#233;tecte un node existant, il sautera cette &#233;tape et vous indiquera qu'il faudra mettre &#224; jour node si votre version est inf&#233;rieure &#224; la version test&#233;e.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Configuration compl&#233;mentaire&lt;/h2&gt;
&lt;p&gt;Le script s'est bien d&#233;roul&#233;. Vous devez configurer quelques points compl&#233;mentaires sp&#233;cifiques &#224; MM&#178;. Il faut par exemple indiquer que l'&#233;cran est &#224; la verticale. Tapez :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /boot/config.txt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et ajoutez &#224; la fin du fichier les lignes suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Rotate display vertically display_rotate=1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Appuyez sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;CTRL-X&lt;/code&gt; quand vous avez fini puis &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Y&lt;/code&gt; pour sauvegarder vos modifications.&lt;br class='autobr' /&gt;
Raspbian lance un &#233;cran de veille au bout d'un certain temps. De ce fait, nous allons d&#233;sactiver ceci en modifiant un fichier :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/xdg/lxsession/LXDE-pi/autostart&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ajoutez &#224; la fin du fichier ces lignes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;@xset s noblank @xset s off @xset -dpms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Modifiez le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lightdm.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/lightdm/lightdm.conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Recherchez la ligne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;xserver-command&lt;/code&gt; en descendant plus bas. Y renseigner ces valeurs :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;xserver-command=X -s 0 -dpms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Enlevez le &#171; # &#187; en d&#233;but de ligne si besoin. Enregistrez vos modifications &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;CTRL-X&lt;/code&gt; puis &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Y&lt;/code&gt; et entr&#233;e.&lt;/p&gt;
&lt;p&gt;Pour des soucis d'&#233;conomie d'&#233;nergie Raspberry d&#233;sactive certains composants dont le wifi. En modifiant un param&#232;tre dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/network/interfaces&lt;/code&gt;, cette fonctionnalit&#233; sera ineffective :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/network/interfaces&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cherchez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;wlan0&lt;/code&gt; et ajoutez, en-dessous, la ligne suivante :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wireless-power off&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sauvegardez vos modifications et red&#233;marrez votre Raspberry Pi :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A ce stade, vous avez configur&#233; enti&#232;rement votre MM&#178;. Il vous faudra le personnaliser en &#233;ditant le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config.js&lt;/code&gt; et/ou en ajoutant des modules suppl&#233;mentaires.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~/MagicMirror/config cp config.js.sample config.js&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et maintenant, vous pouvez l'essayer :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd ~$HOME/MagicMirror npm start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Enjoy !&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Sources :&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://magicmirror.builders/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://magicmirror.builders/&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/MichMich/MagicMirror/wiki/Configuring-the-Raspberry-Pi&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://github.com/MichMich/MagicMirror/wiki/Configuring-the-Raspberry-Pi&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/audstanley/NodeJs-Raspberry-Pi&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://github.com/audstanley/NodeJs-Raspberry-Pi&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://raspbian-france.fr/creez-carte-sd-raspbian-raspberry-pi-windows/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://raspbian-france.fr/creez-carte-sd-raspbian-raspberry-pi-windows/&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://forum.magicmirror.builders/topic/236/complete-setup-tutorial&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://forum.magicmirror.builders/topic/236/complete-setup-tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.raspberrypi.org/documentation/installation/installing-images/mac.md&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://www.raspberrypi.org/documentation/installation/installing-images/mac.md&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&#034;row&#034;&gt; &lt;div class=&#034;col-xs-12&#034;&gt; &lt;h2&gt;A lire aussi&lt;/h2&gt; &lt;ul class=&#034;spip spip-list&#034;&gt; &lt;li class=&#034;item&#034;&gt;&lt;em&gt;MagicMirror&#178;, un miroir qui vous veut du bien.&lt;/em&gt;&lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-on-recommence-depuis-le-debut'&gt;MagicMirror&#178;, on recommence depuis le d&#233;but&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-socle-qui-lui-va-comme-un-gant'&gt;MagicMirror&#178;, un socle qui lui va comme un gant&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-un-Raspberry-Pi-un-ecran-et-cie-sont-dans-un-bateau'&gt;MagicMirror&#178;, un Raspberry Pi, un &#233;cran et cie sont dans un bateau&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-ma-configuration-personnalisee'&gt;MagicMirror&#178;, ma configuration personnalis&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror2-configuration-scriptee'&gt;MagicMirror&#178;, configuration script&#233;e&lt;/a&gt; &lt;/li&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href='https://preprod.teddypayet.com/MagicMirror%C2%B2-configuration-scriptee-2eme-partie'&gt;MagicMirror&#178;, configuration script&#233;e, 2&#232;me partie&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
