Pluie dans l'heure et scénario pour envoyer les infos textuelles

Bonjour,
Je trouve le plugin metefrance vraiment génial et je cherche de un certain temps à m’envoyer par SMS les infos textuelles des heures et niveau de pluie dans un format compact, autrement dit si j’ai le même niveau de pluie dans l’heure, je souhaite envoyer une seul information. J’ai réalisé un script un insérer dans un bloc code que je partage, il n’est pas parfait mais il fait visiblement le boulot.

  1. dans événement déclencheur du scénario mettre : …[Pluie 1h - Pluie prévue dans l heure]
  2. ajouter un bloc code :
// Récupération de l'ID de l'événement déclencheur
$trigger = $scenario->getRealTrigger();
$scenario->setLog('trigger : ' . $trigger);

// Récupération du nom de l'événement déclencheur
$triggerName = cmd::cmdToHumanReadable($trigger);
$scenario->setLog('triggerName : ' . $triggerName);

// Récupération de l'équipement déclencheur
$equipement = $declencheur->getEqLogic();
$scenario->setLog('equipement : ' . $equipement->getName());

// Récupération de l'objet de l'équipement
$objet = $equipement->getObject();
$scenario->setLog('objet : ' . $objet->getName());

// Récupération de l'heure de début
$pluietime_debut = scenarioExpression::formatTime(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd());

// Récupération du niveau de pluie de 0 à 5 minutes
$pluieniveau_0_5 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie  0-5mn]#')->execCmd();
// Ajout dans un tableau
if ($pluieniveau_0_5 >= 0) {
    $tabpluie[]  = array(  'niveau' => $pluieniveau_0_5, 
                       'heured' => $pluietime_debut, 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+5)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 0-5mn]#')->execCmd());
}
// Récupération du niveau de pluie de 0 à 5 minutes
$pluieniveau_5_10 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 5-10mn]#')->execCmd();
// si le niveau est le même que précedent, je change juste l'heure de fin sinon j'ajoute dans un tableau
if ($pluieniveau_5_10 >= 0) {
  if ($pluieniveau_5_10 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[0]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+10));    
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_5_10, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+5)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+10)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 5-10mn]#')->execCmd());
  }
}

$pluieniveau_10_15 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 10-15mn]#')->execCmd();
if ($pluieniveau_10_15 >= 0) {
  if ($pluieniveau_10_15 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+15));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_10_15, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+10)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+15)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 10-15mn]#')->execCmd());
  }
}
  
$pluieniveau_15_20 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 15-20mn]#')->execCmd();
if ($pluieniveau_15_20 >= 0) {
  if ($pluieniveau_15_20 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+20));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_15_20, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+15)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+20)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 15-20mn]#')->execCmd());
  }
}

$pluieniveau_20_25 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 20-25mn]#')->execCmd();
if ($pluieniveau_20_25 >= 0) {
  if ($pluieniveau_20_25 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+25));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_20_25, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+20)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+25)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 20-25mn]#')->execCmd());
  }
}

$pluieniveau_25_30 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 25-30mn]#')->execCmd();
if ($pluieniveau_25_30 >= 0) {
  if ($pluieniveau_25_30 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+30));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_25_30, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+25)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+30)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 25-30mn]#')->execCmd());
  }
}

$pluieniveau_30_40 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 30-40mn]#')->execCmd();
if ($pluieniveau_30_40 >= 0) {
  if ($pluieniveau_30_40 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+40));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_30_40, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+30)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+40)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 30-40mn]#')->execCmd());
  }
}

$pluieniveau_40_50 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 40-50mn]#')->execCmd();
if ($pluieniveau_40_50 >= 0) {
  if ($pluieniveau_40_50 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+40));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_40_50, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+40)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+50)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 40-50mn]#')->execCmd());
  }
}

$pluieniveau_50_60 = cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Niveau Pluie 50-60mn]#')->execCmd();
if ($pluieniveau_50_60 >= 0) {
  if ($pluieniveau_50_60 == $tabpluie[count($tabpluie)-1][niveau]) {
		$tabpluie[count($tabpluie)-1]['heuref']=scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+60));   
  }else{
  $tabpluie[]  = array(  'niveau' => $pluieniveau_50_60, 
                       'heured' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+50)) , 
                       'heuref' => scenarioExpression::formatTime(scenarioExpression::time_op(cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Heure début des prévisions]#')->execCmd(),+60)), 
                       'texte' => cmd::byString('#['.$objet->getName().']['.$equipement->getName().'][Pluie 1h - Previsions Textuelles 50-60mn]#')->execCmd());
  }
}

// Mise de forme de ma chaine de sortie
$Strtabpluie = $equipement->getName() . ' --> ';
foreach($tabpluie as $number => $number_array)
    {
    foreach($number_array as $key => $value)
        {
            
      	//$Strtabpluie = $Strtabpluie.' de '.$value['heured'].' à '.$value['heuref'].' : '.$value['texte'] ;	
      if ($key == 'heured') {
            	$Strtabpluie = $Strtabpluie.' de '.$value;
      }
      if ($key == 'heuref') {
              	$Strtabpluie = $Strtabpluie.' à '.$value;
      }
      if ($key == 'texte') {
              	$Strtabpluie = $Strtabpluie.' : '.$value;
         }
      if (count($tabpluie)>1){
        $Strtabpluie = $Strtabpluie.' | ';
      	}
        }
    }

// Mise à jour de la variable "Pluie_danslheure_Texte" pour être utilisé dans le scénario.
$scenario->setLog($Strtabpluie);
$scenario->setData("Pluie_danslheure_Texte", $Strtabpluie);

  1. ajouter un bloc « action » et utiliser la variable « Pluie_danslheure_Texte » pour l’envoyer par SMS ou notification.

J’espère avoir été claire :grinning:

1 « J'aime »

Comment la variable $declencheur est-elle initialisée ?

C’est une variable réservée du core ???

Désolé, j’ai oublié de copier la ligne suivante qui était bien présente dans mon scénario juste après la ligne « $scenario->setLog('triggerName : ’ . $triggerName); » :

$declencheur = cmd::byString($triggerName);

Merci de l’avoir remarqué.

2 « J'aime »