Automatizálások: az adataid, ütemezve elküldve
A Marrow az egészségügyi adataidat tartalmazó fájlt bármely választott URL-re POST-olhatja, a választott ütemben, közvetlenül a telefonról. Ez az oldal a referencia: hogyan állítsd be, hogyan néz ki az egyes adatcsomag, és hogyan írj olyat, ami fogadja.
Kész beállítások (n8n, Zapier, Make, Home Assistant, Google Sheets és InfluxDB) a kapcsolatok alatt találhatók.
Az összes Marrow-útmutató: MCP · Saját üzemeltetésű tükör · Automatizálások · Fájlok · Támogatás
Mi az az automatizálás
Egy mentett feladat az Exportálás, Automatizált alatt: egyfajta adat, egy formátum, egy dátumtartomány, egy URL, egy ütem. A Marrow a fájlt az ellenőrzött tárolójából építi fel, és zárt appal POST-olja az URL-re, minden szinkronrögzítés után és minden háttérfrissítéskor, valahányszor az ütem szerinti idő eltelt. Semmi nem megy át rajtunk: a telefon közvetlenül a te végpontoddal beszél.
Beállítás
- Exportálás fül, Automatizált: kapcsold be, majd Új automatizálás. Ha egy eszköz oldaláról hozod létre (n8n, Zapier, Home Assistant és a többi a kapcsolatok alatt), az automatizálás az eszköz nevét viseli, és minden mező mellett kiírja, mit vár ott az eszköz.
- Cím: az https URL, amelyre POST-olnia kell. Fejlécek: bármi, amire a fogadódnak szüksége van (egy
Authorizationbearer token, egyX-Gitlab-Token, bármi). Ha az eszköznek nincs rá szüksége, a Fejléc hozzáadása a További lehetőségek alatt van. - Adatok: Egészségmutatók, Edzések, Erőnléti napló, Táplálkozási napló vagy Tünetek és hangulat, JSON vagy CSV formátumban. Egy automatizálás egyfajta adatot visz, ezért minden kívánt fajtához csinálj egyet. Minden bekapcsolt automatizálás kapcsolatnak számít: az Ingyenes csomagban egyszerre 1 kapcsolat lehet bekapcsolva, a Marrow Pro-ban legfeljebb 10, az AI-kat és szervereket is beleértve.
- Kadencia: minden megadott számú percben, órában vagy napban. A dátumtartomány, az összesítés és az időtúllépés a További lehetőségek alatt van.
- A Futtatás most elküldi az első adatcsomagot, így ellenőrizheted a fogadót, mielőtt megvárnád az ütemezést.
Dátumtartományok
- Az utolsó futás óta (alapértelmezett): minden, ami az utolsó sikeres futás óta történt, kétnapos átfedéssel. A HealthKit a nap vége után is kitölti a napot, ezért az átfedés újraküldi a nemrég lezárult napokat. Tartsd meg a saját oldaladon mutatónként és naponként a legutóbbi értéket, és az ismétlések ártalmatlanok. Egy ideig leállt fogadó az első sikeres futáskor megkap minden kihagyott napot.
- Ma, Elmúlt 7 / 30 / 90 nap, Elmúlt év: gördülő, rögzített ablakok, amelyeket minden futáskor teljesen újraküld. Ezeket válaszd, ha önjavító pillanatképet szeretnél a különbözet helyett.
Az adatcsomagok felépítése
Egészségmutatók (napi összegek, JSON)
Ugyanaz a felépítés, mint a Health Auto Export mutatóié (egy metrics lista name, units és data mezőkkel, benne qty), így az ahhoz az apphoz írt fogadón csak kisebb módosítások kellenek: a dátumok itt egyszerű napok, nem időbélyegek, az alábbi edzés- és erőnléti adatcsomagok pedig a Marrow sajátjai. Az értékek a units mezőben megnevezett tárolt egységben vannak (kg, m, mL, degC, kcal, count). A pulzus az adott nap Avg, Min és Max értékeként jön, bpm-ben, az alvás pedig éjszakánként a fázisaival, órában. Ha angolszász mértékegységeket szeretnél, váltsd át a saját oldaladon.
{"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"}]}
]}}
A nyers minták (a Nyers minták csoportosítás) minden mintát a kezdő és záró idejével küldenek a napi összeg helyett. A CSV-mutatók a fájlok oldalán leírt széles táblázatként érkeznek.
Edzések
{"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"}
]}}
Erőnléti napló
Minden munkasorozat (a bemelegítések kimaradnak), plusz gyakorlatonkénti fejlődés és izomcsoportonkénti volumen. A súlyok a Beállítások, Mértékegységek alatt választott egységben vannak. A unit mező megmondja, melyikben. Minden sorozat set_type értéke work, failure vagy drop, és a sorozat rir mezőt is hordoz, ha megadtad a tartalékban hagyott ismétléseket. A set_credits az izomcsoportnak jóváírt sorozatokat számolja, törtekben, ha egy gyakorlat több csoportot dolgoztat meg.
{"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}]
}}
Táplálkozási napló
{"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}}
]}
]}}
Fogadó írása
Bármi megfelel, ami HTTPS POST-ot fogad és 2xx kóddal válaszol: egy webhook-szolgáltatás, egy szerver nélküli függvény, egy szkript egy otthoni szerveren. Három szabály tartja stabilan:
- A legújabb nyer. Az értékeket a (mutató, nap) páros vagy a bejegyzés saját azonossága szerint kulcsolva tárold, és ismétlődéskor írd felül. Az ablakok szándékosan átfedik egymást.
- Előbb archiváld a nyers törzset. Utána elemezd. Egy elemzőhiba miatt soha ne vesszen el az adat.
- Válaszolj gyorsan. A Marrow az általad beállított időtúllépésig vár (alapértelmezés szerint 60 mp), különben sikertelennek jelöli a futást. A sikertelen futásokat a következő kadenciaütemnél próbálja újra, az utolsó sikeres ablaktól.
Egy tizenkét soros Python-fogadó, amely minden küldést archivál:
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()
Tedd HTTPS mögé (Cloudflare Tunnel, Tailscale Funnel vagy bármilyen fordított proxy), és irányítsd rá az automatizálást. Ha fájlok mappája helyett lekérdezhető másolatot szeretnél, a saját üzemeltetésű tükör pontosan ez a már megírt fogadó.
Jó tudni
- Az automatizálások csak akkor futnak, ha az iOS futni hagyja az appot: szinkronrögzítés után, előtérbeli frissítéskor és háttérfrissítés közben. Egy egész nap zárolva maradt telefon a következő feloldáskor küld. Az „utolsó futás óta” ablak lefedi a kiesést.
- Minden futás bekerül az automatizálás Aktivitási naplójába (További lehetőségek) az eredményével együtt, így egy rosszul beállított URL az appban is látszik, nem csak a szervereden.
- Duplikáld az automatizálást, hogy a fejléceit egy másik fajtához is felhasználhasd.
Hibaelhárítás
Teszteld a Futtatás most gombbal. Az alatta lévő sor megmondja, mi történt, a További lehetőségek, Aktivitási napló pedig az utolsó 30 futást őrzi ugyanezzel a sorral. Kapcsold be az Értesítés futtatáskor opciót (További lehetőségek), hogy minden futásról értesítést kapj, amíg ellenőrzöd.
| Mit mutat a Marrow | Mit tegyél |
|---|---|
Összefoglaló arról, mi lett elküldve, például 12 diary entries | Kézbesítve: a fogadó 2xx kóddal válaszolt. Ha az ő oldalán semmi sem jelenik meg, nézd az alábbi utolsó sorokat. |
Server answered 401 vagy 403 | A fogadó fejlécet vár, vagy az általad hozzáadott hibás. Ellenőrizd a nevét és az értékét, a Bearer szót és az utána lévő szóközt is. |
Server answered 404 | Rossz cím, vagy a fogadó nem figyel. Az n8n-ben a Production URL-t használd, és aktiváld a munkafolyamatot. Nézd meg, nem hiányzik-e az útvonal a végéről. |
Server answered 405 | A cím nem fogad POST-ot. Irányítsd arra a végpontra, amely a beérkező adatokra van szánva. |
Server answered 413 | Az adatcsomag túl nagy a fogadónak. Válassz rövidebb dátumtartományt, kevesebb mutatót, vagy Napi összegeket a Nyers minták helyett. |
Server answered 500 vagy más 5xx | A fogadó hibát jelzett a feldolgozás közben. Nézd meg a saját naplóját. Előbb archiváld a nyers törzset, aztán elemezd. |
| A kérés időtúllépés miatt megszakadt | A fogadónak tovább tartott, mint az időtúllépés. Előbb válaszolj, utána dolgozz, vagy emeld meg az Időtúllépés értékét a További lehetőségek alatt (legfeljebb 300 mp-ig). |
| Az App Transport Security házirend biztonságos kapcsolat használatát követeli meg | A cím egyszerű http az interneten. Használj https-t. Az iOS csak a saját hálózatodon engedi, hogy a Marrow egyszerű http-t használjon. |
| Nem található szerver a megadott gazdanévvel | Elírás a címben, vagy egy név, amelyet csak az otthoni hálózatod ismer. Ellenőrizd a telefon Safarijában. |
No valid URL - set an https endpoint first | A cím üres, vagy nem https:// kezdetű (a saját hálózatodon http:// is lehet). |
Nothing to export in this range | Nincs ilyen fajta adat a dátumtartományban. Válassz hosszabb tartományt a További lehetőségek alatt, vagy előbb naplózz valamit. |
- Kézbesítve, mégsem érkezik meg semmi. Néhány fogadó 200-zal válaszol akkor is, ha eldobja az adatot. A Home Assistant ezt teszi rossz webhook-azonosítóval, az Apps Script recept pedig rossz
?key=értékkel. A Zapier és a Make addig nem mutat semmit, amíg be nem töltesz egy mintát a szerkesztőjükben. Nézd meg a fogadó saját előzményeit vagy naplóját. - A futások későn vagy egyáltalán nem jönnek. A háttérfutások időpontját az iOS választja: szinkronizálás után, amikor megnyitod a Marrow-t, és háttérfrissítés közben. Hagyd bekapcsolva a Marrow háttérben való appfrissítését (Beállítások, Általános, Háttérben való appfrissítés). Az Alacsony fogyasztású mód visszatartja a háttérfutásokat, és egy zárolva maradt telefon a következő feloldáskor küld. Az „utolsó futás óta” tartomány a következő sikeres futásnál bepótolja a kimaradtat.
- Fogadó az otthoni hálózatodon. A Marrow-nak helyi hálózati hozzáférés kell az eléréséhez: Beállítások, Adatvédelem és biztonság, Helyi hálózat. Koppints egyszer a Futtatás most gombra nyitott Marrow-val, hogy az iOS rákérdezhessen. A háttérben az iOS kérdés nélkül elutasít, amíg nem válaszoltál.
- Bezárva. Ha az appváltóban bezárod a Marrow-t, az iOS a háttérben nem biztos, hogy felébreszti, amíg újra meg nem nyitod.
- Ugyanazok a napok kétszer érkeznek. Szándékosan: az „utolsó futás óta” tartomány újraküldi az utolsó két napot, mert az Apple Health folyamatosan kitölti őket. Tartsd meg a legutóbbi értéket mutatónként és naponként.
- Nem kapcsol be. Minden bekapcsolt automatizálás kapcsolatnak számít. Az Ingyenes csomagban egyszerre 1 kapcsolat lehet bekapcsolva, a Marrow Pro-ban legfeljebb 10: az AI-k, a szerverek és az automatizálások együtt. Előbb kapcsolj ki egy másikat.
- Rossznak tűnnek a mértékegységek. A mutatók a
unitsmezőben megnevezett tárolt egységekben érkeznek (kg, m, mL, degC, kcal). Az erőnléti sorozatok a Beállítások, Mértékegységek szerint alakulnak, és aunitmező megmondja, melyik érvényes.
Az egyes eszközök megoldásai a saját oldalukon találhatók: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, bármely URL.