krystyan a écrit:a priori le site http://www.prevision-meteo.ch donne les prévisions de précipitations heure par heure
et j'ai besoin des prévisions J+1 sur 24 heures
krystyan a écrit:j'ai besoin des précipitations sur 24 h de J et J+1
ainsi je fais le cumul sur j-1, j et j+1 pour décider si j'autorise l'arrosage (par exemple si cumul < 5mm arrosage = on)
<?php
/*
----------------------------------------------------------------------------------------------------
|Script Meteo du Jour pour eedomus |
| |
| Script qui permet de recuperer au format XML les parametres des previsions |
| de la meteo du jour de l'endroit de la ville |
| precisée en VAR1
| attention le nom de la ville doit être vérifie https://www.prevision-meteo.ch/services/json/{mettre ici le nom de la ville)
----------------------------------------------------------------------------------------------------
*/
//************************************************************************************************************************************************************
// dialogue actionneur --> Script
//************************************************************************************************************************************************************
$mode = getArg('mode' , true , NULL); // $key= cle API weatherstack
$ville = getArg('city' , true , NULL); // $ville =ville (optionnel car le script peut geolocaliser par l'IP externe)
$periph_id = getArg('eedomus_controller_module_id' ); // $numero API de l'actionneur qui vient de lancer le script
//************************************************************************************************************************************************************
// On recupere la meteo
if ($mode=="condition") {
sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>' ."\n";
$xml .= '<meteodujour>' ."\n";
$url="https://www.prevision-meteo.ch/services/json/" .$ville;
$Tjson = sdk_Tjson($url);
if (!$Tjson[errors][0][code]) {
$ville = $Tjson[city_info][name];
$Tdata_now = $Tjson[current_condition];
$heure_now = str_replace(':', 'H', $Tdata_now[hour]);
$date_now = $Tdata_now[date]." ".$Tdata_now[hour] ; //"19.10.2019 18:00"
//$tress = $Tjson[current][feelslike];
$temp_now = $Tdata_now[tmp];
$vent_now = $Tdata_now[wnd_spd];
$press_now = $Tdata_now[pressure];
$hyg_now = $Tdata_now[humidity];
$dirvent_now = $Tdata_now[wnd_dir];
$condition_now = strtolower($Tdata_now[condition]);
$Tdata_day = $Tjson[fcst_day_0];
$tmin_day = $Tdata_day[tmin];
$tmax_day = $Tdata_day[tmax];
$tmoy_day = ($tmax+$tmin)/2;
$Tdata_day_hour = $Tjson[fcst_day_0][hourly_data];
$precip_now = $Tdata_day_hour[$heure_now][APCPsfc]; //mm
$type_precip_now= $Tdata_day_hour[$heure_now][ISSNOW]; //0=pluie - 1=neige
$type_precip_now=($type_precip_now>0)? "neige":"pluie";
$dirventdeg = $Tdata_day_hour[$heure_now][WNDDIR10m];
for ($i=0; $i <=4 ; $i++) {
$Tdata_day_hour[$i] = $Tjson['fcst_day_'.$i][hourly_data];
foreach ($Tdata_day_hour[$i] as $key => $value) {
$precip=$value[APCPsfc];
if ($precip>0){
$heure_deb_precip=$key;
$type_precip=$value[ISSNOW];
break;
}
}
$is_precip_day[$i] = ($precip>0)? "yes":"no";$precip="";
$heure_precip_day[$i] = $heure_deb_precip;$heure_deb_precip="";
$type_precip_day[$i] = ($type_precip>0)? "neige":"pluie";$type_precip="";
}
for ($i=0; $i <=4 ; $i++) {
$Tdata_day_hour[$i] = $Tjson['fcst_day_'.$i][hourly_data];
foreach ($Tdata_day_hour[$i] as $key => $value) {
$cumul_precip+=$value[APCPsfc];
}
$cumul_precip_day[$i] = $cumul_precip;$cumul_precip="";
}
$Tforecast = (current($Tjson[forecast]));
$dirventdeg = $Tjson[current][wind_degree];
$pluieact = $Tjson[current][precip];
$visact = $Tjson[current][visibility];
$xml .= ' <status>' .'ok' .'</status>' ."\n";
$xml .= ' <ville>' .$ville .'</ville>' ."\n";
$xml .= ' <dateupdate>' .$date_now .'</dateupdate>'."\n";
$xml .= ' <tact>' .$temp_now .'</tact>' ."\n";
$xml .= ' <tmin>' .$tmin_day .'</tmin>' ."\n";
$xml .= ' <tmax>' .$tmax_day .'</tmax>' ."\n";
$xml .= ' <tmoy>' .$tmoy_day .'</tmoy>' ."\n";
$xml .= ' <condition>' .$condition_now .'</condition>' ."\n";
$xml .= ' <pressact>' .$press_now .'</pressact>' ."\n";
$xml .= ' <ventact>' .$vent_now .'</ventact>' ."\n";
$xml .= ' <dirvent>' .$dirvent_now .'</dirvent>' ."\n";
$xml .= ' <dirventdeg>' .$dirventdeg .'</dirventdeg>'."\n";
$xml .= ' <hygact>' .$hyg_now .'</hygact>' ."\n";
$xml .= ' <precipit>' .$precip_now .'</precipit>' ."\n";
$xml .= ' <type_precipit_act>' .$type_precip_now .'</type_precipit_act>' ."\n";
$xml .= ' <is_precip_j>' .$is_precip_day[0] .'</is_precip_j>' ."\n";
$xml .= ' <type_precip_j>' .$type_precip_day[0] .'</type_precip_j>' ."\n";
$xml .= ' <heure_precip_j>' .$heure_precip_day[0] .'</heure_precip_j>' ."\n";
$xml .= ' <cumul_precip_j>' .$cumul_precip_day[0] .'</cumul_precip_j>' ."\n";
$xml .= ' <is_precip_j1>' .$is_precip_day[1] .'</is_precip_j1>' ."\n";
$xml .= ' <type_precip_j1>' .$type_precip_day[1] .'</type_precip_j1>' ."\n";
$xml .= ' <heure_precip_j1>' .$heure_precip_day[1] .'</heure_precip_j1>' ."\n";
$xml .= ' <cumul_precip_j1>' .$cumul_precip_day[1] .'</cumul_precip_j1>' ."\n";
$xml .= ' <is_precip_j2>' .$is_precip_day[2] .'</is_precip_j2>' ."\n";
$xml .= ' <type_precip_j2>' .$type_precip_day[2] .'</type_precip_j2>' ."\n";
$xml .= ' <heure_precip_j2>' .$heure_precip_day[2] .'</heure_precip_j2>' ."\n";
$xml .= ' <cumul_precip_j2>' .$cumul_precip_day[2] .'</cumul_precip_j2>' ."\n";
$xml .= ' <is_precip_j3>' .$is_precip_day[3] .'</is_precip_j3>' ."\n";
$xml .= ' <type_precip_j3>' .$type_precip_day[3] .'</type_precip_j3>' ."\n";
$xml .= ' <heure_precip_j3>' .$heure_precip_day[3] .'</heure_precip_j3>' ."\n";
$xml .= ' <cumul_precip_j3>' .$cumul_precip_day[3] .'</cumul_precip_j3>' ."\n";
$xml .= ' <is_precip_j4>' .$is_precip_day[4] .'</is_precip_j4>' ."\n";
$xml .= ' <type_precip_j4>' .$type_precip_day[4] .'</type_precip_j4>' ."\n";
$xml .= ' <heure_precip_j4>' .$heure_precip_day[4] .'</heure_precip_j4>' ."\n";
$xml .= ' <cumul_precip_j4>' .$cumul_precip_day[4] .'</cumul_precip_j4>' ."\n";
} else {
$xml .= ' <status> Erreur '.$Tjson[error][0][code]." - ".$Tjson[error][0][text].$Tjson[error][0][description] .'</status>' ."\n";
}
$xml .= '</meteodujour>';
saveVariable('meteodujour', $xml);
} else {
$xml=loadvariable('meteodujour');
}
echo $xml;
die;
function sdk_Tjson($url){
$json = httpQuery($url);
$Tjson = sdk_json_decode($json);
return $Tjson;
}
?>
ARTNOW a écrit:comment faire pour apprendre à programmer comme tu fais
merguez07 a écrit:ARTNOW a écrit:comment faire pour apprendre à programmer comme tu fais
Je te rassure ArtNow, le script que je viens de faire est à la portée de tous. Je n'ai pas un gros niveau car j'ai appris aussi en autodidacte dès que j'ai eu ma box Eedomus. Certains membres de ce forum sont capables de faire des scripts beaucoup plus élaborés.
Dans ma signature il y a un guide pour faire des scripts.
Il y a pas mal de sites internet qui proposent des tutos interessants en PHP
après je peux t'expliquer mon code, ligne par ligne si tu veux comprendre rapidement.
A+
krystyan a écrit:je dois faire une erreur quelque part ?
krystyan a écrit:oui je t'ai envoyé un mp
Retour vers Scripts & Périphériques du store
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 40 invité(s)