🧪 Fabrication d'un capteur de turbidité pour piscine

bonjour Ă  tous,
voici une amélioration du widget pour IPX800 V5 avec l’API HTML Widget :

<img id="sepia" style="position:absolute;left:2px;top:0px;width:98%;display:block;" src="https://zupimages.net/up/23/15/j0p1.png"/>
<div id="pointeurNTU1" style="position:absolute;top:50px;left:0px;width:30px;font-size:32px;">&#8682;</div>
<span id="turbid1" style="position:absolute;top:80px;color:#666666;left:10px;font-size:14px;font-weight:bolder;">TROUBLE</span>
<div style="position:absolute;left:10px;top:120px;">
    <div id="txtUNT1"></div>
    <div id="txtmV1"></div>
    <div id="txtSeuil1"></div>
</div>

<script>
window.GCE_Refresh.push(function(data) {
    switch (data['_id'])
    {
        case 262144:
            turbidity(data.value); 
            break;
    }
  })
  
  
function init() {
    GCE_API.getANA(262144).then((ret) => {
    turbidity(ret.value);
    })
  }
   
   
function turbidity(brute){
   var Volts=0,
       offset=0,
       color,
       SEUIL=10,
       screenWidth = screen.width,
       windowWidth = window.innerWidth;
       
    //formule du capteur:
       var analog=(( -1/141998.7926 * brute * brute) + (0.455257387 * brute ) - 4352.9).toFixed(0);

    //NTU : couleur si dépassement de seuil
        color = analog > SEUIL ? '#ff0' : '#0f0';
    //NTU : déplacement du pointeur graphique
        if (analog<SEUIL){offset=0;turbide="CLAIRE";}
		else if(analog >=SEUIL && analog<30){offset=1;turbide="TRES PEU TROUBLE";}
		else if(analog >=30 && analog<75){offset=2;turbide="PEU TROUBLE";}
		else if(analog >=75 && analog<250){offset=3;turbide="TROUBLE";}
		else if(analog >=250){offset=4;turbide="TRES TROUBLE";}
    //mVolts
		Volts=(brute * 0.050354).toFixed(1);
		var zoom=( screenWidth / windowWidth).toFixed(2);
        var sepia= document.getElementById("sepia");
        document.getElementById("pointeurNTU1").style.left = -4+(sepia.offsetWidth/10)+offset*(sepia.offsetWidth/5)+"px";
        document.getElementById("pointeurNTU1").style.top = (sepia.offsetHeight*0.7)+ "px";
        document.getElementById("pointeurNTU1").style.color=color;
        document.getElementById("pointeurNTU1").style.height=32*zoom;
        document.getElementById("turbid1").style.top=sepia.offsetHeight +16*zoom +"px" ;
        
        document.getElementById("txtUNT1").innerHTML="UNT : " + analog;   
        document.getElementById("txtmV1").innerHTML="U : " + Volts + " mV";
        document.getElementById("txtSeuil1").innerHTML="Seuil : " + SEUIL;
        document.getElementById("turbid1").innerHTML="EAU " + turbide;
    }

  init();

</script>

Dans mon code, l’id 262144 est celui de l’entrée analogique liée au capteur (voir plus haut).

Bonne journée

3 « J'aime »