Demande d'aide Paramétrage connecteur HTTP / json / commandes linux
#5
oui tu as plusieurs solutions avec le connecteur http
- 1 - tu utilises la fonction oauth (oauth2), dans ce cas avec clientid et clientsecret, adresse de validation de la connection , tu dois renseigner une adresse de retour du côté de celui qui reçoit la requête (http://L’IP de votre box lifedomus locale :8080/Domobox/OAuth) , si ce n'est pas le cas alors le retour oauth va n'importe ou et ==> connexion impossible
- 2 - tu utilises login et pwd et tu es en basic et tu renseigne dans domaine le bout de l'adresse qui va être toujours utilisée comme base (donc sans /login à la fin)

j'ai noté que pour certains site la fonction oauth implémenté dans LD ne fonctionne pas (surement parce que pas de respect de toutes les fonctionnalités des protocoles de dialogue d'un côté ou de l'autre)

éviter de mettre une trame d'initialisation dans le connecteur parce que vous ne pouvez pas utiliser le parseur json pour traiter le retour à ce stade.

pour voir ce qui se passe dans vos commandes - actionner la fonction de listen du connecteur qui permet d'avoir la trame json de retour après chaque commande / requête

ensuite tout se passe dans l'équipement associé au connecteur :
les commandes que vuos nommez comme vous voulez :  peuvent être en ascii ou js 
si en ascii :  mettre la partie de la commande sans la base ==> /get_list_device
si en js :  alors command='/get_list_device';

si ascii pas de possibilité d'ajouter des instructions js dans la partie commande , sinon passer en js , par exemple si vous voulez faire ldprint("lancement de la commande toto")
et si on est pas en GET mais en POST alors ==> JS pour remplir les entêtes et paramètres de la requête


pour traiter le retour json (celui que l'on voit avec la fonction listen coché dans le connecteur)

2 solutions:
1 - ajout du code parseur json dans le connecteur lui-même , dans ce cas ce code est executé dans toutes les commandes de tous les équipements associés au connecteur
2 - on code "Parseur JS de la commande" , là on peut mettre son code de récupération et traitement spécifique de la trame json de cette commande, ça remplace le code du de décodage de la trame retour du connecteur pour cette commande.  donc à utiliser si le code de traitement est spécifique à la commande ou pendant la phase de mise au point.


note :  la méthode 2 est interprétée systématiquement et complètement au moment de la validation / sauvegarde et ça prend un certains temps avant de récupérer la main, dans la méthode 1 c'est juste la syntaxe qui est "contrôlée"


exemple de quelques traitement :


Code :
// fichier get_siteId.js
// l'identification sur le site SOMFY à été traitée par le connecteur
// tout démarre ici , la première chose est de récupérer l'identifiant du site SOMFY via la commande 'getsiteId'
try {
    var obj_somfy = JSON.parse(trame);    
} catch (e) {
    ldprint("Error parse JSON: " + e.message);
}
ldprint('get_siteId.js');
// on écrit un message dans 'message_retour_somfy' pour suivre ce qui se passe
// et on met à jour un compteur qui sert pour déclencher l'automate d'enchainement somfy,
// qui va émettre une requête (par la suite 'get_list_device') pour récupérer les données stockées sur le site SOMFY

label = obj_somfy[0].label;
// identifiant du site - on va le stocker dans l'équipement somfy message et aussi dans une variable générale de CS
// attention on doit mettre les variables de retour (general_site_id et somfy_compteur) dans un autre équipement que celui qui déclenche la commande get_siteID
// sinon il y a conflit entre l'éxecution par l'équipement déclencheur et l'automate qui doit capter la modification du compteur pour se déclencher
general_site_id = obj_somfy[0].id;
somfy_compteur = parseInt(somfy_compteur) + 1;
message_retour_somfy = "retour Ok de l'identifiant du site SOMFY: " + label;

// pour débug
ldprint('general_site_id = ' + general_site_id);
ldprint('label: ' + label);

  ou plus complexe :



Code :
try {
    var obj = JSON.parse(trame);
} catch (e) {
    ldprint("Error parse JSON: " + e.message);
}
function get_temps_text(text) {
    // retourne le texte du temps qui est associé au code_temps
        text = text.substring(text.indexOf(',') + 1 , text.indexOf(';'));
    return text;
}
function get_temps_icon(text) {
    // retourne l'icon à utiliser du temps qui est associé au code_temps
        text = text.substring(text.indexOf(';') + 1);
    return text;
}
function translate_dir_vent (dir_vent_degre){
        // transposition entre les ° de la rose des vents et les positions cardinales plus simples à comprendre
    if (dir_vent_degre < 12) {dirvent_cardinal = "N"}
    else if (dir_vent_degre < 33) {dirvent_cardinal = "NNE"}
    else if (dir_vent_degre < 57) {dirvent_cardinal = "NE"}
    else if (dir_vent_degre < 80) {dirvent_cardinal = "ENE"}
    else if (dir_vent_degre < 102) {dirvent_cardinal = "E"}
    else if (dir_vent_degre < 124) {dirvent_cardinal = "ESE"}
    else if (dir_vent_degre < 147) {dirvent_cardinal = "SE"}
    else if (dir_vent_degre < 170) {dirvent_cardinal = "SSE"}
    else if (dir_vent_degre < 192) {dirvent_cardinal = "S"}
    else if (dir_vent_degre < 214) {dirvent_cardinal = "SSO"}
    else if (dir_vent_degre < 237) {dirvent_cardinal = "SO"}
    else if (dir_vent_degre < 260) {dirvent_cardinal = "OSO"}
    else if (dir_vent_degre < 282) {dirvent_cardinal = "O"}
    else if (dir_vent_degre < 304) {dirvent_cardinal = "ONO"}
    else if (dir_vent_degre < 327) {dirvent_cardinal = "NO"}
    else if (dir_vent_degre < 350) {dirvent_cardinal = "NNO"}
    else {dirvent_cardinal = "N"}
    
    return dirvent_cardinal;
}

// table de correspondance entre les codes temps, les libellés, les images à afficher  - par exemple '0' correspond à Soleil, '4' correspond à Nuageux
var table_libelle_text_icon =[
"0,Soleil;forcast_32.png",
"1,Peu nuageux;forcast_30.png",
"2,Ciel voilé;forcast_34.png",
"3,Nuageux;forcast_28.png",
"4,Très nuageux;forcast_26.png",
"5,Couvert;forcast_28.png",
"6,Brouillard;forcast_19.png",
"7,Brouillard givrant;forcast_19.png",
"8,rien;forcast_.png",
"9,rien;forcast_.png",
"10,Pluie faible;forcast_9.png",
"11,Pluie modérée;forcast_11.png",
"12,Pluie forte;forcast_12.png",
"13,Pluie faible verglaçante;forcast_9.png",
"14,Pluie modérée verglaçante;forcast_9.png",
"15,Pluie forte verglaçante;forcast_12.png",
"16,Bruine;forcast_19.png",
"17,rien;forcast_.png",
"18,rien;forcast_.png",
"19,rien;forcast_.png",
"20,Neige faible;forcast_15.png",
"21,Neige modérée;forcast_13.png",
"22,Neige forte;forcast_14.png",
"23,rien;forcast_.png",
"24,rien;forcast_.png",
"25,rien;forcast_.png",
"26,rien;forcast_.png",
"27,rien;forcast_.png",
"28,rien;forcast_.png",
"29,rien;forcast_.png",
"30,Pluie et neige mêlées faibles;forcast_5.png",
"31,Pluie et neige mêlées modérées;forcast_5.png",
"32,Pluie et neige mêlées fortes;forcast_7.png",
"33,rien;forcast_.png",
"34,rien;forcast_.png",
"35,rien;forcast_.png",
"36,rien;forcast_.png",
"37,rien;forcast_.png",
"38,rien;forcast_.png",
"39,rien;forcast_.png",
"40,Averses de pluie locales et faibles;forcast_9.png",
"41,Averses de pluie locales;forcast_11.png",
"42,Averses locales et fortes;forcast_12.png",
"43,Averses de pluie faibles;forcast_9.png",
"44,Averses de pluie;forcast_11.png",
"45,Averses de pluie fortes;forcast_12.png",
"46,Averses de pluie faibles et fréquentes;forcast_9.png",
"47,Averses de pluie fréquentes;forcast_11.png",
"48,Averses de pluie fortes et fréquentes;forcast_12.png",
"49,rien;forcast_.png",
"50,rien;forcast_.png",
"51,rien;forcast_.png",
"52,rien;forcast_.png",
"53,rien;forcast_.png",
"54,rien;forcast_.png",
"55,rien;forcast_.png",
"56,rien;forcast_.png",
"57,rien;forcast_.png",
"58,rien;forcast_.png",
"59,rien;forcast_.png",
"60,Averses de neige localisées et faibles;forcast_15.png",
"61,Averses de neige localisées;forcast_13.png",
"62,Averses de neige localisées et fortes;forcast_14.png",
"63,Averses de neige faibles;forcast_15.png",
"64,Averses de neige;forcast_13.png",
"65,Averses de neige fortes;forcast_14.png",
"66,Averses de neige faibles et fréquentes;forcast_15.png",
"67,Averses de neige fréquentes;forcast_13.png",
"68,Averses de neige fortes et fréquentes;forcast_14.png",
"69,rien;forcast_.png",
"70,Averses de pluie et neige mêlées localisées et faibles;forcast_5.png",
"71,Averses de pluie et neige mêlées localisées;forcast_7.png",
"72,Averses de pluie et neige mêlées localisées et fortes;forcast_7.png",
"73,Averses de pluie et neige mêlées faibles;forcast_7.png",
"74,Averses de pluie et neige mêlées;forcast_5.png",
"75,Averses de pluie et neige mêlées fortes;forcast_5.png",
"76,Averses de pluie et neige mêlées faibles et nombreuses;forcast_5.png",
"77,Averses de pluie et neige mêlées fréquentes;forcast_5.png",
"78,Averses de pluie et neige mêlées fortes et fréquentes;forcast_5.png",
"79,rien;forcast_.png",
"80,rien;forcast_.png",
"81,rien;forcast_.png",
"82,rien;forcast_.png",
"83,rien;forcast_.png",
"84,rien;forcast_.png",
"85,rien;forcast_.png",
"86,rien;forcast_.png",
"87,rien;forcast_.png",
"88,rien;forcast_.png",
"89,rien;forcast_.png",
"90,rien;forcast_.png",
"91,rien;forcast_.png",
"92,rien;forcast_.png",
"93,rien;forcast_.png",
"94,rien;forcast_.png",
"95,rien;forcast_.png",
"96,rien;forcast_.png",
"97,rien;forcast_.png",
"98,rien;forcast_.png",
"99,rien;forcast_.png",
"100,Orages faibles et locaux;forcast_17.png",
"101,Orages locaux;forcast_17.png",
"102,Orages fort et locaux;forcast_3.png",
"103,Orages faibles;forcast_17.png",
"104,Orages;forcast_17.png",
"105,Orages forts;forcast_3.png",
"106,Orages faibles et fréquents;forcast_17.png",
"107,Orages fréquents;forcast_17.png",
"108,Orages forts et fréquents;forcast_3.png",
"109,rien;forcast_.png",
"110,rien;forcast_.png",
"111,rien;forcast_.png",
"112,rien;forcast_.png",
"113,rien;forcast_.png",
"114,rien;forcast_.png",
"115,rien;forcast_.png",
"116,rien;forcast_.png",
"117,rien;forcast_.png",
"118,rien;forcast_.png",
"119,rien;forcast_.png",
"120,Orages faibles et locaux de neige ou grésil;forcast_14.png",
"121,Orages locaux de neige ou grésil;forcast_7.png",
"122,Orages locaux de neige ou grésil;forcast_7.png",
"123,Orages faibles de neige ou grésil;forcast_7.png",
"124,Orages de neige ou grésil;forcast_7.png",
"125,Orages de neige ou grésil;forcast_7.png",
"126,Orages faibles et fréquents de neige ou grésil;forcast_7.png",
"127,Orages fréquents de neige ou grésil;forcast_7.png",
"128,Orages fréquents de neige ou grésil;forcast_7.png",
"129,rien;forcast_.png",
"130,Orages faibles et locaux de pluie et neige mêlées ou grésil;forcast_7.png",
"131,Orages locaux de pluie et neige mêlées ou grésil;forcast_7.png",
"132,Orages fort et locaux de pluie et neige mêlées ou grésil;forcast_5.png",
"133,Orages faibles de pluie et neige mêlées ou grésil;forcast_5.png",
"134,Orages de pluie et neige mêlées ou grésil;forcast_5.png",
"135,Orages forts de pluie et neige mêlées ou grésil;forcast_5.png",
"136,Orages faibles et fréquents de pluie et neige mêlées ou grésil;forcast_5.png",
"137,Orages fréquents de pluie et neige mêlées ou grésil;forcast_5.png",
"138,Orages forts et fréquents de pluie et neige mêlées ou grésil;forcast_5.png",
"139,rien;forcast_.png",
"140,Pluies orageuses;forcast_17.png",
"141,Pluie et neige mêlées à caractère orageux;forcast_17.png",
"142,Neige à caractère orageux;forcast_14.png",
"143,rien;forcast_.png",
"144,rien;forcast_.png",
"145,rien;forcast_.png",
"146,rien;forcast_.png",
"147,rien;forcast_.png",
"148,rien;forcast_.png",
"149,rien;forcast_.png",
"150,rien;forcast_.png",
"151,rien;forcast_.png",
"152,rien;forcast_.png",
"153,rien;forcast_.png",
"154,rien;forcast_.png",
"155,rien;forcast_.png",
"156,rien;forcast_.png",
"157,rien;forcast_.png",
"158,rien;forcast_.png",
"159,rien;forcast_.png",
"160,rien;forcast_.png",
"161,rien;forcast_.png",
"162,rien;forcast_.png",
"163,rien;forcast_.png",
"164,rien;forcast_.png",
"165,rien;forcast_.png",
"166,rien;forcast_.png",
"167,rien;forcast_.png",
"168,rien;forcast_.png",
"169,rien;forcast_.png",
"170,rien;forcast_.png",
"171,rien;forcast_.png",
"172,rien;forcast_.png",
"173,rien;forcast_.png",
"174,rien;forcast_.png",
"175,rien;forcast_.png",
"176,rien;forcast_.png",
"177,rien;forcast_.png",
"178,rien;forcast_.png",
"179,rien;forcast_.png",
"180,rien;forcast_.png",
"181,rien;forcast_.png",
"182,rien;forcast_.png",
"183,rien;forcast_.png",
"184,rien;forcast_.png",
"185,rien;forcast_.png",
"186,rien;forcast_.png",
"187,rien;forcast_.png",
"188,rien;forcast_.png",
"189,rien;forcast_.png",
"190,rien;forcast_.png",
"191,rien;forcast_.png",
"192,rien;forcast_.png",
"193,rien;forcast_.png",
"194,rien;forcast_.png",
"195,rien;forcast_.png",
"196,rien;forcast_.png",
"197,rien;forcast_.png",
"198,rien;forcast_.png",
"199,rien;forcast_.png",
"200,rien;forcast_.png",
"201,rien;forcast_.png",
"202,rien;forcast_.png",
"203,rien;forcast_.png",
"204,rien;forcast_.png",
"205,rien;forcast_.png",
"206,rien;forcast_.png",
"207,rien;forcast_.png",
"208,rien;forcast_.png",
"209,rien;forcast_.png",
"210,Pluie faible intermittente;forcast_9.png",
"211,Pluie modérée intermittente;forcast_11.png",
"212,Pluie forte intermittente;forcast_12.png",
"213,rien;forcast_.png",
"214,rien;forcast_.png",
"215,rien;forcast_.png",
"216,rien;forcast_.png",
"217,rien;forcast_.png",
"218,rien;forcast_.png",
"219,rien;forcast_.png",
"220,Neige faible intermittente;forcast_15.png",
"221,Neige modérée intermittente;forcast_13.png",
"222,Neige forte intermittente;forcast_14.png",
"223,rien;forcast_.png",
"224,rien;forcast_.png",
"225,rien;forcast_.png",
"226,rien;forcast_.png",
"227,rien;forcast_.png",
"228,rien;forcast_.png",
"229,rien;forcast_.png",
"230,Pluie et neige mêlées;forcast_7.png",
"231,Pluie et neige mêlées;forcast_7.png",
"232,Pluie et neige mêlées;forcast_7.png",
"233,rien;forcast_.png",
"234,rien;forcast_.png",
"235,Averses de grêle;forcast_18.png"]



// City infos
var City = new Array();
City = obj.city;
code_commune = City.insee;
code_postal = City.cp;
latitude = City.latitude;
longitude = City.longitude
elevation = City.altitude;
nom_commune = City.name;

// update time  - l'heure de la prise d'info du capteur de météo concept
if (obj.update) {
    update_time = obj.update;
    ldprint("update_time: " + update_time)
}

// ephemeride du jour
if (obj.ephemeride)
    {
        var Ephemeride = new Array ();
        Ephemeride = obj.ephemeride;
        if (Ephemeride.day == 0)
        {
            lever_soleil_j0 = Ephemeride.sunrise;
            coucher_soleil_j0 = Ephemeride.sunset;
            duree_jour_j0 = Ephemeride.duration_day;    
            diff_duree_jour_j0 = Ephemeride.diff_duration_day;
            phase_lune_j0 = Ephemeride.moon_phase;
        }
        if (Ephemeride.day == 1)
        {
            lever_soleil_j1 = Ephemeride.sunrise;
            coucher_soleil_j1 = Ephemeride.sunset;
        }
        if (Ephemeride.day == 2)
        {
            lever_soleil_j2 = Ephemeride.sunrise;
            coucher_soleil_j2 = Ephemeride.sunset;
        }
        if (Ephemeride.day == 3)
        {
            lever_soleil_j3 = Ephemeride.sunrise;
            coucher_soleil_j3 = Ephemeride.sunset;
        }
    }
// Forecasts
else if (obj.forecast) {            // test si on a des données météo sur les heures
    var    Forecast_ = new Array();    // variable générale pour les données 'jour' ou 'heure'
                                    // c'est la requête horaire, traitement de ce qui est spécifique à la requête heure
    Forecast_ = obj.forecast;

// infos horaires    
    if (Forecast_[0].temp2m)                 // c'est la requête horaire, traitement de ce qui est spécifique à la requête heure
    {            
        var    Forecast_hour_now = new Array();    // variable pour stocker les données de l'heure courante
        // les infos
                                                // c'est la requête horaire, traitement de ce qui est spécifique à la requête heure
                                                // on récupère toutes les valeurs à exploiter plus tard  
        Forecast_hour_now = Forecast_[0];        // on prend la première valeur qui est la valeur courante
        
        datetime = Forecast_hour_now.datetime;
        jour = datetime.substr(8, 2) + "-" + datetime.substr(5, 2) + "-" + datetime.substr(0, 4);            // formatage de la date du jour sous la forme jj-mm-aaaa
        heure = datetime.substr(datetime.indexOf('T') + 1, 5);         // on prend juste l'heure et les minutes
        
        vent10m = Forecast_hour_now.wind10m;
        rafale10m = Forecast_hour_now.gust10m;
        dirvent10m = Forecast_hour_now.dirwind10m;
        dirvent = translate_dir_vent (Forecast_hour_now.dirwind10m);
        cumulpluie = Forecast_hour_now.rr10;
        cumulpluiemax = Forecast_hour_now.rr1;
        probapluie = Forecast_hour_now.probarain;
        probagel = Forecast_hour_now.probafrost;
        probabrouillard = Forecast_hour_now.probafog;
        probavent70 = Forecast_hour_now.probawind70;
        probavent100 = Forecast_hour_now.probawind100;
        rafalevent = Forecast_hour_now.gustx;
        
        // traitement de la tendance météo
        code_temps = Forecast_hour_now.weather;                                        // le code temps va permettre de prendre le libellé dans la table table_libelle_text_icon
        libelle_temps = get_temps_text(table_libelle_text_icon[code_temps]);          // on va chercher le libellé du temps         
        icon_temps = get_temps_icon(table_libelle_text_icon[code_temps]);            // on va chercher l'icone du temps

            retour_requete = "heure";
    //        temperature_h0 = Forecast_hour_now.temp2m;        // température courante à 2m du sol
            for (i = 0; i < Forecast_.length - 1 & i < 4; i++){
            eval("temperature_h"+i+" = Forecast_["+i+"].temp2m");        // température h+x à 2m du sol
            eval("hour_h"+i+" = Forecast_["+i+"].datetime.substr(Forecast_["+i+"].datetime.indexOf('T') + 1, 5)");        // heure
            }

            humidite_h0 = Forecast_hour_now.rh2m;            // humidité à 2m du sol
            tsol10 = Forecast_hour_now.tsoil1;                // température du sol entre 0 et 10cm
            tsol40 = Forecast_hour_now.tsoil2;                // température du sol entre 10 et 40cm
            iso0 = Forecast_hour_now.iso0;
            rafaleorage = Forecast_hour_now.gustx;
        
            if ( status_jour_nuit == "nuit")        // on est avant le levé et après le couché on va ajouter une différence entre nuit et jour dans la requête heure
            {
                if (libelle_temps == "Soleil") {libelle_temps = "Claire"}
                libelle_temps = "Nuit " + libelle_temps;                  // comme requête heure, on ajoute une différence entre nuit et jour
                icon_temps = "nuit_" + icon_temps;                        // comme requête heure, on ajoute une différence entre nuit et jour
            }
            
            // on est dans la requête heure et on va construire une liste pour afficher les prévisions des prochaines heures, à utiliser avec le widget List de audio dans DS
            Forecast_xhours = new Array();
            Forecast_xhours[1] = new Array();
            // entête de la liste pour avoir les labels des données restituées
            Forecast_xhours[1][0] = 0;
            Forecast_xhours[1][1] = "  Heure -   T° - % humidité - Vent - Tendance" ; // format du contenu de la liste
            // construction des données par jour
            for (i = 0; i < Forecast_.length - 1; i++)  // on va prendre toutes les heures - attention comme on décale d'un index ligne il faut éviter d'aller trop loin
            {
                j =  i + 1;                                // la 1ère ligne correspond aux données de l'heure courante, déjà affichées
                k =  j + 1;                                // comme la 1ère ligne est réservée aux libéllés on commence à la ligne 2
                Forecast_xhours[k] = new Array();
                Forecast_xhours[k][0] = j;
                datetime_xhours = Forecast_[j].datetime;
                Forecast_xhours[k][1] = datetime_xhours.substr(datetime_xhours.indexOf('T') + 1, 5);         // on prend juste l'heure et les minutes
                Forecast_xhours[k][1] +=  " - " + Forecast_[j].temp2m + "°c";    // température mini en °c    
                Forecast_xhours[k][1] += " - " + Forecast_[j].rh2m + "%";    // pluviométrie en %
                Forecast_xhours[k][1] += " - " + Forecast_[j].wind10m + "km/h";    // vent en km/h
                temp_code_temps = Forecast_[j].weather;
                Forecast_xhours[k][1] += " - " + get_temps_text(table_libelle_text_icon[temp_code_temps]);        // tendance météo pour cette journée
            }
            ldprint("libelle_temps: " + libelle_temps);                        // pour s'assurer que l'on fait fait les bonnes conversions
    }

//infos jour    
    if (Forecast_[0].tmin) {                                // c'est la requête jour, traitement de ce qui est spécifique à la requête
        retour_requete = "jour"
        
        // séquence pour les données spécifiques du jour (day: 0) et qu'on ne stocke que pour le jour         
        vent10m_j0 = Forecast_[0].wind10m;
        rafale10m_j0 = Forecast_[0].gust10m;
        dirvent10m_j0 = Forecast_[0].dirwind10m;
        dirvent_j0 = translate_dir_vent (Forecast_[0].dirwind10m);
        cumulpluie_j0 = Forecast_[0].rr10;
        cumulpluiemax_j0 = Forecast_[0].rr1;
        probapluie_j0 = Forecast_[0].probarain;
        probagel_j0 = Forecast_[0].probafrost;
        probabrouillard_j0 = Forecast_[0].probafog;
        probavent70_j0 = Forecast_[0].probawind70;
        probavent100_j0 = Forecast_[0].probawind100;
        rafalevent_j0 = Forecast_[0].gustx;
        ensoleillement_j0 = Forecast_[0].sun_hours;
        cumulevaporation_j0 = Forecast_[0].etp;
        
        // séquence pour les données qu'on va stocker individuellement pour les 4 jours (day:0 à day:3)
        for (i = 0; i < 4; i++)
        {
        // boucle pour les données des jours 0 à 3        
            eval("tempmin_j" + i + "= Forecast_["+i+"].tmin");                // température minimum du jour
            eval("tempmax_j" + i + "= Forecast_["+i+"].tmax");                // température maximum du jour
            eval("probapluie_j" + i + "= Forecast_["+i+"].probarain");        // pluie en % du jour
            eval("vent_j" + i + "= Forecast_["+i+"].wind10m");                // vent du jour
            eval("cumulpluie_j" + i + "= Forecast_["+i+"].rr10");            // pluie en mm du jour
            eval("jour_j" + i + "= Forecast_["+i+"].datetime.substr(8, 2) + '-' + Forecast_["+i+"].datetime.substr(5, 2) + '-' + Forecast_["+i+"].datetime.substr(0, 4)");            // reconstruction de la date
            
            temp_code_temps = Forecast_[i].weather;                    // variable temporaire à chaque itération change de valeur
            temp_text_temps = get_temps_text(table_libelle_text_icon[temp_code_temps]);
            temp_icon_temps = get_temps_icon(table_libelle_text_icon[temp_code_temps]);
            eval("libelle_temps_j" + i + "= temp_text_temps");            // tendance météo ce jour
            eval("icon_temps_j" + i + "= temp_icon_temps");                // image pour ce jour
        }

        // on est dans la requête jour et on va construire une liste pour afficher les prévisions des prochains jours, à utiliser avec le widget List de audio dans DS
        Forecast_xdays = new Array();
        Forecast_xdays[1] = new Array();
        // entête de la liste pour avoir les labels des données restituées
        Forecast_xdays[1][0] = 0;
        Forecast_xdays[1][1] = "Date - T° min - T° max - mm Pluie - % Pluie - Vent - Tendance" ; // format du contenu de la liste
        // construction des données par jour
        for (i = 0; i < Forecast_.length - 1; i++)  // on va prendre tous les jours - attention comme on décale d'un index ligne il faut éviter d'aller trop loin
        {
            j =  i + 1;                                // la 1ère ligne correspond aux données du jour, déjà affichée
            k =  j + 1;                                // comme la 1ère ligne est réservée aux libéllés on commence à la ligne 2
            Forecast_xdays[k] = new Array();
            Forecast_xdays[k][0] = j;
            datetime_xdays = Forecast_[j].datetime;
            Forecast_xdays[k][1] =  datetime_xdays.substr(8, 2) + "-" + datetime_xdays.substr(5, 2) + "-" + datetime_xdays.substr(0, 4);  // reconstruction de la date         
            Forecast_xdays[k][1] +=  " - " + Forecast_[j].tmin + "°c";    // température mini en °c    
            Forecast_xdays[k][1] += " - " + Forecast_[j].tmax + "°c"    // température max en °c
            Forecast_xdays[k][1] += " - " + Forecast_[j].rr10 + "mm";    // pluviométrie en mm
            Forecast_xdays[k][1] += " - " + Forecast_[j].probarain + "%";    // pluviométrie en %
            Forecast_xdays[k][1] += " - " + Forecast_[j].wind10m + "km/h";    // vent en km/h
            temp_code_temps = Forecast_[j].weather;
            Forecast_xdays[k][1] += " - " + get_temps_text(table_libelle_text_icon[temp_code_temps]);        // tendance météo pour cette journée
        }
    }
}
else {  // on est entre  00:00 et 59:59 et il n'y a pas de retour sur h+1 et h+2 , alors on construit avec des valeurs ""
            retour_requete = "heure";
            temperature_h1 = "";        // température h+1 à 2m du sol    
            temperature_h2 = "";        // température h+2 à 2m du sol
            temperature_h3 = "";        // température h+3 à 2m du sol
            // on est dans la requête heure et on va construire une liste vide
            Forecast_xhours = new Array();
            Forecast_xhours[1] = new Array();
            // entête de la liste pour avoir les labels des données restituées
            Forecast_xhours[1][0] = 0;
            Forecast_xhours[1][1] = "  Heure -   T° - % humidité - Vent - Tendance" ; // format du contenu de la liste
        
}
Répondre


Messages dans ce sujet
RE: Paramétrage connecteur HTTP / json / commandes linux - par sud-domotique-expert - 04-30-2020, 05:52 AM

Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Connecteur API Deezer fransiouz 19 25,990 04-30-2020, 12:47 PM
Dernier message: Jlr
  parser le retour d'une commande initiale connecteur HTTP sud-domotique-expert 2 4,204 01-20-2020, 11:42 PM
Dernier message: sud-domotique-expert
  Demande d'aide Récupération de variable via request HTTP Torrent007 4 6,311 12-25-2019, 06:02 PM
Dernier message: Torrent007
  requette HTTP avec Header Domo 1 3,783 12-28-2018, 07:40 PM
Dernier message: Hsd
  requette http meije 10 13,002 12-12-2018, 09:40 PM
Dernier message: tonyb0t77
  connecteur bluetooth Domo-TIC 0 2,647 10-29-2018, 03:58 PM
Dernier message: Domo-TIC
  Envoyer un retour d'état via http johxx1 3 7,244 05-19-2018, 09:33 PM
Dernier message: johxx1
  Connecteur Synology Surveillance Station grichka 28 36,541 12-21-2017, 07:28 PM
Dernier message: jojo
  Cnx Chaudière via HTTP dts1 2 5,807 11-10-2017, 06:33 PM
Dernier message: dts1
  Requette HTTP Google Home vneil 2 7,336 10-01-2017, 04:07 PM
Dernier message: vneil



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)