Marrow Health
RU
Скачать

Автоматизации: ваши данные, отправляемые по расписанию

Marrow может отправлять POST-запросом файл с вашими данными о здоровье на любой выбранный вами URL, с выбранной вами периодичностью, прямо с телефона. Эта страница служит справочником: как настроить автоматизацию, как выглядит каждый запрос и как написать то, что его принимает.

Готовые настройки для n8n, Zapier, Make, Home Assistant, Google Sheets и InfluxDB собраны в разделе подключения.

Все руководства Marrow: MCP · Зеркало на своем сервере · Автоматизации · Файлы · Поддержка

Что такое автоматизация

Сохраненное задание в разделе Экспорт, Автоматически: один вид данных, один формат, один диапазон дат, один URL, одна периодичность. Marrow собирает файл из своего проверенного хранилища и отправляет его POST-запросом на URL при закрытом приложении, после каждой записи синхронизации и при каждом фоновом обновлении, как только пройдет заданный интервал. Через нас ничего не проходит: телефон обращается прямо к вашему адресу.

Как настроить

  1. Вкладка «Экспорт», Автоматически: включите, затем Новая автоматизация. Если создать ее со страницы инструмента (n8n, Zapier, Home Assistant и остальные в разделе подключения), автоматизация получит название этого инструмента, а рядом с каждым полем будет подсказка, что туда нужно ввести.
  2. Адрес: https URL, на который она отправляет POST. Заголовки: любые, которые нужны вашему приемнику (bearer-токен Authorization, X-Gitlab-Token, что угодно). Если инструменту они не нужны, «Добавить заголовок» находится в разделе «Другие параметры».
  3. Данные: Показатели здоровья, Тренировки, Журнал силовых, Дневник питания или Симптомы и настроение, в формате JSON или CSV. Одна автоматизация отправляет один вид данных, поэтому создайте по одной на каждый нужный вид. Каждая включенная автоматизация считается подключением: на бесплатном тарифе одновременно может быть включено 1 подключение, в Marrow Pro до 10, включая ИИ и серверы.
  4. Периодичность: раз в столько-то минут, часов или дней. Диапазон дат, агрегирование и таймаут находятся в разделе Другие параметры.
  5. Запустить сейчас отправляет первый запрос, чтобы вы могли проверить приемник, не дожидаясь расписания.

Диапазоны дат

Структура запросов

Показатели здоровья (дневные итоги, JSON)

Та же структура, что и у показателей в Health Auto Export (список metrics из name, units и data с qty), поэтому приемнику, написанному для этого приложения, нужны лишь небольшие изменения: даты здесь указаны днями, а не метками времени, а запросы для тренировок и силовых ниже имеют собственный формат Marrow. Значения приходят в хранимой единице, указанной в units (kg, m, mL, degC, kcal, count). Пульс приходит как Avg, Min и Max за каждый день в уд/мин, а сон как каждая ночь с фазами в часах. Если нужны имперские единицы, переводите на своей стороне.

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

Исходные записи (группировка Исходные записи) отправляют каждый замер со временем начала и окончания вместо дневного итога. Показатели в CSV приходят в виде широкой таблицы, описанной на странице о файлах.

Тренировки

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

Журнал силовых

Каждый рабочий подход (разминочные не включаются), а также прогресс по каждому упражнению и объем по каждой группе мышц. Вес указан в единице, выбранной в разделе Настройки, Единицы измерения. Поле unit показывает, в какой именно. Поле set_type каждого подхода равно work, failure или drop, а если вы записывали повторы в запасе, у подхода есть и rir. set_credits считает подходы, засчитанные группе мышц, дробными значениями, когда упражнение задействует несколько групп.

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

Дневник питания

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

Как написать приемник

Подойдет все, что принимает HTTPS POST и отвечает кодом 2xx: сервис вебхуков, serverless-функция, скрипт на домашнем сервере. Три правила делают приемник надежным:

Приемник на Python в двенадцать строк, который архивирует каждый запрос:

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

Откройте его по HTTPS (Cloudflare Tunnel, Tailscale Funnel или любой обратный прокси) и направьте на него автоматизацию. Если вам нужна копия, к которой можно делать запросы, а не папка с файлами, зеркало на своем сервере как раз такой готовый приемник.

Полезно знать

Устранение неполадок

Проверяйте кнопкой Запустить сейчас. Строка под ней сообщает, что произошло, а в Другие параметры, Журнал активности хранятся последние 30 запусков с такой же строкой. Включите Уведомлять при запуске (Другие параметры), чтобы получать уведомление о каждом запуске, пока вы проверяете.

Что показывает MarrowЧто делать
Сводка отправленного, например 12 diary entriesДоставлено: приемник ответил 2xx. Если на его стороне ничего не видно, см. последние строки ниже.
Server answered 401 или 403Приемнику нужен заголовок, или добавленный вами неверен. Проверьте его имя и значение, включая Bearer и пробел после него.
Server answered 404Неверный адрес, или приемник не слушает. В n8n используйте Production URL и активируйте рабочий процесс. Проверьте, не пропущен ли путь в конце.
Server answered 405Адрес не принимает POST. Укажите адрес, предназначенный для входящих данных.
Server answered 413Запрос слишком велик для приемника. Выберите более короткий диапазон дат, меньше показателей или «Дневные итоги» вместо «Исходных записей».
Server answered 500 или другой 5xxПриемник дал сбой при обработке. Посмотрите его собственный журнал. Сначала архивируйте тело запроса как есть, затем разбирайте.
Время ожидания запроса истеклоПриемник ответил дольше, чем позволяет таймаут. Сначала отвечайте, потом работайте, или увеличьте Таймаут в разделе «Другие параметры» (до 300 с).
Политика App Transport Security требует использовать защищенное соединениеАдрес использует обычный http в интернете. Используйте https. iOS разрешает Marrow использовать обычный http только в вашей собственной сети.
Не удалось найти сервер с указанным именем хостаОпечатка в адресе или имя, известное только вашей домашней сети. Проверьте его в Safari на телефоне.
No valid URL - set an https endpoint firstАдрес пуст или не начинается с https:// (или http:// в вашей собственной сети).
Nothing to export in this rangeНет данных такого вида в этом диапазоне дат. Выберите более длинный диапазон в разделе «Другие параметры» или сначала что-нибудь запишите.

Решения для каждого инструмента по отдельности есть на его странице: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, любой URL.