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 !

Heure de la dernière communication.

Réservé à la création de scénarios dans JEEDOM
benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 15 oct. 2018, 21:25

Via le plugin de Chauffe-Eau de mika... je commence à me poser des questions sur le type de sortie, mais c'est bien string.

Image

J'ai tenté aussi

Code : Tout sélectionner

$delta = strftime($valeurfin-$valeurdbt);
0 aussi...

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 15 oct. 2018, 21:36

Bon, je vois plus...
j'ai tenté ajouter les secondes au cas où etc...
Je sèche totalement !

Image

Code : Tout sélectionner

// pensez à changer la variable en variable,0 pour garder la valeur précédente !

$valeurfin = cmd::byString("#[Eau Chaude][Chauffe Eau][Date de fin]#")->execCmd();
$valeurdbt = cmd::byString("#[Eau Chaude][Chauffe Eau][Date début]#")->execCmd();
$scenario->setLog($valeurfin);
$scenario->setLog($valeurdbt);
$scenario->setLog($valeurfin.":00");
$scenario->setLog($valeurdbt.":00");
$delta = strftime($valeurfin.":00") - strftime($valeurdbt.":00");
$scenario->setLog(strftime($valeurfin.":00"));
$scenario->setLog(strftime($valeurdbt.":00"));
$scenario->setLog($delta);
$scenario->setData("TempsChauffe",$delta/60);
J'ai l'impression de demander la lune ! :D

f6dmn
Timide
Messages : 211
Inscription : 01 mars 2015, 10:43
Localisation : orne

Re: Heure de la dernière communication.

Message par f6dmn » 15 oct. 2018, 21:42

Bonsoir, avec le plugin surveillance équipement c est simple à faire non ?

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 15 oct. 2018, 21:50

Sachant que c'est du prédictif pour la nuit d'après j'en doute...

Envoyé de mon Moto G (5S) Plus en utilisant Tapatalk


winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Heure de la dernière communication.

Message par winhex » 15 oct. 2018, 22:18

faut mettre au format date
cmd php gmdate avant ta soustraction

exemple commande jeedom mais code c'est pareil
gmdate("H:i",durationBetween(#[Cuisine][Hotte][Etat]#,0,-#[Cuisine][Filtration][sur]#day0:00,now)*60

ou soit tes dates tu les passes en timestramp
tu auras un résultat en secondes
et une soustraction fonctionnera

mais tu arriveras a la même finalité
convertir le format de sortie (gmdate)
pour une résultat en hh:mm
Dernière édition par winhex le 15 oct. 2018, 22:51, édité 2 fois.

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 15 oct. 2018, 22:19

Euh, je vais prendre un doliprane je reviens :D.

Merci winhex, je regarde demain et te tiens au courant.

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Heure de la dernière communication.

Message par winhex » 15 oct. 2018, 22:24

un autre exemple
gmdate("Hi",strtotime(#time#) - strtotime(variable(hum_sdb_time))

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 16 oct. 2018, 11:39

Bon, visiblement, je commence à me poser des questions sur le format de sortie captée par byString...

Code : Tout sélectionner

$valeurfin = cmd::byString("#[Eau Chaude][Chauffe Eau][Date de fin]#")->execCmd();
$valeurdbt = cmd::byString("#[Eau Chaude][Chauffe Eau][Date début]#")->execCmd();
$scenario->setLog($valeurfin);
$scenario->setLog($valeurdbt);
$timefin = gmdate("j/m/Y H:i",strtotime($valeurfin));
$timedbt = gmdate("j/m/Y H:i",strtotime($valeurdbt));
$scenario->setLog($timefin);                
$scenario->setLog($timedbt);
Image

La fonction proposée par winhex est encore pire que celle de Sartog... lol !

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 16 oct. 2018, 11:45

J'ai tenté via date_create etc.... je ne vois pas !

Code : Tout sélectionner

// pensez à changer la variable en variable,0 pour garder la valeur précédente !

$valeurfin = cmd::byString("#[Eau Chaude][Chauffe Eau][Date de fin]#")->execCmd();
$valeurdbt = cmd::byString("#[Eau Chaude][Chauffe Eau][Date début]#")->execCmd();
$scenario->setLog($valeurfin);
$scenario->setLog($valeurdbt);
$timefin = date_create($valeurfin);
$timedbt = date_create($valeurdbt);
$delta = date_diff($timefin, $timedbt);
$scenario->setLog($timefin);                
$scenario->setLog($timedbt);
$scenario->setLog($delta);
$scenario->setData("TempsChauffe",$delta/60);
Image

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: Heure de la dernière communication.

Message par mika-nt28 » 16 oct. 2018, 12:57

bonjour

Je n'ai pas lu tous le post mais j'ai vue cmd::strtotime() qui n'existe pas dans la class cmd
strtotime() est un instruction php donc votre code donnerai

Code : Tout sélectionner


$cmdfin=cmd::byString("#[Eau Chaude][Chauffe Eau][Date de fin]#");
if(is_object($cmdfin))
	$valeurfin = strtotime($cmdfin->execCmd());

$cmddebut=cmd::byString("#[Eau Chaude][Chauffe Eau][Date de debut]#");
if(is_object($cmddebut))
	$valeurdbt = strtotime($cmddebut->execCmd());

$scenario->setLog($valeurdbt);
$scenario->setLog($valeurfin);

$delta = time_diff($valeurfin,$valeurdbt,m)
$scenario->setLog($delta);

$scenario->setData("TempsChauffe",$delta);
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 16 oct. 2018, 13:23

On l'a essayé... il me semble.
J'ai tenté ton code et je n'ai rien du tout dans les logs.

Rien en sortie malgré les appels scénario :

Image

Code : Tout sélectionner

$cmdfin=cmd::byString("#[Eau Chaude][Chauffe Eau][Date de fin]#");
if(is_object($cmdfin))
	$valeurfin = strtotime($cmdfin->execCmd());

$cmddebut=cmd::byString("#[Eau Chaude][Chauffe Eau][Date début]#");
if(is_object($cmddebut))
	$valeurdbt = strtotime($cmddebut->execCmd());

$scenario->setLog($valeurdbt);
$scenario->setLog($valeurfin);

$delta = time_diff($valeurfin,$valeurdbt,m)
$scenario->setLog($delta);

$scenario->setData("TempsChauffe",$delta);
Mika au passage, tu as mis dans le plugin Date de fin et Date début (et non Date de début). Je te dis ça car même toi dans le code que tu proposes tu es parti sur "de début".

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: Heure de la dernière communication.

Message par mika-nt28 » 16 oct. 2018, 13:28

Oui c'est une faute de frappe dans le plugin je le corrige
En faite dans le script je ne l'ai pas prcisé mais la varriable $scenario n'est pas initialisé
il faut l'initilisé
$scenario=scenario::byId()
https://jeedom.github.io/documentation/ ... nario.html
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Heure de la dernière communication.

Message par winhex » 16 oct. 2018, 23:42

benj29 a écrit :
16 oct. 2018, 11:39

La fonction proposée par winhex est encore pire que celle de Sartog... lol !
tu m'as piquer au vif

si une opération sur le temps ne fonctionne pas
c'est qu'elle n'est pas comprise par le système

ex :
si 3+2 = rien
c'est que le chiffres ne sont pas numeriques

donc on les créés/convertis

on remplace les / par -
afin de déterminer l'unité date "new DateTime" au format
et ensuite le calcul
[2018-10-16 21:57:09][SCENARIO] Start : Scenario lance manuellement.
[2018-10-16 21:57:09][SCENARIO] Exécution du sous-élément de type [action] : code
[2018-10-16 21:57:09][SCENARIO] Exécution d'un bloc code
[2018-10-16 21:57:09][SCENARIO] la date de debut 2018-10-16 04:53
et la fin 2018-10-16 09:30
soit un temps de fonctionnement de 4 heures et 37 minutes
[2018-10-16 21:57:09][SCENARIO] Fin correcte du scénario

Code : Tout sélectionner

$valeurfin = cmd::byString("#[test2][fonctionnement][Date de fin]#")->execCmd();
$valeurdbt = cmd::byString("#[test2][fonctionnement][Date début]#")->execCmd();

$valeurfin = str_replace("/","-",$valeurfin);
$valeurdbt = str_replace("/","-",$valeurdbt);
$valeurfin = new DateTime($valeurfin);
$valeurdbt = new DateTime($valeurdbt);
$valeurfin = $valeurfin->format('Y-m-d H:i');
$valeurdbt = $valeurdbt->format('Y-m-d H:i');
$delta = gmdate("g:i",strtotime($valeurfin) - strtotime($valeurdbt));
$delta = str_replace(":"," heures et ",$delta." minutes");
$scenario->setLog("la date de debut ".$valeurdbt."\n et la fin ".$valeurfin."\n soit un temps de fonctionnement de ".$delta);
$delta brut

Code : Tout sélectionner

$valeurfin = cmd::byString("#[test2][fonctionnement][Date de fin]#")->execCmd();
$valeurdbt = cmd::byString("#[test2][fonctionnement][Date début]#")->execCmd();
$valeurfin = str_replace("/","-",$valeurfin);
$valeurdbt = str_replace("/","-",$valeurdbt);
$scenario->setLog($valeurfin);
$scenario->setLog($valeurdbt);

$valeurfin = new DateTime($valeurfin);
$valeurdbt = new DateTime($valeurdbt);
$valeurfin = $valeurfin->format('Y-m-d H:i');
$valeurdbt = $valeurdbt->format('Y-m-d H:i');
$delta = gmdate("H:i",strtotime($valeurfin) - strtotime($valeurdbt));
$scenario->setLog($delta);
il existe plein de possibilités pour le même resultat
j'avais la logique initial puisque le calcul ne fonctionnait pas

et j'ai pioché sur le net (convertir une date php)
fonction que je n'avais jamais utilisé.

https://stackoverflow.com/questions/216 ... her-in-php

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 24 oct. 2018, 08:10

Suis désolé je n'avais pas vu ton message. Le pire n'était pas au sens premier du terme mais dans le sens donner de mauvais résultats.

Merci à toi mais tu as vu que ça tourne maintenant

Envoyé de mon JSN-L21 en utilisant Tapatalk


winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Heure de la dernière communication.

Message par winhex » 24 oct. 2018, 15:35

oui j'ai vu,
t'inquiete pas je ne l'ai pas mal pris
j'ai surtout voulu vérifier si mon intuition etait vrai (du à l'erreur) par defi.
ma petite satisfaction

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Heure de la dernière communication.

Message par benj29 » 24 oct. 2018, 15:38

T'as bien raison. Ne rien lâcher. Toi qui aime le tordu casse pied tu as vu mon topic sur les camemberts qui changent de taille position ?

Envoyé de mon JSN-L21 en utilisant Tapatalk


winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Heure de la dernière communication.

Message par winhex » 24 oct. 2018, 16:17

rapidement je t'y retrouve

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

Re: Heure de la dernière communication.

Message par mich0111 » 05 août 2019, 15:42

Bonjour,
Pourriez-vous me dire ce qu'il y a de faux dans cette formule:

Code : Tout sélectionner

#time# > 0230 et (#timestamp# - strtotime(variable(Time_detect)) >= 43200)
Sachant que dans la variable "Time_detect" il y a 0230.
Mon but est de contrôler qu'il est plus de 2h30 et qu'il y a plus de 12h que j'ai détecté un mouvement.
La partie "strtotime(variable(Time_detect))" me rend une valeur vide, donc probablement en erreur.
Je tourne en rond depuis 1/2 heure.
Merci de votre aide.
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
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 05 août 2019, 18:19

Bonjour,

Si dans Time_detect, tu mets des minutes ça sera plus simple :

Code : Tout sélectionner

#timestamp# - strtotime(now - variable(Time_detect) minute) >= 43200
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

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

Re: Heure de la dernière communication.

Message par mich0111 » 05 août 2019, 22:05

Merci pour ton retour.

Il me semblait que 0230 signifiait 2h30 donc converti en minutes cela doit faire 150.

Du coup, j'ai adapté ta formule pour en faire:

Code : Tout sélectionner

Temp = Round((variable(Time_detect)/100)-1)*60 + variable(Time_detect) - Round((variable(Time_detect)/100)-1)*100
SI #time# > 0230 et (#timestamp# - strtotime(today - variable(Temp) minute)) >= 43200
C'est mieux en termes de cohérence mais ça ne marche pas non plus. Le résultat est autour des 9000, donc sort en False alors que j'effectue le test à 22h00 soit près de 20h après les 2h30
Si c'est des secondes, cela ne ferait que 2h30, si c'est des minutes cela ferait 150h.

Quelque chose doit m'échaper.

Autre point, je trouve bizarre que la fonction round rend systématiquement la valeur supérieure. De mémoire, elle devrait rendre l'entier le plus proche.
Y-a-t-il une spécificité à Jeedom?

Merci de votre aide.
Dernière édition par mich0111 le 06 août 2019, 10:27, édité 1 fois.
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 1 invité