sebcbien Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 Bonjour, Je crée ce petit fil pour publier mes modifications du plugin météo de Steven. Voici à quoi ça ressemble: Voici la version de Steven: (chez moi le mm de pluie ne fonctionnent pas) http://www.domotique-fibaro.fr/index.php/topic/1211-support-gea/page-220#entry92618 Et voici ma version modifiée qui pousse les résultats dans 3 Variables Globales (à créer) afin de pouvoir être utilisées ailleurs comme par exemple dans GEA. voici le fichier du VD: Prévision_Météo.vfib et le screenshot: Pour la configuration, il suffit donc de créer les 3 VG non prédéfinies: Meteo_Lendemain Meteo_Actuelle Meteo_Actuelle_Jou et de mettre le nom de la ville ici: local ville = "bruxelles" Voici le code principal pour info: local ville = "bruxelles" local Meteo_Actuelle_Local = " " local Meteo_Lendemain_Local = " " local Meteo_Actuelle_Journee_Local = " " local dateTag = os.date("%H:%M", os.time()) -- ================================== -- local URL = Net.FHttp("www.prevision-meteo.ch") response, status, errorCode = URL:GET("/services/json/" .. ville) local jsonTable = json.decode(response) local lieu = jsonTable.city_info.name .. " ["..jsonTable.city_info.elevation.. "m]" local current = jsonTable.current_condition.condition -- conditions actuelle local current_journee = jsonTable.fcst_day_0.condition -- conditions générale de la journée local temp = jsonTable.current_condition.tmp .. "°C ["..jsonTable.fcst_day_0.tmin .. "°/" .. jsonTable.fcst_day_0.tmax.."°]" local Meteo_Day = jsonTable.fcst_day_0.day_long local Meteo_Time = "["..jsonTable.current_condition.hour.."]" local pluie = 0 local snow = false for k, v in pairs(jsonTable.fcst_day_0.hourly_data) do if (tonumber(v.APCPsfc) > 0) then pluie = pluie + tonumber(v.APCPsfc) fibaro:debug("Pluie à "..k.." - Total du jour: "..pluie.."mm") end if v.ISSNOW == 1 then snow = true fibaro:debug("K: "..k.." = !! NEIGE !!") end end pluie = pluie .. " " if (snow) then pluie = pluie .. "!! NEIGE !!" end local id = fibaro:getSelfId() fibaro:call(id, "setProperty", "ui.Label1.value", lieu) fibaro:call(id, "setProperty", "ui.Label2.value", current_journee) fibaro:call(id, "setProperty", "ui.Label3.value", current) fibaro:call(id, "setProperty", "ui.Label4.value", temp) fibaro:call(id, "setProperty", "ui.Label5.value", pluie.." mm") Meteo_Actuelle_Local = Meteo_Time.." Météo Actuelle: "..current.." T°: "..temp.." Pluie: "..pluie.." mm" fibaro:setGlobal("Meteo_Actuelle", Meteo_Actuelle_Local) fibaro:debug(dateTag .." "..Meteo_Actuelle_Local) Meteo_Actuelle_Journee_Local = Meteo_Time.." Météo de ce "..Meteo_Day..": "..current_journee.." T°: "..temp.." Pluie: "..pluie.." mm" fibaro:setGlobal("Meteo_Actuelle_Jou", Meteo_Actuelle_Journee_Local) fibaro:debug(dateTag .." "..Meteo_Actuelle_Journee_Local) current = jsonTable.fcst_day_1.condition temp = "["..jsonTable.fcst_day_1.tmin .. "°/" .. jsonTable.fcst_day_1.tmax.."°]" Meteo_Day = jsonTable.fcst_day_1.day_long pluie = 0 snow = false for k, v in pairs(jsonTable.fcst_day_1.hourly_data) do if (tonumber(v.APCPsfc) > 0) then pluie = pluie + tonumber(v.APCPsfc) fibaro:debug("Pluie à "..k.." - Total du jour: "..pluie.."mm") end if v.ISSNOW == 1 then snow = true fibaro:debug("K: "..k.." = !! NEIGE !!") end end pluie = pluie .. " " if (snow) then pluie = pluie .. "!! NEIGE !!" end fibaro:call(id, "setProperty", "ui.Label6.value", current) fibaro:call(id, "setProperty", "ui.Label7.value", temp) fibaro:call(id, "setProperty", "ui.Label8.value", pluie.." mm") Meteo_Lendemain_Local = Meteo_Time.." Météo de demain "..Meteo_Day..": "..current.." T°: "..temp.." Pluie: "..pluie.." mm" fibaro:setGlobal("Meteo_Lendemain", Meteo_Lendemain_Local) fibaro:debug(dateTag .." ".. Meteo_Lendemain_Local) Et pour finir, voici le code GEA pour exploiter tout ceci: Je l'ai écrit de cette manière qu'il n'y a pas de push si on n'est pas à la maison et uniquement une seule fois par jour chaque météo (du jour et du lendemain) - la météo du jour est poussée sur le smartphone au matin au moment ou on désactive le mode nuit pour savoir le temps lorsque l'on s'habille) - la météo du lendemain est poussée le soir au retour sur le smartphone afin de savoir le temps du lendemain pour préparer les vêtements des enfants avant de les mettre au lit. afin de me passer de VG, j'ai ajouté un petit délai, donc mettre ça en fin de liste GEA local estAt_Home = {"Global", "PresentState", "At_Home"} local estAway = {"Global", "PresentState", "Away"} local est_AtHome_Or_Kids_Sleeping = {"Global", "PresentState", "Kids_Sleeping|At_Home"} ---------------------METEO---------------------- -- Météo soir 10 min après retour maison (away pendant plus de 30 minutes) isLongAwayOff = false GEA.add(estAway, 30*60, "", {{"function",function() isLongAwayOff = true end}}) GEA.add({estAt_Home,{"Global!", "Meteo_Lendemain", ""},{"function",function() return isLongAwayOff end}}, 10*60, "#value[2]#",{{"Time", "17:00", "20:30"},{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]},{"function",function() isLongAwayOff=false end}}) ------------------------------ -- Météo matin Instantanée au changement de presentState GEA.add({est_AtHome_Or_Kids_Sleeping}, -1, "",{{"function",function() fibaro:debug(" ------- waiting 1 s for PrevisousState dependent actions ------") end},{"function",function() fibaro:sleep(1100) end}}) GEA.add({est_AtHome_Or_Kids_Sleeping,{"Global!", "Meteo_Actuelle_Jou", ""},{"Global", "PreviousState", "Night_All_Off"}}, -1, "#value[2]#",{{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]}}) -- !!!!!!!!!!! LES ACTIONs instantanées placées CI DESSOUS AURONT UN DELAI DE 1,1 A CHAQUE CHANGMENT de PresentState = à At_Home ou Kids_Sleepin !!!!!!!!!! ------------- La variable globale previousState est définie par la scène ci-dessous, qui permet au script de savoir dans quel état se trouvait la maison juste avant le changement de la VG PresentState Pour cela il faut crée une VG PreviousState (de préférence prédéfinie) Connaitre l'état précédent de la maison peut être utile a de nombreuses occasions dont ici la météo. Mais je l'utilise aussi pour différencier si la maison est au réveil ou au passage en mode nuit etc. Ce n'est pas nécessaire donc mais utile pour une meilleure domotisation avec moins de notifications inutiles, actions à réaliser manuellement. --[[ %% properties %% globals PresentState --]] local This_Instance_State = fibaro:getGlobalValue("PresentState"); fibaro:debug(os.date("%a %d/%m", os.time()).." new start with PresentState = " .. This_Instance_State); while This_Instance_State == fibaro:getGlobalValue("PresentState") do fibaro:sleep(1000); --fibaro:debug("waiting with this instance = "..This_Instance_State) end fibaro:setGlobal("PreviousState", This_Instance_State); fibaro:debug(os.date("%a %d/%m", os.time()).." Exit With PreviousState set at: ".. This_Instance_State); 2
pepite Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 Super ;-) Je joue le fainenant, peux-tu partager le VD stp ? Suis pret : variables créées. Jolie Gestion avec GEA. Etonnant le nom ;-) YAMS
sebcbien Posté(e) le 7 novembre 2015 Auteur Signaler Posté(e) le 7 novembre 2015 Ouuupppssss .... ;-) edit: c'est fait :-)
pepite Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 Merci Sympa ta gestion dans le main loop. en secs ou en mins "instance.every" ? Vais pas m'en servir pour ce VD, je vais jouer avec GEA avec un matin et un soir ;-) mais je le garde de cote. MERCI
sebcbien Posté(e) le 7 novembre 2015 Auteur Signaler Posté(e) le 7 novembre 2015 effectivement le main loop est de toute beuté... Mais c'est maitre @steven qui l'a fait
pepite Posté(e) le 7 novembre 2015 Signaler Posté(e) le 7 novembre 2015 mes respects toujours au maitre ;-) Tu sais si c'est en secs ou en mins alors ?
sebcbien Posté(e) le 7 novembre 2015 Auteur Signaler Posté(e) le 7 novembre 2015 30 = 30 minutes ce qui est rigolo c'est qu'il se lance une fois, puis ensuite toutes les heures pile, heures 30 etc.
Allan2b Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 Bonjour et merci pour cet excellent VD en espèrent que les prévisions se rapprochent de la réalité . je voudrait stoker la valeur de la prévision pluie du jour même dans une variable pour l'utiliser dans ma gestion de l'arrosage . comment faire? je sèche là 1
sebcbien Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 Tu dois simplement stocker la variable pluie (au niveau de la ligne qui calcule le total du jour) dans une variable globaleSent from my Note4 edit: de retour sur mon pc, je peux te donner le No de la ligne: Tu peux faire un setGlobal de la variable pluie juste après la ligne 30 (avant qu'elle ne soit mise en forme). exemple: fibaro:setGlobal("Pluie__Actuelle", pluie)
sebcbien Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 en espèrant que les prévisions se rapprochent de la réalité . J'espère aussi ... et ce n'est pas facile pour le moment car il ne pleut pas... j'ai donc un peu travaillé à l'aveugle. A confirmer donc 1
pepite Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 au top, Bon auj, j'ai recu la meteo d'hier ;-) je jette un oeil ;-)
Allan2b Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 super merci "sebsbien" on va tester.
sebcbien Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 au top, Bon auj, j'ai recu la meteo d'hier ;-) je jette un oeil ;-) A "cause" de (ton) gea ou alors les VG ne sont pas bien "remplies" ?
Dyscus Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Bonjour, Excusez moi pour cette question débile... Je ne sais pas quoi faire avec les deux derniers morceaux de codes. J'ai créer les 3 variables dans le panneau de variables comme mentionné en amont et importé aussi le VD, il fonctionne bien je vois bien la méteo du jour et le prévisionnel. Merci pour votre aide, je débute... Autre question pour la création de variable prédéfinies PresentState et PreviousState que mettre dans "valeur" ? Merci
sebcbien Posté(e) le 10 novembre 2015 Auteur Signaler Posté(e) le 10 novembre 2015 PresentState me permet de savoir dans quel mode est ma maison et de l'utiliser un peu partout, par exemple dans gea: http://www.domotique-fibaro.fr/index.php/topic/2143-showroom-configs-gea/#entry27457 Mais ce sont mes etats, pour mes besoins... A toi de définir les iens, comment les nommer et les utiliser. ici le derner script ça me permet de savoir quel est l'état actuel de la maison et l'état précédent. je peux donc pousser la météo sur les smartphone uniquement au réveil quand on désactive l'alarme.C'est un plus, ce n'est pas obligatoire.
Dyscus Posté(e) le 12 novembre 2015 Signaler Posté(e) le 12 novembre 2015 Merci bien pour ce complément. Comment je pourrais faire pour que : 1- chaque soir à 20h je puisse recevoir une notification push sur mon iphone avec la météo du lendemain. 2- chaque matin à 07h je puisse recevoir une notification push sur mon iphone avec la météo du jour. Il faut coder a la main ou ce serait possible avec le mode scène bloc ? Merci
sebcbien Posté(e) le 12 novembre 2015 Auteur Signaler Posté(e) le 12 novembre 2015 Très facile avec gea avec les options {time,...,...} Sinon en.mode block je ne pense pas que l'on peut envoyer le contenu d'une vg via un push Sent from my Note4
nigamais Posté(e) le 13 novembre 2015 Signaler Posté(e) le 13 novembre 2015 Bonjour,merci pour ce VD comment faire pour les icones ? merci
sebcbien Posté(e) le 13 novembre 2015 Auteur Signaler Posté(e) le 13 novembre 2015 Bonjour, voici l'icone que j'utilise.
nigamais Posté(e) le 13 novembre 2015 Signaler Posté(e) le 13 novembre 2015 Merci pour tout ou doit toi mettre le dernier script :j'ai ajouté un petit délai, donc mettre ça en fin de liste GEA merci je suis un newbie j'essaye de comprendre.
pepite Posté(e) le 13 novembre 2015 Signaler Posté(e) le 13 novembre 2015 Explique nous ce que tu veux faire, j'ai pas suivi le fil depuis le début. Mets du code si tu en as pour qu'on puisse te répondre
nigamais Posté(e) le 13 novembre 2015 Signaler Posté(e) le 13 novembre 2015 Je suis le tuto : Et pour finir, voici le code GEA pour exploiter tout ceci: Je l'ai écrit de cette manière qu'il n'y a pas de push si on n'est pas à la maison et uniquement une seule fois par jour chaque météo (du jour et du lendemain) - la météo du jour est poussée sur le smartphone au matin au moment ou on désactive le mode nuit pour savoir le temps lorsque l'on s'habille) - la météo du lendemain est poussée le soir au retour sur le smartphone afin de savoir le temps du lendemain pour préparer les vêtements des enfants avant de les mettre au lit. afin de me passer de VG, j'ai ajouté un petit délai, donc mettre ça en fin de liste GEA local estAt_Home = {"Global", "PresentState", "At_Home"} local estAway = {"Global", "PresentState", "Away"} local est_AtHome_Or_Kids_Sleeping = {"Global", "PresentState", "Kids_Sleeping|At_Home"} ---------------------METEO---------------------- -- Météo soir 10 min après retour maison (away pendant plus de 30 minutes) isLongAwayOff = false GEA.add(estAway, 30*60, "", {{"function",function() isLongAwayOff = true end}}) GEA.add({estAt_Home,{"Global!", "Meteo_Lendemain", ""},{"function",function() return isLongAwayOff end}}, 10*60, "#value[2]#",{{"Time", "17:00", "20:30"},{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]},{"function",function() isLongAwayOff=false end}}) ------------------------------ -- Météo matin Instantanée au changement de presentState GEA.add({est_AtHome_Or_Kids_Sleeping}, -1, "",{{"function",function() fibaro:debug(" ------- waiting 1 s for PrevisousState dependent actions ------") end},{"function",function() fibaro:sleep(1100) end}}) GEA.add({est_AtHome_Or_Kids_Sleeping,{"Global!", "Meteo_Actuelle_Jou", ""},{"Global", "PreviousState", "Night_All_Off"}}, -1, "#value[2]#",{{"Portable", id["PHONE_SEB"]},{"Portable", id["PHONE_GG"]}}) -- !!!!!!!!!!! LES ACTIONs instantanées placées CI DESSOUS AURONT UN DELAI DE 1,1 A CHAQUE CHANGMENT de PresentState = à At_Home ou Kids_Sleepin !!!!!!!!!! -------------
sebcbien Posté(e) le 13 novembre 2015 Auteur Signaler Posté(e) le 13 novembre 2015 si tu ne connais pas encore gea, remets ça a plus tard si tu veux apprendre, c'est ici: http://www.domotique-fibaro.fr/index.php/topic/1211-support-gea/
Sakkhho Posté(e) le 14 novembre 2015 Signaler Posté(e) le 14 novembre 2015 bizarrement j'ai importé le VD, crée les 3 VGs et j'ai une erreur quand je click sur refresh (j'ai laissé bruxelles pour le moment) [ERROR] 09:23:13: line 10: Expected value but found T_END at character 1 EDIT : j'ai changé de ville et c'est bon :-) il aime pas les belges.
Sakkhho Posté(e) le 14 novembre 2015 Signaler Posté(e) le 14 novembre 2015 J'aime bien ce VD pour ça mise en page et pour les VGs, adopté J'ai rajouté la gestion des icônes comme dans le module météo du fofo ici à savoir --Affichage des icones en fonction des conditions météo local icone = { ["Ensoleillé"] = 1057, --numéro icone à renseigner ["Nuit claire"] = 1079, ["Ciel voilé"] = 1063, ["Nuit légèrement voilée"] = 1082, ["Faibles passages nuageux"] = 1069, ["Nuit bien dégagée"] = 1078, ["Brouillard"] = 1062, ["Stratus"] = 1090, ["Stratus se dissipant"] = 1091, ["Nuit claire et stratus"] = 1080, ["Eclaircies"] = 1066, ["Nuit nuageuse"] = 1083, ["Faiblement nuageux"] = 1067, ["Fortement nuageux"] = 1070, ["Averses de pluie faible"] = 1059, ["Nuit avec averses"] = 1075, ["Averses de pluie modérée"] = 1061, ["Averses de pluie forte"] = 1060, ["Couvert avec averses"] = 1064, ["Pluie faible"] = 1088, ["Pluie forte"] = 1089, ["Pluie modérée"] = 1092, ["Développement nuageux"] = 1065, ["Nuit avec développement nuageux"] = 1077, ["Faiblement orageux"] = 1068, ["Nuit faiblement orageuse"] = 1081, ["Orage modéré"] = 1084, ["Fortement orageux"] = 1071, ["Averses de neige faible"] = 1058, ["Nuit avec averses de neige faible"] = 1076, ["Neige faible"] = 1072, ["Neige modérée"] = 1074, ["Neige forte"] = 1073, ["Pluie et neige mêlée faible"] = 1085, ["Pluie et neige mêlée modérée"] = 1087, ["Pluie et neige mêlée forte"] = 1086 } -- Détermination de l'icône associée à la condition local Num_Icone = icone[current_journee] fibaro:call(fibaro:getSelfId() , "setProperty", "currentIcon", Num_Icone) 1
Messages recommandés