Dans cet article de la série, Un Raspberry Pi serveur de musique, j’explique simplement comment installer une version compatible DLNA, UPnP et « Open Home » de GMediaRender, fondée sur gmrender-resurrect. Pour en savoir plus sur le fonctionnement d’un serveur DLNA, d’un serveur UPnP et du protocole « Open Home », il vous faudra lire les autres articles de cette série 😯 !
Installer gstreamer 1.0 et gmrender-resurrect UPnP renderer
Ensuite on crée un nouveau fichier /etc/apt/sources.list.d/upnprender.list pour y ajouter l’adresse du dépôt de Christi Scarborough pour gstreamer 1.0 :
Pour comprendre (un peu) ce qu’est une sources list, voir cet article, en français.
Dans le nouveau fichier on supprime le contenu de raspi.list et on ajoute la ligne suivante. Les instructions originelles disent de terminer par wheezy main. Ce serait juste si on utilisait encore la distribution Wheezy de Raspbian. Mais depuis 2013 elle a été remplacée par Jessie puis Stretch. Comme j’utilise Stretch, je termine par stretch main
deb http://www.chiark.greenend.org.uk/~christi/debian/ stretch main
Puis on met à jour la liste des paquets avant d’installer gmrender-resurrect
apt-get update
Il y a une erreur liée au fait qu’il n’y a pas de version stretch dans le dépôt ‘http://www.chiark.greenend.org.uk/~christi/debian. Mais l’erreur ne paraît pas majeure…
Je poursuis l’installation de gmrender-resurrect en copiant collant l’ensemble des 4 lignes sur une seule ligne du terminal du Pi :
On exécute ensuite les commandes suivantes, les unes après les autres :
cd
git clone https://github.com/hzeller/gmrender-resurrect.git
cd gmrender-resurrect
apt-get install autoconf
./autogen.sh
./configure
make install
Ca place gmediarender dans /usr/local/bin et des icones dans /usr/local/share/gmediarender
Et maintenant on peut ponctuellement lancer le renderer, en lui donnant le nom qu’on veut (l’option –f dit quel nom on veut donner)
./src/gmediarender -f "Pi Bureau"
Ca fonctionne correctement. On fait CTRL C pour en sortir.
Faire fonctionner gmediarender comme un service
Pour que gmediarender démarre comme un service, il faut copier le contenu de scripts /root/gmrender-resurrect/init.d/gmediarenderer dans /etc/init.d (ou home/votre-nom-d’utilisateur/gmrender-resurrect/init.d/gmediarenderer si vous n’êtes pas connecté en root au Pi)
cp scripts/init.d/gmediarenderer /etc/init.d
On édite /etc/init.d/gmediarender pour définir le nom du « renderer » et corriger si nécessaire l’utilisateur :
DAEMON_USER="al:audio"
UPNP_DEVICE_NAME="Pi Bureau"
Puis on utilise update-rc.d pour que ces informations soient placées correctement dans le Pi.
update-rc.d gmediarenderer defaults
On redémarre le Pi (reboot ou shutdown -r now ). gmediarender démarre. On peut le vérifier avec
Ca fonctionne et le “renderer” s’appelle Pi Bureau.
Sur mon ordinateur Windows, je peux maintenant destiner de la musique à « Pi Bureau » en cliquant à droite sur une liste de lecture ou un morceau dans Windows Media Player.
Et maintenant ?
Dans les prochains articles de cette série Un Raspberry Pi serveur de musique, j’expliquerai quels « clients » j’ai choisi pour faire fonctionner mon serveur DLNA et jouer de la musique du serveur. J’ajouterai également un serveur BubbleUPnP au Pi afin de disposer d’un partage des listes de lecture et d’un fonctionnement aux normes « Open Home ».
Dans le premier article de cette série, Un Raspberry Pi serveur de musique, j’ai expliqué comment créer un serveur utilisant MPD. Mais je n’étais pas vraiment satisfaite. Depuis j’ai acheté un Raspberry Pi 3 et je me suis dit qu’il était temps de passer à un niveau supérieur.
Dans cet article, j’explique comment créer un serveur de musique miniDLNA qui va gérer toute ma musique numérique et la rendre accessible via des appareils Android (ou Apple). Dans un prochain article de cette même série, Un Raspberry Pi serveur de musique, j’expliquerai comment y ajouter un serveur UPnP.
De quoi j’ai besoin ?
Un raspberry Pi 3 ;
Un cable ethernet (on peut opter pour le wifi mais ce n’est pas ce que j’ai choisi) ;
un disque dur USB ;
Une alimentation USB pour le Raspberry Pi et le disque dur.
Préparer le Raspberry Pi (Raspbian Stretch, IP fixe)
J’ai installé Raspbian Stretch Lite (sans la partie graphique) en suivant les instructions de mon article Mise en service d’un Raspberry Pi.
Le « hostname » de mon Pi est : AlMusicServer. C’est le nom que j’utilise pour me connecter.
J’ai réglé ce Pi sur l’adresse IP fixe (connexion ethernet) 198.168.1.102 selon les instructions de mon article Raspberry Pi : connexion internet en wifi et/ou IP fixe.
Régler la sortie audio
Pour le réglage et les tests, je me suis inspirée des articles suivants :
ALSA est le système Linux de gestion du son. Le paquet alsa-utils est pré-installé dans les distributions Raspbian et contient des commandes utiles pour tester et régler le son de notre Raspberry Pi.
J’ai connecté mon Pi via le connecteur Jack 3.5mm. Ce n’est pas la meilleure solution pour une bonne qualité audio. On a intérêt à utiliser au moins une carte son USB, voire un DAC Hifi. Je verrai ça ultérieurement.
Dans le terminal, s’assurer que le mode audio renvoie bien au connecteur jack (et pas HDMI) avec
amixer cset numid=3 1
Pour tester le son
!!! Attention à bien enfoncer le connecteur Jack, sinon il y a du bruit dans les HP et rien ne fonctionne !!!
speaker-test
Ca fait un bruit (léger) dans les haut parleurs. Il faut régler le volume fort pour l’entendre.
aplay /usr/share/sounds/alsa/Noise.wav
Fait aussi du bruit, qu’on entend que si le volume est très fort
Pour voir les périphériques audios et leurs pilotes
aplay –l liste tous les périphériques audio présents
lsmod permet de voir quel pilote est associé au(x) périphérique(s) audio.
Playback switch règle le son sur “ON” ou « OFF ». Réglé sur On, le son sort des haut parleur au volume défini pat numid=1 (playback volume). Réglé sur Off, les haut pareleurs sont muets quel que soit le réglage de volume.
amixer cget numid=1 doit donc nous indiquer quel est le réglage du volume. Ca me dit :
Ma musique est dans /media/iomega/MULTIMEDIA/musique.
Installer un serveur miniDLNA
DLNA ?
Cet article, en français, explique plutôt bien ce qu’est le DLNA. Pour résumer, je dirai juste Le DLNA (Digital Living Network Alliance) a été créé par Sony et d’autres entreprises pour définir des pratiques permettant le partage de médias digitaux entre appareils électroniques. En 2015, selon Wikipedia, plus de 200 entreprises participaient à cette alliance.
Installation de mini DLNA sur notre Raspberry Pi 3
Copier le fichier de configuration pour le conserver avant modification
cp /etc/minidlna.conf /etc/minidlna.OLD
puis modifier /etc/minidlna.conf
Ma musique est dans /media/iomega/MULTIMEDIA/musique suite à l’installation du disque dur. Il ne faut pas mettre directement ce répertoire dans la configuration de miniDLNA car dans ce cas inotify ne fonctionne pas correctement.
On doit laisser un répertoire local (sur la carte SD) et on crée un lien vers la véritable localisation des fichiers de musique ensuite… Comme ça inotify fonctionne, c’est à dire qu’il surveille en permanence si des fichiers sont modifiés et met alors la base de données à jour (si les modifications sont réalisées pendant que miniDLNA fonctionne).
Je modifie donc les lignes suivantes (pour la ligne inotify=yes, j’ai simplement décommenté la ligne) :
media_dir=A,/var/lib/minidlna/music
db_dir=/media/iomega/MULTIMEDIA/
friendly_name= AL Music
inotify=yes
Dans le terminal du Pi, je définis un lien entre /var/lib/minidlna/music et /media/iomega/MULTIMEDIA/musique :
On peut verifier que ça fonctionne en cliquant sur /var/lib/minidlna/music dans filezilla. On est enmené automatiquement sur /media/iomega/MULTIMEDIA/musique
Je démarre le service avec la commande
service minidlna start
Le disque tourne pendant un bout de temps.
Le log est dans /var/log/minidlna.log . Pour savoir en temps réel ce qui se passe, je peux utiliser
service minidlna status
Dans l’explorateur Windows, un clic sur “Réseau » affiche AL Music. Si je clique dessus, j’accède au lien http://192.168.1.102:8200/.
Si j’ai modifié les fichiers pendant l’arrêt de miniDLNA, je redémarre en forcant la reconstruction de la base de données :
service minidlna force-reload
Gestion des utilisateurs
C’est assez bizarre que je ne doive pas définir d’utilisateur et de groupe pour miniDLNA. Mais comme tout semble fonctionner… Si jamais on a un problème, il faudra peut-être s’inspirer de cet article de la documentation Ubuntu.
Lire des radios internet avec MiniDLNA
Dans ce forum, la solution de phile est de créer une playlist contenant les url des radios souhaitées et le sauvegarder en mode .txt avant de le renommer avec une extension .m3u. L’auteur met même une playlist exemple en téléchargement sur dropbox ici.
Ensuite on place le fichier dans le répertoire musique du Pi, /media/iomega/MULTIMEDIA/musique/.
Avec Windows Media Player, si je clique sur « Playlists » dans la bibliothèque DLNA « AL Music », je vois toutes mes listes, y compris la liste que je viens de placer. Mais je ne peux pas la lire. PAr contre, si je lis une radio internet (CTRL U dans Windows Media Player puis lien vers un flux internet, par exemple http://chai5she.cdn.dvmr.fr/bfmbusiness pour BFM), je peux la mettre dans la play list créée et elle apparaît bien dans le contenu de mon Pi (/media/iomega/MULTIMEDIA/musiqueRadio – 2015 12 04 – HCFR.m3u.
C’est sans doute lié au problème d’utilisateur indiqué plus haut… A suivre !
Et maintenant ?
Dans un prochain article de cette même série, Un Raspberry Pi serveur de musique, j’expliquerai quelles applications on peut utiliser pour accéder au serveur à partir d’un PC ou d’un appareil mobile présent sur le réseau local. Un autre article expliquera comment ajouter un serveur UPnP à notre Raspberry Pi pour rendre l’utilisation vraiment confortable, voire même accéder à notre musique via internet.
Lorsqu’on dispose des contenus en colonnes, on utilise flexbox pour avoir des colonnes de hauteur égale. Sous Divi, on fait la même chose.
Pour l’instant je n’ai pas eu l’occasion d’essayer. Je préfère conserver cet article en mémoire pour une prochaine fois : How to Set Equal Column Heights using Flexbox (article de Divi Space, en anglais).
Et je n’oublie pas l’excellent tutoriel, en anglais également, de CSS-tricks : « A Complete Guide to Flexbox« .
Je mettrai mon article à jour lorsque je réaliserai cette opération avec un thème Divi.
Cet article date de début 2018. En avril 2020 j’ai écrit un autre article avec une autre solution qui semble mieux adaptée. je vous invite donc à consulter également mon article « Raspberry Pi : accès graphique à distance (VNC)« .
Je connecte mes Raspberry Pi en mode « headless », c’est à dire sans écran, clavier et souris dédiés. Je m’y connecte en SSH à partir de mon PC (Windows). VNC (Virtual Network Computing) permet d’accéder facilement à l’interface graphique du Pi, même à distance. Il permet également d’accéder au Pi en mode cloud, à distance et de manière sécurisée.
Activer VNC sur le Raspberry Pi (Raspbian Stretch)
En SSH (j’utilise Cygwin, comme je l’explique dans l’article « Mise en service d’un Raspberry Pi »), activer VNC par la commande raspi-config puis dans l’option « 5 Interfacing Options », choisir « VNC » puis « Yes ». VNC est maintenant activé.
Sur l’ordinateur distant (windows 10)
Télécharger RealVNC Viewer, (pour moi version Windows, je choisis MSI Installers).
Extraire le fichier zip puis choisir l’exécutable correspondant à ma version (64 bits pour mon PC)
Attention il faut choisir « entire feature will be installed on local hard drive” :
Ensuite, on clique sur « Next » puis « Install ».
On lance ensuite VNC Viewer sur le PC. On entre l’adresse IP du Pi, le nom d’utilisateur et le mot de passe correspondant. Et voilà, je dispose de l’interface graphique du Pi sur mon PC, comme si mes écran, clavier et souris étaient connectés au Pi directement !
Ca fonctionne parfaitement !
Avec Raspbian en mode ‘lite’
Le mode ‘lite’ de Raspbian ne contient pas l’interface graphique. C’est la distribution que j’installe le plus souvent car elle est moins gourmande en espace disque et me convient parfaitement puisque je n’ai jamais accédé au Pi par l’interface graphique. Ca changera peut-être maintenant que j’ai découvert VNC Viewer.
J’active VNC de la même manière que précédemment sur le Raspberry Pi.
Là si je démarre VNC Viewer, j’ai un écran mais noir et je n’ai pas accès au terminal. C’est donc sans intérêt apparemment (voir si dessous quand même !).
Que puis-je faire d’autre avec VNC Viewer et un Raspberry Pi ?
avoir un accès graphique à distance, même sur un Pi avec Raspbian ‘lite’ en utilisant le « virtual desktop ».
Se connecter à distance par une connexion « cloud ». C’est une manière sécurisée et gratuite d’avoir un accès à distance à notre Pi.
Pour l’instant je n’ai pas besoin d’un accès à distance et Cygwin me convient parfaitement pour l’accès SSH au terminal d’un Pi sans interface graphique.
Je verrai ces nouvelles fonctionnalités plus tard.
Il est souvent utile de savoir quelle version de Raspbian on a sur un Pi. Et évidemment, il est prudent de mettre régulièrement le Raspberry Pi à jour pour disposer des dernières mises à jour de sécurité et des dernières fonctionnalités.
Quelle est la version de Raspbian de mon Pi ?
Sur un Raspberry Pi 3 équipé de la dernière version de Stretch (au 7/1/2018), et après un update et upgrade.
La commande uname -a renvoie :
Linux AlMusicServer 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux
AlMusicServer est le « hostname » du Pi.
La commande cat /etc/os-release renvoie un texte beaucoup plus lisible :
Cette commande mettra à jour la liste des paquets de Raspbian. Il faut ensuite les installer, ce qui se fait avec la commande :
apt-get dist-upgrade
Cette commande mettra à jour Raspbian ainsi que le « firmware » du Pi. Par contre, elle n’installera pas de nouveaux paquets créés après la première installation de Raspbian.
apt-get clean
supprime les paquets téléchargés afin de nettoyer l’espace disque. Ils ne sont plus utiles puisqu’ils ont été installés.
J’essaie ici d’afficher un visuel écrit en processing (fichier .pde) tel quel sur mon site WordPress. J’utilise l’extension ProcessingJS for WordPress. Et ça fonctionne très bien, même s’il y a des limitations.
Sous le nom de l’extension, dans la page des extensions, il y a un lien vers une page « instructions ». C’est là que j’ai copié puis collé les shortcodes à utiliser. Mais c’est la même chose que sur la page de présentation de l’extension.
Essai n°1 : taper le code directement dans le contenu WordPress
Je copie et colle ce qui est proposé par l’auteur de l’extension :
J’ai un fichier d’essai sollewitt4.pde. Je le renomme sollewitt4.js sans rien changer d’autre que le type de fichier (pde devient js).
Dans la bibliothèque de média, je charge ce fichier puis je note son url (https://knowledge.parcours-performance.com/wp-content/uploads/2017/11/sollewitt4.js).
On voit que l’écran ne s’adapte pas à la page (pas responsive) – L’écran fait 1200 px par 800 px comme défini dans le sketch.
Avec un éditeur de texte type notepad++, je modifie donc la taille de l’écran défini dans setup, pour le ramener à 600px par 400 px, je charge le nouveau fichier dans les médias, sollewitt4-600-400.js et j’utilise le shortcode [pjs4wp url="/wp-content/uploads/2017/11/sollewitt4-600-400.js" bordercolor="#000"][/pjs4wp]
Et voilà !
Les limites de l’extension
L’écran de visualisation du sketch Processing ne paraît pas responsive, en tous cas pas lorsqu’il est défini en « dur », en disant explicitement size(1200, 800);
Si j’essaie en remplaçant la taille de l’écran par fullScreen();
Ca ne fonctionne pas du tout…
Donc pour l’instant les limites de cette extension sont :
impossible d’utiliser une fenêtre responsive ;
pas de possibilité d’avoir des fichiers associés au script.
Mais je suis déjà très contente d’obtenir ce résultat.
J’ai entendu parler plusieurs fois de Processing, sans trop savoir à quoi ça pouvait me servir ni comment l’utiliser. Et puis je me suis inscrite au cours « Art Numérique » des Beaux Arts de Quimper (site de l’école ou site de partage du cours). Et je m’y met.
Dans ce premier article sur Processing, dans la série Découverte de Processing, je vais simplement mettre des liens qui m’ont paru intéressants vers d’autres sites qui parlent de Processing.
Le site Beautiful Programming qui présente de très beaux exemples d’art génératif et interactif. J’aime tout particulièrement le « Infinite Arboretum » qui dessine automatiquement un arbre et le modifie selon ce que l’on fait avec la souris ou le clavier :
Un exemple d’arbre généré automatiquement. En cliquant, vous allez sur le site de l’auteur.
Un site regroupe de nombreux exemples avec le code : OpenProcessing
Algorithm Ink de Aza Raskin montre une réalisation intéressante et son code (en cliquant sur le bouton edit)
J’ai entamé une collection de travaux sur CodePen en lien avec p5.js, visible ici.
Références sur le code Processing
Processing.org est le site de référence pour Processing, et aussi pour p5.js une bibliothèque JavaScript qui lit le code Processing sur un site ou une application web.
The Nature of Code permet d’acheter un livre très intéressant sur Processing et aussi de le lire en ligne.
Des cours sur Processing sont disponibles sur le site de Electronic Media Studio. Le menu « Lectures » contient plusieurs cours et dans la barre latérale, on trouve de nombreux exemples d’exercices.
Processing Quick Start nous parle de Processing.js, une autre bibliothèque JavaScript pour Processing.
Le site du livre Design Génératif : un livre excellent, mais cher. J’ai pu l’emprunter à la bibliothèque de l’école des Beaux Arts de Quimper. On peut télécharger tous les exemples de codes sur le site. Beaucoup sont très très intéressants.
Embedding p5.js · processing/p5.js sur GitHub explique comment on peut visualiser du code Processing / p5.js sur un navigateur avec iframe dans une page html ou des sites de partage et visualisation de code tels que CodePen ou JSFiddle.
Les bibliothèques javascript citées plus haut (P5.js ou processing.js) permettent de créer des scripts visualisables en ligne. C’est quand même très pratique….
On peut contrôler l’arduino en C++ et simplement le faire communiquer avec Processing ou le contrôler en Processing. Voir les explications de Arduino Playground ou Learn Sparkfun.
un projet du site Arts Numériques, Twitter, arduino et processing dans une boite, qui associe une page PHP, un arduino, un capteur de choc et un haut parleur. L’idée générale semble être de secouer une boîte et d’afficher un texte qui provient de Twitter.
refaire l’oeuvre de Sol Lewitt tel que présentée sur le site de Pol Guezennec ici. Ajouter de la couleur aux lignes pour me familiariser avec la manipulation de couleurs.
Et je veux également voir comment intégrer ces travaux dans des pages web. J’essaierai donc CodePen, JSFiddle et les deux extensions WordPress ci-dessus.
Ca m’intéresserait aussi de savoir faire les images suivantes, il me semble que Processing est bien adapté pour :
Je veux depuis longtemps détecter le niveau de lumière dans mon garage pour déclencher automatiquement l’éclairage quand quelqu’un passe et qu’il fait trop sombre. Je me suis enfin décidée à réaliser un prototype. Je l’ai fait en deux temps : en simulation, en réel sur breadboard. Dans ce premier article de la série Arduino : détection de lumière et de mouvement, j’explique les étapes de simulation puis de montage en prototype. D’autres articles expliqueront comment communiquer les données à un serveur, et comment actionner une lampe à partir de ce montage.
Ce que je veux obtenir
Je veux un système qui, lorsqu’il détecte une présence exécute les actions suivantes :
afficher « motion detected » sur l’écran LCD ;
afficher la luminosité mesurée sur l’écran LCD ;
émettre un son pour indiquer qu’une présence a été détectée ;
allumer une LED rouge pour indiquer qu’une présence a été détectée.
Lorsqu’aucune présence n’est détectée, le montage ne fait rien d’autre que d’afficher « Waiting for motion ».
le détecteur de lumière répond par une valeur analogique de 0 à 1023 ;
le détecteur de présence est soit HIGH, soit LOW.
L’écran LCD est compatible avec le driver Hitachi HD44780 (comme la plupart des écrans avec 16 broches) et utilise la bibliothèque LiquidCrystal.h .
On utilise lcd.print(photocellReading); et surtout pas lcd.write(photocellReading); pour afficher la valeur de résistance photoélectrique. La deuxième commande aurait affiché le caractère ASCII correspondant à la valeur de photorésistance (par exemple « a » si la photorésistance avait une valeur de 97).
Les composants
J’avais certains composants et j’ai commandé les autres. Je n’indique la source des composants que pour ceux que j’ai commandé récemment (octobre 2017).
Sur Amazon.fr ici. Attention, les broches ne sont pas fournies avec, il faut en souder.
5.99 € les 2
Résistance 1 kΩ
1
marron / noir / noir / marron, pour l’écran LCD
Potentiomètre
1
Remplacé plus tard par une résistance 1.5kΩ
Résistance 10 kΩ
1
marron / rouge / noir / noir pour la photorésistance
LED rouge
1
Résistance 220 Ω
1
rouge/rouge/marron, pour la LED rouge
Haut-parleur
1
Je l’avais démonté d’un appareil usagé.
Tous mes composants (ou presque) sont prêts :
Arduino, mouvement et luminosité : Les composants (manque led rouge)
Sur la photo, il manque la led rouge et le haut-parleur. On notera aussi que je me suis trompée pour la résistance de 10KΩ, qui ne faisait que 1kΩ en fait. J’ai corrigé dans le montage.
Choix de la résistance associée à la cellule photoélectrique
J’ai lu attentivement ce tutoriel d’Adafruit. Il explique en anglais comment choisir la valeur de la résistance « pull-down » selon l’environnement lumineux que l’on a. On choisira une valeur faible (1 KΩ) si on veut différencier des niveaux importants de lumière. On préférera une résistance de 10 KΩ si on veut différencier des ambiances sombres, ce qui est mon cas.
Choix de l’alimentation
L’Arduino peut être alimenté en USB en 5V mais il est préférable de l’alimenter en 7-12V par l’intermédiaire de la prise jack. Pour le prototype, j’ai utilisé une alimentation 12V (DC, attention à ne pas choisir une alimentation en courant alternatif) et 500 mA.
Le schéma complet du montage Arduino + détecteur de mouvement + détecteur de luminosité + écran LCD + LED rouge + haut-parleur
Préparer le montage
Le schéma est assez complexe à réaliser. J’ai donc préparé trois éléments pour être certaine de ne pas me tromper et j’ai réalisé les cablages dans l’ordre de ces trois documents :
Elément 1 : câblage de l’arduino
De
A
Couleur
5V
breadboard
rouge
GND
breadboard
noir
A0
Photorésistance
mauve
2
RS LED
marron
3
E LED
gris
4
DB4 LED
bleu clair
5
DB5 LED
violet
6
DB6 LED
vert
7
DB7 LED
orange
8
PIR
jaune
11
LED
bleu vif
Elément 2 : câblage de l’écran LCD 16×2 :
De
A
Couleur
GND
breadboard
noir
VCC
breadboard
rouge
V0
Potentiomètre
orange
RS
Arduino 2
marron
RW
GND breadboard
noir
E
Arduino 3
gris
DB0
/
DB1
/
DB2
/
DB3
/
DB4
Arduino 4
bleu clair
DB5
Arduino 5
violet
DB6
Arduino 6
vert
DB7
Arduino 7
orange
LED
5V breadboard
rouge
LED
Résistance 1 kohm
noir
Elément 3 : cablage du breadboard (plaque de prototypage) :
Arduino, mouvement et luminosité : préparation branchements
Arduino, mouvement et luminosité : mouvement détecté, luminosité mesurée
Arduino, mouvement et luminosité : en attente de mouvement
Ca fonctionne comme je veux. Et l’affichage défile lorsqu’il est en attente.
Remplacement du potentiomètre
J’ai mesuré avec un ohmmètre la valeur de la résistance du potentiomètre correspondant à un affichage correct sur l’écran LCD (contraste permettant la lecture). J’ai obtenu 1.2 KΩ. J’ai enlevé le potentiomètre et mis une résistance de 1.5 KΩ (pas de 1.2 sous la main), qui fonctionne très bien. J’ai mis une borne de la résistance sur GND, supprimé le fil rouge pour le VCC du potentiomètre et mis l’autre borne de la résistance sur le fil orange qui va à V0 de l’écran LCD.
Le code qui inclut le potentiomètre n’a pas besoin d’être changé puisque le potentiomètre n’était pas lu par l’Arduino.
Et maintenant ?
Il va falloir que je place ce prototype dans un boitier et que je réalise les soudures pour rendre les branchements définitifs. Mais je veux aussi pouvoir envoyer les données mesurées à un serveur externe. Ces projets feront l’objet d’articles à venir, dans cette série Arduino : détection de lumière et de mouvement.
J’explique ici la longue liste des actions à réaliser pour déplacer le contenu d’un site de tests (développement) vers le site de production. En écrivant celà, je conserve une trace de tout ce qu’il faut faire et vérifier avant de déclarer que le site a été modifié avec succès.
Ce tutoriel s’applique en totalité dans le cas suivant :
Votre ancien site utilise WordPress et est hébergé sur Infomaniak et n’utilise pas l’un des thèmes Premium mis gratuitement à disposition par Infomaniak ;
Votre nouveau site utilise WordPress et sera toujours hébergé sur Infomaniak et utilisera le thème Divi (ou sans doute un autre des thèmes Premium) ;
Si vous utilisez un thème que vous pouvez télécharger via votre tableau de bord WordPress, ou que vous pouvez installer en FTP, le changement sera un peu plus simple puisque vous n’aurez pas à gérer l’installation du thème par le serveur Infomaniak.
Le principe général
J’ai un site de développement, qui s’appelle test.exemple.com. Il est finalisé et je veux que ce soit le site qui sera disponible sur exemple.com. Exemple.com est mon site de « production », le site que les internautes voient. Je souhaite que le transfert génère le moins de perturbation possible.
Pour l’essentiel, c’est simple :
importer les tables de la base de données de test (corriger le prefixe dans wp-config si nécessaire) dans la base de données du site à transformer ;
Copier les fichiers contenus dans wp-content du site de test vers le site à transformer ;
Eventuellement désactiver toutes les extensions puis les réactiver.
La difficulté c’est que le thème employé (DIVI) et certaines extensions (elegant theme (monarch, divi builder et bloom) sont fournies gratuitement par Infomaniak et doivent être installées à partir de l’interface Infomaniak pour que l’on dispose automatiquement des mises à jour ensuite. Si on les installe en FTP, la mise à jour automatique ne fonctionne pas.
La phase 1 : Préparation
Check list récapitulative : Phase 1 Préparation
« Photos » de l’ancienne version du site
Exporter les réglages du thème Divi ou son thème enfant
Dans site test Désactiver le thème DIVI et toutes les extensions, ou au moins les extensions Elegant Theme (Divi builder, bloom et Monarch)
Dans site test, mettre en mode maintenance
Sauvegarder la base de données du site de test
Sauvegarder la base de données du site à modifier
Faire une copie de wp-config.php du site à modifier
Faire une copie de wp-config.php du site de test
Copier les fichiers de wp-content du site à modifier
Copier les fichiers de wp-content du site de test
Supprimer les répertoires Divi, divi builder, bloom et monarch de la copie du site de test
Garder des traces de l’ancien site
On peut faire des « photos » des pages intéressantes du site qui va disparaître (exemple.com). J’ai utilisé les captures d’écran des outils de développement Chrome (article en anglais ici) .
Désactiver les extensions et changer de thème sur le site de test
Dans le tableau de bord WordPress du site test, désactiver le thème Divi et les 3 extensions Elegant Theme (monarch, divi builder et bloom). En effet, c’est Infomaniak qui gérera l’installation et l’activation de ces thèmes et sites.
Mettre le site test en mode maintenance
On devrait mettre le site de test en mode maintenance, de manière à ce que ce mode soit immédiatement appliqué dans le site à transformer. Pour ce faire, on peut se lire cet article, How To Put WordPress Site Into Maintenance Mode, ou utiliser l’extension « Maintenance Mode« , de Lukas Juhas.
Exporter une copie des bases de données
Sur le compte Infomaniak, les bases de données peuvent être exportées dans le menu bases de données d’infomaniak.
Pour les options, on choisit Gzippé, DROP Table et CREATE TABLE IF NOT EXIST
On exporte la base de données du site de test et la base de données du site à modifier.
Copier les fichiers de wp-content et wp-config.php
Avec le FTP en ligne d’infomaniak (en tous cas pour ceux qui ont des connexions lentes et ne veulent pas rapatrier les fichiers dans leur ordinateur), faire une copie des fichiers et répertoires suivants vers un répertoire ald-utils/site-date/ que j’ai mis à la racine de l’hébergement :
wp-config.php
fichiers de wp-content/plugins
fichiers de wp-content/themes
fichiers de wp-content/uploads
A faire pour le site à transformer au cas où.
A faire pour le site de tests. Pour celui-ci-, dans le répertoire de destination de la copie (je l’ai appelé ald-utils/test-exemple-2017-10-10/, j’ai supprimé les fichiers du thème Divi et des extensions Divi Builder, Bloom et Monarch. Je les réinstallerai via l’interface Infomaniak.
Phase 2 : transformer le site !
A partir de maintenant, toutes les actions concernent exclusivement le site cible.
Durant cette phase, le site de production entre en maintenance pour une durée de l’ordre de 10 à 15 minutes, plus si on veut faire les phases suivantes en maintenance aussi.
Check list récapitulative : Phase 2 transformation !
Mettre le site à transformer en maintenance
Copier les fichiers (sauf extension de maintenance)
Modifier si nécessaire le préfixe de base de données du site à transformer
Importer la base de données de test dans la base de données cible
changer les adresses des liens dans cible avec Search-Replace-DB-master
vérifier que tout fonctionne
Désactiver les extensions du site
Dans le tableau de bord Infomaniak, vérifier les réglages
Installer Divi et les extensions Elegant Theme souhaitées
Activer les extensions
Régler le thème enfant de Divi (ou le thème Divi)
Mettre le site à transformer en maintenance
mettre le site en maintenance, comme pour le site de test dans la phase de préparation.
Copier les nouveaux fichiers dans wp-content du site à transformer
copier les fichiers du site de test dans wp-content de la cible : répertoires plugins, themes et uploads. On supprime d’abord ceux qui sont présents (à l’exception de l’extension de maintenance) puis on fait la copie.
wp-config.php : Modifier si nécessaire le préfixe de base de données
Il faut que ce soit le préfixe de la nouvelle base que l’on va importer.
Importer la base de données de test dans la base de données cible
Importer la base de données de test dans la base de donnée de la cible.
changer les adresses des liens dans la cible avec Search-Replace-DB-master
On remplace https://test.exemple.com par https://exemple.com. Dans mon cas, 16 437 valeurs ont été changées !
On n’oublie pas de supprimer le répertoire dans lequel on a placé Search-Replace-DB-master.
vérifier que tout fonctionne
On vérifie pour :
le mode maintenance si on n’est pas connecté en tant qu’administrateur
le site si on est connecté en tant qu’administrateur
le tableau de bord WordPress si on est connecté en tant qu’administrateur
Dans le tableau de bord WordPress, désactiver toutes les extensions, sauf celle de maintenance
Dans le tableau de bord Infomaniak, vérifier les réglages
vérifier les réglages de l’hébergement :
version PHP 7.1
max_execution_time à 300 secondes
memory_limit à 640 Mo
Compression des fichiers ON
Module Google PageSpeed ON
Installer Divi et les extensions Elegant Theme souhaitées
Dans « mon site WordPress » >> Paramètres, activer le thème DIVI (sans importer le contenu de démonstration du thème)
installer (sans activer) Monarch et Bloom
L’extension Divi Builder est installée automatiquement lorsqu’on installe le thème Divi.
Activer les extensions
Nota : il vaut mieux ne pas activer WP Super Cache à ce stade.
Nota : le site doit avoir l’extension « Customizer Export/Import » de Beaver builder si on utilise un thème enfant de Divi.
Régler le thème enfant de Divi (ou le thème Divi)
Activer le cas échéant le thème enfant de Divi.
Importer les réglages de thème du site test (ils ont été exportés dans la phase 1 de préparation).
fichier en .dat si thème enfant pour la personnalisation (via Export/import tout en bas du menu de personnalisation du thème enfant) ou fichier Json si thème Divi utilisé directement
fichiers Json pour les options et la bibliothèque Divi
A ce stade, le site se présente exactement comme le site test initial. Il est cependant toujours en mode maintenance. On peut le remettre en production si on le souhaite.
activer et vérifier le réglage de google analytics
saisir les redirections dans l’extension redirections
dans réglages / lecture : autoriser la lecture par les robots
réactiver yoast seo
Vérifier que les widgets se sont correctement transférés
Désactiver le mode maintenance
activer WP Super Cache
Autres vérifications ou ajustements
L’extension Yoast SEO affichait qu’il y avait un problème de chargement de la page d’accueil. J’ai suivi les instructions de cette page d’aide Yoast et vérifié le site avec le test de sites pour mobiles de Google qui confirmait le problème. Ensuite, la page d’aide Yoast recommandait de faire « fetch the current status » dans le tableau de bord WordPress (fenêtre Yoast). Maintenant ça fonctionne correctement mais je n’ai pas du tout compris le problème…
Il y a eu une mise à jour du thème Divi et du Divi Builder dans les heures qui ont suivi la mise en ligne de la nouvelle version du site. Elle a fonctionné correctement. Mon protocole est donc bien adapté.
Et maintenant ?
Nous disposons maintenant d’une check-list précise de ce qu’il faut réaliser pour faire un changement important dans un site. Si vous avez des conseils à partager, vos commentaires seront bienvenus.
Cécile, qui utilise un site mis à jour récemment avec un thème enfant pour Divi m’a envoyé la demande suivante : « Le divi builder ne peut pas prendre en compte mes sauts de paragraphes. Peux-tu me dire quel code html ajouter pour ne pas que tout mes textes se retrouvent à la suite des uns des autres sans mise en page STP ».
Je suis allée regarder de plus près et, effectivement, impossible de conserver les retours à la ligne lors de la publication des contenus qu’elle créait dans des « bascules » (toggle en anglais). J’ai essayé diverses solutions puis fait une recherche Google. Là je suis tombée sur l’article « Divi Text Module loses formatting« .
J’ai appliqué la solution : installer et activer l’extension TinyMCE Advanced d’Andrew Ozz.
Pour les réglages de Tiny MCE Advanced :
Décocher « Activer le menu de l’éditeur » car je trouve l’éditeur actuel très bien ;
Cocher « Conserver les balises de paragraphe » car c’est là que se trouve la solution au problème de la perte des retours à la ligne :
Activer les améliorations pour tous les éditeurs :
Et voilà !
Si je crée des paragraphes séparés dans l’onglet visuel de l’éditeur d’un module Bascule de Divi :
Lorsque je regarde avec l’onglet texte, des balises <p> et </p> sont maintenant présentes !
Et l’affichage se fait maintenant comme je le souhaitais, même après publication de la page dans laquelle se trouvait ce module !
Commentaires récents