Additionner plusieurs durées entres elles

Bonjour,

dans un virtuel j’utilise time_diff pour comparer le temps et créer une durée.

A chaque fois qu’une durée est générée, je la sauvegarde à 3 reprises (les suivantes sont non prise en compte).

Donc je me retrouve avec ces 3 durées au même format :

1h11
18min
6min

Ces durées aurait pu être n’importe lesquelles évidemment.

Maintenant il me faut les additionner, et je tente de procéder avec :

time_op(#[DUREE 1]#,#[DUREE 2]#,#[DUREE 3]#)

Avec le format 1200 ou 12h00 je n’ai pas le résultat escompté.

J’ai soit 1h29 en mettant le format 1200 pour toute les durées, en faisant l’opération, puis en repassant l’opération au format 12h00. Soit j’ai -1 en utilisant les durées au format 12h00 dans l’opération.

1h29 qui est faut puisque je devrais obtenir 1h35.

Pour résumer, j’aimerais additionner 3 durées (pour 1 journée) mais aussi 7 durées (pour une semaine).

J’ai une solution qui ne m’enchante pas du toute c’est d’additionner toujours par deux. Mais ça créerait trop de commandes.

Je pense bien que j’utilise mal « time_op » alors si quelqu’un à la réponse pour me débloquer, c’est gentil :slight_smile:

time_op(time,value) : Permet de faire des opérations sur le temps, avec time=temps (ex : 1530) et value=valeur à ajouter ou à soustraire en minutes.

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

Bonsoir,
Jette un oeil sur la doc des scénario : lien indiqué par Jeandhom
Sur le time diff il est indiquer comment avoir un retour en secondes.
Tu additionnes les 3 temps en secondes, puis tu les converti en j/h/mn/s avec l’outil qui va bien (3 lignes en dessous du time diff).
Bon essais !
ps: tu peux aussi les avoir en minutes, les additionnés et avoir un temps en minutes si tu veux l’utiliser dans un « A ».
Tu peux aussi convertir les minutes au format hhmm (avec un peu de math pas méchante) pour mettre de résultat dans un « DANS », bref c’est infini, ça dépends de se que t’en fait apres…

J’ai regardé et je ne vois pas.

Je pense que je dois séparer les heures des minutes, pouvoir transformer les heures en minutes et pouvoir additionner que des minutes ensemble

Puis transformer le résultat en heure. Mais je ne trouve pas

Vous ne voyez pas où se trouve l’explication du time_diff ?
Ou vous voyez où elle est mais ne comprenez pas l’explication pour avoir le résultat en seconde ?

Si tu veux vraiment passer par les hhmm, tu peux regarder ici comment transformer le temps en minutes, les additionner, puis revenir au forma hhmm, mais honnêtement c’est pas le chemin le plus simple…

Qu’est ce qui bloc dans l’explication du time_diff, pour avoir le résultat en secondes ?

Bonjour,

j’explique dans ma demande que je connais déjà toute ces formules. j’utilise déjà time_diff dans des virtuels et time_op

j’ai trois durées en clair que je transforme en brut (hhmm), je suis déjà à 6 commandes.

Ensuite, la seule chose que j’ai réussi a faire un info 1: time_op entre la 1er durée brute et la 2eme durée brute et une info 2 entre le Time op 1 (info 1) et la 3eme durée brute

Obtenant m un résultat brut
Je fais apparaître avec formatTime le résultat clair

Je suis en tout à 9 commandes pour 1 jour et j’en ai 6 autres. Donc je voulais savoir si quelqu’un avait une solution plus simple pour en réduire les commandes.

J’en ai une dixième pour faire un time op entre l’info 1 time op et l’info 2 time op car j’ai eu un soucis d’opération au moment où j’obtiens la durée 2. j’arrive pas a encore a expliquer donc je travaille encore dessus.

(Puis j’ai remplacé linfo d’origine qui donne l’info clair pour obtenir la durée totale totale pour la mettre sur cette 10eme commande)

Bref tout ça pour dire, qu’en plus des infos qui prenne les valeurs temps 1 temps 2 pour calculer des durées, j’ai un sacré tas de commande. Donc si quelqu’un avait une meilleure solution j’étais preneur.

J’ai pris soin d’expliquer le problème que je rencontrais en précisant que je connaissais déjà certaines commandes.
Si il faut joindre des screens je peux le faire même si je pensais que l’écrit suffisait pour ce sujet.

Malgré ça, je vois bien en vous une envie de m’aider.

Oui, je veux bien des vues, et à quoi ça sert, car moi j’avais compris que tu n’arrivais pas à additionner les 3 temps (avec le time-op)…
Du coup, tu arrives à les additionner ou pas ?
Car c’est ton titre !!

A noter
Quand j’ai plusieurs fois un truc a faire (et qu’on peut pas faire une boucle avec un tag qui incremente)
Je le fais une fois dans un bloc action
Puis je le colle x fois
Et vais changer les valeurs qui diffèrent
Ca fait gagner du temps

Puis j’aurais (lundi + mardi = résultat), (résultat + mercredi = résultat), (résultat + jeudi = résultat), (résultat + vendredi = résultat), (résultat + samedi = résultat), (résultat+ dimanche = résultat)

7
+
9*6 = 61 commandes dans un seul virtuel. J’ai envie d’abandonner de suite ^^

Je prendre une date de départ
Puis un temps après, une date de retour.
Je comprends les deux et j’obtiens une durée

Dans un scenario, le retour déclenche celui-ci, je teste quel jour on est et je prends la durée.

Le scénario peut le faire 3 fois par jour

Ensuite jadditionne ces temps pour donner une durée total par jour

Puis le dimanche j’additionne les 7 jours écoulés , je reset le virtuel et je préserve la précédente durée total

Hello,

envoi direct cette info (en secondes) dans une info virtuel historisé, sans contrôler le jour.
il te suffira ensuite d’utiliser les fonctions de calcul de jeedom :
statistics(commande,calcul,période) & statisticsBetween(commande,calcul,start,end)

Merci d’apporter votre aide

Comment prendre l’info #time# en seconde?

Comment faire pour Jeedom calcul la dernière différence entre l’avant dernier déclenchement historisé et le dernier ?

Je tenterais de voir si cette commande peut être utile dans mon usage

Mais la prise de commande temps -1 et la commande temps 0, le time diff c’est pas le plus gros du virtuel et ne prend pas de place dans le scénario.

Le plus gros c’est vraiment les transformations et opérations entre la durée 1 et la 2 et le résultat de ces deux avec la durée 3

Et donc pourquoi ne pas tout calculer en secondes ? Avec des time-op qui renvoient des secondes ?

Ça me ferait remettre en heure pour la lecture

Mais oui j’ai exploré cette piste mais je n’ai pas trouvé comment transforme HHhMM ou HHMM en minute. Car c’est vrai plus la piste des minutes que j’ai exploré car celle ci était possible à mon sens.

Qu’est-ce qui déclenche le fait que tu prend une date de départ ? et « un temps après, une date de retour. » c’est programmé ou c’est aussi un déclencheur ?

départ = non présent ?
retour = présent ?

Pour l’instant c’est un switch binaire

Pour simuler un départ et un retour par Nut

Il restera à analyser le comportement du Nut pour faire fonctionner correctement le virtuel

A l’origine, c’est pour avoir un œil sur le temps réel de balade de mon chien (jamais balade par la même personne, aucun connaissance réel de son temps de balade si suffisant, dogsitter, etc…)
Alors tout ce mal pour ça, je sais bien, mais je pensais pas que ça serait si complexe avec autant de commandes infos

Historise simplement cette info de présence.

Puis dans un virtuel pour voir la valeur d’aujourd’hui :
durationBetween(#[Objet][Equipement][Nut]#,0,Today,Now)
Pour voir la valeur de la semaine :
durationBetween(#[Objet][Equipement][Nut]#,0,Last Monday,Now)

Doc :

Bonjour,

Je n’ai pas la réponse à ta question mais si ça peut t’aider j’utilise la fonction timestamp pour arriver au même résultat :

Lors de l’activation (activation = 1) : je crée une variable DEBUT grâce à timestamp (heure actuelle en secondes
Lors de la désactivation (SINON) : je crée une variable FIN, je calcule ensuite la durée en secondes et je l’ajoute enfin au total quotidien.

Pour afficher les durées en secondes de la variable en hh:mm j’utilise :
gmdate(H\hi,variable(P1_Etude HM_aujourd'hui))

En espérant que ça puisse aider quelqu’un. :wink:

1 « J'aime »

Bonjour,

Merci d’apporter votre réponses

Qu’est ce que trigger ?

Le trigger c’est le déclencheur.
En gros si c’est par exemple pour mesurer la durée de présence de « MONSIEUR » et de « MADAME », tu peux soit avoir deux scénarios différents (un pour MONSIEUR et un pour MADAME) ou alors avoir un scénario commun.
Si tel est le cas tu testes en premier qui est le déclencheur :
SI : trigger (MONSIEUR) : c’est MONSIEUR qui déclenche (arrivée ou départ)
SI : trigger (MADAME) : c’est MADAME qui déclenche

Bonjour,

je note l’intérêt de cette commande, je me rends compte que dans mon cas elles peuvent mettre utile après les avoir essayé.

Mais je n’ai pas réussi à supprimé les calculs à outrance que je parlais avec les 9 commandes pour calculer balade 1, balade 2, balade 3.

Sinon, à moins de faire 3 « commande d’info d’etat » sur lesquelles agirait le Nut.
Avec un scenario, si la balade 1 s’est déjà déroulé alors il s’agit de la balade 2… etc

J’essaye et je reviens

EDIT :

Quand j’essaye de construire mon virtuel je me prends des 500 internal server error

Je tente d’avoir 3 durationbetween pour tester la même info selon si elle est à 1, à 2, ou à 3