Marrow Health
NB
Last ned

Automatiseringer: dataene dine, sendt etter en tidsplan

Marrow kan sende en fil med helsedataene dine med POST til en hvilken som helst URL du velger, i den takten du velger, rett fra telefonen. Denne siden er referansen: hvordan du setter opp en, hvordan hver nyttelast ser ut, og hvordan du skriver noe som mottar den.

Ferdige oppsett for n8n, Zapier, Make, Home Assistant, Google Sheets og InfluxDB finner du under tilkoblinger.

Alle Marrow-guider: MCP · Selvdrevet speil · Automatiseringer · Filer · Brukerstøtte

Hva en automatisering er

En lagret jobb i Eksporter, Automatisert: én type data, ett format, én datoperiode, én URL, én kadens. Marrow bygger filen fra det verifiserte lageret sitt og sender den med POST til URL-en med appen lukket, etter hver synkronisering og ved hver oppdatering i bakgrunnen, så snart kadensen har gått. Ingenting går gjennom oss: telefonen snakker rett med endepunktet ditt.

Slik setter du opp en

  1. Fanen Eksporter, Automatisert: slå den på, deretter Ny automatisering. Lages den fra et verktøys side (n8n, Zapier, Home Assistant og de andre under tilkoblinger), bærer automatiseringen verktøyets navn og sier ved siden av hvert felt hva verktøyet vil ha der.
  2. Adresse: https-URL-en den skal sende POST til. Overskrifter: alle mottakeren din trenger (et Authorization-bearer-token, en X-Gitlab-Token, hva som helst). Når verktøyet ikke trenger noen, ligger Legg til overskrift under Flere alternativer.
  3. Data: Helsemålinger, Treningsøkter, Styrkelogg, Ernæringsdagbok eller Symptomer og humør, som JSON eller CSV. Én automatisering bærer én type, så lag én per type du vil ha. Hver som er på, teller som en tilkobling: Gratis har 1 tilkobling på om gangen, Marrow Pro opptil 10, AI-er og servere inkludert.
  4. Kadens: hvert så og så mange minutter, timer eller dager. Datoperioden, aggregeringen og tidsavbruddet ligger under Flere alternativer.
  5. Kjør nå sender en første nyttelast, slik at du kan sjekke mottakeren før du venter på tidsplanen.

Datoperioder

Nyttelastformer

Helsemålinger (dagstotaler, JSON)

Samme struktur som målingene fra Health Auto Export (en metrics-liste med name, units og data med qty), så en mottaker skrevet for den appen trenger bare små endringer: datoene her er rene dager, ikke tidsstempler, og nyttelastene for treningsøkter og styrke nedenfor er Marrows egne. Verdiene er i lagringsenheten som står i units (kg, m, mL, degC, kcal, count). Puls kommer som Avg, Min og Max for hver dag i bpm, og søvn som hver natt med fasene sine i timer. Regn om hos deg hvis du vil ha imperiske enheter.

{"data": {"metrics": [
  {"name": "body_mass", "units": "kg",
   "data": [{"date": "2026-09-11", "qty": 81.3}]},
  {"name": "step_count", "units": "count",
   "data": [{"date": "2026-09-11", "qty": 8746}]},
  {"name": "heart_rate", "units": "bpm",
   "data": [{"date": "2026-09-11", "Avg": 71, "Min": 52, "Max": 148}]},
  {"name": "sleep_analysis", "units": "h",
   "data": [{"date": "2026-09-11", "totalSleep": 7.2, "asleep": 7.2, "deep": 1.1, "rem": 1.6, "core": 4.3, "awake": 0.2,
             "sleepStart": "2026-09-10 23:36:00 -0400", "sleepEnd": "2026-09-11 07:02:00 -0400"}]}
]}}

Råprøver (grupperingen Råprøver) sender hver prøve med start- og sluttidspunkt i stedet for en dagstotal. CSV-målinger kommer som den brede tabellen som er beskrevet på filsiden.

Treningsøkter

{"data": {"workouts": [
  {"activity": "Running", "start": "2026-09-11T18:43:41Z", "end": "2026-09-11T19:13:53Z",
   "duration_min": 30.2, "kcal": 512, "distance_mi": 3.06, "avg_hr": 174, "source": "Apple Watch"}
]}}

Styrkelogg

Hvert arbeidssett (oppvarmingssett er utelatt), pluss fremgang per øvelse og volum per muskelgruppe. Vektene er i enheten du valgte i Innstillinger, Enheter. Feltet unit sier hvilken. Hvert sett har en set_type som er work, failure eller drop, og et sett har også rir når du har loggført repetisjoner i reserve. set_credits teller settene som krediteres en muskelgruppe, i brøkdeler når en øvelse trener flere grupper.

{"data": {"unit": "lb",
  "sets": [{"time": "2026-09-11T17:02:00Z", "session": "Push day", "exercise": "Bench Press",
            "set": 1, "weight": 185, "reps": 8, "est_1rm": 229.6, "set_type": "work"}],
  "exercises": [{"exercise": "Bench Press", "best_est_1rm": 229.6,
                 "sessions": [{"date": "2026-09-11T17:02:00Z", "sets": 3, "top_weight": 185, "top_reps": 8, "est_1rm": 229.6, "volume": 3885}]}],
  "muscle_groups": [{"group": "Chest", "volume": 3108.0, "set_credits": 2.4}]
}}

Ernæringsdagbok

{"data": {"days": [
  {"day": "2026-09-11", "entries": [
    {"meal": "breakfast", "name": "Oatmeal", "grams": 250, "kcal": 300,
     "protein_g": 10, "carbs_g": 54, "fat_g": 5, "logged_at": "2026-09-11T12:10:00Z",
     "nutrients": {"dietary_fiber": 8.0, "dietary_sugar": 1.2}}
  ]}
]}}

Slik skriver du en mottaker

Alt som godtar en HTTPS POST og svarer 2xx, fungerer: en webhook-tjeneste, en serverløs funksjon, et skript på en hjemmeserver. Tre regler holder den robust:

En Python-mottaker på tolv linjer som arkiverer hvert innlegg:

from http.server import BaseHTTPRequestHandler, HTTPServer
import time

class H(BaseHTTPRequestHandler):
    def do_POST(self):
        body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
        with open(f"marrow-{int(time.time())}.json", "wb") as f:
            f.write(body)
        self.send_response(200)
        self.end_headers()

HTTPServer(("0.0.0.0", 8798), H).serve_forever()

Sett den bak HTTPS (en Cloudflare Tunnel, Tailscale Funnel eller en hvilken som helst reverse proxy) og pek automatiseringen mot den. Hvis det du vil ha, er en kopi du kan spørre i, i stedet for en mappe med filer, er det selvdrevne speilet akkurat den mottakeren, ferdig skrevet.

Greit å vite

Feilsøking

Test med Kjør nå. Linjen under forteller hva som skjedde, og Flere alternativer, Aktivitetslogg beholder de siste 30 kjøringene med den samme linjen. Slå på Varsle ved kjøring (Flere alternativer) for å få et varsel for hver kjøring mens du sjekker.

Hva Marrow viserHva du gjør
En oppsummering av det som ble sendt, for eksempel 12 diary entriesLevert: mottakeren svarte 2xx. Hvis ingenting vises hos den, se de siste radene nedenfor.
Server answered 401 eller 403Mottakeren vil ha en overskrift, eller den du la til, er feil. Sjekk navnet og verdien, inkludert Bearer og mellomrommet etter det.
Server answered 404Feil adresse, eller mottakeren lytter ikke. I n8n bruker du Production URL og aktiverer arbeidsflyten. Sjekk om en bane mangler på slutten.
Server answered 405Adressen tar ikke imot en POST. Pek den mot endepunktet som er ment for innkommende data.
Server answered 413Nyttelasten er for stor for mottakeren. Velg en kortere datoperiode, færre målinger eller Dagstotaler i stedet for Råprøver.
Server answered 500 eller en annen 5xxMottakeren feilet under behandlingen. Se i dens egen logg. Arkiver råinnholdet først, og tolk det etterpå.
Forespørselen ble tidsavbruttMottakeren brukte lenger tid enn tidsavbruddet. Svar først og jobb etterpå, eller øk Tidsavbrudd under Flere alternativer (opptil 300 s).
Retningslinjene for App Transport Security krever bruk av en sikker tilkoblingAdressen er vanlig http på internett. Bruk https. iOS lar Marrow bruke vanlig http bare på ditt eget nettverk.
Finner ikke en server med det angitte vertsnavnetEn skrivefeil i adressen, eller et navn bare hjemmenettverket ditt kjenner. Sjekk det i Safari på telefonen.
No valid URL - set an https endpoint firstAdressen er tom eller starter ikke med https:// (eller http:// på ditt eget nettverk).
Nothing to export in this rangeIngen data av den typen i datoperioden. Velg et lengre område under Flere alternativer, eller loggfør noe først.

Løsninger for ett verktøy om gangen står på verktøyets egen side: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, en hvilken som helst URL.