lexus_69 Posté(e) le 17 juin 2017 Signaler Posté(e) le 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
Berale64 Posté(e) le 17 juin 2017 Signaler Posté(e) le 17 juin 2017 Va voir ce sujet : https://www.domotique-fibaro.fr/topic/4933-settimeout/#comment-74451
lexus_69 Posté(e) le 18 juin 2017 Auteur Signaler Posté(e) le 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 !
Berale64 Posté(e) le 18 juin 2017 Signaler Posté(e) le 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.
lexus_69 Posté(e) le 19 juin 2017 Auteur Signaler Posté(e) le 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?
yoim Posté(e) le 19 juin 2017 Signaler Posté(e) le 19 juin 2017 fibaro:setSceneEnabled(sceneID, enabled) Pour désactiver enabled = false Pour activer enabled = true
lexus_69 Posté(e) le 19 juin 2017 Auteur Signaler Posté(e) le 19 juin 2017 Cool, merci !! Je vais tester ça ce soir.
lexus_69 Posté(e) le 19 juin 2017 Auteur Signaler Posté(e) le 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
lexus_69 Posté(e) le 20 juin 2017 Auteur Signaler Posté(e) le 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 ?
lexus_69 Posté(e) le 22 juin 2017 Auteur Signaler Posté(e) le 22 juin 2017 Personne à une idée ? Il y a peut être un autre moyen mais je manque de connaissances. Merci d'avance
Steven Posté(e) le 27 juin 2017 Signaler Posté(e) le 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é.
lexus_69 Posté(e) le 4 juillet 2017 Auteur Signaler Posté(e) le 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
Messages recommandés