Domov/ delo/Košarkarski semafor
Ustvarjalec · 2024 · Športna tehnologija

Košarkarski semafor

WordPress vtičnik za košarkarski semafor v realnem času — operaterska plošča, živ prenosni prikaz in OCR branje rezultata iz kamere. Zgrajen za delovanje v dvorani, kjer omrežje ni zagotovljeno.

Vloga Ustvarjalec
Leto 2024
Šport Košarka
Platforme splet (admin) · splet (prikaz)
Področje Športna tehnologija · Realni čas · Prenos
Interval sinhronizacije stanja
500 ms
polling, pogojen s spremembo
Načini vnosa
2
ročno + OCR kamera
Prednastavitve napada
14s / 24s
pravila FIBA / NBA
Sledenje osebnim
5 na ekipo
barvno označene pike

Pregled

Naredil sem ga za košarko. KK Jesenice je potreboval prenosni semafor, ki ga lahko operater vodi iz administratorske plošče WordPress in projicira v živo na steno dvorane ali pošlje v pretočno postavitev. Omejitev je bila resnična: košarkarska dvorana ni strežniška soba. Imaš prenosnik, projektor in Wi-Fi usmerjevalnik, ki mogoče preživi tekmo.

Vtičnik ima dve površini. Operaterska plošča živi v WordPress administraciji — prikazuje četrtino, igralni čas, čas napada, rezultate, osebne, logotipe ekip in ime lige. Vsako polje se posodobi vsakih 500 milisekund prek AJAX, vendar le, kadar se je nekaj dejansko spremenilo; varovalka razlik ohranja povezavo mirno na obremenjenem omrežju dvorane. Stran prikaza pollira isto končno točko in ponovno izriše DOM. Oba tečeta na isti kodi; skripta zazna body class wp-admin, da odloči, v katero smer naj teče.

Čas napada ni samo prikaz — odšteva v brskalniku s frekvenco 1 Hz, s prednastavitvama 14 s in 24 s povezanima z enojnimi tipkami za pravila FIBA in NBA. Igralni čas deluje enako. Osebne se beležijo na ekipo kot pet barvnih pik: oranžne do štirih, rdeča pri peti. Na ločljivosti in z razdalje dvoranskega prikaza se barva bere hitreje kot številka.

Obstaja tudi OCR način. Če ima klub že fizičen semafor, operater lahko vanj usmeri kamero (ali naloži fotografijo), nariše pravokotnike okoli območij rezultata, ure in četrtine, in pusti, da Tesseract.js izlušči vrednosti. Vsako območje ima neodvisno predobdelavo — prag, kontrast, preklop sivin, odstranjevanje šuma — ker rdeč LED segment in bela LCD številka potrebujeta povsem drugačno obravnavo. Konva.js skrbi za interakcijo z območji na canvasu.

Arhitektura

~/scoreboard/architecture/system-map.svg
01 — VNOS OPERATERJARočna ploščarezultat · osebne · ureOCR kamera / slikaTesseract.js · Konva.jsSloj stanjaWordPress · AJAX · Transientsshrani ob spremembi · 500 ms poll · nonce-guarded02 — IZHODI PRIKAZAStran prikaza/overlay/[slug] · shortcodeOBS Browser Sourceprenos · projektor03 — URE V BRSKALNIKUIgralni čassetInterval 1 Hz · mm:ssČas napada14s / 24s prednastavitve · na ekipoWordPress vtičnik · PHP transients · jQuery AJAX · change-hash guard · rewrite rules · shortcode renderer04 — PLATFORMA

Branje diagrama: Dve vhodni poti (ročna plošča in OCR kamera) zapisujeta v skupni sloj stanja — WordPress transients, postreženi prek AJAX s 500 ms pollanjem in varovalko razlik, da mirne tekme ne klepetajo po omrežju. Stran prikaza na /overlay/[slug] uporablja to končno točko in ponovno izriše samo ob spremembi; deluje kot OBS browser source za pretakanje. Ure v brskalniku (igralni čas in čas napada na ekipo) tečejo na strani odjemalca s frekvenco 1 Hz, da krajša prekinitev omrežja ne zamrzne prikaza.

Prikaz semaforja

~/scoreboard/overlay/display-mockup.svg
FANTJE U14 · 1.B SKL · POKAL SPAR3Č07:24KK JESENICE54KK TRIGLAV49

Razporeditev prikaza: četrtina in igralni čas na levi, imena ekip s pikami osebnih in velike številke rezultata. Pike osebnih so barvno označene — oranžne do štirih, rdeča pri peti — berljive z razdalje projektorja brez prisiljevanja oči na številke.

Omejitev ni bila koda — bilo je okolje. V dvorani imaš projektor, prenosnik in Wi-Fi, ki morda deluje. Sistem je moral biti dovolj trden, da to ni bilo pomembno.
Davor Majc, ustvarjalec
03 Kar sem dostavil · rešeni izzivi

Šest stvari dostavljenih,
tri težke rešene.

Ključni prispevki

  • Zgradil sem celoten WordPress vtičnik od začetka — custom post type, administratorski vmesnik za operaterja, AJAX sloj stanja in javni izrisovalnik prikaza.
  • Implementiral sem dva načina vnosa: ročno ploščo semaforja s tipkami ±1 / ±2 / ±3 in OCR pot v živo prek kamere ali naložene slike.
  • OCR cevovod uporablja Tesseract.js na 2× povečanem območju Canvas z nastavljivim pragom, kontrastom in sivinsko predobdelavo za vsako območje posebej.
  • Stanje se shranjuje prek WordPress transients in pollira vsakih 500 ms — posodobitev se zapiše samo, ko se podatki dejansko spremenijo, kar ohranja mirno omrežje.
  • Igralni čas odšteva v brskalniku; čas napada podpira prednastavitvi 14 s in 24 s skladno s pravili FIBA/NBA.
  • Pike za osebne se izrisujejo oranžno do 4, pri peti postanejo rdeče — vidne s prenosne razdalje, brez branja številk.
  • Prikaz je izpostavljen na /overlay/[slug] prek lastnih rewrite pravil; možno ga je vključiti kot shortcode za OBS browser source.

Rešeni izzivi

  • Wi-Fi v dvorani je nezanesljiv — AJAX polling z varovalko sprememb (change-hash) ohranja prikaz odziven, ne da bi obremenjeval strežnik na šibki povezavi.
  • Semafor se gleda s kamerske razdalje; število osebnih mora biti berljivo kot barva, ne kot številka — tako je nastal sistem petih pik.
  • OCR s kamere fizičnega semaforja zahteva predobdelavo za vsako območje posebej (različne svetlostne cone, LED proti LCD številke) — nastavljivi drsniki na označeno območje, ne en globalni prag.

Stranka

Komunikacija je bila hitra in profesionalna. Vse, kar smo se dogovorili, je bilo dostavljeno pravočasno, predlogi za oblikovanje pa so prišli s pravim občutkom. Numen bo naša prva izbira za prihodnje projekte.
Dejan Čopič, KK Jesenice
04 Tehnološki sklad

Kaj poganja stvari.

JavaScriptPHPjQueryWordPressTesseract.jsKonva.jsCanvas APIAJAX
Pogovorimo se

Pripravljeni popraviti, zgraditi
ali skalirati?

30 minut, z mano osebno. Preberem vaš sistem kot dnevniško datoteko in povem, kaj bi naredil najprej. Brez prezentacij, brez prodajnega lijaka.

Davor Majc, ustanovitelj, Numen

Kaj dobite na klicu
→ enostranska diagnostika
→ 2–3 obliki rešitve, razvrščeni po učinku
→ okvirni strošek + časovnica za vsako
→ da/ne — ali sem prava izbira
+386 40 828 474 · Blejska Dobrava, SI