J’ai créé un virtuel avec la formule suivante, mais je ne comprends pas pourquoi ça ne fonctionne pas :
lastChangeStateDuration(#[Maison][Linky Virtuel][TotalHPHC]#,((#[Maison][Linky Virtuel][TotalHPHC]#)-10))
J’ai aussi essayé avec un value pour le 2ème argument
lastChangeStateDuration(#[Maison][Linky Virtuel][TotalHPHC]#,(value(#[Maison][Linky Virtuel][TotalHPHC]#)-10))
Mais sans plus de succès. Une idée ?
Le but étant d’avoir précisément le temps qui s’est écoulé entre maintenant et la valeur de mon index « il y a 10 watts » dans le but d’avoir une conso instantanée
En fait il utilise non pas le nom de l’équipement mais la valeur retournée (!). J’ai vu qu’on pouvait mettre directement l’id de l’équipement à la place de son nom, j’ai donc essayé :
lastChangeStateDuration(720,value(720)-10)
ce qui me donne :
Alors c’est vraiment assez spécial comme tentative d’utilisation. Franchement je crois pas que tu puisses arriver à utiliser cette fonction pour faire ce que tu veux.
Et même si on trouve un moyen (ce que je ne pense pas) … Imaginons que la valeur actuelle de ta commande est 1500. Peut-être que la valeur précédente aura été 1480 du coup l’historisation de Jeedom n’aura jamais la valeur 1500-10=1490 donc lastChangeStateDuration retournera -1 et ça ne fonctionnera pas.
Fait donc un scénario que tu déclenches lors du changement de valeur de #[Maison][Linky Virtuel][TotalHPHC]# et enregistre/calcul les informations que tu souhaites ça sera plus fiable.
Sans décortiquer il faut utiliser : #timestamp# pour enregistrer le moment ou le scénario se déclenche
event pour enregistrer :
la valeur précédente de #[Maison][Linky Virtuel][TotalHPHC]# dans une commande d’un virtuel (ou bien utiliser variable)
la valeur précédente du timestamp dans une commande d’un virtuel (ou bien utiliser variable)
Reste un calcul à faire entre cette ancienne valeur, la nouvelle et la différence de timestamp.
Tu as raison, je pensais avoir toutes les valeurs de 1 en 1 sur les index, mais non, ça peut sauter des valeurs, du coup ça ne fonctionne pas.
Ceci dit, ça m’a permit de constater qu’il ne fallait pas utiliser le nom de la commande pour cette fonction mais son id pour la faire fonctionner.
Bon, je pense être arrivé à ce que je veux avec :
3600*(value(720)-lastBetween(720, -5 min, -1 min))/lastChangeStateDuration(720,lastBetween(720, -5 min, -1 min))
Par contre directement dans une info virtuel, ça ne se met pas à jour, du coup j’ai créé un scénario avec comme déclenchement ma commande #[Maison][Linky Virtuel][TotalHPHC]# et qui vient mettre à jour l’info du virtuel