Valeur max et min sur une année

Bonjour tout le monde, je cherche à faire une virtuelle pour afficher la température max et mon de ma cave durant l’année courante.

J’ai trouvé la fonction maxBetwwen mais je ne sais pas comment la configurer sur l’année courante.

Merci pour votre aide.

bonjour tu veux réutilisé l’info ensuite (message,…) ou un simple visuel sur un design?

pour une reutilisation
ça doit ressemblé à se genre de syntaxe
(même si la commande differe)
là c’est au même jour heure
j-1 ans la température

lastBetween(#[Dehors][Sondes Nord][Température]#, -13 months , -12 months)

remplace « start » -13 par -12
et « end »-12 par today ou now

Après il existe une possibilité (d’où ma question) sans virtuel cmd

sans réutilisation
un design de test
un html change l’id de ta sonde


<div class="cmd">Sur une periode de un an 
  le minimal est de <span class="mini"></span>
  le maximal est de <span class="max"></span>
  et il faisait <span class="lastyear"></span>
  le <span class="lastyeardate"></span>
  
	<script>
      var stateTemp=825; // Id à définir

   var date = new Date();
   var d = date.getDate();
   var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
      var hh = date.getHours();
      var mn = date.getMinutes();
      var ss = date.getSeconds();
	var d_1 = (date.getDate()+1);
    var y_1 = (date.getFullYear()-1);  
      
var today = (y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh<=9 ? '0' + hh : hh)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var start = (y_1 + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh<=9 ? '0' + hh : hh)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var end = (y_1+'-'+(m<=9?'0'+m:m)+'-'+(d_1<=9?'0'+d_1:d_1)+' '+(hh<=9?'0'+hh:hh)+':'+(mn<=9?'0'+mn:mn)+':'+(ss<=9?'0'+ss:ss));

      jeedom.history.get ({ 
            cmd_id: stateTemp,
                dateStart:this.start,
				dateEnd:this.today,
/*
   success:  function(resulat) { 
      $('.mini').empty().text(resulat.minValue+" °C");
     $('.max').empty().text(resulat.maxValue+" °C");
      $('.lastyear').empty().text(resulat.data[0][1]+" °C");
     var lastyeardate = new Date(resulat.data[0][0]);
     lastyeardate=lastyeardate.toLocaleString();
         $('.lastyeardate').empty().text(lastyeardate);
     }
  */ 
      })

	</script>
</div>

si tu vas dans la console dev de ton navigateur

dans le code tu enléves

*/ et /*

et te voila avec
1%20an

3 « J'aime »

Merci pour le partage .

A noter que l’on peut aussi se servir de ton code avec le nouveau #plugin-htmldisplay et retrouver le résultat aussi bien sur le dashboard qu’en mobile.

1 « J'aime »

la 1er question c’est quand donc
j’ai cherché à aller plus loin

pour toi
1%20an(bis)


<div class="cmd">Sur une periode de un an 
  le minimal est de <span class="mini">--</span>  (<span class="minidate">--</span>)
  le maximal est de <span class="max">--</span> (<span class="maxdate">--</span>)
  et il faisait <span class="lastyear">--</span>
  l'année derniére à <span class="lastyeardate">--</span>
  <p id="demo"></p>
	<script>
      var stateTemp=825; // Id à définir

   var date = new Date();
   var d = date.getDate();
   var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
      var hh = date.getHours();
      var mn = date.getMinutes();
      var ss = date.getSeconds();
	var d_1 = (date.getDate()+1);
    var y_1 = (date.getFullYear()-1);  
      var hh_1 = (date.getHours()-1); 
var today = (y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh<=9 ? '0' + hh : hh)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var start = (y_1 + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh<=9 ? '0' + hh_1 : hh_1)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));

      jeedom.history.get ({ 
            cmd_id: stateTemp,
                dateStart:this.start,
				dateEnd:this.today,

   success:  function(resulat) { 
      $('.mini').empty().text(resulat.minValue+" °C");
     $('.max').empty().text(resulat.maxValue+" °C");
      $('.lastyear').empty().text(resulat.data[0][1]+" °C");
     var lastyeardate = new Date(resulat.data[0][0]);
     lastyeardate=lastyeardate.toLocaleString("fr-FR",{hour:"2-digit"});
         $('.lastyeardate').empty().text(lastyeardate);

     $( resulat.data ).each(function( index ) {
        var num = resulat.data[index][1];
       
if (num == resulat.maxValue) {
// console.log( $( this ).text(resulat.data[index][1]));
var maxdate = new Date(resulat.data[index][0]);
      maxdate=maxdate.toLocaleDateString("fr-FR",{month: "long", day: "numeric"});
         $('.maxdate').empty().text(maxdate);                                
        }
     if (num == resulat.minValue) {
    //        console.log( $( this ).text(resulat.data[index][1]));
var minidate = new Date(resulat.data[index][0]);
      minidate=minidate.toLocaleDateString("fr-FR",{month: "long", day: "numeric"});
         $('.minidate').empty().text(minidate);                                
        }     
       
     });

      }
})
	</script>
</div>
2 « J'aime »

Bonjour tout le monde et merci @ajja17orange pour ton aide. J’ai crashé ma Raspebrry ces derniers jours, je viens de revenir sur une installation stable !

Je reprends donc ma question, quand tu me dis :

lastBetween(#[Dehors][Sondes Nord][Température]#, -13 months , -12 months)

remplace “start” -13 par -12
et “end”-12 par today ou now

Je dois faire une info virtuelle avec :

maxBetween(#[Cellier][Raspberry-PI-2_Model-B][15_dht22]#, -12 months ,today)

Est ce exact ?

Cela me renvoie 12° alors que malheureusement ma cave a monté à plus de 12° cet été :cry:

Bonsoir,
Si par année courante tu veux dire du 1er janvier à aujourd’hui, alors il faut écrire:
maxBetween(#[Cellier][Raspberry-PI-2_Model-B][15_dht22]#,first day of this year 00:00, now)
Sinon sur les 12 derniers mois, j’écrirai plutot:
maxBetween(#[Cellier][Raspberry-PI-2_Model-B][15_dht22]#,12 months ago, now)
A noter:
today = aujourd’hui à 0h00
now = maintenant

Merci pour ces précisions, cela me paraît correcte mais je pense que mon problème vient d’ailleurs.

La valeur max récupérée est de 11,7°C alors que l’historique montre bien des valeurs largement supérieures cet été.

J’ai essayé cette commande :

maxBetween(#[Cellier][Raspberry-PI-2_Model-B][15_dht22]#, 2019-01-01,now)

Mais cela me retourne toujours 12,7 !!!

Pourtant, il a fait plus de 12,7°C cet été :hot_face:

Si j’utilise ma température d’une sonde EnOcean au lieu d’une sonde DTH22 via Jeedouino, cela fonctionne parfaitement :

maxBetween(#[Salon][Trio2Sys][Température]#, -12 months ,today)

Pourtant, mes deux sondes sont historisées

j’ai intégré un choix liste

2 « J'aime »

C’est super classe comme taf !! Féliciations ! Comment puis je intégrer ça ?
Cela dit, je ne comprends pas pourquoi ma formule retourne toujours 12,7… et j’aimerai comprendre !

Bonjour ajja17, j’essaie d’utiliser ce morceau de code mais j’ai un souci que je n’arrive pas à régler, la date retournée pour la minimale est toujours « 06h30 »… Je n’arrive pas à isoler le problème…

bonjour
mets un @devant mon nom pseudo sinon je vois pas

voici le code que j’utilise maintenant
certainement j’ai fait des modif mais je doute que se soit sur cette partie

<!-- source
https://codepen.io/pavelvaravko/pen/qjojOr/
-->

<body>
    <div class="wrap">
      
<!--Select with pure css-->
      <div class="select">
					<select class="select-text" required>
						<option value="elem_24h" selected>24 heures</option>
						<option value="elem_1ans">1 ans</option>
						<option value="elem_2ans">2 ans</option>
                      <option value="elem_3ans">3 ans</option>
					</select>
					<span class="select-highlight"></span>
					<span class="select-bar"></span>
					<label class="select-label">Mini/Maxi Temp. Ext. </label>
  	</div>
      
<div class="result">Pour cette periode <br/>
  le minimal est de <span class="mini">--</span><br/>(<span class="minidate">--</span>) <br/>
  le maximal est de <span class="max">--</span><br/>(<span class="maxdate">--</span>) <br/>
  et il faisait <span class="lastyear">--</span><br/>
  à <span class="lastyeardate">--</span>

      </div>
	<script>
      var stateTemp=825; // Id à définir     825 
   var date = new Date();
   var d = date.getDate();
   var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
      var hh = date.getHours();
      var mn = date.getMinutes();
      var ss = date.getSeconds();
	var d_1 = (date.getDate()-1);
    var y_1 = (date.getFullYear()-1);
    var y_2 = (date.getFullYear()-2);
	var y_3 = (date.getFullYear()-3);   
  
      var hh_1 = (date.getHours()-1); 
var now = (y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh<=9 ? '0' + hh : hh)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var oneyear = (y_1 + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh_1<=9 ? '0' + hh_1 : hh_1)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var lastday = (y + '-' + (m<=9 ? '0' + m : m) + '-' + (d_1 <= 9 ? '0' + d_1 : d_1)+' '+(hh<=9 ? '0' + hh : hh)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var twoyear = (y_2 + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh_1<=9 ? '0' + hh_1 : hh_1)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));
var treesyear = (y_3 + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d)+' '+(hh_1<=9 ? '0' + hh_1 : hh_1)+':'+(mn<=9 ? '0' + mn : mn)+':'+(ss<=9 ? '0' + ss : ss));

var options = {timeZone: "UTC",hour:"2-digit", minute:"2-digit"};        

history(lastday,now);    
      
      $("select.select-text").on('change', function () {
var data =($(this).val());
     
      if (data == "elem_24h") {
options = {timeZone: "UTC",hour:"2-digit", minute:"2-digit"};        
history(lastday,now);    
   }
 else if (data == "elem_1ans") {
 options = {timeZone: "UTC",month: "long", day: "numeric"};
history(oneyear,now);   
   }
  else if (data == "elem_2ans") {
 options = {timeZone: "UTC",year:"numeric",month: "long", day: "numeric"};
history(twoyear,oneyear);   
   }       
  else if (data == "elem_3ans") {
 options = {timeZone: "UTC",year:"numeric",month: "long", day: "numeric"};
history(treesyear,twoyear);   
   }       
     });  
      function history(start, end) {
jeedom.history.get ({ 

            cmd_id: stateTemp,
         //       dateStart:this.lastday,
		//		dateEnd:this.now,
dateStart:start,
dateEnd:end,  
   success:  function(resulat) { 

      $('.mini').empty().text(resulat.minValue+" °C");
     $('.max').empty().text(resulat.maxValue+" °C");
      $('.lastyear').empty().text(resulat.data[0][1]+" °C");
     var lastyeardate = new Date(resulat.data[0][0]);
     lastyeardate=lastyeardate.toLocaleString('fr-FR',{timeZone: "UTC",hour:"2-digit"});
         $('.lastyeardate').empty().text(lastyeardate);

     $( resulat.data ).each(function( index ) {
        var num = resulat.data[index][1];
       
if (num == resulat.maxValue) {
// console.log( $( this ).text(resulat.data[index][1]));
var maxdate = new Date(resulat.data[index][0]);
      maxdate=maxdate.toLocaleString('fr-FR',options);      
  $('.maxdate').empty().text(maxdate);                                
        }
     if (num == resulat.minValue) {
    //        console.log( $( this ).text(resulat.data[index][1]));
var minidate = new Date(resulat.data[index][0]);
      minidate=minidate.toLocaleString('fr-FR',options);
       $('.minidate').empty().text(minidate);                                
        }     
       
     });

      }
   
})
   }
	</script>
      <style>
        .result {
        font-weight: 400;font-size: 12.5px;text-align: center;
       }    
.mini,.minidate,.max,.maxdate,.lastyear,.lastyeardate {
  font-weight: 600;font-size: 15.5px;
  }
.wrap {
  font-size: 15.5px;
  font-family:'Roboto','Helvetica','Arial',sans-serif;
  font-weight: 400;
  position: absolute;
  right: 0;
  top: 0%;
  width: 100%;
  left: 0;
  margin: 0 auto;
}

/* select starting stylings ------------------------------*/
.select {
	position: relative;
	width: 100%;
}

.select-text {
	position: relative;
	font-family: inherit;
	background-color: transparent;
	width: 100%;
	padding: 2px 2px 2px 0;
	font-size: 15px;
	border-radius: 0;
	border: none;
	border-bottom: 1px solid rgba(0,0,0, 0.12);
}

/* Remove focus */
.select-text:focus {
	outline: none;
	border-bottom: 1px solid rgba(0,0,0, 0);
}

	/* Use custom arrow */
.select .select-text {
	appearance: none;
	-webkit-appearance:none
}

.select:after {
	position: absolute;
	top: 8px;
	right: 10px;
	/* Styling the down arrow */
	width: 0;
	height: 0;
	padding: 0;
	content: '';
	border-left: 6px solid transparent;
	border-right: 6px solid transparent;
	border-top: 6px solid rgba(0, 0, 0, 0.12);
	pointer-events: none;
}
/* LABEL ======================================= */
.select-label {
	color: rgba(0,0,0, 0.26);
	font-size: 18px;
	font-weight: normal;
	position: absolute;
	pointer-events: none;
	left: 0;
	top: 10px;
	transition: 0.2s ease all;
}


/* active state */
.select-text:focus ~ .select-label, .select-text:valid ~ .select-label {
	color: #2F80ED;
	top: -20px;
	transition: 0.2s ease all;
	font-size: 14px;
}

/* BOTTOM BARS ================================= */
.select-bar {
	position: relative;
	display: block;
	width: 100%;
}

.select-bar:before, .select-bar:after {
	content: '';
	height: 2px;
	width: 0;
	bottom: 1px;
	position: absolute;
	background: #2F80ED;
	transition: 0.2s ease all;
}

.select-bar:before {
	left: 50%;
}

.select-bar:after {
	right: 50%;
}

/* active state */
.select-text:focus ~ .select-bar:before, .select-text:focus ~ .select-bar:after {
	width: 50%;
}

/* HIGHLIGHTER ================================== */
.select-highlight {
	position: absolute;
	height: 60%;
	width: 100px;
	top: 25%;
	left: 0;
	pointer-events: none;
	opacity: 0.5;
}
</style>

</div>
      </body>

joue avec le retour console de ton navigateur pour voir se qu’il en retourne
un mini tuto
en suivant les liens tu trouveras 2 méthodes pour recherche date

tu peux voir via scénario code aussi

@ajja17orange merci beaucoup pour ton retour, je vais regarder ça.

J’ai un peu creusé mon problème et j’ai trouvé un truc étrange, en fait la valeur minimale sur un an a été relevée le 05/12/19 à 06h30, c’était -1.8°C mais quand je regarde la courbe de température en historique, je n’ai pas de relevé à 06h30, juste à 06h puis à 07h. De plus la température relevée à 06h était de -1.65°C…

Donc la température de -1.8°C a été relevée et doit être stockée dans jeedom, mais elle n’apparait pas dans les courbes, le problème vient peut être de là…

test via scenario code (api php)
pour commencer
si ok avec l’html

ça peut être l’historique via highchart (courbe) si tu as paramètre moyen,min,max ou aucun des fois que

si non
cherche via console en déterminant le jour start et end

tu peux aussi avoir un soucis bdd
genre des , et des . ou des valeurs vides, voir des caractères bizarre
(sur 4 ans j’avais des erreurs)
des vieilles date dans la table history en double avec history.arch

si aussi ok
c’est mon html « script » qui cherche le mini mais la vu qu’il reprend la bdd ??
mais je ne suis pas sûr à 100% mais chez moi mini/max ok

je pourrais pas t’aider plus
a la suite de se html j’ai optimisé ma bdd pour accès plus rapide de cette valeur :

  • grand ménage via duplication avant différent test
  • demi-degrė est un changement de temperature, et une unité après virgule.
  • moyenne toutes les 20mn lors de l’archivage j-1 que je fais via scénario

avec la v4 il y a eu une optimisation archivage j-1 mais ça touche pas tes vieilles valeurs. bien qu’il y a une fonction nettoyage dans configuration jeedom

si l’historique bdd t’intéresse regarde les sujets sur l’installation d’admirer ou copie d’historique

Merci pour ton aide, ça dépasse largement mes compétences et comme c’est quelque chose de superflu je vais me contenter de simplicité !

j’ai appris avec jeedom


ça c’est facile à reproduire

dans la valeur une unité
un calcul en valeur
et jamais repeter

(#value#-floor(#value#))<=0.25?floor(#value#):(#value#-floor(#value#))>=0.75?ceil(#value#):floor(#value#)+0.5


tu sais la chose faisable, si un jour …

Ok merci c’est très gentil de prendre le temps d’expliquer. Le temps c’est malheureusement ce qui me manque pour pouvoir étudier ça sérieusement, un jour peut être !

Bonjour,
Il me semble que je rencontre un peu le même problème…
J’ai 4 ans d’eedomus derrière mois et je dois avouer que ça me semblait moins « buggé ».
Je suis probablement coupable car je n’ai que 2 mois d’expérience sous Jeedom mais j’avoue que l’on passe son temps à remettre les choses en place :slight_smile:

Pourriez vous me dire pourquoi la valeur retournée par Jeedom avec la formule : Minbetween est de 291 kWh (qui finalement correspond à la valeur mini du mois, sauf si l’année commence au 1er juin… :thinking:)

alors que mon historique annonce 0,21kWh au plus bas.

Âme charitable : merci d’avance ! :slight_smile: