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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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é 8402 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 ?
Dernière modification par Keros le 03 mai 2020, 18:59, modifié 2 fois.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message par Neutrino »

Peux-tu poster le retour brut de ton JSON ?
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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é 8290 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...
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
totof60
Messages : 373
Inscription : 29 avr. 2016, 09:31

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

Message 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
Domoticz V2022.2
sous Buster, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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).
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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é 8027 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 ??
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

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

Message par pierrotori »

je viens de faire un essai
jsonparse.PNG
jsonparse.PNG (16.36 Kio) Consulté 7660 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 ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Je suis en train d'écrire un tuto ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre