lexus_69 0 Signaler ce message Posté(e) 17 juin 2017 Bonjour à tous, Je commence tout doucement a programmer en LUA et je suis perdu... Je vous explique: Je veux allumer une lampe uniquement la nuit quand je passe devant mon détecteur de présence. Tout bête mais je galère. Voici ce que je mets dans ma scène: --[[ %% properties 74 value %% globals –-]] local MaVariable local Jour_Nuit MaVariable = fibaro:getValue(74, 'value') if (MaVariable == '1') then if (Jour_Nuit == 'Nuit') then fibaro:call(65, 'turnOn') else fibaro:sleep(60000) fibaro:call(65, 'turnOff') end end Comme vous l'aurez compris ça ne marche pas. Je suis preneur de vos lumières Partager ce message Lien à poster Partager sur d’autres sites
Berale64 630 Signaler ce message Posté(e) 17 juin 2017 Va voir ce sujet : https://www.domotique-fibaro.fr/topic/4933-settimeout/#comment-74451 Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 18 juin 2017 Merci, c'est exactement ce que je voulais faire ! Tout fonctionne correctement On était bien loin du résultat avec mon bout de code bidon Par contre une question: régulièrement le HC2 me dit qu'il y a trop de scènes dans les notifications. Est ce normal, et est ce un problème ? En tout cas merci ! Partager ce message Lien à poster Partager sur d’autres sites
Berale64 630 Signaler ce message Posté(e) 18 juin 2017 Oui, c'est normal. A chaque fois que tu passes devant le détecteur ça lance une nouvelle instance de la scène. Ces scènes meurent au bout du temps défini dans le settimeout. Tu dois augmenter le "max running instances" dans la partie "Général" de la scène. J'ai mis 8 et n'ai jamais ce message. Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 18 juin 2017 Ok, merci beaucoup ! Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 19 juin 2017 Une autre petite question, j'aimerais stopper 2 scènes à une heure précise mais je ne sais pas quelle fonction utiliser. Des idées? Partager ce message Lien à poster Partager sur d’autres sites
yoim 51 Signaler ce message Posté(e) 19 juin 2017 fibaro:setSceneEnabled(sceneID, enabled) Pour désactiver enabled = false Pour activer enabled = true Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 19 juin 2017 Cool, merci !! Je vais tester ça ce soir. Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 19 juin 2017 Revoilà le casse bonbon... J'ai récupérer ce script qui fonctionne très bien (Merci Yannick) mais j'aimerais légèrement le modifier mais je ne sais pas comment m'y prendre... J'aimerais qu'entre 8h et jusqu'au couché du soleil et si la luminosité est <10 lux ma lumière s'allume. Il faut donc que je modifie cette ligne "if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7)" avec cette commande : fibaro:getValue(1, "sunsetHour") mais comment l'intégrer ? Le script en question: --[[ %% properties 31 value 33 value %% globals --]] local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(31, "value"); local HeureActuelle = os.date("*t"); if (fibaro:countScenes() > 1) then fibaro:abort() end; fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min']) fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min") if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7) and ( tonumber(fibaro:getValue(31, "value")) > 0 ) and ( tonumber(fibaro:getValue(33, "value")) <= 10 ) ) then fibaro:call(29, "turnOn"); fibaro:sleep(60*1000); end if (( tonumber(fibaro:getValue(31, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(29, "turnOff") end Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 20 juin 2017 Je me suis inspiré d'une scène en mode bloc puis convertie en LUA: --[[ %% properties 74 value 76 value %% globals --]] local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(74, "value"); local HeureActuelle = os.date("*t"); if (fibaro:countScenes() > 1) then fibaro:abort() end; fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min']) fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")if ((HeureActuelle['hour']>= 8 and string.format("%02d", HeureActuelle.hour) .. ":" .. string.format("%02d", HeureActuelle.min) == fibaro:getValue(1, "sunriseHour")) and ( tonumber(fibaro:getValue(74, "value")) > 0 ) and ( tonumber(fibaro:getValue(76, "value")) < 5 ) -- valeur en Lux ) then fibaro:call(65, "turnOn"); fibaro:sleep(60*1000); end if (( tonumber(fibaro:getValue(74, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60) then delayedCheck0 = true; end if ( delayedCheck0 == true ) then fibaro:call(65, "turnOff") end Mais ça ne fonctionne toujours pas Une idée du pourquoi ? Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 22 juin 2017 Personne à une idée ? Il y a peut être un autre moyen mais je manque de connaissances. Merci d'avance Partager ce message Lien à poster Partager sur d’autres sites
Steven 2 335 Signaler ce message Posté(e) 27 juin 2017 if ( (HeureActuelle['hour']>= 8) and (string.format("%02d", HeureActuelle.hour) .. ":" .. string.format("%02d", HeureActuelle.min) <= fibaro:getValue(1, "sunriseHour") ) then tu avais un == au lieu d'un <= Après je sais pas si la suite fonctionne je n'ai rien testé. Partager ce message Lien à poster Partager sur d’autres sites
lexus_69 0 Signaler ce message Posté(e) 4 juillet 2017 Ah ben oui, je n'avais même pas fait attention!!! J'ai résolu le problème avec une variable Jour_Nuit Merci pour ta réponse en tout cas Partager ce message Lien à poster Partager sur d’autres sites