Marrow Health
TR
İndir

Apple Health verilerini bir webhook'a gönderin

Apple Health'in bir web API'si yoktur, bu yüzden verileriniz bir webhook'a ancak iPhone'unuzdaki bir uygulama gönderirse ulaşır. Marrow Health bunu ücretsiz yapar: bir otomasyon, sağlık ölçümlerinizi, antrenmanlarınızı, kuvvet setlerinizi, beslenme günlüğünüzü veya belirtilerinizi ve ruh halinizi, seçtiğiniz zamanlamayla, uygulama kapalıyken, JSON ya da CSV olarak herhangi bir URL'ye POST eder. Aşağıda kurulum, yük ve n8n, Home Assistant ile sade bir sunucu için çalışan alıcılar var. Marrow'u biz yapıyoruz.

Otomasyonu kurun

  1. Marrow Health'te Dışa aktar sekmesini, ardından Otomatik'i, sonra Yeni otomasyon'u açın.
  2. Webhook URL'nizi yapıştırın (HTTPS kullanın). Alıcınızın kontrol ettiği başlıkları ekleyin, örneğin bir Authorization bearer token'ı ya da bir n8n header-auth anahtarı.
  3. Veri türünü seçin: Sağlık ölçümleri, Antrenmanlar, Kuvvet günlüğü, Beslenme günlüğü veya Belirtiler ve ruh hali. Bir otomasyon tek tür gönderir ve en fazla on tane olabilir.
  4. JSON ya da CSV'yi, tarih aralığını (varsayılan Son çalıştırmadan beri) ve ne sıklıkta çalışacağını seçin: dakika, saat veya gün olarak.
  5. Açın ve alıcıyı izlerken ilk yükü göndermek için Şimdi çalıştır'a dokunun.

Her istek, Content-Type: application/json (veya text/csv) ve başlıklarınızla bir POST'tur. Yanıt koduyla birlikte her çalıştırma, uygulamadaki otomasyonun geçmişinde listelenir.

Ne ulaşır

Sağlık ölçümleri, units içinde belirtilen birimle günlük toplamlar olarak gelir. Kalp atış hızı her günün ortalaması, en düşüğü ve en yükseği olarak, uyku ise her gece evreleriyle ve saat olarak gelir:

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

Antrenman, kuvvet, beslenme ve ruh hali yükleri, günlük toplamlar yerine ham örnekler ve CSV düzeni otomasyon başvuru sayfasında.

n8n'de alın

  1. Bir Webhook düğümü ekleyin. HTTP Method'u POST yapın ve ona apple-health gibi bir yol verin.
  2. Bir gizli anahtar için Authentication'ı Header Auth yapın ve aynı başlık adını ve değerini Marrow otomasyonuna ekleyin.
  3. Listen for test event'e tıklayın, ardından iki dakika içinde Marrow'da Şimdi çalıştır'a dokunun. Yük düzenleyicide görünür.
  4. İş akışını yayımlayın ve Marrow'u Production URL'ye yönlendirin (/webhook-test/ olanı değil, /webhook/ olanı). Test URL'si bir testten sonra dinlemeyi bırakır.

Yük body altındadır, bu yüzden bugünün adımları bir ifadede {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} olur. Her ölçümü ayrı bir öğe olarak işlemek için body.data.metrics üzerine bir Split Out düğümü ekleyin. n8n varsayılan olarak 16 MB'a kadar yük kabul eder, bu da yıllarca günlük toplamı kapsar. Üretim çalıştırmaları düzenleyicide değil, Executions altında görünür. (n8n Webhook belgeleri)

Home Assistant'ta alın

Bir webhook tetikleyicisi POST'u /api/webhook/<webhook_id> adresinde alır. Bu otomasyon, en son adım sayısını input_number.steps_today adlı bir sayı yardımcısında saklar (önce onu oluşturun, en iyi gününüzün üstünde bir azami değerle):

automation:
  - alias: "Apple Health from Marrow"
    triggers:
      - trigger: webhook
        webhook_id: "pick-a-long-random-id"
        allowed_methods:
          - POST
        local_only: false
    actions:
      - action: input_number.set_value
        target:
          entity_id: input_number.steps_today
        data:
          value: >-
            {{ ((trigger.json.data.metrics
                 | selectattr('name', 'eq', 'step_count') | first).data
                 | last).qty }}

(Home Assistant webhook tetikleyici belgeleri)

Kendi sunucunuzda alın

HTTPS POST kabul edip 2xx ile yanıt veren her uç nokta işe yarar. Bu, her yükü bir dosyaya arşivler:

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

Bir Cloudflare Tunnel, Tailscale Funnel veya ters vekil sunucuyla HTTPS'in arkasına koyun. Dosya klasörü yerine sorgulanabilir bir veritabanı isterseniz, Marrow'un kendi barındırdığınız yansısı zaten yazılmış o alıcıdır ve yapay zeka ajanları da onu sorgulayabilir.

Hiç veri kaybetmeyen bir alıcı için üç kural

Ne zaman çalışır?

iOS, Marrow'un çalışmasına izin verdiği her an: Apple Health ile eşzamanlandıktan sonra, onu açtığınızda ve arka plan yenilemesi sırasında, seçtiğiniz aralık geçtiği anda. Arka plan yenilemenin ne zaman olacağına iOS karar verir. Bu yüzden gün boyu kilitli kalan bir telefon, kilidi bir sonraki açılışında gönderir ve Son çalıştırmadan beri aradaki boşluğu kapatır.

Başka yollar