Bonjour,
Alors comme j’ai amélioré la gestion des icônes « vigilance » postée plus haut (en décembre), je vous propose mon code.
Il s’agit cette fois d’afficher toutes les vigilances en cours ou une tuile indiquant qu’il n’y a pas de vigilance
Prérequis : comme mentionné dans le tout premier post chapitre « Pour les alertes météo »
1- Avoir un virtuel avec les 3 commandes infos
C’est à dire :
2- Avoir un scénario et les déclencheurs souhaités
C’est à dire :
Ensuite, il faut :
3- Créer une tuile JConnect de type « Générique numérique » par vigilance souhaitée à paramétrer comme suit :
Par exemple pour la canicule :
Statut : #[Services][Météo France Saint Cyr][Vigilance - Canicule niveau]#
Visible sous condition : #[Services][V. Vigilance Météo][Canicule]# > 1
4- Créer également 1 tuile "Pas de vigilance " à paramétrer comme suit :
Statut : #[Services][V. Vigilance Météo][Alerte météo Max]#
Visible sous condition : #[Services][V. Vigilance Météo][Alerte météo Max]# <= 1
5- Créer une commande info dans le virtuel par vigilance à nommer de la même manière que le nom de la commande MeteoFrance :
6- Ensuite, voici le bloc Code du scénario, à paramétrer avec vos commandes / id des widgets :
// Pensez à affecter des couleurs d'arrière plan sous conditions dans le paramétrage du widget SUR L'APPAREIL MOBILE.
// Les couleurs d'arrière plan sont à affecter ainsi pour chaque vigilance (exemple pour la canicule):
// #[Services][V. Vigilance Météo][Canicule]# == 2 --> jaune avec une transparence à 60%
// #[Services][V. Vigilance Météo][Canicule]# == 3 --> orange avec une transparence à 60%
// #[Services][V. Vigilance Météo][Canicule]# == 4 --> rouge avec une transparence à 60%
require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';
// liste des vigilances souhaitées - cf commande equivalentes coté equipement méteo
//icones des vigilances
$icone_novigilance = 'kiko-check';
$icone_canicule = 'jeedomapp-thermo-chaud';
$icone_inondation = 'jeedom-eau';
$icone_froid = 'jeedomapp-thermo-froid';
$icone_neige = 'nature-snowflake';
$icone_orages = 'meteo-orage';
$icone_pluie = 'meteo-pluie';
$icone_vent = 'jeedomapp-wind';
//widget des vigilances
$widget_novigilance = 65;
$widget_canicule = 163;
$widget_inondation = 164;
$widget_froid = 165;
$widget_neige = 166;
$widget_orages = 162;
$widget_pluie = 167;
$widget_vent = 168;
//couleur de l'icone par défaut
$colorDefaut = '#FFFFFF';
//couleur de l'icone si aucune vigilance
$color1 = '#008000'; //vert
//type de contenu
$widgetKey='image';
// envoie d'une notif JC si niveau d'alerte > $alerteNiveau
// 2 --> Jaune, 3 --> Orange, 4 --> rouge
$alerteNiveau = 3 ;
$cmdNotifAlerte = '#[Objets][Téléphone Pro][Silence - Tous]#' ;
// equipemement méteo (plugin méteofrance)
//Attention, NE PAS noter les #
$baseCmdMeteo = '[Services][Météo France Saint Cyr]';
// commandes infos virtuelles
//Attention, NE PAS noter les #
$cmdVirtuel = '[Services][V. Vigilance Météo]';
//Attention, NOTER les #
$cmdAlerteMeteoMax = '#[Services][V. Vigilance Météo][Alerte météo Max]#';
$cmdAlerteMeteo = '#[Services][V. Vigilance Météo][Alerte météo]#';
$cmdAlerteMeteoConditions = '#[Services][V. Vigilance Météo][Alerte météo Conditions]#';
//Types de vigilances
$vigilances = array(
'Canicule' => array($icone_canicule,$widget_canicule),
'Inondation' =>array($icone_inondation,$widget_inondation),
'Grand-froid'=>array($icone_froid,$widget_froid),
'Neige-verglas'=>array($icone_neige,$widget_neige),
'Orages'=>array($icone_orages,$widget_orages),
'Pluie-inondation'=>array($icone_pluie,$widget_pluie),
'Vent violent'=>array($icone_vent,$widget_vent)
);
$niveauMax = 0 ;
$nbNiveauVert = 0 ;
$nbNiveauJaune = 0 ;
$nbNiveauOrange = 0 ;
$nbNiveauRouge = 0 ;
$conditionVigilances = '' ;
$nbVigilances = '' ;
$iconeMax = '' ;
foreach ($vigilances as $vigilance => $tab) {
$cmdNiveauVigilance = '#'.$baseCmdMeteo.'[Vigilance - '.$vigilance.' niveau]#' ;
$cmdConditionVigilance = '#'.$baseCmdMeteo.'[Vigilance - '.$vigilance.' conditions]#' ;
$niveauVigilance = cmd::byString($cmdNiveauVigilance)->execCmd() ;
$conditionVigilance = str_replace(", ","<br>",cmd::byString($cmdConditionVigilance)->execCmd()) ;
$icone = $tab[0];
$widget = $tab[1];
switch ($niveauVigilance) {
case 1:
$scenario->setLog($vigilance.' : '.$conditionVigilance) ;
if ( $niveauMax <= $niveauVigilance ) $niveauMax = $niveauVigilance ;
$nbNiveauVert = $nbNiveauVert + 1 ;
if ( $niveauMax == 1 ) {
$conditionVigilances = 'Aucune vigilance en cours' ;
$iconeMax = $icone_novigilance;
$iconeColor = $color1;
}
break;
case 2:
$scenario->setLog($vigilance.' : '.$conditionVigilance) ;
if ( $niveauMax == 1 ) $conditionVigilances = $vigilance.' :<br> '.$conditionVigilance ;
else $conditionVigilances = $conditionVigilances.'<br>'.$vigilance.' -> '.$conditionVigilance ;
$nbNiveauJaune = $nbNiveauJaune + 1 ;
if ( $niveauMax <= $niveauVigilance ) {
$niveauMax = $niveauVigilance ;
$iconeMax = $icone;
$iconeColor = $colorDefaut;
}
break;
case 3:
$scenario->setLog($vigilance.' : '.$conditionVigilance) ;
if ( $niveauMax == 1 ) $conditionVigilances = $vigilance.' :<br> '.$conditionVigilance ;
else $conditionVigilances = $conditionVigilances.'<br>'.$vigilance.' -> '.$conditionVigilance ;
$nbNiveauOrange = $nbNiveauOrange + 1 ;
if ( $niveauMax <= $niveauVigilance ) {
$niveauMax = $niveauVigilance ;
$iconeMax = $icone;
$iconeColor = $colorDefaut;
}
break;
case 4:
$scenario->setLog($vigilance.' : '.$conditionVigilance) ;
if ( $niveauMax == 1 ) $conditionVigilances = $vigilance.' :<br> '.$conditionVigilance ;
else $conditionVigilances = $conditionVigilances.'<br>'.$vigilance.' -> '.$conditionVigilance ;
$nbNiveauRouge = $nbNiveauRouge + 1 ;
if ( $niveauMax <= $niveauVigilance ) {
$niveauMax = $niveauVigilance ;
$iconeMax = $icone;
$iconeColor = $colorDefaut;
}
break;
}
//affectation des vigilances individuelles aux virtuels
cmd::byString('#'.$cmdVirtuel.'['.$vigilance.']#')->event($niveauVigilance);
$widgetValue= array('source' => 'jeedom', 'name' => $icone, 'shadow' => false, 'color' => $iconeColor);
JeedomConnectWidget::updateConfig($widget,$widgetKey,$widgetValue);
}
if ( $nbNiveauRouge != 0 or $nbNiveauOrange != 0 or $nbNiveauJaune != 0 ) {
// Mise à jour sous-titre widget
//$nbVigilances = 'J:'.$nbNiveauJaune.' / O:'.$nbNiveauOrange.' / R:'.$nbNiveauRouge ;
// envoi notif JC
if ( $niveauMax >= $alerteNiveau ) {
$cmd=cmd::byString($cmdNotifAlerte);
$cmd->execCmd($options=array('title'=>'title=Alerte Météo ' , 'message'=> $conditionVigilances), $cache=0);
}
}
else $nbVigilances = 'Aucune vigilance' ;
cmd::byString($cmdAlerteMeteoMax)->event($niveauMax);
cmd::byString($cmdAlerteMeteo)->event($nbVigilances);
cmd::byString($cmdAlerteMeteoConditions)->event($conditionVigilances);
// mise à jour icone sans vigilance et couleur
$widgetValue= array('source' => 'jeedom', 'name' => $iconeMax, 'shadow' => false, 'color' => $iconeColor);
JeedomConnectWidget::updateConfig($widget_novigilance,$widgetKey,$widgetValue);
Ce qui donne :
Sans vigilance :

Avec 3 vigilances (le chiffre indiqué en bas est la durée de la vigilance):

Enjoy !
Sandrine