jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 surtout pas : l'icône à afficher dépend du calcul qui détermine l'action à faire (arroser, pas, un peu, beaucoup, (tendrement, à la folie, ) Donc à la fin de chaque appuit sur une des icônes de mise à jour des données (futur today, 5 jours, 10 jours, +3 jours) je lui dirait d'appuyer sur le bouton calcul : comme ça tu n'as que une fois le code de logique de calcul, et ce bouton mets la bonne icône. On n'associe aucune icône au VD et à chacun de ses boutons. Cela offre un avantage supplémentaire, c'est que si on voir l'horrible cube bleu, c'est qu'il n'est pas allé au bout et qu'il y a eu une erreur
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 effectivement c'est plus propre :-)
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 pour le main loop si vous avez pas GEA, je pense qq chose de ce style (corrigez moi si je me trompe) while true do local Var_Heure = os.date("%H:%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "02:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "9") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 5 derniers jours récupéré") elseif Var_Heure == "03:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "10") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 10 derniers jours récupéré") end fibaro:sleep(60*1000) end par contre l'appuie régulier toutes les 15mn faut que je regarde de plus près - V.1.3 de dispo sur le 1er post - je regarde encore ce qu'il faut mettre dans le main loop pour l'appuie régulier
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 et pour ce qui est de l'appuis régulier tous les 15min, je proposerais ceci dans le main loop while true do local Var_Heure = os.date("%H:%M") local Var_Min = os.date("%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "02:06" then fibaro:call(fibaro:getSelfId(), "pressButton", "9") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 5 derniers jours récupéré") elseif Var_Heure == "03:06" then fibaro:call(fibaro:getSelfId(), "pressButton", "10") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 10 derniers jours récupéré") end if Var_Min =="00" or Var_Min == "15" or Var_Min == "30" or Var_Min == "45" then fibaro:call(fibaro:getSelfId(), "pressButton", le boutou à appuyer toutes le 15 min) end fibaro:sleep(60*1000) -- sleep 1 min end j'ai mis le appuis journaliers à 2h06 et 3h06, pour être sà»r qu'il n'y ait pas de chevauchement. Dans ta v1.3 as-tu déjà fait le split des boutons ?
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 merci jojo je mets à jour le 1er post. oui la 1.3 à la split comme vu le screenshot du 1er post Test en temps réel, pluie sur Paris j'utilise cette station : http://www.wunderground.com/personal-weather-station/dashboard?ID=ISAINTGE24 elle vient de remontée 0.25mm de pluie --> cool ça marche bien par contre l'appel du JSON donne encore "precip_1hr_metric":" 0", "precip_today_metric":"0", car je pense car c'est un nombre entier et que ça affichera qu'à partir de 1mm si je prends une station ou il a plus plu (3mm) http://www.wunderground.com/personal-weather-station/dashboard?ID=IILEDEFR53 le JSON remonte bien "precip_1hr_metric":" 2", "precip_today_metric":"3" faudra donc être patient et regarder la pluie tomber :-)
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 voilà j'ai mis à jour le post1 avec le main loop sur input de jojo perso j'ai rajouté dans le bouton calcul elseif (Dday > 3) then -- Il a plu msg = "Il a plu" fibaro:setGlobal("Arrosage", "Non") pour tenir compte de la pluie du Jour
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 dans le post 1 c'est toujours la version 1.3, ou faut-il attendre une version 1.4 ?
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 en ligne. le main loop est toujours àcopier/coller depuis le post1 j'ai mis en commentaire le "push" sur smartphone, vous pouvez le remettre si vous voulez
pepite Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 ca marche super pour moi et j'ai pris le GEA de 13:04 Bon le plus drole : j'ai pas de jardin encore, donc rien a arroser du tout ;-)..en atte,ndant la fin de la construction merci beaucoup sakkhho :60:
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 Lol Tu peux peut être en attendant t en servir pour savoir si tu te douche ou pas. Genre Tahiti douche. Comprends qui peut.
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 Super, merci pour tout ça fonctionne Nikel !
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 Sakkhho, tu ne m'en voudra pas ? Promis ?
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 J'ai encore une idée pour économiser des calls et rassembler les boutons Last 5 Days et Last 10 Days. Last 5 Days fait 1 call pour hier, puis 5 call pour les 5 derniers jours, c'est-à -dire J-1, J-1, J-2, J-3, J-4, J-5 Last 10 Days fait 10 call pour les 10 derniers jours, c'est-à -dire : J-1, J-2, J-3, ..., J-10 Tu vois où je veux en venir ? Donc un bouton l'actuel Last 10 Days, et hier = J-1 5 derniers jours = J-1 + J-2 + J-3 + J-4 + J-5 10 derniers jours = J-1 + J-2 + J-3 + J-4 + J-5 + J-6 + J-7 + J-8 + J-9 + J-10 ou (5 derniers jours ) + J-6 + J-7 + J-8 + J-9 + J-10
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 @megabubu, merci, si ca peut servir je suis très content @jojo, encore une fois 100% d'accord j'avais tenté de le faire ( http://www.domotique-fibaro.fr/index.php/topic/4626-pluviométrie-avec-netatmo/?p=70635) mais mes connaissances étant ce qu'elles sont je n'avais pas réussi (je voulais inclure un if dans un if) comme le VD marche bien maintenant je vais retenter le coup
mprinfo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 Tu peux aussi utiliser or et and dans les if pour inclure un if dans un if lol If If end end Tu peux aussi utliser elseif Moi j'utilise function pour diminuer le nombre de if
Sakkhho Posté(e) le 14 mai 2015 Auteur Signaler Posté(e) le 14 mai 2015 c'est bon je l'ai local previous_10days = 10 -- max 10 calls per minute local previous_5days = 5 local yesterday = 1 rainyesterday = 0 rain5days = 0 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) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain10days = rain10days + jsonTable.history.dailysummary[1].precipm end for i = 1, yesterday do if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rainyesterday = jsonTable.history.dailysummary[1].precipm end end for i = 1, previous_5days do if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain5days = rain5days + jsonTable.history.dailysummary[1].precipm end end end fibaro:debug(" Il est tombé " .. rainyesterday .. " mm hier") fibaro:debug(" Il est tombé " .. rain5days .. " mm depuis " .. previous_5days .. " jours") fibaro:debug(" Il est tombé " .. rain10days .. " mm depuis " .. previous_10days .. " jours") pas le temps de mettre une V1.5 - je dois partir au resto demain
jojo Posté(e) le 14 mai 2015 Signaler Posté(e) le 14 mai 2015 je propose ceci, ça me paraît plus clair local previous_10days = 10 -- max 10 calls per minute local previous_5days = 5 local yesterday = 1 rainyesterday = 0 rain5days = 0 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) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain10days = rain10days + jsonTable.history.dailysummary[1].precipm if i <= yesterday then rainyesterday = rainyesterday + jsonTable.history.dailysummary[1].precipm end if i <= previous_5days then rain5days = rain5days + jsonTable.history.dailysummary[1].precipm end end end fibaro:debug(" Il est tombé " .. rainyesterday .. " mm hier") fibaro:debug(" Il est tombé " .. rain5days .. " mm depuis " .. previous_5days .. " jours") fibaro:debug(" Il est tombé " .. rain10days .. " mm depuis " .. previous_10days .. " jours")
Sakkhho Posté(e) le 15 mai 2015 Auteur Signaler Posté(e) le 15 mai 2015 V1.5 en ligne sur le post 1 pour optimiser les appels sur 1bouton. j'ai mis en forme aussi, l'ordre des boutons on a donc - Today qui fait 1 appel - Last Days, qui fait 10 appels - Next 2 days, qui fait 1 appel du coup je rafraichi toutes les 10mns Today et NextDays --> 2 appels * 6 requetes/h * 24 = 288 et 1 click toutes les nuit sur Last Day = 10 TOTAL 298 (GEA et MainLoop à jour sur le 1er post) J'ai aussi rajouté qq lignes dans le calcul d'arrosage pour prendre en compte les data Hier. Bonne journée 1
jojo Posté(e) le 15 mai 2015 Signaler Posté(e) le 15 mai 2015 peux-tu SVP remettre le code de ton calcul arrosage (que tu as modifié), car suivant tes conseils, j'essaie maintenant de limiter le nombre d'import des VD ... P.S. très chouette la nouvelle proposition de layout
Sakkhho Posté(e) le 15 mai 2015 Auteur Signaler Posté(e) le 15 mai 2015 Je sais pas si le toolkit du Krikoff permet de lire le code des VD ? rien d'extraordinaire sur le calcul, mais je dis juste si pluie Hier alors pas besoin ----------------- calcul ---------------------- local selfId = fibaro:getSelfId() local Dday = tonumber(fibaro:getValue(selfId, "ui.lblJour.value")) local days1 = tonumber(fibaro:getValue(selfId, "ui.lblHier.value")) local days10 = tonumber(fibaro:getValue(selfId, "ui.lbl10.value")) local days5 = tonumber(fibaro:getValue(selfId, "ui.lbl5.value")) local prevision = tonumber(fibaro:getValue(selfId, "ui.lblPrevu.value")) local pluiencours = tonumber(fibaro:getValue(selfId, "ui.lblHeure.value")) > 0.1 local msg = "" if (prevision > (quantie_jour_mm*nb_jour_prevision)*1) then -- Il est prévu de pleuvoir plus que souhaité msg = "Pluie annoncée" fibaro:setGlobal("Arrosage", "Non") elseif (days5 > (quantie_jour_mm*nb_jour_prevision)*1.5) then -- Il a trop plu msg = "Il a beaucoup plu" fibaro:setGlobal("Arrosage", "Non") elseif (Dday > 3) then -- Il a plu if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Il a plu suffisamment" fibaro:setGlobal("Arrosage", "Non") end elseif (days1 > 3) then -- Il a plu if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Il a plu hier" fibaro:setGlobal("Arrosage", "Non") end elseif (days5 > 5 and (prevision < (quantie_jour_mm*nb_jour_prevision)*1)) then -- Sol sec, arrosage utile if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Arrosage Court" fibaro:setGlobal("Arrosage", "Leger") end else if (pluiencours) then msg = "Il pleut" fibaro:setGlobal("Arrosage", "Non") else msg = "Arrosage Long" fibaro:setGlobal("Arrosage", "Important") end end 1
jojo Posté(e) le 15 mai 2015 Signaler Posté(e) le 15 mai 2015 merci, J'ai un peu modifié le début de la partie du calcul, histoire qu'il ne fasse pas d'erreur s'il ne trouve pas de données et qu'il m'affiche un icône, plutôt que l'horrible cube bleu ... ----------------- calcul ---------------------- local selfId = fibaro:getSelfId() local Dday = tonumber(fibaro:getValue(selfId, "ui.lblJour.value")) or 0 local days1 = tonumber(fibaro:getValue(selfId, "ui.lblHier.value")) or 0 local days10 = tonumber(fibaro:getValue(selfId, "ui.lbl10.value")) or 0 local days5 = tonumber(fibaro:getValue(selfId, "ui.lbl5.value")) or 0 local prevision = tonumber(fibaro:getValue(selfId, "ui.lblPrevu.value")) or 0 local pluiencours = tonumber(fibaro:getValue(selfId, "ui.lblHeure.value")) or 0 pluiencours = pluiencours > 0.1 en fait quand tu dis "or qqch", si l'expression précédente retourne nil, il met qqch, sinon c'est la valeur de la première expression. Sympa ?
jojo Posté(e) le 15 mai 2015 Signaler Posté(e) le 15 mai 2015 il y a un truc bizarre avec le calcul : il a plu aujourd'hui, et il faudrait faire un arrosage long ? Je vais regarder d'un peux plus prêt la "logique" du calcul
Messages recommandés