Marrow Health
FI
Lataa

Lähetä Apple Health -tiedot webhookiin

Apple Healthilla ei ole verkkorajapintaa, joten tietosi pääsevät webhookiin vain, jos iPhonen sovellus lähettää ne. Marrow Health tekee tämän ilmaiseksi: automaatio lähettää POST-pyynnöllä terveysmittarisi, treenisi, voimasarjasi, ruokapäiväkirjasi tai oireesi ja mielialasi mihin tahansa URL-osoitteeseen JSON- tai CSV-muodossa valitsemallasi aikataululla, sovellus suljettuna. Alla ovat käyttöönotto, sisältö ja toimivat vastaanottajat n8n:lle, Home Assistantille ja tavalliselle palvelimelle. Me teemme Marrow'ta.

Automaation käyttöönotto

  1. Avaa Marrow Healthissa Vie-välilehti, sitten Automaattinen ja Uusi automaatio.
  2. Liitä webhook-URL-osoitteesi (käytä HTTPS:ää). Lisää kaikki otsikot, joita vastaanottajasi tarkistaa, kuten Authorization-bearer-tunnus tai n8n:n header-auth-avain.
  3. Valitse tietojen laji: Terveysmittarit, Treenit, Voimatreeniloki, Ravintopäiväkirja tai Oireet ja mieliala. Yksi automaatio lähettää yhtä lajia, ja niitä voi olla enintään kymmenen.
  4. Valitse JSON tai CSV, aikaväli (Edellisen ajon jälkeen on oletus) ja kuinka usein se ajetaan, minuuteissa, tunneissa tai päivissä.
  5. Ota se käyttöön ja napauta Suorita nyt, niin ensimmäinen sisältö lähtee liikkeelle, kun seuraat vastaanottajaa.

Jokainen pyyntö on POST, jossa on Content-Type: application/json (tai text/csv) ja omat otsikkosi. Jokainen ajo vastauskoodeineen näkyy automaation historiassa sovelluksessa.

Mitä perille tulee

Terveysmittarit saapuvat päiväsummina kentässä units nimetyssä yksikössä. Syke tulee kunkin päivän keskiarvona, vähimmäis- ja enimmäisarvona, ja uni öinä vaiheineen tunteina:

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

Treenien, voimaharjoittelun, ravinnon ja mielialan sisällöt, päiväsummien sijaan raakanäytteet ja CSV-asettelu löytyvät automaatioiden ohjesivulta.

Vastaanota se n8n:ssä

  1. Lisää Webhook-solmu. Aseta HTTP Method-arvoksi POST ja anna sille polku, esimerkiksi apple-health.
  2. Salaisuutta varten aseta Authentication-arvoksi Header Auth ja lisää sama otsikon nimi ja arvo Marrow-automaatioon.
  3. Napsauta Listen for test event ja napauta sitten Marrow'ssa Suorita nyt kahden minuutin sisällä. Sisältö ilmestyy editoriin.
  4. Julkaise työnkulku ja osoita Marrow Production URL -osoitteeseen (siihen, jossa on /webhook/, ei /webhook-test/). Testiosoite lakkaa kuuntelemasta testin jälkeen.

Sisältö on kentässä body, joten tämän päivän askeleet ovat lausekkeessa {{ $json.body.data.metrics.find(m => m.name === 'step_count').data.at(-1).qty }}. Lisää Split Out-solmu kenttään body.data.metrics, jos haluat käsitellä jokaisen mittarin omana kohteenaan. n8n hyväksyy oletuksena enintään 16 Mt:n sisällön, mikä riittää vuosien päiväsummille. Tuotantoajot näkyvät kohdassa Executions, eivät editorissa. (n8n Webhook docs)

Vastaanota se Home Assistantissa

Webhook-liipaisin ottaa POST-pyynnön vastaan osoitteessa /api/webhook/<webhook_id>. Tämä automaatio tallentaa viimeisimmän askelmäärän lukuapuriin nimeltä input_number.steps_today (luo se ensin, enimmäisarvo parasta päivääsi suurempi):

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 Assistantin webhook-liipaisimen dokumentaatio)

Vastaanota se omalla palvelimellasi

Mikä tahansa päätepiste, joka ottaa vastaan HTTPS-POST-pyynnön ja vastaa 2xx, kelpaa. Tämä arkistoi jokaisen sisällön tiedostoon:

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

Aseta se HTTPS:n taakse Cloudflare Tunnelilla, Tailscale Funnelilla tai käänteisellä välityspalvelimella. Jos haluat kyseltävän tietokannan tiedostokansion sijaan, Marrow'n itse ylläpidetty peilipalvelin on juuri se vastaanottaja valmiiksi kirjoitettuna, ja tekoälyagentit voivat kysellä sitä myös.

Kolme sääntöä vastaanottajalle, joka ei koskaan hukkaa dataa

Milloin se ajetaan?

Aina kun iOS antaa Marrow'n toimia: kun se on synkronoitu Apple Healthin kanssa, kun avaat sen ja taustapäivityksen aikana, kun valitsemasi väli on kulunut. iOS päättää, milloin taustapäivitys tapahtuu, joten koko päivän lukittuna ollut puhelin lähettää, kun se seuraavan kerran avataan, ja Edellisen ajon jälkeen kattaa välin.

Muita tapoja