Page 1 sur 2

[Résolu] Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 04 avr. 2020, 15:35
par Keros
---------------------------------------------------------------------

EDIT : Le sujet est résolu et j'ai repris les infos dans un tuto sur le forum

---------------------------------------------------------------------

Bonjour à tous,

Suite au future arrêt de DarkSky, je recherche d'autres API pour obtenir mes données.

Je suis en train de tester http://api.openweathermap.org. La version gratuite permet 50 appels par jour, c'est suffisant pour mon utilisation.

Revenons plus particulièrement au soucis de code que je rencontre :

Le fichier JSON est le suivant :
Image2.jpg
Image2.jpg (30.61 Kio) Consulté 8406 fois

J'utilise la bibliothèque json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- for PI

Je récupère sans soucis la température temp = jsonValeur.list[3].main.temp

J'ai un problème avec le weather : impossible de trouver le code pour avoir les données du tableau [0].

J'ai essayé :

Code : Tout sélectionner

weather = jsonValeur.list[3].weather[0].description
weather = jsonValeur.list[3].weather.description
weather = jsonValeur.list[3].weather 
weather = jsonValeur.list[3].weather.0.description
weather = jsonValeur.list[3].weather.'0'.description
Pourtant, weather = jsonValeur.list[3].weather est indiqué comme un tableau ...

Est-ce que quelqu'un utilise cette api ?

Re: Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 05 avr. 2020, 22:59
par Neutrino
Peux-tu poster le retour brut de ton JSON ?

Re: Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 06 avr. 2020, 22:27
par Keros
Merci de ton aide Neutrino.

Voici le retour Json que j'ai allégé pour ne laisser qu'une valeur :

Code : Tout sélectionner

{"cod":"200","message":0,"cnt":40,"list":[{"dt":1586012400,"main":{"temp":18.38,"feels_like":15.47,"temp_min":18.38,"temp_max":20.13,"pressure":1016,"sea_level":1016,"grnd_level":996,"humidity":31,"temp_kf":-1.75},"weather":[{"id":800,"main":"Clear","description":"ciel dégagé","icon":"01d"}],"clouds":{"all":0},"wind":{"speed":1.52,"deg":149},"sys":{"pod":"d"},"dt_txt":"2020-04-04 15:00:00"}]}
Image2.jpg
Image2.jpg (30.88 Kio) Consulté 8294 fois
Ma ligne de code temp = jsonValeur.list[0].main.temp retourne la bonne valeur : 18.38

Je ne trouve pas le moyen d'aller chercher l'info sous Weather :

Code : Tout sélectionner

weather = jsonValeur.list[0].weather[0].description
weather = jsonValeur.list[0].weather.description
weather = jsonValeur.list[0].weather 
weather = jsonValeur.list[0].weather.0.description
weather = jsonValeur.list[0].weather.'0'.description
Je n'ai que des erreurs en retour...

Re: Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 07 avr. 2020, 12:03
par totof60
tu peux tester en t'aidant de ce genre de site( je ne sais pas si il y en d'autres ?) :
https://developer.mozilla.org/en-US/doc ... JSON/parse

dans la partie en vert tu met le résultat de ton retour JSON que tu veux parser
et tu essayes différent test
ça t’évite de questionner trop souvent ton API, surtout si elle est limité à 50 appel/jours

Re: Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 07 avr. 2020, 22:15
par Keros
Merci totof60 de ton retour, je vais essayer le lien que tu m'a donné.

J'ai enregistré le Json en local pour mes test ce qui m'évite de questionner trop souvent l'API (qui est en effet limitée à 50 appels/jour).

Re: Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 07 avr. 2020, 22:24
par Keros
https://developer.mozilla.org/en-US/doc ... JSON/parse

> C'est vraiment pas mal !! Voilà le résultat de mes lignes de code :
Image1.jpg
Image1.jpg (48.54 Kio) Consulté 8031 fois
La ligne list[0].weather[0].description fonctionne :?

Ce serait ma bibliothèque Json qui aurait du mal à gérer plusieurs tableau imbriqués ??

Re: [Résolu] Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 11 avr. 2020, 00:04
par Keros
Je viens de trouver la solution :

weather = jsonValeur.list[3].weather[1].description

C'est weather[1] qu'il faut bien que le JSON indiquerait 0...

Merci à tous d'avoir essayer de m'aider.

Re: [Résolu] Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 11 avr. 2020, 00:33
par pierrotori
je viens de faire un essai
jsonparse.PNG
jsonparse.PNG (16.36 Kio) Consulté 7664 fois
et j'ai aussi une erreur :(

j'ai fait un script lua
commandArray = {}
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux

local config=assert(io.popen('curl http://api.openweathermap.org/data/2.5/ ... xxxxxxxxxx'))
local json_text = config:read('*all')
config:close()
local owm = json:decode(json_text)
local temp = owm.main.temp
local humedity = owm.main.humidity
local vent = owm.wind.speed
print('temp: '..temp..'humidite: '..humedity..'vent: '..vent)
return commandArray

tu as fait quoi comme script et dans quel langage ?

Re: [Résolu] Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 11 avr. 2020, 01:11
par Keros
Je suis en train d'écrire un tuto ;)

Re: [Résolu] Récupérer la météo depuis http://api.openweathermap.org ?

Publié : 11 avr. 2020, 01:43
par Keros