Voici un bloc de code php permettant d’extraire et de formater les données du plugin Meteofrance pour les utiliser dans JeeConnect.
Il traite les commandes info ‹ Moment de la journée 0 - Json › à '‹ Moment de la journée +7 - Json ›, et peut facilement être adapté pour les autre json.
Je ne ssuis pas un expert en php, mais chez moi, sous Jeedom 4.3.18, il fonctionne ![]()
Quelques étapes pour sa mise en oeuvre :
-
Créer un virtuel (chez moi [Global][Meteo]) avec les commandes info suivantes
- Text M0, Text M+1, …, Text M+7 de type Autre
- Temp M0, Temp M+1, …, Temp M+7 de typé Numérique, unité °C (étonnant, non?)
-
Créer 7 widgets JeeConnct de type Générique Numérique
- Nom : la commande Text Mx correspondante (Text M0 pour le 1er widget, Text M+1 pour le suivant,…)
- Statut : la commande Temp Mx correspondante
- Image : n’importe laquelle (mais en choisir une), elle sera remplacée par le scénario
-
Créer un scénario avec le code ci-dessous et l’adapter en fonction de votre installation
- Nom de votre équipement Météo France au lieu de [Global][MétéoFrance]
- Nom de votre nouveau virtuel au lieu de Global][Meteo]
- Remplacer les nombres du tableau $widgets par les ids ‹ Id global › de vos propres widgets
- Déclencheur du scénario : la commande [Moment de la journée 0 - Json]
Remarque :
- Vérifiez aussi que les icones Météo France sont incluses dans les images JeeConnect
Voilà, je vous souhaite bien du beau temps !
require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php';
// Nom des jours à afficher
$jours_fr = ["Lun","Mar","Mer","Jeu","Ven","Sam","Dim"];
// Liste des 'Id global' des widgets (dans l'ordre d'affichage)
$widgets = [188,189,190,191,192,194,195,196];
for ($i = 0; $i <= 7; $i++) {
if ($i == 0) {
$j = $i;
} else {
$j = '+'.$i;
}
$cmdJSON = '#[Global][MétéoFrance][Moment de la journée '.$j.' - Json]#';
$cmd=cmd::byString($cmdJSON)->execCmd();
// Mise à jour des infos du virtuel
$timestamp = meteofrance::getJsonInfo($cmdJSON,'dt');
$jour = date("N",$timestamp);
$datetime = date('H:i',$timestamp);
if ($datetime <= '06:00' or $i == 0) {
$text = $jours_fr[$jour-1].' '.date('d',$timestamp)."\n".meteofrance::getJsonInfo($cmdJSON,'moment_day').' '.$datetime."\n".meteofrance::getJsonInfo($cmdJSON,'weather > desc');
} else {
$text = ' '."\n".meteofrance::getJsonInfo($cmdJSON,'moment_day')." ".$datetime."\n".meteofrance::getJsonInfo($cmdJSON,'weather > desc');
}
cmd::byString('#[Global][Meteo][Text M'.$j.']#')->event($text);
cmd::byString('#[Global][Meteo][Temp M'.$j.']#')->event(round(meteofrance::getJsonInfo($cmdJSON,'T > value')));
// Mise à jour des icones
$iconFile = meteofrance::getJsonInfo($cmdJSON,'weather > icon').'.png';
$iconFile = str_replace("bis","",$iconFile);
$scenario->setLog($iconFile.' '.$temp);
$widgetId = $widgets[$i];
$widgetKey='image';
$widgetValue= array('source' => 'user', 'name' => $iconFile, 'shadow' => false);
JeedomConnectWidget::updateConfig($widgetId,$widgetKey,$widgetValue);
}
