Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Le groupe des Helpers est present pour vous aidez, n'hésitez pas à poser des questions ;)

Toute la communauté vous remercie

Récupérer l'état du équipement passé en Tag

Réservé à la création de scénarios dans JEEDOM
Répondre
Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Récupérer l'état du équipement passé en Tag

Message par Weastbug » 08 sept. 2018, 23:35

Bonjour,


Je n'arrive pas a récupérer l'état d'un équipement que je passe en tag lors du lancement du scénario afin de l'exploiter dans un IF

Je fais passer le nom de l'équipement via le tag suivant : capteur="#trigger#" lors de l'appel du scénario, je peux récupérer se tag dans le scénario pour envoyer le nom de l'équipement par message mais lorsque je veux l'utiliser dans un IF cela ne fonctionne pas, il est reconnu comme une chaîne de caractères.

Je ne cherche pas a récupérer l'état du trigger qui a déclenché le scénario triggerValue(#trigger) mais un trigger d'Alarme que je fais passer en Tag lors de l'appel du scénario.

Je peux faire passer l'état au moment du déclenchement via le tag capteur="##trigger##" mais cela me convient pas car il est figé hors je souhaite le tester dans un IF imbriqué dans une boucle


J'ai essayé de faire mon IF avec:
#capteur#
##capteur##
#variable(Declencheur)# après avoir passé #capteur# dans la variable Declencheur
str_replace("\"","", #capteur#)
sprintf('#%s#',#capteur#)

sans résultat... A chaque fois il semble être reconnu comme une chaîne de caractère des ' " ' placé avant ou après les ' # '

Code : Tout sélectionner

[2018-09-09 00:55:16][SCENARIO] Evaluation de la condition : ["#[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]#" == 1] = Faux

Merci d'avance.
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 10 sept. 2018, 09:22

Bonjour,

Peux-tu mettre un capture de ton scénario afin de voir ce que tu mets dans ton IF + une capture montrant comment tu passe le tag, stp ?
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)

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 10 sept. 2018, 10:07

Salut,

La capture du scénario
Capture Tag Trigger Scénario.jpg
Capture Tag Trigger Scénario.jpg (91.44 Kio) Consulté 602 fois

Passage de la commande en Tag au déclenchement (via le pluggin Alarme)
Capture Tag Trigger Déclenchement.jpg
Capture Tag Trigger Déclenchement.jpg (31.65 Kio) Consulté 602 fois

Merci.
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 10 sept. 2018, 10:16

2 choses me chagrines :
  • Faut-il passer #trigger# avec des guillemets ?
  • Pour moi, sprintf sert à retourner une chaîne construite par cette fonction. Tu ne peux pas la comparer à 1
Que cherches-tu à comparer exactement dans ce IF ?
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)

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 10 sept. 2018, 11:53

Sartog a écrit :
10 sept. 2018, 10:16
  • Faut-il passer #trigger# avec des guillemets ?
Obligé car la #trigger# peut contenir des espaces, par exemple [Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage] si je ne met pas #trigger# entre guillemet le tag #capteur# récupéré par le scénario est [Salle.

Sartog a écrit :
10 sept. 2018, 10:16
  • Pour moi, sprintf sert à retourner une chaîne construite par cette fonction. Tu ne peux pas la comparer à 1
Oui pour moi c'est la base de mon problème, mon capteur est devenu une chaîne quand je le fais passer en tag a cause des guillemets et je ne sais pas comment l'exploiter en temps que commande dans un IF par contre dans un message pas de souci (normal c'est une chaîne..)

Sartog a écrit :
10 sept. 2018, 10:16
Que cherches-tu à comparer exactement dans ce IF ?
Je cherche a vérifier si l'état du capteur qui a déclenché l'alarme est toujours à 1 passé un certain délai.


Mais du coups en l'expliquant je me dit plutôt que de passer le trigger en tag au lancement du scénario j'assigne #trigger# (sans guillemet) à la variable Declancheur avant de lancer mon scénario et j'utilise #variable(Declencheur)# == 1 dans mon IF.

Je vais tester ça de la journée si possible.
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 11 sept. 2018, 02:04

Bhen non ça ne fonctionne pas mieux en passant la commande dans une variable avant de lancer le scénario et en la récupérant dans le IF le contenu de la variable est a nouveau une chaîne...

Code : Tout sélectionner

[2018-09-11 01:57:48][SCENARIO] Evaluation de la condition : [#"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1] = #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1
[2018-09-11 01:57:48][SCENARIO] Expression non valide : #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 11 sept. 2018, 19:55

Weastbug a écrit :
11 sept. 2018, 02:04
Bhen non ça ne fonctionne pas mieux en passant la commande dans une variable avant de lancer le scénario et en la récupérant dans le IF le contenu de la variable est a nouveau une chaîne...

Code : Tout sélectionner

[2018-09-11 01:57:48][SCENARIO] Evaluation de la condition : [#"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1] = #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1
[2018-09-11 01:57:48][SCENARIO] Expression non valide : #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# == 1
Ok, si j'ai bien compris ton scénario récupère la commande ayant déclenché l'alarme via le tag.
Ce même scénario doit récupérer la valeur de cette commande, sauf que cette dernière n'est pas interprétable par le scénario car une chaîne...

Hmmm, je vais essayer d'y jeter un œil et j'edit ce message.
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)

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 11 sept. 2018, 20:55

Oui c'est l'idée et c'est la même si je sort le nom de la commande dans un variable et la récupère dans le scénario...

Je viens de tenter de stocker l'état du capteur dans une variable via Declancheurvaleur = #variable(DeclencheurIncendie)#
Resultat:

Code : Tout sélectionner

[2018-09-11 20:59:46][SCENARIO] Affectation de la variable  DeclencheurValeur => #[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]# = #[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]#
C'est stoqué sous forme de texte et non l'état du capteur

Du coups le IF variable(DeclencheurValeur) == 1

Code : Tout sélectionner

[2018-09-11 20:59:46][SCENARIO] Evaluation de la condition : ["" == 1] = Faux
Peux être qu'il y a moyen en "Code" de check l'état de la commande et le stocker le résultat dans une variable mais je ne sais pas trop comment faire...

J'ai tenté sans succès:
DeclencheurCMD = #[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]# dans le scénario
Puis bloc code:

Code : Tout sélectionner

$temp = $scenario->getData($DeclencheurCMD);
$cmd = cmd::byString($temp);
$value = $cmd->execCmd();
$scenario->setData("DeclencheurValeur", $value);
Résultat:

Code : Tout sélectionner

[2018-09-11 21:39:44][SCENARIO] Exécution d'un bloc code
[2018-09-11 21:39:44][SCENARIO] La commande n'a pas pu être trouvée :  =>
Je tourne en rond....
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 11 sept. 2018, 23:40

J'ai fais quelques tests rapide mais je n'arrive pas à reproduire ton problème.
Mais je n'ai pas suffisamment de temps de dispo pour tester de manière approfondis (nourrisson de 5 jours à la maison).

Si tu es à l'aise avec le bloc code, tu peux essayer d'utiliser cmd::byString($string);

Code : Tout sélectionner

'Récupération des tags passés.
$tags = $scenario->getTags();

'Enregistrement de la valeur de la commande passée en objet.
$valeur = cmd::byString($tags['#capteur#']);

'Création d'un tag avec la valeur récupérée.
$tags['#valeurCapteur#'] = $valeur;

'MAJ des tags.
$scenario->setTags($tags);

Si cela fonctionne, il ne te restera plus qu'à utiliser le tag créé (#valeurCapteur# dans cet exemple) dans ton scénario comme n'importe quel tag.
Si ça ne fonctionne pas, debug le code php en insérant printf (de mémoire) afin d'écrire dans le log scenario (dispo avec les autres log système).
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)

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 13 sept. 2018, 00:20

Je n'ai pas trop eu le temps de m'y pencher aujourd'hui, en tout cas merci a toi d'avoir pris du temps et félicitation ;)

J'ai testé ton code mais #capteur# ne contient pas les #

Code : Tout sélectionner

[2018-09-12 23:45:32][SCENARIO] La commande n'a pas pu être trouvée : #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"# => #"[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]"#
Je n'ai pas galéré a trouver la syntaxe exacte pour rajouter les # je l'ai mis en dur pour le test

Code : Tout sélectionner

$tags = $scenario->getTags();
$valeur = cmd::byString('#[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]#');
$tags['#valeurCapteur#'] = $valeur;
$scenario->setTags($tags);
Mon IF #valeurCapteur# == 1 ne fonctionne pas mieux:

Code : Tout sélectionner

[2018-09-12 23:55:59][SCENARIO] Evaluation de la condition : ["" == 1] = Faux
Je vais voir passer le code en log, j'avais trouvé les commandes hier mais j'ai collé ton code par dessus en pensant l'avoir copié collé ailleurs :p

En tout cas merci pour ton aide et y a rien d'urgent profite de ton petit.
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 13 sept. 2018, 11:07

Autant pour moi, j'ai l'impression d'avoir oublié un truc (ça fait longtemps que je n'ai pas utiliser ces fonctions php).

Essais avec

Code : Tout sélectionner

$valeur = cmd::byString('#[Salle à Manger][39FGSD-002 Smoke Sensor CE][Sabotage]#')->execCmd();
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)

Weastbug
Timide
Messages : 57
Inscription : 17 févr. 2016, 16:30

Re: Récupérer l'état du équipement passé en Tag

Message par Weastbug » 15 sept. 2018, 20:16

Merci a toi, j’aurai bien galéré sur ce truc mais ça y est enfin! :)

ll manquais effectivement "->execCmd()"

Tags de lancement du scénario:

Code : Tout sélectionner

capteur="#trigger#"
Dans le scénario bloc code:

Code : Tout sélectionner

$tags = $scenario->getTags();
$cmd = cmd::byString(sprintf('#%s#',str_replace("\"","", $tags['#capteur#'])))->execCmd(); // Suppression des " et rajout des #
$tags['#valeurCapteur#'] = $cmd;
$scenario->setTags($tags);
If:

Code : Tout sélectionner

#valeurCapteur# == 1

Encore merci , sans toi surement que je pataugerai encore dans la semoule :)
Jeedom Mini+ Zwave - RFXCOM RFXtrx433E - JPI

RFX433:
Prises Flamingo
Sondes Oregon

Zwave:
Thermostat Secure SRT321
Qubino ZMNHAD1
Fibaro FGFS-101 FGSD-002 FGBS-001 FGMS-001
POPP Sirène extérieure

Divers:
Legrand Ecocompteur - Foscam Fi9828P

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: Récupérer l'état du équipement passé en Tag

Message par Sartog » 15 sept. 2018, 21:43

De rien, content d'avoir réussis à t'aider
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 2 invités