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

Heure de la dernière communication.

Réservé à la création de scénarios dans JEEDOM
Avatar de l’utilisateur
BizZ62
Actif
Messages : 1510
Inscription : 16 juil. 2014, 19:17

Re: Heure de la dernière communication.

Message par BizZ62 » 10 janv. 2018, 08:42

Hello,

Pourriez-vous poster un exemple de scénario SVP ? Du coup on a quoi en déclencheur ? Une vérification tous les X minutes ? Merci !!!
Jeedomien depuis 2014
Rpi3 - SSD 32Go + Stick Aeon Gen5 + RfxTrx + Gateway Xiaomi
+ Rpi3 - SSD 32Go + Stick Aeon Gen5 en Jeelink
+ 40 Modules Zwave + 25 modules 433 + 10 modules Xiaomi Home + 5 Caméras.

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 10 janv. 2018, 09:59

Bonjour,

En ce qui me concerne, c'est mon virtuel qui à un cron et c'est mon virtuel qui sert de déclencheur.
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

Avatar de l’utilisateur
fwehrle
Actif
Messages : 2828
Inscription : 01 juil. 2015, 11:03
Localisation : Strasbourg

Re: Heure de la dernière communication.

Message par fwehrle » 11 janv. 2018, 07:50

Je serais curieux d'avoir plus de détail sur le problème qu'il peut y avoir à utiliser des virtuels pour stocker des valeurs réelles. J'en ai quelques uns, pour les mêmes raisons historiques, et je n'ai pas de problème.

Envoyé de mon Nexus 6P en utilisant Tapatalk

Jeedom 3 sur Debian 9 en VM Proxmox 5 sur NUC Intel.
(Anciennement sur Docker sur Syno DS-415+ / MariaDB / DSM 6)
Teleinfo / RFXCom / Stick ZWave / IPX / Serveur Traccar / Blea

Avatar de l’utilisateur
BizZ62
Actif
Messages : 1510
Inscription : 16 juil. 2014, 19:17

Re: Heure de la dernière communication.

Message par BizZ62 » 16 janv. 2018, 11:43

Bon ça fonctionne chez moi :)

Petite question... Est-ce que cela pose un problème si on actualise la vérification toutes les minutes ? Ca charge pas trop la bête du côté du Cron ?
Jeedomien depuis 2014
Rpi3 - SSD 32Go + Stick Aeon Gen5 + RfxTrx + Gateway Xiaomi
+ Rpi3 - SSD 32Go + Stick Aeon Gen5 en Jeelink
+ 40 Modules Zwave + 25 modules 433 + 10 modules Xiaomi Home + 5 Caméras.

Avatar de l’utilisateur
BizZ62
Actif
Messages : 1510
Inscription : 16 juil. 2014, 19:17

Re: Heure de la dernière communication.

Message par BizZ62 » 18 janv. 2018, 14:38

Merci à tous pour ces éléments qui m'ont bien aidé à compléter mes virtuels de gestion de chauffage en y ajoutant le retour de communication des sondes ainsi que des alertes en cas de défaillance via un widget et des notifications ! ;)

Image
Jeedomien depuis 2014
Rpi3 - SSD 32Go + Stick Aeon Gen5 + RfxTrx + Gateway Xiaomi
+ Rpi3 - SSD 32Go + Stick Aeon Gen5 en Jeelink
+ 40 Modules Zwave + 25 modules 433 + 10 modules Xiaomi Home + 5 Caméras.

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

Re: Heure de la dernière communication.

Message par benj29 » 10 oct. 2018, 13:26

A tout hasard, même si cela n'est pas trop en lien, mais je suis retombé sur ce fil car je cherchais des infos sur des calculs liés au temps.

je cherche à calculer le delta de chauffe depuis 2 entrées de type "string".

On part de ça (au format string) :

Image

Et j'ai fait un bête scénario de code php (désolé, totalement débutant là dessus). j'ai rien dans les logs malgré "log".

Image

(que je passe sur une variable de même nom TempsChauffe).

Code : Tout sélectionner

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

$cmddebut = cmd::strtotime('#[Eau Chaude][Chauffe Eau][Date de début]#');
$valeurdbt = $cmddebut->execCmd();

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

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

$scenario->setData("TempsChauffe",$delta);

Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Heure de la dernière communication.

Message par Sartog » 12 oct. 2018, 09:35

Bonjour benj29,

Il te manque le ; à la fin de $delta = time_diff($valeurfin,$valeurdbt,m)
C'est une erreur bloquante, ça explique pourquoi tu n'as rien dans ton log.

De plus, il me semble que strtotime travail avec des dates au format US et non FR.

Je dois aller en réunion, j'essaierais d'approfondir ça cet am si j'ai le temps.
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

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

Re: Heure de la dernière communication.

Message par benj29 » 14 oct. 2018, 11:53

Hurmf, Sartog...
J'ai beau avoir mis le ; ... toujours erreur en orange et rien dans le log.

Code : Tout sélectionner

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

$cmddebut = cmd::strtotime('#[Eau Chaude][Chauffe Eau][Date de début]#');
$valeurdbt = $cmddebut->execCmd();

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

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

$scenario->setData("TempsChauffe",$delta);

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 14 oct. 2018, 14:20

Bonjour,

Tu essaies de faire quoi là ?

Code : Tout sélectionner

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

$cmddebut = cmd::strtotime('#[Eau Chaude][Chauffe Eau][Date de début]#');
$valeurdbt = $cmddebut->execCmd();

Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

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

Re: Heure de la dernière communication.

Message par benj29 » 14 oct. 2018, 14:22

Calculer l'écart en min de deux infos du type string, voir copie d'écran plus haut.

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


Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 14 oct. 2018, 14:49

Bonjour,

Sauf que je ne vois pas comment

Code : Tout sélectionner

cmd::strtotime
te retourne une commande valide sur laquelle tu puisses faire

Code : Tout sélectionner

$cmdfin->execCmd()
Il n'y a pas (à ma connaissance) de méthode strtotime dans la classe cmd
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 14 oct. 2018, 14:53

Pas tester mais

Code : Tout sélectionner

$cmdfin=cmd::humanReadableToCmd("#tacommande#");
$fin=$cmdfin->getCollectDate();
devrait être une piste plus fonctionnelle.
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

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

Re: Heure de la dernière communication.

Message par benj29 » 14 oct. 2018, 20:07

Hello,

J'ai tenté plusieurs pistes sans succès.

Ce code là part en "en cours" mais vraiment beaucoup de temps pour s'arrêter en erreur.

Code : Tout sélectionner

$cmdfin=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de fin]#");
$fin=$cmdfin->getCollectDate();

$cmddeb=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de début]#");
$dbt=$cmddbt->getCollectDate();

$scenario->setLog($fin-$dbt);
$scenario->setData("TempsChauffe",$fin-$dbt);
Celui là aussi part en erreur...

Code : Tout sélectionner

$cmdfin=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de fin]#");
$fin=$cmdfin->getCollectDate();

$cmddeb=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de début]#");
$dbt=$cmddbt->getCollectDate();

$scenario->setLog($dbt);
$scenario->setLog($fin);

$delta = time_diff($fin,$dbt,m);
$scenario->setLog($delta);

$scenario->setData("TempsChauffe",$delta);
Idem en erreur.

je trouve ces erreurs ?
Je trouve rien dans log scenario ou scenario_exec ...

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Heure de la dernière communication.

Message par tomdom » 14 oct. 2018, 20:12

Bonjour,

Déjà il y a une erreur là

Code : Tout sélectionner

$cmddeb=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de début]#");
$dbt=$cmddbt->getCollectDate();

$cmddeb versus $cmddbt
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

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

Re: Heure de la dernière communication.

Message par benj29 » 14 oct. 2018, 20:47

Euh c'est dimanche soir... joker !
Je suis vraiment bête là... lol.

Bon même corrigé :

Code : Tout sélectionner

$cmdfin=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de fin]#");
$fin=$cmdfin->getCollectDate();

$cmddeb=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de début]#");
$dbt=$cmddeb->getCollectDate();

$scenario->setLog($dbt);
$scenario->setLog($fin);

$delta = time_diff($fin,$dbt,m);
$scenario->setLog($delta);
$scenario->setData("TempsChauffe",$delta);
Erreur.

Le même scénario mais sans la fonction de time_diff ...

Code : Tout sélectionner

$cmdfin=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de fin]#");
$fin=$cmdfin->getCollectDate();

$cmddeb=cmd::humanReadableToCmd("#[Eau Chaude][Chauffe Eau][Date de début]#");
$dbt=$cmddeb->getCollectDate();

$scenario->setLog($dbt);
$scenario->setLog($fin);

$scenario->setLog($fin-$dbt);

$scenario->setData("TempsChauffe",$fin-$dbt);
Idem, erreur !

Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Heure de la dernière communication.

Message par Sartog » 15 oct. 2018, 12:01

Code : Tout sélectionner

$valeurfin = '11/10/2018 05:30';
$valeurdbt = '11/10/2018 05:22';

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

$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog($delta);
Ce code fonctionne.

Pour l'adapter a ton besoin, il suffit de le modifier pour récupérer les valeurs de tes commandes :

Code : Tout sélectionner

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

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

$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog($delta);
Ainsi tu aura le nombre de seconde écoulée entre les 2 dates.
Si tu veux des minutes, pas besoin de te faire un dessin :P

P.S.: Tous les setLog ne sont là que pour débuger
Version light (à tester):

Code : Tout sélectionner

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

$delta = $valeurfin - $valeurdbt;
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

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

Re: Heure de la dernière communication.

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

Hurmf, tu es sûr de ton coup ?
J'ai testé plein de trucs mais visiblement, je n'arrive pas à convertir au format

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);
$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog(strtotime($valeurfin));
$scenario->setLog(strtotime($valeurdbt));
$scenario->setData("TempsChauffe",$delta/60);
On voit que la récupération de la commande marche, mais pas la conversion...

Image

En tout cas merci de ton aide.

EDIT : j'ai tenté strftime et là j'ai déjà du mieux, y a bien la conversion en time.
Par contre la différence ne marche pas... (0).

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);
$delta = strftime($valeurfin) - strftime($valeurdbt);
//$scenario->setLog(strftime($valeurfin));
//$scenario->setLog(strftime($valeurdbt));
$scenario->setLog($delta);
$scenario->setData("TempsChauffe",$delta/60);
Image

Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Heure de la dernière communication.

Message par Sartog » 15 oct. 2018, 12:35

Mon test fonctionne, oui :

Code : Tout sélectionner

$valeurfin = '11/10/2018 05:30';
$valeurdbt = '11/10/2018 05:22';

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

$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog($delta);

Code : Tout sélectionner

[2018-10-15 11:55:30][SCENARIO] Start : Scenario lance manuellement.
[2018-10-15 11:55:30][SCENARIO] Exécution du sous-élément de type [action] : code
[2018-10-15 11:55:30][SCENARIO] Exécution d'un bloc code
[2018-10-15 11:55:30][SCENARIO] 11/10/2018 05:22
[2018-10-15 11:55:30][SCENARIO] 1541823720
[2018-10-15 11:55:30][SCENARIO] 11/10/2018 05:30
[2018-10-15 11:55:30][SCENARIO] 1541824200
[2018-10-15 11:55:30][SCENARIO] 480
[2018-10-15 11:55:30][SCENARIO] Fin correcte du scénario

Je n'explique pas ton problème de différence ...
Je vais essayer de créer un virtuel et de passer par la récupération des valeurs pour être au plus prêt de ton cas et voir si c'est ça qui pose problème ... mais là, le resto chinois m'appel :D
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)


Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Heure de la dernière communication.

Message par Sartog » 15 oct. 2018, 15:43

Merci :D

Bon, je ne comprends pas ton problème car moi ça fonctionne :

Code : Tout sélectionner

$scenario->setLog("------ Test avec dates inscrites dans le code ------");
$scenario->setLog("");
$valeurfin = '11/10/2018 05:30';
$valeurdbt = '11/10/2018 05:22';

$scenario->setLog("valeurdbt : ".$valeurdbt);
$scenario->setLog("strtotime : ".strtotime($valeurdbt));
$scenario->setLog("valeurfin : ".$valeurfin);
$scenario->setLog("strtotime :".strtotime($valeurfin));

$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog("delta : ".$delta);

$scenario->setLog("");
$scenario->setLog("------ Fin du 1er test ------");
$scenario->setLog("");
$scenario->setLog("");
$scenario->setLog("------ Test avec dates récupérés dans un virtuel ------");
$scenario->setLog("");
$valeurfin = cmd::byString("#[Maison][Test][Date fin]#")->execCmd();
$valeurdbt = cmd::byString("#[Maison][Test][Date début]#")->execCmd();

$scenario->setLog("valeurdbt : ".$valeurdbt);
$scenario->setLog("strtotime : ".strtotime($valeurdbt));
$scenario->setLog("valeurfin : ".$valeurfin);
$scenario->setLog("strtotime : ".strtotime($valeurfin));

$delta = strtotime($valeurfin) - strtotime($valeurdbt);
$scenario->setLog("delta : ".$delta);

$scenario->setLog("");
$scenario->setLog("------ Fin du 2nd test ------");
Me donne :

Code : Tout sélectionner

[2018-10-15 15:36:22][SCENARIO] Start : Scenario lance manuellement.
[2018-10-15 15:36:22][SCENARIO] Exécution du sous-élément de type [action] : code
[2018-10-15 15:36:22][SCENARIO] Exécution d'un bloc code
[2018-10-15 15:36:22][SCENARIO] ------ Test avec dates inscrites dans le code ------
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO] valeurdbt : 11/10/2018 05:22
[2018-10-15 15:36:22][SCENARIO] strtotime : 1541823720
[2018-10-15 15:36:22][SCENARIO] valeurfin : 11/10/2018 05:30
[2018-10-15 15:36:22][SCENARIO] strtotime :1541824200
[2018-10-15 15:36:22][SCENARIO] delta : 480
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO] ------ Fin du 1er test ------
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO] ------ Test avec dates récupérés dans un virtuel ------
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO] valeurdbt : 11/10/2018 05:22
[2018-10-15 15:36:22][SCENARIO] strtotime : 1541823720
[2018-10-15 15:36:22][SCENARIO] valeurfin : 11/10/2018 05:30
[2018-10-15 15:36:22][SCENARIO] strtotime : 1541824200
[2018-10-15 15:36:22][SCENARIO] delta : 480
[2018-10-15 15:36:22][SCENARIO]
[2018-10-15 15:36:22][SCENARIO] ------ Fin du 2nd test ------
[2018-10-15 15:36:22][SCENARIO] Fin correcte du scénario
Et le virtuel :
Capture.JPG
Capture.JPG (11.17 Kio) Consulté 600 fois
Comment sont alimentées tes infos date de début et date de fin ?
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité