Niveau de vigilance actuellement

Bonjour,

Voici mon problème: Je cherche à créer un scénario de protection en cas de vents violents.
Pour ce faire, je peux utiliser soit la commande Vigilance - Vent violent niveau avec en condition #[Maison][Météo][Vigilance - Vent violent niveau]# > 2, soit la commande Vigilance - Vent violent conditions avec en conditions #[Maison][Météo][Vent violent conditions]# != ‹ Vert › && not(#[Maison][Météo][Vent violent conditions]# matches ‹ /Jaune/ › )

Cependant, si je regarde actuellement ces commandes j’ai le résultat suivant:
Niveau: 3
Conditions: Orange. Vert: 00:00 - 18:00. Orange: 18:00 - 00:00

Ainsi, mon scénario est pour Jeedom valable pour toute la journée, alors que Météo France m’indique que cette vigilance début uniquement à partir de 18h. Aussi, est-ce que quelqu’un pourrait m’expliquer comment lui faire comprendre qu’il ne doit s’appliquer qu’à partir de 18h (ou même mieux: une heure avant)?

Merci d’avance

Bien cordialement

Étrange… Pour moi, le niveau correspond au niveau en temps reel.
Essaie peut être d’historiser la commande niveau pour voir quand la valeur change.

Norbert

Bonjour,

J’ai exactement le même problème avec cette commande.

Je passe par un bloc code pour extraire les infos utiles de la commande mais j’envoie un message dès qu’il y a une vigilance prévue et non pas quand la vigilance commence (car il y a souvent un décalage de qq heures dans la réalité).

Merci pour ces retours
@ngrataloup: la valeur change à minuit, par contre, je sais que les états repasseront en vert dès que l’alerte sera terminée (dans les cas où elle est levée en cours de journée)
@Madcow: pourrais-tu me montrer à quoi ressemble ce bloc code et comment le traiter derrière, que j’essaie de l’adapter à ma conf malgré mes connaissances quasi inexistantes en la matière :crazy_face:?

Bonjour,

Bloc code (ta condition « actuelle » de vigilance c’est $ar_VigilanceOrage[0]) :

$VigilanceOrage = cmd::byString('#[Maison][XXXXXX_MeteoFrance][Vigilance - Orages conditions]#')->execCmd();


//utilisation d'un Regex pour explode selon ":" ou " . " ou "-"
$ar_VigilanceOrage = preg_split("/(:  )|[.] |( - )/",$VigilanceOrage);

$texteVigilanceOrage = NULL;

foreach($ar_VigilanceOrage as $key => $value){
	 if(in_array($ar_VigilanceOrage[$key],array("Vert","Jaune","Orange","Rouge")) && ($key !=0)) {
		if(($ar_VigilanceOrage[$key+2]) != "00:00") {
			$texteVigilanceOrage .= 'De ' .$ar_VigilanceOrage[$key+1]. ' à ' .$ar_VigilanceOrage[$key+2] .' : ' .'Vigilance Orage ' .'--> ';
		}
        else {
			$texteVigilanceOrage .= 'Après ' .$ar_VigilanceOrage[$key+1]. ' : ' .'Vigilance Orage ' .'--> ';
		}
		switch ($ar_VigilanceOrage[$key]) {
			case "Vert" :
				$texteVigilanceOrage .= '&' .'#x1F7E2' ."\n";
				break;
			case "Jaune" :
				$texteVigilanceOrage .= '&' .'#x1F7E1' ."\n";
				break;
			case "Orange" :
				$texteVigilanceOrage .= '&' .'#x1F7E0' ."\n";
				break;
			case "Rouge" :
				$texteVigilanceOrage .= '&' .'#x1F534' ."\n";
				break;
		}
	}
}

$scenario->setLog('__texteVigilanceOrage'.' -> '.$texteVigilanceOrage);
$tags = $scenario->getTags();
$tags['#Texte_Vigilance_Orage#'] = $texteVigilanceOrage;
$tags['#Condition_Vigilance_Orage#'] = $ar_VigilanceOrage[0];
$scenario->setTags($tags);

Dans un scénario qui reboucle toutes les 70 min pour déterminer si les horaires de vigilance ont changé (car mon déclencheur de scénario est du type #[Maison][XXXXXX_MeteoFrance][Vigilance - Orages niveau]# donc si le niveau de vigilance ne change pas le scénario n’est pas appelé de nouveau) :

Le bloc-code correspond aux emojis (à placer en tout début de scénario) est le suivant :

//Pour utilisation emoji https://unicode.org/emoji/charts/full-emoji-list.html

$tags = $scenario->getTags();

//$tags['#LogoRouge#'] = '&' .'#x1F534';
//$tags['#LogoOrange#'] = '&' .'#x1F7E0';
//$tags['#LogoJaune#'] = '&' .'#x1F7E1';
//$tags['#LogoVert#'] = '&' .'#x1F7E2';

$tags['#LogoFlocon#'] = '&' .'#x2744';
$tags['#LogoNeige#'] = '&' .'#x1F328';
$tags['#LogoTornade#'] = '&' .'#x1F32A';
$tags['#LogoOrage#'] = '&' .'#x1F329';
$tags['#LogoThermometre#'] = '&' .'#x1F321';
$scenario->setTags($tags);

J’appelle ensuite les Emojis par tag.
Pas d’autre choix que de procéder ainsi sinon le code des Emoji est converti dans le scénario et cela ne fonctionne pas par la suite.

Je passe par un trigger car je gère toutes les vigilances dans un unique scénario.

Ca donne ça dans Telegram :

image

2 « J'aime »

Bien sympa ton petit truc, tu devrais le mettre dans la section tuto.
J’en ai fait quelques uns en bloc code et envois vers telegram…

Je me demande si je vais pas pomper ton truc pour ce genre d’info tiens ! :wink:

Milles mercis pour ce retour :grin:
Je n’ai plus qu’à prendre un doliprane et m’armer de patience pour adapter à mon besoin vu mon niveau en la matière :crazy_face:

De rien.

C’est un cas d’école sur plusieurs sujets assez répandus donc formateur : cela vaut la peine de vider la boîte de paracetamol :wink:

1 « J'aime »

Question bête: comment mettre un $tags dans une valeur de variable? :stuck_out_tongue_closed_eyes:

J’ai vu ta demande en PM, mais je préfère répondre sur le sujet pour que tout le monde en profite.

Ta demande initiale était de pouvoir déterminer l’heure de début de la vigilance (donc niveau d’alerte autre que vert).

Pour récupérer dans un tag « Debut_Vigilance » cette heure :


$VigilanceOrage = cmd::byString('#XXXXXXX_MeteoFrance][Vigilance - Orages conditions]#')->execCmd();

$ar_VigilanceOrage = preg_split("/(:  )|[.] |( - )/",$VigilanceOrage);

$texteVigilanceOrage = NULL;

foreach($ar_VigilanceOrage as $key => $value){
	 if(in_array($ar_VigilanceOrage[$key],array("Jaune","Orange","Rouge")) && ($key !=0)) {
		$debut_vigilance = $ar_VigilanceOrage[$key+1];
		break;
	}
}

$debut_vigilance = str_replace(":","",$debut_vigilance);

$tags = $scenario->getTags();
$tags['#Debut_Vigilance#'] = $debut_vigilance;
$tags['#Condition_Vigilance_Orage#'] = $ar_VigilanceOrage[0];
$scenario->setTags($tags);

Par exemple si j’ai :

Jaune. Jaune:  17:00 - 20:00. Rouge:  06:00 - 17:00. Vert:  20:00 - 00:00

je vais récupérer dans le tag : 1700.

Par exemple si j’ai :

Jaune. Vert:  06:00 - 17:00. Jaune:  18:00 - 20:00. Vert:  20:00 - 00:00

je vais récupérer dans le tag : 1800.

1 « J'aime »

Voir dans ma capture de scénario pour voir comment on attribue ou supprime une variable.

Pour sa valeur c’est tout simplement tag(nom_du_tag) (voir documentation Scénarios).

Top (je comptais bien faire un retour ici quand tout sera OK :wink:)
Par contre, oui, je ne sais pas comment exploiter ces tags dans le reste du scénario (dans le bloc A: , mettre le niveau d’alerte dans une variable…), oui, je suis plus que novice avec les champs Code :stuck_out_tongue_closed_eyes:

Résultat :

[2023-10-20 13:00:42][SCENARIO] -- Start : Scenario lance manuellement.
[2023-10-20 13:00:42][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-10-20 13:00:42][SCENARIO] Mise à jour du tag #TEST# => 1800
[2023-10-20 13:00:42][SCENARIO] - Exécution du sous-élément de type [condition] : at tag(TEST)
[2023-10-20 13:00:42][SCENARIO] Evaluation de la condition : [1800] = 1800
[2023-10-20 13:00:42][SCENARIO] Tâche :  2389  programmée à :  2023-10-20 18:00:00
[2023-10-20 13:00:42][SCENARIO] Fin correcte du scénario

Attribuer une variable

Il faut vraiment que tu lises la documentation des Scénarios tout est dedans.

Merci, bah je comprends pas, c’est pourtant ce que j’essayais…



:thinking:

Il faut la copie d’écran du scénario + ton bloc code.

EDIT : pas vu désolé :wink:

Le tag c’est Texte_Vigilance_Vent et non pas texteVigilanceVent (qui est la variable du bloc code).

Le nom du tag c’est le truc entre « # » dans le bloc code.

EDIT : et désolé je met des majuscules partout ce qu’il ne faut pas faire normalement en programmation.

EDIT2 : regarde ma capture d’écran de scénario.

On ne se comprend pas: ce que je voudrais mettre en variable (et dans le champs A:), c’est les tags qui ressortent du code :wink:
Désolé d’être un boulet…

Je t’ai déjà indiqué comment faire.

Voilà comment faire, mais ensuite prend le temps d’y réfléchir.

Et bien je confirme, je suis vraiment un boulet! :stuck_out_tongue_closed_eyes: (un café et ça va mieux)
Merci beaucoup pour tes explications et ta patience :slightly_smiling_face:
Il y a encore un truc qu’il faut que je m’explique pour le deuxième bloque que tu as envoyé (ça a pas l’air de fonctionner au premier abord, mais je vais prendre le temps de réfléchir avant que passer encore plus pour un assisté fini :crazy_face:)

Et bien le teubé du jour (ça ne me réussi pas de me lever au milieu de la nuit pour faire un post sur le forum et d’être réveillé aux aurores par un coup de fil :stuck_out_tongue_closed_eyes:) te remercie très sincèrement pour ton aide précieuse, tes compétences et ta gentillesse, car ton bout de code va grandement aider à la gestion optimale de mes ouvrants en fonction des alertes météo :wink: