# Reverzní inženýrství pinsetteru: jak jsme propojili staré bowlingové vybavení s mobilní aplikací
Po třech letech neúspěšných pokusů o získání dat z mechanických bowlingových strojů (pinsetterů) se tým Brooklyn Bowl uchýlil k reverznímu inženýrství klíčového bloku digitalizace senzorů. Hlavní překážky — proprietární rozhraní, zastaralý technologický zásobník a absence dokumentace. V tomto článku rozebereme architektonické specifičnosti systému, důvody neúspěchu standardních metod integrace a řešení, které, i když není elegantní, funguje.
Architektura pinsetteru a tok dat
Mechanický pinsetter je složitý agregát, který připomíná systém automatického nabíjení tanku. Po hodu míčem se aktivuje optický senzor, který zaznamená průchod objektu. Poté se spustí měrná rámka s otvory, která kontroluje přítomnost kuželek v každé pozici pomocí fotodiod nebo kontaktní sondy. Data ze senzorů jdou do bloku NextGen, který je převádí na herní události (např. počet shoděných kuželek). Tento blok je připojen k serveru Dell OptiPlex 3020 (z roku 2014) přes proprietární sériové rozhraní na bázi smyčky proudu. Server zpracovává stav hry a zobrazuje výsledky na monitorech nad dráhami.
Důležité je pochopit, že samotný stroj signály nedigitalizuje — to dělá externí blok NextGen. Data se přenáší v syrovém hex formátu bez standardního protokolu. Systém nepodporuje moderní technologie jako IoT nebo MQTT, což integraci s externími systémy (např. mobilní aplikací) extrémně ztěžuje.
Tři zásadní problémy integrace
Pokusy o získání dat narazily na tři neproniknutelné bariéry:
- Kommerční omezení Brunswick a AMF. Výrobci záměrně blokují třetí strany, aby monopolizovali prodej doplňků (např. pro zobrazení výsledků na webu nebo integraci s klubovými kartami). Jakýkoli obchvat vyžaduje koupi licence, což řešení činí ekonomicky nevýhodným.
- Zastaralý technologický zásobník. Server Dell pracuje s databázemi FoxPro a Sybase SQL Anywhere. FoxPro blokuje databázi při zápisu, což vede k pádům softwaru při souběžném čtení. Pro Sybase jsou potřeba ODBC ovladače a přihlašovací údaje jsou uložené v binárních souborech Brunswick, což přístup bez dekompilace znemožňuje.
- Absence push mechanismu a nestabilita dat. Systém neposílá data podle událostí, ale server ji neustále dotazuje. Navíc stav hry se může korigovat: např. nejprve se zaznamená shodění dvou kuželek a o chvíli později všech deseti. Tyto korekce přicházejí asynchronně, což způsobuje nesrovnalosti v datech a znemožňuje spolehlivý tok událostí.
Neúspěšné přístupy: analýza selhání
Tým a pozvaní inženýři otestovali čtyři metody, všechny se ukázaly jako neproveditelné v provozu:
- Čtení databáze na serveru Dell. Pokusy o připojení k FoxPro nebo Sybase vedly ke konfliktům blokování a pádům hlavního softwaru. I při úspěšném čtení se data aktualizovala se zpožděním, nevhodným pro mobilní aplikaci v reálném čase.
- Integrace s blokem NextGen. Přímé připojení k smyčce proudu dalo přístup k syrovým hex datům, ale bez dokumentace dešifrování bylo rébusem. Analýza provozu ukázala, že formát dat se mění podle stavu stroje a korekce stavu vytvářely „šum“ v toku.
- Počítačové vidění nad dráhou. Instalace kamery a rozpoznávání pozic kuželek pomocí OpenCV vyžadovala dokonalé osvětlení a kalibraci. V reálných podmínkách (pohyb hráčů, stíny, odlesky) přesnost klesla pod 70 %, což řešení diskvalifikovalo.
- Kompletní přepsání NextGen. Pokus o emulaci se ukázal technicky náročný: pro správnou funkci bylo třeba reprodukovat všechny nuance interakce s pinsetterem včetně zpracování korekcí stavu. Projekt byl zastaven na prototypu kvůli vysoké složitosti.
Netestované byly metody jako OCR z monitorů přes HDMI splitter nebo emulace tiskárny — jejich efektivita byla odhadnuta jako nízká kvůli dalším bodům selhání.
Funkční řešení: nahrazení bloku digitalizace
Aktuální implementace vychází z reverzního inženýrství bloku NextGen. Místo integrace se stávajícím systémem inženýři vytvořili vlastní modul, který se připojuje přímo k senzorům pinsetteru. Tento modul:
- Odebírá analogové signály z fotodiod a kontaktních sond.
- Digitalizuje data s frekvencí 100 Hz a filtruje falešné spouštěče.
- Vytváří události ve formátu JSON a odesílá je na server přes MQTT.
Klíčovou výhodou je izolace od legacy systému: nový modul nekomunikuje s Dell ani NextGen a obchází všechna omezení. Nevýhodou je nutnost fyzické úpravy každého stroje, což vyžaduje zastavení dráhy na 2–3 hodiny. Pro síť 12 bowlingů Brooklyn Bowl se to však ukázalo jako optimální řešení.
Co je důležité: klíčové závěry pro inženýry
- Neplýtvejte časem obcházením komerčních blokád. Pokud výrobce záměrně omezuje přístup (jako Brunswick), soustřeďte se na izolaci klíčových komponent, ne na integraci s legacy systémem.
- Syrová data senzorů jsou váš nejlepší přítel. V systémech bez digitálního rozhraní je přímé připojení k analogovým senzorům často jednodušší než dekódování proprietárních protokolů.
- Reverzní inženýrství vyžaduje trpělivost. Analýza provozu smyčky proudu trvala 6 měsíců, ale odhalila vzory v hex datech, které se staly základem filtrování korekcí stavu.
Toto řešení není ideální, ale funguje. Pro další majitele bowlingů se stejným vybavením jsme připraveni sdílet zkušenosti — kontakty na konci článku.
— Editorial Team
Zatím žádné komentáře.