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
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 ??
Sans doute car tu l’as 2 fois dans ton code
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
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
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 !
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