dans un scénario j’ai deux variables Arrivée et Départ qui sont deux heures au format #time#, je voudrai a la fin de ce scénario faire une comparaison entre ces deux valeurs pour afficher le temps entre ces deux variables ex: Départ - Arrivée = le temps que je veux calculer, mais je ne trouve pas la solution qui doit être assez facile pourtant…
j’utiliserai plutôt la variable #timestamp# avec une simple soustraction des 2 valeurs, tu auras ainsi une durée en seconde.
Le pb du #time#, c’est que tu ne gereras pas les changements de jour
0001-2359 = -2358min et pas 2min
Le plus simple est la réponse de Norbert, on est pas mal à s’être cassé la tête avec une fonction (assez récente) de Jeedom qui est là pour répondre à ton besoin.
C’est time_diff, extrait de la documentation :
time_diff(date1,date2[,format, round]) : Permet de connaître la différence entre deux dates (les dates doivent être au format AAAA/MM/JJ HH:MM:SS). Par défaut, la méthode retourne la différence en jour(s). Vous pouvez lui demander en secondes (s), minutes (m), heures (h). Exemple en secondes time_diff(2019-02-02 14:55:00,2019-02-25 14:55:00,s). La différence est retournée en absolu, sauf si vous spécifiez f (sf, mf, hf, df). Vous pouvez aussi utiliser dhms qui ne retournera pas exemple 7j 2h 5min 46s. Le paramètre round, optionnel, arrondit à x chiffres après la virgule (2 par défaut). Ex: time_diff(2020-02-21 20:55:28,2020-02-28 23:01:14,df, 4).
Il doit même y avoir plus simple, si tu historise cette donnée, avec un truc du genre « durée entre deux changement d’état » qui doit t’affranchir de tout calcul.
Si j’utilise #timestamp# pour incrémenter mes deux variables, puis je faire la soustraction a la fin du scenario de type variable(depart) - variable(arrivée) ?
Ou sinon comment faire cette opération.
ou souhaites-tu utiliser cette soustraction (ou cette durée), dans un autre scenario, dans une commande ?
Le mieux est que tu expliques le besoin, et pas forcement la solution que tu as imaginé.
ex : je souhaite recevoir une notification lorsque mon chien rentre qui m’indique le durée totale de la sortie
Je sais pas quelle serait la meilleure pratique, je veux simplement faire le calcul et l’afficher dans une variable ou un virtuel.
Le besoin c’est que mon dogsitter me facture 2h de ballade/jour et que je me suis rendu compte hier en rentrant a midi du taf que la ballade durait 15 min…
Alors je veux afficher ce temps pour lui envoyer par mail chaque jour de balade
Du coup, sur la premiere boucle SI, plutôt que d’avoir une variable arrivée DogSitter, tu mets une variable durée_balade, dont le contenu est #timestamp# - variable(depart_dogsitter)
(je considère que Départ = depart pour la promenade et Arrivée = retour de la promenade)
Tu peux aussi mettre cette durée dans un virtuel si tu souhaites ensuite l’afficher dans un design ou sur ton smartphone
si tu souhaites la transformer en min : floor(variable(duree_balade)/60)
Un virtuel présence dogsitter et trois variables (j’aurais pu en mettre seulement deux)
La raison pour laquelle j’ai utilisé un virtuel, c’est que mon système de serrure est un simons voss, la personne qui ouvre doit faire son code ouvrir la serrure et refaire son code quand il sort pour la fermer, de ce fait le scénario se serait lancer quand le dogsitter repartait et le calcul temporel n’aurait pas été juste.
Donc tout ça pour dire que dans mon virtuel je désactive/active mon scénario sur le on et le off ( le sleep sera à affiner selon la durée entre son entrée et sortie.)