Salut
Je pensais avoir été clair 
J’ai une vingtaine de défaut, et je souhaite les annoncer en TTS : A l’apparition, et ensuite toute les 1/2h si toujours présent.
Pour cela j’avais des variables à 2 dimensions pour chaque défaut :
Edit : 3 dimensions : Etat, Texte de l’annonce , Répétition (200=Oui 0=Non)
ou « Répétition » valait 0 si pas de défaut, 1 lorsque le défaut apparait et 200 un fois que le TTS a été dit la première fois.
Pour cela sous Jeedom, j’avais 2 scénarios. Le premier pour traiter l’apparition :
$TotalMsg = 0;
$Annonce = "";
$Debug = false; // Permet d'activer les log de Debug - true ou false
//$tags = $scenario->getTags();
//$Google = $tags["#destination#"];
$Parle = $scenario->getData('Ok_Parle');
if ($Parle == 1) {
#récupération des défauts présents (Etat, Texte de l'annonce , Répétition (200=Oui 0=Non))
$Msg = array(
array($scenario->getData('Msg_Pompe'), "La pompe filtration piscine est en défaut. ", 200),
array($scenario->getData('Msg_Portail'), "Fermeture automatique du portail échouée. ", 200),
array($scenario->getData('Msg_Garage'), "Le garage est resté ouvert. ", 200),
array($scenario->getData('Msg_Poubelles'), "Pensez à sortir la poubelle. ", 0),
array($scenario->getData('Msg_Congel_Buanderie'), "La température du congélateur de la buanderie est trop élevée. ", 200),
array($scenario->getData('Msg_Déshumidificateur'), "Pensez à vider le déshumidificateur de la salle de cinéma. ", 200),
array($scenario->getData('Msg_MaL'), "La machine à laver est terminée. ", 0),
array($scenario->getData('Msg_Piscine_Haute'), "Le niveau de la piscine est trop haut. Pensez à la vider. ", 200),
array($scenario->getData('Msg_Piscine_Basse'), "Le niveau de la piscine est trop bas. Pensez à la remplir. ", 200),
array($scenario->getData('Msg_Piscine_Clapet'), "Le niveau de la piscine est anormal. Pensez à vérifier les clapets. ", 200),
array($scenario->getData('Msg_Forage'), "La pompe du forage est en défaut. ", 200),
array($scenario->getData('Msg_Bureau'), "La fenetre du bureau est restée ouverte. ", 200),
array($scenario->getData('Msg_Ballon'), "Vérifiez la pression du ballon du forage. ", 200),
array($scenario->getData('Msg_Batterie_Piscine'), "Pensez à recharger la batterie de l'analyseur de la piscine. ", 200),
array($scenario->getData('Msg_Fenetres'), "Une fenetre est ouverte depuis plus de 15 minutes. ", 200),
array($scenario->getData('Msg_Justin_Batterie0'), "Tonte terminée. La batterie de Justin est vide. Retour à la base demandé. ", 200),
array($scenario->getData('Msg_Justin_Batterie100'), "La batterie de Justin est rechargée. ", 0),
array($scenario->getData('Msg_Justin'), "Justin est en erreur et demande une intervention manuelle. ", 200),
array($scenario->getData('Msg_Justine_Batterie0'), "Tonte terminée. La batterie de Justine est vide. Retour à la base demandé. ", 200),
array($scenario->getData('Msg_Justine_Batterie100'), "La batterie de Justine est rechargée. ", 0),
array($scenario->getData('Msg_Justine'), "Justine est en erreur et demande une intervention manuelle. ", 200),
array($scenario->getData('Msg_Garage2'), "Le garage ne s'est pas fermé.", 200),
array($scenario->getData('Msg_Frigo_Cuisine'), "La température du congélateur de la cuisine est trop élevée. ", 200),
);
# Test si défaut à annoncer
for ($i=0; $i<count($Msg); $i++) {
if($Msg[$i][0] == 1) {
$TotalMsg = $TotalMsg + 1;
$Annonce = $Annonce. $Msg[$i][1];
//$scenario->setData('Msg_Journal',$Msg[$i][1]); # Archivage dans journal
$scenario->setLog($Msg[$i][1]);
}
$Msg[$i][2] = $Msg[$i][0] * $Msg[$i][2];
//$scenario->setLog($Msg[$i][1] ." Ancienne valeur = " .$Msg[$i][0] ." Nouvelle valeur = " .$Msg[$i][2]);
}
# Test si message à annoncer
$MsgInst = $scenario->getData('Msg_Instantané');
if (strlen($MsgInst)>1) {
$TotalMsg = $TotalMsg + 1;
$Annonce = $Annonce. $MsgInst;
}
# Annonce du message en vocal
if ($TotalMsg > 0) {
if ($Debug == false) {
//**************** Emission du message ************************
$tags['#qui#'] = "cuisine";
$tags['#texte#'] = $Annonce;
$scenario = scenario::byString('#[Informations][Notifications][Parle]#');
$scenario->setTags($tags);
$scenario->launch();
$scenario->setLog("Message = " .$Annonce);
}
# MAJ des variables du scénario
$scenario->setData('Msg_Pompe',$Msg[0][2]);
$scenario->setData('Msg_Portail',$Msg[1][2]);
$scenario->setData('Msg_Garage',$Msg[2][2]);
$scenario->setData('Msg_Poubelles',$Msg[3][2]);
$scenario->setData('Msg_Congel_Buanderie',$Msg[4][2]);
$scenario->setData('Msg_Déshumidificateur',$Msg[5][2]);
$scenario->setData('Msg_MaL',$Msg[6][2]);
$scenario->setData('Msg_Piscine_Haute',$Msg[7][2]);
$scenario->setData('Msg_Piscine_Basse',$Msg[8][2]);
$scenario->setData('Msg_Piscine_Clapet',$Msg[9][2]);
$scenario->setdata('Msg_Forage',$Msg[10][2]);
$scenario->setdata('Msg_Bureau',$Msg[11][2]);
$scenario->setdata('Msg_Ballon',$Msg[12][2]);
$scenario->setdata('Msg_Batterie_Piscine',$Msg[13][2]);
$scenario->setdata('Msg_Fenetres',$Msg[14][2]);
$scenario->setdata('Msg_Justin_Batterie0',$Msg[15][2]);
$scenario->setdata('Msg_Justin_Batterie100',$Msg[16][2]);
$scenario->setdata('Msg_Justin',$Msg[17][2]);
$scenario->setdata('Msg_Justine_Batterie0',$Msg[18][2]);
$scenario->setdata('Msg_Justine_Batterie100',$Msg[19][2]);
$scenario->setdata('Msg_Justine',$Msg[20][2]);
$scenario->setdata('Msg_Garage2',$Msg[21][2]);
$scenario->setData('Msg_Frigo_Cuisine',$Msg[22][2]);
$scenario->setData('Msg_Instantané', "");
}
}
Et un second pour les répétitions :
$TotalMsg = 0;
$Valeur = array();
$Debug = false; // Permet d'activer les log de Debug - true ou false
# Récupération des défauts présents
$Valeur[0] = $scenario->getData('Msg_Pompe');
$Valeur[1] = $scenario->getData('Msg_Portail');
$Valeur[2] = $scenario->getData('Msg_Garage');
$Valeur[3] = $scenario->getData('Msg_Poubelles');
$Valeur[4] = $scenario->getData('Msg_Congel_Buanderie');
$Valeur[5] = $scenario->getData('Msg_Déshumidificateur');
$Valeur[6] = $scenario->getData('Msg_MaL');
$Valeur[7] = $scenario->getData('Msg_Piscine_Haute');
$Valeur[8] = $scenario->getData('Msg_Piscine_Basse');
$Valeur[9] = $scenario->getData('Msg_Piscine_Clapet');
$Valeur[10] = $scenario->getdata('Msg_Forage');
$Valeur[11] = $scenario->getdata('Msg_Bureau');
$Valeur[12] = $scenario->getdata('Msg_Ballon');
$Valeur[13] = $scenario->getdata('Msg_Batterie_Piscine');
$Valeur[14] = $scenario->getdata('Msg_Fenetres');
$Valeur[15] = $scenario->getdata('Msg_Justin_Batterie0');
$Valeur[16] = $scenario->getdata('Msg_Justin_Batterie100');
$Valeur[17] = $scenario->getdata('Msg_Justin');
$Valeur[18] = $scenario->getData('Msg_Garage2');
$Valeur[19] = $scenario->getdata('Msg_Gardena');
$Valeur[20] = $scenario->getData('Msg_Frigo_Cuisine');
// ********** Défaus inhibés **********
$Valeur[7] = 0;
$Valeur[8] = 0;
$Valeur[9] = 0;
// ************************************
# Test si défaut à répéter
for ($i=0; $i<count($Valeur); $i++) {
if ($Debug) { $scenario->setLog(':: DEBUG :: Valeur avant ' . $i .' = ' .$Valeur[$i]); }
if ($Valeur[$i] == 1 or $Valeur[$i] == 200) {
$Valeur[$i] = 1; # Message à répéter
$TotalMsg = $TotalMsg + 1;
}
if ($Debug) { $scenario->setLog(':: DEBUG :: Valeur apres ' . $i .' = ' .$Valeur[$i]); }
}
if ($Debug) { $scenario->setLog(':: DEBUG :: Nombre = ' .$TotalMsg); }
if ($TotalMsg > 0 and $Debug == false) {
# MAJ des variables du scénario
$scenario->setData('Msg_Pompe',$Valeur[0]);
$scenario->setData('Msg_Portail',$Valeur[1]);
$scenario->setData('Msg_Garage',$Valeur[2]);
$scenario->setData('Msg_Poubelles',$Valeur[3]);
$scenario->setData('Msg_Congel_Buanderie',$Valeur[4]);
$scenario->setData('Msg_Déshumidificateur',$Valeur[5]);
$scenario->setData('Msg_MaL',$Valeur[6]);
$scenario->setData('Msg_Piscine_Haute',$Valeur[7]);
$scenario->setData('Msg_Piscine_Basse',$Valeur[8]);
$scenario->setData('Msg_Piscine_Clapet',$Valeur[9]);
$scenario->setdata('Msg_Forage',$Valeur[10]);
$scenario->setdata('Msg_Bureau',$Valeur[11]);
$scenario->setdata('Msg_Ballon',$Valeur[12]);
$scenario->setdata('Msg_Batterie_Piscine',$Valeur[13]);
$scenario->setdata('Msg_Fenetres',$Valeur[14]);
$scenario->setdata('Msg_Justin_Batterie0',$Valeur[15]);
$scenario->setdata('Msg_Justin_Batterie100',$Valeur[16]);
$scenario->setdata('Msg_Justin',$Valeur[17]);
$scenario->setData('Msg_Garage2',$Valeur[18]);
$scenario->setdata('Msg_Gardena',$Valeur[19]);
$scenario->setData('Msg_Frigo_Cuisine',$Valeur[20]);
}
J’aimerais faire l’équivalent sur HA