Ikona aplikacji HeartRate Broadcaster

Twoje tętno,
na dowolnym komputerze rowerowym.

HeartRate Broadcaster (HRB) odczytuje żywy tętno z Apple Watch i AirPods Pro, a następnie łączy je w jeden odczyt. Wysyła go przez Bluetooth LE jako standardowy czujnik tętna: Twoja aplikacja treningowa widzi opaskę na klatce piersiowej.

Jedno serce, jeden strumień

Twój zegarek mierzy. Twoje AirPods mierzą. Dwa czujniki rozchodzące się w tym samym momencie są gorsze niż jeden czujnik lekko zmylający się, więc HRB rozstrzyga między nimi i wysyła dokładnie jedną liczbę.

HeartRate Broadcaster pokazujący 97 BPM z Apple Watch, wiersz umowy czujnika z informacją "Tylko zegarek" oraz podłączone urządzenie główne.

Zgodność czujników, na jawie

Wymienia czujniki, które aktualnie wykrywa, wyświetla różnicę między nimi w uderzeniach na minutę oraz pokazuje, który pojedynczy odczyt wybrał i wysłał.

Apple Watch
Główny czujnik. Uruchamia prawdziwą sesję treningową — jedyny sposób na próbkowanie tętna z użyteczną częstotliwością i na kontynuowanie próbkowania przy wyłączonym ekranie.
AirPods Pro 3
Drugi, całkowicie opcjonalny czujnik. Sam zegarek jest kompletnym źródłem; tak samo samodzielne AirPods.
iPhone
Uśrednia odczyty, które się zgadzają, odrzuca wartości odstające, gdy się nie zgadzają, i ogłasza wynik jako standardową usługę Heart Rate Service Bluetooth LE (0x180D). Gdy czujnik umilknie, wiersz to informuje, zamiast cicho porównywać go z przestarzałą liczbą.
Główne urządzenie
MyWhoosh, Zwift, TrainerRoad, Wahoo oraz kompatybilne z Bluetooth jednostki Garmin Edge widzą jeden zwykły pasek na klatce piersiowej.

Waty wchodzące, kalorie wychodzące

Miarę mocy mierzy pracę. Przeliczenie tej pracy na kalorie wymaga dwóch stałych, wymienionych poniżej.

Podsumowanie sesji: 37 kalorii aktywnych, 40 łącznie z spoczynkowymi, 40 kJ pracy, średnia 217 W oraz cztery czujniki, w tym para PowerTap P1 oznaczona jako liczona.
Każda liczba wyliczona poniżej, na jednej karcie. 40 kJ pracy przy sprawności 0,24 to 40 kcal, co jest wartością całkowitą; odjęcie udziału spoczynkowego daje 37, czyli wartość przekazywana do Health.

Od pedałów do liczby

Waty to dżule na sekundę. HRB całkuje moc zgłaszaną przez miaromierz w czasie jej faktycznego zgłaszania, a następnie przekształca pracę mechaniczną w energię zużytą przez organizm.

Praca
Każdy próbkę mocy mnoży się przez pokrywający ją interwał i sumuje. Przerwa w danych jest wykluczana, a nie interpolowana — w podsumowaniu widoczna jest liczba pominiętych sekund.
Skuteczność
Około 24% energii, którą spalasz, dociera do pedałów jako praca; reszta ucieka jako ciepło. Ta wartość, 0.24, mieści się w zakresie 0,20–0,25 zmierzonym dla wysportowanej jazdy na rowerze i dlatego kilodżul pracy kosztuje około kilokalorii.
Spoczynek
Zdrowie oznacza „powyżej spoczynku” według aktywności energetycznej, więc udział spoczynkowy sesji — Mifflin–St Jeor, na podstawie wzrostu, wagi, wieku i płci — jest odejmowany przed zapisaniem czegokolwiek. Podsumowanie pokazuje obie wartości.
Brak licznika
Bez pomiaru mocy szacunek opiera się na opublikowanej regresji na podstawie tętna (Keytel i in., 2005) i informuje o tym na ekranie. Szacunek oznaczony jako taki jest wart więcej niż liczba udająca pomiar.

Każdy licznik na rowerze

Cycling Power (0x1818), Cycling Speed and Cadence (0x1816) oraz FTMS Indoor Bike Data (0x1826). Pedale, korby i inteligentne trenderzy raportują dane; liczniki oparte na pedałach raportują również równowagę lewo/prawo, jeśli ją mają.

Przetestowane na rowerku Wahoo Kickr Core 2 i pedałach PowerTap P1, działających jednocześnie.

Jeden licznik liczy się, pozostałe są rejestrowane

Pedale, korba i trender mierzą inaczej, ponieważ mierzą w różnych punktach napędu. Wybierasz, z którego pochodzi wartość kaloryczna; pozostałe są rejestrowane obok niej, ze swoimi średnimi, abyś mógł zobaczyć rozrzut.

Jazda, bieg, pływanie

Sesja jest oznaczana przed rozpoczęciem i domyślnie przyjmuje typ jazdy, gdy licznik mocy jest aktywny. Etykieta ustawia typ aktywności HealthKit, a zegarek oznacza własną sesję, aby się dopasować.

Szczegóły Twojego ciała pozostają tutaj

Wysokość, wagę, datę urodzenia i płeć wprowadza się raz i przechowuje wyłącznie na telefonie. Są one używane tylko do dwóch powyższych równań. Wysokość podaje się w stopach i calach lub centymetrach.

Zapis do aplikacji Zdrowie

Każda sesja jest zapisywana jako trening z aktywną energią, dzięki czemu pojawia się w Twoich ringach oraz w dowolnej aplikacji korzystającej z danych z aplikacji Zdrowie. Historia w aplikacji zachowuje szczegóły, których nie ma w aplikacji Zdrowie: które mierniki zostały odebrane i gdzie wystąpiły przerwy.

Informuje, kiedy dokonywane są przybliżenia

Niepełny profil ciała, utrata połączenia z czujnikiem lub szacowanie wyłącznie na podstawie tętna są wyświetlane w sekcji Uwagi pod wynikiem. Nic nie jest cicho zaokrąglane, aby wyglądało lepiej, niż jest w rzeczywistości.

Trzy sposoby na uzyskanie aplikacji

Jest jedna aplikacja i jedna jej wersja. Różni się tylko sposób jej uzyskania: dwie z tych dróg są darmowe, ale wymagają wysiłku lub cierpliwości, a trzecia to App Store.

TestFlight — darmowa, 90 dni

Dostępna dla każdego, nie jest wymagane zaproszenie. Zainstaluj aplikację TestFlight firmy Apple, otwórz publiczny link, a wersja beta zainstaluje się obok innych aplikacji. Każda kompilacja pozostaje ważna przez 90 dni od dnia publikacji; nowa kompilacja resetuje ten czas, dzięki czemu wersja beta działa dalej, dopóki jest aktualizowana.

Dołącz do publicznego testu beta

Ręczna instalacja — darmowa, wymaga konta deweloperskiego

Każda wersja na GitHubie zawiera plik .ipa w konfiguracji Release. Jest on podpisany pod dystrybucję, więc jego instalacja wymaga ponownego podpisania własnym certyfikatem — robią to Xcode, AltStore i Sideloadly. HealthKit i tła Bluetooth nie są dostępne dla profili dystrybucyjnych bezpłatnych, więc ta opcja wymaga płatnego konta Apple Developer. Dostępny jest również pełny kod źródłowy.

Wersje na GitHubie

App Store — 4,99 USD

Jeden zakup. Bez subskrypcji, zakupów w aplikacji, reklam ani konta, a aplikacja aktualizuje się sama, jak każda inna. Płacisz, aby ominąć obie powyższe drogi i za pracę za tym stojącą.

Zobacz w App Store

Próbowanie na TestFlight

Beta jest otwarta — nie ma listy zaproszeń ani etapu zatwierdzania. To ta sama aplikacja co wersja płatna, instalowana przez kanał beta Apple zamiast ze sklepu.

1 — Zainstaluj TestFlight
Własna aplikacja beta Apple, darmowa w App Store. Musi być zainstalowana na iPhone’ie, aby link cokolwiek zrobił.
2 — Otwórz publiczny link
Na tym samym iPhone’ie otwórz testflight.apple.com/join/VUJCa5Gw, a następnie dotknij Akceptuj i Instaluj. Bez zaproszenia i bez kodu.
3 — Dodaj aplikację na zegarek
Zainstaluj ją z aplikacji Watch na iPhone’ie, tak jak każdą inną aplikacją na zegarek. Zegarek jest czujnikiem, więc ten krok jest obowiązkowy.

Wersja TestFlight działa przez 90 dni od dnia publikacji. Każda nowa wersja restartuje ten okres, więc beta działa dalej, dopóki jest aktualizowana. Wersja w App Store nie wygasa.

Każdy ekran

Zrzuty wykonane z wersji produkcyjnej na iPhone 17 Pro Max i Apple Watch. Niektóre zrobiono na telefonie w trakcie jazdy, pozostałe na symulatorze, który nie ma nadajnika Bluetooth, więc czujniki w tych zdjęciach to zastępczy zestaw dostarczający aplikacji rzeczywiste odczyty. Każda liczba na ekranie to własne obliczenia aplikacji. Nic tutaj nie jest rysunkiem.

Co potrafi

Wszystko, co tu widzisz, działa w aplikacji już dziś. Na tej stronie nie ma nic, co byłoby zapowiedzią przyszłych funkcji.

Prawdziwy pasek do pomiaru tętna

Reklamuje standardową usługę Heart Rate Service (0x180D) z pomiarem tętna i lokalizacją czujnika ciała. Każde urządzenie, które łączy się z paskiem Bluetooth, obsługuje tę usługę, bez konieczności instalowania aplikacji towarzyszącej ani wtyczek.

Dwa czujniki, jedna wartość

Gdy zegarek i AirPods raportują jednocześnie, HRB uśrednia zgadzające się odczyty i odrzuca wartości odstające, gdy się nie zgadzają — preferując ten, który jest bliższy trendowi, który już zaobserwował.

Wirtualny przerzutnik

Ten sam telefon oferuje się również jako przełącznik biegów za pośrednictwem otwartego protokołu Bike Control, dzięki czemu przyciski pod czujnikiem tętna sterują Twoim trenerem w MyWhoosh lub Zwift. Bez Clicks, bez kontrolerów Play, bez drugiego urządzenia.

Dynamic Island

Live Activity na ekranie blokady i w Dynamic Island: aktualne BPM, źródło pochodzenia oraz informacja, czy urządzenie główne jest subskrybowane. Informacje widoczne bez odblokowywania.

Pływające okno

Tryb "Obraz w obrazie" utrzymuje liczbę na ekranie podczas korzystania z innej aplikacji — rozpocznij trening w HRB, przełącz się na aplikację treningową, a BPM podąża za Tobą jako pływające okno. Przetrwa przesunięcie do Ekranu głównego i unosi się nad niezwiązanymi aplikacjami; jest cichy: okno nie wydaje dźwięku, nigdy nie pauzuje, nie zmniejsza głośności ani nie przejmie tego, co już odtwarzasz.

Blokada ekranu dotykowego dla zegarka

Rękaw, zamek w koszulce czy chwyt za taśmę kierownicy mogą przerwać transmisję w trakcie jazdy. Aktywuj blokadę, a aplikacja na zegarku ignoruje przypadkowe dotknięcia — jedno sekundowe naciśnięcie odblokowuje ją, a BPM pozostaje czytelny przez cały czas.

Pełna diagnostyka

Ustawienia pokazują połączone centra identyfikowane po identyfikatorze, ramki wysłane na subskrybenta, żywy współczynnik klatek, dokładne bajty ostatniej ramki oraz czas, jaki minął od jej wysłania. Gdy coś nie działa, można zobaczyć, która połowa łącza jest źródłem problemu.

Animacja zsynchronizowana z rytmem

Serce na telefonie i zegarku bije w zmierzonej przez Ciebie częstotliwości i zatrzymuje się, gdy przestają napływać próbki. Spokojne serce nad prawdopodobnie poprawną liczbą oznacza, że czujnik utracił połączenie.

Nadal nadaje w tle

Gdy jednostka głowicy nawiąże połączenie, łącze przetrwa zablokowanie telefonu. HRB powiadamia raz na sekundę, czy wartość się zmieniła, co robi prawdziwy pasek i czego oczekują jednostki głowic.

Sygnał testowy

Syntetyczne źródło częstości akcji serca do parowania i debugowania bez zakładania czujnika. Upewnij się, że jednostka głowicy widzi nadawanie, zanim zaczniesz się martwić o czujnik.

Dwadzieścia pięć języków

Każdy ekran na telefonie i zegarku jest przetłumaczony na dwadzieścia pięć języków, w tym arabski z układem od prawej do lewej, a nie jako odbicie angielskiego. Wybierz jeden w Ustawieniach i pozostanie wybrany, niezależnie od ustawień telefonu. Ta witryna jest również w tych dwudziestu pięciu językach.

Kompatybilność

Każda aplikacja lub urządzenie główne, które paruje czujnik usługi Heart Rate Service Bluetooth LE, paruje HRB w ten sam sposób.

MyWhoosh Zwift TrainerRoad Wahoo Garmin Edge (Bluetooth) nRF Connect

A oto, co odczytuje. Wymienione to urządzenia, z którymi aplikacja została stworzona i testowana; miernik lub trener, którego nie ma na liście, również działa, ponieważ aplikacja odczytuje standardowe profile Cycling Power i FTMS, a nie konkretne modele.

Wahoo KICKR CORE 2 PowerTap P1 SRAM Red crank Any Bluetooth power meter Apple Watch AirPods Pro 3 OpenBikeControl shifting

Brak ANT+ — i żadna aplikacja go nie doda

HRB nadaje wyłącznie przez Bluetooth LE. ANT+ to osobny protokół radiowy, a iPhone nie ma sprzętu ANT+, więc żadne oprogramowanie nie może go transmitować. To ograniczenie urządzenia, a nie aplikacji.

Urządzenia, które parują częstość akcji serca wyłącznie przez ANT+ — w tym Garmin Forerunner 935 — nigdy nie zobaczą tego nadawania, niezależnie od konfiguracji.

Konfigurowanie dla MyWhoosh

Działają dwa zestawy. Wybór zależy od tego, czy chcesz nosić ze sobą iPhone’a, ponieważ Apple Watch nie może niczego wykryć bez niego.

Apple Watch + iPhone + AirPods Pro 3

Dokładny zestaw. Oba czujniki przesyłają dane, HRB łączy je w jedną wartość, a MyWhoosh widzi jeden pasek. Uruchom aplikację na zegarku, wybierz Both jako źródło na telefonie, a następnie sparuj HRB w ekranie czujników MyWhoosh. Telefon pozostaje w pokoju; zegarek nie musi być blisko stacji sterującej, tylko blisko telefonu.

iPad + AirPods Pro 3

Zestaw jednoUrządzeniowy. AirPods Pro 3 łączą się bezpośrednio z iPadem, dzięki czemu HRB, MyWhoosh i Bike Control działają na tym samym ekranie bez udziału telefonu ani zegarka. Ustaw źródło na AirPods — opcje zegarka są tutaj ukryte, ponieważ nie ma niczego, do czego mogłyby się połączyć.

Zegarek zawsze łączy się przez iPhone’a

Apple Watch paruje się z iPhone’em i tylko z iPhone’em, a nigdy nie reklamuje tętna bezpośrednio przez Bluetooth. Aplikacja na zegarku mierzy, przekazuje odczyt do telefonu przez łącze watch-to-phone, a telefonem łączy się Twoje urządzenie główne.

Zegarek dodaje więc drugi czujnik do zestawu z iPhone’em, ale nic nie dodaje do zestawu z iPadem. Jeśli chcesz mieć jedno urządzenie na biurku, użyj AirPods na iPadzie i nie angażuj zegarka.

Pariowanie raz, w pierwszym planie Zostaw HRB otwarte na ekranie, aż MyWhoosh zgłosi połączenie czujnika. iOS ukrywa reklamowaną usługę aplikacji działającej w tle, więc wykrywanie wymaga aplikacji na pierwszym planie — po tym możesz przełączyć aplikacje lub zablokować urządzenie, a połączenie pozostanie aktywne.
Nadawanie z jednego urządzenia Uruchom HRB na telefonie lub iPadzie, ale nie na obu. Uruchomienie dwóch instancji jednocześnie powoduje wyświetlenie dwóch identycznych czujników HRB na liście MyWhoosh, a z ekranu parowania nie sposób ich rozróżnić.
Połączenie z zegarkiem, jeśli wiersz jest czerwony Wiersz aplikacji na zegarku na głównym ekranie pokazuje to, co faktycznie widzi telefon. Brak instalacji oznacza, że aplikacja na zegarku nie była jeszcze otwierana; brak dostępności zwykle oznacza, że aplikacja nie jest uruchomiona — otwórz ją i rozpocznij sesję. Wiersz całkowicie znika na iPadzie.
Testowanie bez czujnika Ustaw źródło na Test Signal, aby nadawać syntetyczne 50–100 BPM. Paruje się w MyWhoosh dokładnie jak rzeczywisty odczyt — najszybszy sposób na potwierdzenie działania strony czujnika przed założeniem czegokolwiek.

Pytania

Najczęstsze problemy i szczere odpowiedzi na każdy z nich.

AirDrop przestał działać — najpierw zatrzymaj nadawanie

AirDrop wykrywa pobliskie urządzenia przez Bluetooth LE, tak samo jak HRB, używając tego samego radia. Gdy HRB reklamuje się, a urządzenie główne jest subskrybowane, utrzymuje ono to radio ciągle. AirDrop wtedy albo nie widzi urządzenia po drugiej stronie, albo pokazuje je i zawiesza się przed rozpoczęciem transferu.

Zatrzymaj nadawanie lub zamknij HRB, a następnie AirDrop. Działa ponownie natychmiast: ponowne parowanie wymaga jednego dotknięcia, gdy HRB jest z powrotem na pierwszym planie. To samo warto spróbować w przypadku innych funkcji, które milkną podczas nadawania — przekazywania CarPlay, klawiatury Bluetooth, która przestaje reagować, lub Continuity Camera.

Czy mogę zablokować ekran po sparowaniu?

Tak. Wykrywanie wymaga, aby HRB było na pierwszym planie, ale połączenie przetrwa zablokowanie ekranu, przejście w tło i przełączanie aplikacji. Nie można jednak sparować po raz pierwszy, gdy aplikacja jest ukryta — iOS zatrzymuje nadawanie usługi w tle.

Ile to kosztuje pod względem baterii?

Nadawanie zużywa mało energii; nie dotyczy to sesji treningowej, która generuje odczyt. Oczekuj podobnego zużycia, jak w przypadku dowolnego treningu pomiaru tętna na tym urządzeniu. Zegarek jest bardziej obciążoną częścią konfiguracji z iPhone’em, ponieważ to on dokonuje pomiaru.

Czy dwie aplikacje mogą jednocześnie odczytywać transmisję?

Tak. Bluetooth LE umożliwia kilku odbiorcom podłączenie się do jednego czujnika, dzięki czemu MyWhoosh i druga aplikacja mogą jednocześnie wyświetlać te same dane. Na głównym ekranie widoczna jest liczba aktywnych odbiorców w czasie rzeczywistym, co pozwala potwierdzić, że obie aplikacje faktycznie się połączyły.

Tętno zamarło w trakcie jazdy

Wartość jest szarzeje, gdy przestaje być aktualna, zamiast powtarzać martwą liczbę. W przypadku AirPods zwykle oznacza to, że przestały one przesyłać dane — przełącznik trasy dźwiękowej w tym wierszu przerywa i przywraca połączenie, co odtwarza łączność bez wychodzenia z aplikacji.

Mój Garmin go nie wykrywa

Sprawdź, czy ten model paruje z paskiem pomiaru tętna wyłącznie przez ANT+. iPhone nie posiada radia ANT+, więc żadna aplikacja nie może go przesyłać. Urządzenia Garmin, które akceptują pasek Bluetooth, normalnie parują z HRB; te, które go nie obsługują, nigdy nie będą tego robić.

Gdzie trafiają dane?

Do radia Bluetooth i nigdzie indziej. Nie ma konta, serwera ani analityki. Dane tętna pochodzą z HealthKit na urządzeniu i są wysyłane jako standardowa wartość czujnika do dowolnego podłączonego urządzenia.

Wymagania

Czego potrzebuje do działania i ile to kosztuje.

iPhone iOS 26 lub nowszy. Nadawanie wykorzystuje rolę peripheralnej Bluetooth, której Symulator nie obsługuje — wymagany jest rzeczywisty sprzęt.
Apple Watch watchOS 11 lub nowszy. Aplikacja na zegarek uruchamia sesję treningową, co jest jedynym sposobem na uzyskanie danych o tętnie z przydatną częstotliwością i kontynuowanie próbkowania przy wyłączonym ekranie.
AirPods Opcjonalnie. AirPods Pro 3 przesyłają dane o tętnie do urządzenia, na którym uruchomiona jest sesja treningowa, więc HRB rozpoczyna ją na telefonie, gdy włączysz je jako źródło.
Cena 4,99 USD w App Store, płatność jednorazowa. Bez subskrypcji i zakupów w aplikacji. Wersja beta TestFlight działa równolegle z wersją wydawniczą dla każdego, kto chce wcześniej wypróbować następną wersję.
Parowanie Pozostaw aplikację otwartą, aż urządzenie główne się połączy. iOS ukrywa identyfikator UUID usługi ogłaszanej przez aplikację działającą w tle, więc wykrywanie musi odbywać się na pierwszym planie — po tym połączenie przetrwa zablokowanie telefonu.
Nazwa nadawcy HRB domyślnie, edytowalna do 10 znaków — pakiety reklamowe mają 31 bajty, a urządzenia główne obcinają dłuższe nazwy.

Otwarty kod źródłowy na GitHubie

Cała aplikacja jest udostępniona na licencji MIT — aplikacja na iPhone’a, aplikacja na Apple Watch, funkcja Live Activity, skrypty budowania oraz ta strona internetowa. Jeśli wolisz przeczytać kod Bluetooth zamiast ufać naszemu zapewnieniu o prywatności, cały kod jest dostępny.

Przeczytaj go
github.com/tankbottoms/HeartRateBroadcaster — Swift, bez zależności, bez SDK analitycznych, które należałoby sprawdzać.
Zbuduj
Sklonuj repozytorium, uruchom xcodegen generate, otwórz projekt i zbuduj. Podpisywanie wymaga własnego identyfikatora zespołu; nic więcej nie jest wymagane.
Zainstaluj pobocznie
Każda wersja zawiera konfigurację Release z plikiem .ipa i instrukcjami instalacji pobocznej. HealthKit i tło Bluetooth są niedostępne dla darmowych profilów provisioningu, więc ponowne podpisanie wymaga płatnego konta Apple Developer.