Page 2 sur 4
Re: Service météo
Publié : 16 sept. 2024, 11:32
par Wolfen38
Je viens de tester
Code : Tout sélectionner
https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api..'&lang=fr&units=metric
Ca me mets erreur de clé
avec
Code : Tout sélectionner
https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api..'
Ca fonctionne, je récupère les valeur dans mon navigateur.
Par contre j'ai toujours l'erreur dans le script au niveau de la récupération des valeurs.
Cette ligne
donne cette erreur
Code : Tout sélectionner
2024-09-16 13:43:00.625 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_meteo-actuelle.lua: ...e/pi/domoticz/scripts/lua/script_time_meteo-actuelle.lua:58: attempt to index a nil value (field 'current')
Re: Service météo
Publié : 17 sept. 2024, 12:36
par Keros
Tu as remplacé l'URL dans ton script ?
Tu as essayé de faire un print du jsonValeur ?
T+il serait également plus facile si tu nous partageais ton script car l'erreur sur cette ligne peut également le résultat d'un problème un peu plus haut.
Re: Service météo
Publié : 17 sept. 2024, 12:59
par Wolfen38
Oui, j'ai remplacé l'url, mais sans succes
Voila mon script complet :
Code : Tout sélectionner
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
--------------------------------------------
----------- Variables à éditer -------------
--------------------------------------------
--https://api.openweathermap.org/data/2.5/weather?lat=45.6131965&lon=5.4592937&appid=5d54c98e1fe512946debfbd71f245c76
local api = '5d54c98e1fe512946debfbd71f245c76' -- Remplacer par votre clé API
local lat = '45.6131965' -- Remplacer par ici votre latittude
local long = '5.4592937' -- Remplacer par votre longitude
--Sélectionner le chemin vers votre fichier JSON.lua en enlevant les dé commentant la ligne pour votre système d'exploitation
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- for PI
--------------------------------------------
---------- Fin variables à éditer ----------
--------------------------------------------
commandArray = {}
-- Récupère les IDX des widgets.
idxactuel = '591'
time=os.time()
-- Récupère l'heure actuelle.
local heure = os.date('%H:%M')
local debug = true
--recupere les minutes
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
if minutes==57 then
-- L'appel et l'enregistrement des prévisions dans la variable jsonValeur
--config=assert(io.popen('/usr/bin/curl "https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api..'&lang=fr&units=metric"'))
--config=assert(io.popen('/usr/bin/curl "https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api.."'))
config=assert(io.popen('/usr/bin/curl "https://api.openweathermap.org/data/2.5/weather?lat=45.6131965&lon=5.4592937&appid=5d54c98e1fe512946debfbd71f245c76"'))
blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
--------------------------------------------
---- Code à modifier selon vos besoins -----
--------------------------------------------
-- L'enregistrement des données souhaitées dans des variables (vous pouvez en ajouter autant que vous voulez)
--temp = jsonValeur.current.temp
--rose = jsonValeur.current.dew_point
weather1 = jsonValeur.current.weather[1].description
print("Lancement du script time météo actuelle")
--<debut Essai soleil
if (weather1=='ciel dégagé' or weather1=='peu nuageux' or weather1=='partiellement nuageux') then
commandArray['Variable:Soleil'] = '1'
print('Météo du jour ensoleillé : '..weather1)
else
commandArray['Variable:Soleil'] = '0'
print('Météo du jour couvert : '..weather1)
end
--Fin Essai soleil
--<debut Essai météo du jour
if (weather1=='peu nuageux' or weather1=='partiellement nuageux' or weather1=='ciel dégagé')then
commandArray[getDeviceName(591)] ='Set Level: 20'
print("IDX 591 : "..getDeviceName(591))
elseif (weather1=='pluie' or weather1=='légère pluie') then
commandArray[getDeviceName(591)] ='Set Level: 10'
print("IDX 591 : "..getDeviceName(591))
elseif (weather1=='couvert' or weather1=='nuageux') then
commandArray[getDeviceName(591)] ='Set Level: 30'
print("Temps IDX 591 : "..weather1)
print("IDX 591 : "..getDeviceName(591))
elseif weather1=='légères chutes de neige' then
commandArray[getDeviceName(591)] ='Set Level: 40'
print("IDX 591 : "..getDeviceName(591))
end
--Fin Essai Essai météo du jour
--------------------------------------------
--------- Fin code à modifier -------------
--------------------------------------------
end
return commandArray
Re: Service météo
Publié : 17 sept. 2024, 21:15
par Keros
En changeant
https://api.openweathermap.org/data/2.5/[b]onecall[/b]? par
https://api.openweathermap.org/data/2.5/[b]weather[/b]? cela te change d'API ce qui explique que jsonValeur.current.weather[1].description ne te donne plus de données.
Je t'ai indiqué mon tuto dans lequel j'explique comment fonctionne ce script. En le suivant, tu pourras modifier ta ligne afin que ton script fonctionne de nouveau avec la nouvelle API.
Re: Service météo
Publié : 18 sept. 2024, 08:01
par Wolfen38
Si j'utilise onecall, que je mets le lien dans chrome, j'ai ce résultat :
Code : Tout sélectionner
cod: 401,
message: "Invalid API key. Please see https://openweathermap.org/faq#error401 for more info."
Re: Service météo
Publié : 18 sept. 2024, 12:37
par Keros
La clé que tu utilises ne semble plus fonctionner avec cet API OneCall. Ma clé OneCall fonctionne toujours.
Pourquoi la tienne ne fonctionne plus ?? Regarde peut-être ton compte OpenWeatherMap.
Re: Service météo
Publié : 19 sept. 2024, 19:15
par Argenlos
Bonjour,
Depuis ce matin, je n'ai plus aucun retour de OWM
2024-09-19 19:07:11.346 Status: MyOWM: Worker stopped...
2024-09-19 19:07:11.347 Status: MyOWM: Using specified location (City nantes,fr)!
2024-09-19 19:07:11.461 ESP8266: Light/Switch (PIR_AlarmeMaison)
2024-09-19 19:07:11.480 Status: MyOWM: City (2990968)-> Lat/Long = 47.1667,-1.5833
2024-09-19 19:07:11.480 Status: MyOWM: Started
2024-09-19 19:07:13.457 ESP8266: Light/Switch (PIR_AlarmeMaison)
2024-09-19 19:07:14.608 Error: MyOWM: Error getting http data!
2024-09-19 19:07:15.458 ESP8266: Light/Switch (PIR_AlarmeMaison)
Cela marchait bien jusqu'à à peut prêt 10h00 du matin ce jour.
J'ai testé l'api directement dans mon navigateur, c'est fonctionnel (que ce soit ID de la ville, le nom ou les coordonnées de la ville)
{
"coord": {
"lon": -1.5833,
"lat": 47.1667
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 295.79,
"feels_like": 295.39,
"temp_min": 294.82,
"temp_max": 296.11,
"pressure": 1014,
"humidity": 49,
"sea_level": 1014,
"grnd_level": 1011
},
"visibility": 10000,
"wind": {
"speed": 5.14,
"deg": 60
},
"clouds": {
"all": 0
},
"dt": 1726765531,
"sys": {
"type": 1,
"id": 6574,
"country": "FR",
"sunrise": 1726724971,
"sunset": 1726769438
},
"timezone": 7200,
"id": 2990968,
"name": "Arrondissement de Nantes",
"cod": 200
}
Donc pas de souci au niveau de l'api, à moins que Domoticz ne "décode" pas le Json.
Le serveur à été redémarré bien entendu.
J'ai fais un
sur le serveur pour valider que tout passait bien sur le serveur et qu'il n'y avait pas blocage quelconque.
Alors j'ai regardé un peu le code source de Domoticz, attention je ne suis pas développeur, donc je peux me tromper.
Source:
https://github.com/domoticz/domoticz/bl ... herMap.cpp
Ligne 48 à 52
Si je teste par exemple avec la même clé api
j'ai cette errreur
Donc dans le code sources l'appel de l'URL pour l'API2.5 ne marchera pas car "à la main cela ne marche pas"
D'autres on le soucis...et il faut laisser ses coordonnées CB pour pouvoir interroger le service maintenant. hum...
https://www.domoticz.com/forum/viewtopi ... ap#p318972
En gros, c'est fichu

Non ?
Merci
Re: Service météo
Publié : 19 sept. 2024, 20:55
par Keros
Également une erreur de mon côté depuis aujourd'hui :
Error: dzVents: Meteo: HTTP/1.1 response: 401 ==>> Unauthorized
Ils sont peut-être en train de couper l'ancien API 2.5 Onecall
Je n'ai pas encore poussé plus loin l'analyse... Ce weekend si je trouve le temps.
Re: Service météo
Publié : 19 sept. 2024, 22:44
par hestia
j'ai reçu ce mail d'OpenWeather
Dear OpenWeather client,
We would like to inform you that we started One Call 2.5 deprecation, and your access to the product will be stopped on September 17, 2024.
We would like to recommend you to switch to One Call 3.0 that would provide you with advanced features such as a hyperlocal minute forecast for one hour, 2-day hourly forecast, 8-day daily forecast, 4-day forecast for any timestamp, government weather alerts, 45-year history for any timestamp, daily aggregation, weather overview, and other features.
One Call 3.0 has a flexible pay-as-you-call subscription with 1000 free calls per day. Your payment card will be used when you exceed the free limit, £0.0012 per call. API call limits are set up in your account Profile section.
donc je comprends que ça s'arrête avec One Call 2.5...
Et faut mettre une CB pour la 3.0!
Re: Service météo
Publié : 20 sept. 2024, 15:37
par Keros
Je viens de voir le mail, je venais pour le partage
C'était évident qu'ils allaient essayer de passer tout le monde sur leur dernière API.
Les 1000 premiers appels API par jour sont gratuits... Il ne faut pas que la machine s'emballe sinon ça risque de couter cher à la fin du mois
Par contre, prévenir par mail le 10 pour un arrêt le 17, cela ne laisse pas beaucoup de temps pour se retourner
