[TUTO] RTE Tempo - Envoyer un récap sur Telegram

C’est OK si je vire la partie Log

une autre erreur : $scenario->setTags($tags);

celle la je l’avais corrigée lol

je regarde ici Jeedom v4 Petits codes entre amis | Jeedom by KiboOst pour avoir quelques tuyaux :wink:

La partie logs est ko en virant la ligne de commentaire inutile ?
Bizarre, mes tests étaient ok chez moi. A voir.

$infos = array("Présence", "Sabotage", "Luminosité");

array_map(function($info, $info_jeedom) use ($scenario) {
  $scenario->setLog($info . ' : ' . $info_jeedom);
}, $infos, $infos_jeedom);

[2023-03-28 01:41:09][SCENARIO] Présence : 0
[2023-03-28 01:41:09][SCENARIO] Sabotage : 1
[2023-03-28 01:41:09][SCENARIO] Luminosité : 155

Ca a l’air bon a present meme les logs, mais je les aie en double ??
image

Sans doute car tu l’as 2 fois dans ton code :innocent:

Punaise, j’ai compris ton code !
Je nettoie mon bordel entre les commentaires et tout et je viens le poser…

Mais là ca fonctionne ! SUPER un GRAND MERCI

Voilà le code suite aux remarque de @noodom !

J’en ai encore un peu mal au cerveau mais ca m’a permis d’apprendre plein de trucs !
Merci aussi à @Phpvarious

Aussi à Kibbost car son site m’a permis aussi de découvrir des trucs

Bon ben je suis encore loin de devenir dev php mais bon sans notion j’ai qd même réussi mon petit truc qui a présent est forcément plus pro puisque des pros s’y sont penchés pour améliorer lisibilité, facilité de partage, optimisation…

GRAND MERCI à eux

Voila le code

// Récupération du tag créé dans le bloc action du scénario
$tags = $scenario->getTags();

// Récupération du nom de la commande Tempo de votre equipement RTE Tempo
$eqTempo = $tags['#widgetTempo#'];

// Liste des commandes infos à récupérer depuis equipement Tempo
$infos = array("Aujourdhui", "Demain", 
               "Jours Bleus restants", "Jours Blancs restants", "Jours Rouges restants",
               "Total jours Bleus", "Total jours Blancs", "Total jours Rouges");

// Création Tableau des valeurs infos récupérées de l'équipement Tempo
$infos_jeedom = array_map(function($info) use ($eqTempo) {
  $cmd_info = '#' . $eqTempo . '[' . $info . ']#';
  return cmd::byString($cmd_info)->execCmd();
}, $infos);

// Log des commandes infos du plugin RTE
array_map(function($info, $info_jeedom) use ($scenario) {
  $scenario->setLog($info . ' : ' . $info_jeedom);
}, $infos, $infos_jeedom);

// Liste des icônes
/*
$iconeBleu = '&' . '#128998';
$iconeBlanc = '&' . '#11036';
$iconeRouge = '&' . '#128997';
$liste_icones = array($iconeBleu, $iconeBlanc, $iconeRouge);
*/
$liste_icones = array('&' . '#128998', '&' . '#11036', '&' . '#128997');
$couleurs_uk = array("BLUE", "WHITE", "RED");

// Début Construction de ce qui va être envoyé

$journees = '<b>*** EDF Tempo ***</b>' . "\n";
$bilan = '<b>Reste :</b>' . "\n";

// Création du message
$journees .= 'Aujourd\'hui : ' . str_replace($couleurs_uk, $liste_icones, $infos_jeedom[0]). "\n";
$journees .= 'Demain : ' . str_replace($couleurs_uk, $liste_icones, $infos_jeedom[1]). "\n";

$bilan .= $liste_icones[0] . ' : ' . $infos_jeedom[2] . ' / ' . $infos_jeedom[5] . "\n"
  	   . $liste_icones[1] . ' : ' . $infos_jeedom[3] . ' / ' . $infos_jeedom[6] . "\n" 
  	   . $liste_icones[2] . ' : ' . $infos_jeedom[4] . ' / ' . $infos_jeedom[7] . "\n";

// Concaténation de l'info jour et du bilan, celui qui ne veut pas le bilan laisse juste =$journees;
$messages = $journees . "\n" . $bilan;

// Création du tag à passer au scénario pour l'action d'envoi
$tags['#tosend#'] = $messages;

// sauvegarde des tags
$scenario->setTags($tags);

A supprimer (inutile) dans le array_map des logs :

$cmd_info = '#' . $eqTempo . '[' . $info . ']#';

Petit ajout pour ceux que cela intéressent :wink:

Comme on va arriver à la fin des jours blancs et rouge, inutile de recevoir chaque jour qu’on est en bleu lol

du coup vous pouvez rajouter cela

// Concaténation de l'info jour et du bilan, celui qui ne veut pas le bilan laisse juste =$journees;
$messages = $journees . "\n" . $bilan . "\n";

$tags['#envoi#'] = "ok";

// Teste si il reste des jours W or R et dans ce cas fin d'envoi
if ($infos_jeedom[3] == 0 && $infos_jeedom[4] == 0) {
   $messages .= "Il ne reste que des jours " . $liste_icones[0] . "\n" . "Fin d'envoi journalier de ce rapport.";
   $tags['#envoi#'] = "nok";
}

Et dans le scénario j’ai un bloc SI avec tag(envoi) == 'ok'

Salut,

A première vue cela ne va que rajouter la phrase suivante à ton rapport :

Il ne reste que des jours [CARRE BLEU]
Fin d'envoi journalier de ce rapport.

Mais cela ne va pas stopper l’exécution du scénario et tu vas continuer de les recevoir. Il manque quelque chose à ton post ?

Exacte, j’ai ajouté une condition dans le scénario
Bien vu my bad !

Salut,
Et pourquoi ne fais-tu pas comme moi dans ton scénario ?
Celui-ci commence par le test suivant :

SI #aujourdhui# in ['WHITE','RED'] || #demain# in ['WHITE','RED']
ALORS

De la sorte, quelque soit la période de l’année, si aujourd’hui et demain sont bleus, je ne m’envoie pas de message.
Seuls les jours « chers » me sont signalés.

WAF veut le rapport tous les jours.
C la ministre des finances :rofl:

Donc, plus qu’à obéir.
Et en été, tu lui envoies que des infos sans intérêt ?

Non j’ai modifié des qu’il n’y a plus de jour rouge et blanc un dernier rapport est envoyé et ensuite plus rien jusqu’a retour des jr et jw

Salut
Ton code m’intéresse beaucoup.
Il y a beaucoup de message dans ce post et je ne sais pas voir lequel est le bon à récupérer.
Le premier message a-t-il été mis à jour pour récupérer le code le plus à jour ou faut il remonter le fil de discussion?
Merci à toi

// Récupération du tag créé dans le bloc action du scénario
$tags = $scenario->getTags();

// Récupération du nom de la commande Tempo de votre equipement RTE Tempo
$eqTempo = $tags['#widgetTempo#'];

// Liste des commandes infos à récupérer depuis equipement Tempo
$infos = array("Aujourdhui", "Demain", 
               "Jours Bleus restants", "Jours Blancs restants", "Jours Rouges restants",
               "Total jours Bleus", "Total jours Blancs", "Total jours Rouges");

// Création Tableau des valeurs infos récupérées de l'équipement Tempo
$infos_jeedom = array_map(function($info) use ($eqTempo) {
  $cmd_info = '#' . $eqTempo . '[' . $info . ']#';
  return cmd::byString($cmd_info)->execCmd();
}, $infos);

// Log des commandes infos du plugin RTE
array_map(function($info, $info_jeedom) use ($scenario) {
  $scenario->setLog($info . ' : ' . $info_jeedom);
}, $infos, $infos_jeedom);

// Liste des icônes
/*
$iconeBleu = '&' . '#128998';
$iconeBlanc = '&' . '#11036';
$iconeRouge = '&' . '#128997';
$liste_icones = array($iconeBleu, $iconeBlanc, $iconeRouge);
*/
$liste_icones = array('&' . '#128998', '&' . '#11036', '&' . '#128997');
$couleurs_uk = array("BLUE", "WHITE", "RED");

// Début Construction de ce qui va être envoyé

$journees = '<b>*** EDF Tempo ***</b>' . "\n";
$bilan = '<b>Reste :</b>' . "\n";
$tags['#envoi#'] = "ok";

// Création du message
$journees .= 'Aujourd\'hui : ' . str_replace($couleurs_uk, $liste_icones, $infos_jeedom[0]). "\n";
$journees .= 'Demain : ' . str_replace($couleurs_uk, $liste_icones, $infos_jeedom[1]). "\n";

$bilan .= $liste_icones[0] . ' : ' . $infos_jeedom[2] . ' / ' . $infos_jeedom[5] . "\n"
  	   . $liste_icones[1] . ' : ' . $infos_jeedom[3] . ' / ' . $infos_jeedom[6] . "\n" 
  	   . $liste_icones[2] . ' : ' . $infos_jeedom[4] . ' / ' . $infos_jeedom[7] . "\n";

// Concaténation de l'info jour et du bilan, celui qui ne veut pas le bilan laisse juste =$journees;
$messages = $journees . "\n" . $bilan . "\n";

// Teste si il reste des jours W or R et dans ce cas fin d'envoi
if ($infos_jeedom[3] == 1 && $infos_jeedom[4] == 0) {
   $messages .= "Il ne reste que des jours " . $liste_icones[0] . "\n" . "Fin d'envoi journalier de ce rapport.";
}
// Teste si il reste des jours W or R et dans ce cas fin d'envoi
if ($infos_jeedom[3] == 0 && $infos_jeedom[4] == 0) {
   $tags['#envoi#'] = "nok";
}
// Création du tag à passer au scénario pour l'action d'envoi
$tags['#tosend#'] = $messages;

// sauvegarde des tags
$scenario->setTags($tags);

Un grand merci
Je joue de suite avec ça ! :slight_smile:

j’ai réussi à faire fonctionner celui en début de post mais pas le dernier posté ci dessus.
J’ai sans doute oublié quelque chose, dans le log je vois bien le bilan mais pas d’envoi

------------------------------------
[2023-11-30 16:55:32][SCENARIO] -- Start : Scenario lance manuellement.
[2023-11-30 16:55:32][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-11-30 16:55:32][SCENARIO] Mise à jour du tag #telegramCmd# => [Surveillance][Télégram Damien][Moi]
[2023-11-30 16:55:32][SCENARIO] Mise à jour du tag #widgetTempo# => [Energie][ECOWATT]
[2023-11-30 16:55:32][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-11-30 16:55:32][SCENARIO] Exécution d'un bloc code 
[2023-11-30 16:55:32][SCENARIO] Aujourdhui : WHITE
[2023-11-30 16:55:32][SCENARIO] Demain : RED
[2023-11-30 16:55:32][SCENARIO] Jours Bleus restants : 215
[2023-11-30 16:55:32][SCENARIO] Jours Blancs restants : 39
[2023-11-30 16:55:32][SCENARIO] Jours Rouges restants : 20
[2023-11-30 16:55:32][SCENARIO] Total jours Bleus : 301
[2023-11-30 16:55:32][SCENARIO] Total jours Blancs : 43
[2023-11-30 16:55:32][SCENARIO] Total jours Rouges : 22
[2023-11-30 16:55:32][SCENARIO] Fin correcte du scénario

Il faut également une action envoi?

Edit: Je me réponds à moi même
il faut une action envoie télégram vers les destinataire et le tag tag(tosend)

En tout cas merci à tous