Pictogram van de HeartRate Broadcaster-app

Je hartslag,
op elke fietscomputer.

HeartRate Broadcaster (HRB) leest de live hartslag van je Apple Watch en AirPods Pro en voegt deze samen tot één meting. Het zendt deze uit via Bluetooth LE als een standaard hartslagsensor: je trainingsapp ziet een borstband.

Één hart, één stream

Je horloge meet. Je AirPods meten. Twee sensoren die op hetzelfde moment ongelijk hebben is erger dan één sensor die iets verkeerd meet, dus HRB arbitreert tussen hen en zendt precies één getal uit.

HeartRate Broadcaster toont 97 BPM van Apple Watch, een rij Sensor Agreement met de tekst 'Alleen horloge', en een aangesloten head unit.

Sensorovereenkomst, openlijk

Het noemt de sensoren die het momenteel kan horen, drukt uit hoeveel ze uiteenlopen in BPM en toont welke enkele meting het heeft gekozen en verzonden.

Apple Watch
De primaire sensor. Het voert een echte trainingssessie uit — de enige manier om hartslag met een bruikbaar tempo te meten en om door te meten met het scherm uit.
AirPods Pro 3
Een tweede, volledig optionele sensor. De horloge op zich is een complete bron; de AirPods op zich zijn dat ook.
iPhone
Het gemiddelde van metingen die overeenkomen, verwerpt de uitbijter als ze niet overeenkomen, en adverteert het resultaat als een standaard Bluetooth LE Heart Rate Service (0x180D). Wanneer een sensor stilvalt, zegt de rij dat in plaats van stil te vergelijken met een verouderd getal.
Hoofdeenheid
MyWhoosh, Zwift, TrainerRoad, Wahoo en Bluetooth-compatibele Garmin Edge-apparaten zien allemaal één gewone borstband.

Watt in, calorieën uit

Een vermogensmeter meet de arbeid. Het omrekenen van die arbeid naar calorieën vereist twee constanten, beide hieronder genoemd.

Een samenvatting van de sessie: 37 actieve calorieën, 40 totaal inclusief rust, 40 kJ aan arbeid, 217 W gemiddeld en vier sensoren waarvan de PowerTap P1-paar als geteld is gemarkeerd.
Elk cijfer dat de onderstaande rekenkunde oplevert, op één kaart. 40 kJ arbeid bij een efficiëntie van 0,24 is 40 kcal, wat het totaal is; trek het rustaandeel eruit en 37 is wat aan Health wordt doorgegeven.

Van de pedalen naar het getal

Watt is joule per seconde. HRB integreert het door de meter gerapporteerde vermogen over de tijd dat deze daadwerkelijk rapporteerde, en zet de mechanische arbeid om in wat je lichaam er voor heeft verbruikt.

Arbeid
Elke vermogensmeting wordt vermenigvuldigd met het bestreken interval en opgeteld. Een uitval wordt uitgesloten, niet geïnterpoleerd — de samenvatting geeft aan hoeveel seconden zijn weggelaten.
Efficiëntie
Ongeveer 24% van wat je verbrandt, komt als arbeid bij de pedalen aan; de rest gaat verloren als warmte. Dit getal, 0.24, ligt binnen het bereik van 0,20–0,25 dat is gemeten voor getrainde fietsers, en dat is waarom een kilojoule arbeid ongeveer een kilocalorie kost.
Rust
Gezondheid betekent "boven rust" qua actieve energie, dus het basale aandeel van de sessie — Mifflin–St Jeor, op basis van je lengte, gewicht, leeftijd en geslacht — wordt afgetrokken voordat er iets wordt weergegeven. Het overzicht toont beide waarden.
Geen meter
Zonder vermogen valt de schatting terug op een gepubliceerde hartslagregressie (Keytel et al., 2005) en geeft dat op het scherm aan. Een schatting die daar als zodanig wordt aangeduid, is meer waard dan een getal dat zich voordoet als een meting.

Elke meter op de fiets

Fietsvermogen (0x1818), Fiets snelheid en cadans (0x1816) en FTMS Indoor Bike Data (0x1826). Pedalen, krukken en smart trainers rapporteren allemaal; pedaalgebaseerde meters rapporteren ook links/rechts balans waar beschikbaar.

Getest en gereden met een Wahoo Kickr Core 2 en PowerTap P1-pedalen, beide tegelijk actief.

Eén meter telt, de rest wordt gelogd

Pedalen, een kruk en een trainer meten anders omdat ze op verschillende punten in de aandrijving meten. Je kiest waarvan de caloriegegevens komen; de anderen worden er naast geregistreerd, met hun eigen gemiddelden, zodat je de spreiding kunt zien.

Rijden, hardlopen, zwemmen

Een sessie krijgt een label voordat deze begint, en standaardiseert naar een rit wanneer een vermogensmeter actief is. Het label stelt het HealthKit-activiteitstype in, en het horloge labelt zijn eigen sessie om hiermee overeen te komen.

Je lichaamsgegevens blijven hier

Lengte, gewicht, geboortedatum en geslacht worden eenmalig ingevoerd en alleen op de telefoon opgeslagen. Ze worden gebruikt voor de twee bovenstaande vergelijkingen en voor niets anders. Lengte wordt ingevoerd in voeten en inches, of centimeters.

Geschreven naar Gezondheid

Elke sessie wordt opgeslagen als een training met de actieve energie, zodat deze in uw ringen terechtkomt en in elke app die Gezondheid leest. De geschiedenis in de app bewaart de details die Gezondheid niet heeft: welke meters zijn ontvangen en waar de hiaten zaten.

Het geeft aan wanneer het raadt

Een onvolledig lichaamsprofiel, een uitgevallen sensor of een schatting op basis van alleen hartslag worden weergegeven in een sectie Opmerkingen onder de figuur. Er wordt niet stilletjes naar een beter resultaat afgerond dan de werkelijkheid is.

Drie manieren om het te krijgen

Er is één app en één build ervan. Wat verschilt is hoe je erbij komt: twee van deze wegen kosten niets en vragen in plaats daarvan om inspanning of geduld, en de derde is de App Store.

TestFlight — gratis, 90 dagen

Open voor iedereen, geen uitnodiging nodig. Installeer de TestFlight-app van Apple, open de openbare link en de bèta installeert zich naast alles wat er al is. Elke build is 90 dagen bruikbaar vanaf de dag van publicatie; een nieuwe build reset de klok, zodat de bèta blijft draaien zolang deze wordt bijgewerkt.

Deelname aan de openbare bèta

Sideloading — gratis, vereist een ontwikkelaarsaccount

Elke GitHub-release bevat een Release-geconfigureerde .ipa. Deze is ondertekend voor distributie, dus installeren betekent het opnieuw ondertekenen met je eigen identiteit — Xcode, AltStore of Sideloadly doen dit allemaal. HealthKit en achtergrond-Bluetooth zijn niet beschikbaar voor gratis provisioning profiles, dus deze route vereist een betaald Apple Developer-account. De volledige broncode is ook beschikbaar.

Releases op GitHub

App Store — USD 4,99

Eén aankoop. Geen abonnement, geen in-app-aankoop, geen advertenties, geen account, en het update zichzelf als elke andere app. Je betaalt om beide bovenstaande wegen te omzeilen, en voor het werk dat daarachter zit.

Bekijk in de App Store

Het proberen op TestFlight

De bèta is open — er is geen uitnodigingslijst en geen goedkeuringsstap. Het is dezelfde app als de betaalde versie, geïnstalleerd via het bètakanaal van Apple in plaats van de winkel.

1 — TestFlight installeren
De eigen bèta-app van Apple, gratis in de App Store. Deze moet op de iPhone zijn geïnstalleerd voordat de link iets doet.
2 — De openbare link openen
Open op diezelfde iPhone testflight.apple.com/join/VUJCa5Gw, tik vervolgens op Accepteren en Installeren. Geen uitnodiging en geen code.
3 — De horloge-app toevoegen
Installeer deze vanuit de Watch-app op je iPhone, op dezelfde manier als elke andere horloge-app. Het horloge is de sensor, dus deze stap is niet optioneel.

Een TestFlight-build werkt 90 dagen vanaf de publicatiedatum. Elke nieuwe build start die periode opnieuw op, dus de bèta blijft draaien zolang deze wordt bijgewerkt. Er vervalt niets op de App Store-versie.

Elk scherm

Gefotografeerd vanuit de verzendversie op een iPhone 17 Pro Max en een Apple Watch. Sommige zijn gemaakt op een telefoon tijdens een rit; de rest op een simulator, die geen Bluetooth-radio heeft, dus de sensoren daar zijn een vervangende set die de app echte waarden voert. Elk getal op het scherm is de eigen rekenkunde van de app. Niets hier is een tekening.

Wat het doet

Alles wat hier staat, bestaat vandaag al in de app. Er staat niets op deze pagina dat op de roadmap staat.

Een echt hartslagsensorbandje

Zendt de standaard Heart Rate Service (0x180D) uit met Heart Rate Measurement en Body Sensor Location. Ieder Bluetooth-bandje dat koppelt, zendt dit uit, zonder companion-app of plug-in.

Twee sensoren, één getal

Wanneer het horloge en de AirPods beide rapporteren, middelt HRB metingen die overeenkomen en verwerpt de uitschieter als ze dat niet doen — waarbij de voorkeur gaat naar degene die het dichtst bij de trend ligt die het al heeft waargenomen.

Virtuele schakelaar

Dezelfde telefoon biedt zich ook aan als schakelaar via het open Bike Control-protocol, zodat de knoppen onder de hartslagmeter je trainer in MyWhoosh of Zwift bestuurt. Geen Clicks, geen Play-controllers, geen tweede apparaat.

Dynamic Island

Live Activiteit op het vergrendelscherm en in de Dynamic Island: huidige BPM, de bron waaruit deze komt, en of een head unit is abonnee. In één blik te zien zonder te ontgrendelen.

Zwevend venster

Picture in Picture houdt het aantal op het scherm terwijl je een andere app gebruikt — start een training in HRB, schakel over naar je trainingsapp en het BPM volgt je als zwevend venster. Het overleeft een veeg naar het startscherm en zweeft boven ongerelateerde apps, en het is stil: het venster maakt geen geluid en pauzeert, dempt of overneemt nooit wat je al aan het afspelen bent.

Vergrendel het aanraakscherm van het horloge

Een mouw, een ritssluiting van een jersey of een greep naar het stuurbandplastic kan een uitzending onderbreken tijdens het fietsen. Activeer de vergrendeling en de horloge-app negeert per ongeluk gedane tikken — een bewuste druk van één seconde ontgrendelt deze, en de BPM blijft de hele tijd goed leesbaar.

Diagnostics, in full

Instellingen toont verbonden centrals op identifier, frames verzonden per abonnee, live framerate, de exacte bytes van het laatste frame en hoe lang geleden deze is verzonden. Als er iets niet werkt, kunt u zien welke helft van de link het probleem veroorzaakt.

Op het ritme gesynchroniseerde animatie

Het hart op de telefoon en het horloge klopt op uw gemeten frequentie en stopt wanneer er geen samples meer binnenkomen. Een stilstaand hart boven een aannemelijk getal betekent dat de sensor is uitgevallen.

Verder verzenden op de achtergrond

Zodra een head unit verbinding heeft gemaakt, blijft de verbinding bestaan bij het vergrendelen van de telefoon. HRB meldt één keer per seconde of de waarde is gewijzigd, wat een echte band doet en wat head units verwachten.

Testsignaal

Een synthetische hartslagsbron voor koppelen en foutopsporing zonder iets aan te doen. Bevestig dat de head unit een uitzending ziet voordat u zich zorgen maakt over de sensor.

Vijfentwintig talen

Elk scherm op de telefoon en het horloge is vertaald naar vijfentwintig talen, inclusief Arabisch met een rechts-naar-links lay-out in plaats van gespiegeld Engels. Kies er één in Instellingen en deze blijft geselecteerd, ongeacht de taalinstelling van de telefoon. Deze site is in dezelfde vijfentwintig talen beschikbaar.

Compatibiliteit

Elke app of head unit die een Bluetooth LE Heart Rate Service-sensor pareert, pareert HRB op dezelfde manier.

MyWhoosh Zwift TrainerRoad Wahoo Garmin Edge (Bluetooth) nRF Connect

En dit is wat het uitleest. De genoemde zijn waarvoor de app is gebouwd en waartegen is gereden; een meter of trainer die niet in die lijst staat, werkt toch, omdat de app de standaardprofielen voor Cycling Power en FTMS uitleest in plaats van specifieke modellen.

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

Geen ANT+ — en geen app kan dit toevoegen

HRB zendt alleen uit via Bluetooth LE. ANT+ is een apart radio-protocol en een iPhone heeft geen ANT+-hardware, dus geen enkele software kan dit uitzenden. Dit is een beperking van het apparaat, niet van de app.

Apparaten die alleen hartslag over ANT+ koppelen — waaronder de Garmin Forerunner 935 — zullen deze uitzending nooit zien, ongeacht de configuratie.

Instellen voor MyWhoosh

Twee configuraties werken. Welke je kiest, hangt ervan af of je een iPhone wilt meenemen, want de Apple Watch kan niets bereiken zonder een iPhone.

Apple Watch + iPhone + AirPods Pro 3

De nauwkeurige configuratie. Beide sensoren rapporteren, HRB verzoent ze tot één getal, en MyWhoosh ziet één band. Start de watch-app, kies Beide als bron op de telefoon, en koppel vervolgens HRB in het sensorscherm van MyWhoosh. De telefoon blijft in de kamer; de watch hoeft niet in de buurt van de head unit te zijn, alleen in de buurt van de telefoon.

iPad + AirPods Pro 3

De configuratie met één apparaat. AirPods Pro 3 koppelen rechtstreeks met de iPad, zodat HRB, MyWhoosh en Bike Control allemaal op hetzelfde scherm draaien zonder dat een telefoon of watch nodig is. Stel de bron in op AirPods — de watch-opties zijn hier verborgen, omdat er niets is waaraan ze kunnen verbinden.

De watch gaat altijd via de iPhone

Een Apple Watch pareert met een iPhone en alleen een iPhone, en het geeft zelf nooit hartslag door via Bluetooth. De watch-app meet, geeft de uitlezing door aan de telefoon via de watch-to-phone-verbinding, en de telefoon is wat je head unit daadwerkelijk verbindt.

Dus de watch voegt een tweede sensor toe aan een iPhone-configuratie, en voegt niets toe aan een iPad-configuratie. Als je één apparaat op het bureau wilt, gebruik dan AirPods op de iPad en laat de watch er buiten.

Eén keer koppelen, op de voorgrond Laat HRB open op het scherm totdat MyWhoosh meldt dat de sensor verbonden is. iOS verbergt de geadverteerde service van een app op de achtergrond, dus ontdekking vereist de voorgrond — daarna kun je van app wisselen of het apparaat vergrendelen en blijft de verbinding behouden.
Uitzenden vanaf één apparaat Start HRB op de telefoon of de iPad, niet op beide. Twee instanties die tegelijk adverteren, tonen twee identieke HRB-sensoren in de lijst van MyWhoosh, en vanaf het koppelscherm is geen onderscheid mogelijk.
Horlogeverbinding, als de rij rood is De rij 'Watch App' op het hoofdscherm geeft weer wat de telefoon daadwerkelijk ziet. 'Niet geïnstalleerd' betekent dat de horloge-app nog nooit is geopend; 'niet bereikbaar' betekent meestal dat de horloge-app niet actief is — open deze en start de sessie. De rij verdwijnt volledig op de iPad.
Testen zonder sensor Stel de bron in op Test Signal om een synthetische 50–100 BPM uit te zenden. Het pareert in MyWhoosh precies als een echte uitlezing — de snelste manier om te bevestigen dat de sensorzijde werkt voordat je iets aantrekt.

Vragen

De eerste punten die mensen tegenkomen, en het eerlijke antwoord op elk.

AirDrop werkt niet meer — stop eerst de uitzending

AirDrop vindt apparaten in de buurt via Bluetooth LE, en dat doet HRB ook, met dezelfde radio. Terwijl HRB adverteert en een head unit is abonnee, houdt het die radio continu vast. AirDrop ziet dan ofwel het apparaat aan de andere kant niet, of toont het maar blijft hangen voordat de overdracht begint.

Stop de uitzending, of sluit HRB, en daarna AirDrop. Het werkt direct weer: opnieuw paren duurt één tik zodra HRB weer in de voorgrond is. Hetzelfde is de moeite waard voor elke andere functie die stilvalt terwijl je uitzendt — CarPlay-handoff, een Bluetooth-toetsenbord dat toetsen begint te laten vallen, Continuity Camera.

Kan ik het scherm vergrendelen zodra het gekoppeld is?

Ja. Ontdekking vereist dat HRB op de voorgrond staat, maar de verbinding blijft behouden bij het vergrendelen, op de achtergrond zetten en wisselen van apps. Wat niet kan, is voor het eerst koppelen terwijl de app verborgen is — iOS stopt met adverteren voor de dienst op de achtergrond.

Wat kost het aan batterij?

Uitzenden is goedkoop; de workoutsessie die de meting produceert, niet. Verwacht ongeveer wat elke hartslagtraining op dat apparaat kost. De Apple Watch is het meest getroffen deel van een iPhone-configuratie, omdat deze de meting uitvoert.

Kunnen twee apps tegelijkertijd de uitzending lezen?

Ja. Bluetooth LE staat toe dat meerdere abonnees verbinding maken met één sensor, zodat MyWhoosh en een tweede app beide dezelfde waarden kunnen zien. Het hoofdscherm toont het aantal actieve abonnees in realtime, zodat u kunt bevestigen dat beide verbindingen daadwerkelijk tot stand zijn gebracht.

De BPM bevriest halverwege de rit

De weergave wordt grijs wanneer de waarde veroudert, in plaats van een verouderde waarde te blijven herhalen. Bij AirPods betekent dit meestal dat ze ophouden met rapporteren — de routekiezer in die rij schakelt de audio even uit en weer in, waardoor de verbinding wordt hersteld zonder de app te verlaten.

Mijn Garmin vindt hem niet

Controleer of dat model hartslaggegevens alleen via ANT+ pareert. Een iPhone heeft geen ANT+-radio, dus kan geen enkele app deze gegevens verzenden. Garmin-apparaten die een Bluetooth-band accepteren, paren normaal met HRB; apparaten die dat niet doen, zullen dat nooit kunnen.

Waar gaat de data naartoe?

Naar de Bluetooth-radio en nergens anders. Er is geen account, geen server en geen analytics. Hartslaggegevens komen uit HealthKit op het apparaat en worden verstuurd als een standaard sensorwaarde naar wat u ook heeft gekoppeld.

Vereisten

Wat het nodig heeft om te draaien, en wat het kost.

iPhone iOS 26 of hoger. Het uitzenden maakt gebruik van de Bluetooth-perifere rol, welke niet wordt ondersteund door de Simulator — hiervoor is echt hardware nodig.
Apple Watch watchOS 11 of hoger. De watch-app voert een trainingssessie uit, wat de enige manier is om hartslaggegevens met een bruikbaar tempo te ontvangen en om door te meten terwijl het scherm uit staat.
AirPods Optioneel. AirPods Pro 3 rapporteren hartslaggegevens aan het apparaat dat de trainingssessie uitvoert, dus start HRB er een op de telefoon wanneer u ze inschakelt als bron.
Prijs USD 4,99 in de App Store, eenmalig betaald. Geen abonnement en geen in-app aankopen. Een TestFlight-beta draait naast de release voor iedereen die de volgende versie vroeg wil proberen.
Koppelen Houd de app geopend totdat uw head unit verbinding maakt. iOS verbergt het geadverteerde service-UUID van een app op de achtergrond, dus ontdekking moet in de voorgrond plaatsvinden — daarna blijft de verbinding behouden bij het vergrendelen van de telefoon.
Uitzendnaam HRB standaard, bewerkbaar tot 10 tekens — advertentiepakketten zijn 31 bytes en head units snijden langere namen af.

Open source op GitHub

De hele app is gepubliceerd onder de MIT-licentie — de iPhone-app, de watch-app, de Live Activity, de build-scripts en deze website. Als je liever de Bluetooth-code leest dan het privacyverklaring op vertrouwen, dan staat het allemaal daar.

Lees het
github.com/tankbottoms/HeartRateBroadcaster — Swift, geen afhankelijkheden, geen analytics SDK om te controleren.
Bouw het
Clone, voer xcodegen generate uit, open het project en bouw. Ondertekening vereist je eigen team-identificatie; verder is niets nodig.
Sideload het
Elke release bevat een Release-configuratie .ipa met instructies voor sideloading. HealthKit en achtergrond-Bluetooth zijn niet beschikbaar voor gratis provisioning-profielen, dus het opnieuw ondertekenen vereist een betaald Apple Developer-account.