Din hjärtfrekvens,
på valfri cykldator.
HeartRate Broadcaster (HRB) läser av pulsen i realtid från din Apple Watch och AirPods Pro och slår ihop dem till en enda avläsning. Den sänder ut detta över Bluetooth LE som en standard pulsmätare: ditt träningsapp ser en bröstrem.
Ett hjärta, en ström
Din klocka mäter. Dina AirPods mäter. Två sensorer som ger olika värden samtidigt är sämre än en sensor som är något fel, så HRB avgör mellan dem och skickar ut exakt ett nummer.
Sensoröverenskommelse, öppet
Den listar de sensorer den för närvarande kan höra, skriver ut hur mycket de skiljer sig åt i BPM och visar vilken enskild avläsning den har valt och skickat.
- Apple Watch
- Huvudsensorn. Den kör en riktig träningspass — det enda sättet att sampla hjärtfrekvens med en användbar hastighet och att fortsätta sampla med skärmen avstängd.
- AirPods Pro 3
- En andra, helt valfri sensor. Klockan i sig själv är en komplett källa; AirPods i sig själva är det också.
- iPhone
- Genomsnittar avläsningar som överensstämmer, avslår utlängaren när de inte gör det, och annonserar resultatet som en standard Bluetooth LE Heart Rate Service (
0x180D). När en sensor tystnar står det i raden snarare än att tystjämföra mot ett inaktuellt nummer. - Huvudenhet
- MyWhoosh, Zwift, TrainerRoad, Wahoo och Bluetooth-kapabla Garmin Edge-enheter ser alla en vanlig bröstrem.
Watt in, kalorier ut
En effektmätare mäter arbetet. Att omvandla det arbetet till kalorier kräver två konstanter, båda namngivna nedan.
Från pedalerna till siffran
Watt är joule per sekund. HRB integrerar mätarens rapporterade effekt över den tid den faktiskt rapporterade, och omvandlar sedan det mekaniska arbetet till vad kroppen använde för att producera det.
- Arbete
- Varje effektprov multipliceras med det intervall det täcker och läggs ihop. Ett avbrott exkluderas, det interpoleras inte – sammanfattningen anger hur många sekunder som utelämnades.
- Effektivitet
- Ungefär 24 % av vad du förbrukar når pedalerna som arbete; resten lämnar som värme. Den siffran,
0.24, ligger inom det 0,20–0,25 som mäts för tränad cykling, och det är anledningen till att en kilojoule arbete kostar ungefär en kilokalori. - Vila
- Hälsa betyder "över viloläge" vad gäller aktiv energi, så basandelen av passet — Mifflin–St Jeor, baserat på din längd, vikt, ålder och kön — dras bort innan något skrivs. Sammanfattningen visar båda siffrorna.
- Ingen mätare
- Utan effekt faller uppskattningen tillbaka på en publicerad hjärtfrekvensregression (Keytel et al., 2005) och anger detta på skärmen. En uppskattning som märks som sådan är värd mer än ett nummer som låtsas vara uppmätt.
Varje mätare på cykeln
Cykelkraft (0x1818), cykelhastighet och kadens (0x1816) samt FTMS data för inomhuscykel (0x1826). Pedaler, krankar och smarta träningscyklar rapporterar alla; pedalbaserade mätare rapporterar även vänster/höger-balans där de har det.
Körd och testad mot en Wahoo Kickr Core 2 och PowerTap P1-pedaler, båda sända samtidigt.
En mätare räknas, de övriga loggas
Pedaler, ett krank och en träningscykel läser olika eftersom de mäter vid olika punkter i drivlinan. Du väljer vilken siffra kaloribeloppet baseras på; de andra sparas tillsammans med den, med sina egna genomsnitt, så att du kan se spridningen.
Cykla, spring, simma
Ett pass märks innan det börjar, och standardinställningen är cykel när en effektmätare är påslagen. Märkningen sätter HealthKit-aktivitetstypen, och klockan märker sitt eget pass för att matcha.
Dina kroppsdata finns här
Höjd, vikt, födelsedatum och kön anges en gång och lagras endast på telefonen. De används för de två ekvationerna ovan och för inget annat. Höjd anges i fot och tum, eller centimeter.
Skrivs till Hälsa
Varje pass sparas som ett pass med dess aktiva energi, så det hamnar i dina ringar och i alla appar som läser Hälsa. Historiken i appen behåller detaljer som Hälsa inte har fält för: vilka mätare som hördes och var luckorna fanns.
Det visar dig när den gissar
En ofullständig kroppsprofil, en tappad sensor eller en beräkning baserad endast på hjärtfrekvens visas alla i ett avsnitt för anteckningar under siffran. Inget rundas tyst upp för att se bättre ut än det är.
Tre sätt att få det
Det finns en app, och en version av den. Det som skiljer sig är hur du skaffar den: två av dessa vägar kostar inget och kräver istället ansträngning eller tålamod, och den tredje är App Store.
TestFlight — gratis, 90 dagar
Öppet för alla, ingen inbjudan behövs. Installera Apples TestFlight-app, öppna den offentliga länken, så installeras betaversionen bredvid allt annat. Varje version är användbar i 90 dagar från publiceringsdagen; en ny version nollställer klockan, så betaversionen fortsätter att fungera så länge den uppdateras.
Sidolasta — gratis, kräver ett utvecklar konto
Varje GitHub-utgåva innehåller en Release-konfigurerad .ipa. Den är signerad för distribution, så att installera den innebär att du om signerar den med ditt eget identitet — Xcode, AltStore eller Sideloadly gör alla detta. HealthKit och bakgrunds-BLUETOOTH är inte tillgängliga för gratis provisioning-profiler, så detta alternativ kräver ett betalt Apple Developer-konto. Källkoden finns också där.
App Store — 4,99 USD
Ett köp. Inget abonnemang, inget köp i appen, inga annonser, inget konto, och den uppdaterar sig själv som alla andra appar. Du betalar för att slippa båda ovanstående vägar, och för arbetet bakom det.
Att prova på TestFlight
Betan är öppen — det finns ingen inbjudningslista och inget godkännandesteg. Det är samma app som den betalda versionen, installerad via Apples betakanal istället för butiken.
- 1 — Installera TestFlight
- Apples egen beta-app, gratis i App Store. Den måste finnas på iPhone:n innan länken gör något.
- 2 — Öppna den offentliga länken
- På samma iPhone, öppna testflight.apple.com/join/VUJCa5Gw, tryck sedan på Acceptera och Installera. Ingen inbjudan och ingen kod.
- 3 — Lägg till klockappen
- Installera den från Watch-appen på din iPhone, på samma sätt som vilken annan klockapp som helst. Klockan är sensorn, så detta steg är inte valfritt.
En TestFlight-byggning fungerar i 90 dagar från dagen den publiceras. Varje ny byggning startar om den perioden, så betan fortsätter att fungera så länge den uppdateras. Inget upphör att gälla i App Store-versionen.
Varje skärm
Fångade från leveransversionen på en iPhone 17 Pro Max och en Apple Watch. Vissa togs på en telefon mitt under en tur; de övriga på en simulator, som inte har någon Bluetooth-radio, så sensorerna där är en ersättningsuppsättning som matar appen med verkliga läsningar. Varje siffra på skärnan är appens egen aritmetik. Inget här är en ritning.
Vad den gör
Allt här finns i appen idag. Inget på den här sidan är en produktplan.
Ett riktigt pulsgivare
Reklamerar standardtjänsten för pulsmätning (0x180D) med pulsmätning och plats för kroppssensor. Allt som parar ihop en Bluetooth-pulsgivare parar också detta, utan någon tillhörande app eller insticksmodul.
Två sensorer, ett värde
När klockan och AirPods båda rapporterar, medelvärdar HRB avläsningar som överensstämmer och förkastar avvikaren när de inte gör det — och föredrar den som ligger närmast den trend den redan har sett.
Virtuell växlare
Samma telefon kan också erbjuda sig som växelväljare via det öppna Bike Control-protokollet, så att knapparna under pulsmätaren styr din träningsmaskin i MyWhoosh eller Zwift. Inga klick, inga Play-kontroller, ingen andra enhet.
Dynamic Island
Live Activity på låsskärmen och i Dynamic Island: nuvarande BPM, källan den kommer ifrån, och om en huvudenhet är prenumerant. Överskådlig utan att låsa upp.
Flytande fönster
Bild-i-bild behåller siffran på skärmen medan du använder en annan app — starta ett pass i HRB, byt till din träningsapp, och BPM:t följer med dig som ett flytande fönster. Det överlever ett svep till Startskärmen och flyter ovanpå andra appar, och det är tyst: fönstret spelar ingen ljud och pausar, dämpar eller övertar aldrig det du redan har igång.
Lås pekskärm för klockan
En ärm, en jackdragkedja eller ett grepp om styvetejp kan avsluta sändningen mitt under passet. Aktivera låset så förhindrar klockappen oavsiktliga tryck — ett medvetet tryck i en sekund låser upp, och BPM:n förblir läsbar hela tiden.
Diagnostik, i fullt omfång
Inställningar visar anslutna centraler efter identifierare, skickade ramar per prenumerant, live-ramfrekvens, exakta byte av den sista ramen och hur länge det sedan den sändes. När något inte fungerar kan du se vilken del av länken som är fel.
Hjärnsynkroniserad animation
Hjärtsymbolen på telefonen och klockan slår i din uppmätta takt och stannar när proverna slutar anlända. En stilla hjärtsymbol ovanför ett trovärdigt nummer betyder att sensorn har tappats bort.
Fortsätter sända i bakgrunden
När en huvudenhet har anslutit överlever länken att låsa telefonen. HRB notifierar en gång i sekunden oavsett om värdet har ändrats eller inte, vilket är vad ett riktigt band gör och vad huvudenheter förväntar sig.
Testsignal
En syntetisk hjärtfrekvenuskälla för para och felsökning utan att ha något på dig. Bekräfta att huvudenheten ser en sändning innan du oroa dig för sensorn.
Tjugofem språk
Varje skärm på telefonen och klockan är översatt till tjugofem språk, inklusive arabiska med höger-till-vänster-layout istället för speglat engelska. Välj en i Inställningar så stannar den vald, oavsett vad telefonen är inställd på. Denna webbplats är på samma tjugofem språk.
Kompatibilitet
Varje app eller huvudenhet som parar ihop en Bluetooth LE-pulsmätare parar ihop HRB på samma sätt.
Och detta är vad den läser av. De namngivna är vad appen byggdes och kördes mot; en mätare eller träningsmaskin som inte finns med dem fungerar ändå, eftersom appen läser av de standardiserade profilerna för cykelkraft och FTMS snarare än specifika modeller.
Ingen ANT+ – och ingen app kan lägga till det
HRB sänder endast över Bluetooth LE. ANT+ är ett separat radioprotokoll, och en iPhone har ingen ANT+-hårdvara, så ingen programvara kan sända det. Detta är en begränsning för enheten, inte för appen.
Enheter som para hjärtfrekvens endast över ANT+ – inklusive Garmin Forerunner 935 – kommer aldrig att se denna sändning, oavsett hur den är konfigurerad.
Konfiguration för MyWhoosh
Två konfigurationer fungerar. Vilken du väljer beror på om du är beredd att bära en iPhone, eftersom Apple Watchen inte når någon utan en sådan.
Watch + iPhone + AirPods Pro 3
Den noggranna konfigurationen. Båda sensorerna rapporterar, HRB förenar dem till ett enda värde, och MyWhoosh ser en enda band. Starta watch-appen, välj Båda som källa på telefonen, para sedan in HRB i MyWhoosh:s sensorskärm. Telefonen stannar i rummet; klockan behöver inte vara nära huvudenheten, bara nära telefonen.
iPad + AirPods Pro 3
En enhetskonfiguration. AirPods Pro 3 paras direkt in på iPad:en, så HRB, MyWhoosh och Bike Control körs på samma skärm utan telefon eller klocka. Ställ in källan till AirPods — klockalternativen döljs här eftersom det inte finns något att ansluta till.
Klockan går alltid via iPhone
En Apple Watch parar ihop sig med en iPhone och endast en iPhone, och den annonserar aldrig hjärtfrekvens över Bluetooth själv. Klockappen mäter, skickar avläsningen till telefonen via länken mellan klocka och telefon, och det är telefonen som din huvudenhet faktiskt ansluter till.
Så klockan lägger till en andra sensor till en iPhone-konfiguration, men lägger till inget till en iPad-konfiguration. Om du vill ha en enhet på skrivbordet, använd AirPods på iPad:en och låt klockan vara borta.
| Para in en gång, i förgrunden | Låt HRB vara öppen på skärmen tills MyWhoosh rapporterar att sensorn är ansluten. iOS döljer en app i bakgrunds läges annonserade tjänster, så upptäckten kräver förgrunden — efter det kan du byta appar eller låsa enheten och anslutningen håller. |
|---|---|
| Sänd från en enhet | Kör HRB på telefonen eller iPad:en, inte båda. Två instanser som annonserar samtidigt lägger till två identiska HRB-sensorer i MyWhoosh-listan, och det går inte att skilja dem åt på parningsskärmen. |
| Klocklänk, om raden är röd | Raderna för Apple Watch-appen på huvudskärmen visar vad telefonen faktiskt ser. "Inte installerad" betyder att klockappen aldrig har öppnats; "inte nåbar" betyder oftast att klockappen inte körs — öppna den och starta sessionen. Raden försvinner helt på iPad. |
| Att testa utan sensor | Ställ in källan till Testsignal för att sända en syntetisk 50–100 BPM. Den parar ihop sig i MyWhoosh exakt som en verklig avläsning — det snabbaste sättet att bekräfta att sensordelen fungerar innan du spänner på dig något. |
Frågor
Det som brukar dyka upp först, och de ärliga svaren på varje fråga.
AirDrop slutade fungera — stoppa sändningen först
AirDrop hittar närliggande enheter över Bluetooth LE, och det gör HRB också, med samma radio. När HRB annonserar och en huvudenhet är prenumerant, håller den den radion kontinuerligt. AirDrop kan då antingen misslyckas med att se enheten i andra änden, eller visa den och stanna innan överföringen börjar.
Stoppa sändningen, eller avsluta HRB, sedan AirDrop. Det fungerar igen omedelbart: omparning kräver ett enda tryck när HRB är tillbaka i förgrunden. Samma sak kan vara värt att prova för andra funktioner som tystnar medan du sänder — CarPlay-handoff, ett Bluetooth-tangentbord som börjar tappa tangenttryckningar, Continuity Camera.
Kan jag låsa skärmen när den är ihopparad?
Ja. Upptäckt kräver att HRB är i förgrunden, men anslutningen överlever att låsa skärmen, skicka appen till bakgrunden och byta appar. Det du inte kan göra är att para ihop för första gången medan appen är dold — iOS slutar annonsera tjänsten i bakgrunden.
Hur mycket batteri kostar det?
Att sända är billigt; träningspasset som producerar avläsningen är det inte. Förvänta dig ungefär vad varje hjärtfrekvensträningspass kostar på den enheten. Klockan är den som drabbas hårdast i en iPhone-konfiguration, eftersom det är den som mäter.
Kan två appar läsa sändningen samtidigt?
Ja. Bluetooth LE tillåter flera prenumeranter till en sensor, så MyWhoosh och en andra app kan båda se samma siffror. Huvudskärmen visar antalet live-prenumeranter så att du kan bekräfta att båda faktiskt anslutit.
BPM frös under cyklingen
Avläsningen gråtonas när den blir inaktuell istället för att upprepa ett dödt värde. Med AirPods innebär det oftast att de slutat rapportera — ruttväljaren i den raden hoppar bort ljudet och tillbaka, vilket återupprättar länken utan att lämna appen.
Min Garmin hittar den inte
Kontrollera om den modellen para ihjärtfrekvens över ANT+ endast. En iPhone har ingen ANT+-radio, så ingen app kan sända den. Garmin-enheter som accepterar en Bluetooth-band para sig normalt med HRB; de som inte gör det kommer aldrig att göra det.
Vart går datan?
Till Bluetooth-radion, och inget annat. Det finns inget konto, ingen server och ingen analys. Hjärtfrekvensen kommer från HealthKit på enheten och lämnar som ett standard sensornivå till vad du har parat.
Krav
Vad det behöver för att köra, och vad det kostar.
| iPhone | iOS 26 eller senare. Sändning använder Bluetooth-periferrollen, vilket Simuleringen inte stöder — detta kräver verklig hårdvara. |
|---|---|
| Apple Watch | watchOS 11 eller senare. Klockappen kör en träningspasssession, vilket är det enda sättet att få hjärtfrekvens i en användbar takt och för att fortsätta sampla med skärmen avstängd. |
| AirPods | Valfritt. AirPods Pro 3 rapporterar hjärtfrekvens till den enhet som kör träningspasssessionen, så HRB startar en på telefonen när du aktiverar dem som en källa. |
| Pris | 4,99 USD i App Store, engångsbetalning. Inget abonnemang och inga köper i appen. En TestFlight-beta körs parallellt med utgåvan för alla som vill ha nästa version i förväg. |
| Parning | Håll appen öppen tills din huvudenhet ansluter. iOS döljer en app i bakgrunds läges annonserade tjänst-UUID, så upptäckten måste ske i förgrunden — efter det överlever anslutningen att låsa telefonen. |
| Sändarnamn | HRB som standard, redigerbart upp till 10 tecken — annonseringspaket är 31 byte och huvudenheter trunkerar längre namn. |
Öppen källkod på GitHub
Hela appen är publicerad under MIT-licensen — iPhone-appen, Watch-appen, Live Activity, byggnadsskripten och denna webbplats. Om du hellre läser Bluetooth-koden än att lita på integritetspåståendet, finns det allt där.
- Läs det
- github.com/tankbottoms/HeartRateBroadcaster — Swift, inga beroenden, inga analys-SDK att kontrollera.
- Bygg den
- Klona, kör
xcodegen generate, öppna projektet och bygg. Signering kräver ditt eget team-ID; inget mer krävs. - Sidoladda den
- Varje utgåva innehåller en Release-konfiguration
.ipamed instruktioner för sidoladdning. HealthKit och bakgrunds-Bluetooth är inte tillgängliga för gratis provisioning-profiler, så omsignering kräver ett betalande Apple Developer-konto.