II. Préparation de l’environnement de travail (07 juin 2025)
Je dois avancer sur le projet d’un autre client, mais je reconnais que je n’en ai pas très envie. Mon esprit est complètement absorbé par ce projet d’application de pilotage de la Z21. Aujourd’hui, c’est samedi. Je décide donc de consacrer mes week-ends à ce projet passion, et de réserver mes journées de semaine à mes activités professionnelles 🙂 Divulgâchage, je ne m’y tiendrai pas, le désir de faire avancer le projet étant bien trop grand 😉
Je ressors un vieux Raspberry Pi 3B, j’achète une boîte ventilée, puis je flashe ma carte SSD avec la dernière version de Raspbian 12 Lite. Je configure le système et j’installe les outils dont j’aurai besoin : Apache2, Python, PHP8 et MariaDB. En parallèle, j’installe une machine virtuelle Windows 11 sur mon Mac. Elle me sert à lancer l’application Z21 Maintenance, notamment pour mettre à jour le firmware de la centrale numérique. J’en profite aussi pour modifier sa configuration réseau, histoire qu’elle s’intègre parfaitement dans mon écosystème.
Tout est prêt. L’ancien meuble TV, désormais vide, me sert de laboratoire de recherche : un switch 4 ports, un Raspberry Pi, une Z21 noire et sa petite sœur la Z21 blanche, des câbles, un bout de voie, deux ou trois aiguilles motorisées, un décodeur d’aiguille, et une locomotive – ma fameuse CC 72000. De quoi effectuer tous les tests nécessaires.
Première étape : se plonger dans la documentation technique (en anglais, bien sûr) pour comprendre comment communiquer avec la Z21. On y parle de trames hexadécimales à convertir en binaire, à envoyer ensuite en UDP vers la centrale. J’ai choisi de passer par le réseau LAN, comme le fait l’application Z21 pour tablette ou smartphone.
Allez, c’est parti. Mon premier objectif est d’obtenir des informations techniques de la centrale, comme son numéro de série. Je tente d’abord avec Python, mais ce n’est pas mon langage de prédilection. Je pourrais m’en sortir, mais j’ai envie d’avancer vite. Cela fait déjà un an que je stocke du matériel, et même mon double plateau à étage de 1 mètre par 3,5 mètres est prêt à être installé… alors franchement, je n’ai pas envie de perdre encore plus de temps. Je décide donc d’utiliser le langage que je maîtrise le mieux, et dans lequel je me débrouille plutôt bien : le PHP. Ce sera donc une WebApp, hébergée sur un nano-serveur. Et comme j’envisage aussi de piloter l’ensemble depuis un périphérique de type manette ou pupitre de loco, je pense déjà à structurer mon application autour d’une API : envoi de commandes avec paramètres, avec retour Json.