mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 tu avais oublier un end et la boucle for next pour le traitement des tables
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 voila ce que me sort le DEBUG: [DEBUG]: Nombre de scènes en cours = 1 [ERROR]: line 13: attempt to concatenate local 'J_N' (a nil value) fibaro:debug("Jour_Nuit = " ..J_N)
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 J'ai trouvé mon erreur ... je voulais changer la ligne 13 ... alors que c'était la valeur 'Nuit' de la variable que je devais changer ... --[[ %% properties %% globals --]] -- Recupération de la valeur de la variable global Jour_Nuit local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la sceme fibaro:debug("Nombre de scènes en cours = " ..num) if (num == 1) then local J_N = fibaro:getGlobalValue( "Jour_Nuit" ); fibaro:debug("Jour_Nuit = " ..J_N) -- Fermeture des volets des chambres et allumage lumieres rdc local Id = {} local IdValue = {} if J_N == "Nuit+20mn" then Id = {16, 18, 20, 28, 34} -- id volets et lumieres IdValue = {0, 0, 0, TurnOn, TurnOn} -- Valeur 0=Fermer - 99 = Ouvert VoletPorte = {22, 24, 26} -- Volet si porte fermée Detecteur = {107, 115, 111} -- detecteur d'ouverture fibaro:debug("Nuit") end for i = 1,#Id do local TestName = fibaro:getName(Id[i]) local TestValue = fibaro:getValue(Id[i], "value") if IdValue[i] == "open" or IdValue[i] == "close" or IdValue[i] == "turnOn" or IdValue[i] == "turnOff" then fibaro:call(Id[i], IdValue[i]); else fibaro:call(Id[i], "setValue", IdValue[i]); -- Commande Module end if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur[i], "value")) == 0 ) then fibaro:call(Detecteur[i], "close"); end end else fibaro:debug("Nombre de Scénes en cours " ..num) end
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 tu as une erreur ligne 21 Nuit et la valeur (string) de Jour_Nuit tu ne peux pas ajouter 20mn fibaro:sleep(20*60*1000); il faut savoir que Jour_Nuit et le déclencheur de ton script la scéne ne sera exécuter que lorsque Jour_Nuit change de valeur
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 no comprendo jefe ? A la variable Jour_Nuit, j'ai ajouté la valeur Nuit+20mn J'ai créé une scène :
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 A ok je pouvais pas savoir☺ Envoyé de mon SM-G900F en utilisant Tapatalk
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 Par contre j'ai beau tester ... Le Debug me ressort la valeur Jour à la variable Jour_Nuit ? Et pourtant j'ai bien enregistré la scène avec 20 minutes ...après le couché du soleil ??? Cela avait marché avec la valeur Nuit (dans le DEBUG). Mais comme la nuit était tombé et je testais plus tard ... pour voir le fonctionnement en réel ... j'ai rajouté 20mn puis 90 lol ...
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 Si tu veux aussi ouvrir tes volets le matin tu peux le faire dans cette scene en ajoutant quelques lignes si cela t intéresse dit le moi Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 As tu exécuter la scene et sur cocher la case executer au demarrage Envoyé de mon SM-G900F en utilisant Tapatalk
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 Pour la scène Nuit+20mn ? je viens de la cocher. Le DEBUG me ressort une valeur 'nil' ... vide, nada, 0 ? Par contre pour la scène des volets, démarré en LUA, je n'ai pas cette case.
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 peut-être serait-ce mieux d'utiliser fibaro:sleep(20*60*1000); non ?
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 Normal tu la declanche avec un trigger Envoyé de mon SM-G900F en utilisant Tapatalk
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 qu'est ce qui est normal ? avec un trigger ?
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 Tu ne la démarre pas au demarrage de la hc2 Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 pour mettre a jour la variable Jour_Nuit moi j'utilise ce script --[[ %% autostart %% properties %% globals --]] while true do local Var_Jour = os.date("%H:%M", os.time()+15*60) -- 15 minute avant local Var_Nuit = os.date("%H:%M", os.time()-15*60) -- 15 minute Apres local currentDate = os.date("*t"); local Jour = fibaro:getValue(1, "sunriseHour") local Nuit = fibaro:getValue(1, "sunsetHour") --fibaro:debug("Jour : " ..Jour .." - Var_Jour = " ..Var_Jour) --fibaro:debug("Nuit : " ..Nuit .." - Var_Nuit = " ..Var_Nuit) if ( Var_Jour == Jour ) then fibaro:setGlobal("Jour_Nuit", "Jour"); elseif ( Var_Nuit == Nuit ) then fibaro:setGlobal("Jour_Nuit", "Nuit"); end fibaro:sleep(59*1000); -- s'execute toutes les minutes end
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 %% autostart pour que le script s’exécute au démarrage.
chrispec Posté(e) le 12 mars 2015 Auteur Signaler Posté(e) le 12 mars 2015 @Moicphil A la création d'un nouvelle scène en LUA, j'ai: Je coche 'Lancer au démarrage'. Une fois le code LUA écrit, j'enregistre et ensuite, j'ai: Et 'Lancer au démarrage' a disparu ... Normal ?
Moicphil Posté(e) le 12 mars 2015 Signaler Posté(e) le 12 mars 2015 Salut Oui, car en lua le 'lancer au demarrage' correspond à'autostart' dans l'entête du code.
mprinfo Posté(e) le 13 mars 2015 Signaler Posté(e) le 13 mars 2015 Comme dit phil pour une scene lua il n'y a pas de case a coché démarrer avec hc2 il faut mettre dans l entête de la scène %%autostart Si la scene et actionnée par un trigger ou autre ce n'est pas utile de mettre autostart Envoyé de mon SM-G900F en utilisant Tapatalk
chrispec Posté(e) le 11 avril 2015 Auteur Signaler Posté(e) le 11 avril 2015 @mprinfo Trois questions pour toi. En utilisant ton code: --[[ %% autostart %% properties %% globals Jour_Nuit --]] fibaro:sleep(59*1000); -- s'execute toutes les minutes -- Recupération de la valeur de la variable global Jour_Nuit local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la scene fibaro:debug("Nombre de scènes en cours = " ..num) if (num == 1) then local J_N = fibaro:getGlobalValue( "Jour_Nuit" ); fibaro:debug("Jour_Nuit = " ..J_N) -- Fermeture des volets des chambres et allumage lumieres rdc local Id = {} local IdValue = {} if J_N == "Nuit" then Id = {16, 18, 20, 28, 34} -- id BSO ETAGE et LUMIERES RDC (BSO: 16:ch.parents; 18:ch.Marie; 20:ch.Maà«l) (Lumieres: 28:cuisine; 32: séjour) IdValue = {0, 0, 0, TurnOn, TurnOn} -- Valeur 0=Fermer - 99 = Ouvert VoletPorte = {22, 24, 26} -- Volet si porte fermée (BSO: 22:cuisine; 24:salon; 26:séjour) Detecteur = {107, 115, 111} -- detecteur d'ouverture (FGK: 107:cuisine; 115:salon; 111: séjour) fibaro:debug("Nuit") end for i = 1,#Id do local TestName = fibaro:getName(Id[i]) local TestValue = fibaro:getValue(Id[i], "value") if IdValue[i] == "open" or IdValue[i] == "close" or IdValue[i] == "turnOn" or IdValue[i] == "turnOff" then fibaro:call(Id[i], IdValue[i]); else fibaro:call(Id[i], "setValue", IdValue[i]); -- Commande Module end if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur[i], "value")) == 0 ) then fibaro:call(Detecteur[i], "close"); end end else fibaro:debug("Nombre de scènes en cours " ..num) end Les volets sans détecteur se ferment à la tombée de la nuit. (l'heure du coucher du soleil: 20h22... ils se ferment à 20h10 ??? d'où peut venir ce décalage ? Les volets avec détecteur ne se ferment pas: pour tester, je laisse ouvert une porte fenêtre ... Est-ce que le fait qu'un seul détecteur soit 'ouvert' ne ferme pas ni le volet concerné, ni les autres équipés de détecteur FGBS ??? Et pourrais tu m'expliquer le code: for i = 1,#Id do local TestName = fibaro:getName(Id[i]) local TestValue = fibaro:getValue(Id[i], "value") if IdValue[i] == "open" or IdValue[i] == "close" or IdValue[i] == "turnOn" or IdValue[i] == "turnOff" then fibaro:call(Id[i], IdValue[i]); else fibaro:call(Id[i], "setValue", IdValue[i]); -- Commande Module end if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur[i], "value")) == 0 ) then fibaro:call(Detecteur[i], "close"); end end Merci de ton retour.
mprinfo Posté(e) le 17 avril 2015 Signaler Posté(e) le 17 avril 2015 tu as quoi comme scène pour mettre a jours ta variable jour_nuit la ligne 10 sert a quoi ? c'est la variable jour_nuit qui démarre ta scéne Pour le reste du code je vais voir cela ce week pour faire un test chez moi
chrispec Posté(e) le 17 avril 2015 Auteur Signaler Posté(e) le 17 avril 2015 Le code de la scène Jour_Nuit: --[[ %% autostart %% properties %% globals Jour_Nuit --]] while true do local Var_Jour = os.date("%H:%M", os.time()-15*60) local Var_Nuit = os.date("%H:%M", os.time()+15*60) local currentDate = os.date("*t"); local Jour = fibaro:getValue(1, "sunriseHour") local Nuit = fibaro:getValue(1, "sunsetHour") fibaro:debug("Jour : " ..Jour) fibaro:debug("Nuit : " ..Nuit) if ( Var_Jour == Jour ) then fibaro:setGlobal("Jour_Nuit", "Jour"); elseif ( Var_Nuit == Nuit ) then fibaro:setGlobal("Jour_Nuit", "Nuit"); end fibaro:sleep(59*1000); -- s'execute toutes les minutes end Et la ligne 10 vient de : http://www.domotique-fibaro.fr/index.php/topic/4218-sunrisehour-sunsethour-osdate-et-variable-jour-nuit/?hl=jour_nuit ... voili ...
mprinfo Posté(e) le 17 avril 2015 Signaler Posté(e) le 17 avril 2015 tu as fais un décalage de 15 mn dans ta boucle jour nuit
chrispec Posté(e) le 17 avril 2015 Auteur Signaler Posté(e) le 17 avril 2015 où les 15 minutes ? Je me réponds à moi-même ... lignes 10 et 11
Messages recommandés