Berale64 Posté(e) le 17 mai 2015 Auteur Signaler Posté(e) le 17 mai 2015 J'y comprends plus rien. Ma VG change deux fois par jour. Le premier changement vient d'être pris en compte. Attendons la suite !!!!!
mprinfo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 Attention il faut mettre a jour la VG avec une valeure différentes si la valeure est identique àla valeure de la VG il n'y aura pas de declenchement par trigger
Berale64 Posté(e) le 17 mai 2015 Auteur Signaler Posté(e) le 17 mai 2015 Oui, j'avais aussi fait ce constat.
Berale64 Posté(e) le 17 mai 2015 Auteur Signaler Posté(e) le 17 mai 2015 Bon, ben aujourd'hui ça marche !!! ???
Steven Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 Perso, j'allais dire que le code est correct Il faudrait voir le déclencheur ou l'utilisateur ... pour le 1er on a des pistes pour trouver les soucis*, par contre pour le 2ème ... aie, aie, aie * Ne pas utiliser le panneau des variables, ne pas changer la variable via un API, bien changer la valeur de la variable, ... MAIS BON, on s'en fiche, car tout refonctionne du côté de la box ... pour l'utilisateur ... c'est encore un peu flou.
mprinfo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 voila ce que j'utilise pour l'heure au lieu d'un do while true j'utilise les triggers mais bon je pense que les triggers sont dans une sorte de do while true lol --[[ %% autostart %% globals DemiHeure --]] fibaro:debug("Demarrage en cours...") fibaro:sleep(60*1000) local NbreScene = fibaro:countScenes() fibaro:debug("Nombres de Scéne en cours : "..NbreScene) local Minutes = tonumber(os.date("%M", os.time())) local Pause = 0 if Minutes > 30 then Pause = 60 - Minutes else Pause = 30 - Minutes end fibaro:debug("Mise a jour Variable : "..Pause.."mn") fibaro:sleep(Pause*60*1000) Minutes = tonumber(os.date("%M", os.time())) fibaro:debug(Minutes) fibaro:setGlobal("DemiHeure", Minutes) if Minutes == 0 then local Heure = tonumber(os.date("%H", os.time())) fibaro:setGlobal("Heure", Heure) end cela met a jours 2 variables globales Heures et minutes comme cela change en permanence pas de soucis pour les valeurs Ensuite lorsque j'ai besoin de surveiller une heure en particulier comme le matin au reveil j'ai fais cela il faut encore que j'optimise le code --[[ %% globals Heure --]] ---------------------------------------------------------------------- -- Contrôle si 1 Scène et déjà en cours et le déclencheur a 6h -- ---------------------------------------------------------------------- local NbreScene = fibaro:countScenes() if NbreScene ~= 1 then fibaro:debug("Il y a déjà une instance en cours... ") fibaro:abort(); elseif heureDeclenchement ~= 6 then local heureDeclenchement = tonumber(fibaro:getGlobalValue( "Heure" )) fibaro:debug("le déclencheur n'est pas 6h") fibaro:abort(); end ----------------------------------------------------------------------- -- les conditions pour que la scéne démarre sont rempli ----------------------------------------------------------------------- local idHue = {160, 161, 162} local ID ={ ["Onkyo"] = 192, ["LumiereEntrer"] = 11, ["Det_Garage"] = 182, ["PorteGarage"] = 13, ["VoletChPascal"] = 19 } local Jour_Nuit = "Nuit"--fibaro:getGlobalValue( "Jour_Nuit" ) local JourChome = "NON" --fibaro:getGlobalValue( "JourChome" ) local Conges = "NON"--fibaro:getGlobalValue( "Conges" ) local IdTel = fibaro:getGlobalValue( "IdI9305" ) fibaro:debug("il fait "..Jour_Nuit) fibaro:debug("Jour Ferié "..JourChome) fibaro:debug("Congés "..Conges) ---------------------------------------------------------------------- -- Recupération de la valeur d'un module ---------------------------------------------------------------------- function ValeurModule(id, body, valeur) local body = tonumber(fibaro:getValue(id, body)) if (valeur == "turnOn" and body == 0) then fibaro:call(id, valeur) elseif (valeur == "turnOff" and body == 1) then fibaro:call(id, valeur) else fibaro:debug("Deja allumer") end end ---------------------------------------------------------------------- -- Commande lampe Philips HUE ---------------------------------------------------------------------- function hue(valeur) for i=1,#idHue do ValeurModule(idHue[i], "ui.onOff.value", valeur) end end ---------------------------------------------------------------------- -- Si je ne travail pas la scéne s'arrete ---------------------------------------------------------------------- if JourChome == "OUI" or Conges == "OUI" then fibaro:debug("Je ne travail pas") fibaro:abort() end local Heure = os.date("%H:%M", os.time()) while Heure >="06:00" and Heure < "07:20" do Heure = os.date("%H:%M", os.time()) print("Heure actuelle ", Heure) ---------------------------------------------------------------------- -- 6h00 ---------------------------------------------------------------------- if Heure == "06:00" then fibaro:debug("Je travail") -- Allumer l'ampli ONKYO ValeurModule(ID["Onkyo"], "power", "turnOn") fibaro:call(ID["Onkyo"], "setVolume", "50") fibaro:call(ID["Onkyo"], "setInput", "NET") fibaro:call(108, "turnOn") if Jour_Nuit == "Jour" then fibaro:debug("il fait jour") -- Ouvrir le volet de la chambre fibaro:call(ID["VoletChPascal"], "open") else -- allumé les HUE car il fait nuit fibaro:debug("il fait nuit") hue("turnOn") end end ------------------------------------------------------------------ -- 6h55 ------------------------------------------------------------------ if Heure == "06:55" then if JourChome == "NON" and Conges == "NON" then fibaro:debug("Je travail") -- Eteondre l'ampli ONKYO fibaro:call(ID["Onkyo"], "setInput", "CBL/SAT") fibaro:sleep(10*1000) fibaro:call(ID["Onkyo"], "turnOff") -- Hue hue("turnOff") -- couloir if Jour_Nuit == "Nuit" then fibaro:call(ID["LumiereEntrer"], "turnOn") end -- porte Garage if tonumber(fibaro:getValue(ID["Det_Garage"], "value")) == 1 then fibaro:debug("La Porte est deja ouverte") else fibaro:call(ID["PorteGarage"], "turnOn") end else fibaro:debug("Je ne travail pas") end end ---------------------------------------------------------------------------- -- 7h10 controler et tout éteindre ---------------------------------------------------------------------------- if Heure == "06:56" then if tonumber(fibaro:getValue(ID["Det_Garage"], "value")) == 0 then fibaro:debug("La Porte est Fermer") else for i=1,10 do fibaro:call(IdTel, "sendPush", i .."/10 - La porte du Garage est ouverte") if tonumber(fibaro:getValue(ID["Det_Garage"], "value")) == 0 then i = 10 end fibaro:sleep(30*1000) end fibaro:call(ID["PorteGarage"], "turnOn") end -- couloir fibaro:call(ID["LumiereEntrer"], "turnOff") end fibaro:sleep(60*1000) end fibaro:debug("Fin de la boucle") plutôt qu'une while do true de je fais while Heure >="06:00" and Heure < "07:20" do Il y a pleins de solution avec les triggers et l'avantage c'est que la scéne ne tourne pas en permanence pour les volets j'ai fais comme cela script pour mettre a jours les VG et j'utilise cela pour gérer mes volets --[[ %% globals SoleilLever SoleilCoucher Heure --]] ---------------------------------------------------------------------------- -- Recupération de nom du trigger et de ca valeur ---------------------------------------------------------------------------- local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'global') then nomTrigger = trigger['name'] valeurTrigger = tonumber(fibaro:getGlobalValue(nomTrigger)) print("Nom du déclencheur = ", nomTrigger, " - Minutes : ", valeurTrigger) else fibaro:debug("La scéne ne peut être lancer que par une Variable Globale") fibaro:abort(); --nomTrigger = "Heure" -- pour test --valeurTrigger = 6 -- pour test end ----------------------------------------------------------------------------- -- Tables avec nom et ID des modules ----------------------------------------------------------------------------- local mesvolets ={ ["Bureau"] = 5, ["Ch_Amis"] = 7, ["Chaufferie"] = 9, ["Ch_Enfants"] = 17, ["Ch_toto"] = 19, ["Cuisine"] = 23, ["SAM"] = 25, ["SdB"] = 27, ["Salon"] = 29, } -- Table Zone (Groupes de modules) local RDC = {"Bureau", "Ch_Amis", "Chaufferie"} local Rue = {"Bureau", "Cuisine", "SAM"} local Jardin = {"Chaufferie", "Ch_Amis", "SdB"} local Chambre = {"Ch_toto", "Ch_Enfants"} -------------------------------------------------------------------------- -- Recuperation des valeurs des variables globales -------------------------------------------------------------------------- local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil local Heure = "Heure" --> Nom de la variable globale Heure local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo local Conges = fibaro:getGlobalValue("Conges") local VacScolaire = tonumber(fibaro:getGlobalValue("VacScolaire")) local IdTel = fibaro:getGlobalValue("IdI9305") -- Recuperation de id du tel pour le push local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde ---------------------------------------------------------------------------- -- Force JourChome a OUI si VacScolaire = 0 ou Conges = "OUI" ---------------------------------------------------------------------------- if VacScolaire == 0 or Conges == "OUI" then JourChome = "OUI" end ---------------------------------------------------------------------- -- Envoi d'un Push pour avertir que le box à démarrer ou redémarrer -- ---------------------------------------------------------------------- function EnvoiPush(Message) fibaro:debug("Envoi Push : "..Message) fibaro:call(IdTel, "sendPush", Message) end ----------------------------------------------------------------------- -- Test si la valeur a enoyer est différente de la valeur du module ----------------------------------------------------------------------- function testvaleur(id, valeurs) local GetValeur = tonumber(fibaro:getValue(id, "value")) if valeurs ~= GetValeur then fibaro:call(id, "setValue", valeurs) --fibaro:debug(id.." - action en cours... - Valeur "..valeurs) fibaro:sleep(Pause*1000) end end ---------------------------------------------------------------------------- -- Recupération de l'id par rapport au nom de la tables mesvolets ---------------------------------------------------------------------------- function volets(zone, valeurs) if (type(zone) == "table") then local messages = "Les "..#zone.." Volets : " for i,v in ipairs(zone) do messages = (messages..v..", ") local id = mesvolets[v] if id == nil then fibaro:debug("ERREUR NOM DU VOLET - "..v.." - dans une table") EnvoiPush("ERREUR NOM DU VOLET - "..v.." - dans une table") else testvaleur(id, valeurs) end end messages = (messages.."ont été actionnés à "..valeurs.."%") EnvoiPush(messages) elseif (type(zone) == "string") then local id = mesvolets[zone] if id == nil then fibaro:debug("ERREUR DANS LE NOM DU VOLET : "..zone) EnvoiPush("EERREUR DANS LE NOM DU VOLET : "..zone) else testvaleur(id, valeurs) EnvoiPush("Le volet : "..zone.." a été actionné à "..valeurs.."%") end else fibaro:debug("Erreur......") EnvoiPush("Erreur......") end end -------------------------------------------------------------------- -- test si le déclencheur est lever ou coucher du soleil -------------------------------------------------------------------- function Test(zone, valeurs, minutes) if zone ~= nil then if minutes == nil then; minutes = 0 end volets(zone, valeurs) else fibaro:debug("Erreur dans la table ou table inéxitante") EnvoiPush("Erreur dans la table ou table inéxitante") end end -------------------------------------------------------------------- -- test Lever -------------------------------------------------------------------- function lever(zone, valeurs, minutes, Jchome) if nomTrigger == nomLever and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Coucher -------------------------------------------------------------------- function coucher(zone, valeurs, minutes, Jchome) if nomTrigger == nomCoucher and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------- -- test Heure -------------------------------------------------------------------- function heure(zone, valeurs, minutes, Jchome) if nomTrigger == Heure and valeurTrigger == minutes then if Jchome == JourChome or Jchome == nil then Test(zone, valeurs, minutes) end end end -------------------------------------------------------------------------- -- Demarrage du programme -------------------------------------------------------------------------- -- Ne rien modifier au dessus de cette ligne ------------------------------------------------------------------------- -- Commandes a écrit pour lever du soleil -- lever (Funtion qui traite le lever du soleil -- coucher(zone, valeur, minutes) -- exemple pour actionné les volets de la table Rue a 80% 10 minutes avant le lever -- lever(Rue, 80, -10) -- exemple pour actionné le volet "Bureau" au lever du jour -- lever("Bureau", 99, 0) -- Pour actionner un volet au coucher du soleil -- Il faut remplacer lever par coucher -- ex : coucher(Rue, 0, 20) ------------------------------------------------------------------------ heure("Ch_toto", 99, 6, "NON") lever("Ch_Enfants", 99, -15) lever(Rue, 99, 10) lever(Jardin, 99, -15) lever("Salon", 99, -15) coucher(Rue, 0, 0) coucher(Chambre, 0, 10) coucher(Jardin, 0, 30) coucher("Salon", 85, 30) 1
Berale64 Posté(e) le 17 mai 2015 Auteur Signaler Posté(e) le 17 mai 2015 * Ne pas utiliser le panneau des variables, ne pas changer la variable via un API, bien changer la valeur de la variable, ... Merci Steven. J'ai bien expérimenté toutes ces petites subtilités. Voilà matière pour mprinfo pour un beau tuto en couleur !!! 1
mprinfo Posté(e) le 17 mai 2015 Signaler Posté(e) le 17 mai 2015 J'ai plus trop le temp avec les beaux jours qui arrivent je joue plus trop avec ma box ca pas mal de taf en extérieur
971jmd Posté(e) le 24 avril 2017 Signaler Posté(e) le 24 avril 2017 salut tous j'ai une question est-il possible dans un module virtuel de faire en sorte, qu'il presse le bouton a chaque foie que mon module(un walplug) change d'état. --[[ %% properties 664 value 664 power %% globals google1 --]] local trigger = fibaro:getSourceTrigger() fibaro:call(87, "pressButton", "1")
jojo Posté(e) le 25 avril 2017 Signaler Posté(e) le 25 avril 2017 Oui, tu fais une scène qui appuye sur le bouton du vd
971jmd Posté(e) le 25 avril 2017 Signaler Posté(e) le 25 avril 2017 salut jojo aiii le probleme est que rallonge mon exécution changement d'état du module ----> scène ---> bouton ----> exécution du script alors un autre question Mon module virtuel exécute une requête HTTP grâce à Net.FHttp...... est il possible de faire la meme chose directement dans une scène ?
jojo Posté(e) le 25 avril 2017 Signaler Posté(e) le 25 avril 2017 oui, Il y a moyen de faire des requètes HTTP au départ de scènes. La syntaxe est différentes que depuis un VD. Perso, je n'y entends pas grand chose, mais il me semble avoir vu dans un autre topic que tu faisais des requêtes http depuis des scènes. C'est le même principe.
971jmd Posté(e) le 25 avril 2017 Signaler Posté(e) le 25 avril 2017 A bon, j'utilise toujours des vdEnvoyé de mon iPhone en utilisant Tapatalk
pepite Posté(e) le 25 avril 2017 Signaler Posté(e) le 25 avril 2017 Depuis une scene : Net.HTTPClient :-)
Messages recommandés