Marrow Health
AR
تنزيل

التحكم التلقائي: بياناتك، تُدفع وفق جدول

يستطيع Marrow إرسال ملف ببياناتك الصحية بطلب POST إلى أي رابط تختاره، بالتكرار الذي تختاره، من الهاتف مباشرةً. هذه الصفحة هي المرجع: كيف تُعدّ واحدًا، وكيف تبدو كل حمولة، وكيف تكتب ما يستقبلها.

إعدادات جاهزة لـ n8n وZapier وMake وHome Assistant وGoogle Sheets وInfluxDB تجدها ضمن الاتصالات.

كل أدلة Marrow: MCP · النسخة المطابقة المستضافة ذاتيًا · التحكم التلقائي · الملفات · الدعم

ما هو التحكم التلقائي

مهمة محفوظة في تصدير، تلقائي: نوع واحد من البيانات، وصيغة واحدة، ونطاق تواريخ واحد، ورابط واحد، وتكرار واحد. يبني Marrow الملف من مخزنه الموثَّق ويرسله بطلب POST إلى الرابط والتطبيق مغلق، بعد كل مزامنة وعند كل تحديث في الخلفية، كلما انقضى التكرار. لا شيء يمر عبرنا: الهاتف يتحدث مباشرةً مع نقطة نهايتك.

إعداد تحكم تلقائي

  1. علامة التبويب «تصدير»، تلقائي: شغّله، ثم تحكم تلقائي جديد. وعند إنشائه من صفحة أداة (n8n وZapier وHome Assistant وغيرها ضمن الاتصالات)، يحمل التحكم التلقائي اسم تلك الأداة ويوضح بجانب كل حقل ما تريده الأداة فيه.
  2. العنوان: رابط https الذي سيُرسل إليه بطلب POST. الترويسات: أي ترويسات يحتاجها المستقبِل (رمز bearer في Authorization، أو X-Gitlab-Token، أو أي شيء). وعندما لا تحتاج الأداة إلى أي منها، تجد «إضافة عنوان» ضمن «خيارات إضافية».
  3. البيانات: المقاييس الصحية أو التمارين أو سجل تمارين القوة أو يوميات التغذية أو الأعراض والمزاج، بصيغة JSON أو CSV. كل تحكم تلقائي يحمل نوعًا واحدًا، فأنشئ واحدًا لكل نوع تريده. ويُحسب كل واحد قيد التشغيل اتصالًا: تحتفظ الخطة المجانية باتصال واحد قيد التشغيل في كل مرة، و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 لكل يوم بوحدة bpm، ويأتي النوم كل ليلة مع مراحلها بالساعات. حوّل على جانبك إن أردت الوحدات الإمبراطورية.

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

كتابة مستقبِل

أي شيء يقبل POST عبر HTTPS ويرد برمز 2xx يصلح: خدمة webhook، أو دالة 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 آخرفشل المستقبِل أثناء المعالجة. راجع سجله الخاص. احفظ النص الخام أولًا، ثم حلّله.
انتهت مهلة الطلباستغرق المستقبِل أكثر من المهلة. أجب أولًا ثم اعمل بعد ذلك، أو ارفع Timeout ضمن «خيارات إضافية» (حتى 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.