Aller au contenu

Recommended Posts

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  :P

VirtualDevice-Reboot HC2.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

Il y a aussi un bouton reset all ? :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu parles pour la box ou pour mon cerveau ?  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven merci pour ce code très utile pour un vieux comme moi :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

@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é".

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

:4:

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

vois-tu une solution, ou faut-il abandonner cette fonctionnalité ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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
  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Steven et sorry d'avoir attendu si longtemps pour le mettre en application et répondre

P.S. : as-tu vu ceci ? Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

je n'avais pas vu, je l'utilisais aussi ;-)

 

merci Steven

Partager ce message


Lien à poster
Partager sur d’autres sites

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)....

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, cela n'est plus possible de puis quelque version. Sorry

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Le temps de donner un biberon.

Et je te test le code

merci encore

Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, il est impossible de stoper un sleep :-(

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

T'es un violent  :P

 

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.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

cela fonctionne très bien, mais il faut mettre les instructions lua àpartir de la ligne 24 (bouton 1) et 25 (bouton 2)

Partager ce message


Lien à poster
Partager sur d’autres sites

×