Marrow Health
SV
Ladda ner

Automatiseringar: dina data, skickade enligt schema

Marrow kan skicka en fil med din hälsodata med POST till vilken URL du vill, i den takt du vill, direkt från telefonen. Den här sidan är referensen: hur du ställer in en, hur varje payload ser ut och hur du skriver något som tar emot den.

Färdiga uppsättningar för n8n, Zapier, Make, Home Assistant, Google Sheets och InfluxDB finns under anslutningar.

Alla Marrow-guider: MCP · Spegel på egen server · Automatiseringar · Filer · Support

Vad en automatisering är

Ett sparat jobb i Exportera, Automatisk: en typ av data, ett format, ett datumintervall, en URL, en takt. Marrow bygger filen från sitt verifierade lager och skickar den med POST till URL:en med appen stängd, efter varje sparad synkning och vid varje uppdatering i bakgrunden, så snart takten har gått ut. Ingenting passerar oss: telefonen pratar direkt med din endpoint.

Så ställer du in en

  1. Fliken Exportera, Automatisk: slå på den och sedan Ny automatisering. När den skapas från ett verktygs sida (n8n, Zapier, Home Assistant och resten under anslutningar) får automatiseringen verktygets namn och berättar vid varje fält vad verktyget vill ha där.
  2. Adress: den https-URL den ska skicka POST till. Rubriker: alla som din mottagare behöver (en Authorization-bearer-token, en X-Gitlab-Token, vad som helst). När verktyget inte behöver några finns Lägg till rubrik under Fler alternativ.
  3. Data: Hälsomätvärden, Träningspass, Styrkelogg, Kostdagbok eller Symtom och humör, som JSON eller CSV. En automatisering bär en typ, så gör en för varje typ du vill ha. Varje en som är på räknas som en anslutning: Gratis har 1 anslutning på åt gången, Marrow Pro upp till 10, AI:er och servrar inräknade.
  4. Takt: var så många minuter, timmar eller dagar. Datumintervallet, aggregeringen och tidsgränsen finns under Fler alternativ.
  5. Kör nu skickar en första payload så att du kan kontrollera mottagaren innan du väntar på schemat.

Datumintervall

Payloadens form

Hälsomätvärden (dagssummor, JSON)

Samma struktur som Health Auto Exports mätvärden (en lista metrics med name, units och data med qty), så en mottagare som skrivits för den appen behöver bara små ändringar: datumen här är vanliga dagar, inte tidsstämplar, och payloads för träningspass och styrka nedan är Marrows egna. Värdena är i den lagrade enhet som anges i units (kg, m, mL, degC, kcal, count). Puls kommer som varje dags Avg, Min och Max i slag per minut, och sömn som varje natt med sina stadier i timmar. Räkna om hos dig om du vill ha brittiska eller amerikanska mått.

{"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åprover (grupperingen Råprover) skickar varje prov med start- och sluttid i stället för en dagssumma. CSV-mätvärden kommer som den breda tabell som beskrivs på filsidan.

Träningspass

{"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

Varje arbetsset (uppvärmningsset utelämnas), plus framsteg per övning och volym per muskelgrupp. Vikterna är i den enhet du valde i Inställningar, Enheter. Fältet unit säger vilken. Varje sets set_type är work, failure eller drop, och ett set har också rir när du loggade repetitioner kvar. set_credits räknar de set som tillgodoräknas en muskelgrupp, i bråkdelar när en övning tränar flera 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}]
}}

Kostdagbok

{"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}}
  ]}
]}}

Skriva en mottagare

Allt som tar emot en HTTPS POST och svarar 2xx fungerar: en webhook-tjänst, en serverlös funktion, ett skript på en hemmaserver. Tre regler gör den robust:

En mottagare i Python på tolv rader som arkiverar varje anrop:

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()

Lägg den bakom HTTPS (en Cloudflare Tunnel, Tailscale Funnel eller vilken omvänd proxy som helst) och peka automatiseringen mot den. Om du hellre vill ha en kopia du kan söka i än en mapp med filer är spegeln på egen server just den mottagaren, redan skriven.

Bra att veta

Felsökning

Testa med Kör nu. Raden under den berättar vad som hände, och Fler alternativ, Aktivitetslogg sparar de senaste 30 körningarna med samma rad. Slå på Meddela vid körning (Fler alternativ) för att få en avisering för varje körning medan du kontrollerar.

Vad Marrow visarVad du gör
En sammanfattning av vad som skickades, till exempel 12 diary entriesLevererad: mottagaren svarade 2xx. Om inget syns hos den, se de sista raderna nedan.
Server answered 401 eller 403Mottagaren vill ha en rubrik, eller så är den du lade till fel. Kontrollera dess namn och värde, inklusive Bearer och mellanslaget efter det.
Server answered 404Fel adress, eller så lyssnar inte mottagaren. I n8n, använd Production URL och aktivera arbetsflödet. Kontrollera om en sökväg saknas i slutet.
Server answered 405Adressen tar inte emot en POST. Peka mot den endpoint som är avsedd för inkommande data.
Server answered 413Payloaden är för stor för mottagaren. Välj ett kortare datumintervall, färre mätvärden eller Dagssummor i stället för Råprover.
Server answered 500 eller en annan 5xxMottagaren föll på handläggningen. Titta i dess egen logg. Arkivera råinnehållet först och tolka det sedan.
The request timed outMottagaren tog längre tid än tidsgränsen. Svara först och jobba efteråt, eller höj Timeout under Fler alternativ (upp till 300 s).
The App Transport Security policy requires the use of a secure connectionAdressen är vanlig http på internet. Använd https. iOS låter Marrow använda vanlig http bara i ditt eget nätverk.
A server with the specified hostname could not be foundEtt stavfel i adressen, eller ett namn som bara ditt hemnätverk känner till. Kontrollera det i Safari på telefonen.
No valid URL - set an https endpoint firstAdressen är tom eller börjar inte med https:// (eller http:// i ditt eget nätverk).
Nothing to export in this rangeInga data av den typen i datumintervallet. Välj ett längre intervall under Fler alternativ, eller logga något först.

Lösningar för ett verktyg i taget finns på dess sida: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, valfri URL.