Calcul sur 2 valeurs de l'historique

Bonjour,
J’ai une valeur qui est historisée toute les minutes par un capteur. Je cherche un moyen pour calculer la différence de cette valeur entre Now et celle de la minutes précédente.

Je n’arrive pas à trouver la fonction de calcul (comme statistics par exemple) qui me permettrait de calculer cette différence entre ces 2 valeurs et surtout la manière d’identifier le start et end qui correspondrait à now et (now-1minute) (si on devait utiliser cette fonction statistics, mais rien ne me dit que c’est la mieux adaptée.
En attendant j’ai fait un scénario qui sauvegarde ma valeur toute les minutes dans une variable, mais c’est dommage de ne pas exploiter l’historisation

Si quelqu’un a une idée, je serai ravi.

Merci

Salut

https://doc.jeedom.com/fr_FR/core/4.2/scenario

  • statistics(commande,calcul,période) et statisticsBetween(commande,calcul,start,end) : Donnent le résultat de différents calculs statistiques (sum, count, std, variance, avg, min, max) sur la période (period=[month,day,hour,min] ou expression PHP) ou entre les 2 bornes demandées (sous la forme Y-m-d H:i:s ou expression PHP)

En bloc code:

Merci je sais lire la doc et ça a été mon premier reflexe. Mais si tu es capable avec ça de me dire la valeur à mettre pour period pour récupérer la précédente minute, alors tu es un chef ! perso, j’ai beau essayer avec cette faible doc, je ne trouve pas ce que je cherche. et pour info, quand on clique sur ‹ Expression PHP ›, on tombe sur Erreur 404… donc la doc, comment dirais je. en fait je préfère ne rien dire.

je vais essayer ça en adaptant pour mon besoin. Merci.

Salut,

Tu as essayé avec la valeur 1 minute pour la période ?

oui mais non ! ça serait si simple !si au moins on avait une doc complète qui donnait des exemples concrets…

Alors je te confirme que dans le code du core c’est « si simple » donc l’origine de ce qui t’ennui doit être ailleurs…

Effectivement la documentation PHP a évolué, celle de Jeedom doit suivre ce sera chose faite rapidement.

D’autre part, il faudrait être plus précis dans ce que tu fais et ce que tu obtiens en retour qui ne correspond pas à ce que tu attends.

bah j’ai essayé ce que tu m’a proposé : period=1 minute et ça ne marche pas. je ne peux pas etre plus précis qu’avoir fait ce que tu m’a toi même proposé.

Je suis persuadé que tu peux être bien plus précis que « ça ne marche pas ».

Et bien je n’obtiens pas le résultat que cherche à avoir, à savoir la différence entre la valeur à 1 minute d’intervalle.

Ca reste très succinct au niveau des explications mais je doute fort que ce soit la variance que tu cherches à obtenir.

As-tu bien une valeur en historique dans la minute précédente déjà ? Cette valeur en historique n’est pas arrondie ce qui pourrait éventuellement poser problème sur un calcul à la minute ? Sauf erreur c’est plutôt quelque chose dans cette idée que tu cherches à obtenir :

#[Maison][consommation electrique][index]# - min(#[Maison][consommation electrique][index]#,1 minute)

Oui mon historique est activé et une nouvelle valeur est historisée toute les minutes.
Exemple :

minute 0 : index = 150
minute 1 : index = 155

je veux trouver le calcul qui me renverra la différence entre les 2 index, à savoir la valeur 5. C’est peut être pas variance, qu’il faut utiliser, c’est peut être pas la command statistics qu’il faut utiliser… .C’était tout l’intéret de ma question qui restait ouverte a différentes solutions.

Salut,

Faudrait partir sur lastBetween et faire une soustraction avec la valeur de #ta_commande# actuelle.

Pour récupérer la valeur il y a 1 minute, par exemple :

lastBetween(#ta_commande#,2 min ago, 1 min ago)
1 « J'aime »

Merci beaucoup, c’est exactement ce que je cherchais :
(#ta_commande# - lastBetween(#ta_commande#,2 min ago, 1 min ago)) me donne exactement la valeur que je cherchais

1 « J'aime »

Une bonne lecture, sans etre un chef, aurait permis de voir qu une fonction avec debut et fin etait egalement proposée … et que definir maintenant et maintenant-1min se trouve facilement sur le net :wink:

(Apres je partais aussi, a tord, sur « variance ». Mais c est un autre sujet!)

De rien. Tu peux fermer le sujet en cliquant sur la solution si c’est ok pour toi.

(La bonne solution du coup ! Ce dernier msg de Bison n est pas le msg qui pourra aider un autre utilisateur :wink: )

Pour le coup je trouve que c’est dommage que la formule propose sum, count, variance, etc…mais pas la différence.
Ou est ce qu’on peut proposer une amelioration ?

1 « J'aime »

Sauf erreur il n’existe rien d’équivalent dans les fonctions d’agrégation SQL. Sinon la ligne correspondante dans le core se trouve ici :