Rem's Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Bonjour à tous, je voudrai sur le code de la minimote faire que : 1 appui = lampe On à nouveau 1 appui = lampe Off. J'avais vu passer ce bout de code sur le forum mais impossible de remettre la main dessus ..... D'avance merci pour votre aide
mprinfo Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Il faut juste que tu récupére la valeur de ta lampe Si allumé alors éteindre Si éteint alors allumé Envoyé de mon SM-G900F en utilisant Tapatalk
Berale64 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Voilà! elseif (val == 30) then --fibaro:debug("Simple clic bouton cercle"); if (fibaro:getValue(ID,"value") == "1") then fibaro:call(ID,"turnOff"); else fibaro:call(ID,"turnOn"); end
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 Merci beaucoup, je vais tenter de le mettre en place ...
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 Super merci encore. C'est possible en actionnant plusieurs modules ...?
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 en allumant 2 lampes en même temps
trainkill666 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Pour 1 module (remplacer ID par l'id du module) : elseif (val == 30) then -- fibaro:debug("Simple clic bouton cercle") -- inversion de l'état du module local inverse = {"turnOn", "turnOff"} fibaro:call(ID, inverse[tonumber(fibaro:getValue(ID, "value")) + 1]) end Pour plusieurs modules (remplir listeclairage par les id concernés) : -- fonction d'inversion de l'état du module local eclairage = function(liste) local inverse = {"turnOn", "turnOff"} for index,valeur in pairs(liste) do fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1]) end end ------------------------------- elseif (val == 30) then -- fibaro:debug("Simple clic bouton cercle"); -- liste des modules listeclairage = {79,81} -- lancement de la fonction eclairage(listeclairage) end ------------------------------- 1
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 Ouf..... ca devient une usine àgaz (en tout cas pour moi). Je vais comme meme tenter d'utiliser ce bout de code, merci àtoi tranquill666
mprinfo Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Non il adore jouer avec des tables c'est plus générique Envoyé de mon SM-G900F en utilisant Tapatalk 1
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 J'ai fait ca, mais rien ne se passe dans le debug --[[ %% properties 287 sceneActivation %% globals --]] -- local ButtonPressed = fibaro:getValue(287, "sceneActivation") local eclairage = function(liste) local inverse = {"turnOn", "turnOff"} for index,valeur in pairs(liste) do fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1]) end end ------------------------------- local val = tonumber(fibaro:getValue(287, "sceneActivation")) if (val == 30) then -- fibaro:debug("Simple clic bouton cercle"); -- liste des modules listeclairage = {13,309} -- lancement de la fonction eclairage(listeclairage) end ------------------------------- Une idée .....?
Berale64 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 La ligne 21 est en commentaire
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 et donc ?? Si je la degrise, le debug me sort une erreur
trainkill666 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Il faut retirer les "--" devant fibaro:debug("Simple clic bouton cercle"); Comme Berale24 l'a dit précédemment, si il y a "--" devant un texte, celui correspond à un commentaire, il ne sert pas pour la programmation. Ce que tu as fait à la ligne 8. Si la condition du if (val == 30) est validée, le message dans la parenthèse du debug va s'afficher, dans ton cas "Simple clic bouton cercle" . Ici il ne s'agira pas d'un message d'erreur, mais plutôt d'information.
vilajea1 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Et la 8 aussi en commentaire, c'est juste ?
trainkill666 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 @ vilajeal Oui, par contre elle ne sert plus a rien. Elle est remplacée par la 19. Rem's s'en sert peut-être de pense bête, ou il l'a oubliée.
Rem's Posté(e) le 17 janvier 2016 Auteur Signaler Posté(e) le 17 janvier 2016 --[[ %% properties 287 sceneActivation %% globals --]] -- local ButtonPressed = fibaro:getValue(287, "sceneActivation") local eclairage = function(liste) local inverse = {"turnOn", "turnOff"} for index,valeur in pairs(liste) do fibaro:call(valeur, inverse[tonumber(fibaro:getValue(valeur, "value")) + 1]) end end ------------------------------- local val = tonumber(fibaro:getValue(287, "sceneActivation")) if (val == 30) then fibaro:debug("Simple clic bouton cercle"); -- liste des modules listeclairage = {13,309} -- lancement de la fonction eclairage(listeclairage) end ------------------------------- de pense bête, mais je n'arrive toujours pas àdéclencher quelques chose
trainkill666 Posté(e) le 17 janvier 2016 Signaler Posté(e) le 17 janvier 2016 Places des debug tout le long de ton programme pour savoir jusqu'où il tourne. N'y a t'il pas eu un changement de ligne de commande pour les lignes avec sceneactivation avec les nouvelles version de firmware ? Mprinfo ou JoJo doivent être au courant. Tu utilises laquelle ? es-tu sà»r pour la valeur vall == 30 test le programme en plaçant "--" devant les lignes 19, 20 et 29. Puis clic sur "démarrer" en dessous de la ligne de code. Si ça fonctionne le problème vient de ces lignes. Sinon, j'ai peut-être zappé une ligne en copiant collant le code, car je l'utilise depuis longtemps, et il fonctionne nickel.
Berale64 Posté(e) le 18 janvier 2016 Signaler Posté(e) le 18 janvier 2016 J'ai testé en mettant après la ligne 19: val = 30 ça marche très bien. Donc voir au niveau de la télécommande.
Rem's Posté(e) le 18 janvier 2016 Auteur Signaler Posté(e) le 18 janvier 2016 ca y est j'ai trouvé ...!! if tonumber(fibaro:getValue(287, "sceneActivation")) then fibaro:debug("Simple clic bouton cercle"); Apparemment, pour la minimote, val==30, c'est bof Donc j'ai fait un mix des 2. En tout cas merci à vous, car j'ai utilisé les conseils de vous 3 pour analyser et trouver mon soucis
trainkill666 Posté(e) le 18 janvier 2016 Signaler Posté(e) le 18 janvier 2016 @ Rem's Désolé de te casser le moral, mais tu n'as pas résolu ton problème, tu l'as juste retardé. La ligne : if tonumber(fibaro:getValue(287, "sceneActivation")) then ne sert à rien car tu ne tests pas la valeur de retour précise de la sceneActivation du module 287, tu tests seulement si il y a en une. Explication : Ta scène est lancé grâce à ce trigger : --[[ %% properties 287 sceneActivation %% globals --]] Ta condition sera donc toujours VRAI, car la scène s'est lancé de par l'existence d'une valeur du module 287. Pour résumer ton test : Si VRAI alors ... , ce test est donc inutile. Je ne sais pas si j'explique bien, mais pour résumer, quelque soit le bouton appuyé sur ta télécommande, la condition sera vrai et le code sera exécuté. Il faut donc trouver la valeur de chaque bouton, d'où ton "val == 30 " qui ne doit pas être le bon. Voici un exemple de scène pour trouver la valeur de retour de chaque bouton à placer à la place de 30 : --[[ %% properties 287 sceneActivation %% globals --]] fibaro:debug(tonumber(fibaro:getValue(287, "sceneActivation"))) La valeur de ta touche apparaîtra dans le debug. Ton programme sera fonctionnel. Par contre j'ai vu sur le forum il y a quelque temps une nouvelle façon de lire le résultat des "scenactivation" dans les dernières mise à jour. A vérifier. 1
mprinfo Posté(e) le 18 janvier 2016 Signaler Posté(e) le 18 janvier 2016 Super explications Oui il y a une nouvelle commande ou l'on mets le numéro du bouton Envoyé de mon SM-G900F en utilisant Tapatalk 1
trainkill666 Posté(e) le 18 janvier 2016 Signaler Posté(e) le 18 janvier 2016 Pascal, t'as changé ton pseudo ?
mprinfo Posté(e) le 18 janvier 2016 Signaler Posté(e) le 18 janvier 2016 Oui. Je n'arrive pas a remettre la main sur le topic de la nouvelle commande pour les télécommande Envoyé de mon SM-G900F en utilisant Tapatalk
Messages recommandés