chrispec Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Bonjour, J'ai 3 fenêtres et 3 portes fenêtres, tous équipés de VR. J'ai une scène blocks qui ferme les 6 VR au coucher du soleil. Elle ne tient pas en compte la position ouvert/fermé des portes fenêtres. Pour une porte fenêtre je fais une autre scène en LUA: local startSource = fibaro:getSourceTrigger(); if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" ) and ( tonumber(fibaro:getValue(67, "value")) == 0 ) or startSource["type"] == "other" ) then fibaro:call(22, "close"); end Comment me conseillez vous de faire pour intégrer deux autres VR à fermer suivant la position ouvert/fermé des portes, et fermer les 3 VR de l'étage sans condition supplémentaire ? Merki à vous
Lionel57 Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Bonsoir, Voilà ce que je te propose pour la fermeture des volets des portes fenêtres
Moicphil Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Bonjour Chrispec, peut tu éditer ton message et insérer les balises "code" : <> Merci
chrispec Posté(e) le 5 mars 2015 Auteur Signaler Posté(e) le 5 mars 2015 Bonjour Moicphil, Quand la page erreur 503 disparaitra en local... oui
chrispec Posté(e) le 5 mars 2015 Auteur Signaler Posté(e) le 5 mars 2015 @Lionel57 J'ai ça actuellement: Je n'arrive pas à avoir un entre deux : Une seule scène avec: 3 VR sans condition pour FGK 3 VR avec condition pour FGK
Lionel57 Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Et ça fonctionne ? Première remarque, pour les portes fenêtres, avant de fermer les volets, je vérifierais que les fenêtres sont fermées (ça serait trop bête d'être enfermé dehors à la tombé de la nuit...)
pepite Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 @chrispec, lionel57 a raison, verifie si tes portes-fenetres sont ouvertes ou non avant de fermer les volets , imagine que tu sirotes une petite boisson desalterante a bulle ;-) au coucher du soleil et que tes volets se ferment....et hop dehors ;-)
mprinfo Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Regarde sur le fofo j ai posté un script pour les volets tu pourras l adapté pour tes besoins assez facilement
chrispec Posté(e) le 5 mars 2015 Auteur Signaler Posté(e) le 5 mars 2015 Ma première étape était de domotiser les VR. Fait. La seconde étape, créer une scène pour les fermer tous le soir. ça marche nickel. La troisième ... installer des fgk aux 3 VR de portes fenêtres. Installés. La quatrième ... objet de ce post 'besoin d'aide' ... une seule: 3 VR de l'étage sans FGK (vais pas rentrer par la fenêtre du premier ) + 3 VR aux 'portes-fenêtres' avec FGK ne se fermant que si portes fermées ... Voili
chrispec Posté(e) le 5 mars 2015 Auteur Signaler Posté(e) le 5 mars 2015 Bonjour Chrispec, peut tu éditer ton message et insérer les balises "code" : <> Merci Désolé ... Je n'avais pas saisi Du taf, en accès distant, j'avais la V3.901. Par teamViewer ... 4.035 Et en rentrant ... erreur 503 ! Une idée ?
mprinfo Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Il faut que tu récupère la valeur du fgk Si fgk = fermer alors je ferme le volet Sinon la porte et ouverte Mais regarde le tuto que j'ai fais ca te doonera une idée en une seul scene j ouvre et je ferme les volets apres je peux t aider pour ajouté les fkg
Lionel57 Posté(e) le 5 mars 2015 Signaler Posté(e) le 5 mars 2015 Tes contacteurs ont un statut "en alerte" si tes portes fenêtres sont ouvertes. Il faut donc les testes dans tes conditions
chrispec Posté(e) le 6 mars 2015 Auteur Signaler Posté(e) le 6 mars 2015 Bonjour, Voici une mise à jour pas encore testée. Vous semble t-elle correcte ? Le code peut-il être optimisé ? Nuit+10mn = au couché du soleil + 10 minutes --[[ %% properties 84 value -- id FGK Salon 67 value -- id FGK Cuisine %% globals Jour_Nuit --]] local startSource = fibaro:getSourceTrigger(); if ( ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" ) or startSource["type"] == "other" ) then fibaro:call(32, "turnOn"); -- lumière entrée fibaro:call(28, "turnOn"); -- lumière cuisine fibaro:call(26, "close"); --volet séjour fibaro:call(20, "close"); -- volet Chambre fille fibaro:call(18, "close"); -- volet Chambre fils fibaro:call(16, "close"); -- volet Chambre parents end if ( ( tonumber(fibaro:getValue(84, "value")) == 0 ) --FGK salon and ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" ) or startSource["type"] == "other" ) then fibaro:call(24, "close"); --volet salon end if ( ( tonumber(fibaro:getValue(67, "value")) == 0 ) -- FGK cuisine and ( fibaro:getGlobalValue("Jour_Nuit") == "Nuit+10mn" ) or startSource["type"] == "other" ) then fibaro:call(22, "close"); -- volet cuisine end
pepite Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 Suis pas un expert en LUA mais ca me semble pas mal, tu testes bien tes FGK et ta variable globale. Pour moi ca devrait fonctionner
mprinfo Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 local J_N = fibaro:getGlobalValue( "Jour_Nuit" ); local Id = {} local IdValue = {} Id = {32, 28, 28, 20, 18, 16} -- Id des volets roulants IdValue = {"turnOff", "turnOff", "close", "close", 0, 0} -- Valeur 0=Fermer - 99 = Ouvert for i = 1,#Id do local TestName = fibaro:getName(Id) local TestValue = fibaro:getValue(Id, "value") if IdValue == "open" or IdValue == "close" or IdValue == "turnOn" or IdValue == "turnOff" then fibaro:call(Id, IdValue); else fibaro:call(Id, "setValue", IdValue); -- Commande Module end fibaro:debug("---------------------") fibaro:debug("Nom = " ..TestName) fibaro:debug("Valeur = " ..TestValue .." - Valeur demander = " ..IdValue) end
mprinfo Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 tu peux mettre 0 ou close cela dépend si tu utilises "setValue" dans le call cela peut te permettre de fermer ou d'ouvrir tes volets avec la valeur que tu veux il ne te restre plus qu'a ajouter les volets et FGK que tu veux
chrispec Posté(e) le 6 mars 2015 Auteur Signaler Posté(e) le 6 mars 2015 Merci mrinfo. Du coup quelques questions: Quelle différence entre: --[[ %% properties 84 value -- id FGK Salon 67 value -- id FGK Cuisine %% globals Jour_Nuit --]] local startSource = fibaro:getSourceTrigger(); et local J_N = fibaro:getGlobalValue( "Jour_Nuit" ); local Id = {} local IdValue = {} Pourquoi déclarer J_N ainsi ? sans l'utiliser ensuite ? Quelle différence entre: fibaro:call(Id[i], IdValue[i]); et fibaro:call(Id[i], "setValue", IdValue[i]); Et à quoi sert: fibaro:debug("---------------------") fibaro:debug("Nom = " ..TestName) fibaro:debug("Valeur = " ..TestValue .." - Valeur demander = " ..IdValue[i])
mprinfo Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 1 - c'est pas différent c'est complémentaire on récupère la valeur de Jour_Nuit dans J_N cela permet par exemple dans la même scénes d'ouvrir et de fermer les volets grâce a J_N regarde ce poste http://www.domotique-fibaro.fr/index.php/topic/3959-ouverture-fermeture-allumer-eteindre-volets-lumi%C3%A9re-en-une-sc%C3%A9me/ la tu récupere la source du déclancheur local startSource = fibaro:getSourceTrigger(); local Id = {} -- je déclare une table exemple : local Id = {15, 33, 44} Id[1] = 15 Id[2] = 33 Id[3] = 44 #Id = 3 -- Nombre d'objet dans la table - tu envoies une valeur comme open, close, turnOn etc.... fibaro:call(Id, IdValue); - tu envoies une valeur de 0 à 99 0 = volet fermer ou lampe fermer avec un FGD fibaro:call(Id, "setValue", IdValue); Pour le debug ca me permet de savoir quel module sont actionnés
chrispec Posté(e) le 6 mars 2015 Auteur Signaler Posté(e) le 6 mars 2015 merci de tes explications! debug pour savoir ... tu le vois où ? Donc: fibaro:call(Id[i], "setValue", IdValue[i]); C'est comme pour une valeur de slider ... de 0 à 99%. Et pourquoi pas 100 ?
mprinfo Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 De 0 a 99 ca fait bien 100 Debug permet de voir ce qui ce passe lors de l execution d un script Dans la fenetre du bas tu vois les infos du debug
mprinfo Posté(e) le 6 mars 2015 Signaler Posté(e) le 6 mars 2015 Regarde avec le tookit de krikroff tu veras que un volet ouvert a une valeur de 99
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 @mprinfo Que penses tu de ce code ? Optimisable pour cuisine salon et séjour ? --[[ %% properties %% globals Jour_Nuit --]] -- 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("Nombres de Scéme 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 des volets roulants et lampes rdc IdValue = {0, 0, 0, TurnOn, TurnOn} -- Valeur 0=Fermer - 99 = Ouvert fibaro:debug("Nuit") end --Fermeture volet cuisine si porte fenetre fermee if J_N == "Nuit" and ( tonumber(fibaro:getValue(107, "value")) == 0 ) then fibaro:call(22, "close"); end --Fermeture volet salon si porte fenetre fermee if J_N == "Nuit" and ( tonumber(fibaro:getValue(115, "value")) == 0 ) then fibaro:call(24, "close"); end --Fermeture volet sejour si porte fenetre fermee if J_N == "Nuit" and ( tonumber(fibaro:getValue(111, "value")) == 0 ) then fibaro:call(26, "close"); end
mprinfo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 -- 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("Nombres de Scéme 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 des volets roulants et lampes rdc 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) local TestValue = fibaro:getValue(Id, "value") if IdValue == "open" or IdValue == "close" or IdValue == "turnOn" or IdValue == "turnOff" then fibaro:call(Id, IdValue); else fibaro:call(Id, "setValue", IdValue); -- Commande Module end if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur, "value")) == 0 ) then fibaro:call(Detecteur, "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 Décale bien tes lignes comme j'ai fais sinon tu vas oublier un end j'ai pas tester mais je crois que c'est ok
chrispec Posté(e) le 11 mars 2015 Auteur Signaler Posté(e) le 11 mars 2015 merci patron Je testerai ce soir
Messages recommandés