Aller au contenu

Pluviométrie Avec Netatmo


Steven

Messages recommandés

J'ai regardé comment aller chercher les datas 

 

en passant par 

http://api.wunderground.com/api/VOTRE CLE/history_20150430/q/pws:VOTRE STATION.json

on peut récupérer cela à  la fin "DAILY SUMMARY"

"dailysummary": [
        { "date": {
        "pretty": "April 30, 2015",
        "year": "2015",
        "mon": "04",
        "mday": "30",
        "hour": "00",
        "min": "00",
        "tzname": "Europe/Paris"
        },
        "utcdate": {
        "pretty": "April 29, 2015",
        "year": "2015",
        "mon": "04",
        "mday": "29",
        "hour": "22",
        "min": "00",
        "tzname": "UTC"
        },
        "meantempm":"11.1", "meantempi":"51.9","meandewptm":"8.4", "meandewpti":"47.1","meanwindspdm":"0.0", "meanwindspdi":"0.0","meanwdire":"North","meanwdird":"","humidity":"86","maxtempm":"12.1", "maxtempi":"53.8","mintempm":"10.0", "mintempi":"50.0","maxhumidity":"91","minhumidity":"78","maxdewptm":"10.1", "maxdewpti":"50.2","mindewptm":"6.7", "mindewpti":"44.1","maxpressurem":"1012.8", "maxpressurei":"29.91","minpressurem":"1006.3", "minpressurei":"29.72","maxwspdm":"0.0", "maxwspdi":"0.0","precipm":"18.8", "precipi":"0.74" }

donc pour ce jour

precipm":"18.8

 

ensuite dans une scene on stock la date des 7 derniers jours

local DAY7 = 

local DAY6 =

...

 

pour on interroge recupere la valeur precipm sur le site avec une sorte de :

http://api.wunderground.com/api/VOTRE CLE/history_ " ... DAY7".. /q/pws:VOTRE STATION.json
http://api.wunderground.com/api/VOTRE CLE/history_ " ... DAY6".. /q/pws:VOTRE STATION.json

...

 

 ensuite on additionne le tout :-) pour avoir l'historique.

 

personne pour m'aider ? pleeeeasssse 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Le projet est absolument génial. Merci Steven. L'idée de récupérer les datas du pluviomètre du voisin (je n'ai pas de pluviomètre sur ma station netatmo) associé au prévision du site weather underground est super bien pensée.

 

En revanche avec mon talent légendaire j'ai une erreur dans la scène :

[DEBUG] 15:29:16: Last request : 05/09/15 - 15:29:16
[DEBUG] 15:29:16: nil
[ERROR] 15:29:17: LUA error: /opt/fibaro/scenes/226.lua:231: attempt to concatenate upvalue 'token' (a nil value)

 

226 est l'ID de ma scène. Je ne pige pas ce qu'est le 226.lua:231 ?? mais j'ai une valeur à  Zero. Une idée à  me souffler sur l'erreur a corriger pour faire fonctionner le truc ?

 

Franie

Lien vers le commentaire
Partager sur d’autres sites

231 est la ligne en erreur. À vue de nez, il ne trouve pas le token, c'est normalement qu'il n'arrive pas t'authentifier avec ton login, password, clé et émail. Il faut donc commencer par vérifier cela.

Lien vers le commentaire
Partager sur d’autres sites

Le boulet... Une faute dans mon email. Pffff

Merci Steven. C'est top moumoute ton programme.

 

[DEBUG] 16:47:39: Last request : 05/09/15 - 16:47:39
[DEBUG] 16:47:39: 536200021c7759780c6ba3f9|7f6d29e36815b5f75f96062ab48d8b0f
[DEBUG] 16:47:40: ----------========== D e v i c e s =========----------
[DEBUG] 16:47:40: ----------========== Module extérieur ==========----------
[DEBUG] 16:47:40: temperature_exterieure = 22
[DEBUG] 16:47:40: humidite_externe = 41
[DEBUG] 16:47:40: ----------========== Module intérieur ==========----------
[DEBUG] 16:47:40: temperature_interieure = 24.2
[DEBUG] 16:47:40: co2 = 651
[DEBUG] 16:47:40: humidite_interne = 47
[DEBUG] 16:47:40: pression = 1022.7
[DEBUG] 16:47:40: bruit = 51
[DEBUG] 16:47:40: ----------========== D e v i c e s =========----------
[DEBUG] 16:47:40: Pluie jour : 1.01
[DEBUG] 16:47:40: Pluie heure : 0

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour les amis

 

j'essai de faire ce bout de code pour récupérer les datas de precipitations de WU

en regardant le bouton de steven et l'appel pour avoir le forecast des 3 prochains jours j'ai tenté cela, mais ca ne marche

 

dans un 1er temps je veux juste remonter une valeur pour voir si j'y arrive.

on verra ensuite la requêtes pour les 7 jours.

local cle_api = "xxxx" -- cle api de chez Wunderground
local pws = "ISAINTGE186" -- station ID 
local Dday = "20150430"

local WGROUND = Net.FHttp("api.wunderground.com",80)
local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_"..Dday.."/q/pws:"..pws..".json")
--http://api.wunderground.com/api/xxxxx/history_20150430/q/pws:ISAINTGE186.json

local rain = -1
if (response ~= nil) then
	rain = 0
	local jsonTable = json.decode(response)
	
	fibaro:debug(jsonTable.history.dailysummary.precipm)
	rain = rain + jsonTable.history.dailysummary.precipm
	
  	fibaro:debug(" Il est tombé " .. rain .. " mm depuis 7 jours")
end

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHisto.value", rain)

ca me renvoie

[ERROR] 13:55:39: line :debug (arg 2), expected 'string const &' got 'nil'

pourtant la valeur est

"precipm":"20.3"

 

donc je pense que le  jsonTable.history.dailysummary.precipm

 

 n'est pas correct, avez vous une idée ?

 

 

 

merci

Lien vers le commentaire
Partager sur d’autres sites

bon finalement et sans vraiment comprendre, ca marche... (pour 1 jour)

probablement pas optimisé mais bon .

local cle_api = "xxxx" -- cle api de chez Wunderground
local pws = "ISAINTGE24" -- station ID 
local Dday = os.date("%Y%m%d")

local WGROUND = Net.FHttp("api.wunderground.com",80)
local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_"..Dday.."/lang:FR/q/pws:"..pws..".json")
rain = 0
local jsonTable = json.decode(response)
fibaro:debug(jsonTable.history.dailysummary[1].precipm)
rain = rain + jsonTable.history.dailysummary[1].precipm
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Le second problème maintenant c'est de récupérer la date de la veille et des 7 jours precedents sous le format year/mm/dd

 

avez vous une idée pour me mettre sur la voix ?

est ce qu'à  partir du os.date je peux faire qq chose ?

 

merci

Lien vers le commentaire
Partager sur d’autres sites

oui mais sans succès.

N'etant pas très doué pour la programmation j'ai besoin d'un peu d'aide..;

Je cherche aussi sur internet mais pareil, je trouve peu de chose, je continue de chercher neanmoins

 

est ce quelque chose du style

(os.date("%Y%m%d",os.time()-24*60*60))

fonctionnerait ?

Lien vers le commentaire
Partager sur d’autres sites

[DEBUG] 13:57:07: 20150512
[DEBUG] 13:57:07: 0.0
[DEBUG] 13:57:08: 20150511
[DEBUG] 13:57:08: 0.0
[DEBUG] 13:57:09: 20150510
[DEBUG] 13:57:09: 0.0
[DEBUG] 13:57:09: 20150509
[DEBUG] 13:57:09: 0.0
[DEBUG] 13:57:10: 20150508
[DEBUG] 13:57:10: 0.3
[DEBUG] 13:57:11: 20150507
[DEBUG] 13:57:11: 0.0
[DEBUG] 13:57:11: 20150506
[DEBUG] 13:57:11: 0.5
[DEBUG] 13:57:12: 20150505
[DEBUG] 13:57:12: 2.0
[DEBUG] 13:57:12: Il est tombé 2.8 mm depuis 7 jours

:)

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

voila le bout de code

local cle_api = "xxxxx" -- cle api de chez Wunderground
local pws = "ISAINTGE24" -- station ID 

local previous_day = 7  -- Number of days
local WGROUND = Net.FHttp("api.wunderground.com",80)
rain = 0

for i = 1, previous_day do
local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json")
local jsonTable = json.decode(response)
fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600))
fibaro:debug(jsonTable.history.dailysummary[1].precipm)
rain = rain + jsonTable.history.dailysummary[1].precipm
end

fibaro:debug(" Il est tombé " .. rain .. " mm depuis " .. previous_day .. "jours")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHisto.value", rain)

par contre ca ne va surrement pas marché sur la osdate est le 1er mai et le day-1 est le 30 avril

faut que je regarde.

 

de plus le 'setProperty' m'affiche : 

last 7days	2.7999999999999998

pourquoi autant de decimal ?

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Cool !!

 

oui enfin si j'etais parti d'une feuille blanche, sans le code de Steven, c'etait pas la meme chose.

Steven, dans ton appel pour le forecast, tu avais

local rain = -1
if (response ~= nil) then
	rain = 0
	local jsonTable = json.decode(response)
 
    max_day = max_day + 1
	if (#jsonTable.forecast.simpleforecast.forecastday < max_day) then
		max_day = #jsonTable.forecast.simpleforecast.forecastday
	end

j'ai pas repris car je ne comprends pas à  quoi ça sert.

Lien vers le commentaire
Partager sur d’autres sites

Oui, pour les prévisions, on reçoit un seul json avec une liste des prochains jours. On prend les 4 premier, soit aujourd'hui et les 3e prochains jours.

Pour l'historique, c'est une requête / un json par jour exactement comme tu as fait.

Lien vers le commentaire
Partager sur d’autres sites

ok clair, faudra pas que GEA appuie sur le bouton toutes les 30s sinon WU va nous jeter ...

une compte gratuit c'est 500 demandes par jour, 

l'historique fait deja 7 demandes + 1 previsions ...

 

max 62 "click" par jour donc max toutes les 30mn

Lien vers le commentaire
Partager sur d’autres sites

ha non dommage, si je comprends bien c'est le min/max/average d'une periode mais pas un cumul.

 

par ce que sinon c'est un carton jaune !

 

 

 

Hello,

Your wunderground API key (xxxx) exceeded its allotted usage today by making 27 calls within a minute but the limit is 10.

We used one of your raindrops instead of disabling the key for the remainder of the day. You now have 3 remaining raindrops.

We check usage for 24-hour periods based on U.S. Eastern Time.

The plan you are registered for is Stratus - Developer, granting you 500 calls per day with 10 calls per minute limit. To upgrade your plan go to:
Lien vers le commentaire
Partager sur d’autres sites

petite question

 

quand je suis dans ma boucle, je voudrai si i =1 (donc Hier) récupérer la valeiur

for i = 1, previous_day do
	local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json")
	local jsonTable = json.decode(response)
	fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600))
	fibaro:debug(jsonTable.history.dailysummary[1].precipm)
	rain5days = rain5days  + jsonTable.history.dailysummary[1].precipm

   if (i = 1) then
	rainyesterday = JsonTable.history.dailysummary[1].precipm
	end
 end

sauf qu'il me dit

[ERROR] 08:57:45: line 23: ')' expected near '='

ligne 23, c'est la ligne de mon if (i=1 ...)

 

qu'est ce que j'ai loupé ?

merci

Lien vers le commentaire
Partager sur d’autres sites

en parralle je cherche à  exploiter les datas CONDITIONS

 

http://www.wunderground.com/weather/api/d/docs?d=data/conditions

 

pour remonter les données

precip_1hr_metric

precip_today_metric

 

sauf que j'arrive pas a décortiquer le Json

je pensais faire simplement un 

local jsonTable = json.decode(response)
fibaro:debug(jsonTable.conditions.precip_today_metric)

mais ca marche pas.

 

vous avez une idée ?

 

l'idée est de proposer un VD 'précipitations" au fofo avec uniquement les datas de WU.

1hour, Aujourd'hui, Hier, Il y a 5 jours, Il y a 10jours,

 

j'ai les 3 derniers, me manquent ceux du Json "Conditions"

 

EDIT ; je commence à  mieux comprendre la syntaxe du JSON ... :-) je l'ai

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...