Valeur max et min sur une année

je me réponds à moi-même, ça pourra aider les autres :slight_smile:
Il faut utiliser « first day of january » et non : « first day of this year »

Bonjour,

Question bête, je cherche à trouver la date d’une valeur de variable retournée par la fonction max()/min().
C’est possible dans jeedom d’avoir à la fois la valeur et l’heure de la mesure ?

Pour faire simple, j’ai un virtuel qui contient des stats de températures (tendances, min, max etc) et je voudrais avoir l’heure de la valeur max retournée…

J’ai cherché avec des tonnes de mots clés mais j’ai l’impression que c’est pas possible hormis passer par du code.

Merci par avance pour votre aide :slight_smile:

Salut

je poste ici car ce que je recherche s’en approche je voudrais affiché dans un virtuel la valeur max parmi plusieurs équipements.
Concrètement je viens de domotiser ma VMC, pas de pb un scénario gère le déclenchement celons le taux d’humidité de plusieurs sonde, mais comment afficher seulement la valeur max parmi mes 10 sondes

bonjour pour info « avec du retard » il existe une possibilité en créant la fonction
dans « user.function.class.php »

"minMaxDate(min,#[Dehors][Sondes Nord][Température]#,yesterday, now, d/m/Y H:i:s )  minBetween(#[Dehors][Sondes Nord][Température]#,yesterday, now)"

Je vais évaluer : «  » 07/11/2021 06:55:12 " -0.5"
Résultat : «  » 07/11/2021 06:55:12 " -0.5"

    public static function minMaxDate($minOrMax, $_cmd_id, $start, $end,$dateFormat)  {
date_default_timezone_set("Europe/Paris");



$startEval = date('Y-m-d H:i', ereg("[0-9]{4} [0-9]{4}", $start) ? DateTime::createFromFormat('md Hi', $start)->getTimestamp() : strtotime($start)); 
$endEval = date('Y-m-d H:i', ereg("[0-9]{4} [0-9]{4}", $end) ? DateTime::createFromFormat('md Hi', $end)->getTimestamp() : strtotime($end)); 
 $cmdId = cmd::byString($_cmd_id)->getId(); 
      $all = history::all($cmdId, $startEval, $endEval);
      $ali = history::getStatistique($cmdId, $startEval, $endEval)[$minOrMax];
      if(count($all) == 0) echo "Pas de valeurs sur la période donnée";

$current = $all[0];
$current = $all[0];
for ($i = 0; $i < count($all); $i++) {
  $v = $all[$i];
  if($minOrMax == "max" && $v->getValue() >= $current->getValue())
  	$current = $v;
  if($minOrMax == "min" && $v->getValue() <= $current->getValue())
  	$current = $v;
} 
 return date ($dateFormat, strtotime($current->getDatetime()));   
      
        }

issu du vieux forum
https://forum.jeedom.com/viewtopic.php?t=41804

bonjour,

mais comment afficher seulement la valeur max parmi mes 10 sondes

passe par le testeur d’expression
en php tu as max
max(0,5,10)

Résultat : 10

a la place de 0,5,10 met les expressions max de tes sondes

max(maxBetween(#[Dehors][Sondes Serres][Température]#,yesterday, now),maxBetween(#[Dehors][Sondes Sud][Température]#,yesterday, now),maxBetween(#[Dehors][Sondes Nord][Température]#,yesterday, now)) 

Résultat : 26

"maxBetween(#[Dehors][Sondes Serres][Température]#,yesterday, now) / maxBetween(#[Dehors][Sondes Sud][Température]#,yesterday, now) / maxBetween(#[Dehors][Sondes Nord][Température]#,yesterday, now)"

Résultat : 26 / 22.5 / 6.5

aprés soit tu crées une info et tu colles l’expression
(sache que chaque modif de tes sondes engendrent une utilisation de ressource)
donc si tu tournes sur une machine puissante ou que cette info est importante.
mais 10 sondes !

sinon un scénario et toutes les heures ou demi heure un event ou une variable, ou dans ton scenario selon comment tu l’as fait.

hs : pour info on peux faire un declencheur de scenario avec plusieurs condition « fonction »

(#time#>0630 and #time#<2030) and (#[Salle de bains][Sondes Salle de bains][Humidité]# > 60)

trés trés vieux scenario.qui t’évite une multitude de SI

aprés il y a via api js mais je te laisse faire :slight_smile:

2 « J'aime »

Pourquoi avoir tague plugins pour ce post ?
@olive tu peux corriger pour plus de clarte ?
Merci

Bonjour,

Impeccable cela fonctionne

2 messages ont été scindés en un nouveau sujet : Information minimale de température