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 !

Utilité et utilisation des tag depuis V3

Réservé à la création de scénarios dans JEEDOM
Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 13 août 2017, 22:43

J'ai donc mis à jour mon scénario de notification en fonction de l'utilisation du centre de message Jeedom et non d'un virtuel.

Le résultat donne ceci :

Code : Tout sélectionner

┌────────── Notifications du 13-08-2017
├───── Aquarium
│ 21:01:07 : La lumière de l'aquarium vient d'être éteinte. 
│ 15:01:05 : La lumière de l'aquarium est allumée. 
├─────
├───── Maison
│ 21:46:18 : Le changement de la cartouche Brita est pris en compte. 
│ 17:00:04 :  Le remplacement de la cartouche Brita est en retard de 3 jours
├─────
├───── Mode
│ 17:35:21 : [Alerte]  Sylvain est arrivé  
│ 17:35:09 : [Alerte]  Virginie vient d'arriver à la maison 
│ 10:05:42 : [Alerte]  Virginie vient de sortir de la maison 
│ 10:05:24 : [Alerte]  Sylvain est sorti  
├─────
└──────────
Pour obtenir ce résultat, voici le bloc code mis à jour :

Code : Tout sélectionner

/**
 * Type : Scénario
 * Fonction : Récupère les tags + explode le tag #msg# + random sur message à envoyer
 *			  Récupère les notifications de la centrale (virtuel), les mets en forme et les envoies.
 * Version : 1.0 (2017-08-09) (Modification)
 * Copyright : Sartog
 *
 * Cron : S/O
 * Déclencheur : Scénarios
 *
 * Condition(s) :	Horaire -> 24/24
 *					Mode	-> Tous
 *
 *
 * Changelog :
 *	V0.0 (2017-07-07) -> Création.
 *	V0.1 (2017-07-26) -> Ajout prise en compte centrale notification.
 *	V0.2 (2017-08-04) -> Prise en compte des sauts de ligne dans les messages matérialisés par ¤.
 *	V1.0 (2017-08-09) -> Utilisation du centre de message à la place d'un virtuel + ajout de groupe de message.
 *
 */

/** *************************** Variables ********************************* */

$tags = $scenario->getTags(); // Récupération des tags passés en paramètre.
$stop = false;



/** *************************** Traitement ********************************* */

/** ********** Vérification de la corélation des tags ********** */
if ($tags['#opt#'] == "") {

	$scenario->setLog("le paramêtre opt ne peut-être vide.");
	$stop = true;
}

if (($tags['#opt#'] == 0 || $tags['#opt#'] == 1) && $tags['#msg#'] == "") {

	$scenario->setLog("le message ne peut-être vide si opt vaut 0 ou 1");
	$stop = true;
}

if ($tags['#opt#'] == 2 && ($tags['#app#'] != 1 && $tags['#slack#'] != 1 && $tags['#smsV#'] != 1 && $tags['#smsS#'] != 1 && $tags['#tts#'] != 1)) {

	$scenario->setLog("Aucun choix de média pour envoyer le message de renseigné.");
	$stop = true;
}

if ($stop == true) {

	$tags['#stop#'] = 1;
	$scenario->setTags($tags);
}


/** ********** Extraction et traitement du message ********** */
if ($tags['#opt#'] == 0 || $tags['#opt#'] == 1 || $tags['#opt#'] == 3) {

	$msg = explode(" | ", $tags['#msg#']); // Récupération des différents messages espacés par |.
	$msg = $msg[array_rand($msg, 1)]; // Choix aléatoire du message.
	$msg = str_replace(" ¤ ", "\n", $msg); // Récupération des différentes lignes matérialisées par ¤.
	$msg = trim($msg, "\n"); // Nettoyage du message.
	$msg = str_replace("\"", "", $msg); // Suppression des "" entourant le(s) message(s) dans le tag.

	// MAJ des tags.
	$tags['#msg#'] = $msg;
	$scenario->setTags($tags);
}


/** ********** MAJ du centre de message Jeedom ********** */
if ($tags['#opt#'] == 0 || $tags['#opt#'] == 1) {

	// Liste des groupes authorisés à écrire plusieurs fois la même chose dans le centre de message Jeedom.
	$authGroupe = array("Mode","Système");

	// Extrait du groupe.
	$groupe = str_replace("\"", "", $tags['#groupe#']); // Suppression des "" entourant le(s) message(s) dans le tag.

	// Ajout d'un indicateur Alerte si le message est envoyé directement.
	($tags['#opt#'] != 0) ? $msg = "[Alerte] ".$msg : null;

	// Autorisation à certains scénario d'écrire plusieur fois dans le centre en ajoutant un timestamp.
	(in_array($groupe, $authGroupe) == true) ? $msg .= " ¤ ".time() : null;

	// MAJ du centre de message Jeedom.
	message::add('scr_'.$groupe, $msg);
}


/** ********** Envoi du centre de message Jeedom ********** */
if ($tags['#opt#'] == 2) {

	$msg = "┌────────── Notifications du ".Date('d-m-Y')."\n";

	// Récupération de la liste des "plugins" ayant générés un message.
	$listePlugin = message::listPlugin();

	foreach ($listePlugin as $value) {

		(strpos($value['plugin'],"scr_") !== false) ? $msg .= "├───── ".str_replace("scr_", "", $value['plugin'])."\n" : $msg .= "├───── ".$value['plugin']."\n";

		$plugin = message::byPlugin($value['plugin']);

		// Récupération des messages.
		foreach ($plugin as $message) {

			$msg .= "│ ".substr($message->getDate(), 11)." : ";
			(strpos($message->getMessage(),"¤") !== false) ? $msg .= trim(substr($message->getMessage(), 0, -13), "\n")."\n" : $msg .= trim($message->getMessage(), "\n")."\n";
			$msg = str_replace('\'', "'", $msg);
		}

		$msg .= "├─────"."\n";
	}

	$msg .= "└──────────";

	// MAJ des tags.
	$tags['#msg#'] = $msg;
	$scenario->setTags($tags);
}
Les paramètres, optionnels, passés par mes scénarios appelant ce scénario de notifications sont :

Code : Tout sélectionner

opt=0/1/2   app=0/1   slack=0/1   smsV=0/1   smsS=0/1   tts=0/1   groupe="string"   msg="string"
opt => 0 = centre de message only     |     1 = centre de message + envoi immédiat du message     |     2 = envoi centre de message     |     3 = envoi immédiat du 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)

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: Utilité et utilisation des tag depuis V3

Message par Antoinekl1 » 14 août 2017, 15:06

Sartog a écrit :
13 août 2017, 22:43
J'ai donc mis à jour mon scénario de notification en fonction de l'utilisation du centre de message Jeedom et non d'un virtuel.
ton script me plait bien, actuellement je passe par un IFTTT qui met à jour un tableau excel pour avoir une idée des points importants de ce qui se passe dans jeedom

l'avantage c'est que c'est externe, donc si jeedom plante j'ai encore le log

il y aurait moyen d'exporter automatique, en fin de journée par exemple, les infos ?
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 14 août 2017, 15:47

Antoinekl1 a écrit :
14 août 2017, 15:06

il y aurait moyen d'exporter automatique, en fin de journée par exemple, les infos ?
Si tu parle d'exporter le log, oui tu peux.
Tu as l'utilisation de message::all(); qui te permet de le faire (voir viewtopic.php?f=32&t=28413&start=40#p499305)
Dans mon code (à la fin), je mets en forme et tri par plugin les messages présent.
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)

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: Utilité et utilisation des tag depuis V3

Message par Antoinekl1 » 14 août 2017, 16:31

Sartog a écrit :
14 août 2017, 15:47
Antoinekl1 a écrit :
14 août 2017, 15:06

il y aurait moyen d'exporter automatique, en fin de journée par exemple, les infos ?
Si tu parle d'exporter le log, oui tu peux.
Tu as l'utilisation de message::all(); qui te permet de le faire (voir viewtopic.php?f=32&t=28413&start=40#p499305)
Dans mon code (à la fin), je mets en forme et tri par plugin les messages présent.
ok merci, je vais regarder ca

a quoi correspondent les autres options ?

app=0/1 slack=0/1 smsV=0/1 smsS=0/1 tts=0/1

j'ai du louper un truc, comment faite vous pour avoir la présentation avec tous les messages ?

je pensais que cela allait créer un log avec toutes les alertes envoyées
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 14 août 2017, 19:54

Les options "app=0/1 slack=0/1 smsV=0/1 smsS=0/1 tts=0/1" sont des tags que passe le scénario déclencheur pour indiquer les actions à réaliser par mon scénario de notification.

Pour avoir la présentation, c'est moi qui la réalise avec les codes suivants :

Code : Tout sélectionner

$msg = "┌────────── Notifications du ".Date('d-m-Y')."\n";
$msg .= "├───── ";
$msg .= "│ ";
$msg .= "└──────────";
Si tu veux créer un log, une fois tout ton centre de message dans ta variable $msg, tu peux faire un $scenario->setLog($msg);
Je ne te promet rien du résultat car je n'ai pas tester :P
Par contre, ça va inscrire le centre de message dans le scénario en cours, si tu veux l'inscrire dans un log spécifique il y a un moyen mais je ne sais plus lequel (et là je n'ai pas la possibilité de regarder plus en détail).
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)

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: Utilité et utilisation des tag depuis V3

Message par Antoinekl1 » 16 août 2017, 15:50

Bonjour à tous

Merci pour tes réponses @Sartog

Concernant les interactions, j'ai essayé de lancer un scenario avec un tag mais il reste vide, alors que j'utilise les tags entre scenario et cela fonctionne bien mais via une interaction ca semble coincer, même en mettant un tag : CHAINE="toto", dans le scenario appelé, j'ai juste un popup avec Votre choix : #CHAINE#

et il affiche désespérément ; Votre choix : #CHAINE#

Avez vous déjà essayé ?
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 16 août 2017, 16:00

Antoinekl1 a écrit :
16 août 2017, 15:50
Bonjour à tous

Merci pour tes réponses @Sartog

Concernant les interactions, j'ai essayé de lancer un scenario avec un tag mais il reste vide, alors que j'utilise les tags entre scenario et cela fonctionne bien mais via une interaction ca semble coincer, même en mettant un tag : CHAINE="toto", dans le scenario appelé, j'ai juste un popup avec Votre choix : #CHAINE#

et il affiche désespérément ; Votre choix : #CHAINE#

Avez vous déjà essayé ?
Bonjour Antoinekl1,

C'est un bug sur lequel je suis également tombé lors de mes tests.
Je l'ai remonté à la team Jeedom et ils ont corrigés le problème, il faut juste attendre la prochaine MAJ du core.
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)

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: Utilité et utilisation des tag depuis V3

Message par Antoinekl1 » 16 août 2017, 16:04

Sartog a écrit :
16 août 2017, 16:00
Bonjour Antoinekl1,

C'est un bug sur lequel je suis également tombé lors de mes tests.
Je l'ai remonté à la team Jeedom et ils ont corrigés le problème, il faut juste attendre la prochaine MAJ du core.
Super merci @Sartog , je vais arrêter là alors car je commençais à ne poser des questions :-)
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

Avatar de l’utilisateur
noodom
Actif
Messages : 982
Inscription : 13 juil. 2014, 17:25
Contact :

Re: Utilité et utilisation des tag depuis V3

Message par noodom » 19 août 2017, 08:16

Pour ma part j'ai contourné le problème en appelant un scénario sans tags depuis une interaction qui lui, va appeler les scénario souhaité avec les tags.


Envoyé en utilisant Tapatalk

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: Utilité et utilisation des tag depuis V3

Message par Antoinekl1 » 19 août 2017, 08:39

noodom a écrit :
19 août 2017, 08:16
Pour ma part j'ai contourné le problème en appelant un scénario sans tags depuis une interaction qui lui, va appeler les scénario souhaité avec les tags.


Envoyé en utilisant Tapatalk
Oui possible sauf si dans le tag tu veux mettre #valeur# ou il faut passer par une variable mais bon on va bien avoir une correction arrivée
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

morlong
Timide
Messages : 318
Inscription : 21 déc. 2015, 13:09
Localisation : Dijon

Re: Utilité et utilisation des tag depuis V3

Message par morlong » 21 août 2017, 16:40

Bonjour,
tout marche nickel merci pour le partage,
j'aurais juste une question bete:
comment fait t'on pour vider automatiquement le centre de message? (à 19h je lance l'envoi du centre sur mon tel (opt=2 app=1 smsM=1 smsS=0 tts=0) et je voudrais le vider ensuite)
merci
smart
Rfxcom
clé bluetooth *2
Zigate

Anonyme
Actif
Messages : 10082
Inscription : 09 août 2014, 12:15

Re: Utilité et utilisation des tag depuis V3

Message par Anonyme » 21 août 2017, 16:56

Contenu supprimé à la demande de son auteur

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 21 août 2017, 17:10

morlong a écrit :
21 août 2017, 16:40
Bonjour,
tout marche nickel merci pour le partage,
j'aurais juste une question bete:
comment fait t'on pour vider automatiquement le centre de message? (à 19h je lance l'envoi du centre sur mon tel (opt=2 app=1 smsM=1 smsS=0 tts=0) et je voudrais le vider ensuite)
merci
Bonjour,

Page 3 de ce même sujet (viewtopic.php?f=32&t=28413&start=40#p499616).

magicgg91 a écrit :
21 août 2017, 16:56
Bonjour,

Il me semble qu'un autre sujet parle du centre de messages.

En tout cas, ici c'est HS
En effet magicgg91, nous avons dévié ces derniers messages en parlant plus du centre de message que de TAG, je m'en excuse.
J'essayerais de faire attention dans mes prochains messages.
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)

morlong
Timide
Messages : 318
Inscription : 21 déc. 2015, 13:09
Localisation : Dijon

Re: Utilité et utilisation des tag depuis V3

Message par morlong » 21 août 2017, 17:11

Ben j'ai demandé ici car ca parlais de removeAll() mais je comprend pas comment on fait......
Sartog a écrit :
08 août 2017, 11:57
raqpub a écrit :
08 août 2017, 09:27
Ton code récupère bien le contenu. Du coup je pourrai faire les filtres (chronologiques...) que je voudrai avec du code.
Sans abuser de tes compétences ;-), sais -tu aussi comment vider tout ou partie de ce centre de message avec du code ?

Trop fort.
La fonction pour tout supprimer est removeAll($_plugin = '', $_logicalId = '', $_search = false).
Les 3 paramètres sont optionnels et te permettront de cibler plus précisément ce que tu souhaite effacer (tous les messages d'un plugin).

Code : Tout sélectionner

Pour tout supprimer : message::removeAll();
Pour supprimer tous les messages d'un plugin : message::removeAll("nom du plugin");

etc.
Si tu souhaites supprimer 1 ligne en particulier, il te faut
  • cibler ta ligne depuis un foreach (ou passer par une commande de type byId plutôt que All)
  • utiliser la fonction remove() lorsque le "pointeur" de ton foreach est sur cette ligne.
smart
Rfxcom
clé bluetooth *2
Zigate

morlong
Timide
Messages : 318
Inscription : 21 déc. 2015, 13:09
Localisation : Dijon

Re: Utilité et utilisation des tag depuis V3

Message par morlong » 21 août 2017, 17:22

C'est bon désolé, j'oubliais de mettre le point virgule.....ca fonctionne merci
smart
Rfxcom
clé bluetooth *2
Zigate

maconly34
Timide
Messages : 67
Inscription : 25 mai 2015, 18:41

Re: Utilité et utilisation des tag depuis V3

Message par maconly34 » 22 août 2017, 14:13

@Sartog. Penses tu que cela est aussi un bug ? :
je lance un scénario depuis un autre scénario qui passe en paramètre un tag all_volet=1. Cela fonctionne. Mais si l'exécution se fait par la condition "activation de scène" -> expression non valide. Alors que cette dernière fonctionne si je vire le test du tag.

Scénario appelant :
Image

TEST scénario destination :

Code : Tout sélectionner

#[Salon][Volet cuisine][Scene]# == 13  OU #all_volets# == 1

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 22 août 2017, 14:39

maconly34 a écrit :
22 août 2017, 14:13
@Sartog. Penses tu que cela est aussi un bug ? :
je lance un scénario depuis un autre scénario qui passe en paramètre un tag all_volet=1. Cela fonctionne. Mais si l'exécution se fait par la condition "activation de scène" -> expression non valide. Alors que cette dernière fonctionne si je vire le test du tag.
Bonjour Maconly34,

Cette erreur lors de l'exécution du scénario par la condition est liée à l’inexistence de ton tags #all_volet#.
Le scénario cherche à comparer une valeur avec quelque chose qui n'existe pas = erreur.
Le système de scénario est suffisamment bien fait pour que cela ne bloque pas le reste, mais il est vrai que ça limite l'utilisation.

Je n'ai pas encore eu le temps de regarder le code pour proposer une modification sur github, mais étant en vacance je vais essayer de m'en occuper (à moins que Loïc ou un membre de la Jeedom team passe par là et sache tout de suite la solution :P ).

En attendant, tu dois pouvoir contourner le problème en ajoutant un bloc code au tout début de ton scénario qui va tester l'existence du tag et, si inexistant, le créer (attention, le code ci-après à été testé vite fait car j'ai 150m de câble électrique à aller tirer :roll: ).

Code : Tout sélectionner

// Récupération des tags passés en paramètre.
$tags = $scenario->getTags();

// Vérification de l'existance du tag.
// Si ce dernier n'existe pas, on le créer avec la valeur souhaité.
(empty($tags['#all_volet#'])) ? $tags['#all_volet#'] = 0 : null;

// MAJ des tags avant exécution de la suite du scénario.
$scenario->setTags($tags);
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)

maconly34
Timide
Messages : 67
Inscription : 25 mai 2015, 18:41

Re: Utilité et utilisation des tag depuis V3

Message par maconly34 » 22 août 2017, 14:48

Merci.
Effectivement je savais bien que le tag n'existe que lors d'un appel du scénario source. Dommage que dans une condition OU cette non création du tag soit invalidante.
Je vais contourner le PB avec le même principe que toi mais sans création d'un tag temporaire -> je vais simplement séparer les conditions.
1 - Si tag == 1 -> action
2 Sinon si activation de scène == OK -> Action

Avatar de l’utilisateur
Masterfion
Actif
Messages : 1589
Inscription : 08 janv. 2015, 11:35
Localisation : Vallauris / Antibes

Re: Utilité et utilisation des tag depuis V3

Message par Masterfion » 22 sept. 2017, 17:31

Cette conversation n'est plus active déjà depuis 1 mois mais j'indique malgré tout ici un détail important sur l'utilisation des TAGS.

- Si vous testez #NomDuTag#=="xxx" et si le scénario ne reçoit aucun TAG alors l'expression sera jugée invalide
- Si vous testez "#NomDuTag#"=="xxx" et
> si le scénario ne reçoit aucun TAG alors le test sera "#NomDuTag#"=="xxx" (FALSE mais expression correcte)
> si le scénario reçoit le TAG alors le test sera ""xxx""=="xxx" (expression invalide)

Des actions seront menées côté Jeedom pour corriger ceci.
Dans l'attente, la solution simple et pratique est d'utiliser la fonction strtoupper() comme ceci :

- Si vous testez strtoupper(#NomDuTag#)=="XXX" et
> si le scénario ne reçoit aucun TAG alors le test sera "#NOMDUTAG#"=="XXX" (FALSE mais expression correcte)
> si le scénario reçoit le TAG alors le test sera "XXX"=="XXX" (TRUE et expression correcte)

Puisque les TAG sont sensibles à la casse, j'ai utilisé strtoupper() depuis le début pour éviter toute erreur... mais je n'ai constaté que très récemment que strtoupper() me permettait de contourner un bug que Loic et Sarakha ont pu confirmer hier.

Malheureusement les actions à mener pour corriger ceci vont probablement avoir un impact fort sur notre laxisme dans la rédaction de nos scénarios : va falloir qu'on utilise les QUOTE ( " ) systématiquement puisque jusque ici Jeedom rectifiait nos erreurs.
Beta-Testeur JEEDOM
Proxmox Core i5 Raid1 mSATA | Synology 916+

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

Re: Utilité et utilisation des tag depuis V3

Message par Sartog » 22 sept. 2017, 17:44

@Masterfion, merci pour ces informations simplifiant la problématique d'existence des tags !

Je n'ai jamais pensé à la syntaxe "#NomDuTag#", bien vu (en même temps, je n'ai pas vraiment l'habitude d'encadrer mes variables de " :p) !!
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