Domotisation compteur d'eau

Super @cstan77 ton tuto, Merci :wink:
Je viens d’installer un compteur gianola 1 imp = 0.25L (seul dispo au moment de la commande, sinon j’aurai préféré 1 imp = 1L…, bref !)

Je me penche maintenant sur la partie intégration logicielle, j’ai reussi à brancher sur un fgbs-222 qui trainait pour mes essais.
J’ai créé un virtuel et je vois bien les impulsions s’incrémenter à l’intérieur.

Pour les 2 autrs formules mois + année, peux tu expliquer pourquoi tu ajoutes dans tes formules
(498*5) et (173*999.9) dans ta capture ci-dessus ? Merci !

Voila ce que ça donne chez moi avec les valeurs résultantes étranges pour mois (2534) et année (173026.7) :

Au début je me suis dit que tu voulais ratrapper un index en cours au moment de la mise en place de ton compteur, mais tu l’aurai fait avec une valeur, pas avec un calcul entre parenthèses… non ?!
Bref, perdu !

:melting_face:

EDIT :

Avec un compteur à 1 impulsion = 0.25L, je pensais ajouter dans la formule *0.25 pour avoir le nombre de L, puis *0.001 dans la foulée pour convertir en m3.
Ce qui donnerait :

stateChanges(#[Atelier][compteur-EAU][Etat-5]#, 1, today)*0.25*0.001

As-tu réussi ?

Bonjour,

Je crois voir qu’il est indiqué : 1 month
Pour le calcul sur 1 mois glissant

Si vous voulez le faire sur le mois en cours il faut l’indiquer ainsi : first day of this month,Now
Littéralement : du 1er jour de ce mois à maintenant

1 « J'aime »

donne *0,00025 :kissing_heart:

Tout à fait :slight_smile:

Bonjour,
Tout à fait, c’est ce que j’ai fini par faire suite à l’indication de Fabrice, voici la formule complète pour ceux que ça intéresse :

stateChanges(#[Virtuel][FGBS compteur eau][Etat]#, 1, first day of this month, Now) 
1 « J'aime »

Merci ! Du coup tu comptes en L ? Pas m3 ?
(Je ne vois pas de conversion…)

À moins que tu ne traites la valeur dans un autre virtuel ensuite ?

EDIT:

Pour l’année, peut-on extrapoler avec un first day of this year, Now ?
Je viens de tester, cela a l’air de fonctionner…

1 « J'aime »

Bonjour

Je voudrais savoir a quoi corresponde votre formule sur le widget mois et année
4985 pour le mois et 173199.9 pour l’année
Je voudrais aussi savoir comment sur votre widget les valeurs se mette a zéros par exemple pour le jour,le mois et l’année
et aussi vue que le capteur et fait pour 1 impulsion pour 1 litre comment vous faite la conversion pour des mètre cube
On devrais normalement multiplié par 1000 pour avoir des mètres cubes?

Merci pour votre retour

hey nous avons la même question pour @cstan77 :raising_hand_man: :wink:

Je laisse en L, car le widget affiche bien les litres et s’occupe des m3 tout seul.

Et oui pour le compteur à l’année, ça fonctionne aussi comme ça !

1 « J'aime »

Salut les gars,
en fait c’est pour faire coller l’affichage de mon compteur dehors avec celui du widget, c’est pour le réindexer… :grin:

1 « J'aime »

Élémentaire :hugs::ok_hand:

Bonsoir !
J’ai une petite anomalie concernant les widjets citées plus haut en version 4.4.9, ils se sont décalés tout seul en haut à gauche. Si je met deux compteur dans un seul virtuel, ils se superposent. Une idée ? Merci :slight_smile:

image

hello, pareil, je viens d’installer un compteur et les widgets des différentes commandes se superposes (tu as eu une réponse depuis 08/2024?)
image

Hello,
Non aucune.
J’ai désactivé dans le coup et j’ai mi un affichage différent, en attendant.

1 « J'aime »

Je ne suis pas expert en code de widget. Je n’ai pas celui-là, mais j’ai dépanné quelques un des miens en ajoutant ou remplaçant

position:relative

par

position:absolute

Merci @superbricolo

mais il est déjà en absolute semble t il, dans
cmd.info.numeric.ConsoEau.html

	span.numConSO {
		top: 57px;
		position: absolute;
		transform : scale(0.7,1);
		-webkit-transform:scale(0.7,1); /* Safari and Chrome */
		-moz-transform:scale(0.7,1); /* Firefox */
		-ms-transform:scale(0.7,1); /* IE 9+ */
		-o-transform:scale(0.7,1); /* Opera */
	} 

mais je m’aperçois aussi qu’il n’applique pas la police
font-family: « Digital-7 »;
qui est pourtant présente.

image

J’ai un widget similaire que je viens de corriger et qui à priori fonctionne. Voici le code:

<div style="width:140px;min-height : 140px;" class="consoeau cmd #history# tooltips cmd-widget conso#id#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">
    <span class='cmdName' style="font-weight: bold;font-size : 12px;">#name#</span>
	<div class= "conso_position#id#">
        <img id="IMGmeter#id#" class="IMGmeter#id#" alt="Meter" >
    	<span class="stateint1_conso#id#" id="intNum1Conso#id#"></span> 
    	<span class="stateint2_conso#id#" id="intNum2Conso#id#"></span>
        <span class="stateint3_conso#id#" id="intNum3Conso#id#"></span>
        <span class="stateint4_conso#id#" id="intNum4Conso#id#"></span>
        <span class="statedec1_conso#id#" id="decNum1Conso#id#"></span> 
    	<span class="statedec2_conso#id#" id="decNum2Conso#id#"></span> 
        <span class="statedec3_conso#id#" id="decNum3Conso#id#"></span> 
        <span class="unite_conso#id#" id="unite#id#">#unite#</span>
	</div>
	<div id="gauge#id#" class=" indicator"></div>

<style>
@font-face {
    font-family: "Digital-7";
  	src:	url("data/fonts/digital-7.eot?") format("eot"),
      		url("data/fonts/digital-7.woff") format("woff"),
      		url("data/fonts/digital-7.ttf") format("truetype"),
      		url("data/fonts/digital-7.svg#Digital-7") format("svg");
  	font-weight:normal;
  	font-style:normal;
}
 
.consoeau {
  width:200px;
  height:210px;
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;
  }   
 
span.stateint1_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	letter-spacing: 2px;
  	color: Black;
  	position: absolute;
  	top: 42px;
    right: 90px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }
  
  span.stateint2_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	letter-spacing: 2px;
  	color: Black;
  	position: absolute;
  	top: 42px;
    right: 79px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }
  
  span.stateint3_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	letter-spacing: 2px;
  	color: Black;
  	position: absolute;
  	top: 42px;
    right: 68px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }
  
  span.stateint4_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	letter-spacing: 2px;
  	color: Black;
  	position: absolute;
  	top: 42px;
    right: 57px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }
  
span.statedec1_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	color: crimson;
  	position: absolute;
  	top: 42px;
  	right: 40px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }
  
span.statedec2_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	color: crimson;
  	position: absolute;
  	top: 42px;
  	right: 28px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }

  
span.statedec3_conso#id# {
    font-family: "Digital-7"; 
    font-size:30px;
  	color: crimson;
  	position: absolute;
  	top: 42px;
  	right: 16px;
  	transform : scale(0.7,1);
	-webkit-transform:scale(0.7,1); /* Safari and Chrome */
	-moz-transform:scale(0.7,1); /* Firefox */
    -ms-transform:scale(0.7,1); /* IE 9+ */
	-o-transform:scale(0.7,1); /* Opera */
  }

  
span.unite_conso#id# {
    font-size:12px;
  	font-weight: bold;
  	color: #000;
  	position: absolute;
  	top: 84px;
  	right: 50px;
  }

img.IMGmeter#id# {
  	width: 120px;
  	height: 120px;
}
  
div.conso#id# {
  	width:140px;
  	min-height : 140px;
}
  
div.conso_position#id# {
  	float: center; 
  	position: absolute;
  	left: 10px;
  	top: 20px;
}

</style>
      
<script>
  jeedom.cmd.update['#id#'] = function(_options){ 
      var valeur=#state#;
      var stri = "0000" + Math.floor(valeur/1000)
      var xi = stri.length;
      var intNum1 = stri.charAt(xi-4);
      var intNum2 = stri.charAt(xi-3);
      var intNum3 = stri.charAt(xi-2);
      var intNum4 = stri.charAt(xi-1);  
      var strd = "00" + Math.floor(Math.round((valeur/1000 - stri) * 100000)/100);
      var xd = strd.length; 
      var decNum1 = strd.charAt(xd-3);
      var decNum2 = strd.charAt(xd-2);
      var decNum3 = strd.charAt(xd-1); 



     $('#intNum1Conso#id#').text(intNum1);
     $('#intNum2Conso#id#').text(intNum2);
     $('#intNum3Conso#id#').text(intNum3);
     $('#intNum4Conso#id#').text(intNum4);
     $('#decNum1Conso#id#').text(decNum1);
     $('#decNum2Conso#id#').text(decNum2);
     $('#decNum3Conso#id#').text(decNum3);


      if ('#petit#' == 1) {
          $('div.conso#id#').css('width','90px');
          $('div.conso#id#').css('min-height','80px');
          $('div.conso_position#id#').css('left','5px');
          $('span.statedec1_conso#id#').css('font-size','20px');
          $('span.statedec2_conso#id#').css('font-size','20px');
          $('span.statedec3_conso#id#').css('font-size','20px');
          $('span.statedec1_conso#id#').css('top','28px');
          $('span.statedec2_conso#id#').css('top','28px');
          $('span.statedec3_conso#id#').css('top','28px');
          $('span.statedec1_conso#id#').css('right','26px');
          $('span.statedec2_conso#id#').css('right','18px');
          $('span.statedec3_conso#id#').css('right','10px');
          $('span.stateint1_conso#id#').css('font-size','20px');
          $('span.stateint2_conso#id#').css('font-size','20px');
          $('span.stateint3_conso#id#').css('font-size','20px');
          $('span.stateint4_conso#id#').css('font-size','20px');
          $('span.stateint1_conso#id#').css('top','28px');
          $('span.stateint2_conso#id#').css('top','28px');
          $('span.stateint3_conso#id#').css('top','28px');
          $('span.stateint4_conso#id#').css('top','28px');
          $('span.stateint1_conso#id#').css('right','59px');
          $('span.stateint2_conso#id#').css('right','52px');
          $('span.stateint3_conso#id#').css('right','45px');
          $('span.stateint4_conso#id#').css('right','38px');
          $('span.unite_conso#id#').css('font-size','8px');
          $('span.unite_conso#id#').css('top','57px');
          $('span.unite_conso#id#').css('right','30px');
          $('img.IMGmeter#id#').css('width','80px');
          $('img.IMGmeter#id#').css('height','80px');
      }
    }
    jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
    document.getElementById("IMGmeter#id#").src="data/customTemplates/dashboard/cmd.info.numeric.ConsoEau/Meter2.png";    
  
</script>
</div>

Tu peux t’inspirer ce celui-ci pour corriger le tient ou bien passe moi le tient et j’essaierai de le corriger

1 « J'aime »

re, je ne parviens pas à faire recoller le tient avec mon install,(ceci dit si tu a l’installation compléte du tien je prend, tel quel.) J’ai trouvé :slight_smile:
voici le cmd.info.numeric.ConsoEau.html

<div style="width:140px;min-height : 140px;" class="cmd #history# tooltips cmd-widget conso#id#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">
    <span class='cmdName' style="font-weight: bold;font-size : 12px;">#name#</span>
	<div class= "conso_position#id#">
		<img src="data/customTemplates/dashboard/cmd.info.numeric.ConsoEau/CompteurEAU.png" class="IMGcompteur#id#">
    	<span class="numConSO stateint1_conso#id#" id="intNum1Conso#id#"></span> 
    	<span class="numConSO stateint2_conso#id#" id="intNum2Conso#id#"></span>
        <span class="numConSO stateint3_conso#id#" id="intNum3Conso#id#"></span>
        <span class="numConSO stateint4_conso#id#" id="intNum4Conso#id#"></span>
        <span class="numConSO statedec1_conso#id#" id="decNum1Conso#id#"></span> 
    	<span class="numConSO statedec2_conso#id#" id="decNum2Conso#id#"></span> 
        <span class="numConSO statedec3_conso#id#" id="decNum3Conso#id#"></span> 
        <span class="unite_conso#id#" id="unite#id#"></span>
	</div>
	<div id="gauge#id#" class=" indicator"></div>

<style>
	@font-face {
		font-family: "Digital-7";
		src: url("data/customTemplates/dashboard/cmd.info.numeric.ThermostatNetatmo/font/digital-7.eot?") format("eot"),
		url("data/customTemplates/dashboard/cmd.info.numeric.ThermostatNetatmo/font/digital-7.ttf") format("truetype"),
		url("data/customTemplates/dashboard/cmd.info.numeric.ThermostatNetatmo/font/digital-7.svg#Digital-7") format("svg");
		font-weight:normal;
		font-style:normal;
	}

	span.numConSO {
		top: 57px;
		position: absolute;
		transform : scale(0.7,1);
		-webkit-transform:scale(0.7,1); /* Safari and Chrome */
		-moz-transform:scale(0.7,1); /* Firefox */
		-ms-transform:scale(0.7,1); /* IE 9+ */
		-o-transform:scale(0.7,1); /* Opera */
	} 
	 
	span.stateint1_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		letter-spacing: 2px;
		color: Black;
		right: 90px;
    }
  
	span.stateint2_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		letter-spacing: 2px;
		color: Black;
		right: 79px;
	}
  
	span.stateint3_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		letter-spacing: 2px;
		color: Black;
		right: 68px;
	}
  
	span.stateint4_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		letter-spacing: 2px;
		color: Black;
		right: 57px;
	}
  
	span.statedec1_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		color: crimson;
		top: 57px;
		right: 40px;
	}
  
	span.statedec2_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		color: crimson;
		top: 57px;
		right: 28px;
	}

	span.statedec3_conso#id# {
		font-family: "Digital-7"; 
		font-size:30px;
		color: crimson;
		top: 57px;
		right: 16px;
	}
  
	span.unite_conso#id# {
		font-size:12px;
		font-weight: bold;
		color: #000;
		position: absolute;
		top: 84px;
		right: 50px;
	}

	img.IMGcompteur#id# {
		width: 120px;
		height: 120px;
	}
  
	div.conso#id# {
		width:140px;
		min-height : 140px;
	}
  
	div.conso_position#id# {
		float: center; 
		position: absolute;
		left: 10px;
		top: 20px;
	}
</style>
      
<script>
    jeedom.cmd.update['#id#'] = function(_options){
		debug=1;
		if(debug){
			console.info("Compteur EAU : id[#id#] [#generic_type#] : "+_options.display_value);
			console.table(_options);
		}

		// mise en forme de l'index de conso
		var valeur=_options.display_value;	// valeur de la conso
		var stri = "0000" + Math.floor(valeur/1000);
		var xi = stri.length;
		var intNum1 = stri.charAt(xi-4);
		var intNum2 = stri.charAt(xi-3);
		var intNum3 = stri.charAt(xi-2);
		var intNum4 = stri.charAt(xi-1);  
		var strd = "00" + Math.floor(Math.round((valeur/1000 - stri) * 100000)/100);
		var xd = strd.length; 
		var decNum1 = strd.charAt(xd-3);
		var decNum2 = strd.charAt(xd-2);
		var decNum3 = strd.charAt(xd-1); 

		// affiche l'index de conso
		$('#intNum1Conso#id#').text(intNum1);
		$('#intNum2Conso#id#').text(intNum2);
		$('#intNum3Conso#id#').text(intNum3);
		$('#intNum4Conso#id#').text(intNum4);
		$('#decNum1Conso#id#').text(decNum1);
		$('#decNum2Conso#id#').text(decNum2);
		$('#decNum3Conso#id#').text(decNum3);
	}
    jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#'});
	
	// affiche l'unité de l'index conso
	var unitConsoEau="#unite#";
	if ((unitConsoEau.length == 2) && $.isNumeric(unitConsoEau.substr(1))) {
		// affiche avec exposant sur le 2eme caractere
		$('#unite#id#').text(unitConsoEau.substr(0,1));
		$('#unite#id#').append( "<sup>"+unitConsoEau.substr(1)+"</sup>" );
	}
	else
	{
		$('#unite#id#').text("#unite#");
	}  
</script>
</div>

bon cela marche déjà mieux, mais la police est décalé.
image

ah j’ai trouvé
dans chaque span.statedec
top: 55px;