Aller au contenu

Pluviométrie Avec Weatherunderground


Sakkhho

Messages recommandés

merci pour ceci qui a l'air super.

Devine ce que je vais faire en premier ?

 

Regarder pourquoi cela ne pourrait pas fonctionner en 3.600, et, avec ta permission, et si c'est possible, le rendre compatible v3.x

Lien vers le commentaire
Partager sur d’autres sites

ton MV, fonctionne impec en 3.600 => tu peux supprimer la restriction.

 

pour le last 10 days, il m'a fait une erreur, car il lui manquait une valeur ?

en faisant ce test à  la ligne 12, ça passe

    if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then
      rain10days = rain10days  + jsonTable.history.dailysummary[1].precipm
    end

Il faudrait peut-être prévoir cela également pour les autres boutons

 

EDIT : nos messages se sont croisé. Bien sà»r que je me suis fait plaisir ! :60:

Modifié par jojo
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

oui je vois bien ;-)

d'ailleurs j'ai trouvé comment exporter le VD... en fait sous SAFARI ca bug, sous CHROME c'était ok

 

voici le code

ligne 13 à  43 bouton 5jours

-- 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)
if tonumber(jsonTable.current_observation.precip_1hr_metric) ~= nil then
   rain1hour = jsonTable.current_observation.precip_1hr_metric
end 
fibaro:debug(jsonTable.current_observation.precip_today_metric)
if tonumber(jsonTable.current_observation.precip_today_metric) ~= nil then
  raintoday = jsonTable.current_observation.precip_today_metric
end 

-- 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)
if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then
   rainyesterday = rainyesterday + jsonTable.history.dailysummary[1].precipm
end 

-- 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)
	if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then
    	rain5days = rain5days + jsonTable.history.dailysummary[1].precipm
    end 
end

ligne 7-15 boutons 10jours

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)
	 if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then
      rain10days = rain10days  + jsonTable.history.dailysummary[1].precipm
    end
end

je touche pas le bouton prévisions car je pense pas que ca buggera celui la.

Lien vers le commentaire
Partager sur d’autres sites

merci beaucoup.

Sur base de cette idée, il m'en vient encore une autre pour faire évoluer :

en fonction du calcul du niveau d'arrosage (Non, Léger ou Important), il pourrait afficher automatiquement une icône

?

Lien vers le commentaire
Partager sur d’autres sites

hop V1.2 avec les icônes (icônes léger en attente ;-)

 

j'ai passer la prévisions à  2 jours  - mais vous pouvez la remonter à  3 si vous le souhaitez.

je trouve que 2jours de sol très sec c'est suffisant pour déclencher un arrosage à  j-2

 

pour éviter l'import du VD

 

à  rajouter au debut

---- id des icones  ---
local Icone_leger = 1100
local Icone_important = 1100
local Icone_off = 1099

puis suivant le passage de la variable "arrosage"

    Num_Icone = Icone_off

ou     Num_Icone = Icone_important ou     Num_Icone = Icone_leger

suivant le cas

 

et à  la fin

fibaro:call(selfId , "setProperty", "currentIcon", Num_Icone)

Calcul_Arrosage V1.2.vfib

Lien vers le commentaire
Partager sur d’autres sites

autre idée (quand je suis lancé, ...)

J'ai compris qu'il fallait être radin/économe avec l'utilisation des clés.

Pour l'historique journalier (hier, 5 derniers jours, 10 derniers jours) : cela ne change qu'une fois par jour. Donc faisons 1 bouton qui serait appelé tous les jours à  3h par GEA (= 1 + 5 + 10 = 16 requêtes par jour).

Pour l'historique du jour : ok pour mise à  jour toutes les 60 min (= 2*24 = 48 requêtes / jours) (quelle est la fréquence de mise à  jour du site, si toutes les heures, inutile de l'interroger toutes les 30 min)

Pour les prévisions à  3 jours : quelle est la fréquence de mise à  jour du site ? Si toutes les heures = 3 appels * 24 = 72 appels.

 

On aurait alors 16 + 48 + 72 = 136 appels / j

 

mon raisonnement / calcul est-il juste ?

Lien vers le commentaire
Partager sur d’autres sites

oui sauf que le bouton 10jours fait 10appel en moins d'1 minute, donc tu peux pas le coupler avec un autre, sauf faire un fibaro(sleep) dans la boucle. (pourquoi pas..)

pour le reste

 - la mise à  jour depends de la station que tu interroges j'ai pu lire, certaines font ca toutes les 5mn, d'autres tous les 30mn, c'est pour cela qu'avec GEA je fais un appel toutes les 30mn. Ca suffit largement et ca permet de ne pas saturer les appels.

 - prevision 3jours, je sais pas trop la fréquence de mise à  jours, mais bon j'ai regler mon GEA pour qu'avec la meme clé que le bouton 1 ca passe.

Lien vers le commentaire
Partager sur d’autres sites

bien vu pour les 10 appels dans la minute pour le 10jours => il doit être dans un bouton séparé des autres.

Mais je ne comprends pas pourquoi tu interroges toutes les heures pour l'historique des 10 derniers jours ?

 

Donc je verrais ceci comme bouton :

  • historique du jour : la dernière heure, et aujourd'hui. Interrogé toutes les 30 min = 2 * 48 = 96 appels / j
  • historique des 5 derniers jours : interrogé 1 fois par jour à  2h : 5 appels / j
  • historique des 10 derniers jours : interrogé 1 fois par jour à  3h : 10 appels / j (! de ne pas rentrer en conflict avec historique du jour et prévision, mais c'est gérable facilement grâce à  GEA)
  • prévision 3 jours : interrogé toutes les 30 min = 3*48 = 144 appels / j

donc avec 1 clé j'aurais 96 + 5 + 10 + 144 = 255 appels / j ?

Lien vers le commentaire
Partager sur d’autres sites

je suis d'accord avec toi, mais c'était pour éviter de faire trop de boutons. J'avais rassemblé de 0 à  5 jours ensemble.

peut être que cela charge le système pour rien.

 

si on fait ce que tu proposes ca donne

  • historique du jour : la dernière heure, et aujourd'hui. Interrogé toutes les 30 min = 2/h * 24h = 48 appels / j
  • historique des 5 derniers jours : interrogé 1 fois par jour à  2h : 5 appels / j + 1 pour Hier
  • historique des 10 derniers jours : interrogé 1 fois par jour à  3h : 10 appels / j (! de ne pas rentrer en conflict avec historique du jour et prévision, mais c'est gérable facilement grâce à  GEA)
  • prévision 3 jours : interrogé toutes les 30 min = 2/h*24h = 48 appels / j

= 112, il y a de la marge

 

on pourrait donc augmenter en faisant; 

  • historique du jour : la dernière heure, et aujourd'hui. Interrogé toutes les 15 min = 4h * 24h = 96 appels / j
  • historique des 5 derniers jours : interrogé 1 fois par jour à  2h : 5 appels / j + 1 pour Hier
  • historique des 10 derniers jours : interrogé 1 fois par jour à  3h : 10 appels / j (! de ne pas rentrer en conflict avec historique du jour et prévision, mais c'est gérable facilement grâce à  GEA)
  • prévision 3 jours : interrogé toutes les 15 min = 4/h*24h = 96 appels / j

= 208

 

faut faire attention que l'appel de 10jours ne tombe pas la meme minute que l'historique ou que la prevision, sinon tu dépasses les 10 appels minutes.

avec 2 clé on est tranquille ... et ca prends 2secondes pour en créer une.

 

tiens une question pour les icônes, comment faire pour que les icônes change uniquement quand appuie sur le bouton calcul ?

car la chaque appuie sur prevision ou historique remets l'icone dans un autre état.

faut mettre cela dans le main loop ?

Lien vers le commentaire
Partager sur d’autres sites

:) merci de ton retour.

 

Comme on a encore beaucoup de marge, est-il possible qu'avoir plus d'info sur l'historique du jour ? (dernière heure, dernières 6h, dernières 12h, dernière 18h et aujourd'hui par exemple, mais il me semble que ce ne serait qu'1 appel) : il faut voir si c'est possible avec 1 appel pour chaque commande, sinon on exploserait le cota de 10 appels/min

 

Pour éviter que l'historique du jour et des prévision à  3 jour ne tombe en même temps que l'historique des 10 derniers jours, on rajouterait pour les deux premier une condition GEA {"Time", "03:15", "02:45"}

Lien vers le commentaire
Partager sur d’autres sites

peut être bien possible si on va interroger le "Hourly"

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

faut que je regarder comment est construit le json ici

 

mais tu penses vraiment que cela soit utile ?

 

la fonction c'est de savoir si il a plu ou si il va pleuvoir, pour ne pas arroser pour rien

dans l'Heure, c'est juste pour afficher : il pleut, l'info en tant que tel est pas vraiment utile, et consolidé dans le "jour"

l'important c'est de savoir si il a plu aujourd'hui : Jour et si il a plu Hier 

et le cumul des derniers jours 5jours est important, 10jours un peu mois (si mega orage il y a 10jours, mais temps très sec depuis, je devrai arroser)

 

avoir l'info de 6h 12h 18h, c'est plus pour le fun non ?

Lien vers le commentaire
Partager sur d’autres sites

oui, tu as tout à  fait raison, 6, 12 & 18 H c'est plus pour le fun.

Si effectivement c'était dans le même json, alors pourquoi pas. Mais ne changeons rien.

Je pense que réarranger les boutons pour être ok avec une clé a en effet une bien plus grande valeur ajoutée.

Je partage totalement ton avis  :

 

la fonction c'est de savoir si il a plu ou si il va pleuvoir, pour ne pas arroser pour rien

dans l'Heure, c'est juste pour afficher : il pleut, l'info en tant que tel est pas vraiment utile, et consolidé dans le "jour"

l'important c'est de savoir si il a plu aujourd'hui : Jour et si il a plu Hier 

et le cumul des derniers jours 5jours est important, 10jours un peu mois (si mega orage il y a 10jours, mais temps très sec depuis, je devrai arroser)

 

Lien vers le commentaire
Partager sur d’autres sites

je suis vraiment une quiche avec les boucles if

pour être plus propres avec les icones je voulais mettre dans le main loop

---- id des icones  ---
local Icone_leger = 1100
local Icone_important = 1100
local Icone_off = 1099
-------------------------

local selfId = fibaro:getSelfId()
local Situation = fibaro:getGlobalValue("Arrosage")

if (Situation == ("Non")) then Num_Icone = Icone_off
Elseif (Situation == ("Leger")) then Num_Icone = Icone_leger  
Elseif (Situation == ("Important")) then Num_Icone = Icone_important
End

fibaro:call(selfId , "setProperty", "currentIcon", Num_Icone)

sauf que comme d'hab il me jette avec mes "if"

[ERROR] 11:13:53: line 12: unexpected symbol near 'then'
Lien vers le commentaire
Partager sur d’autres sites

c'est bon je l'ai eut :-)

---- id des icones  ---
local Iconeleger = 1100
local Iconeimportant = 1100
local Iconeoff = 1099
-------------------------
local selfId = fibaro:getSelfId()
local Situation = fibaro:getGlobalValue("Arrosage")

if (Situation == ("Non")) then NumIcone = Iconeoff
elseif (Situation == ("Leger")) then NumIcone = Iconeleger
else NumIcone = Iconeimportant
end

fibaro:call(selfId ,"setProperty","currentIcon", NumIcone)

est ce que c'est genant d'avoir cela dans le main loop ?

Lien vers le commentaire
Partager sur d’autres sites

Super boulot Sakkhho,

 

si nous avons pas encore GEA d'intégré, comment pouvons-nous faire pour faire les clics seulement des boutons? ou j'installe GEA est rajoute ton bout de code pour le faire fonctionner?

 

merci,

 

Patrick

Lien vers le commentaire
Partager sur d’autres sites

oui, tu peux le mettre dans la main loop, mais je ne la chargerait pas trop.

Et comme l'icône ne changerait que si la prévision change, donc, je laisserais l'affichage de l'icône àla fin du code de calcul de la prévision.

SI on utilise GEA, on n'a pas besoin de la main loop

Lien vers le commentaire
Partager sur d’autres sites

@cybersquat ; merci !

 

@jojo, l'appuie régulier sur les boutons, ne gardera pas l'icône de calcul  (un appui sur le futur bouton Today, prendra l'icône de ce meme bouton, pas l'icone du calcul d'arrosage)

D'ou le main loop.

mais comme toi j'aime pas le mainloop (peut être injustifié)

je vais donc mettre le calcul de l'icone dans 3 boutons (jour,prevision et calcul arrosage)

 

 

voila le GEA que je propose

-- Arrosage   
    GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 8},{"Repeat"}}) -- Historique Jour et derniere heure
    GEA.add(true, 30, "", {{"Time", "02:00", "02:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 9}}) -- Historique 5 Jours Pluie
    GEA.add(true, 30, "", {{"Time", "03:00", "03:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 10}}) -- Historique 10 Jours Pluie
    GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 11},{"Repeat"}}) -- Prévisions à  2 jours
    GEA.add(true, 20*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 12},{"Repeat"}}) -- Calcul Arrosage

  

qui donne :  1*4*24+6+10+1*4*24=208 appel jour

et si l'appel 10days, ne tombe pas dans la meme minute qu'un autre appel alors on est safe ...

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...