Problème de remontée des infos sur le Vent

Bonjour à tous,
Avant tout merci @jpty pour le travail fait sur ce plugin :slight_smile:
Dans ma région, le vent peut être conséquent…hors, les infos de vents pour le lendemain et le surlendemain sont erronées…
Cela concerne :
Meteoday1vitesseVent Météo du Jour - Demain - Vitesse du Vent
Meteoday1forceRafales Météo du Jour - Demain - Force Rafales
Meteoday2directionVent Météo du Jour - Surlendemain - Direction du Vent
Meteoday2vitesseVent Météo du Jour - Surlendemain - Vitesse du Vent
Meteoday2forceRafales Météo du Jour - Surlendemain - Force Rafales

Bonjour,
La source MF utilisée par le plugin a changé.
Si je met le plugin en debug et que je regarde le json créé getHourlyDailyForecasts-Avignon.json, les prévisions sur le vent n’existe plus:
image

Les commandes correspondantes ne devraient plus être créées. Je corrigerai dans une future version.
Notez également que l’icône et la description correspondent à midi. J’aurai préféré avoir plutôt des valeurs pour le matin, l’après-midi, la soirée …
C’est pour cela que les commandes par moment de la journée ont été créées.
Afin de ne pas créer des dizaines de commandes inutilisées pour la plupart, ce sont des commandes dont la valeur est du json. ( 1 commande pour plusieurs valeurs )

Les informations de vent sont disponibles dans les prévisions par moment de la journée.
En créant dans un virtuel, 4 commandes moment json et en leur affectant le widget Meteofrance/MeteoMoment, vous pouvez facilement obtenir pour votre région du sud :
image
Dans ce cas, 1 commande Json remplace 9 commandes visibles Jeedom. (Il y a ~17 valeurs dans le json)
La commande dans le virtuel:


Attention à bien décocher Historiser, sinon vous aurez une erreur SQL lors de la sauvegarde du virtuel.

Vous pouvez également extraire des données des commandes json. La fonction meteofrance::getJsonInfo est fournie pour cela.

Les commandes json sont utilisables sans virtuel sur les designs.
Il suffit d’affecter le widget correspondant sur la commande de l’équipement MF et sur le design afficher la commande.

1 « J'aime »

Merci beaucoup pour cette réponse très détaillée…même si je ne comprends pas tout à la 1ère lecture :smiley:
Je vais voir comment je peux exploiter tout cela, car je ne fonctionne pas avec des design, mais avec le plugin-jeedomconnect…
Je sens que je vais encore embêter @ngrataloup:smiley: :smiley:

Je lui ai déjà posé la question à la fin de ce post: Commandes probabilité xxxx à -1 - #9 par jpty

Il a zappé la réponse. :wink:

Argh le coup de poignard :sweat_smile:
Pour l’instant, je n’y suis pas arrivé. Je fais des tests avec l’aide de @tomitomas

Par contre, y a possibilité de créer des virtuels pour les commandes info que tu souhaites rajouter,

avec le bloc code suivant dans un virtuel (à dupliquer pour chacun des commandes dans un scenario dont le declencheur sera la modif de la commande JSON)

// Donnée à modifier
$cmdJSON = '#[Météo][JC - Météo France][Météo heure 0 - Json]#' ;
$cmdVirtuelle = '#[Aucun][test][test]#' ;
$requete = 'wind>direction' ;

// envoi donnée dans virtuel
$cmdJSONID = cmd::byString($cmdJSON)->getId() ;
$value = meteofrance::getJsonInfo($cmdJSONID,$requete) ;
cmd::byString($cmdVirtuelle)->event($value) ;

Ensuite tu utilises ca dans JC comme tu le souhaites

Fonctionne aussi sans $cmdJSONID:

// Commande JSON où les données seront récupérées
$cmdJSON = '#[Météo][Meteo France Jpty][Moment de la journée - Json]#' ;

// Récupération des données
$windDirection = meteofrance::getJsonInfo($cmdJSON,'wind > direction');
$windSpeed = meteofrance::getJsonInfo($cmdJSON,'wind > speed');
$windGust = meteofrance::getJsonInfo($cmdJSON,'wind > gust');
$date = meteofrance::getJsonInfo($cmdJSON,'dt');

// Envoi donnée dans les commandes du virtuel
cmd::byString('#[Météo][Virtuel extraction data MF][Moment WindDirection]#')->event($windDirection);
cmd::byString('#[Météo][Virtuel extraction data MF][Moment WindSpeed]#')->event(round($windSpeed * 3.6));
cmd::byString('#[Météo][Virtuel extraction data MF][Moment WindGust]#')->event(round($windGust * 3.6));
cmd::byString('#[Météo][Virtuel extraction data MF][Moment Date]#')->event(date('d-m-Y H:i',$date));

// Inscription dans log scenario
$scenario->setLog('Date: ' .date('d-m-Y H:i',$date) .' Direction du vent: '.$windDirection .' Vitesse: ' .round($windSpeed *3.6) .'km/h Rafales: ' .round($windGust *3.6) .'km/h');

image

Petites astuces:

  • Pour récupérer le json entier et construire la requête:
    Le scénario:
$cmdJSON = '#[Météo][Meteo France Jpty][Moment de la journée - Json]#' ;
$json = meteofrance::getJsonInfo($cmdJSON,'toto');
$scenario->setLog('Json: ' .$json);

La réponse dans le log contient le Json

Json: Request error: tag[toto] not found in {"dt":1688000400,"T":{"value":16.5,"windchill":18.8},"humidity":75,"sea_level":1016.7,"wind":{"speed":2,"gust":0,"direction":70,"icon":"ENE"},"rain":{"1h":0},"snow":{"1h":0},"iso0":4000,"rain snow limit":"Non pertinent","clouds":10,"weather":{"icon":"p1n","desc":"Nuit claire"},"moment_day":"Nuit"}
  • La requête peut être aussi partielle. La réponse va être en JSON. Exemple avec une requête sur wind:
$cmdJSON = '#[Météo][Meteo France Jpty][Moment de la journée - Json]#' ;
$wind = meteofrance::getJsonInfo($cmdJSON,'wind');
$scenario->setLog('Wind: ' .$wind);

La réponse sera en Json.

Wind: {"speed":2,"gust":0,"direction":70,"icon":"ENE"}

Vous pouvez alors modifier la requête pour obtenir l’icone du vent ( wind > icon )

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.