Tout a fait j’ai percé au diamètre de la sonde. J’ai rajouté un peu de silicone.
En effet, j’ai oublié, j’ai effectivement mis un vernis.
Je mets ce vernis sur toutes mes plaques électroniques qui sont installées a l’extérieur.
(Portail, spot led…)
En cherchant, tu trouveras moins cher.
ATTENTION, NE PAS METTRE SUR LES PETITS INTERRUPTEURS CAR ILS VONT COLLER.
J’ai soudé les fils avant de mettre le vernis.
Ensuite dans la boîte de dérivation, j’ai aussi mis un petit sachet de dessicant . On le trouve dans les boîtes a chaussures neuves.
Essai de trouver un sachet avec un papier alu et pas en papier.
Attention, il faut le changer de temps en temps.
Je le mets au four pendant 15 secondes.
Le sachet n’est pas obligatoire.
Je nettoie ma cuve tous les ans et j’en profite pour le changer ou le faire sécher.
J’ai complété le wiki cité plus haut .
Vous y trouverez des modèles de Widgets pour IPX800 V4, permettant de calculer le volume de liquide dans des citernes de différentes formes :
Je pensais que ça fonctionné mais ce n’est pas le cas.
Quand j’ai renseigné toutes les informations Ma citerne était pleine
Hier, ma cuve était pleine à 30% et le programme me donnait une hauteur de 164cm
Je pensais qu’elle mesurait la distance entre l’eau et la hauteur restante
C’est a dire: il me reste 30cm d’eau, la hauteur de ma cuve fait 190cm donc je pensais que l’information que ma sonde me renvoyé était: 190-36 = 164 cm
J’ai modifié la formule en fonction de cette valeur.
Aujourd’hui ma cuve est pleine a 60% malheureusement le programme me dit que j’ai toujours 30 % d’eau
function bruteToDistance(brute) {
d = Math.floor(60.38 * Math.pow(brute * 0.5,-0.300));
if (d < 10 || d > 175) {
return "";
}else{
return 175 - d
}
}
var hauteurEau= bruteToDistance(datasources["STATUS"]["response"]["analog0"]); //var hauteurEau = bruteToDistance(datasources["STATUS"]["response"]["analog0"])
var hauteurCuve=190; //hauteur cuve en cm
var largeurCuve=110; //largeur cuve en cm
var longueurCuve=240; //longueur cuve en cm
var volumeCuve=5000; //volume cuve pleine en litres
var pourcentage = 100 - (100*hauteurEau/190); //var pourcentage = 100 - (100*hauteurEau/hauteurCuve)
//calcul de la consommation à partir de la baisse du niveau
var consommation = ((190-(190-hauteurEau))*110*240)/1000; //consommation en litres var consommation = ((hauteurCuve-hauteurEau)*largeurCuve*longueurCuve)/1000
//calcul volume Eau
var vf=0;
vf=(190-hauteurEau)*110*240; //vf=hauteurEau*largeurCuve*longueurCuve;
vf=(vf/1000).toFixed(0);
return `
<style>
body {
background:$bgColor;
font: 14px/1 'Open Sans', helvetica, sans-serif;
-webkit-font-smoothing: antialiased;
color:#fff;
}
.box{
height: 80px;
width: 80px;
position: absolute;
top: 50%;
left: 10px;
transform: translate(0, -50%);
background: #666666;
border-radius:15%;
overflow: hidden;
}
.eau{
position: absolute;
left: 0;
top: 0;
width: 80px;
height: 80px;
transform:translate(0,${100-pourcentage}%);
background:#76B558;
}
</style>
<div class="box">
<div id="eau" class="eau"></div>
</div>
<div style="float:left;margin-left:100px;margin-top:15px;font-size:12px;">
<span >Contenance cuve: ${volumeCuve}</span> litres<br>
<span >consommation : ${consommation} </span> litres<br>
<span >Hauteur Eau : ${190-hauteurEau}</span> cm<br>
<span style="font-weight:bold;">Volume Restant : ${vf} litres</span><br>
<span >Ratio volume : ${(vf/volumeCuve*100).toFixed(2)}</span> %<br>
</div>
`;
Bonjour Taz
Comment avez-vous déterminé la formule de conversion de la sonde ?
sauf erreur, à 3.3V, c’est à dire la valeur 65535, votre formule donne 0.04 soit 4 cm
Pour une valeur 1, votre formule donne 1.23 mètre max alors que le MB1200 est fait pour une distance max 7.65 m (limité à 6 m pour une alim en 3.3V)
oui, entre temps j’avais vu votre message précédent, et j’avais édité le mien .
avez vous un schéma et une réponse pour la détermination de la formule ?
autre point :
dans votre code, vous déterminez la distance comme ceci
donc, vous tenez bien compte du type de capteur ToF en renversant la mesure pour obtenir une hauteur de liquide.
Dans ce cas, vous ne devez pas renverser à nouveau la mesure dans le code en dessous :
mon avis : repartez du code original, renseignez les dimensions de la cuve, mettez la variable mesureToF=1;
et renseignez la formule de conversion sans passer par votre fonction qui induit une erreur
var hauteurEau=Math.floor(60.38 * Math.pow(datasources["STATUS"]["response"]["analog0"] * 0.5,-0.300));
Autre point, vous utilisez parfois 175, parfois 190 dans votre code. cela crée des erreurs, les proportionnalités ne sont pas conservées.
Si votre capteur est à 175cm du fond de la cuve ou si vous avez un trop plein à cette hauteur, c’est 175 qu’il faut prendre. Si la sonde est au dessus du niveau max de 190, alors prendre 190.
Voici un code avec une hauteur max à 175 :
function bruteToDistance(brute) {
d = Math.floor(60.38 * Math.pow(brute * 0.5,-0.300));
if (d < 10 || d > 175) {
return "";
}else{
return d
}
}
var hauteurEau= bruteToDistance(datasources["STATUS"]["response"]["analog0"]);
var hauteurCuve=175; //hauteur cuve en cm
var largeurCuve=110; //largeur cuve en cm
var longueurCuve=240; //longueur cuve en cm
var volumeCuve=4620; //volume cuve pleine en litres
var mesureToF=1;//renseignez 1 si vous utilisez un capteur ultrasons/infrarouges ou laser
//ne pas modifier le code ci-dessous
if (mesureToF==1){hauteurEau=hauteurCuve-hauteurEau;} // si mesure ToF
var pourcentage=100 - (100*hauteurEau/hauteurCuve);
//calcul de la consommation à partir de la baisse du niveau
var consommation=((hauteurCuve-hauteurEau)*largeurCuve*longueurCuve)/1000 //consommation en litres
//calcul volume Fuel
var vf=0;
vf=hauteurEau*largeurCuve*longueurCuve;
vf=(vf/1000).toFixed(0);
return `
<style>
.box{
height: 80px;
width: 80px;
position: absolute;
top: 50%;
left: 10px;
transform: translate(0, -50%);
background: #666666;
border-radius:15%;
overflow: hidden;
}
.fuel{
position: absolute;
left: 0;
top: 0;
width: 80px;
height: 80px;
transform:translate(0,${pourcentage}%);
background:#76B558;
}
</style>
<div class="box">
<div id="fuel" class="fuel"></div>
</div>
<div style="float:left;margin-left:100px;margin-top:15px;font-size:12px;">
<span >Contenance cuve: ${volumeCuve}</span> litres<br>
<span >consommation : ${consommation} </span> litres<br>
<span >Hauteur Eau : ${hauteurEau}</span> cm<br>
<span style="font-weight:bold;">Volume Eau : ${vf} litres</span><br>
<span >Ratio volume : ${(vf/volumeCuve*100).toFixed(2)}</span> %<br>
</div>
`;
je ne comprends pas ta demande
« avez vous un schéma et une réponse pour la détermination de la formule ? »
J’ai installé ma sonde à 2 mètres par rapport au fond de ma citerne
Ma citerne fait 190 cm de haut. J’ai installé la sonde dans la « trou » qui permet de passer pour nettoyer la citerne. Elle est doit à 2 m.
En copiant ton programme j’obtiens cela
Je viens d’aller mesurer la hauteur d’eau (j’ai du attendre car il pleuvait comme « vache qui pisse »
J’ai environ 1,20 m d’eau (du font de la citerne jusqu’à la surface de l’eau).
Ma jauge manuelle me donne entre 50 et 60% pour le niveau. Ce qui correspond a peu près à ma mesure manuelle
d = Math.floor(60.38 * Math.pow(brute * 0.5,-0.300));
pour ma demande, la sortie du capteur étant analogique, comment le capteur est-il alimenté 3.3V ? 5V ?
si 5V, quelle résistance pour le pont diviseur ?
et autre question : d’où vient la formule ?
avec mon code, en mettant hauteurEau=70 à la place de ta formule (70 à ce niveau du code représente la mesure brute ToF)
extrait du code :
function bruteToDistance(brute) {
d = Math.floor(60.38 * Math.pow(brute * 0.5,-0.300));
if (d < 10 || d > 190) {
return "";
}else{
return d
}
}
var hauteurEau= 70;//datasources["STATUS"]["response"]["analog0"]);
var hauteurCuve=190; //hauteur cuve en cm
var largeurCuve=110; //largeur cuve en cm
var longueurCuve=240; //longueur cuve en cm
var volumeCuve=4620; //volume cuve pleine en litres
var mesureToF=1;//renseignez 1 si vous utilisez un capteur ultrasons/infrarouges ou laser
//ne pas modifier le code ci-dessous
if (mesureToF==1){hauteurEau=hauteurCuve-hauteurEau;} // si mesure ToF
ta formule est fausse. Pour preuve, dans le code que tu reprends, sans utiliser ta formule et en mettant une mesure en dur à 70, le widget est ok.
donc du dois modifier ta formule d = Math.floor(60.38 * Math.pow(brute * 0.5,-0.300));
et rétablir la valeur analogique dans le widget.
Le code que tu viens de présenter donnera toujours le meme résultat puisque j’ai éliminé les appels à la formule et à l’analogique. C’est pour ça que ça donne ce que tu attends.