Le Café d’Azeroth à Paris

Le Café d’Azeroth est un évènement promotionnel organisé par Blizzard qui a eu lieu le week-end dernier à Paris, au Bercy Village devant le cinéma UGC, pour promouvoir la prochaine extension de World of Warcraft : Midnight et sa nouvelle fonctionnalité majeure : le housing.

Le café éphémère était installé dans la réplique d’une maison humaine du Cap Fondateur, l’île de housing de l’Alliance. La maison, ainsi que le décor à l’intérieur ont été reproduits à partir des modèles 3D du jeu, ce qui renforçait le côté immersif de l’expérience.

Le temps d’attente pour accéder au café était très long, parfois jusqu’à 2 heures. Heureusement, plusieurs personnalités de la communauté étaient présents ce qui laissait paraitre le temps beaucoup moins long.

À l’extérieur, un QCM permettait de remporter quelques goodies, à savoir un pin’s de Xal’atath et un code pour recevoir la mascotte en jeu du bébé sélénien.

En parallèle, une soirée presse réunissant des créateurs de contenu et influenceurs gaming a été organisée le vendredi, suivie de la projection du film Warcraft: Le Commencement de Duncan Jones.

La soirée presse était l’occasion de rencontrer d’autres créateurs et créatrices de contenu WoW comme Sam Vostok, Kao, Cinderys, Melody de Mamytwink et Yünalescä de Blizzspirit. Les non initié(e)s ont pu s’essayer au housing sur les PC pré-configurés. Les invité(e)s ont aussi pu repartir avec un goodie bag bien garni.

L’évènement presse offrait surtout l’opportunité de discuter avec Maria Hamilton et Jay Hwang, respectivement productrice exécutive et artiste principal sur le housing. Je leur ai montré ma maison dans l’arbre avec sa taverne secrète, ils l’ont beaucoup appréciée. Jay m’a même demandé comment j’avais construit l’arbre, ce qui prouve que même les créateurs du housing n’ont pas fini de découvrir tout ce qu’il est possible de créer avec.

Cette opération promotionnelle a été de mon point de vue une franche réussite. Ce fut l’occasion de revoir des amis et de passer du temps avec des créateurs et créatrices que j’apprécie. Pour Blizzard, l’installation a éveillé la curiosité des badauds et a permis de faire connaitre un peu mieux World of Warcaft au grand public.

La nouvelle maison perchée dans l’arbre de mon druide Elfe de la Nuit renferme un secret

Le prepatch 12.0.0 de World of Wacraft : Midnight est sorti il y a quelques semaines. Ce patch apporte de nombreuses nouveautés dans le housing, notamment les maisons Elfe de la Nuit.

Précédemment, je vous avais présenté ma maison dans un arbre pour mon druide Elfe de la Nuit. Malheureusement celle-ci avait l’apparence d’une maison humaine. La maison Elfe de la Nuit n’ayant pas les les mêmes proportions, j’ai donc décidé de la reconstruire en intégralité… mais un élément est venu s’ajouter au build.

L’extérieur a donc été entièrement refait. La quasi totalité du budget est partie dans les arbres, des [Pommier automnal du cap Fondateur] pour le tronc et des [Acacia de Tranchevent] pour les branches, ce qui a permis de construire un arbre beaucoup plus imposant. Pour économiser davantage sur le budget, les larges rampes d’accès du précédent build ont été remplacées par des échelles faites à partir de [Clôture en bois vieillissante] entrelacées et inclinées à 45°, ce qui donne un aspect beaucoup plus aéré et naturel à l’ensemble.

Afin que l’intérieur reste cohérent avec l’extérieur, il a également été refait presque intégralement. Seules les pièces contenant l’orgue, l’escalier avec les toilettes-débarras ainsi que le puits-de-lune/onsen ont été conservées, ces éléments ayant demandé énormément de travail, je n’avais pas le courage de les refaire.

La chambre, la salle à manger ainsi que le coin cheminée ont été refaits quasiment à l’identique. La cuisine a été améliorée, avec l’ajout d’un garde-manger.

Mais je vous avais parlé d’un secret…

Depuis plusieurs mois, j’avais en projet de refaire l’artwork de l’écran de chargement de Musician, mon add-on de WoW permettant aux personnages joueurs de jouer de la musique. Cet add-on comporte plusieurs milliers de fichiers son (il y a un fichier .ogg par note et par instrument) qu’il faut charger en mémoire ce qui peut prendre plusieurs secondes au lancement du jeu, d’où la nécessité d’afficher un écran de chargement.

L’artwork utilisé jusqu’ici était une image faite à partir de vieux screenshots mettant en scène des joueurs de mon royaume qui s’enjaillent dans une taverne avec mon personnage.

L'ancien artwork de Musician, montrant Lenwë, mon druide, jouant de la guitare face à un public restreint.

J’avais donc en tête de réaliser un nouvel artwork, représentant un concert d’un groupe de musiciens dans une grande taverne, face à un public endiablé. Malheureusement, n’ayant aucune compétence en dessin ni en modélisation 3D, cette idée n’est restée qu’au stade de projet.

Puis vient le housing.

Dans le plus grand secret, j’ai construit la taverne de mes rêves, avec son bar, une grande scène et des instruments de musique, le tout caché dans ma petite maison dans l’arbre, bien cachée pour être sûr que personne ne la trouve pendant sa construction.

Il ne restait plus qu’à inviter quelques dizaines de joueurs rôlistes, adeptes de Musician, pour reproduire la scène et prendre ce screenshot désormais légendaire :

Concert dans la taverne secrète, nouvel écran de chargement de l'add-on Musician

Mis à part quelques détails ajoutés sur Photoshop comme les baguettes du batteur et les cordes du luth, aucune modification n’a été apportée au screenshot. Le niveau de détail que permet d’obtenir le système de housing est impressionnant !

Bien que construite dans le but d’y prendre des screenshots, la taverne est entièrement opérationnelle pour recevoir des clients avec de nombreuses boissons, des tables garnies, des toilettes et même un carré VIP !

Vous souhaitez savoir où est cachée cette taverne et la visiter ? Regardez la vidéo !

Ma maison dans l’arbre pour mon druide kaldorei sur WoW

Je me suis fait un petit kiff sur Valérie Damidot Simulator le housing de WoW : une cabane dans un arbre pour mon druide kaldorei.

La maison n’est que niveau 3 mais ça m’a tout de même permis d’ajouter beaucoup de détails à l’extérieur ainsi qu’à l’intérieur, sur une surface modeste.

Il y a quelques éléments personnalisés assez complexes que je vous laisse le plaisir de découvrir.

Je ne vais plus trop y toucher avant la sortie de Midnight puisqu’on aura accès à un véritable style kaldorei pour les maisons.

Recycler un vieux smartphone en contrôleur de chauffage connecté

L’an dernier, dans le cadre du dispositif CEE “Coup de Pouce” du gouvernement, j’ai bénéficié de l’installation de thermostats connectés Tiko D-Box entièrement gratuite.
L’objectif est double : faire des économies d’énergie en optimisant la consommation de chauffage pièce par pièce et délester le réseau en cas de pic de consommation en coupant temporairement le chauffage, tout cela de façon transparente.
Comme vous le savez, je suis toujours chaud pour tester de nouveaux gadgets, surtout quand c’est gratuit !

Un thermostat Tiko D-Box relié à un radiateur

Avant l’installation de Tiko, mon chauffage était contrôlé par un système Flash Piloteco constitué d’un module gestionnaire situé dans le tableau électrique et d’un boîtier de commande au mur. Ce système repose sur les fils pilote des radiateurs pour planifier le mode de chauffage et d’activer le délestage grâce à un signal envoyé par le compteur Linky. Quand à la température, elle se réglait sur chaque radiateur.

Hormis la planification un peu hasardeuse à programmer, c’était terriblement simple à utiliser puisqu’il suffisait d’appuyer sur un bouton du boitier Piloteco pour changer le mode de chauffage d’une zone ou de changer la température directement sur le radiateur.

Le système Tiko n’apporte finalement qu’une seule fonctionnalité supplémentaire, à savoir permettre de régler et piloter le chauffage depuis une application mobile, à distance et sans même avoir besoin d’être à la maison, en plus de fournir des informations détaillées sur la consommation.

Capture d'écran de l'application Tiko

L’inconvénient, c’est qu’il faut désormais installer une application mobile sur un smartphone et partager ses identifiants de connexion à quiconque souhaite pouvoir régler le chauffage. De plus, même si les boîtiers D-Box disposent de leur propre connexion 4G, on reste tributaire d’un serveur connecté à Internet.

J’ai donc eu l’idée de ressortir mon vieux smartphone, un iPhone 5S qui dormait dans un tiroir, pour le réinitialiser, y installer l’application Tiko et le fixer au mur à la place du boîtier Piloteco. Ainsi, n’importe qui pourrait régler le chauffage à sa guise sans avoir besoin d’installer quoi que ce soit ni de partager mes identifiants.

Malheureusement, la dernière version d’iOS compatible avec l’iPhone 5S est la 12.5.7 or l’application Tiko requiert iOS 14 au minimum.

L'Application Tiko dans l'App Store sous iOS 12.5.7

J’ai donc décidé de développer ma propre application, avec une interface simplifiée, optimisée pour l’iPhone 5S et qui regrouperait toutes les commandes ainsi que les informations principales sur un seul écran.

Je me suis donc tourné vers la technologie Next.js / React puisque c’est celle que j’utilise au quotidien et l’I.A. Claude Code pour m’assister dans le développement, surtout pour générer la partie interface et régler les bugs de compatibilité avec iOS 12.5.7 car ce n’est pas le plus fun à faire.
Quant à l’API Tiko, faute d’avoir pu trouver une documentation officielle, j’ai fait de l’ingénierie inversée sur la version web de l’application en inspectant les requêtes GraphQL avec mon navigateur.

Sur un seul et même écran, il est désormais possible pour chaque pièce de visualiser et ajuster la température, l’humidité et définir le mode du chauffage.

Capture d'écran de l'application Tiko Control Panel sur iPhone 5S

Le mode sombre a été choisi car la colle de l’écran de l’iPhone a un peu jaunit avec le temps et ce défaut n’est pas visible en mode sombre.

Pour que l’interface fonctionne en plein écran et qu’elle reste ouverte au déverrouillage de l’iPhone, je l’ai simplement ajoutée à l’écran d’accueil d’iOS à partir de Safari.

L’application ne requérant pas beaucoup de ressources pour fonctionner, je l’ai installée sur mon NAS Synology. Un Raspberry Pi aurait aussi très bien pu faire l’affaire.

Script de démarrage de l'application dans DSM

Pour fixer l’iPhone au mur, rien de plus simple : j’ai récupéré mon ancienne coque que j’ai collée à la néoprène sur un cache pour boîtier d’encastrement qu’il suffit d’installer à la place du boîtier Piloteco. Même pas besoin de vis !

Le problème reste maintenant d’alimenter l’iPhone en continu pour éviter qu’il ne se décharge.

J’ai découpé un vieux chargeur USB avec l’espoir de le faire rentrer dans le boîtier d’encastrement mais il s’est avéré trop volumineux.

J’ai donc décidé de l’installer directement dans le tableau électrique, en le branchant au disjoncteur divisionnaire du gestionnaire Piloteco. Ce dernier n’étant plus relié à son boîtier de commande mural, j’ai tout simplement réutilisé ses 2 fils du boîtier pour y acheminer le 5 V jusqu’à l’iPhone.

Tableau électrique avec le chargeur USB

À l’autre bout du fil, pour que l’iPhone se mette en charge, il ne suffit pas de lui fournir du 5 V via le port USB. Il faut également injecter une tension de +2.0 V dans les pins data D+ et D-.
Il est très facile de faire un réducteur de tension de 5 V en 2 V avec 2 résistances : la valeur de la résistance entre GND et D+/D- doit être égale à 2/3 la valeur de celle entre +5V et D+/D- (par exemple 220 ohms et 330 ohms). Comme je n’avais que des 220 ohms en stock, j’ai fait un montage de 220 et 2 × 220 en série ce qui donne une tension de 1.67 V mais qui s’avère au final être suffisant pour mettre l’iPhone en mode charge.

Diagramme du réducteur de tension pour le chargeur USB

Voilà comment réaliser une interface pour chauffage connecté, tactile, moderne et simple à utiliser, en utilisant exclusivement des pièces de récupération.

Montage mural de l'iPhone 5S avec l'application Tiko Control Panel

Si vous souhaitez vous aussi faire cette installation, le code de l’application est sur GitHub : https://github.com/LenweSaralonde/TikoControlPanel

L’application est optimisée pour un usage en plein écran sur un iPhone 5S/SE et un logement de 6 pièces donc vous aurez peut-être besoin de l’adapter selon vos besoins.

N’hésitez pas à me faire part de vos retours !

Créer un contrôleur ARGB avec Arduino Nano

J’ai récemment monté un nouveau PC trouvé dans les poubelles avec des ventilateurs RGB vraiment sympas, mais malheureusement, la carte mère est un peu ancienne et ne dispose pas de header ARGB. Plutôt que d’acheter un contrôleur ARGB tout fait, j’ai décidé d’en fabriquer un moi-même avec un Arduino Nano qui traînait dans mes tiroirs. Voici comment j’ai procédé !

Câblage

L’avantage de l’Arduino Nano, outre sa taille facile à glisser dans un boîtier, est qu’il fonctionne en 5 V. Il est donc facile de l’alimenter avec un câble Molex ou en USB.

Le câblage est très simple, le seul composant additionnel requis est une résistance de 470 ohms. Le pin D2 transmet le signal ARGB aux ventilateurs et le pin D3 est connecté au bouton Reset du PC qui servira plus tard à contrôler l’éclairage. Il est possible d’alimenter l’Arduino en 5V depuis l’alimentation du PC ou bien d’utiliser en câble USB.

Schéma de câblage de l'Arduino Nano

L’Arduino peut être collé facilement avec un adhésif double face. Pour ma part j’ai utilisé une bande Command 3M ce qui permet de le détacher pour le reprogrammer puis le replacer par la suite. L’important est que l’adhésif soit suffisamment épais pour éviter tout court-circuit avec le métal du boitier.

Code

Pour piloter les LEDs, j’ai utilisé la bibliothèque FastLED, qui est une référence pour contrôler des LEDs adressables. Elle supporte une tonne de modèles de LEDs (WS2812B, WS2811, APA102, etc.) et offre des fonctions très pratiques pour créer des animations.

Installation de FastLED

Dans l’IDE Arduino :

  1. Croquis → Inclure une bibliothèque → Gérer les bibliothèques
  2. Rechercher « FastLED »
  3. Installer la dernière version

Exemple simple

Voici un bout de code pour tester que tout fonctionne. Les LEDs devraient toutes s’allumer en blanc. Pensez à modifier le nombre de LED et le type (les WS2812B sont très répandues).

#include <FastLED.h>

#define NUM_LEDS 8         // 8 LEDs
#define DATA_PIN 2         // Pin de données
#define LED_TYPE WS2812B   // Type de LED
#define COLOR_ORDER GRB    // Ordre des couleurs (important !)

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(255);
}

Réglage de la colorimétrie

Ce premier test a été plutôt… décevant. Pour du blanc pur (255, 255, 255), j’ai obtenu une couleur dans les bleu-rose.

Après quelques recherches, j’ai découvert que les LEDs WS2812B bon marché (comme celles de mes ventilateurs) ont souvent des composantes RGB très mal équilibrées.

La solution : FastLED.setCorrection()

FastLED dispose d’une fonction pratique qui permet de corriger automatiquement ces déséquilibres : FastLED.setCorrection(). Il suffit de lui passer une valeur hexadécimale qui compense les défauts de vos LEDs.

FastLED.setCorrection(0xFFD750);  // Ma correction personnalisée

Pour trouver la bonne valeur, il n’y a qu’une seule solution : faire des essais successifs jusqu’à trouver une bonne valeur d’équilibre. Cela demande beaucoup de patience mais le résultat final sera à la hauteur de vos attentes !

Astuce : Déterminer automatiquement le nombre de LEDs

Au début, je n’étais pas sûr du nombre de LEDs de mes ventilateurs. Il n’existe pas de documentation détaillée pour mes ventilateurs donc j’ai créé un petit programme de test qui allume chaque LED une par une :

#include <FastLED.h>

#define MAX_LEDS 255        // Maximum possible
#define DATA_PIN 2
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define DELAY_MS 200        // Délai entre chaque LED (en millisecondes)

CRGB leds[MAX_LEDS];

void setup() {
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, MAX_LEDS);
  FastLED.setBrightness(100);  // Luminosité moyenne pour le test
  FastLED.clear();
  FastLED.show();
}

void loop() {
  // Allume chaque LED successivement en rouge
  for (int i = 0; i < MAX_LEDS; i++) {
    FastLED.clear();           // Éteint toutes les LEDs
    leds[i] = CRGB::Red;       // Allume la LED courante en rouge
    FastLED.show();
    delay(DELAY_MS);
    
    // Si vous voyez cette LED s'allumer, notez son numéro !
    // Le comptage commence à 0, donc LED 0 = première LED
  }
  
  // Pause avant de recommencer
  FastLED.clear();
  FastLED.show();
  delay(2000);
}

Création d’une animation « Fleurs de cerisier »

Une fois la base fonctionnelle, je voulais créer quelque chose de visuellement agréable. J’ai opté pour un effet « fleurs de cerisier » (sakura) avec des tons roses qui se déplacent doucement le long des LEDs.

Le concept

L’idée est simple : générer aléatoirement des couleurs dans les tons roses pastel, puis les faire circuler d’une LED à l’autre avec des transitions fluides. Ça donne l’impression de pétales qui flottent au vent.

Génération des couleurs

CRGB generateBlossomColor() {
  byte hue = random(220, 256);    // Teintes rose-rouge
  byte sat = random(50, 130);     // Saturation basse = effet pastel
  byte val = random(200, 255);    // Luminosité douce
  return CHSV(hue, sat, val);
}

J’utilise le modèle HSV (Teinte, Saturation, Valeur) plutôt que RGB car c’est beaucoup plus intuitif pour créer des palettes de couleurs. Les valeurs aléatoires donnent un côté organique très sympa.

Animation fluide avec interpolation

Le secret d’une animation fluide, c’est l’interpolation. Au lieu de changer brutalement de couleur, je fais une transition progressive :

CRGB color1 = colors[i];
CRGB color2 = colors[i + 1];
leds[i] = color1 % (255 * (1 - position)) + color2 % (255 * position);

La variable position varie de 0 à 1, créant une transition en douceur. J’incrémente cette position à chaque frame avec un petit FADE_STEP de 0.003, ce qui donne une animation très lente et hypnotique.

Contrôle de la luminosité avec le bouton du boîtier

La dernière amélioration, et pas des moindres : pouvoir contrôler la luminosité sans avoir à reprogrammer l’Arduino. J’ai utilisé le bouton Reset de mon boîtier (celui qui sert normalement à réinitialiser le PC mais qui fait double emploi avec le bouton Power) pour cycler entre différents niveaux de luminosité.

Connexion du bouton

Le bouton reset de la plupart des boîtiers PC a deux fils : un signal et une masse. Je les ai connectés à la pin D3 de l’Arduino (avec la résistance pull-up interne activée) et au GND.

pinMode(BUTTON_PIN, INPUT_PULLUP);

Niveaux de luminosité

J’ai défini 6 niveaux de luminosité : 100%, OFF, 20%, 40%, 60%, 80%. À chaque pression sur le bouton, on passe au niveau suivant.

const uint8_t brightnessLevels[] = { 255, 0, 51, 102, 153, 204 };

Sauvegarde en EEPROM

Enfin, le niveau de luminosité est sauvegardé dans l’EEPROM de l’Arduino. Comme ça, quand j’éteins et rallume mon PC, la luminosité reste celle que j’avais choisie !

EEPROM.update(EEPROM_BRIGHTNESS_ADDR, brightnessIndex);

Le code complet

Voici le code complet que j’utilise actuellement sur mon PC. N’oubliez pas d’adapter NUM_LEDS selon votre configuration ! Il est disponible dans ce gist : https://gist.github.com/LenweSaralonde/3ded8133064a41106923e75b11ee9269

Résultat final

Le résultat est franchement stylé, surtout pour du matériel d’entrée de gamme et issue en grande partie de récupération.

Ça claque, hein ?

Personnalisation

Il est possible de modifier très simplement le code pour donner un tout autre style :

Autres effets de couleurs :

  • Bleu glacier : hue = random(140, 180)
  • Coucher de soleil : hue = random(0, 40)
  • Arc-en-ciel : hue = random(0, 255)

Vitesse d’animation :

  • Animation rapide : FADE_STEP = 0.01
  • Animation ultra lente : FADE_STEP = 0.001

Il est aussi possible d’utiliser le bouton pour switcher entre différents patterns et couleurs. La seule limite est votre imagination !