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 (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 (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 (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 (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