Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

time_diff, collectDate et ... ERREUR

Réservé à la création de scénarios dans JEEDOM
Avatar de l’utilisateur
cadavor
Actif
Messages : 1284
Inscription : 21 juin 2015, 22:00
Localisation : 34

time_diff, collectDate et ... ERREUR

Message par cadavor » 29 avr. 2018, 19:03

Bonjour,

J'ai voulu utiliser les fonctions time_diff et collectDate pour tester l'ancienneté d'une valeur.
D'après la documentation, y'a déjà un soucis :
time_diff(date1,date1[,format]) : Permet de connaître la différence entre 2 dates (les dates doivent être au format AAAA/MM/JJ HH:MM:SS). Par défaut (si vous ne mettez rien pour format) la méthode retourne le nombre total de jours. Vous pouvez lui demander en secondes (s), minutes (m), heures (h). Exemple en secondes time_diff(2018-02-02 14:55:00,2018-02-25 14:55:00,s)
L'exemple ne correspond pas à la remarque sur le format des dates à utiliser ( / contre - )

Pour collectDate :
collectDate([Salle de bain][Hydrometrie][Humidité]) Renvoie 2015-01-01 17:45:12
Le format retourné ne devrait pas être compatible avec la fonction time_diff du coup, dommage...

J'ai donc écrit :

Code : Tout sélectionner

time_diff(date("Y/m/d H:i:s"), collectDate(#[Freebox][Système][Allumée depuis]#), s)
Mais lorsque je teste :
DateTime::__construct(): Failed to parse time string ("2018/04/29 18:49:41") at position 0 ("): Unexpected character
Du coup j'ai essayé avec du basique c'est à dire les dates écritent en dur :

Code : Tout sélectionner

time_diff("2018/04/29 00:00:00", "2018/04/28 00:00:00")
Mais pareil même erreur...

J'ai aussi essayé avec les tiret au lieu des /

Code : Tout sélectionner

time_diff("2018-04-29 00:00:00", "2018-04-28 00:00:00")
mais pareil

Du coup comment utiliser cette fonction time_diff???

Si quelqu'un a déjà utilisé cette fonction?

Merci
Jeedom Stable 3.3
NUC Z83 + Aeotec Z-Stick Gen5
Z-Wave FGR + FGMS + FGDS + FGFS + FGK + FGWPE + ZW062 + ZW080
GH Mini + Orvibo AllOne + Playbulb + Miband2

Bosquetia
Actif
Messages : 6783
Inscription : 10 mai 2016, 07:54

Re: time_diff, collectDate et ... ERREUR

Message par Bosquetia » 30 avr. 2018, 07:43

SI time_diff(2018-02-02 14:55:00,2018-02-25 14:55:00,s) > 30

renvoie TRUE
et cela fonctionne parfaitement

Avatar de l’utilisateur
cadavor
Actif
Messages : 1284
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: time_diff, collectDate et ... ERREUR

Message par cadavor » 30 avr. 2018, 11:34

Bosquetia a écrit :
30 avr. 2018, 07:43
SI time_diff(2018-02-02 14:55:00,2018-02-25 14:55:00,s) > 30

renvoie TRUE
et cela fonctionne parfaitement
Après une petite nuit de sommeil et relecture de l'erreur on comprend vite qu'il n'aime pas les "

Mon cerveau de développeur est un petit peu dérouté de ne pas mettre de " autour d'une chaîne de caractère en paramètre d'une fonction mais c'est pas grave, je vais m'y faire.

Donc je reprend :

Code : Tout sélectionner

time_diff(2018-04-30 00:00:00,2018-04-30 00:00:01,s)
Fonctionne OK => retour = 1

Code : Tout sélectionner

time_diff(2018-04-30 00:00:00, 2018-04-30 00:00:01, s)
NE fonctionne PAS => retour = 0
il n'aime pas les espaces

Code : Tout sélectionner

time_diff(date("Y/m/d H:i:s"), collectDate(#[Freebox][Système][Allumée depuis]#), s)
NE fonctionne PAS => Erreur "DateTime::__construct(): Failed to parse time string ("2018/04/30 11:17:02") at position 0 ("): Unexpected character"
les 2 fonctions date() et collectDate retournent des chaines de caractères donc apparition de l'erreur!
Donc la fonction time_diff ne peux fonctionner qu'avec des valeurs écrites en dur, dommage...
Jeedom Stable 3.3
NUC Z83 + Aeotec Z-Stick Gen5
Z-Wave FGR + FGMS + FGDS + FGFS + FGK + FGWPE + ZW062 + ZW080
GH Mini + Orvibo AllOne + Playbulb + Miband2

Avatar de l’utilisateur
rombautsdidier
Helper
Messages : 446
Inscription : 01 juin 2016, 07:56
Localisation : Grabels, France
Contact :

Re: time_diff, collectDate et ... ERREUR

Message par rombautsdidier » 30 avr. 2018, 19:39

Même constatation, et c'est bien dommage... Je garde mon petit code PHP pour faire cela :)
Didier Rombauts
Helper Officiel Jeedom
Jeedom SMART
https://didier.rombauts.fr

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 02 août 2018, 15:49

Après avoir galéré pendant 2 heures avec la doc et mon jeedom pour faire fonctionner time_diff, je décide de faire une recherche sur le forum.
J'aurai du commencer par ça.
J'ai le même type d'erreur.

Code : Tout sélectionner

DateTime::__construct(): Failed to parse time string ("2018-08-02 15:35:33") at position 0 ("): Unexpected character
J'ai fait un substr(valueDate(#[xxx][yyy][zzz]#),1,19) en pensant enlever les " mais sans résultat, c'est le 2 de 2018 qui est parti.

Code : Tout sélectionner

DateTime::__construct(): Failed to parse time string ("018-08-02 15:35:33") at position 0 ("): Unexpected character
Il ne doit pas y avoir beaucoup de personne qui utilise cette fonction buggée.

Bercolly
Actif
Messages : 956
Inscription : 20 août 2015, 22:21
Localisation : Clermont-ferrand

Re: time_diff, collectDate et ... ERREUR

Message par Bercolly » 04 août 2018, 18:57

Bonjour,

voilà une manière de résoudre votre demande (problème).
1°) time_diff(date("Y/m/d H:i:s"), collectDate(#[Freebox][Système][Allumée depuis]#), s)

1.1 -> Il suffit de remplacer date("Y/m/d H:i:s") par now !
1.2 -> puis de supprimer l'espace entre , et s , la fonction s'écrit donc ainsi :

time_diff(now, collectDate(#[Freebox][Système][Allumée depuis]#),s)


Explications ?

Les " servent au compilateur à délimiter les chaînes de caractères. Mais ils ne sont pas stockés en interne. Ce qui n'est pas le cas de l'instruction qui sera transmise par Jeedom qui va bien envoyer date("Y/m/d H:i:s"), ce qui provoque une erreur d'interprétation. On passe outre en utilisant dans ce cas la fonction php now.

Idem pour la transmission du paramètre format s, m ou h. Si des espaces sont intercalés avant ou après ce symbole ils seront donc transmis à Jeedom qui réalisera toujours la conversion par défaut en jours !

A+
Bernard


Donc pour le cas soulevé il suffit de réécrire la fonction du scénario

time_diff(date("Y/m/d H:i:s"), collectDate(#[Freebox][Système][Allumée depuis]#), s)

en
time_diff(now, collectDate(#[Freebox][Système][Allumée depuis]#),s)
jeeDom Mini+ V2.1.2
Plugins développés : Smart TvSamsung, jEditor (éditeur scénario pleine page) jEditor -> viewtopic.php?f=135&t=27181

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 04 août 2018, 19:05

Il semble que l'erreur subsiste avec 'collectDate'.
DateTime::__construct(): Failed to parse time string ( "2018-08-04 17:13:24") at position 0 ("): Unexpected character

Bercolly
Actif
Messages : 956
Inscription : 20 août 2015, 22:21
Localisation : Clermont-ferrand

Re: time_diff, collectDate et ... ERREUR

Message par Bercolly » 04 août 2018, 19:58

Jeandhom a écrit :
04 août 2018, 19:05
Il semble que l'erreur subsiste avec 'collectDate'.
DateTime::__construct(): Failed to parse time string ( "2018-08-04 17:13:24") at position 0 ("): Unexpected character
Re,

Personnellement, je l'ai testé avec un collectDate et pas d'erreur.
jeeDom Mini+ V2.1.2
Plugins développés : Smart TvSamsung, jEditor (éditeur scénario pleine page) jEditor -> viewtopic.php?f=135&t=27181

Bercolly
Actif
Messages : 956
Inscription : 20 août 2015, 22:21
Localisation : Clermont-ferrand

Re: time_diff, collectDate et ... ERREUR

Message par Bercolly » 04 août 2018, 20:01

Bercolly a écrit :
04 août 2018, 19:58
Jeandhom a écrit :
04 août 2018, 19:05
Il semble que l'erreur subsiste avec 'collectDate'.
DateTime::__construct(): Failed to parse time string ( "2018-08-04 17:13:24") at position 0 ("): Unexpected character
Re,

Personnellement, je l'ai testé avec un collectDate et pas d'erreur.
peux-tu montrer le code du scénario que tu utilises ?
jeeDom Mini+ V2.1.2
Plugins développés : Smart TvSamsung, jEditor (éditeur scénario pleine page) jEditor -> viewtopic.php?f=135&t=27181

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 05 août 2018, 14:07

Je n'avais pas fait de test dans un scénario mais avec le testeur d'expression.

Effectivement, il n'y a pas d'erreur d'exécution dans les scénarios.
Pièces jointes
time_diff.png
time_diff.png (27.58 Kio) Consulté 5623 fois

Bercolly
Actif
Messages : 956
Inscription : 20 août 2015, 22:21
Localisation : Clermont-ferrand

Re: time_diff, collectDate et ... ERREUR

Message par Bercolly » 05 août 2018, 14:21

Bonjour,

Donc, résolu !
A+
Bernard
jeeDom Mini+ V2.1.2
Plugins développés : Smart TvSamsung, jEditor (éditeur scénario pleine page) jEditor -> viewtopic.php?f=135&t=27181

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 05 août 2018, 18:45

Bercolly a écrit :
05 août 2018, 14:21
Bonjour,

Donc, résolu !
A+
Bernard
Pas tout à fait.

La fonction avec l'argument "s" semble être buggée.

J'ai fait un scénario test.

Code : Tout sélectionner

ACTION
     (variable) Affectation de la variable : test_time_diff_dat à collectDate(#3427#)
     (variable) Affectation de la variable : test_time_diff_sec à time_diff(now,collectDate(#3427#),s)
     (variable) Affectation de la variable : test_time_diff_min à time_diff(now,collectDate(#3427#),m)
     (variable) Affectation de la variable : test_time_diff_heu à time_diff(now,collectDate(#3427#),h)
     (variable) Affectation de la variable : test_time_diff_jou à time_diff(now,collectDate(#3427#),j)
     (variable) Affectation de la variable : test_time_diff_sec_en_min à variable(test_time_diff_sec)/60
     (variable) Affectation de la variable : test_time_diff_sec_en_heu à variable(test_time_diff_sec)/3600
     (variable) Affectation de la variable : test_time_diff_sec_en_jou à variable(test_time_diff_sec)/86400
     (variable) Affectation de la variable : test_time_diff_min_en_heu à variable(test_time_diff_min)/60
     (variable) Affectation de la variable : test_time_diff_min_en_jou à variable(test_time_diff_min)/1440

Voici les logs :

Code : Tout sélectionner

------------------------------------
[2018-08-05 18:17:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:17:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:17:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_sec => 0 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_min => 56 = 56
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_heu => 0 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 0/60 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 0/3600 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 0/86400 = 0
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 56/60 = 0.93333333333333
[2018-08-05 18:17:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 56/1440 = 0.038888888888889
[2018-08-05 18:17:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:18:02][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:18:02][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:18:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_sec => 1 = 1
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_min => 57 = 57
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_heu => 0 = 0
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 1/60 = 0.016666666666667
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 1/3600 = 0.00027777777777778
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 1/86400 = 1.1574074074074E-5
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 57/60 = 0.95
[2018-08-05 18:18:02][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 57/1440 = 0.039583333333333
[2018-08-05 18:18:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:19:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:19:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:19:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_sec => 0 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_min => 58 = 58
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_heu => 0 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 0/60 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 0/3600 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 0/86400 = 0
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 58/60 = 0.96666666666667
[2018-08-05 18:19:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 58/1440 = 0.040277777777778
[2018-08-05 18:19:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:20:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:20:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:20:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_sec => 0 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_min => 59 = 59
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_heu => 0 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 0/60 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 0/3600 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 0/86400 = 0
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 59/60 = 0.98333333333333
[2018-08-05 18:20:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 59/1440 = 0.040972222222222
[2018-08-05 18:20:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:21:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:21:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:21:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:21:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_sec => 3601 = 3601
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_min => 60 = 60
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3601/60 = 60.016666666667
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3601/3600 = 1.0002777777778
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3601/86400 = 0.041678240740741
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 60/60 = 1
[2018-08-05 18:21:02][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 60/1440 = 0.041666666666667
[2018-08-05 18:21:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:22:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:22:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:22:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_sec => 3600 = 3600
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_min => 61 = 61
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3600/60 = 60
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3600/3600 = 1
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3600/86400 = 0.041666666666667
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 61/60 = 1.0166666666667
[2018-08-05 18:22:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 61/1440 = 0.042361111111111
[2018-08-05 18:22:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:23:02][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:23:02][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:23:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_sec => 3601 = 3601
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_min => 62 = 62
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3601/60 = 60.016666666667
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3601/3600 = 1.0002777777778
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3601/86400 = 0.041678240740741
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 62/60 = 1.0333333333333
[2018-08-05 18:23:02][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 62/1440 = 0.043055555555556
[2018-08-05 18:23:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:24:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:24:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:24:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_sec => 3600 = 3600
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_min => 63 = 63
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3600/60 = 60
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3600/3600 = 1
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3600/86400 = 0.041666666666667
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 63/60 = 1.05
[2018-08-05 18:24:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 63/1440 = 0.04375
[2018-08-05 18:24:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:25:01][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:25:01][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:25:01][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_sec => 3600 = 3600
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_min => 64 = 64
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3600/60 = 60
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3600/3600 = 1
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3600/86400 = 0.041666666666667
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 64/60 = 1.0666666666667
[2018-08-05 18:25:01][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 64/1440 = 0.044444444444444
[2018-08-05 18:25:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2018-08-05 18:26:02][SCENARIO] Lancement du scénario en mode synchrone
[2018-08-05 18:26:02][SCENARIO] Start : Scénario exécuté automatiquement sur programmation.
[2018-08-05 18:26:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_dat => 2018-08-05 17:21:01 = 2018-08-05 17:21:01
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_sec => 3601 = 3601
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_min => 65 = 65
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_heu => 1 = 1
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_jou => 0 = 0
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_min => 3601/60 = 60.016666666667
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_heu => 3601/3600 = 1.0002777777778
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_sec_en_jou => 3601/86400 = 0.041678240740741
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_min_en_heu => 65/60 = 1.0833333333333
[2018-08-05 18:26:02][SCENARIO] Affectation de la variable test_time_diff_min_en_jou => 65/1440 = 0.045138888888889
[2018-08-05 18:26:02][SCENARIO] Fin correcte du scénario
------------------------------------

Bercolly
Actif
Messages : 956
Inscription : 20 août 2015, 22:21
Localisation : Clermont-ferrand

Re: time_diff, collectDate et ... ERREUR

Message par Bercolly » 07 août 2018, 17:22

Bonjour,

Il y a un bug dans la fonction time_diff : à vérifier selon les versions ( bug en 3.2.8 trouvé …)
Il faut remplacer :

if ($_format == 's') {
return $interval->format('%s') + 60 * $interval->format('%m') + 3600 * $interval->format('%h') + 86400 * $interval->format('%a');
}

par
if ($_format == 's') {
return $interval->format('%s') + 60 * $interval->format('%i') + 3600 * $interval->format('%h') + 86400 * $interval->format('%a');
}


A+
Bernard
jeeDom Mini+ V2.1.2
Plugins développés : Smart TvSamsung, jEditor (éditeur scénario pleine page) jEditor -> viewtopic.php?f=135&t=27181

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 07 août 2018, 18:45

Merci Bernard, ça fonctionne mieux comme cela.

Fichier : /var/www/html/core/class/scenarioExpression.class.php
Ligne : 822

Avatar de l’utilisateur
cadavor
Actif
Messages : 1284
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: time_diff, collectDate et ... ERREUR

Message par cadavor » 08 août 2018, 11:43

Vous avez fait un pullRequest?
Jeedom Stable 3.3
NUC Z83 + Aeotec Z-Stick Gen5
Z-Wave FGR + FGMS + FGDS + FGFS + FGK + FGWPE + ZW062 + ZW080
GH Mini + Orvibo AllOne + Playbulb + Miband2

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1386
Inscription : 20 oct. 2015, 17:32

Re: time_diff, collectDate et ... ERREUR

Message par Jeandhom » 08 août 2018, 13:11

Moi non, je ne sais pas faire.

Avatar de l’utilisateur
TiTidom
Timide
Messages : 32
Inscription : 23 juin 2018, 21:39

Re: time_diff, collectDate et ... ERREUR

Message par TiTidom » 08 août 2018, 13:30

Salut,

J'ai cru voir passer un commit prenant en compte la correction, commit qui a été poussé sur la branche "alpha" hier (numéro 78575a4)

@++

vincent42
Timide
Messages : 19
Inscription : 21 févr. 2016, 01:15

Re: time_diff, collectDate et ... ERREUR

Message par vincent42 » 21 sept. 2018, 20:47

Salut,

Mon timeout d'envoi de donnée par mes module ESP plante le SI du scénario :

SI : time_diff(now,collectDate(#[Maison][Pompe à chaleur][Température extérieure]#),m) < 10
//temps depuis derniere MAJ de la donnée > 10mins
ALORS : #[Vincent][Free][SMS]# message : Timeout Pompe à chaleur, collectDate(#[Maison][Pompe à chaleur][Température extérieure]#) mins
//envoie SMS info timeout equipement

le pire, c'est que je le test en envoyant sans condition le time_diff(now,collectDate(#[Maison][Pompe à chaleur][Température extérieure]#),m), il m'envoie bien 47, mais par le IF ça marche pas....

Une idée ?

Basile
Timide
Messages : 6
Inscription : 04 déc. 2017, 19:08

Re: time_diff, collectDate et ... ERREUR

Message par Basile » 22 nov. 2018, 21:02

Même problème, je pense que c'est identique au testeur d'expression.
La fonction ne marche pas dans un if a cause des guillemets.

nyck
Timide
Messages : 16
Inscription : 06 févr. 2015, 23:55

Re: time_diff, collectDate et ... ERREUR

Message par nyck » 22 déc. 2018, 19:41

Finalement, il y a une méthode détournée pour faire une comparaison avec le CollectDate().
exp: #timestamp#-collectDate(#[Chambre Parents][InfoParents][Température]#,U)>60 donnera un TRUE si la dernière info remonte à plus d'une minute!
l'astuce est dans le paramètre 'U'...
BananaPI / Bananian 16.04
Jeedom / Z-Wave / Zstick S2
1-AeotecMinimote, 1-AeotecMultisensor, 3-EverspirngAN158, 8-FRGRM222, 1 RFXCOM, 5 Oregon THGR122NX, 1 IPX800, 1 Moxa MGate MB3180

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 7 invités