Automatizace: vaše data odesílaná podle rozvrhu
Marrow umí odeslat soubor s vašimi zdravotními daty metodou POST na libovolnou adresu URL, kterou zvolíte, v zadaném intervalu, přímo z telefonu. Tato stránka je reference: jak automatizaci nastavit, jak vypadá každý druh dat a jak napsat něco, co je přijímá.
Hotová nastavení pro n8n, Zapier, Make, Home Assistant, Google Sheets a InfluxDB najdete v části připojení.
Všechny návody k Marrow: MCP · Vlastní zrcadlo na serveru · Automatizace · Soubory · Podpora
Co je automatizace
Uložená úloha v části Export, Automatické: jeden druh dat, jeden formát, jeden rozsah dat, jedna adresa URL, jeden interval. Marrow sestaví soubor z ověřeného úložiště a odešle ho metodou POST na adresu URL i se zavřenou aplikací, po každé synchronizaci a při každém obnovení na pozadí, kdykoli uplyne zvolený interval. Nic neprochází námi: telefon komunikuje přímo s vaším koncovým bodem.
Nastavení
- Záložka Export, Automatické: zapněte ji a pak Nová automatizace. Pokud ji vytvoříte ze stránky nástroje (n8n, Zapier, Home Assistant a další v části připojení), automatizace nese název toho nástroje a u každého pole říká, co tam nástroj chce.
- Adresa: adresa URL https, na kterou se má odesílat metodou POST. Záhlaví: všechna, která váš příjemce potřebuje (token
Authorizationtypu bearer,X-Gitlab-Token, cokoli). Pokud nástroj žádná nepotřebuje, Přidat záhlaví je pod Další možnosti. - Data: Zdravotní metriky, Tréninky, Deník silového tréninku, Deník výživy nebo Příznaky a nálada, jako JSON nebo CSV. Jedna automatizace nese jeden druh, takže si vytvořte jednu pro každý druh, který chcete. Každá zapnutá se počítá jako připojení: Zdarma umožňuje mít zapnuté vždy 1 připojení, Marrow Pro až 10, včetně AI a serverů.
- Interval: jednou za tolik minut, hodin nebo dnů. Rozsah dat, agregace a časový limit jsou pod Další možnosti.
- Spustit hned odešle první data, takže můžete příjemce vyzkoušet, než nastane plánovaný čas.
Rozsahy dat
- Od posledního spuštění (výchozí): vše od posledního úspěšného spuštění, s přesahem dvou dnů. HealthKit den doplňuje ještě po jeho skončení, takže přesah znovu pošle nedávno dokončené dny. Na své straně ponechte nejnovější hodnotu pro každou metriku a den a opakování nebudou vadit. Příjemce, který chvíli nefungoval, dostane všechny zameškané dny při prvním úspěšném spuštění.
- Dnes, Posledních 7 / 30 / 90 dní, Poslední rok: pevná klouzavá okna, která se při každém spuštění posílají celá znovu. Zvolte je, pokud chcete raději snímek, který se sám napraví, než rozdíl oproti minulému stavu.
Podoba dat
Zdravotní metriky (denní součty, JSON)
Stejná struktura jako metriky z Health Auto Export (seznam metrics s položkami name, units a data s qty), takže příjemce napsaný pro tuto aplikaci potřebuje jen drobné úpravy: data jsou tu prosté dny, ne časové značky, a data tréninků a silového tréninku níže jsou vlastní formát Marrow. Hodnoty jsou v uložené jednotce uvedené v units (kg, m, mL, degC, kcal, count). Tepová frekvence přichází jako denní Avg, Min a Max v bpm a spánek jako jednotlivé noci s fázemi v hodinách. Chcete-li imperiální jednotky, převeďte je na své straně.
{"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"}]}
]}}
Surové vzorky (seskupení Surové vzorky) posílají každý vzorek s časem začátku a konce místo denního součtu. Metriky v CSV přicházejí jako široká tabulka popsaná na stránce o souborech.
Tréninky
{"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"}
]}}
Deník silového tréninku
Každá pracovní série (zahřívací se vynechávají), plus pokrok podle cviku a objem podle svalové skupiny. Váhy jsou v jednotce, kterou jste zvolili v Nastavení, Jednotky. Pole unit říká, o kterou jde. Každá série má set_type s hodnotou work, failure nebo drop a navíc rir, pokud jste zapsali opakování v záloze. set_credits počítá série připsané svalové skupině, ve zlomcích, když cvik zatěžuje víc skupin.
{"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}]
}}
Deník výživy
{"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}}
]}
]}}
Psaní příjemce
Funguje cokoli, co přijme HTTPS POST a odpoví kódem 2xx: webová služba pro webhooky, bezserverová funkce nebo skript na domácím serveru. Spolehlivost zajistí tři pravidla:
- Poslední vyhrává. Ukládejte hodnoty podle (metrika, den) nebo podle identity samotného záznamu a při opakování je přepište. Okna se záměrně překrývají.
- Nejdřív archivujte surové tělo požadavku. Pak ho zpracujte. Chyba v parseru vás nikdy nesmí stát data.
- Odpovídejte rychle. Marrow čeká až do nastaveného časového limitu (výchozích 60 s) a jinak spuštění označí jako neúspěšné. Neúspěšná spuštění se při dalším intervalu zopakují od posledního úspěšného okna.
Příjemce v Pythonu o dvanácti řádcích, který archivuje každý požadavek:
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()
Zveřejněte ho přes HTTPS (Cloudflare Tunnel, Tailscale Funnel nebo libovolná reverzní proxy) a automatizaci na něj nasměrujte. Pokud chcete spíš kopii, na kterou se lze dotazovat, než složku souborů, je vlastní zrcadlo takovým příjemcem už napsaným.
Dobré vědět
- Automatizace běží jen tehdy, když iOS aplikaci dovolí běžet: po synchronizaci, při obnovení v popředí a při obnovení na pozadí. Telefon, který zůstane celý den zamčený, odešle data, až bude příště odemčený. Okno od posledního spuštění tuto mezeru pokryje.
- Každé spuštění se zapisuje do Záznamu aktivit automatizace (Další možnosti) i s výsledkem, takže chybně nastavenou adresu URL uvidíte v aplikaci, ne jen na svém serveru.
- Automatizaci můžete duplikovat a použít její záhlaví pro jiný druh dat.
Řešení potíží
Vyzkoušejte přes Spustit hned. Řádek pod tlačítkem říká, co se stalo, a Další možnosti, Záznam aktivit uchovává posledních 30 spuštění se stejným řádkem. Zapněte Upozornit při spuštění (Další možnosti), aby vám při ladění přišlo upozornění po každém spuštění.
| Co Marrow ukazuje | Co dělat |
|---|---|
Shrnutí toho, co se odeslalo, například 12 diary entries | Doručeno: příjemce odpověděl kódem 2xx. Pokud se na jeho straně nic neobjeví, podívejte se na poslední řádky níže. |
Server answered 401 nebo 403 | Příjemce vyžaduje záhlaví, nebo to, které jste přidali, není správné. Zkontrolujte jeho název a hodnotu, včetně Bearer a mezery za ním. |
Server answered 404 | Špatná adresa, nebo příjemce nenaslouchá. V n8n použijte Production URL a workflow aktivujte. Zkontrolujte, zda na konci nechybí cesta. |
Server answered 405 | Adresa nepřijímá POST. Nasměrujte ji na koncový bod určený pro příchozí data. |
Server answered 413 | Data jsou pro příjemce příliš velká. Zvolte kratší rozsah dat, méně metrik nebo Denní součty místo Surových vzorků. |
Server answered 500 nebo jiný kód 5xx | Příjemce při zpracování selhal. Podívejte se do jeho vlastního logu. Nejdřív archivujte surové tělo požadavku, pak ho zpracujte. |
| Požadavku vypršel čas | Příjemci to trvalo déle, než je časový limit. Odpovězte nejdřív a pracujte potom, nebo zvyšte Časový limit v části Další možnosti (až na 300 s). |
| Zásady App Transport Security vyžadují použití zabezpečeného připojení | Adresa je prosté http na internetu. Použijte https. iOS dovolí Marrow používat prosté http jen ve vaší vlastní síti. |
| Server se zadaným názvem hostitele nebyl nalezen | Překlep v adrese, nebo jméno, které zná jen vaše domácí síť. Zkontrolujte ji v Safari v telefonu. |
No valid URL - set an https endpoint first | Adresa je prázdná nebo nezačíná na https:// (či http:// ve vaší vlastní síti). |
Nothing to export in this range | V daném rozsahu dat nejsou žádná data tohoto druhu. Zvolte delší rozsah v části Další možnosti, nebo nejdřív něco zapište. |
- Doručeno, a přesto nic nedorazilo. Někteří příjemci odpovídají kódem 200, i když data zahodí. Home Assistant to dělá při špatném ID webhooku a recept pro Apps Script při špatném
?key=. Zapier a Make nezobrazí nic, dokud v editoru nenačtete ukázku. Podívejte se do vlastní historie nebo logu příjemce. - Spuštění přicházejí pozdě nebo vůbec. Okamžik spuštění na pozadí vybírá iOS: po synchronizaci, při otevření Marrow a při obnovení na pozadí. Nechte pro Marrow zapnuté Obnovení aplikací na pozadí (Nastavení, Obecné, Obnovení aplikací na pozadí). Úsporný režim spuštění na pozadí zadržuje a telefon, který zůstane zamčený, odešle data, až bude příště odemčený. Od posledního spuštění dožene zpoždění při dalším úspěšném spuštění.
- Příjemce v domácí síti. Marrow potřebuje přístup k místní síti, aby se k němu dostal: Nastavení, Soukromí a zabezpečení, Místní síť. Klepněte jednou na Spustit hned s otevřeným Marrow, aby se iOS mohl zeptat. Na pozadí iOS bez ptaní odmítne, dokud neodpovíte.
- Aplikace byla ukončena. Pokud Marrow v přepínači aplikací ukončíte přejetím, iOS ho nemusí na pozadí probudit, dokud ho znovu neotevřete.
- Stejné dny přicházejí dvakrát. Je to záměr: Od posledního spuštění znovu posílá poslední dva dny, protože Apple Health je stále doplňuje. Ponechte si nejnovější hodnotu pro každou metriku a den.
- Nejde zapnout. Každá zapnutá automatizace se počítá jako připojení. Zdarma umožňuje mít zapnuté vždy 1 připojení, Marrow Pro až 10: AI, servery a automatizace dohromady. Nejdřív vypněte jiné.
- Jednotky vypadají špatně. Metriky přicházejí v uložených jednotkách uvedených v
units(kg, m, mL, degC, kcal). Série silového tréninku se řídí nastavením Nastavení, Jednotky a poleunitříká, jaká jednotka to je.
Opravy pro jednotlivé nástroje najdete na jejich stránkách: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, libovolná URL.