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

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Keros
Messages : 230
Enregistré le : 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) Vu 2873 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 ?
Modifié en dernier par Keros le 03 mai 2020, 18:59, modifié 2 fois.
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

Neutrino
Messages : 1508
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

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 : 230
Enregistré le : 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) Vu 2761 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...
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

totof60
Messages : 342
Enregistré le : 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 V4.10717
sous raspbian-Stretch, 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 : 230
Enregistré le : 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).
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

Keros
Messages : 230
Enregistré le : 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) Vu 2498 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 ??
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

Keros
Messages : 230
Enregistré le : 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.
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

pierrotori
Messages : 98
Enregistré le : 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) Vu 2131 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 : 230
Enregistré le : 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 ;)
DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

Keros
Messages : 230
Enregistré le : 23 juil. 2019, 20:57

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

Message par Keros »

DomoticZ 2020.2 sur Raspb 3B+ avec Zigate Wifi & Relayborad GPIO & Téléinfo & Notification par SMS & RFLink & Sonoff & Zwave
Tuto : OpenWeatherMap LUA

Répondre