Steven Posté(e) le 26 mars 2015 Auteur Signaler Posté(e) le 26 mars 2015 Voilà la version corrigée. Amuse toi bien. P.S: Vu que ma box est entrain de redémarrer, je te confirme que cela fonctionne correctement VirtualDevice-Reboot HC2.vfib
Steven Posté(e) le 26 mars 2015 Auteur Signaler Posté(e) le 26 mars 2015 Tu parles pour la box ou pour mon cerveau ?
mprinfo Posté(e) le 1 décembre 2015 Signaler Posté(e) le 1 décembre 2015 @Steven merci pour ce code très utile pour un vieux comme moi
jojo Posté(e) le 31 mai 2016 Signaler Posté(e) le 31 mai 2016 @Steven, Comme tu sais, j'use et abuse de ce code. Il me semble que depuis la 4.082b (en tout cas en 4.063b, ça fonctionnait) que ce code ne fonctionne plus. Il prend bien en compte le 1° clic (il y a le message), mais pas le second. Il affiche au bout du délais imparti "Annulé".
Steven Posté(e) le 31 mai 2016 Auteur Signaler Posté(e) le 31 mai 2016 Je confirme. Cela ne fonctionne plus. On dirait qu'il n'y a plus qu'une seule instance du "click" qui tourne à la fois. Tant que le 1er click n'a pas fini d'exécuter sont code les autres click ne sont pas déclenche rien. Vu que le 1er click fait un sleep ... c'est mort. 1
jojo Posté(e) le 31 mai 2016 Signaler Posté(e) le 31 mai 2016 vois-tu une solution, ou faut-il abandonner cette fonctionnalité ?
Steven Posté(e) le 31 mai 2016 Auteur Signaler Posté(e) le 31 mai 2016 A part une solution à 2 boutons .. .ce qui serait pas pratique, je vois pas. Sinon il y a le VD de Krikroff avec le code pin mais on est plus vraiment dans le même usage.
jojo Posté(e) le 31 mai 2016 Signaler Posté(e) le 31 mai 2016 je crois en effet que le 2 boutons est mieux, car l'objectif du double click était d'éviter les fautes de frappe. Je l'utilise pour un restart de ma HC2, de mon modem, de mon Syno, ... Le code pin, c'est vraiment trop.
Steven Posté(e) le 2 juin 2016 Auteur Signaler Posté(e) le 2 juin 2016 Voilà mon ami, c'est pas magnifique mais cela fonctionne : Bouton 1 : -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) local result = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == "" fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return result end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local message = "Ré-appuyer pour confirmer" -- le message de confirmation local label_id = "Label1" -- l'ID du label qui recevra le message local duree = 3 -- la durée max entre 2 clique (en seconde) if (not confirm(message, label_id, duree)) then fibaro:log("Annulé") -- ton code d'annulation si besoin end Bouton 2 : -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "") return true else return false end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local message = "Ré-appuyer pour confirmer" -- le message de confirmation local label_id = "Label1" -- l'ID du label qui recevra le message local duree = 3 -- la durée max entre 2 clique (en seconde) if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- ton code ici en cas de confirmation end 3
jojo Posté(e) le 5 juin 2016 Signaler Posté(e) le 5 juin 2016 Merci Steven et sorry d'avoir attendu si longtemps pour le mettre en application et répondre P.S. : as-tu vu ceci ? Merci.
pepite Posté(e) le 1 juillet 2016 Signaler Posté(e) le 1 juillet 2016 je n'avais pas vu, je l'utilisais aussi ;-) merci Steven
971jmd Posté(e) le 5 juillet 2016 Signaler Posté(e) le 5 juillet 2016 salut @Steven pense-tu qu'il serai possible d'un triple clique, une sorte de sceneactivation virtuel 1 clique action 1 (ouvre le volet chambre) 2 clique action 2 (ouvre le volet salon) 3 clique action 3 (ouvre tout les volet).... 1
Steven Posté(e) le 5 juillet 2016 Auteur Signaler Posté(e) le 5 juillet 2016 Non, cela n'est plus possible de puis quelque version. Sorry 1
Steven Posté(e) le 5 juillet 2016 Auteur Signaler Posté(e) le 5 juillet 2016 Il y a une solution qui fonctionne à 95%. Il faut créer un scène avec le code suivant : params = { duree_max_entre_click = 1000, -- en millisecondes clicks = { {name = 'Click 1', action = function(num_click) fibaro:debug("Click " .. num_click) end}, {name = 'Click 2', action = function(num_click) fibaro:debug("Click " .. num_click) end}, {name = 'Click 3', action = function(num_click) fibaro:debug("Click " .. num_click) end} }, started = function() fibaro:debug("Processus started") end, ended = function() fibaro:debug("Too late ") end } local num_click = fibaro:countScenes(); if (params.clicks[num_click]) then if (num_click == 1) then params.started() end params.clicks[num_click].action(num_click) fibaro:sleep(params.duree_max_entre_click) while (fibaro:countScenes() > num_click and num_click == 1) do fibaro:sleep(params.duree_max_entre_click) end if (fibaro:countScenes() == 1) then params.ended() end end Modifié les functions relatives au click 1, click 2, ... Puis derrière le bouton d'un VD, mettre le code suivant fibaro:startScene(<ID de la scène>) Pourquoi 95% et non pas 100%. Pour obtenir le 100% il faut utiliser une variable globale, hors, j'aime pas cela donc j'ai joué sur le nombre d'instance de la scène en cours et dans ce cas, il se peux que la fin du 2ème click se croise avec le début du 3ème click ... mais c'est rare.
971jmd Posté(e) le 5 juillet 2016 Signaler Posté(e) le 5 juillet 2016 Le temps de donner un biberon. Et je te test le code merci encore Envoyé de mon iPhone en utilisant Tapatalk
971jmd Posté(e) le 5 juillet 2016 Signaler Posté(e) le 5 juillet 2016 salut Steven tu pense qu'il est possible de stoper un fibaro:sleep en cours exemple 1 clic alors dans 3s passe la variable à A, si 2eme clic avant les 3s, alors passe le variable à B etc
Steven Posté(e) le 7 juillet 2016 Auteur Signaler Posté(e) le 7 juillet 2016 Non, il est impossible de stoper un sleep :-( 2
Krikroff Posté(e) le 7 juillet 2016 Signaler Posté(e) le 7 juillet 2016 Salut @Steven, je n'ai pas essayé mais un os.exit() ou os.exit(0) pourrait faire le job, l' idée est de tuer le bac à sable qui héberge la scène. 2
Steven Posté(e) le 8 juillet 2016 Auteur Signaler Posté(e) le 8 juillet 2016 T'es un violent Le soucis c'est que cela ne va pas stopper le sleep mais tuer la scène ce qui n'est pas ce que souhaite 971jmd. 1
Yannick Posté(e) le 5 août 2016 Signaler Posté(e) le 5 août 2016 Voilà mon ami, c'est pas magnifique mais cela fonctionne : Bouton 1 : -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg) fibaro:sleep(secondes*1000) local result = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == "" fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","") return result end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local message = "Ré-appuyer pour confirmer" -- le message de confirmation local label_id = "Label1" -- l'ID du label qui recevra le message local duree = 3 -- la durée max entre 2 clique (en seconde) if (not confirm(message, label_id, duree)) then fibaro:log("Annulé") -- ton code d'annulation si besoin end Bouton 2 : -- ---------------------------- -- Ne pas toucher -- -- ---------------------------- function confirm(msg, labelId, secondes) local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") if (current == msg) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "") return true else return false end end -- ---------------------------- -- A vous de jouer --- -- ---------------------------- local message = "Ré-appuyer pour confirmer" -- le message de confirmation local label_id = "Label1" -- l'ID du label qui recevra le message local duree = 3 -- la durée max entre 2 clique (en seconde) if ( confirm(message, label_id, duree) ) then fibaro:log("Confirmé") -- ton code ici en cas de confirmation end Salut @steven, je viens de modifier mon VD en apposant les 2 boutons et en collant ton code dedans. Mais je n'ai aucun effet. Désolé mais je suis un peu nul
jojo Posté(e) le 5 août 2016 Signaler Posté(e) le 5 août 2016 cela fonctionne très bien, mais il faut mettre les instructions lua àpartir de la ligne 24 (bouton 1) et 25 (bouton 2)
Messages recommandés