Aller au contenu

Pluviométrie Avec Netatmo


Steven

Messages recommandés

Nous y sommes ;-)

 

Voila le code pour les precipitations antérieurs et futures basées uniquement sur WU.

peut être qu'il faut que je créer un autre topic pour cela. (en meme temps j'ai bien pollué le tuto de steven depuis :))

 

Un bouton pour 1heure, aujourd'hui, hier et les 5 derniers jours

local cle_api = "key1" -- cle api de chez Wunderground
local pws = "Your station" -- station ID 
local WGROUND = Net.FHttp("api.wunderground.com",80)
local previous_day = 5 

rain1hour = 0
raintoday = 0
rain5days = 0
rainyesterday  = 0

-- 7 calls API WU ici +1 Prevision = 8

-- precipitations derniere heure et aujourd'hui --
local response ,status, err = WGROUND:GET("/api/"..cle_api.."/conditions/lang:FR/q/pws:"..pws..".json")
local jsonTable = json.decode(response)
fibaro:debug(jsonTable.current_observation.precip_1hr_metric)
rain1hour = jsonTable.current_observation.precip_1hr_metric
fibaro:debug(jsonTable.current_observation.precip_today_metric)
raintoday = jsonTable.current_observation.precip_today_metric

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

-- precipitations des 5 derniers jours --
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
end

fibaro:debug(" Il est tombé " .. rain1hour  .. " mm  depuis 1 heure")
fibaro:debug(" Il est tombé " .. raintoday  .. " mm aujourd'hui")
fibaro:debug(" Il est tombé " .. rainyesterday  .. " mm hier")
fibaro:debug(" Il est tombé " .. rain5days  .. " mm depuis " .. previous_day .. " jours")

-- label --
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHeure.value", rain1hour  .. " ")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblJour.value", raintoday  .. " ")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHier.value", rainyesterday  .. " ")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lbl5.value", rain5days  .. " ")

un bouton pour les 10 derniers jours

local cle_api = "key2" -- cle api de chez Wunderground
local pws = "Your station " -- station ID 
local WGROUND = Net.FHttp("api.wunderground.com",80)
local previous_10days = 10 -- max 10 calls per minute
rain10days = 0

for i = 1, previous_10days 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)
	rain10days = rain10days  + jsonTable.history.dailysummary[1].precipm
end

fibaro:debug(" Il est tombé " .. rain10days  .. " mm depuis " .. previous_10days .. "jours")
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lbl10.value", rain10days  .. " ")

Un bouton prevision (celui de Steven)

local max_day = 3 -- 3 par défaut
local cle_api = "key1" -- cle api de chez Wunderground
local pws = "your station" -- station ID 

local WGROUND = Net.FHttp("api.wunderground.com",80)
local response ,status, err = WGROUND:GET("/api/"..cle_api.."/forecast/lang:FR/q/pws:"..pws..".json")
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
	for i = 1, max_day do
		fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].conditions)
		fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm)
		rain = rain + jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm
	end
	
  	fibaro:debug("Prévision pour les " .. (max_day-1) .. " prochains jours : "  .. rain .. " mm")
end

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

je vous conseille d'avoir 2 clé d'API WU, car on est limité à  10 appels minutes pour la clé gratuite.

et de jouer avec les boutons "en bon pere de famille" :-)

sinon c'est le carton rouge assuré.

 

on doit probablement pouvoir optimisé les appels, mais mes competences étant niveau 0.1, je vais difficilement pouvoir faire mieux;

 

A++

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

  • 3 semaines après...

Bonjour,

c'est vraiment du super boulot. C'est propre et ca marche! Un grand bravo  :P

Je chercher à  récupérer les prévisions de température de la journée également. savez vous si c'est facilement disponible avec la même api?

*je débute*

 

Merci  :13:

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

re tout le monde,

 

dans la débug dans rafraîchir données j'ai ca !! quelqu'un l'a déjà  eu ?

[DEBUG] 08:35:09: 6
[DEBUG] 08:35:09: Ciel dégagé
[DEBUG] 08:35:09: 0
[DEBUG] 08:35:09: Prévision pour les 2 prochains jours : 11 mm
[ERROR] 08:35:09: line 52: attempt to index local 'precipitation' (a number value)
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

j'ai installé le Vd et la scène de Steven. Je ne dispose pas encore du pluviomètre sur ma Netatmo, mais par conter je sais qu'il y en a une à200 mètres de chez moi.

J'ai donc laissé le paramètre long_lat_adjust à0.1 (j'ai essayé aussi avec 0.2), mais je ne sais pas pourquoi, les données 7j et 30j m'affichent toujours N/A

est-ce quelqu'un a déjàeu ce problème ? Normalement il devrait pouvoir les obtenir sur la Netatmo du voisin, non ?

Lien vers le commentaire
Partager sur d’autres sites

Les voisins ne sont pas si généreux que cela  :) Les données publique ne donnent que la pluie en temps réel et la journée, rien de plus. 

 

A toi par exemple de stocker et cumuler ces valeurs dans une variable globale. Je crois que cela a déjà  été mentionné il y a quelques posts en arrière. Ou alors comme le dit Did, d'aller demander les accès à  ton voisin :-)

Lien vers le commentaire
Partager sur d’autres sites

@Did et Steven, ok merci de votre réponse rapide , je croyais que les infos historiques étaient dispos en public :-)

bon ben vais aller acheter le pluviomètre, ce sera plus simple que d'aller voir mon cher voisin  ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

Bonjour,

 

Comment faire pour que les données de pluviométrie puissent se mettre à  jour automatiquement dans le VD lorsqu'on l'ouvre? 

Sur ma tablette, je suis obligé de lancer manuellement la scène "pluie" avant d'ouvrir le VD pour que les données se mettent à  jour.

Il n'y aurait pas moyen de lancer la scène en automatique? ou d'intégrer un bouton dans le VD pour "rafraichir" les données?

Merci.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Je viens de voir le post ... désolé.

 

Perso, je ferais une scène (en mode bloc) qui s'exécute toutes les 10 minutes et qui va lancer la scène souhaitée. Ainsi tu pourras rafraîchir ainsi plusieurs scènes en les ajoutant simplement à  celle ci.

 

Simple non ?  :60:

Lien vers le commentaire
Partager sur d’autres sites

Nouvelle version (2.0) du script (spécial Sakkhho) :

 

Edit : nouvelle version du script. Si ce dernier détecte que vous n'avez pas de pluviomètre, il va rechercher un pluviomètre à  proximité de chez vous (uniquement les relevés de la dernière heure et jour). La distance de recherche peux être adaptée en ajustant la variable long_lat_adjust (0.1 par défaut). Il s'agit du cercle de recherche en latitude/longitude autour de chez vous.

BONJOUR A TOUS

juste une petite question comment faire si l on veut faire remonter les résultats dans deux variables par ex rain1h et RainDay 

quel code faut il rentrer 

si quelqu un peut m eclairer ??

merci encore pour votre patience 

s

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour a tous en espérant que vous avez passé un bon noà«l

je reviens vers vous car je n arrive pas a faire remonter les résultats dans les variables rainday et rainhour que j ai créé 

j ai mis cela mais rien n y fait 

fibaro:setGlobalvalue("rainday",w.rain_24h)
            fibaro:setGlobal("rainhour",w.rain_60min) 

merci encore 

Lien vers le commentaire
Partager sur d’autres sites

merci i-magin

oui effectivement mais c est un copié collé j ai pas fait attention effectivement la 2eme ligne étant la bonne mais mon problème ne venait pas de la 

j ai finalement trouvé.

mon pb venait du fait que je ne trouvais pas ou l inserer dans la scene  pour faire remonter le résultat dans la variable 

 

merci quand même 

et bonne fête 

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

  • 1 mois après...

Bonsoir a tous 

voila depuis quelques jours j ai le problème suivant 

je n arrive plus a faire remonter les infos sur le module virtuel et j ai se message d erreur 

merci par avance 

s

[DEBUG] 18:12:01: [1;31m2016-02-07 18:12:01.744527 [ fatal] LUA error: /opt/fibaro/scenes/457.lua:217: bad argument #1 to 'pairs' (table expected, got nil)
Lien vers le commentaire
Partager sur d’autres sites

Invité chris6783

Je ne connais pas ce VD mais c assez typique d'une variable globale contenant un table JSON et qui serait passée àla valeur NaN en sauvant une variable voisine. Si le VD s'occupe de créer les VG en mode automatique tu peux supprimer ton ancienne variable et redémarrer. Il faudra ensuite peut être reprendre la conf du VD

Envoyé de mon SM-G850F en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

@CHRIS6783

Merci de ton aide je viens de rentrer et je me suis attelé a essayer de remettre mon module en fonctionnement mais rien a faire 

j ai le même message d erreur

je comprends pas du jour au lendemain il marche plus 

je suis reparti de zéro mais rien y fait 

si quelqu un a une idée je suis preneur 

 

merci encore 

s

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  • 1 mois après...
  • 1 mois après...

Bonjour

juste une question suis je le seul a avoir ce problème je comprends pas c est quoi ce message d erreur sorti de nul part 

cela viendrait il de la version 4.080

merci quand même


[DEBUG] 18:12:01: [1;31m2016-02-07 18:12:01.744527 [ fatal] LUA error: /opt/fibaro/scenes/457.lua:217: bad argument #1 to 'pairs' (table expected, got nil)
Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

J'ai installé mon pluviomètre qui fonctionne très bien.

Je me suis empressé de reprendre le code de Steven (merci à  toi) mais en faisant un grand ménage pour ne garder que la partie pluviomètre local. :94:

J'ai aussi fait un essai d'une petit scène de 3 lignes qui en mode trigger reprend les valeurs du device que génère le plugin Fibaro.

J'ai l'impression que Fibaro ne remonte que la moitié des valeurs Netatmo.

On vient d'avoir une petite averse. Le code de Steven me donne 2.9mm (ce qui correspond à  la valeur de l'appli Netatmo) et ma scène donne 1.4mm.

 

Quelqu'un a-t-il aussi fait cette expérience ?

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

×
×
  • Créer...