StateChanges incompréhensible

Bonjour @Loic / @kiboost

Jeedom v3.3.36

Ayant vu récemment 2 messages liés à la fonction statechanges, je regarde de mon coté.

Situation : je veux afficher le nombre de changement d’état (passage à 1) de mon module de chaudière (celui-ci est bien historisé).

stateChanges(#[Chauffage][Module chaudière][Etat]#,1,Today) donne 1110 par exemple (valeur qui s’incrémente d’heure en heure de 2)
alors qu’avant (vue ici par exemple https://www.jeedom.com/forum/viewtopic.php?f=89&t=32193&p=645539&hilit=statechanges#p558230 ) cette même commande donnait bien le nombre de changement d’état de ce module pour la journée.

  • c’est comme si la période (today) n’était pas prise en compte.
  • Le résultat attendu aurait du être 11 par exemple à cet instant.

Alors, je ne sais pas si c’est un BUG ou pas, mais je ne comprend pas du coup la documentation et ou l’usage de cette commande (comme 2 messages en 2 jours).

Si vous avez une idée, merci.

Bienvenu au club toute ces fonctions sur les états et historique sont pas de moi mais d’un utilisateur qui n’est plus la. Je ne les ai jamais comprise et suis incapable de maintenir le code.

J’essayerai de jeter un oeil … Mais pas tout de suite :croissant:

Tu vas te faire du mal c’est complètement incompréhensible et surtout tu touche a un truc ya 200 utilisateurs qui vont te dire ca corriger et 200 autres qui te diront ça marche plus

L’essentiel c quand même que ça marche comme le dit la doc. Je vais déjà vérifier ça avant d’y toucher :thinking:

Bon, 1er retour, today ne marche pas ! Il prend l’epoc (1970) donc en gros tout l’historique.

Pour le reste çà me semble marcher normalement

stateChanges(#[Salon][Prise Salle][Etat]#, 1, Today) → NOK

stateChanges(#[Salon][Prise Salle][Etat]#, 1, 1 day) → OK

today étant à partir de minuit, et 1 day les dernières 24h, ce c’est pas la même chose en effet.
Je fais essayer de fixer le today.

Par contre je n’ai pas vue de changement récent là dessus :thinking:

Bon je confirme, en regardant le code ne je vois pas comment « today » a pu marcher.

Dans ce cas il vaudrai mieux utiliser stateChangesBetween entre minuit et maintenant.

Si @Loic est ok je pousse un fix pour que le today et yesterday fonctionnent avec stateChanges, c’est pas grand chose.

Je suis pas convaincu today c’est pas comme 1 day enfin yen a un c’est une période et l’autre une date

Oui et non, today c’est :

donne moi le nombre de changement aujourd’hui
Donc entre minuit et maintenant, c’est bien une période dans ce cas.

çà me semble logique de pouvoir l’utiliser sur cette fonction. Et c’est 3 lignes de php, l’impact est négligeable et que sur cette fonction.

idem pour yesterday.

Quand on se sert de stateChanges çà peut être très utile justement.

Mais on est bien d’accord today yesterday ou day (sans préciser 1 day) n’a jamais marché sur cette fonction !

C’est en alpha 4.1

Mais c’est bel et bien nouveau :

day today et yesterday n’ont jamais fonctionné avec cette fonction. C’est maintenant le cas

Bonjour @kiboost

Merci pour la correction.

Question : Est-il possible de l’avoir aussi pour la v3 next de Jeedom ?

Non je pense pas, même en 4.0 ce sera pas dispo, trop risqué à ce stade.

Je regarde pour le faire aussi sur les autres fonctions utilisant une période:

duration() statistics() tendance() min() max() average()

Ok, mais pour moi, cette fonction marchait avant, j’ai un exemple issue de chez moi ici :
https://www.jeedom.com/forum/viewtopic.php?f=89&t=32193&p=645539&hilit=statechanges#p558230

stateChanges avec today, day ou yesterday renvoi actuellement la totalité de l’historique. enfin depuis l’epoc dont 1970, car il ne comprend pas today

Oui je le constate et j’ai lu le fil ou tu l’indiquais.

Mais regardes bien mon exemple, il est issue d’un copier / collé de la version de Jeedom du jour ou j’avais fait cette réponse. Et ce jour là, il me donnais bien la bonne réponse pour les 0 et pour les 1, il manquais le « en cours ».

Sinon, c’est encore une histoire de marmottes !

C’est possible que çà marche si ton historique n’a que la dernière journée, ou conserver 1 mois et tu test le 1er, des cas particuliers quoi.

Ok, et puis de toute façon, c’est maintenant OK (nouveau j’entend bien hein).

  • Merci pour le travail accomplis !

En v4.1 :

  • Scénario : stateChanges() accepte maintenant la période today (de minuit à maintenant), yesterday et day (pour 1 day).
  • Scénario : Fonctions statistics(), average(), max(), min(), tendance(), duration() : Bugfix sur la période yesterday, et accepte maintenant day (pour 1 day).
4 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.