Afin de recevoir via le plugin telegram les infos du plugin RTE Tempo
Ca vaut ce que cela vaut, je ne suis pas dev et je suis sûr qu’il y a moyen d’optimiser, mais j’ai fait avec mes faibles connaissances PHP et de l’API Jeedom
En gros voilà ce que cela donne
Je viendrai poster mon code ici…
// Renseigner la commande Jeedom qui vous permet d'envoyer un Telegram
$cmd_id = '#[Communication][Telegram][A Moi]#';
// Récupération des infos du plugin RTE donc à adapter a votre cas
$today = cmd::byString('#[Home][Tempo][Aujourdhui]#')->execCmd();
$tomorrow = cmd::byString('#[Home][Tempo][Demain]#')->execCmd();
$jb = cmd::byString('#[Home][Tempo][Jours Bleus restants]#')->execCmd();
$jw = cmd::byString('#[Home][Tempo][Jours Blancs restants]#')->execCmd();
$jr = cmd::byString('#[Home][Tempo][Jours Rouges restants]#')->execCmd();
$total_jb = cmd::byString('#[Home][Tempo][Total jours Bleus]#')->execCmd();
$total_jw = cmd::byString('#[Home][Tempo][Total jours Blancs]#')->execCmd();
$total_jr = cmd::byString('#[Home][Tempo][Total jours Rouges]#')->execCmd();
// 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");
// Si votre scénario est configuré pour avoir des logs, ce qui suit vous permet
// de valider que vous récupérez bien l'ensemble des valeurs de votre équipement RTE
$scenario->setLog('Aujourd\'hui -> ' . $today);
$scenario->setLog('Demain -> ' . $tomorrow);
$scenario->setLog('Bleus Restants -> ' . $jb);
$scenario->setLog('Blancs Restants -> ' . $jw);
$scenario->setLog('Rouges Restants -> ' . $jr);
$scenario->setLog('Total Bleus -> ' . $total_jb);
$scenario->setLog('Total Blancs -> ' . $total_jw);
$scenario->setLog('Total Rouges -> ' . $total_jr);
$journees = '<b>*** EDF Tempo ***</b>';
$bilan = '<b>Reste :</b>';
// Création du message qui va être envoyé
$journees .= "\n" . 'Aujourd\'hui : ' . str_replace($couleurs_uk, $liste_icones, $today). "\n";
$journees .= 'Demain : ' . str_replace($couleurs_uk, $liste_icones, $tomorrow). "\n";
// Construction du bilan
$bilan .= "\n" . $liste_icones[0] . ' : ' . $jb . ' / ' . $total_jb . "\n" . $liste_icones[1] . ' : ' . $jw . ' / ' . $total_jw . "\n" . $liste_icones[2] . ' : ' . $jr . ' / ' . $total_jr . "\n";
// Je concatène les 2, celui qui ne veut pas le bilan laisse juste =$journees;
$messages = $journees . "\n" . $bilan;
$cmd = cmd::byString($cmd_id);
$cmd->execCmd($options = array('title' => "empty=1", 'message' => $messages), $cache = 0);
// Renseigner la commande Jeedom qui vous permet d'envoyer un Telegram
$cmd_id = '#[Communication][Telegram][A Moi]#';
// Récupération des infos du plugin RTE donc à adapter a votre cas
$today = cmd::byString('#[Home][Tempo][Aujourdhui]#')->execCmd();
$tomorrow = cmd::byString('#[Home][Tempo][Demain]#')->execCmd();
$jb = cmd::byString('#[Home][Tempo][Jours Bleus restants]#')->execCmd();
$jw = cmd::byString('#[Home][Tempo][Jours Blancs restants]#')->execCmd();
$jr = cmd::byString('#[Home][Tempo][Jours Rouges restants]#')->execCmd();
$total_jb = cmd::byString('#[Home][Tempo][Total jours Bleus]#')->execCmd();
$total_jw = cmd::byString('#[Home][Tempo][Total jours Blancs]#')->execCmd();
$total_jr = cmd::byString('#[Home][Tempo][Total jours Rouges]#')->execCmd();
// Liste des icônes
$iconeBleu = '&' . '#128998';
$iconeBlanc = '&' . '#11036';
$iconeRouge = '&' . '#128997';
$liste_icones = array($iconeBleu, $iconeBlanc, $iconeRouge);
$couleurs_uk = array("BLUE", "WHITE", "RED");
// Si votre scénario est configuré pour avoir des logs, ce qui suit vous permet
// de valider que vous récupérez bien l'ensemble des valeurs de votre équipement RTE
$scenario->setLog('Aujourd\'hui -> ' . $today);
$scenario->setLog('Demain -> ' . $tomorrow);
$scenario->setLog('Bleus Restants -> ' . $jb);
$scenario->setLog('Blancs Restants -> ' . $jw);
$scenario->setLog('Rouges Restants -> ' . $jr);
$scenario->setLog('Total Bleus -> ' . $total_jb);
$scenario->setLog('Total Blancs -> ' . $total_jw);
$scenario->setLog('Total Rouges -> ' . $total_jr);
$journees = '*** EDF Tempo ***';
$bilan = 'Reste :';
// Création du message qui va être envoyé
$journees .= "\n" . 'Aujourd\'hui : ' . str_replace($couleurs_uk, $liste_icones, $today). "\n";
$journees .= 'Demain : ' . str_replace($couleurs_uk, $liste_icones, $tomorrow). "\n";
// Construction du bilan
$bilan .= "\n" . $iconeBleu . ' : ' . $jb . ' / ' . $total_jb . "\n" . $iconeBlanc . ' : ' . $jw . ' / ' . $total_jw . "\n" . $iconeRouge . ' : ' . $jr . ' / ' . $total_jr . "\n";
// Je concatène les 2, celui qui ne veut pas le bilan laisse juste =$journees;
$messages = $journees . "\n" . $bilan;
$cmd = cmd::byString($cmd_id);
$cmd->execCmd($options = array('title' => "empty=1", 'message' => $messages), $cache = 0);
Testé ca me donne bien le même resultat sur telegram
Mon premier code n’etait pas optimisé, mais bon fonctionnel et j’avais reussi a trouver comment recuperer les infos, pour un novice je suis assez content qd meme ! lol
J’avais un doute en effet, donc il faut garder les doubles guillemets.
Pas si compliqué, c’est surtout que ça évite de dupliquer du code identique (à éviter quand c’est possible en règle générale) et ça raccourcit le code pour une meilleure lisibilité (quoique subjectif).
je n’ai pas encore ces reflexes d’optimisation
je reflechis basique, j’ecris tout pour que ca marche
apres je comprends ce que tu as proposé.
il faudra pour mon prochain truc que je tente la meme chose de moi meme si je trouve les trucs pour le faire comme le $journees .= qui vaut $journees = $journees .
Seul petite différence, qui a son importance, c’est qu’il ne faut pas renommer sont équipement, car il me semble que écrit comme sa dans un tag, le rename (id) ne suivra pas dans le scénario. a tester
Coupure réseau en plein enregistrement de mon post précédent ! J’ai complété l’intro d’explications.
Pour la commande Telegram, on est d’accord : j’ai suivi le scénario original, mais pour ma part, je fais autrement en effet :je crée un tag pour le contenu du message et j’appelle la commande Telegram (en lui passant le tag du message) depuis un bloc Action après le bloc code.
En fait tu ajoutes un bloc action avec la commande pour envoyer sur telegram ou autre et tu y met un tag que tu remplis ds le bloc code ?
Tt ca cest api jeedom et jai deja eu du mal de trouver mes simples trucs alors la je suis ébloui car du coup jen apprends et je trouve cela plus efficace
En fait, c’est juste pour ajouter à la facilité d’utilisation (ou de partage) : ça permet de ne pas toucher au contenu du bloc code et donc de limiter les erreurs en personnalisant le scénario.
Tout dépend donc du but et de l’utilisation du scénario pour le choix du code et des optimisations (priorité de lisibilité, partage, tuto, efficacité, générique, …)
Mais depuis le bloc code je ne sais pas comment renvoyer le message en tag ou autre vers une action jeedom qui contient lenvoie telegram. Je vais chercher et analyser tt ca
// Récupération des tags
$tags = $scenario->getTags();
// ajout d'un tag
$tags['#message#'] = 'Mon message'
// sauvegarde des tags (et donc le tag(message) )
$scenario->setTags($tags);
Et ensuite, il suffit d’appeler la commande Telegram dans un bloc Action du scénario avec comme contenu du message à envoyer : tag(message)
-- Start : Scenario lance manuellement.
[2023-03-28 01:15:18][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-03-28 01:15:18][SCENARIO] Mise à jour du tag #widgetTempo# => [Home][Tempo]
[2023-03-28 01:15:18][SCENARIO] - Exécution du sous-élément de type [action] : code
[2023-03-28 01:15:18][SCENARIO] Exécution d'un bloc code
[2023-03-28 01:15:18][SCENARIO] syntax error, unexpected '$scenario' (T_VARIABLE)
[2023-03-28 01:15:18][SCENARIO] - Exécution du sous-élément de type [action] : action
[2023-03-28 01:15:18][SCENARIO] Exécution de la commande [Communication][Telegram][A Moi] avec comme option(s) : {"background":"0","title":"empty=1","message":""}
[2023-03-28 01:15:19][SCENARIO] Fin correcte du scénario