Hantar data Apple Health ke webhook
Apple Health tiada API web, jadi data anda hanya sampai ke webhook apabila apl pada iPhone anda menghantarnya. Marrow Health melakukannya secara percuma: automasi melakukan POST metrik kesihatan, senaman, set kekuatan, diari makanan, atau simptom dan mood anda ke mana-mana URL, sebagai JSON atau CSV, mengikut jadual pilihan anda, dengan apl ditutup. Di bawah ialah persediaan, muatan dan penerima yang berfungsi untuk n8n, Home Assistant dan pelayan biasa. Kami membuat Marrow.
Sediakan automasi
- Dalam Marrow Health, buka tab Eksport, kemudian Automatik, kemudian Automasi Baharu.
- Tampal URL webhook anda (gunakan HTTPS). Tambah mana-mana pengepala yang disemak oleh penerima anda, seperti token pembawa
Authorizationatau kunci header-auth n8n. - Pilih jenis data: Metrik kesihatan, Senaman, Log kekuatan, Diari pemakanan, atau Gejala dan mood. Satu automasi menghantar satu jenis, dan anda boleh mempunyai sehingga sepuluh.
- Pilih JSON atau CSV, julat tarikh (Sejak larian terakhir ialah lalai) dan kekerapan ia berjalan, dalam minit, jam atau hari.
- Hidupkannya dan ketik Jalankan sekarang untuk menghantar muatan pertama sementara anda memerhatikan penerima.
Setiap permintaan ialah POST dengan Content-Type: application/json (atau text/csv) dan pengepala anda. Setiap larian, beserta kod responsnya, disenaraikan dalam sejarah automasi dalam apl.
Apa yang sampai
Metrik kesihatan sampai sebagai jumlah harian, dalam unit yang dinamakan dalam units. Kadar denyutan jantung datang sebagai purata, minimum dan maksimum setiap hari, dan tidur sebagai setiap malam beserta peringkatnya, dalam jam:
{"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"}]}
]}}
Muatan senaman, kekuatan, pemakanan dan mood, sampel mentah dan bukan jumlah harian, serta susun atur CSV, ada pada rujukan automasi.
Menerimanya dalam n8n
- Tambah nod Webhook. Tetapkan HTTP Method kepada
POSTdan beri laluan, sepertiapple-health. - Untuk rahsia, tetapkan Authentication kepada Header Auth dan tambah nama dan nilai pengepala yang sama pada automasi Marrow.
- Klik Listen for test event, kemudian ketik Jalankan sekarang dalam Marrow dalam masa dua minit. Muatan muncul dalam editor.
- Terbitkan aliran kerja dan arahkan Marrow ke Production URL (yang mempunyai
/webhook/, bukan/webhook-test/). URL ujian berhenti mendengar selepas ujian.
Muatan berada di bawah body, jadi langkah hari ini ialah {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }} dalam ungkapan. Tambah nod Split Out pada body.data.metrics untuk mengendalikan setiap metrik sebagai item tersendiri. n8n menerima muatan sehingga 16 MB secara lalai, yang meliputi jumlah harian bertahun-tahun. Larian pengeluaran dipaparkan di bawah Executions, bukan dalam editor. (n8n Webhook docs)
Menerimanya dalam Home Assistant
Pencetus webhook menerima POST pada /api/webhook/<webhook_id>. Automasi ini menyimpan kiraan langkah terkini dalam pembantu nombor bernama input_number.steps_today (cipta dahulu, dengan maksimum melebihi hari terbaik anda):
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 }}
- Badan JSON berada dalam
trigger.jsonkerana Marrow menghantarContent-Type: application/json. local_onlyhidup secara lalai, yang hanya menerima post daripada rangkaian rumah anda atau URL webhook cloud Nabu Casa. Tetapkan kepadafalseapabila telefon membuat post melalui internet ke alamat HTTPS anda sendiri.- ID webhook ialah satu-satunya rahsia, jadi jadikannya panjang dan rawak.
(Dokumentasi pencetus webhook Home Assistant)
Menerimanya pada pelayan anda sendiri
Mana-mana titik akhir yang menerima POST HTTPS dan menjawab 2xx boleh digunakan. Yang ini mengarkibkan setiap muatan ke fail:
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()
Letakkannya di belakang HTTPS dengan Cloudflare Tunnel, Tailscale Funnel atau proksi songsang. Jika anda lebih suka pangkalan data yang boleh ditanya daripada folder fail, cermin dihoskan sendiri Marrow ialah penerima itu yang sudah siap ditulis, dan ejen AI juga boleh membuat pertanyaan padanya.
Tiga peraturan untuk penerima yang tidak pernah kehilangan data
- Yang terkini menang. Simpan setiap nilai berdasarkan metrik dan hari, dan tulis ganti apabila berulang. Sejak larian terakhir menghantar semula dua hari terakhir dengan sengaja, kerana Apple Health terus mengisi sesuatu hari selepas ia tamat.
- Simpan badan mentah dahulu, kemudian huraikannya. Pepijat penghuraian tidak sepatutnya menyebabkan anda kehilangan data.
- Jawab dengan cepat. Marrow menunggu sehingga tamat masa yang anda tetapkan (60 saat secara lalai) dan mencuba semula larian yang gagal daripada tetingkap berjaya yang terakhir pada gilirannya yang seterusnya.
Bila ia berjalan?
Bila-bila masa iOS membenarkan Marrow berjalan: selepas ia menyegerak dengan Apple Health, apabila anda membukanya, dan semasa muat semula latar belakang, setelah selang yang anda pilih berlalu. iOS yang menentukan bila muat semula latar belakang berlaku, jadi telefon yang dibiarkan berkunci sepanjang hari menghantar apabila ia dibuka kunci seterusnya, dan Sejak larian terakhir meliputi jurang itu.
Cara lain
- Health Auto Export juga menghantar data Apple Health ke webhook, dan JSON metriknya mempunyai struktur yang sama dengan Marrow. Automasinya memerlukan peringkat Premium.
- Apple Shortcuts boleh membaca sampel kesihatan dan menghantarnya dengan Get Contents of URL, pada automasi peribadi pada masa yang ditetapkan. Ia percuma, ia hanya boleh membaca data Health semasa telefon dibuka kunci, dan anda membina serta menyelenggara setiap metrik sendiri.
- export.zip Apple ialah sandaran penuh sekali sahaja, bukan suapan data. Untuk menukar satu kepada CSV, gunakan penukar dalam pelayar kami.