Et voilà, une nouvelle version 2.2.0 est poussée sur Github, et elle permet enfin de lire l'adresse de la loco sur le réseau.
Le chemin a été long, jusqu'à ce que je me demande si l'original CommandStation-ex fraichement téléchargée de leur Github sait, elle, déjà lire les CVs. Et là, surprise, en utilisant l'entrée par la console via la commande <R 1 2 3> et en configurant la voie de programmation, ça marche ! Et même plutôt bien puisque trois locos différentes avec des décodeurs différents ont été testées avec un taux de réussite de plus de 90%.
Boosté par cette découverte, alors que je commençais à émettre des doutes sur mon matériel ou sur la capacité d'un ESP32 à lire une donnée analogique, je suis reparti de plus belle à la chasse au fautif dans Labox v2. Et je me suis aperçu après moultes essais que c'est la mise à jour de l'affichage sur l'écran Oled qui nuit à la qualité de réception des Ack (acknowledgement) , ces petites consommations de la loco qui font vibrer la machine et répondent à la centrale. Je pense que les timings de rafraîchissement de l'écran décalait d'autant les mesures de consommation, et on devait louper la plupart des acks qui ont un timing très précis. Et en bloquant le rafraîchissement de l'écran, par ailleurs inutile à ce moment, le temps de la lecture d'un CV le problème est résolu !
Je tente alors de faire fonctionner la lecture de CV sur la voie principale puisque la carte Labox n'a pas de sortie pour une voie de programmation. Là encore je rencontre un mur, j'ai tout tenté en essayant de leurrer le moteur de lecture des Ack, la génération des signaux DCC, mais rien n'y a fait. Je me suis alors rabattu sur une honteuse astuce pour contourner le problème. Ce n'est pas élégant, mais ça marche.
Impossible de contourner la lecture pour la convaincre de fonctionner sur la voie principale, la lecture ne marche que si dans la configuration on déclare une voie de programmation. Et cette configuration est fabriquée au lancement de l'ESP32... Vous me voyez venir ? J'ai tout simplement fait redémarrer l'ESP pour le changer de mode. Le mode est stocké tout au bout de la mémoire EEPROM pour ne pas gêner un éventuel usage par le moteur DCC, un seul et unique octet qui est soit un 'M' soit un 'P' qui dit dans quel mode sera la centrale lorsqu'elle redémarrera. Si rien n'a jamais été écrit là, on reste en mode pilotage ou 'M'.
En mode 'M', tout fonctionne correctement avec les applis compatibles. Les trains sont pilotés, ainsi que les accessoires comme sait le faire le successeur de DCC++. Lorsque l'on va dans le menu et que l'on demande à lire une CV, un 'P' est écrit dans l'EEPROM, et ESP.restart() est appelé ce qui redémarre le microcontrôleur. Pendant ce démarrage en mode 'P', je n'ai pas réussi à enlever la connexion Wifi qui est pourtant inutile pour ce mode, par contre l'affichage reste sur l'écran de lecture avec un ---- qui représente la valeur non lue. Dès que possible la lecture est lancée et la valeur remplace le '----'. Si l'on appuie sur le bouton 'Select' de la centrale, un 'M' est écrit dans l'EEPROM puis l'ESP est redémarré, et on revient dans le mode de pilotage.
C'est à peu près transparent, mais avec le redémarrage on a perdu les valeurs courantes des vitesses et des fonctions de la loco... Mais ça vaut mieux que de ne pas avoir de lecture de CV. Ca veut dire aussi que les commandes série de lecture/écriture (comme le <R 1 2 3>) ne fonctionneront pas en mode pilotage.
A noter que j'ai mis à jour la partie CommandStation-ex avec leur dernière version qui apporte notamment des corrections sur la lecture pour certains décodeurs récalcitrants.
En espérant que vous pourrez tester.