พัฒนาประสบการณ์การนอนหลับด้วย Google Health API

Google Health API มีประเภทข้อมูลที่ติดตามรูปแบบการนอนหลับของผู้ใช้ รวมถึงระยะเวลา คุณภาพ และเมตริกทางสรีรวิทยาขณะพักผ่อน เมตริกเหล่านี้ช่วยให้แอปพลิเคชันให้ข้อมูลเชิงลึกเกี่ยวกับการฟื้นตัว สุขอนามัยในการนอนหลับ และ แนวโน้มด้านสุขภาพในระยะยาว

ระบบจะบันทึกเมตริกทางสรีรวิทยา เช่น ความผันแปรของอัตราการเต้นของหัวใจ (HRV), ความอิ่มตัวของออกซิเจน (SpO2) และอัตราการหายใจ ในช่วงนอนหลับโดยเฉพาะ เนื่องจากร่างกายอยู่ในสภาวะพักผ่อนที่มั่นคง ซึ่งช่วยให้ API สามารถ บันทึกข้อมูลพื้นฐานเกี่ยวกับสุขภาพด้านระบบประสาทอัตโนมัติและระบบทางเดินหายใจของผู้ใช้ได้โดยไม่มี การรบกวนจากความเครียดในเวลากลางวัน กิจกรรมทางกาย หรือสภาพแวดล้อมที่แตกต่างกัน

ทําความเข้าใจความแตกต่างระหว่างประเภทข้อมูลเหล่านี้เพื่อพิจารณาว่าเมตริกใด เหมาะกับแอปพลิเคชันของคุณ

ประเภทข้อมูลที่รองรับ

API รองรับประเภทข้อมูลต่อไปนี้สำหรับการวัดการนอนหลับ

ตาราง: ประเภทข้อมูลการนอนหลับของ Google Health API
ประเภทข้อมูล การดำเนินการ
ที่ใช้ได้
ขอบเขต
ความผันแปรของอัตราการเต้นของหัวใจรายวัน
dataType: daily-heart-rate-variability
filter parameter: daily_heart_rate_variability
ประเภทบันทึก: รายวัน

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ค่าความอิ่มตัวของออกซิเจนในเลือดรายวัน
dataType: daily-oxygen-saturation
filter parameter: daily_oxygen_saturation
ประเภทบันทึก: รายวัน

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
อัตราการหายใจรายวัน
dataType: daily-respiratory-rate
filter parameter: daily_respiratory_rate
ประเภทบันทึก: รายวัน

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
การหาค่าอุณหภูมิขณะนอนหลับในแต่ละวัน
dataType: daily-sleep-temperature-derivations
filter parameter: daily_sleep_temperature_derivations
ประเภทบันทึก: รายวัน

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ความผันแปรของอัตราการเต้นของหัวใจ
dataType: heart-rate-variability
filter parameter: heart_rate_variability
ประเภทระเบียน: ตัวอย่าง

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ความอิ่มตัวของออกซิเจน
dataType: oxygen-saturation
filter parameter: oxygen_saturation
ประเภทระเบียน: ตัวอย่าง

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
สรุปการนอนหลับเกี่ยวกับอัตราการหายใจ
dataType: respiratory-rate-sleep-summary
filter parameter: respiratory_rate_sleep_summary
ประเภทระเบียน: ตัวอย่าง

อุปกรณ์ที่เข้ากันได้

รายการ, ปรับยอด .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
การนอนหลับ
dataType: sleep
พารามิเตอร์ตัวกรอง: sleep
ประเภทระเบียน: เซสชัน

อุปกรณ์ที่เข้ากันได้

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly

เซสชันการนอนหลับและการตื่นสั้นๆ

เซสชันการนอนหลับ (Sleep) แสดงถึงเหตุการณ์การนอนหลับที่แยกกัน เช่น การนอนหลับในแต่ละคืนหรือการงีบหลับในตอนกลางวัน ซึ่งประกอบด้วยการแจกแจงรายละเอียดของ ระยะการนอนหลับที่ไม่ทับซ้อนกันควบคู่ไปกับช่วงเวลาสั้นๆ ที่เปลี่ยนจากหลับเป็นตื่นที่เรียกว่า การตื่นสั้นๆ

  • เซสชันการนอนหลับ (Sleep): แสดงถึงเหตุการณ์การนอนหลับที่แยกกัน (ช่วงระยะLIGHT, DEEP, REM, AWAKE) ซึ่งแบ่ง ไทม์ไลน์ต่อเนื่องของการพักผ่อนหลัก
  • การตื่นสั้นๆ (shortAwakenings): การเปลี่ยนผ่านสู่การตื่นหรือ การตื่นที่เกิดขึ้นขณะพักผ่อน การตื่นสั้นๆ เป็นกลุ่มที่แยกต่างหากซึ่งอาจทับซ้อนกับระยะการนอนหลับโดยรอบ ซึ่งต่างจากAWAKEช่วงระยะมาตรฐาน (ซึ่งแบ่งความคืบหน้าของระยะการนอนหลับที่ต่อเนื่องกันซึ่งไม่ทับซ้อนกัน) โดยจะให้ข้อมูลเชิงลึกแบบละเอียดเกี่ยวกับความกระสับกระส่ายและการตื่นตัวเล็กๆ น้อยๆ โดยไม่รบกวนโครงสร้างระยะการนอนหลับหลัก

ตัวอย่าง

{
  "name": "sleeps/12345",
  "startTime": "2026-04-20T22:30:00Z",
  "endTime": "2026-04-21T06:30:00Z",
  "sleepType": "STAGES",
  "sleepStages": [
    {
      "startTime": "2026-04-20T22:30:00Z",
      "endTime": "2026-04-20T23:45:00Z",
      "type": "LIGHT"
    },
    {
      "startTime": "2026-04-20T23:45:00Z",
      "endTime": "2026-04-21T01:15:00Z",
      "type": "DEEP"
    }
  ],
  "shortAwakenings": [
    {
      "startTime": "2026-04-20T23:10:00Z",
      "endTime": "2026-04-20T23:11:30Z",
      "type": "AWAKE"
    }
  ]
}

สร้างเซสชันการนอนหลับ

หากต้องการสร้างรายการเซสชันการนอนหลับ ให้ส่งคำขอ POST ไปยังปลายทาง sleep data points การตอบกลับจะมีฟิลด์ name ที่มี data-point-id ซึ่งใช้ในคำขอ อัปเดต (Patch) หรือ ลบได้

ส่งคำขอ

POST https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "sleep": {
    "interval": {
      "startTime": "2026-06-07T22:00:00Z",
      "startUtcOffset": "-14400s",
      "endTime": "2026-06-08T06:00:00Z",
      "endUtcOffset": "-14400s"
    },
    "type": "STAGES",
    "stages": [
      {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T22:30:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-07T22:30:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T23:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "DEEP"
      },
      {
        "startTime": "2026-06-07T23:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T02:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      },
      {
        "startTime": "2026-06-08T02:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T05:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T05:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      }
    ]
  }
}

คำตอบ

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/sleep/dataPoints/data-point-id",
    "sleep": {
      "interval": {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s"
      },
      "type": "STAGES",
      "stages": [
        {
          "startTime": "2026-06-07T22:00:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T22:30:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-07T22:30:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T23:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "DEEP"
        },
        {
          "startTime": "2026-06-07T23:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T02:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        },
        {
          "startTime": "2026-06-08T02:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T05:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T05:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T06:00:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        }
      ]
    }
  }
}

การหาค่าอุณหภูมิขณะนอนหลับรายวัน

การหาค่าอุณหภูมิขณะนอนหลับรายวันจะวัดการเปลี่ยนแปลงของอุณหภูมิผิวหนังของผู้ใช้ขณะนอนหลับเมื่อเทียบกับค่าพื้นฐาน โดยปกติแล้ว ระบบจะรายงานข้อมูลนี้วันละครั้งหลังจากเซสชันการนอนหลับที่สำคัญ

อัตราการหายใจ

อัตราการหายใจจะวัดอัตราการหายใจต่อนาทีของผู้ใช้ ในระหว่างการนอนหลับ เป็นเมตริกสำคัญสำหรับการตรวจสอบคุณภาพการนอนหลับและการรบกวนที่อาจเกิดขึ้น API รองรับอัตราการหายใจตัวอย่าง (respiratory-rate) สรุปรายวัน (daily-respiratory-rate) และสรุปการนอนหลับระดับเซสชัน (respiratory-rate-sleep-summary)

ความผันแปรของอัตราการเต้นของหัวใจ (HRV)

HRV วัดความผันแปรของระยะเวลาระหว่างการเต้นของหัวใจแต่ละครั้ง ค่าความผันแปรของอัตราการเต้นของหัวใจเป็นตัวบ่งชี้สำคัญของสถานะระบบประสาทอัตโนมัติ โดยทั่วไปแล้ว ค่าความผันแปรของอัตราการเต้นของหัวใจที่สูงในระหว่างการนอนหลับหมายถึงการฟื้นตัวและความพร้อมที่ดีขึ้น ในขณะที่ค่าความผันแปรของอัตราการเต้นของหัวใจที่ต่ำอาจบ่งบอกถึงความเครียดหรือการออกกำลังกายหนักเกินไป API รองรับ HRV ตัวอย่าง (heart-rate-variability) และข้อมูลสรุปรายวัน (daily-heart-rate-variability)

ความอิ่มตัวของออกซิเจน (SpO2)

SpO2 แสดงถึงเปอร์เซ็นต์ของฮีโมโกลบินที่อิ่มตัวด้วยออกซิเจนเทียบกับ ฮีโมโกลบินทั้งหมดในเลือด การตรวจสอบ SpO2 ขณะนอนหลับเป็นสิ่งสำคัญในการ ตรวจหาความผิดปกติเกี่ยวกับการหายใจที่อาจเกิดขึ้น และช่วยให้มั่นใจว่าผู้ใช้จะรักษาระดับออกซิเจน ที่เพียงพอได้ตลอดทั้งคืน API รองรับตัวอย่าง SpO2 (oxygen-saturation) และข้อมูลสรุปรายวัน (daily-oxygen-saturation)

มุมมองแบบองค์รวมของสุขภาพและการฟื้นตัวจากการนอนหลับ

แม้ว่าเมตริกแต่ละรายการจะให้ข้อมูลเชิงลึกที่เฉพาะเจาะจง แต่เมตริกเหล่านี้ก็มีความสัมพันธ์กันอย่างลึกซึ้งและ เมื่อรวมกันแล้วจะให้มุมมองแบบองค์รวมเกี่ยวกับการฟื้นตัวของผู้ใช้ ระยะการนอนหลับ (หลับตื้น หลับลึก REM) เป็นรากฐานโครงสร้างของการพักผ่อน ในขณะที่เครื่องหมายทางสรีรวิทยา เช่น HRV และ SpO2 จะบ่งบอกว่าร่างกายตอบสนองต่อการพักผ่อนนั้นอย่างไร ตัวอย่างเช่น เซสชันการนอนหลับคุณภาพสูงที่มีการนอนหลับลึกที่เหมาะสมมักจะ สัมพันธ์กับ HRV ที่สูงขึ้น ซึ่งบ่งบอกถึงการฟื้นตัวที่มีประสิทธิภาพของระบบประสาทอัตโนมัติ

การรวมข้อมูลเหล่านี้เข้ากับการหาค่าอัตราการหายใจและอุณหภูมิขณะนอนหลับจะช่วยให้แอปพลิเคชันระบุการรบกวนที่อาจเกิดขึ้นได้ การเพิ่มขึ้นอย่างฉับพลันของอัตราการหายใจ หรือความคลาดเคลื่อนของอุณหภูมิขณะนอนหลับอาจช่วยให้ทราบว่าเหตุใดผู้ใช้จึงอาจ ใช้เวลาในระยะฟื้นฟูน้อยลง การวิเคราะห์ข้อมูลประเภทเหล่านี้ควบคู่กันจะช่วยให้นักพัฒนาแอปประเมินสุขอนามัยในการนอนหลับและแนวโน้มด้านสุขภาพในระยะยาวได้อย่างครอบคลุม

หลักเกณฑ์

เมื่อผสานรวมเมตริกการนอนหลับในแอป ให้ใช้หลักเกณฑ์ต่อไปนี้

  • รายละเอียดเซสชัน: หากต้องการแสดงระยะการนอนหลับของผู้ใช้ (หลับตื้น หลับลึก REM ตื่น) และการตื่นสั้นๆ ให้ค้นหาประเภทข้อมูล sleep
  • การตรวจสอบสรีรวิทยา: หากต้องการตรวจสอบสุขภาพขั้นสูง ให้รวมข้อมูลเซสชันการนอนหลับกับเมตริกทางสรีรวิทยาและการฟื้นตัว เช่น respiratory-rate-sleep-summary, daily-sleep-temperature-derivations, daily-heart-rate-variability และ daily-oxygen-saturation
  • การเทียบข้อมูล: ใช้การดำเนินการ reconcile เพื่อให้แน่ใจว่าระบบจะผสานบันทึกการนอนหลับที่ทับซ้อนกันจากอุปกรณ์ต่างๆ (เช่น อุปกรณ์ที่สวมใส่ได้และเซ็นเซอร์ที่นอน) เข้ากับบันทึกการนอนหลับ "หลัก" รายการเดียว

คำนวณเวลารวมในช่วงหลับลึก

วิธีคำนวณระยะเวลารวมที่ผู้ใช้ใช้ในระยะหลับลึกที่ช่วยฟื้นฟูร่างกายในคืนหนึ่งๆ

  1. ค้นหาsleepประเภทข้อมูลสำหรับช่วงเวลาที่ระบุ
  2. วนซ้ำในรายการระยะ และระบุช่วงเวลาที่stageType เป็น DEEP
  3. คำนวณระยะเวลา (เวลาสิ้นสุด - เวลาเริ่มต้น) สำหรับช่วงการหลับลึกแต่ละช่วง แล้วนำมารวมกัน

ผลรวมที่ได้คือระยะเวลาจริงทั้งหมดของการนอนหลับลึกสำหรับเซสชันนั้น