Forum eedomus
https://forum.eedomus.com/

plus de forecast avec weatherstack ?
https://forum.eedomus.com/viewtopic.php?f=50&t=8971
Page 1 sur 2  Suivant »
Auteur:  krystyan [ 17 Oct 2019 18:38 ]
Sujet du message:  plus de forecast avec weatherstack ?

A priori avec un abonnement free chez weatherstack ex apixu nous n'avons plus accès au forecast pour les prévisions notamment des précipitations bien utiles pour gérer l'arrosage.
Connaissez vous un autre site où nous pourrions avoir ces infos ?
Auteur:  merguez07 [ 18 Oct 2019 08:06 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

j'ai vu que J. Nielsen avait fait un nouveau plugin dans le store "prévision météo"

Je n'ai pas testé mais peut être que ça peut répondre à ta demande
Auteur:  krystyan [ 18 Oct 2019 15:42 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

merci merguez07 je regarde si je peux l'adapter
Auteur:  krystyan [ 19 Oct 2019 13:01 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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 :oops: :oops: :oops:
Auteur:  merguez07 [ 19 Oct 2019 16:33 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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


c'est quelle type d'infos précises qu'il te faudrait sur Eedomus ?
Auteur:  krystyan [ 19 Oct 2019 17:11 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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)
Auparavant j'utilisais deux requêtes sur Apixu qui me donnaient ces infos
merci de ton aide
Auteur:  merguez07 [ 19 Oct 2019 20:23 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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)


ok je t'ai fais un petit script qui devrait te convenir
Capture7.PNG
Capture7.PNG (142.69 Kio) Consulté 7667 fois

Capture8.PNG
Capture8.PNG (79.92 Kio) Consulté 7667 fois


Code : Tout sélectionner
<?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;                       
    }

   
?>
Auteur:  ARTNOW [ 19 Oct 2019 21:40 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

Je suis admiratif MERGUEZ , comment faire pour apprendre à programmer comme tu fais (en autodidacte bien sur , je ne vais pas retourner à l'école)... :shock:
Auteur:  merguez07 [ 19 Oct 2019 22:33 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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+
Auteur:  ARTNOW [ 19 Oct 2019 23:50 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

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+


Merci de ta réponse , je vais avoir du temps libre en novembre , je vais suivre déjà tes liens et m’instruire , je reviendrais vers toi si j'ai des question merci MERGUEZ ;)
Auteur:  krystyan [ 20 Oct 2019 08:07 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

Waouh ! grand merci merguez07
je regarde tout cela et je te fais un retour
Auteur:  merguez07 [ 20 Oct 2019 10:09 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

signification des xpath

//status --> pour vérifier que la requête ets bien passée
//ville -->
//dateupdate --> date et heure de la mesure ou prévision
//tact --> température en cours
//tmin --> température mini prévue dans la journée
//tmax --> température maxi prévue dans la journée
//tmoy --> température moyenne prévue dans la journée
//condition--> condition de la journée
//pressact --> pression en cours (mbar/hPa)
//ventact --> vitesse du vent en cours (km/h)
//dirvent --> direction du vent en cours
//dirventdeg--> direction du vent en cours (°)
//hygact --> humidité en cours (%)
//precipit--> precipitation en cours (mm)
//type_precipit_act --> type de précipitation en cours (pluie, neige)
//is_precip_j --> va t il precipiter aujourd'hui ? (yes, No)
//type_precip_j --> prévision du type de précipitation du jour (pluie, neige)
//heure_precip_j --> prévision de l'heure de début de la précipitation du jour
//cumul_precip_j --> hauteur prévue de précipitation du jour (mm)
//is_precip_j1
//type_precip_j1
//heure_precip_j1
//cumul_precip_j1
//is_precip_j2
//type_precip_j2
//heure_precip_j2
//cumul_precip_j2
//is_precip_j3
//type_precip_j3
//heure_precip_j3
//cumul_precip_j3
//is_precip_j4
//type_precip_j4
//heure_precip_j4
//cumul_precip_j4
Auteur:  krystyan [ 20 Oct 2019 10:20 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

je dois faire une erreur quelque part ?

Capture.JPG
Capture.JPG (132.43 Kio) Consulté 7639 fois
Auteur:  merguez07 [ 20 Oct 2019 12:06 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

krystyan a écrit:je dois faire une erreur quelque part ?


comme ça je vois pas d'erreur. j'ai testé pour paris et chez moi ça marche nickel

Tu as quelle box Eedomus ?
Auteur:  krystyan [ 20 Oct 2019 12:14 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

je teste sur une eedomus v2.1
j'ai peut être mal copier le script ?
Auteur:  merguez07 [ 20 Oct 2019 12:18 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

tu as team viewer ? je pourrais regarder à distance ton poste
Auteur:  krystyan [ 20 Oct 2019 12:34 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

oui je t'ai envoyé un mp
Auteur:  merguez07 [ 20 Oct 2019 12:38 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

krystyan a écrit:oui je t'ai envoyé un mp


idem
Auteur:  merguez07 [ 20 Oct 2019 13:16 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

Krystyan,

comme vu ensemble le problème est lié à la fonction HttpQuery qui affiche chez toi (pas chez moi) un pb de protocole. Je fais remonter à Bart

avais tu essayé le plugin "prévision météo" de J. Nielsen.

En toute logique ce plugin ne devrait pas marcher chez toi mais peux tu confirmer ?
Auteur:  krystyan [ 20 Oct 2019 13:24 ]
Sujet du message:  Re: plus de forecast avec weatherstack ?

oui effectivement j'avais essayé ce plugin et il me renvoyait en erreur
Page 1 sur 2 Le fuseau horaire est UTC+1 heure