Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Aide sur time_op()

Réservé à la création de scénarios dans JEEDOM
Avatar de l’utilisateur
mich0111
Timide
Messages : 459
Inscription : 25 juin 2019, 13:59

Aide sur time_op()

Message par mich0111 » 22 juil. 2019, 15:50

Bonjour,
Mon problème est de tester une période donnée.
Je veux savoir si #time# > 0230 et si en plus l'heure actuelle moins une heure stockée dans une variable est supérieure à 0600 de façon à détecter une absence prolongée.
J'ai écrit : #time# > 0230 et time_op(#time#,-variable(Time-detect)) >= 0600

Pour mon test, la varialbe Time-detect est initialisée à 1200

Après exécution, le log me retourne:
------------------------------------
[2019-07-22 15:38:06][SCENARIO] Start : Scenario lance manuellement.
[2019-07-22 15:38:07][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-07-22 15:38:07][SCENARIO] Evaluation de la condition : [1 == 1 ] = Vrai
[2019-07-22 15:38:07][SCENARIO] Exécution du sous-élément de type [action] : then
[2019-07-22 15:38:07][SCENARIO] Exécution d'un bloc élément : 56
[2019-07-22 15:38:07][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-07-22 15:38:07][SCENARIO] Evaluation de la condition : [1538 > 0230 et 1938 >= 0600] = Vrai
[2019-07-22 15:38:07][SCENARIO] Exécution du sous-élément de type [action] : then
[2019-07-22 15:38:07][SCENARIO] Exécution de la commande [Maison][Présence][OFF]
[2019-07-22 15:38:07][SCENARIO] Exécution de la commande [Maison][Email Jeedom][Jeedom] avec comme option(s) : {"background":"0","title":"D\u00e9part occupant","message":"1938"}
[2019-07-22 15:38:08][SCENARIO] Fin correcte du scénario

Donc, si je l'interprète bien, time_op(#time#,-variable(Time-detect)) = 1938 alors qu'il devrait être égal à 0338.

Quelqu'un peut-il me dire quelle est mon erreur?

Par avance, merci
Jeedom V4 DIY
RPI3B+
SSD
RFXCOM version XL
Contrôleur Z-Wave Z-stick Gen5
CronBee2
Et plus de 70 devices de toutes marques et toutes natures

Avatar de l’utilisateur
loic
Administrateur
Messages : 14865
Inscription : 01 févr. 2014, 16:21

Re: Aide sur time_op()

Message par loic » 22 juil. 2019, 16:07

Bonjour,
Ta variable vaut 1200 soit 20h donc ca me semble bon comme resultat...
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

Avatar de l’utilisateur
mich0111
Timide
Messages : 459
Inscription : 25 juin 2019, 13:59

Re: Aide sur time_op()

Message par mich0111 » 22 juil. 2019, 17:08

Le time_op soustrait donc des minutes (je n'avais pas fait attention à ce sacré détail).
Donc si je veux déduire deux heures différentes, y-a-il une fonction magique ou dois-je passer par un calcul de ce type d'une élégance crasse :
(round(variable(Time-detect)/100)-1)*60+(variable(Time-detect)-(round(variable(Time-detect)/100)-1)*100)
?
J'ai bien vu time_diff mais ça ne semble ne soustraire que des dates.

Merci
Jeedom V4 DIY
RPI3B+
SSD
RFXCOM version XL
Contrôleur Z-Wave Z-stick Gen5
CronBee2
Et plus de 70 devices de toutes marques et toutes natures

Naboleo
Actif
Messages : 740
Inscription : 20 janv. 2017, 09:57

Re: Aide sur time_op()

Message par Naboleo » 22 juil. 2019, 18:08

mich0111 a écrit :
22 juil. 2019, 17:08
J'ai bien vu time_diff mais ça ne semble ne soustraire que des dates.
tu peux utiliser timestamp et strtotime pour faire la soustraction....ça donne la valeur en secondes entre tes 2 valeurs

Code : Tout sélectionner

strtotime("2019-07-25 09:00:00")-#timestamp#
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Avatar de l’utilisateur
mich0111
Timide
Messages : 459
Inscription : 25 juin 2019, 13:59

Re: Aide sur time_op()

Message par mich0111 » 22 juil. 2019, 19:18


Naboleo a écrit :
mich0111 a écrit :
22 juil. 2019, 17:08
J'ai bien vu time_diff mais ça ne semble ne soustraire que des dates.
tu peux utiliser timestamp et strtotime pour faire la soustraction....ça donne la valeur en secondes entre tes 2 valeurs

Code : Tout sélectionner

strtotime("2019-07-25 09:00:00")-#timestamp#
Lorsque je tape ton code ça me retourne: 222536. Même en divisant par 60, je suis loin du compte.
Du coup, j'ai essayé #time# - strtotime(variable(Time-detect))
Et ça ne marche pas non plus.
Pour le moment, j'ai mis le bout de code que je trouve moche mais qui a le mérite de marcher.
Si vous avez une idée, je suis toujours preneur.

Merci de votre aide.

Envoyé de mon SM-G950F en utilisant Tapatalk

Jeedom V4 DIY
RPI3B+
SSD
RFXCOM version XL
Contrôleur Z-Wave Z-stick Gen5
CronBee2
Et plus de 70 devices de toutes marques et toutes natures

Naboleo
Actif
Messages : 740
Inscription : 20 janv. 2017, 09:57

Re: Aide sur time_op()

Message par Naboleo » 22 juil. 2019, 19:30

mich0111 a écrit :
22 juil. 2019, 19:18
Lorsque je tape ton code ça me retourne: 222536. Même en divisant par 60, je suis loin du compte.
Loin du compte de quoi ? Entre maintenant et le 25 juillet à 9h, il y a :

222536 secondes
3691 minutes et des poussières... (/60)
61 heures et des bananes .... (/60)
2,5 jours .... (/24)


Dans ton cas, il faut faire abs(strtotime(ta date/heure de départ) - #timestamp#) > 21600
- abs pour pas se prendre la tête avec les écarts positifs et négatifs
- 21600 car (6h*60min*60sec)
- formater ta date de départ selon le format ci-dessus. Perso j'irai piquer directement dans l'historique
Je te laisse refaire les calculs avec ta bonne combinaison ;), sachant que dans ton exemple, et en l'état un départ de plus de 24h n'est pas certain de marcher
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Avatar de l’utilisateur
mich0111
Timide
Messages : 459
Inscription : 25 juin 2019, 13:59

Re: Aide sur time_op()

Message par mich0111 » 22 juil. 2019, 20:39

Naboleo a écrit :
mich0111 a écrit :
22 juil. 2019, 19:18
Lorsque je tape ton code ça me retourne: 222536. Même en divisant par 60, je suis loin du compte.
Loin du compte de quoi ? Entre maintenant et le 25 juillet à 9h, il y a :

222536 secondes
3691 minutes et des poussières... (/60)
61 heures et des bananes .... (/60)
2,5 jours .... (/24)


Dans ton cas, il faut faire abs(strtotime(ta date/heure de départ) - #timestamp#) > 21600
- abs pour pas se prendre la tête avec les écarts positifs et négatifs
- 21600 car (6h*60min*60sec)
- formater ta date de départ selon le format ci-dessus. Perso j'irai piquer directement dans l'historique
Je te laisse refaire les calculs avec ta bonne combinaison ;), sachant que dans ton exemple, et en l'état un départ de plus de 24h n'est pas certain de marcher
Parfait, ça marche.
En plus, ça m'a permis de me rendre compte que mon précédent calcul n'était pas si bon que ça.
Merci encore pour ton aide.

Envoyé de mon SM-G950F en utilisant Tapatalk

Jeedom V4 DIY
RPI3B+
SSD
RFXCOM version XL
Contrôleur Z-Wave Z-stick Gen5
CronBee2
Et plus de 70 devices de toutes marques et toutes natures

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

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