<!DOCTYPE html>
<html lang="Fr"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script src="\RGraph.common.core.js"></script>
<script src="\RGraph.common.dynamic.js"></script>
<script src="\RGraph.gauge.js"></script>
<script src "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>  
<link rel="stylesheet" href="\index.css">
<script>
    window.onload function ()
    {
        displayGraph();
        RGraph.AJAX.getCSV({url'/getData'callbackmyCallback});        
    }

    function myCallback (data)
    {
         RGraph.reset(document.getElementById('cvs'));
         RGraph.reset(document.getElementById('cvs2'));

        gauge new RGraph.Gauge({
            id'cvs',
            min: -20,
            max60,
            valuedata[0],
            options: {
                textColor'white',
                backgroundColor'black',
                borderOuter:     'grey',
                borderInner:     'black',
                borderOutline:   'black',
                shadow:           true,
                shadowColor:     'grey',
                centerpinColor:  'black',
                labelsValuetrue
                labelsValueDecimals1,
                labelsValueBoundingfalse,
                labelsValueYPos0.75,
                labelsValueBoldtrue,
                labelsValueUnitsPost' °C',
                titleTop'DHT22',
                titleBottom'Température',                
                colorsRanges: [[-200'#0000FF'], [015,'#00FFFF'], [1530'#00FF47'], [3040'#FFFF00'], [40,60,'#FF4A00']] ,                
                adjustabletrue,
                textSize12
            }
        }).draw()
        
        gauge2 new RGraph.Gauge({
            id'cvs2',
            min0,
            max100,
            valuedata[1],
            options: {
                textColor'white',
                backgroundColor'black',
                borderOuter:     'grey',
                borderInner:     'black',
                borderOutline:   'black',
                shadow:           true,
                shadowColor:     'grey',
                centerpinColor:  'black',
                labelsValuetrue
                labelsValueDecimals1,
                labelsValueBoundingfalse,
                labelsValueYPos0.75,
                labelsValueBoldtrue,
                labelsValueUnitsPost' %',
                titleTop'DHT22',
                titleBottom'Humidité',                
                colorsRanges: [[040'#DC3912'], [4050,'#FF9900'], [5075'#00FF00'], [7585'#FF9900'], [85,100,'#DC3912']] ,
                adjustabletrue,
                textSize12
            }
        }).draw()
    }

  
    var Temperature = [];    // on créer un tableau de variable vide nommé "Temperature"                                                 
    var Humidite = [];       // on créer un tableau de variable vide nommé "Humidite"
    var Heure = [];          // on créer un tableau de variable vide nommé "Heure"
    // lla fonction qui dessine le graphe
    function displayGraph() {   
      var ctx document.getElementById("graphe").getContext('2d');  // la div ou se trouve le graphe
      var Chart2 new Chart(ctx, {                                  // on y crée un nouveau graphe
          type'line',                                              // de type line 
          data: {                                                    // les datas   
            labelsHeure,                                              // axe X, les datas du tableau Heure            
            datasets: [{                                                // 1er axes Y
                label'Température',                                     // le label
                fontColor'red',
                yAxisID'T',                                             // son ID
                fillfalse,                                              // pas de remplissage sous la courbe
                backgroundColor'#FF0000',                               // couleur du point  
                borderColor'#FF0000',                                   // couleur de la courbe           
                pointHoverRadius5,  
                pointRadius3,
                dataTemperature                                         // les datas du tableau Temperature 
                }, {                                                    // 2eme axes Y    
                label'Humidité',                                        // le label
                fontColor'blue',
                yAxisID'H',                                             // son ID
                fillfalse,                                              // pas de remplissage sous la courbe
                backgroundColor'#0000FF',                               // couleur du point
                borderColor'#0000FF',                                   // couleur de la courbe 
                pointHoverRadius5,  
                pointRadius3,
                dataHumidite                                            // les datas du tableau Humidite 
            }],
          },
          options: {                                // les options      
              
             tooltips: {
                mode'index',
                intersectfalse,
                callbacks: {
                    labelfunction (tooltipItemdata) {
                        if (tooltipItem.datasetIndex === 0) {
                            var label data.datasets[tooltipItem.datasetIndex].label || '';
                            if (label) {
                                label += ': ';
                            }
                            label += Math.round(tooltipItem.yLabel 100) / 100;
                            label += ' °C' ;
                            return label;
                        else if (tooltipItem.datasetIndex === 1) {
                            var label data.datasets[tooltipItem.datasetIndex].label || '';
                            if (label) {
                                label += ': ';
                            }
                            label += Math.round(tooltipItem.yLabel 100) / 100;
                            label += ' %';
                            return label;
                        }
                    }
                }
            }, 
            title: {                                       // le titre
                    displaytrue,
                    fontColor'white'
                    text'Température et Humidité'
                },
                legend: {
                    labels: {
                        fontColor'white',                     
                    }
                },
            maintainAspectRatiofalse,
            elements: {             
                line: {
                    tension0.5                            // pour arrondir la courbe
                }
            },
            scales: {                               // les axes Y
              yAxes: [{                                    // 1er axe Y 
                  gridLines: {
                    color'red'
                    displayfalse
                  },
                  scaleLabel: {                                   // le label
                    displaytrue,   
                    fontColor'red',                    
                    labelString'Température en °C'
                  },                  
                  ticks: {                                        // l'échelle
                      fontColor'red',     
                      min:0,
                      max:50                                                      
                  },
                  id'T',                                        // l'ID
                  type'linear',                                 // le type
                  position'left'                                // sa position
                  },{       // 2eme axe Y 
                  gridLines: {
                    color'blue'
                    displayfalse
                  },
                  scaleLabel: {                                   // le label
                    displaytrue
                    fontColor'blue',                           
                    labelString'Humidité en %'
                  },                  
                  ticks: {                                        // l'échelle
                      fontColor'blue'
                      //beginAtZero:true ou false                            
                      min:0,
                      max:100                                                    
                  },                   
                  id'H',                                        // l'ID                  
                  type'linear',                                 // le type
                  position'right'                               // sa position                                            
              }],
              xAxes: [{
                  gridLines: {
                    color'white'
                    displayfalse
                  },
                  ticks: {
                    fontColor'white',                    
                 }
              }]
            }
          }
      });
    }
    
    // on lance la requete toute les 5 s qui rafraichi le graphe et le tableau avec les nouvelles datas
    setInterval(function() {  
      RGraph.AJAX.getCSV({url'/getData'callbackmyCallback});
      getData();
    }, 5000); 
     
    function getData() {
      var xhttp new XMLHttpRequest();                            // on construit une requete
      xhttp.onreadystatechange function() {
        if (this.readyState == && this.status == 200) {
          // on traite la reponse, la découpe et met nos datas dans des tableaux
          var hrs new Date().toLocaleString();              
          var datas this.responseText;                           
          var split datas.split(',');
          var temp split[0];
          var humi split[1];      
          Temperature.push(temp);
          Humidite.push(humi);
          Heure.push(hrs);
          displayGraph();                                            // on met a jour le graph
      
          // on met a jour le Tableau
          var tableau document.getElementById("tableau");
          var row tableau.insertRow(1);   // Ajouter après les titres
          var cell1 row.insertCell(0);  // on crée nos cellules
          var cell2 row.insertCell(1);
          var cell3 row.insertCell(2);
          cell1.innerHTML hrs;         // On insère nos datas dans dataTable 
          cell2.innerHTML temp " °c"
          cell3.innerHTML humi " %";   
        }
      };
      xhttp.open("GET""getData"true); // requete pour ouvrir la page readDHT du serveur pour récupérer nos datas
      xhttp.send();                       // on envoie la requete                     
    }        
  </script>
</head>
<body>
    
    <h1>Sonde DHT22</h1>
    
    <h2>Jauge en temps réel sur un NodeMCU</h2>  
    
    <div id="jauge">
        <canvas id="cvs" width="300" height="300">[No canvas support]</canvas>
        <canvas id="cvs2" width="300" height="300">[No canvas support]</canvas>
    </div>
    
    <h2>Graphe en temps réel sur un NodeMCU</h2>
    
    <div>
      <canvas id="graphe" width="100%" height="400"></canvas>
    </div>
    
    <h2>tableau de datas en temps reel sur un NodeMCU</h2>
    
    <div>
    <table id="tableau">
      <tr><th>Heure</th><th>Température</th><th>Humidité</th></tr>
    </table>
    </div>
    
</body>
</html>