BIP2026 – Miroir Miroir

Quatre machines te jugent, quatre étiquettes en témoignent. Colle-les dans ton passeport : aucune douane ne l’acceptera. Mais toi, tu sauras enfin qui tu es (à peu près).

Il y a quelques mois, on m’a posé une question simple : « Tu saurais bricoler des trucs interactifs pour la BIP ? » J’ai dit oui. Évidemment…

Résultat : quatre installations pour Miroir Miroir, l’exposition de la Biennale de l’Image Possible 2026, à Liège, du 17 octobre au 13 décembre. Quatre bornes avec écran tactile, des caméras cachées un peu partout, une Kinect (2010) sortie du placard et quatre imprimantes d’étiquettes. Le tout est développé au Liège Hackerspace.

Le principe est le même partout : vous participez, la machine vous « regarde juge », et vous repartez avec une étiquette à coller dans votre passeport de visite. Un miroir, mais imprimé.

Note : cet article est le « making-of technique », brut de décoffrage. Les photos et les captures montrent le projet à nu, sans habillage scénographique. Une page dédiée arrivera bientôt sur /art : elle présentera les installations telles qu’elles sont montées dans l’exposition, avec leur mise en scène.

Le socle commun

Les quatre bornes ont le même squelette. Chacune fait tourner une app web statique dans Chromium en mode kiosk, sur un écran tactile Elo en 1024×768, avec une scène fixe mise à l’échelle. Pas de framework, pas de build : du HTML, du CSS et du JS, point.

  • Autorun : à l’ouverture de session, kiosk.sh lance Chromium en --kiosk, et une boucle le relance s’il plante. Parce que oui, il plantera.
  • Impression silencieuse : un petit service Python (print_server.py) reçoit l’étiquette, la passe en PDF et l’envoie à CUPS. Pas d’aperçu à l’écran, pas de boîte de dialogue.
  • Imprimante : une LW650XL PRO qui parle TSPL, avec son pilote CUPS. Les étiquettes font 59×102 mm.
  • Bandeau « petite pause technique » sur l’accueil, dès qu’une imprimante, une caméra ou la Kinect ne répond plus.
  • Une vue de réglage cachée donne accès au debug, au redémarrage et à l’extinction propres.

01. Le vrai test psychométrique

Le plus sage des quatre. Il tourne sur un Raspberry Pi 4 : huit questions et un résultat tiré parmi quatre, imprimé sur l’étiquette. Le contenu est rédigé dans un tableur Excel, et un script Python (build_content.py) le transforme en content.js. Les correcteurs n’ont jamais à toucher au code.

02. Des yeux derrière la tête

Le visiteur appuie sur « Prendre une photo ». Quatre caméras IP Tapo C110, cachées dans la pièce, déclenchent toutes en même temps.

Le piège : ces caméras n’ont pas d’URL de snapshot, seulement un flux RTSP. Et, un navigateur ne lit pas du RTSP, surtout derrière un mot de passe (bonjour CORS). La solution est un petit server.py qui sert l’app et relaie /snap/1…4 : à chaque appel, ffmpeg extrait une image du flux. Une caméra injoignable est simplement ignorée, et la borne affiche discrètement la panne.

Debug : Des yeux derrière la tête

03. Vide ton sac

Un vrai faux contrôle de sûreté d’aéroport. Le visiteur vide ses poches dans un bac et le glisse sous le scanner. L’écran affiche le contenu en « rayons X » et la borne imprime une étiquette AUTORISÉ.

La V1 utilisait un capteur GPIO et une Pi Camera sur un Raspberry Pi 4. La version finale tourne sur un mini PC avec une webcam USB fixée au-dessus du bac, et OpenCV qui :

  1. repère le bac grâce à sa bordure orange,
  2. attend que le bac entier soit visible et que plus rien ne bouge dedans pendant 1,5 s,
  3. recadre la photo sur l’intérieur du bac,
  4. garde une empreinte du contenu pour ne pas scanner deux fois le même bac.

Bonus : les néons faisaient défiler des bandes sombres sur l’image, donnant des faux positifs. Solution : passer la webcam en anti-scintillement 50 Hz.

04. Re-Kinect-Toi

Retour aux vieilles recettes : une Kinect de 2010, bricolée pour son alimentation.

Le visiteur se place sur une croix au sol, 3, 2, 1, puis il a 10 secondes pour bouger. Ses mains, ses pieds et sa tête tracent une signature à l’encre : trait épais quand le geste est lent, fin quand il est rapide.

Kinect v1 → USB → kinect_bridge.py → WebSocket → Page kiosk
  • Matériel : une Kinect Xbox 360 (bricolée avec un adaptateur secteur 12 V) sur un mini PC Core i5.
  • Pilote : libfreenect. Il faut blacklister gspca_kinect, le pilote webcam du noyau, qui lui pique le périphérique.
  • Squelette : MediaPipe Pose sur la caméra couleur. La profondeur sert à mesurer la distance et à isoler la personne du décor, qu’on « apprend » une fois la salle vide.
  • Repli : sans squelette, le pont devine la tête, les mains et les pieds à partir de la silhouette en profondeur. Ça marche même dans le noir.

Un dernier mot honnête

Vue simulée des étiquettes

Pour être franc, sur ce projet, j’étais seul, avec quatre bornes à livrer et des deadlines qui ne se négociaient pas. Alors, je me suis laissé emporter par la vibe… avec Claude comme binôme. Le pont Kinect, le relais RTSP, la détection du bac en OpenCV, le pilote d’imprimante TSPL… Seul, je n’aurais jamais bouclé tout ça dans les temps.

Et le plus surprenant, c’est que j’ai appris beaucoup de petites choses en route : libfreenect, MediaPipe, les caprices du 50 Hz, des finesses CUPS… Le code n’est pas parfait, mais il tourne bien, il est documenté, et je sais ce qu’il fait.

L’IA n’a pas fait le projet à ma place. Elle m’a permis de le faire tout court.


Tout le code est sur GitHub : iooner/bip2026-modules.

Merci à Manon, Louise et Marc des Chiroux pour leur patience et pour leur confiance, renouvelée et un brin kamikaze.

Bambu Lab ne respecte pas vos droits…

Mise à jour
Après avoir présenté les arguments exposés dans cet article, Bambu Lab a finalement répondu favorablement à ma demande.

Ça m’agace… J’aimais les produits de chez Bambu Lab, un vrai challenger à mes yeux. Mais… Après le changement des conditions d’utilisation, en partie rétropédalé tout en prenant ses clients pour des idiots incapables de comprendre, mon avis a radicalement changé.

Deux vidéos (en anglais, pour approfondir le sujet) :

Bref… Le support de Bambu Lab ne respecte pas mes droits de consommateur européen dans le cadre de la garantie légale, ni même son propre “Warranty Statement” (déclaration de garantie).

Contexte

Début novembre, mon imprimante 3D Bambu Lab, une X1C avec le module multi-matériaux (AMS), tombe en panne. L’imprimante ne détecte plus l’AMS et adopte des comportements anormaux.

Je contacte évidemment le support pour obtenir une solution.

Après plusieurs semaines de discussions, de logs, de photos et d’absences de réponses de la part du support, je reçois enfin une carte de remplacement.

Surprise : c’est la poste ! Votre colis a été endommagé. La carte de remplacement est fichue, à mon sens en raison d’un emballage inadapté.

Une éternité plus tard, je reçois enfin la carte (avec une bobine de PLA basique en « dédommagement », oh seigneur la révérence…). Je la remplace, je me casse la tête sur le système de mise à jour, car il faut fournir le numéro de série de la carte au support avant de pouvoir installer le firmware…

76 jours…

76 jours pour obtenir une solution. 76 jours. Rien que cette partie mériterait un article complet. Je demande donc une prolongation de cette durée sur ma garantie légale de 2 ans.

« Pendant la période de réparation ou de remplacement, la période de garantie légale est suspendue jusqu’à ce que le consommateur récupère un produit fonctionnel. » Article 17(2) de la Directive 2019/771

Bambu Lab ne peut pas refuser cette prolongation, car elle est obligatoire dans toute l’UE. Peu importe leur politique interne, la directive européenne prévaut sur leurs propres conditions générales.

Bambu Lab affirme que leur garantie n’inclut pas cette prolongation en cas d’arrêt de la machine (Additional Considerations #4).

Le comble ? Une ligne plus bas dans leurs propres conditions, ils contredisent ce refus en précisant que la garantie est suspendue durant les réparations. (Additional Considerations #5). J’estime que, puisqu’ils ne m’ont pas proposé un retour, mais que je fasse la réparation moi-même, cet article s’applique.

Capture au 03/02/2025 du « Warranty Statement » du 12/10/2024

Et maintenant ?

J’ai mis Bambu Lab en demeure de respecter mes droits et de prolonger ma garantie de la durée de l’arrêt de la machine, soit 76 jours. J’attends la suite avec impatience.

Mise à jour du 04/02/2025. Par souci d’honnêteté et de transparence, voici la réponse finale du support.

Malgré la réponse positive du support, c’est dommage d’avoir dû en arriver là pour faire appliquer un droit, qui est en plus inscrit dans leurs propres conditions.

Disclaimer

Je ne suis pas juriste et cet article ne constitue pas un conseil juridique. J’expose les faits, le fruit de mes recherches personnelles et d’une analyse croisée entre le droit européen de la consommation et les conditions générales de Bambu Lab, telles qu’elles étaient disponibles à la date de l’ouverture du ticket au support.

Sources

SNCB, je te hais de tout mon cœur

Disclaimer

Cet article reflète uniquement mes opinions personnelles. Il ne constitue ni une démarche nuisible, ni une attaque intentionnelle envers la SNCB. Les propos rapportés se fondent sur mes expériences individuelles et mes observations subjectives.

Mon objectif est de partager une perspective personnelle sur les dysfonctionnements perçus du service public ferroviaire et de susciter un débat ouvert et constructif. Je ne revendique pas l’exactitude absolue des informations mentionnées, celles-ci pouvant être incomplètes ou sujettes à interprétation.

Toute mention de tiers, de politiques ou d’initiatives est faite à titre informatif et critique, conformément à mon droit à la liberté d’expression et d’opinion. Si une information ou une interprétation se révélait inexacte, je reste ouvert à toute rectification et invite à signaler toute erreur via e-mail.

Je suis totalement ouvert à la discussion et au débat avec la SNCB.


Navetteur désabusé

J’ai toujours défendu le transport en commun et attaqué la voiture individuelle avec une conviction quasi évangélique. J’étais ce casse-pied “anti-voiture” qu’on déteste tant. J’étais convaincu que les alternatives à la voiture individuelle étaient l’avenir, tant pour notre mobilité que pour le volet écologique.

J’ai toujours cru dans la force du collectif, dans l’idée qu’un train plein de voyageurs est infiniment plus vertueux qu’un embouteillage de voitures polluantes. Mais être un usager fidèle de la SNCB, c’est une épreuve de patience quotidienne.

Mais aujourd’hui, j’ai 32 ans, je suis navetteur depuis plus de 17 ans. Dix-sept ans d’espoir, de loyauté au rail et de crises de nerfs. Je me rends à l’évidence : la SNCB n’y arrivera pas.

J’ai décidé de m’épancher sur les innombrables dysfonctionnements qui me conduisent, à contrecœur, à abandonner le train. Un besoin de vider mon sac après une ultime frustration.

Retards, annulations & compositions réduites

Les 3 cavaliers de l’Apocalypse.

Les retards, d’abord. Si fréquents qu’ils deviennent la norme. Combien de fois ai-je manqué des rendez-vous ou des correspondances ? Combien d’heures ai-je perdues sur des quais glacés, les yeux rivés sur un écran et en écoutant des annonces vides de sens ? Combien de fois ai-je dû trouver une solution alternative qui finissait souvent par un membre de ma famille venant en voiture me chercher en pleine nuit ?

Les annulations, ensuite. Et pas seulement en cas de grève. Chaque semaine, des trains sont supprimés sans explication claire, forçant les voyageurs à s’entasser dans des rames ou à improviser des trajets interminables.

Les trains bondés : souvent, les compositions sont réduites, avec un nombre insuffisant de wagons. Résultat : des voyageurs tassés comme du bétail, debout pendant des dizaines de minutes, parfois des heures.

Et que dire des grèves récurrentes. Sujet sensible… Le jeu des syndicats dans cette question est un autre débat.

Un petit pipi avant la suite ?

Et que dire des toilettes payantes dans les gares, souvent gérées par des prestataires privés, mais installées dans des bâtiments financés par des fonds publics ? Cette situation me semble inacceptable.

Les usagers, qui ont déjà payé leur billet (ou leur abonnement), sont contraints de débourser encore de l’argent pour accéder à un service de base. Tout cela, dans des infrastructures construites avec l’argent des contribuables.

Ce mélange de privatisation des profits et de collectivisation des coûts est une insulte aux usagers et aux citoyens. En somme, les gares, censées être des lieux accueillants et publics, deviennent des espaces où tout, même l’accès à un simple lavabo, se monnaie.

Ah oui ! Les WC sont gratuits dans les trains. Faut-il encore être dans un train et que les WC soient praticables.

Et le support client ?

À tout cela s’ajoute une expérience client particulièrement frustrante. Lorsqu’un problème survient – retard majeur, correspondance ratée, remboursement à demander – contacter le support SNCB est une épreuve en soi.

Les délais de réponse sont interminables. Il n’est pas rare de recevoir une réponse plusieurs semaines après avoir déposé une plainte. Dans mon cas, aucune réponse n’est jamais arrivée.

Les réponses automatisées… Trop souvent, les seuls retours sont des e-mails promettant une réponse « bientôt », car le service serait « saturé ». Ces messages standardisés ne font qu’ajouter à la frustration des usagers, déjà ignorés par le système.

Nous mettons tout en œuvre pour vous répondre dans les 20 jours. – 9 nov. 2023

Un sentiment d’abandon. Ces délais, combinés à des réponses vagues ou inutiles, donnent l’impression que l’usager n’est pas une priorité. Sauf erreur de ma part, aucune nouvelle de cette plainte. Bientôt 1 an.

Maintenant que je suis dans le train

Vous prendrez bien un peu de cynisme ? Au micro… « Laissez les places libres de vos bagages et le passage dégagé. » Dans des trains proposant de moins en moins de rangement et des usagers debout dans les allées, nous sombrons doucement dans le cynisme.

N’oubliez pas, le cas échéant, de payer le supplément vélo si vous arrivez à le caser dans un train.

Je croise les doigts pour arriver à bon port… bonne gare. Nous ne sommes pas à l’abri d’une défaillance technique nous empêchant de continuer notre voyage.

Vous prendrez bien un peu « d’open » data ?

Comme développeur passionné par les données, j’ai décidé de me renseigner sur « l’OpenData » de la SNCB afin de calculer moi-même la fiabilité des trains. Malheureusement, ma confiance déjà bien entamée envers la SNCB a encore diminué en découvrant leur approche des données ouvertes.

Premièrement, l’accès à leur API nécessite une inscription préalable ainsi que l’obligation de fournir des informations personnelles. Cela soulève une question sur la nécessité de ces exigences pour un service censé être public et transparent.

Deuxièmement, alors que l’OpenData repose sur le principe que les données financées par de l’argent public devraient être accessibles à tous (dans l’idée du « Public Money, Public Code » de la FSFE, cette initiative souligne que si de l’argent public est utilisé, le code source devrait également être public, favorisant ainsi la transparence, la collaboration et l’innovation), la SNCB semble ne pas partager cette philosophie.

Leur API est limitée par des conditions restrictives, notamment une clause st ipulant que l’utilisation des données « … ne nuira pas à son image ni à sa réputation ».

Cette condition pose problème : que signifie précisément « nuire » dans ce contexte ? Publier des statistiques fiables sur les retards, les annulations ou la détérioration du service entre-t-il dans cette définition ? Si tel est le cas, cela revient à limiter l’usage des données aux seules initiatives valorisant l’image de la SNCB, rendant ainsi impossible toute démarche objective ou critique.

Cette approche soulève des doutes sur la volonté réelle de transparence de la SNCB. La transparence ne devrait pas être conditionnelle, et la vérité sur la fiabilité d’un service public devrait pouvoir être analysée sans crainte de représailles ni restrictions injustifiées. Ces conditions d’utilisation vont à l’encontre des principes fondamentaux de l’OpenData, qui reposent sur une utilisation libre et non biaisée des informations publiques.

SNCB, So Long, and Thanks for All the Fish*

Il y a quelques années encore, je trouvais des excuses à ces défaillances. Je croyais aux promesses d’amélioration, aux investissements dans les infrastructures. À mesure que les années passent, les choses ne me semblent pas aller mieux, peu importe la couleur politique.

J’ai essayé, vraiment. Pendant des années, j’ai supporté ces frustrations en me répétant que c’était pour une bonne cause, que prendre le train était un acte citoyen. Mais, à force d’attendre sur les quais, de rater des rendez-vous, d’arriver stressé et en sueur, mon enthousiasme est mort.

Et aujourd’hui, j’en suis arrivé là : je préfère me tourner vers d’autres solutions. Je passe mon permis de conduire, j’achète une voiture et tant pis pour le reste… Non par choix, mais bien par dépit. Parce que, malgré les bouchons et les coûts, elle me garantit quelque chose que la SNCB ne peut plus m’offrir : la fiabilité.

Ce n’est pas une décision que je prends à la légère, et encore moins sans tristesse. Abandonner le train, c’est pour moi un échec personnel et une déception immense. Mais, je refuse de continuer à sacrifier mon temps, mon énergie et ma sérénité pour un service qui, à mon sens, ne respecte pas ses usagers.

À la SNCB, je n’ai qu’une chose à dire : je te hais de tout mon cœur. Pas parce que je te méprise, mais parce que j’avais placé en toi tant d’espoir et de confiance.

* Citation tirée du livre Le Guide du voyageur galactique (The Hitchhiker’s Guide to the Galaxy) et elle est devenue une manière humoristique de dire « Au revoir ».


Sources & Liens

Cet article a été uniformisé et sa grammaire ainsi que son orthographe ont été corrigées par une IA.