MediaKeadilan.com – Smartwatch kini tidak cuma digunakan demi menyaksikan waktu atau menyambut baik notifikasi. Sejumlah perangkat telah dilengkapi sensor kesehatan yang dapat menolong pengguna memantau kondisi tubuh, termasuk ketika sedang tidur.
Dua istilah yang barangkali kerap ditemukan dalam fitur pemantauan tidur merupakan HRV dan SpO2. Keduanya sama-sama dapat menyerahkan informasi mengenai kondisi tubuh, namun memiliki fungsi dan cara pengukuran yang berbeda.
Lantas, apa perbedaan sensor pemantau tidur HRV vs SpO2 pada smartwatch? Simak penjelasannya berikut ini.
Apa Itu HRV pada Smartwatch?
HRV atau Heart Rate Variability merupakan ukuran variasi waktu di antara detak jantung yang berurutan. Jadi, HRV bukan sekadar menghitung berapa kali jantung berdetak dalam satu menit bagaikan pengukuran detak jantung biasa.
Smartwatch umumnya memakai sensor optik di untukan belakang perangkat demi mendeteksi perubahan aliran darah. Dari data tersebut, perangkat dapat memperkirakan variasi interval antardetak jantung dan menghasilkan nilai HRV.
Dalam pemantauan tidur, HRV dapat menyerahkan gambaran mengenai bagaimana tubuh merespons kondisi istirahat. Perubahan HRV juga dapat dipengaruhi oleh berbagai faktor, bagaikan stres, aktivitas fisik, kualitas tidur, konsumsi alkohol, hingga kondisi tubuh secara keseluruhan.
Karena itu, data HRV biasanya makin berguna apabila dilihat sebagai tren dari waktu ke waktu, bukan cuma berdasarkan satu angka pada satu malam.
Apa Itu SpO2 pada Smartwatch?
Berbeda dari HRV, SpO2 merupakan perkiraan tingkat saturasi oksigen dalam darah. Angka ini memperlihatkan persentase hemoglobin dalam darah yang mengangkut oksigen.
Smartwatch yang memiliki sensor SpO2 biasanya memakai teknologi sensor cahaya demi memperkirakan kadar oksigen dalam darah. Sensor akan memancarkan cahaya ke kulit, lalu menganalisis pantulan cahaya demi menghasilkan estimasi SpO2.
Dalam pemantauan tidur, data SpO2 dapat menolong pengguna menyaksikan perubahan kadar oksigen selama tidur. Beberapa smartwatch bahkan dapat memperlihatkan pola perubahan atau periode ketika kadar oksigen terdeteksi makin rendah.
Namun, hasil pengukuran dari smartwatch merupakan estimasi, bukan pengganti alat medis atau pemeriksaan profesional.
Perbedaan HRV vs SpO2 demi Pemantauan Tidur
Agar makin mudah dipahami, berikut perbedaan keduanya:
| Fitur | HRV | SpO2 |
|
Yang diukur |
Variasi interval detak jantung | Perkiraan saturasi oksigen darah |
|
Fokus informasi |
Respons tubuh dan kondisi pemulihan | Kondisi oksigenasi darah |
|
Satuan Ikuti Saluran Resmi Kami Cari Tahu
Kumpulan Kuis Menariklet isDown = false; let startX; let scrollLeft; const slider = document.getElementById('quizSlider'); slider.addEventListener('mousedown', (e) => { isDown = true; slider.style.cursor="grabbing"; startX = e.pageX - slider.offsetLeft; scrollLeft = slider.scrollLeft; }); slider.addEventListener('mouseleave', () => { isDown = false; slider.style.cursor="grab"; }); slider.addEventListener('mouseup', () => { isDown = false; slider.style.cursor="grab"; }); slider.addEventListener('mousemove', (e) => { if(!isDown) return; e.preventDefault(); const x = e.pageX - slider.offsetLeft; const walk = (x - startX) * 2; slider.scrollLeft = scrollLeft - walk; }); slider.addEventListener('click', (e) => { if (isDown) e.preventDefault(); }); KomentarTerkait
Huawei Watch GT 7 Series Bawa Fitur Cek Risiko Jantung dan DiabetesTekno | Sabtu, 03 Oktober 2026 | 17:52 WIB
Pemula Mau Beli Jam Tangan Lari? Ini Tips Memilih Produk yang TepatLifestyle | Selasa, 29 September 2026 | 18:35 WIB
5 Smartwatch Amazfit Murah Terbaik, Baterai Awet hingga 2 MingguTekno | Selasa, 29 September 2026 | 11:59 WIBTerkini
Aliansi Rakyat Menggugat Datangi Bareskrim, Bawa Bukti Baru Dugaan Pemalsuan Suket GibranNews | Rabu, 07 Oktober 2026 | 13:09 WIB
Pegawai Rutan Depok Dibayar Rp1 Juta Tiap Bawa Sabu demi NapiNews | Rabu, 07 Oktober 2026 | 13:07 WIB
Putusan MK soal Pendidikan Gibran Bikin Publik Heboh: Loker Saja Minimal S1, Kok Bisa?News | Rabu, 07 Oktober 2026 | 13:05 WIB
Apakah Air Mawar Bisa Menghilangkan Flek Hitam?Lifestyle | Rabu, 07 Oktober 2026 | 13:05 WIB
Bukan Lagi Harga Turis, Makanan UMKM di MotoGP Mandalika 2026 Dijamin Masuk AkalBali | Rabu, 07 Oktober 2026 | 13:04 WIB
Gol Perdana Dean James demi Timnas Indonesia Lahir di Final, Suasananya Bikin MerindingBola | Rabu, 07 Oktober 2026 | 13:02 WIB
U by Prodia Luncurkan U-Buddy, Integrasikan Data dari Berbagai Wearable dalam Satu AplikasiTekno | Rabu, 07 Oktober 2026 | 13:02 WIB
Setelah New York, LPDP Jakarta Buka Jalan ke Kampus Top SeoulNews | Rabu, 07 Oktober 2026 | 13:02 WIB
Review Bird in Hand: Pulang Demi Pernikahan, Kembali pada Luka LamaYour Say | Rabu, 07 Oktober 2026 | 13:00 WIB
Tas Penumpang Diaduk-aduk, Aksi Porter Bandara Ngurah Rai Sikat Uang Belasan Juta Terekam CCTVBali | Rabu, 07 Oktober 2026 | 12:56 WIB
Diskusi Terpanas
1
WNI Tentara Bayaran Rusia, Rendi Apriyanto Sempat Kirim Duit ke Ortu Tapi Rekening Diblokir
2
Operasi Politik Presisi Prabowo: Preteli Siji-siji
3
Jaksa Agung Burhanuddin Muncul di Istana, Bantah Bakal Dilantik jadi Jampidum
4
5482 Korban Keracunan MBG, Viral Ucapan Wapres Gibran: Bawa Bekal dari Rumah, MBG Jangan Dimakan
5
Rupiah Unjuk Gigi Paling Kuat se-Asia ke Level Rp17.894/USDTop Writer Yoursay Agustian Pamungkas 27 Articles Anggia Khofifah P 24 Articles Ryan Farizzal 19 Articles e. kusuma .n 19 Articles Liks
Jejak Aparat pada Kematian Pedagang Cermin saat Demo 27 Agustus 202613:10 WIB
×
document.cookie = "sso_data="+e.data.sso_data + "; Path=/" + "; Domain=" + Domain + "; Max-Age=" + (60 * 60 * 24) // 1 hari + "; SameSite=None" + "; Secure"; document.cookie = "sso_id="+e.data.user.id + "; Path=/" + "; Domain=" + Domain + "; Max-Age=" + (60 * 60 * 24) // 1 hari + "; SameSite=None" + "; Secure"; $('#myModal').hide(); $(".login-arkadiame").hide(); $(".profile-arkadiame").show(); $(".portfolio-arkadiame").show(); $('#portfolio-arkadiame').attr('href', URL + '/profile'); $('#portfolio-arkadiame').attr('target', '_blank'); $('#avatar').attr('src', 'https://www.arkadia.me/api/avatar/user/'+e.data.user.id); location.reload(); } } } },false); const header = document.querySelector('.header'); let lastScroll = 0; let ticking = false; window.addEventListener('scroll', () => { if (!ticking) { window.requestAnimationFrame(() => { handleScroll(); ticking = false; }); ticking = true; } }); function handleScroll() { const currentScroll = window.scrollY; // aktifin fixed if (currentScroll > 300) { header.classList.add('fixed', 'shadow'); if (currentScroll > lastScroll) { // scroll ke bawah → tetap tampil (NO HIDE) header.classList.remove('hide'); header.classList.add('show'); } else { // scroll ke atas → tetap tampil juga header.classList.remove('hide'); header.classList.add('show'); } } else { header.classList.remove('fixed', 'shadow', 'show', 'hide'); } lastScroll = currentScroll; }
const headerHeight = header.offsetHeight; const menuOffset = menu.offsetTop; window.addEventListener("scroll", function () { if (window.scrollY >= menuOffset - headerHeight) { menu.classList.add("fixed"); menu.style.top = headerHeight + "px"; } else { menu.classList.remove("fixed"); menu.style.top = "0"; } }); // biar aman bila resize window.addEventListener("resize", function () { menu.style.top = header.offsetHeight + "px"; }); }); // OPEN hamburger.onclick = () => { menu.classList.add("active"); overlay.classList.add("active"); hamburger.classList.add("active"); }; // CLOSE function closeMenu() { menu.classList.remove("active"); overlay.classList.remove("active"); hamburger.classList.remove("active"); } overlay.onclick = closeMenu; closeBtn.onclick = closeMenu; // SUBMENU document.querySelectorAll(".menu-link").forEach(item => { item.onclick = function() { const parent = this.parentElement; document.querySelectorAll(".menu-list li").forEach(li => { if (li !== parent) li.classList.remove("open"); }); parent.classList.toggle("open"); }; }); const rect = this.getBoundingClientRect(); const clickX = e.clientX; if (clickX > rect.right - 60) { e.preventDefault(); e.stopPropagation(); const parent = this.closest('.has-submenu'); document.querySelectorAll('.has-submenu').forEach(function(item) { if (item !== parent) item.classList.remove('active'); }); parent.classList.toggle('active'); } }); }); const slider = document.querySelector('.trending-slider'); const prev = document.querySelector('.trending-prev'); const next = document.querySelector('.trending-next'); if (!slider || !prev || !next) return; let position = 0; const step = 200; function updateButtons() { if (position >= 0) { prev.style.display = 'none'; } else { prev.style.display = 'block'; } // batas kanan (manual) const maxScroll = slider.scrollWidth - slider.parentElement.clientWidth; if (Math.abs(position) >= maxScroll) { next.style.display = 'none'; } else { next.style.display = 'block'; } } next.onclick = () => { const maxScroll = slider.scrollWidth - slider.parentElement.clientWidth; position -= step; if (Math.abs(position) > maxScroll) { position = -maxScroll; } slider.style.transform = `translateX(${position}px)`; slider.style.transition = '0.3s ease'; updateButtons(); }; prev.onclick = () => { position += step; if (position > 0) { position = 0; } slider.style.transform = `translateX(${position}px)`; slider.style.transition = '0.3s ease'; updateButtons(); }; // INIT updateButtons(); }); const accountBtn = document.getElementById('account-btn'); const account = document.querySelector('.account'); accountBtn.addEventListener('click', function(e) { e.stopPropagation(); account.classList.toggle('active'); }); document.addEventListener('click', function() { account.classList.remove('active'); }); btn.addEventListener('click', function(e) { e.preventDefault(); popup.classList.toggle('show'); btn.classList.toggle('active'); // ini buat rotate arrow }); // klik luar nutup + reset arrow
document.addEventListener('click', function(e) {
if (!btn.contains(e.target) && !popup.contains(e.target)) {
popup.classList.remove('show');
btn.classList.remove('active');
}
});
// [REST OF THE CODE REMAINS THE SAME - Modal functions, status check, etc.] // Modal functions function openStatusModal() { const overlay = document.getElementById('statusModalOverlay'); if (overlay) { overlay.classList.remove('hidden'); document.body.classList.add('modal-open'); // Focus on input setTimeout(() => { document.getElementById('inputStatus')?.focus(); }, 100); } } function closeStatusModal() { const overlay = document.getElementById('statusModalOverlay'); if (overlay) { overlay.classList.add('hidden'); document.body.classList.remove('modal-open'); // Clear results const resultDiv = document.getElementById('statusResult'); const errorMessage = document.getElementById('errorMessage'); const inputStatus = document.getElementById('inputStatus'); if (resultDiv) resultDiv.classList.add('hidden'); if (errorMessage) errorMessage.classList.add('hidden'); if (inputStatus) inputStatus.value=""; } } document.addEventListener('DOMContentLoaded', function() { const overlay = document.getElementById('statusModalOverlay'); const modal = document.getElementById('statusModal'); if (overlay && modal) { overlay.addEventListener('click', function(e) { if (e.target === overlay) { closeStatusModal(); } }); } // Close with Escape key document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { const overlay = document.getElementById('statusModalOverlay'); if (overlay && !overlay.classList.contains('hidden')) { closeStatusModal(); } } }); }); // Pastikan konfigurasi ini sesuai bersama project Firebase const firebaseConfig = { apiKey: "AIzaSyAjP9vT2GzOKgp-fkhY2515IzAFQxvN0pw", authDomain: "suara-com.firebaseapp.com", databaseURL: "https://suara-com.firebaseio.com", projectId: "suara-com", storageBucket: "suara-com.firebasestorage.app", messagingSenderId: "238632102604", appId: "1:238632102604:web:df2e454964611569533069", measurementId: "G-H3X4SRHE6Y" }; const app = initializeApp(firebaseConfig); const messaging = getMessaging(app); const VAPID_KEY = 'BLEiEZfB2lemUOD0PGrnp87CV94FGYroVZqo9DfrOEcsMhZ4uFqzU5lJ8PnHlDhtujm51HyD1JgL10N-GB_7JME'; // Fungsi demi memperoleh token dan mengirimkannya ke server function retrieveToken() { getToken(messaging, { vapidKey: VAPID_KEY }).then((currentToken) => { if (currentToken) { console.log('FCM Token:', currentToken); subscribeByTopic(currentToken, 'news'); } else { // Jika tidak ada token, berarti izin masih belum diberikan. console.log('No registration token available. Request permission to generate one.'); // Tampilkan soft ask apabila diperlukan showSoftAsk(); } }).catch((err) => { console.error('An error occurred while retrieving token. ', err); }); } // Fungsi demi mengirim token ke backend function subscribeByTopic(token, topic) { console.log("Subscribing to topic:", topic); fetch('https://www.mediakeadilan.com/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token: token, topic: topic }) }) .then(response => { if (!response.ok) { throw new Error('Error subscribing to topic: ' + response.status); } console.log('Subscribed to "' + topic + '" successfully!'); }) .catch(error => { console.error("Failed to subscribe:", error); }); } // Fungsi demi menampilkan dialog "soft ask" function showSoftAsk() { const softAsk = document.getElementById("soft-ask"); const alreadyPrompted = localStorage.getItem("notifPrompted"); // Hanya tampilkan apabila izin masih default dan masih belum sempat ditanya if (!alreadyPrompted && Notification.permission === "default") { setTimeout(() => { softAsk.style.display = "block"; }, 3000); // Tunda 3 detik } } // MAIN logic function initializeNotificationFlow() { // Cek status izin notifikasi pada saat ini if (Notification.permission === 'granted') { console.log('Permission already granted. Retrieving token.'); retrieveToken(); // Jika telah diizinkan, langsung ambil token } else if (Notification.permission === 'default') { console.log('Permission is default. Showing soft ask.'); showSoftAsk(); // Jika masih belum ditentukan, tampilkan soft ask } else { console.log('Permission is denied.'); // Tidak menjalankan apa-apa apabila telah diblokir } } // 1. Jalankan alur utama saat halaman dimuat initializeNotificationFlow(); // 2. Siapkan event listener demi dialog "soft ask" document.getElementById("allow-btn").addEventListener("click", () => { document.getElementById("soft-ask").style.display = "none"; localStorage.setItem("notifPrompted", "yes"); // Minta izin ke browser Notification.requestPermission().then(permission => { if (permission === "granted") { console.log('Notification permission granted.'); new Notification("Terima kasih! Notifikasi sukses diaktifkan 🎉"); // Setelah izin diberikan, BARU panggil fungsi demi mengambil token! retrieveToken(); } else { console.log('Unable to get permission to notify.'); } }); }); document.getElementById("deny-btn").addEventListener("click", () => { document.getElementById("soft-ask").style.display = "none"; localStorage.setItem("notifPrompted", "yes"); }); // 3. Handle notifikasi saat website sedang dibuka (foreground) onMessage(messaging, (payload) => { console.log('Message received. ', payload); const notificationTitle = payload.notification.title; const notificationOptions = { body: payload.notification.body, icon: payload.notification.icon, }; new Notification(notificationTitle, notificationOptions); }); document.addEventListener("DOMContentLoaded", () => { console.log("DOM is ready"); const nextArticle = document.getElementById("next-article"); if (!nextArticle) return; const tagDetail = document.querySelector(".article-tags"); const navbar = document.querySelector(".navbar"); const closeButton = document.querySelector(".close-next"); if (!tagDetail || !closeButton) return; const tagOffsetTop = tagDetail.getBoundingClientRect().top + window.pageYOffset; const navbarHeight = navbar ? navbar.clientHeight : 0; window.addEventListener("scroll", () => { if (window.pageYOffset > tagOffsetTop - navbarHeight) { nextArticle.style.display = "block"; } }); closeButton.addEventListener("click", () => {
nextArticle.style.display = "none";
nextArticle.remove();
});
});
// klik nama trigger.addEventListener("click", function (e) { e.preventDefault(); popup.style.display = popup.style.display === "block" ? "none" : "block"; }); // klik luar = nutup
document.addEventListener("click", function (e) {
if (!e.target.closest(".article-profile")) {
popup.style.display = "none";
}
});
});
zoomableImages.forEach(img => { // Buat elemen div pembungkus (wrapper) secara dinamis const wrapper = document.createElement('div'); wrapper.className="dynamic-zoom-wrapper"; // Sisipkan wrapper tepat semasih belum gambar, lalu pindahkan gambar ke dalam wrapper img.parentNode.insertBefore(wrapper, img); wrapper.appendChild(img); // Buat elemen tombol perbesar const zoomBtn = document.createElement('button'); zoomBtn.type="button"; zoomBtn.className="btn-perbesar"; zoomBtn.innerHTML = ` // Tambahkan aksi klik pada tombol buatan tersebut zoomBtn.addEventListener('click', function() { openImageLightbox(img); // Kirim elemen gambar langsung ke fungsi lightbox }); // Masukkan tombol ke dalam wrapper bersandingan bersama gambar wrapper.appendChild(zoomBtn); }); }); // Fungsi demi membuka Lightbox
function openImageLightbox(imgElement) {
const figure = imgElement.closest('figure');
// Dukung pencarian caption baik memakai tag const lightboxContainer = document.getElementById("imageLightbox"); const lightboxActiveImg = document.getElementById("lightboxActiveImg"); const lightboxCaption = document.getElementById("lightboxCaption"); if (imgElement && lightboxContainer && lightboxActiveImg) { // Setel sumber gambar lightboxActiveImg.src = imgElement.src; // Setel teks caption apabila tersedia if (originalCaption && lightboxCaption) { lightboxCaption.innerText = originalCaption.innerText; lightboxCaption.style.display = "block"; } else if (lightboxCaption) { lightboxCaption.style.display = "none"; } // Tampilkan modal lightboxContainer.style.display = "flex"; } } // Fungsi demi menutup Lightbox function closeImageLightbox() { const lightboxContainer = document.getElementById("imageLightbox"); if (lightboxContainer) { lightboxContainer.style.display = "none"; } } |
Artikel ini telah tayang di sumber aslinya. Baca selengkapnya di Sini





