# Ingénierie inverse du pinsetter : comment nous avons intégré un équipement de bowling ancien à une application mobile
Après trois ans d'échecs pour extraire des données des machines mécaniques de bowling (pinsetters), l'équipe de Brooklyn Bowl s'est tournée vers l'ingénierie inverse de l'unité critique de numérisation des capteurs. Les principaux obstacles étaient une interface propriétaire, une pile technologique obsolète et un manque de documentation. Dans cet article, nous décomposons les particularités architecturales du système, les raisons pour lesquelles les méthodes d'intégration standard ont échoué, et la solution qui, bien qu'elle ne soit pas élégante, fonctionne vraiment.
Architecture du pinsetter et flux de données
Un pinsetter mécanique est une machine complexe qui évoque le chargeur automatique d'un char d'assaut. Après le lancer de la boule, un capteur optique se déclenche pour détecter l'objet qui passe. Puis, un cadre de mesure percé s'abaisse pour vérifier la présence de quilles à chaque position grâce à des photodiodes ou des sondes de contact. Les données des capteurs alimentent l'unité NextGen, qui les convertit en événements de jeu (comme le nombre de quilles abattues). Cette unité se connecte à un serveur Dell OptiPlex 3020 (modèle 2014) via une interface série en boucle de courant propriétaire. Le serveur gère l'état du jeu et affiche les résultats sur des moniteurs au-dessus des pistes.
Il est crucial de comprendre que la machine elle-même ne numérise pas les signaux — c'est l'unité externe NextGen qui s'en charge. Les données sont envoyées au format hex brut sans protocole standard. Le système ne prend pas en charge les technologies modernes comme IoT ou MQTT, rendant l'intégration avec des systèmes externes (comme une application mobile) extrêmement difficile.
Trois défis d'intégration fondamentaux
Les tentatives d'extraction de données ont buté sur trois obstacles insurmontables :
- Restrictions commerciales de Brunswick et AMF. Les fabricants bloquent délibérément les intégrations tierces pour monopoliser les ventes de modules additionnels (par exemple, pour afficher les scores sur des sites web ou intégrer des cartes de club). Toute solution de contournement nécessite l'achat d'une licence, ce qui est économiquement non viable.
- Pile technologique obsolète. Le serveur Dell exécute FoxPro et des bases de données Sybase SQL Anywhere. FoxPro verrouille la base pendant les écritures, provoquant le crash du logiciel principal en cas de lecture simultanée. Sybase nécessite des pilotes ODBC, et les identifiants sont enfouis dans les binaires de Brunswick, rendant l'accès presque impossible sans décompilation.
- Pas de mécanisme de push et données instables. Le système ne pousse pas les données lors des événements ; le serveur les interroge en continu. De plus, l'état du jeu peut être corrigé : par exemple, il peut d'abord enregistrer deux quilles abattues, puis instantanément les dix. Ces corrections asynchrones provoquent des incohérences de données, rendant un flux d'événements fiable impossible.
Approches échouées : analyse des faiblesses
L'équipe et les ingénieurs embauchés ont testé quatre méthodes, toutes non viables en production :
- Lecture de la base sur le serveur Dell. La connexion à FoxPro ou Sybase causait des conflits de verrouillage et faisait planter le logiciel principal. Même les lectures réussies présentaient des délais inadaptés aux applications mobiles en temps réel.
- Intégration avec l'unité NextGen. L'accès direct à la boucle de courant donnait des données hex brutes, mais sans documentation, le décodage était un casse-tête. L'analyse du trafic montrait que le format varie selon l'état de la machine, et les corrections d'état ajoutaient du « bruit » au flux.
- Vision par ordinateur sur la piste. L'installation d'une caméra et l'utilisation d'OpenCV pour détecter les positions des quilles nécessitaient un éclairage et une calibration parfaits. Dans des conditions réelles (mouvements des joueurs, ombres, reflets), la précision tombait en dessous de 70 %, ce qui était inacceptable.
- Réécriture complète de NextGen. L'émulation de l'unité était techniquement redoutable : elle devait reproduire toutes les interactions avec le pinsetter, y compris la gestion des corrections d'état. Le projet s'est enlisé au stade prototype en raison de sa complexité.
Des approches comme l'OCR des moniteurs via un répartiteur HDMI ou l'émulation d'imprimante n'ont pas été testées — leur fiabilité semblait faible en raison de points de défaillance supplémentaires.
Solution fonctionnelle : remplacement de l'unité de numérisation
La configuration actuelle fait de l'ingénierie inverse de l'unité NextGen. Au lieu d'intégrer le système obsolète, les ingénieurs ont construit un module personnalisé qui se connecte directement aux capteurs du pinsetter. Ce module :
- Capture les signaux analogiques des photodiodes et sondes de contact.
- Numérise les données à 100 Hz, en filtrant les déclenchements faux.
- Génère des événements au format JSON et les envoie au serveur via MQTT.
L'avantage clé est l'isolation du système obsolète : le nouveau module contourne complètement Dell et NextGen, évitant toutes les restrictions. L'inconvénient est les modifications physiques sur chaque machine, nécessitant 2-3 heures d'arrêt de piste. Mais pour le réseau de 12 salles de bowling de Brooklyn Bowl, c'était la solution optimale.
Enseignements clés pour les ingénieurs
- Ne perdez pas de temps à contourner les verrous commerciaux. Si un fabricant restreint délibérément l'accès (comme Brunswick), isolez les composants critiques au lieu d'intégrer les systèmes obsolètes.
- Les données brutes des capteurs sont vos meilleures amies. Dans les systèmes sans interfaces numériques, se brancher directement sur les capteurs analogiques est souvent plus simple que de décoder des protocoles propriétaires.
- L'ingénierie inverse demande de la patience. L'analyse du trafic en boucle de courant a pris 6 mois mais a révélé les motifs des données hex pour filtrer les corrections d'état.
Cette solution n'est pas parfaite, mais elle fonctionne. Pour d'autres propriétaires de salles de bowling avec du matériel similaire, nous serons ravis de partager notre expérience — contacts en fin d'article.
— Editorial Team
Aucun commentaire pour le moment.