Bonjour,
On peut savoir comment? car depuis cette semaine c’est une 4.3 qui est en stable.
Pouvez-vous montrer la page santé?
Bonjour,
On peut savoir comment? car depuis cette semaine c’est une 4.3 qui est en stable.
Pouvez-vous montrer la page santé?
ben juste avant que la 4.3 soit dispo , peut être dimanche en fait .
EDIT:
et la page santé :
le nok pour le réseau je l’ai depuis toujours , ça viens de ma config réseau , mais tout fonctionne correctement de ce coté .
Salut,
Si tu as un problème avec Jeedom alors moi aussi
Sachant que l’historique est simple … des petits coups de 1 durant peu de temps et qu’il est donc impossible que mon portail soit resté ouvert 471 minutes.
Version : 4.1.20
Pas chez moi non
contant d’apprendre que je ne suis pas le seul ^^ et j’ai aussi testé avec et sans les espaces , et avec et sans majuscule à today dans le doute .
et si vous mettez today midnight
ça change quelque chose ?
non, même résultat qu’avec today
EDIT: je viderais bien toutes les données en cache mais je ne l’ai jamais fait et j’ai un peut peur de perdre des données que je considère importante . Qu’est-ce que je risque vraiment ?
ça m’étonnerai…
Bug remonté au moins depuis avril 2021 ici
Je l’ai encore personnellement rappelé (via le support) il y a peu.
Réponse : « De mémoire on a deja vu ca et c’est corrigé en beta depuis quelques mois. »
lol merci de cette intervention mais sans vouloir casser tes délires, ces 2 fonctions ont plusieurs fois évolué depuis avril 2021 notamment et plus particulièrement en avril 2022 pour duration et en aout 2022 pour durationBetween.
Donc le coup de « c’est pareil depuis 2021 » parait simplement impossible…
Edit : D’ailleurs, je ne l’invente pas, le titre du présent sujet parle bien de changement de comportement !
Quand je parle de changement de comportement je veux dire que je me demandais si c’était un changement comportement voulu .
Mais bref , en tout cas duration bug clairement chez moi , et pas tout le temps dans le même sens , j’ai testé sur une autre commande et au lieu de me donner une réponse erronée supérieure elle à mis une réponse inférieure , égale à zéro en fait si ça peut peut être servir aux dev .
J’ai regardé les 2 fonctions et tenté de comprendre pourquoi ces 2 fonctions ne sont pas « identiques » et je ne comprends pas la raison.
Puisque dans la duration les seules choses qui me semble changer sont :
Du coup en recréant une fonction « custom » basée sur le début de la duration et le calcul de la durationBetween je retrouve les mêmes (bons) résultats.
public static function durationBison($_cmd_id, $_value, $_period = '1 hour', $_unit = 60) {
$cmd_id = str_replace('#', '', $_cmd_id);
if (!is_numeric($cmd_id)) {
$cmd = cmd::byId(str_replace('#', '', cmd::humanReadableToCmd($_cmd_id)));
} else {
$cmd = cmd::byId($cmd_id);
}
if (!is_object($cmd) || $cmd->getIsHistorized() == 0) {
return '';
}
$dates = self::getDatesFromPeriod($_period);
$_startTime = $dates[0];
$_endTime = $dates[1];
$_value = str_replace(',', '.', $_value);
$_decimal = strlen(substr(strrchr($_value, "."), 1));
$histories = $cmd->getHistory();
$duration = 0;
$lastDuration = strtotime($histories[0]->getDatetime());
$lastValue = $histories[0]->getValue();
foreach ($histories as $history) {
if ($history->getDatetime() >= $_startTime) {
if ($history->getDatetime() <= $_endTime) {
if ($lastValue == $_value) {
$duration = $duration + (strtotime($history->getDatetime()) - $lastDuration);
}
} else {
if ($lastValue == $_value) {
$duration = $duration + (strtotime($_endTime) - $lastDuration);
}
$lastDuration = strtotime($history->getDatetime());
$lastValue = round($history->getValue(), $_decimal);
break;
}
$lastDuration = strtotime($history->getDatetime());
} else {
$lastDuration = strtotime($_startTime);
}
$lastValue = round($history->getValue(), $_decimal);
}
if ($lastValue == $_value && $lastDuration <= strtotime($_endTime)) {
$duration = $duration + (strtotime($_endTime) - $lastDuration);
}
return floor($duration / $_unit);
}
Surement quelque chose qui m’échappe parce que j’ai pas regardé ça très longtemps et que je n’ai pas un gros niveau mais … sais-tu pourquoi une telle différences dans le traitement de l’addition de la variable $duration ?
De 00H00 à 00H58 ==58
DE 15H42 à 17H33 = 111
ben oui tu n’a clairement pas le bug tu est sur quelle version stp ? parceque on est au moins deux à l’avoir en 4.1 et 4.2
OK mais en l’occurrence on est en 4.3 donc oui il peut potentiellement y avoir des erreurs sur les versions antérieures corrigée sur la dernière version.
Oui je me doute que vous n’allez pas micro-patcher la 4.2 alors que la 4.3 est sortie , mais entre ça et les bugs que je viens d’avoir aujourd’hui avec jmqtt qui ne recevait plus rien de mes appareils (qui gérent mon chauffage … ) que j’ai du ré-intégrer à la mains cette après midi , je suis pas hyper chaud pour passer en 4.3 là de suite …
tampi hein je vais passer tout les duration en durationbetween , mais si une bonne âme passe dans le coin et à le code qui le démange je pense que ça vaut le coup de rappeler que je suis pas le seul .
Si tu veux patcher toi même ton jeedom il suffit de remplacer le code de la fonction par celui de la 4.3 sur ton install
très bonne idée ! je fait un snapshot et je tente ça dès demain merci !
OK avant que tu casses tout , la fonction est là (pas la même ligne en 4.2) :
core/scenarioExpression.class.php at alpha · jeedom/core (github.com)
Par contre il faudra aussi ajouter la fonction byCmdIdAtDatetime
à la classe history car c’est une nouveauté de la 4.3 :
merci
oui ça je ne l’aurais clairement pas fait et pour ce qui est de tout péter vu que je suis un expert dans le domaine je compte travailler sur un backup bien entendu ^^