Rem's Posté(e) le 7 août 2014 Signaler Partager Posté(e) le 7 août 2014 Bonjour à tous, Mon talent de programmeur en Lua n'étant plus à refaire, je n'arrive évidemment pas à mes fins. Je pense ne pas avoir de problème de matériel (mon oeil de sauron fonctionne semble t il). Je vous expose mon objectif dans cette Sdb : Déclencher un Wall plug (bandeau led IKEA), entre 21h et 7h30 (ou alors intensité inf à 45 lux), pendant une durée de 90 sec. Si cela redéclenche, la scène doit repartir au début (ou alors de nouveau 90 sec). pour l'instant ca clignote, et c'est tout Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 août 2014 Signaler Partager Posté(e) le 7 août 2014 Voici une idée de scène --[[ %% properties 100 value %% globals --]] local wallplug = 50 local mss = 100 local mss_lux = 102 local nom_variable_global = "ETEINDRE" -- si la luminosité est suffisante, on ne fait rien if (tonumber(fibaro:getValue(mss_lux, "value")) > 45) then fibaro:abort() end -- pour chaque déclenchement on met à jour l'heure de l'extinction dans une variable globale -- soit ( maintenant + 90 secondes ) if (tonumber(fibaro:getValue(mss, "value")) > 0) then fibaro:setGlobal(nom_variable_global, os.time()+90) end -- si cette scène tourne déjà on stoppe if (fibaro:countScenes() > 1) then fibaro:abort() end -- On allume le bandeau fibaro:call(wallplug, "turnOn") -- On attends d'avoir atteint l'heure d'exctinction. while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do fibaro:sleep(1000); end -- On éteint le bandeau fibaro:call(wallplug, "turnOff") Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 7 août 2014 Auteur Signaler Partager Posté(e) le 7 août 2014 Super !!! Merci pour ton retour. Il m'embête encore un peu : (Error) 20:18:34: Line 33 : Attempt to compare nil with number Cela correspond à la ligne while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do, puisque j'ai rajouté 1 debug apres le "turn on" et "turn off". Une idée ... ? merci pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 7 août 2014 Signaler Partager Posté(e) le 7 août 2014 As-tu créé la variable globale ? Je n'ai pas précisé qu'il fallait le faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 10 août 2014 Auteur Signaler Partager Posté(e) le 10 août 2014 Bonjour Steven, de retour d'un p'tit WE, j'ai fait plusieurs tentatives mais je n'arrive pas à un résultat normal. Il déclenche en micro coupure. Il n'y aurait pas des réglages à faire dans les paramètres du détecteur ? PS : J'ai crée une variable Timerdate, j'ai laissé les "" dans ton script (en lieu et place de ETEINDRE). Merci encore pour ton aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 11 août 2014 Signaler Partager Posté(e) le 11 août 2014 Copie moi ton script et je te corrige tout cela ... hummm ... j'essaie de corriger tout cela Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 11 août 2014 Auteur Signaler Partager Posté(e) le 11 août 2014 Bonjour Steven, c'est super cool de ta part --[[ %% properties 91 value 93 value %% globals --]] local wallplug = 112 local mss = 91 local mss_lux = 93 local nom_variable_global = "Timerdate" -- si la luminosité est suffisante, on ne fait rien if (tonumber(fibaro:getValue(mss_lux, "value")) > 55) then fibaro:abort() end -- pour chaque déclenchement on met à jour l'heure de l'extinction dans une variable globale -- soit ( maintenant + 90 secondes ) if (tonumber(fibaro:getValue(mss, "value")) > 0) then fibaro:setGlobal(nom_variable_global, os.time()+90) end -- si cette scène tourne déjà on stoppe if (fibaro:countScenes() > 1) then fibaro:abort() end -- On allume le bandeau fibaro:call(wallplug, "turnOn") fibaro:debug("Allumage led") -- On attends d'avoir atteint l'heure d'exctinction. while (tonumber(fibaro:getGlobalValue(nom_variable_global)) < os.time()) do fibaro:sleep(1000); end -- On éteint le bandeau fibaro:call(wallplug, "turnOff") fibaro:debug("Extinction led") Sinon, a défaut d'intensité en lux, la condition entre 20h et 8h du mat. Encore merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 11 août 2014 Signaler Partager Posté(e) le 11 août 2014 Ok, j'ai installé ton code à la maison, j'ai modifié les ID par contre, il va falloir attendre ce soir que je puisse être sur place pour tester. Juste un petit commentaire, ta ligne numéro 5 : "93 value" est à supprimer. Si tu la laisse cette scène va s’exécuter chaque fois qu'il y aura un changement de luminosité ce qui va poser problème. Ce que tu veux est que cette scène ne se lance que lorsque qu'il y a détection de mouvement, rien de plus. je te tiens au courant ce soir. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 11 août 2014 Auteur Signaler Partager Posté(e) le 11 août 2014 Concernant la Ligne 5, j'ai essayé àtout hasard. Encore merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 11 août 2014 Signaler Partager Posté(e) le 11 août 2014 Voilà... testé et approuvé --[[ %% properties 91 value %% globals --]] local wallplug = 112 local mss = 91 local mss_lux = 93 local nom_variable_global = "Timerdate" --local heure = string.format(os.date("%H"), "%2d")..string.format(os.date("%M"), "%2d") --local heureValable = heure >= "2100" or heure < "0730" local faibleLumiere = (tonumber(fibaro:getValue(mss_lux, "value")) < 55) local enAlerte = (tonumber(fibaro:getValue(mss, "value")) > 0) -- A chaque fois que le détecteur sera en alerte et que la luminosité -- sera faible, on va modifier la variable globale if enAlerte and faibleLumiere then local extinction = os.time() + 90 fibaro:setGlobal(nom_variable_global, extinction) fibaro:debug("Extinction prévu à" ..os.date("%X", extinction)) else fibaro:abort() end -- Si plus d'une scène tourne en même temps, on arrête celle-ci if (fibaro:countScenes() > 1) then fibaro:abort() end -- On allume le bandeau fibaro:call(wallplug, "turnOn") fibaro:debug("Allumage à" .. os.date("%X")) -- On attends d'avoir atteint l'heure d'exctinction. while (os.time() < tonumber(fibaro:getGlobalValue(nom_variable_global))) do fibaro:sleep(1000); end -- On éteint le bandeau fibaro:call(wallplug, "turnOff") fibaro:debug("Extinction à" .. os.date("%X")) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 12 août 2014 Auteur Signaler Partager Posté(e) le 12 août 2014 Oh P ... !!, t'es mon idole ! Je crois que ca marche impec, j'ai essayé de changer les lux et la plage horaire, ca semble bon (tu t'en doutais, hein !!!). Dans les trucs que je n'ai pas compris, j'ai compris que les lignes 14 et 15 étaient en gris : Je croyais que ce n'était que des explications, commentaires, et non pas des lignes de programmation. Hors là , c'est la plage horaire ... tu pourrais m'expliquer ? Je te tiens au courant ce soir, je remets les paramètres initiaux. Encore merci. PS : Je vais essayer de faire de même avec une ouverture de porte et un wall plug, si tu veux bien, tu pourrais me corriger ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 12 août 2014 Signaler Partager Posté(e) le 12 août 2014 On avais le choix entre luminosité ou plage horaire, je me suis dis que la luminosité était plus appropriée mais j'ai quand même fait le code pour la plage horaire. Si tu veux l'utiliser, il faut décommenter les lignes 14 et 15, puis à la place de if enAlerte and faibleLumiere then mettre if enAlerte and heureValable then Voilà . Pour ton prochain script, aucun soucis. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 12 août 2014 Auteur Signaler Partager Posté(e) le 12 août 2014 C'est magnifique, P ... comme c'est beau J'y retourne je m'amuse comme un fou, je vais m'essayer, grace à tes rails, d'en faire de même. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 12 août 2014 Signaler Partager Posté(e) le 12 août 2014 Bon train Casse pas tout, je ne serais plus disponible pendant 2 semaines et je sais même pas si j'aurais du réseau. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Hello Steven, Arrives-tu à me faire un screenshot de la variable que tu as créé dans ton panneau de variable (j'avoue que je suis pas encore très à l'aise avec les variables...) Merci d'avance pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Salut, je peux pas, je suis à8h de ma box mais dans ce scénario la variable s'appelait "Timerdate". Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 19 août 2014 Auteur Signaler Partager Posté(e) le 19 août 2014 Salut Bouliboune, Tu vas dans panneaux, puis panneau variables, la tu as 1premier tableau avec en bas un bouton ajouter. Tu click, et tu renseigne , nom de la variable par Timerdate (ou autre chose plus parlante pour to, le truc c'est de bien respecter les changements et majuscule), puis le bouton sauver. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Hello merci pour ton aide. S agit- il des variables prédéfinies ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Non, une variable standard. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Et je laisse la valeur àzéro ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Oui c'est le scénario qui se chargera de modifier sa valeur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 19 août 2014 Signaler Partager Posté(e) le 19 août 2014 Ça marche )))) c est impeccable! Merci pour ton aide, je t offre l apéro àGenève si tu veux ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 20 août 2014 Auteur Signaler Partager Posté(e) le 20 août 2014 En revanche, je n'arrive pas a faire en sorte qu'il rajoute 90 sec àchaque déclenchement, c.-à-d. Tant que je suis dans la piece. Tu me diras comment ça se passe pour toi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bouliboule Posté(e) le 20 août 2014 Signaler Partager Posté(e) le 20 août 2014 Pour moi ça marche super bien. En gros a chaque fois que je bouge sous le détecteur, la scène recommence àzéro et repart pour 90 sec. La lumière reste donc toujours allumé en ma présence et s éteindre 90 secondes après mon dernier mouvement/passage. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Rem's Posté(e) le 20 août 2014 Auteur Signaler Partager Posté(e) le 20 août 2014 Suis un pas bon, Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés