Live Race Stats — Garmin Edge велокомпьютерлері мен сағаттарына (Fenix, Forerunner, Venu, Instinct, т.б.) арналған тегін қосымша (Connect IQ дерек өрісі). Біздің хронометраж жүйеміз төрелік ететін жарыс кезінде ол құрылғы экранында сіздің орныңызды, қарсыластардан айырмаңызды және шеңберлеріңізді — жарыс нөмірі мен старт нөміріңіз бойынша — көрсетеді. Дүкенде қосымша Live Race Stats, құрылғыдағы өрістер тізімінде RaceStats деп аталады. Әзірлеуші — DenisChernykh.

Не қажет

  • Үйлесімді Garmin құрылғысы (Edge немесе Connect IQ бар сағат).
  • Интернеті бар телефон, құрылғыға Bluetooth арқылы қосылған — ол жарыс кезінде сізбен бірге болуы керек. Дерек өрісі желіге тікелей шыға алмайды, сұраныс телефон арқылы жүреді.
  • Жарысты біздің жүйе төрелік етуі керек, ал хаттама генераторы тікелей статистиканы сайтқа жіберуі керек (мұны ұйымдастырушы жасайды).

Орнату (телефоннан)

  1. Телефонға Connect IQ Store қосымшасын орнатыңыз (немесе Garmin Connect қосымшасындағы Connect IQ бөлімін ашыңыз). Құрылғыңыз байланған сол Garmin аккаунтымен кіріңіз.
  2. Live Race Stats дегенді табыңыз (атауы немесе DenisChernykh әзірлеушісі бойынша).
  3. Install басып, құрылғыңызды таңдаңыз. Қосымша Bluetooth арқылы құрылғыға жүктеледі (құрылғы телефонға қосулы болуы керек).

Экранға өрісті қосу (құрылғыда)

Құрылғыда ашыңыз: белсенділік профилі (мысалы «Велозаезд») → Дерек экрандары → экранды таңдаңыз немесе қосыңыз → орналасу → керек ұяшыққа Connect IQ → RaceStats таңдаңыз.

Кеңес: барлық метрикасы бар әдемі кесте үшін «1 өріс» орналасуын қойыңыз (толық экран) — сонда қосымша Garmin-нің өз дерек экраны сияқты екі бағанды тор салады.

Баптау (телефондағы Connect IQ қосымшасында)

Garmin дерек өрістері тек телефоннан бапталады: Connect IQ → құрылғыңыз → Connect IQ Apps → Live Race Stats → Settings.

  • Site URL: әдепкі бойынша https://universalbicycle.team. Жарысыңыз сонда болса өзгертпеңіз; ұйымдастырушы жүйені өз серверінде орналастырса ғана өзгертіңіз.
  • Competition ID: жарыс бетінің мекенжайындағы сандық id. Мысалы, жарыс .../calendar/259/ мекенжайында болса, ID = 259.
  • Bib number: старт нөміріңіз.
  • Rows: бір уақытта неше метрика көрсету (1-ден 10-ға дейін).
  • Row 1 … Row 10: әр жолда қай метриканы көрсету.

Жарыссыз байқап көру (демо): Site URL-ды әдепкі қалдырыңыз, Competition ID 259, Bib number 1, Rows 10 — өріс демо-жарыстың («test race») деректерін көрсетеді. Сандар статикалық, бұл бәрі істеп тұрғанын тексеру ғана.

Қандай метрикаларды шығаруға болады

Барлығы 15 метрика. Қысқа белгілер (сол жақта — құрылғы ағылшын тілінде болса):

  • Орын / барлығы: жалпы есеп — «Place abs»; топта — «Place gr».
  • Айырмалар (жалпы есеп): алдыңғы қарсыласқа «Gap ahd abs», артқыға «Gap bhd abs», көшбасшыдан «Gap ldr abs».
  • Айырма динамикасы (жалпы): алдыңғы «Dynam ah abs», артқы «Dynam bh abs», көшбасшыға «Dynam ld abs».
  • Айырмалар (топ): «Gap ahd gr», «Gap bhd gr», топ көшбасшысынан «Gap ldr gr».
  • Айырма динамикасы (топ): «Dynam ah gr», «Dynam bh gr», «Dynam ld gr».
  • Шеңберлер (өтілген / барлығы): «Laps».

Қысқартулар: ahd — сізден бір орын жоғары қарсылас; bhd — бір орын төмен; ldr — есеп көшбасшысы; abs — жалпы есеп; gr — сіздің тобыңыз (санат).

Мәндерді қалай оқу керек

  • Орын: «3/4» — сіз төрт қатысушының үшіншісісіз.
  • Айырма (Gap): таңбасы бар уақыт, «+M:SS» немесе «+H:MM:SS». «+» — сіз бұл қарсыласқа ұтылып келесіз (ол уақыт бойынша жылдамырақ), «−» — сіз одан озып келесіз. Мысалы: «Gap ahd abs +0:22» — алдыңғы қарсыластан 22 сек артта; «Gap bhd abs −0:11» — артқы қарсылас сізден 11 сек артта; «Gap ldr abs +0:36» — көшбасшыдан 36 сек артта.
  • Динамика (Dynam): осы айырма соңғы шеңберде қаншаға өзгерді. «+» — айырма өсті, «−» — қысқарды. Қуып жетіп келесіз бе әлде қалып бара жатырсыз ба — соны түсінуге көмектеседі.
  • Шеңберлер: «3/10» — 10 шеңбердің 3-і өтілді.
  • DSQ: қатысушы дисквалификацияланса, орын орнында «DSQ» болады.
  • «--» (екі сызық): дерек әлі жоқ — бұл қате емес. ID немесе нөмір енгізілмегенде, жақын жерде телефон/интернет болмағанда, жарыс әлі басталмағанда немесе алғашқы дерек әлі келмегенде болады.

Дерек кідірісі туралы маңызды

  • Дерек шамамен 5 минут сайын жаңарады — бұл Garmin-нің дерек өрістерінің фондық сұраныстарына қоятын шектеуі, айналып өтуге болмайды.
  • Дерек тек қатысушы шеңбер финишін кескенде және ақпарат сайтқа жеткенде өзгереді. Аралық нүктелер сенімділік үшін қолданылмайды.
  • Сондықтан алғашқы сандар бірден емес, стартан кейін ~5 минут ішінде пайда болады, әрі қарай сол аралықпен жаңарады.
  • Телефон құрылғыға қосулы әрі интернеті болуы керек. Байланыс үзілсе — өріс соңғы мәнді ұстап тұрады.

Бұл қалай жұмыс істейді

Дерек тізбегі: (1) хронометристер шеңбер финишінде белгі қояды; (2) хаттама генераторы солар бойынша әр нөмірге орын, айырма, шеңбер мен динамиканы есептеп, әр қайта жасауда «түсірілім» сайтқа жібереді; (3) сайт оны әр нөмір бойынша сақтап, ашық түрде береді; (4) Garmin өрісі ~5 минут сайын өз нөмірінің деректерін сұрап, оларды салады.

Техникалық бөлшектер:

  • Garmin дерек өрісі интернетке тікелей шыға алмайды. Сұранысты фондық процесс тек телефон арқылы Bluetooth-пен жасайды; мұндай сұраныстардың ең аз аралығы — 5 минут.
  • Ашық сұраныс (авторизация қажет емес): GET https://universalbicycle.team/api/v1/live-stats/{competition_id}/{bib}. Жауап — осы нөмір бойынша орын, айырмалар, т.б. (барлық мәндер жол).
  • «Жарыс/нөмір» жұбына түсірілім әлі болмаса — сайт 404 қайтарады, өріс «--» көрсетіп, сұрауды жалғастырады.
  • Өріс соңғы түсірілімді кэштейді. Белсенділікті аяқтағанда фондық сұрау өшеді — жарыстан кейін батарея мен желіні әуре етпеу үшін.
  • Айырмалар екі қатысушының соңғы ортақ шеңберіндегі уақыт және гонщиктің жеке уақыты бойынша есептеледі (жеке және топтық старт үшін дұрыс), сағаттағы уақыт бойынша емес.

Қолдау көрсетілетін құрылғылар

Қосымша 142 Garmin құрылғысын қолдайды: Edge велокомпьютерлері және көптеген сағаттар (Fenix, Forerunner, Venu, Instinct, т.б.). 10 тілге, оның ішінде орыс тіліне локализацияланған. Тегін, жарнамасыз; жеке деректерді жинамайды — ашық статистиканы алу үшін тек жарыс нөмірі мен старт нөміріңізді жібереді.

Жиі қойылатын сұрақтар

  • Өріс бос / «--» көрсетеді. Ретімен тексеріңіз: Competition ID мен Bib енгізілген бе; телефон құрылғыға қосулы ма; телефонда интернет бар ма; стартан ~5 минут өтті ме; жарысыңызда тікелей статистика бар ма (ұйымдастырушыдан сұраңыз).
  • Дерек нақты уақытта емес. Солай ойластырылған: ~5 минут сайын және тек шеңбер фиништері бойынша.
  • Тікелей құрылғыда баптауға бола ма? Жоқ, Garmin дерек өрістері тек телефоннан бапталады.
  • Неше метрика шығаруға болады? Бір өрісте 10-ға дейін. Өріс орналасудың бір ұяшығын алады; неше жол шынымен сыятыны ұяшық өлшеміне байланысты.
  • Сағатта жұмыс істей ме? Иә — өріс Edge-те ғана емес, сағаттарда да (Fenix, Forerunner, т.б.) бар.

Ұйымдастырушыларға

Статистика сіздің жарысыңызда жұмыс істеуі үшін: сайттағы жарыс жарияланған (approved), жасырылмаған және жойылмаған болуы керек; хаттама генераторында статистиканы жіберу қосулы болуы керек (жалпы есеп және/немесе топтар бойынша) — «abs» метрикалары «абсолюттік» статистика қосулы кезде, «gr» — «топтық» кезде пайда болады. Жүйені өзіңізде орналастырсаңыз, қосымшаны Site URL өрісінде мекенжайын көрсетіп өз серверіңізге бағыттауға болады. Сайт бастапқы коды: github.com/dchernykh1984/cycling-site.

Басқа құрылғы иелеріне

Егер құрылғыңыз Garmin болмаса, бірақ қосымша орнатуды қолдаса, өз клиентіңізді жаза аласыз: деректерді сайтымыздың ашық API-і береді, авторизация қажет емес.

Сұраныс: GET https://universalbicycle.team/api/v1/live-stats/{competition_id}/{bib}, мұндағы competition_id — жарыс бетінің мекенжайындағы сандық id, bib — старт нөмірі (жол).

Жауап{"competition_id": 259, "bib": "1", "updated_at": "…", "stats": {…}} түріндегі JSON. stats өрісі — «кілт → жол» сөздігі; қандай да бір кілт болмауы мүмкін (демек, бұл метрика бойынша дерек әлі жоқ). «Жарыс/нөмір» жұбына түсірілім әлі болмаса, сайт 404 қайтарады — жай ғана кейінірек қайталаңыз. Сайтта дерек шеңберлер өткен сайын жаңарады, сондықтан ~30–60 секундта бір реттен жиі сұраудың мәні жоқ.

stats кілттері (барлық мәндер — жолдар):

  • place_abs / place_group — жалпы есептегі / топтағы орын (мысалы «3»), немесе дисквалификация үшін «DSQ».
  • qty_abs / qty_group — қатысушылар саны (жалпы есеп / топ).
  • gap_prev_abs / gap_prev_group — алдыңғы қарсыласқа айырма («+» таңбасымен: сіз артта).
  • gap_next_abs / gap_next_group — артқы қарсыласқа айырма («−» таңбасымен: ол сізден артта).
  • gap_leader_abs / gap_leader_group — көшбасшыдан айырма.
  • gap_prev_*_delta, gap_next_*_delta, gap_leader_*_delta — тиісті айырманың соңғы шеңбердегі динамикасы («+» өсті, «−» қысқарды).
  • laps — шеңберлер «өтілген/барлығы» (мысалы «3/10»).

Пішімдер: айырма — «+M:SS» немесе «+H:MM:SS», генератордың «Digits after decimal» баптауындағы үтірден кейінгі таңбалар санымен көрсетілген секунд үлестерімен (әдетте 1, мысалы «+0:36.1»); орын мен сан — бүтін сан-жол. Барлық мәндер тек шеңбер фиништері бойынша есептеледі (аралық нүктелер қолданылмайды). Толығырақ — сайт бастапқы кодында: github.com/dchernykh1984/cycling-site.

Осындай қосымша жаздыңыз ба? Бізге хабарлаңыз! Осы мақалаға пікір қалдырыңыз, «Мақала жіберу» формасы арқылы ұсыныс жіберіңіз (білім базасына немесе жаңалық ретінде) немесе сайттағы жеке кабинетіңіздегі иелермен байланыс формасы арқылы жазыңыз. Оны басқа қатысушыларға қуана айтамыз.