<!-- Air quality monitoring system using MH_Z19B sensor with WIFI, WEBSERVER
Hardware : Wemos D1 mini, MH_Z19B
Software : Arduino IDE, EPS8266 Sketch Data Upload
Library  : ESPAsyncTCP, ESPAsyncWebServer -->
<!DOCTYPE html>
<html>
<head>
  <title>Air quality monitor</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="mobile-web-app-capable" content="yes">
  <link rel="stylesheet" type="text/css" href="style.css">
  <script src="https://www.gstatic.com/charts/loader.js"></script>
  <script>
    google.charts.load('current', {'packages':['gauge','corechart']});
    // Display clock above air quality gauge
    function startClock() {
      var now    = new Date();
      var hour   = now.getHours();
      var minute = now.getMinutes();
      var second = now.getSeconds();
      minute = minute < 10 ? "0" + minute : minute;
      second = second < 10 ? "0" + second : second;
      document.getElementById("clock_div").innerHTML =
      hour + ":" + minute + ":" + second;
      var tmp = setTimeout(startClock, 500);
    }
  </script>
</head>
  <body onload="startClock()">
    <h1>CO2 air quality monitor</h1>
    <div id="clock_div"></div>
    <div id="chart_div"></div>
    <script>
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Label', 'Value'],
          ['CO2', 0]
        ]);
        
        var options = {
          width: 800, height: 240,
          redFrom: 2000, redTo: 5000,
          yellowFrom:1000, yellowTo: 1999,
          greenFrom:0, greenTo: 999,
          max: 5000,
          minorTicks: 10,
          majorTicks: ["0","1000","2000","3000","4000","5000"]
        };
        
        var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
        chart.draw(data, options);

        setInterval(function ( ) {
          var xhttp = new XMLHttpRequest();
          xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
              var pms = this.responseText.split(" ");
              data.setValue(0, 1, this.responseText);
              // data.setValue(1, 1, pms[1]);
              // data.setValue(2, 1, pms[2]);
              chart.draw(data, options);
            }
          };
          xhttp.open("GET", "/updatesensorreading", true);
          xhttp.send();
        }, 3000 );
      }
    </script>
  </body>
</html>