J’ai transformé un NerdMiner en dashboard pour mon Geekz Control Center

J’ai transformé un NerdMiner en dashboard pour mon Geekz Control Center

⚡ En bref

J’ai recyclé un NerdMiner basé sur un ESP32-2432S028, aussi surnommé Cheap Yellow Display, pour en faire un mini dashboard Wi-Fi. L’écran ne se connecte pas directement à tous mes serveurs : il interroge une API centrale du Geekz Control Center qui lui renvoie uniquement les informations utiles. Monitoring, alertes, chat Twitch et événements de stream peuvent ainsi tenir sur un petit écran 320 × 240 posé sur le bureau. Dans cet article, je vous montre le principe et des exemples reproductibles, mais volontairement pas la cartographie réelle de mon infrastructure.

Salut les Geekz, j’espère que vous allez bien ? Vous connaissez le NerdMiner ? Ce petit écran posé sur un bureau qui tente de miner du Bitcoin avec approximativement autant de chances de me rendre millionnaire que moi de battre John Cena à WrestleMania ? J’en avais justement un sous la main. Alors plutôt que d’attendre 847 vies qu’il me sorte un bloc, je lui ai trouvé un vrai boulot.

Parce que sous le concept du NerdMiner se cache quelque chose de beaucoup plus intéressant pour les bidouilleurs : un petit ESP32 avec du Wi-Fi, un écran couleur et juste ce qu’il faut de ressources pour afficher des informations. Et quand on a déjà un Geekz Control Center maison pour centraliser l’état de son homelab, forcément, les neurones commencent à faire des étincelles.

Quelques essais plus tard, mon ancien NerdMiner est devenu un mini terminal physique du Geekz Control Center. Il affiche l’état de mes serveurs et services, remonte les alertes et peut même basculer sur le chat et les événements Twitch pendant un stream.

Financièrement, il ne m’a toujours pas rapporté un rond. Mais au moins, maintenant, il bosse.

Du NerdMiner au Cheap Yellow Display

À la base, le NerdMiner est surtout un projet amusant autour du Bitcoin. L’idée consiste à utiliser un ESP32 pour participer à une sorte de loterie du minage en solo. Soyons clairs : on fait ça pour le fun, pas pour préparer sa retraite aux Bahamas.

Le modèle que j’utilise repose sur un ESP32-2432S028. Derrière ce nom qui ressemble à une référence de condensateur soviétique se trouve le fameux Cheap Yellow Display, ou CYD pour les intimes : ESP32, Wi-Fi, Bluetooth, écran tactile couleur 320 × 240, lecteur microSD… tout ça dans un format minuscule.

Et c’est précisément ce qui rend le détournement intéressant. Une fois qu’on oublie sa fonction de NerdMiner, on se retrouve simplement avec un petit ordinateur connecté équipé d’un écran. Pas besoin d’un Raspberry Pi complet pour afficher trois états de services et une alerte Twitch.

Le Geekz Control Center avait justement besoin d’un petit frère

De mon côté, j’avais déjà commencé à construire le Geekz Control Center, un dashboard maison chargé de centraliser différentes informations provenant de mon infrastructure. L’objectif n’est pas de remplacer tous les outils spécialisés qui existent déjà, mais d’avoir une vue simple et immédiatement compréhensible de ce qui m’intéresse.

Et c’est là que le NerdMiner recyclé trouve sa place.

Plutôt que d’ouvrir un navigateur ou de garder un écran supplémentaire allumé en permanence, le CYD peut rester posé sur le bureau et afficher l’essentiel. Un coup d’œil suffit pour savoir si tout va bien.

Pour les exemples de cet article, j’utiliserai volontairement des noms fictifs tirés de Star Wars : Death-Star, Tatooine, Endor, Hoth et Coruscant. Ils ne correspondent pas publiquement aux noms ou à l’organisation de mes véritables machines. On est là pour partager une bidouille reproductible, pas pour publier la carte au trésor de mon réseau.

Une architecture volontairement simple

Le principe le plus important du projet est probablement celui-ci : le NerdMiner n’a pas besoin de connaître toute l’infrastructure.

Je ne voulais surtout pas stocker sur l’ESP32 les accès à plusieurs serveurs, services ou API. Toute l’intelligence reste donc côté Geekz Control Center. Celui-ci collecte les informations, les normalise et expose un petit endpoint JSON que le CYD peut consulter en Wi-Fi.

Schématiquement, ça donne :

Serveurs / services → Geekz Control Center → API JSON → Wi-Fi → ESP32 / CYD

Et pour Twitch :

Twitch API / événements → Geekz Control Center → API → ESP32 / CYD

Le petit écran devient donc un client léger. Il demande : « Qu’est-ce que je dois afficher ? », récupère une réponse propre et fait son boulot.

Une API pensée pour un écran de 320 × 240

Le Control Center peut exposer un endpoint du genre :

GET /api/v1/status

Inutile d’envoyer trois romans à l’ESP32. Une réponse simplifiée peut ressembler à ça :

{
  "servers": [
    {"name": "Death-Star", "status": "online"},
    {"name": "Tatooine", "status": "online"},
    {"name": "Hoth", "status": "warning"}
  ],
  "services": {
    "media": "online",
    "web": "online"
  },
  "alert": {
    "active": true,
    "message": "Hoth : espace disque à surveiller"
  }
}

Les valeurs ci-dessus sont évidemment des exemples fictifs. L’intérêt est ailleurs : l’ESP32 reçoit exactement ce dont il a besoin et rien de plus.

Côté microcontrôleur, le principe reste classique : connexion au Wi-Fi, requête HTTP vers le Control Center, lecture du JSON puis mise à jour de l’écran.

HTTPClient http;

http.begin("https://control-center.example/api/v1/status");

int httpCode = http.GET();

if (httpCode == 200) {
    String payload = http.getString();
    // Parser le JSON puis mettre à jour l'écran
}

http.end();

Je simplifie volontairement le code ici. L’adresse est fictive et les mécanismes d’authentification ne sont pas reproduits. Ne mettez évidemment jamais un token, un mot de passe ou un secret directement dans un article public. Ça paraît évident, mais Internet m’a appris à ne plus sous-estimer ce genre de choses.

SERVICES, SERVEURS, ALERTES : faire rentrer le Control Center dans 320 × 240

Le plus amusant n’a finalement pas été de récupérer les données. Ça, un ESP32 sait très bien le faire. Le vrai défi, c’est de décider quoi afficher sur 320 × 240 pixels sans transformer l’écran en sapin de Noël illisible.

Plutôt que d’essayer de reproduire le dashboard complet, j’ai donc préféré plusieurs vues simples.

Une page SERVICES donne l’état global des éléments importants. Une vue SERVEURS permet de voir rapidement quelles machines répondent. Et ALERTES prend le dessus lorsqu’un événement mérite réellement mon attention.

Par exemple :

GEEKZ CONTROL CENTER

DEATH-STAR   ONLINE
TATOOINE     ONLINE
ENDOR        ONLINE
HOTH         WARNING

1 ALERTE

Pas besoin de graphiques dignes de la NASA. Si tout est vert, je continue ce que je fais. Si Hoth commence à clignoter comme le cockpit du Faucon Millenium après une mauvaise journée, là je regarde de plus près.

Et puis Twitch est arrivé dans l’équation

À ce stade, le NerdMiner recyclé était déjà beaucoup plus utile qu’à son premier jour. Mais puisqu’il reste sur le bureau, notamment lorsque je streame, une autre idée s’est imposée : pourquoi ne pas lui faire afficher Twitch ?

Le Geekz Control Center peut servir d’intermédiaire avec l’API Twitch et les événements utiles au stream. Là encore, le CYD n’a pas besoin d’embarquer toute la logique Twitch. Le serveur s’occupe de recevoir ou récupérer l’information et l’écran ne reçoit qu’une version adaptée.

En temps normal, il peut afficher le monitoring :

DEATH-STAR : ONLINE
SERVICES   : OK
ALERTES    : 0

Puis un événement Twitch arrive :

NEW FOLLOWER

GeekDu93

Bienvenue !

Ou un abonnement :

NEW SUB

x42PoulpeCosmique

MERCI !

Quelques secondes plus tard, l’écran revient automatiquement au Control Center.

Et surtout, il peut également servir de mini écran de chat Twitch. Pas question évidemment d’afficher quinze messages simultanément sur 320 × 240. Le but est plutôt de faire défiler les derniers messages de façon lisible, avec le pseudo puis le contenu.

CHAT TWITCH

DarkVador42:
"Ton serveur Hoth
a encore froid ?"

À partir de là, le NerdMiner n’est plus vraiment un NerdMiner. C’est devenu le petit terminal physique de tout mon bazar numérique.

Pourquoi ne pas brancher directement l’ESP32 à Twitch ?

Techniquement, on pourrait faire beaucoup plus de choses directement sur le microcontrôleur. Mais je préfère conserver une séparation nette.

Les identifiants sensibles restent côté serveur. Le Geekz Control Center dialogue avec Twitch, traite les événements et décide ce qui mérite d’être affiché. Le CYD ne reçoit qu’un message déjà préparé.

Ça évite aussi de devoir mettre à jour le firmware chaque fois que je change une règle. Si demain je décide qu’un follow doit rester affiché cinq secondes mais qu’un abonnement doit déclencher une animation pendant dix secondes, cette logique peut rester côté Control Center.

Et surtout : aucun Client Secret Twitch, token OAuth ou secret de webhook ne doit se retrouver dans le firmware publié sur GitHub. Net, propre et sans bavure.

Pourquoi ne pas simplement acheter un écran de monitoring ?

Parce que ce serait beaucoup moins drôle.

Voilà. Section suivante.

Bon, plus sérieusement : le CYD était déjà là. Il consomme peu, possède son propre Wi-Fi, ne demande pas de Raspberry Pi supplémentaire et son écran suffit largement pour des informations synthétiques. Lui donner une seconde vie coûte donc pratiquement zéro euro.

Et il y a aussi quelque chose que j’aime particulièrement dans ce genre de projet : prendre un appareil conçu pour une fonction extrêmement précise et lui faire faire complètement autre chose.

Le NerdMiner voulait chercher un Bitcoin. Il surveille maintenant un homelab et affiche Twitch. On a connu des reconversions professionnelles plus difficiles.

Ce qu’on peut encore lui faire faire

Le projet peut évidemment aller beaucoup plus loin. L’écran tactile ouvre la porte à une navigation entre les pages, à l’acquittement de certaines alertes ou au choix manuel entre monitoring et Twitch. On peut imaginer des statistiques du blog, le nombre de visiteurs, l’état d’une publication programmée ou encore des informations liées au stream.

Mais je veux garder une règle : le petit écran doit rester un coup d’œil, pas devenir une usine à gaz.

Le jour où il me faut six menus, douze sous-menus et un manuel de 80 pages pour savoir si Death-Star est en ligne, j’aurai raté quelque chose.

Un NerdMiner qui ne mine plus rien… et c’est très bien comme ça

Au final, c’est probablement l’un des détournements matériels que je préfère dans le Geekz Control Center. Pas parce qu’il est techniquement révolutionnaire, mais parce qu’il transforme un gadget amusant en quelque chose que je peux réellement utiliser tous les jours.

Un ESP32, un écran 320 × 240, une connexion Wi-Fi et une petite API suffisent pour obtenir un dashboard physique capable de surveiller un homelab, afficher des alertes et devenir un compagnon de stream Twitch.

Et surtout, l’architecture reste suffisamment générique pour être adaptée à autre chose. Votre backend peut être un dashboard maison, Home Assistant, un service qui interroge Proxmox ou n’importe quelle API capable de renvoyer quelques données propres. Le CYD, lui, s’en fiche complètement.

Il veut du JSON et des pixels.

Pour le Bitcoin, par contre, j’ai officiellement abandonné l’idée de devenir millionnaire avec lui.

Bretzel de merle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *