FitMesh Sync
← Wszystkie artykuły
Przewodnik główny

Przewodnik pilarski

Więcej smartwatches bez duplikatów danych: przewodnik po deduplikacji wielu wearables

Każdy wearable uważa się za jedyną źródło prawdy, i ma rację z perspektywy swojej. Problem pojawia się, gdy pięć źródeł prawdy piszą wszystko w Health Connect i żadne nie wie o istniecientwi innych.

KategoriaGuide
Data10 czerwca 2026
Czas czytania16 min czytania

W skrócie

  • Health Connect nie de duplicuje: jest neutralnym bazodanem źródłowym, a każda aplikacja zapisuje dane niezalepiecie. Logika de duplicacji powinna być umieszczona w aplikacji, która agreguje te dane.
  • Trzy typowe problemy: duplikaty kroków z powodu zlaczonych rekordów, dupek sesji sennej, średnia częstotliwość pulsacyjna zanieczyszczonej przez różne konteksty.
  • Strategia poprawna kombinuje trzy techniki: winner-takes-all dla okna czasowego (HR), slot-merge co 15 minut (kroki), grupowanie z priorytetami źródłowymi (spoczynek).
  • Dwie rzeczy wymagają ręcznej konfiguracji: jaki urządzenie wearble używasz podczas senu i wyłącz jako źródło pisowni Google Fit, jeśli nadal aktywne.
  • FitMesh Sync stosuje tę deduplikację automatycznie i zawsze oddziela HR spoczynkowe od HR treningowych.

Je indoszuj więcej niż jeden wearable, twoje kroki prawie na pewno są przekrwione. Nie z powodu błędu: jest to zachowanie oczekiwane w ecosystemie zaprojektowanym dla pojedynczych urządzeń, używanym przez osobę, która zrozumiała, że różne narzędzia działają lepiej w różnych kontekstach. Galaxy Watch na codzienne potrzeby, anell smart do śpienia, Garmin dla długich biegów, Suunto do wyjazdów na barakę lub górskie wyprawy: każde urządzenie wyróżnia się w swoim kontekście. Jednaktastrzyżka musi zrozumieć, że 8000 kroków rano nie powinny być dodawane do 8000 kroków, które Garmin zarejestrował podczas wieczornego biegu przebiegającego przez te same chodniki.

Dlaczego dane się podwójnie zaznaczają: podstawowa techniczna przyczyna problemu

Health Connect to lokalny baza danych na Android. Każda app z odpowiednimi uprawnieniami może do niego wpisywać rekordy dowolnego typu: kroki, częstotliwość serca, sesje senne, treningi. Health Connect nie wie, czy dwa rekordy to ta sama rzecz pomiarowana dwukrotnie: nie ma pola "pochodzenie oryginalne" i nie de-duplikuje automatycznie. To jest świadomie zrobiona decyzja projektowa, a nie techniczny limit: system jest neutralny wobec źródeł, aby nie przewyższać żadnego producenta.

Problem konkretny: gdy nosisz Galaxy Watch i Garmin podczas biegu 10 km, oba zapisują w Health Connect. Galaxy Watch zapisuje swoje 9.847 kroki, a Garmin zapisuje swoje 10.124 kroki (liczby te się różnią ze względu na różne kalibracje sensora). Aplikacja, która czyta Health Connect bez logiki deduplikacji, sumuje je: wynik, 19.971 kroków dla biegu 10 km. Jest to podwójna ilość. I dla częstotliwości pulsacyjnej jest jeszcze gorsze: średnie są zanieczyszczone pomiarami wykonanymi w różnych fizycznych kontekstach.

Trzy wzory kopiowania, z którymi spotykam się najczęściej

  1. Rekordy akumulatywne: dla kroków niektóre aplikacje zapisują rekordy akumulatywne ("akumulowane kroki dnia do chwili obecnej") zamiast intradajowych. Jeśli zarówno Galaxy Watch jak i Garmin Connect używają rekordów akumulatywnych, całkowity wynik na koniec dnia to suma dwóch całkowitych wartości, a nie deduplikowany wynik.
  2. Sesje snuwań nadlängeczne: Galaxy Ring lub Oura zapisują sesję od 22:30 do 06:45. Galaxy Watch zapisuje od 22:35 do 06:40 (taka noc, okna lekko różne). Agregator, który nie clusteruje czasowo sesji, pokazuje dwie noce snu, podwojając całkowite godziny i zanieczyszcza średnie oceny snu.
  3. Srednia częstotliwość serca dzienna z różnych źródeł: kardiaca Polar H10, którą używasz podczas treningu, zapisuje 147 bpm jako średnią dla trenu. Galaxy Watch zapisuje 72 bpm jako średnią spoczynkową w porze południowej. Bez taggowania okresów czasowych, srednia dzienna staje się liczbą bez sensu fizycznego.

Setup, który opisuję: cztery wearable, cztery role

Aby być konkretny, pracuję nad tym konkretnym przypadkiem użycia: regularny smartwatch (Galaxy Watch 7) śledzący wszystko w tle, smartanellę (Galaxy Ring lub Oura Ring) optymalizowaną do monitorowania snu z sensorami wyższej jakości niż smartwaty, GPS watch przeznaczony dla biegów (Garmin Forerunner) z precyzyjnym GPS i zaawansowaną analizą VO2max, watch zewnętrzny/morski (Suunto Race lub Suunto Ocean) do wypraw na statek i trekkingu wymagających logowania GPS oraz barometru. Cztery urządzenia, cztery konteksty użycia, cztery aplikacje piszące w Health Connect.

MetrikaPreferowany źródłoMotywŹródła do zignorowania
S:numelanie (trwałość, fazы, ocena)Anell smart (Oura / Galaktyczny Anul)Sensory PPG bliższe do nadgarstka/pośladka, mniej interference z ruchami nocnymiGalaxy Watch, Garmin (tą noc)
Krody dziarskie (nie-trajning)(Galaxy Watch (kiedy noszone))Zawsze na ramieniu, pokrywa całą pełną dobęGarmin, Suunto (nie noszone całe dni)
Kroki i dystans podczas bieguGarmin Przewodnikprecyzyjna kalibracja kroku specyficznego dla biegania__(mniej precyzyjny na dłuższych odległościach)__
Częstotliwość serca podczas workoutTreningowy wykaz (Garmin dla biegania, Suunto dla zewnątrz)Sensory光学/物理传感器设计用于该上下文的设备Galaxy Watch (w tleciu podczas tego samego godziny)
RODO (HRV (zmiana częstotliwości serca))Anell smart (mierzenie notkowe)Miara podstawowego spoczynku, najbardziej zaufany kontekst dla HRVGalaxy Watch (mierzenie dnia mniej standardowe)
Zaloguj się i zapisz (wychodzenie/wiatr)SuuntoBarometrальный altimетр, GPS морской, длинновременный журнал трековGalaxy Watch, Garmin (kontekst nie specyficzny dla zewnetrznej aktywnosci)
Jak wearables wygrywają w danej metryce (winner-takes-all w kontekście)

Jak działa deduplikacja: trzy konkretne strategie

1. Wygrywa jeden, wszystko dla źródła i okna czasowej

Dla częstotliwość serca intraday i dane treningowe, najbardziej wiarygodny sposób to ustalenie priorytetu źródła dla każdej okna czasowego. Jeśli Garmin wpisał dane częstotliwości serca od 17:30 do 18:45 (czas trwania bieguna), dowolne poważne panel wykorzysta te dane i zignoruje dane wprowadzone przez Galaxy Watch w tym samym oknie czasowym. Galaxy Watch znowu staje się "wygrany" od 18:46, gdy Garmin już nie pisze aktywnych rekordów.

W praktyce to implementuje się poprzez odczytanie rekordów typu ExerciseSession z Health Connect: każda sesja treningowa ma startTime i endTime. Logika deduplikacji wykorzystuje te okna czasowe do decydowania, która źródło ma priorytet w przypadku metryk w tym oknie czasowym.

2. Polaczkie pola łączenia dla agregowanych danych dziennych

Dla całkowite liczby kroków dziennych, strategia winner-takes-all nie jest właściwą rozwiązaniem: Galaxy Watch zbiera kroki od 07:00 do 17:29, a Garmin od 17:30 do 18:45. Suma jest poprawna, nie ma powtarzania. Problem polega na tym, czy obie strony zarejestrowały kroki w tej samej oknie czasowej.

Merge polevélu działa tak: dziel dzień na sloty 15-minutowe. Dla każdego slotu zapisuj tylko rekord z najwyższym licznikiem między wszystkimi źródłami (konserwatywnie załóż, że najwyższy wartość jest najbardziej dokładny). Dodaj maksima dla slotów: uzyskasz deduplikowany całodobowy licznik. Ten podejście działa, ponieważ dwa urządzenia rejestrujące te same kroki produkcją podobne wartości (najwyższa wartość jest szacunkiem prawdy), a jednocześnie dwa urządzenia w różnych kontekstach produkują dodatkowe wartości.

3. Klasterowanie temporalne dla sesji snu

Dla seno, problematyka jest inna: sesje Oura Ring i Galaxy Watch na tę noc się nachodzą prawie całkowicie, ale żadna z nich nie jest błędną. Prostě mierzą to samo za pomocą różnych sensorów. Strategią jest klasterowanie: jeśli dwie sesje senu się nachodzą przez ponad 80% czasu, są uznawane za tę samą noc. Następnie stosuje się priorytet źródła: smartband wygrywa, ponieważ sensor optyczny na palcu jest statystycznie bardziej precyzyjny dla faz senu niż sensor na nadgarstku.

Coż musisz skonfigurować ty: trzy krytyczne ustawienia

Nie wszystko może być automatyzowane. Istnieją trzy konfiguracje, które wymagają wprowadzenia użytkownika, ponieważ zależą one od indywidualnych zwyczajów, których żaden algorytm nie może wywnioskować.

  1. Zdefinięć, który urządzenie jest twoim głównym źródłem dla snu. Jeśli masz zarówno Galaxy Watch, jak i smartband, musisz to określić jasno. FitMesh Sync pyta o to podczas onbordingu ("Jakie urządzenie nosisz w nocy?"). Jeśli nie zaznaczysz tego, używa Galaxy Watch jako alternatywy, ponieważ jest najpowszechniej używany, ale to wybranie jest losowe.
  2. Wyłączyć Google Fit jako źródło pisowni, jeśli nadal aktywny. Przejdź do Health Connect > Zarządzanie uprawnieniami > Google Fit i sprawdź, czy ma tylko uprawnienia do odczytu, a nie do zapisu. Google Fit deprecowane, które nadal pisze w Health Connect, jest głównym powodem trójkrotnej konfiguracji w ustawieniach wielu wearable.
  3. Okresy aktywności dla konkretnych urządzeń. Jeśli Garmin go nosisz tylko podczas biegów (nigdy w spoczynku), system może ignorować jego dane częstotliwości serca poza oknami treningowymi. Bez tej informacji, częstotliwość serca w spoczynku pomiaru Garmin podczas wolnej aktywności może zanieczyszczyć średnią wartość spoczynkową.

Przypadek Suunto: dane, które nie przechodzą przez Health Connect

Suunto jest wyjątkiem w tym scenariuszu. Zamiast Garmin, która pisze w Health Connect natywnie z Garmin Connect Android, aplikacja Suunto na Android nie ma integracji natywnej z Health Connect dla wszystkich typów danych. Trasy GPS i dane treningowe z Suunto są dostępne za pomocą API Silnika Sportowego Suunto, a nie poprzez Health Connect.

To integrować Suunto w multi-sourced dashboard potrzebny jest oddzielny connector, który odczytuje z API Suunto Sport Engine z autoryzacją OAuth. FitMesh Sync obsługuje tę integrację osobno: idź do ustawień, sekcja Urządzenia, i dodaj Suunto jako źródło OAuth. Po połączeniu, dane Suunto są łączone z przepływem Health Connect z taką samą logiką deduplikacji.

Częstotliwość serca średnia "zanieczyszczone": przykład rzeczywisty

Tenę za problem mniej wyraźnie widoczny, ale bardziej szkodliwy dla osób korzystających z danych do monitorowania zdrowia w czasie. Szenariusz: wykonujesz bieg trwający 45 minut z fascią Polar H10 podłączoną do Garmin (dane wiarygodne dotyczące treningu, średnia 148 bpm). W tym czasie Galaxy Watch zapisuje Twoją częstotliwość serca co 10 minut w tle, widząc wartości od 145 do 155 bpm (to jest poprawne, biegasz). Po biegu, siedzisz przez dwie godziny z częstotliwością serca wynoszącą 62-68 bpm. Galaxy Watch nadal zapisuje.

Przeglądarka, która liczy "środnikową częstotliwość serca dzienną" bez rozróżniania źródeł, zbiera wszystkie te dane, je sumuje i podzieli. Wynik to liczba, która nie reprezentuje ani częstotliwości spoczynkowej ani podczas treningu: jest średnio wartością rzeczy, które nie powinny być średnione razem. Dla tego powodu FitMesh Sync prezentuje oddzielnie częstotliwość serca spoczynkową (obliczoną wypuszczając okna treningowe) i częstotliwość serca podczas treningu (obliczoną dla rodzaju aktywności), zamiast pokazywać jednolitą średnią dzienną.

CoEMURO w automatycznym trybie

  • Automatyczne wykrywanie sesji treningowych: odczytaj rekordy ExerciseSession z Health Connect i twórz wykresy okien aktywnych dla każdego źródła.
  • Mergowanie slotów o 15 minut: korzysta z maksymalnej ilości slotów z wszystkich źródeł, usuwa powtórzenia bez stracenia dodatkowych danych (Galaxy Watch rano + Garmin wieczorna treningowa).
  • Klasterowanie sesji snu: grupuje sesje pokrywające się o ponad 80% i stosuje priorytet anell >> smartwatch dla faz snu.
  • Oddzielenie HR w spoczynku od treningu: okna treningowe są wykluczone z obliczenia częstotliwości sercowej w spoczynku.
  • Dedyplikacja rekordówSamsung duplikatów: filtry rekordów o tym samym timestamp i source_package powtarzonym (znany błądSamsung z dwukrotnej pisowni).

Ostne granice: co nie można jeszcze automatyzować

Nie chcę nadrealizować tego, co może sam robotastraż zrobić. Istnieją sytuacje, które w tej chwili wymagają jeszcze ręcznego interwencji lub generują wyniki przybliżone:

  • Treningi pływackie z Suunto i Galaxy Watch nadmiernie zaznaczonymi: Galaxy Watch rozpoznaje pływanie jako ExerciseSession (typ SWIMMING), a Suunto rejestruje swój log za pomocą API Silnika Sportowego. Jeśli timestampi jest częściowa zaznaczenie (np. zmiana korytarza między dwoma basenami), fuzja jest konserwatywna, ale nie idealna.
  • VO2max zróżnicowanych źródeł: Garmin wylicza swój VO2max za pomocą własnego algorytmu (FirstBeat), a Galaxy Watch korzysta z innego metody. Oceny nie są porównywalne: na chwilę obecną FitMesh Sync prezentuje dwie metryki oddzielnie, nie łączy je w jeden indeks.
  • HRV podówczas w ciągu dnia vs anello nocnym: jeśli używasz paska Polar H10 do HRV rannego i anelku do HRV wieczornego, wartości są poprawne w swoich kontekstach ale nie mogą być bezpośrednio porównywane. To jest ograniczenie nie software'a, a biometrii: HRV może się zmieniać w zależności od godziny i pozy.

W syntezie

  • Health Connect nie de duplicuje: jest neutralnym bazodanem źródłowym, a każda aplikacja pisze niezależnie. Logika de duplicacji musi być umieszczona w aplikacji, która agreguje.
  • Trzy główne problemy w setupach multi-wearable to: podwójne kroki spowodowane zliczaniem z overlapingowych rekordów akumulacyjnych, podwójne sesje senu z różnych urządzeń pomiarowych zanotowanych na tę samą noc, średnia częstotliwość pulsacji zanieczyszczonej pomiarami w różnych fizycznych kontekstach.
  • Strategia poprawna składa się z trzech komplementarnych technik: winner-takes-all dla okna czasowego (HR intradzie), slot-merge co 15 minut (kroki), grupowanie czasowe z priorytetem źródłowym (drzemka).
  • Dwie rzeczy wymagają ręcznej konfiguracji: jaki urządzenie używasz podczas senu, oraz wyłączanie Google Fit z źródła pisowni, jeśli nadal jest aktywne.
  • Suunto nie przechodzi przez Health Connect: potrzebny jest oddzielny connetor OAuth. Następnie dane są zintegrowane w tej samej logice dedup.
  • Przeciętna częstotliwość serca dziennie bez uwzględnienia kontekstu jest liczbą bez fizycznego sensu: zawsze rozróżnij CCR (częstotliwość serca spoczynkowej) od CCAW (częstotliwości serca podczas treningu).

Często zadawane pytania

Można używać Galaxy Watch i Garmin razem bez dublowanych danych?+

Tak, ale wymaga on zintegrowanego systemu zarządzającego deduplikacją. Galaxy Watch i Garmin obie piszą do Health Connect, więc jeśli otworzysz Health Connect, zobaczysz rekordy obu dla tych samych metryk. Aplikacja jak FitMesh Sync używa logiki winner-takes-all dla okien treningowych (Garmin wygrywa podczas biegu) i 15-minutowego scalenia slotów dla dziennych kroków (żadna źródłowa danych nie jest stracona, ale duplikaty są usuwane).

Czy pęczek Oura synchronizuje się z Health Connect?+

Tak, od 2024 Oura Ring zapisuje dane snu, częstotliwości serca i aktywności w Health Connect na Android. Dane snu z Oura są szczególnie szczegółowe (fazy REM, light, deep z precyzyjnym timestampingiem) i zapisywane jako rekordy sesji snu. Jeśli masz też Galaxy Watch włączony nocą, zobaczysz dwie sesje snu dla tej samej nocy: jedna agregująca, która nie clusteruje, wygeneruje podwójne godziny senne.

Jak usuwam duplikaty kroków, gdy mam więcej smartwatchów, które toczą się ze mną?+

Najbardziej zespawiony metodą jest slot-merge o oknie czasowym. Dzień dzieli się na interwały (zazwyczaj 5-15 minut). Dla każdego interwału wybierany jest maksymalny wartość z wszystkich źródeł. To działa, ponieważ dwa urządzenia mierzące tę samą marsz produkcjonie podobne wartości (maksimum to szacunek prawdy), a dwa urządzenia w różnych chwilach tworzą dodatkowe poprawne wartości. Wynik to dzienny łącznik, który nie sumuje te samej marszy dwukrotnie, ale obejmuje poprawnie rano z Galaxy Watch i wieczór z Garmin.

Suunto pyta, czy Health Connect?+

Nie całkowicie. W przeciwieństwie do Garmin posiadającego integrację Health Connect natywną z jego aplikacją Android, Suunto eksponuje głównie dane poprzez interfejs API Sport Engine Suunto z autoryzacją OAuth. Oznacza to, że do integracji Suunto w multi-sourced dashboardu potrzebny jest oddzielny connector, który czyta z API Suunto. FitMesh Sync zawiera ten connector: po dodaniu Suunto jako źródła OAuth, dane są łączone z głównym przepływem przy użyciu tej samej logiki deduplikacji.

Dlaczego moja średnia częstotliwość serca wydaje się zbyt wysoka lub zbyt niska przy wielu wearble?+

Praktycznie na pewno jest to problem z mesclaniem kontekstów. Jeśli Twoja dashboard oblicza średnią częstotliwość serca dzienną sumując wszystkie rekordy z wszystkich źródeł, kończy się na tym, że średnia częstotliwość spoczynkowa łączy się z częstotliwością podczas treningu. Rozwiązanie polega na oddzieleniu tych kontekstów: częstotliwość serca spoczynkowa (obliczana tylko w godzinach poza oknami treningowymi), średnia częstotliwość trafiennicza (obliczana tylko podczas sesji ćwiczeń, według rodzaju aktywności). Jedno wielokontekstowe obliczenie dziennego średniego nie ma sensu fizjologicznego.

Galaxy Ring i Galaxy Watch podwójnie zwiększają dane snu?+

Tak, jeśli je używasz oba noce. Obaj Galaxy Ring i Galaxy Watch zapisują się w sesjach snu dla tej samej nocy. Samsung Health próbuje obsłużyć to wewnętrznie (Galaxy Ring ma priorytet, jeśli jest wykryty jako aktywna sorgenta noce), ale zachowanie nie jest gwarantowane na wszystkich urządzeniach i wersjach One UI. Jeśli używasz agregatora trzecich stron jak FitMesh Sync, logika klasteryzacji snu rozwiązuje problem niezależnie od Samsung Health.

Zastrzeżenie

FitMesh Sync jest niezależnym produktem. Samsung, Garmin, Suunto, Oura, Polar, Google, Apple są znakami towarowymi swoich właścicieli. Niniejszy artykuł nie sugeruje żadnej afiliacji ani sponsorowania.

Informacja zdrowotna

Informacje zawarte w tym artykule mają charakter wyłącznie informacyjny i nie zastępują porady lekarza, farmaceuty ani innego specjalisty ds. zdrowia. FitMesh Sync to aplikacja fitness i wellness, a nie wyrób medyczny. Nie diagnozuje ani nie leczy żadnych schorzeń. W razie objawów, wątpliwości lub decyzji dotyczących leczenia zawsze konsultuj się ze swoim lekarzem.

M

Napisane przez

Matteo Pizzi

Founder & Solo Dev, FitMesh Sync · Fosforonero

Włoski programista. Stworzyłem FitMesh Sync, aby wypełnić lukę między moim smartwatchem a prawdziwym osobistym dashboardem. Prywatność na pierwszym miejscu, indie, serwery w UE.

Więcej o projekcie

Czytaj dalej

Więcej smartwatches bez duplikatów danych: przewodnik po deduplikacji wielu wearables · FitMesh