52 lines
1.2 KiB
HTML
52 lines
1.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Sensor Kualitas Udara</title>
|
|
<style>
|
|
body {
|
|
font-family: Arial, sans-serif;
|
|
background: #0f172a;
|
|
color: #e5e7eb;
|
|
padding: 20px;
|
|
}
|
|
.card {
|
|
background: #1e293b;
|
|
padding: 15px;
|
|
margin: 10px 0;
|
|
border-radius: 8px;
|
|
font-size: 20px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>🌱 Sensor Kualitas Udara</h1>
|
|
|
|
<div class="card">CO₂: <span id="co2">-</span></div>
|
|
<div class="card">CO: <span id="co">-</span></div>
|
|
<div class="card">BZ: <span id="bz">-</span></div>
|
|
<div class="card">AQ: <span id="aq">-</span></div>
|
|
|
|
<script>
|
|
async function fetchData() {
|
|
try {
|
|
const res = await fetch("/api/data");
|
|
const data = await res.json();
|
|
|
|
document.getElementById("co2").textContent = data.CO2 + 'ppm';
|
|
document.getElementById("co").textContent = data.CO + 'ppm';
|
|
document.getElementById("bz").textContent = data.BZ + 'ppm';
|
|
document.getElementById("aq").textContent = data.AQ + '%';
|
|
} catch (err) {
|
|
console.error("Failed to fetch data", err);
|
|
}
|
|
}
|
|
|
|
fetchData();
|
|
setInterval(fetchData, 3000); // refresh every 3 seconds
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|