{\rtf1\ansi\ansicpg1252\cocoartf2822
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0

\f0\fs24 \cf0 let port, reader, keepReading = true;\
const csvData = [["Timestamp", "Moisture Level"]];\
const ctx = document.getElementById("moisture-chart").getContext("2d");\
const chart = new Chart(ctx, \{\
  type: "line",\
  data: \{ labels: [], datasets: [\{ label: "Moisture Level", data: [], borderColor: "#007bff" \}] \},\
  options: \{ scales: \{ x: \{ title: \{ display: true, text: "Time" \} \}, y: \{ beginAtZero: true \} \} \}\
\});\
\
document.getElementById("connect-btn").addEventListener("click", async () => \{\
  try \{\
    port = await navigator.serial.requestPort();\
    await port.open(\{ baudRate: 9600 \});\
    const decoder = new TextDecoderStream();\
    const inputStream = port.readable.pipeThrough(decoder).getReader();\
    reader = inputStream;\
    readSensorData();\
  \} catch (err) \{ console.error("Connection failed: ", err); \}\
\});\
\
document.getElementById("download-btn").addEventListener("click", () => \{\
  const csvContent = "data:text/csv;charset=utf-8," + csvData.map(row => row.join(",")).join("\\n");\
  const link = document.createElement("a");\
  link.href = encodeURI(csvContent);\
  link.download = "moisture_data.csv";\
  link.click();\
\});\
\
async function readSensorData() \{\
  while (keepReading) \{\
    const \{ value, done \} = await reader.read();\
    if (done) break;\
    const moistureValue = parseInt(value.trim(), 10);\
    if (!isNaN(moistureValue)) \{\
      document.getElementById("moisture-value").textContent = moistureValue;\
      const time = new Date().toLocaleTimeString();\
      csvData.push([time, moistureValue]);\
      updateChart(moistureValue, time);\
    \}\
  \}\
\}\
\
function updateChart(value, label) \{\
  if (chart.data.labels.length > 20) \{\
    chart.data.labels.shift();\
    chart.data.datasets[0].data.shift();\
  \}\
  chart.data.labels.push(label);\
  chart.data.datasets[0].data.push(value);\
  chart.update();\
\}\
}