Aller au contenu

Scène Minimote


uncleseb

Messages recommandés

Bonjour j'essaye de créer une scène pour les boutons de ma minimote , 
ca ne fonctionne uniquement si après avoir appuyé sur le bouton je clique sur démarrer dans la config de la scène.
Sinon les boutons seuls n'ont aucun effet.
Qu'ai je oublié ?
id 62 est ma minimote
id 56 ma tv
id 27 une lampe
 
merci de vos aides
 
--[[ 
%%
 properties 
62 sceneActivation 
%% globals 
--]]
 
local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
if ( tonumber(ButtonPressed) == 1) then
fibaro:call(56, "turnOn")
fibaro:debug("MiniMote button 1 pressed")
  
elseif ( tonumber(ButtonPressed) == 3) then
fibaro:call(56, "turnOff")
fibaro:debug("MiniMote button 2 pressed")
 
elseif ( tonumber(ButtonPressed) == 5) then
fibaro:call(27, "turnOn") 
fibaro:debug("MiniMote button 3 pressed")
  
elseif ( tonumber(ButtonPressed) == 6) then
fibaro:call(27, "turnOff")
fibaro:debug("MiniMote button 3 long pressed") 
  
else  
fibaro:debug("No response")
end

 

Lien vers le commentaire
Partager sur d’autres sites

Utilise les tag pour le codes c'est plus lisible :

--[[ 
%%
 properties 
62 sceneActivation 
%% globals 
--]]
 
local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
if ( tonumber(ButtonPressed) == 1) then
fibaro:call(56, "turnOn")
fibaro:debug("MiniMote button 1 pressed")
  
elseif ( tonumber(ButtonPressed) == 3) then
fibaro:call(56, "turnOff")
fibaro:debug("MiniMote button 2 pressed")
 
elseif ( tonumber(ButtonPressed) == 5) then
fibaro:call(27, "turnOn") 
fibaro:debug("MiniMote button 3 pressed")
  
elseif ( tonumber(ButtonPressed) == 6) then
fibaro:call(27, "turnOff")
fibaro:debug("MiniMote button 3 long pressed") 
  
else  
fibaro:debug("No response")
end

Je regarde plus en détail...

Lien vers le commentaire
Partager sur d’autres sites

C'est pas simplement le retour à  ligne après %% en ligne 3 sur le code du message précédent ?

 

Voici la correction :

--[[ 
%% properties 
62 sceneActivation 
%% globals 
--]]
 
local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
if ( tonumber(ButtonPressed) == 1) then
fibaro:call(56, "turnOn")
fibaro:debug("MiniMote button 1 pressed")
  
elseif ( tonumber(ButtonPressed) == 3) then
fibaro:call(56, "turnOff")
fibaro:debug("MiniMote button 2 pressed")
 
elseif ( tonumber(ButtonPressed) == 5) then
fibaro:call(27, "turnOn") 
fibaro:debug("MiniMote button 3 pressed")
  
elseif ( tonumber(ButtonPressed) == 6) then
fibaro:call(27, "turnOff")
fibaro:debug("MiniMote button 3 long pressed") 
  
else  
fibaro:debug("No response")
end
Lien vers le commentaire
Partager sur d’autres sites

Tiens en passant un petit truc pour te faire économiser des boutons :

 

Les boutons sont organisés comme suit (en regardant la télécommande face à  soit vers le haut)

 

Appui court 1 3   - Appui long   2 4

Appui court 5 7   - Appui long   6 8

 

Si tu utilises une variable en plus, tu peux savoir si ton module est allumé ou éteint.

 

En appuyant sur le bouton 1 de ta télécommande tu allumes et éteins alternativement ton module 56

En appuyant sur le bouton 2 de ta télécommande tu allumes et éteins alternativement ton module 27

 

Voici le code :

--[[
%% properties
62 sceneActivation
%% globals
--]]

local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
 -- module 56
if ( tonumber(ButtonPressed) == 1) then
 local MaVariable=fibaro:getValue(56,'value')
    if (MaVariable=='0')then
    figaro:call(56, "turnOn") 
    else
    figaro:call(56, "turnOff") 
    end

  --appui long 1 rien encore
elseif ( tonumber(ButtonPressed) == 2) then
---
 --- 
  
  --Module 27
elseif ( tonumber(ButtonPressed) == 3) then
 local MaVariable=fibaro:getValue(27,'value')
    if (MaVariable=='0')then
    figaro:call(27, "turnOn") 
    else
    figaro:call(27, "turnOff") 
    end

 -- appui long 2 rien encore
elseif ( tonumber(ButtonPressed) == 4) then
---
  ---

--Autre exemple pour le module 9  
elseif ( tonumber(ButtonPressed) == 5) then
  local MaVariable=fibaro:getValue(9,'value')
    if (MaVariable=='0')then
    fibaro:call(9, "turnOn") 
    else
    fibaro:call(9, "turnOff") 
    end

 -- appui long 3 rien encore
elseif ( tonumber(ButtonPressed) == 6) then
---
  ---

 --Autre exemple pour le module 10
elseif ( tonumber(ButtonPressed) == 7) then
 local MaVariable=fibaro:getValue(10,'value')
    if (MaVariable=='0')then
    fibaro:call(10, "turnOn") 
    else
    fibaro:call(10, "turnOff") 
    end

--Autre exemple pour le module 36
elseif ( tonumber(ButtonPressed) == 8) then
   
 local MaVariable=fibaro:getValue(36,'value')
    if (MaVariable=='0')then
    fibaro:call(36, "turnOn") 
    else
    fibaro:call(36, "turnOff") 
    end
 
end

C'est pas beau ça ?

Lien vers le commentaire
Partager sur d’autres sites

le copier/coller...pas toujours bon

trop fort !!! 

Ca fonctionne 

un grand merci  !!!

 

Autre question ,

si je dois éteindre plusieurs id , le mieux est de faire une ligne pour chacun ou de les mettre sur la même ligne séparés par une virgule ?

Lien vers le commentaire
Partager sur d’autres sites

Comme tu veux.

Je trouve plus lisible de faire des lignes pour chaque module (Comme ça je peux commenter pour savoir à  quoi correspond le module 9 ou 75).

 

Si tu envisages savoir des millions de lignes de code tu peux optimiser avec les virgules... ;)

Lien vers le commentaire
Partager sur d’autres sites

Tiens en passant un petit truc pour te faire économiser des boutons :

 

Les boutons sont organisés comme suit (en regardant la télécommande face à  soit vers le haut)

 

Appui court 1 3   - Appui long   2 4

Appui court 5 7   - Appui long   6 8

 

Si tu utilises une variable en plus, tu peux savoir si ton module est allumé ou éteint.

 

En appuyant sur le bouton 1 de ta télécommande tu allumes et éteins alternativement ton module 56

En appuyant sur le bouton 2 de ta télécommande tu allumes et éteins alternativement ton module 27

 

Voici le code :

--[[
%% properties
62 sceneActivation
%% globals
--]]

local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
 -- module 56
if ( tonumber(ButtonPressed) == 1) then
 local MaVariable=fibaro:getValue(56,'value')
    if (MaVariable=='0')then
    figaro:call(56, "turnOn") 
    else
    figaro:call(56, "turnOff") 
    end

  --appui long 1 rien encore
elseif ( tonumber(ButtonPressed) == 2) then
---
 --- 
  
  --Module 27
elseif ( tonumber(ButtonPressed) == 3) then
 local MaVariable=fibaro:getValue(27,'value')
    if (MaVariable=='0')then
    figaro:call(27, "turnOn") 
    else
    figaro:call(27, "turnOff") 
    end

 -- appui long 2 rien encore
elseif ( tonumber(ButtonPressed) == 4) then
---
  ---

--Autre exemple pour le module 9  
elseif ( tonumber(ButtonPressed) == 5) then
  local MaVariable=fibaro:getValue(9,'value')
    if (MaVariable=='0')then
    fibaro:call(9, "turnOn") 
    else
    fibaro:call(9, "turnOff") 
    end

 -- appui long 3 rien encore
elseif ( tonumber(ButtonPressed) == 6) then
---
  ---

 --Autre exemple pour le module 10
elseif ( tonumber(ButtonPressed) == 7) then
 local MaVariable=fibaro:getValue(10,'value')
    if (MaVariable=='0')then
    fibaro:call(10, "turnOn") 
    else
    fibaro:call(10, "turnOff") 
    end

--Autre exemple pour le module 36
elseif ( tonumber(ButtonPressed) == 8) then
   
 local MaVariable=fibaro:getValue(36,'value')
    if (MaVariable=='0')then
    fibaro:call(36, "turnOn") 
    else
    fibaro:call(36, "turnOff") 
    end
 
end

C'est pas beau ça ?

La...tu me scotches 

Je débute c'est brutal pour moi  :blink:   :lol:

Mais si efficace

Je vais regarder ça de plus près

Merci !!!!

;)  ;)

Lien vers le commentaire
Partager sur d’autres sites

 

Ben si tu modifies comme ça :

--[[
%% properties
62 sceneActivation
%% globals
--]]
 
local ButtonPressed = fibaro:getValue(62, "sceneActivation")
 
 -- module 56
if ( tonumber(ButtonPressed) == 1) then
 local MaVariable=fibaro:getValue(56,'value')
    if (MaVariable=='0')then
    figaro:call(56, "turnOn") -- ta TV 
    else
    figaro:call(56, "turnOff") 
    figaro:call(ID du module 1 que tu veux éteindre, "turnOff") 
    figaro:call(ID du module 2 que tu veux éteindre, "turnOff") 
    figaro:call(ID du module 3 que tu veux éteindre, "turnOff") 
    -- etc
    end


--reste du code inchangé
Lien vers le commentaire
Partager sur d’autres sites

En revanche je te conseillerais de grouper tous tes modules à  éteindre dans une scène/ou un module virtuel que tu pourras utiliser dans plusieurs scénarios.

 

Exemple : Code du module virtuel "Tout OFF"

-- 2nd
        fibaro:call(41, "turnOff"); --lumière ...
	fibaro:call(42, "turnOff"); -- Lumière ...
-- 1er	
        fibaro:call(6, "turnOff"); --lumière orange
	fibaro:call(9, "turnOff"); --lumière verte
	fibaro:call(10, "turnOff"); -- lumière zinc
	fibaro:call(36, "turnOff"); --lumière abajour blanc
--RDC
	fibaro:call(31, "turnOff"); --lumière garage
	fibaro:call(108, "turnOff"); --lumière chambre du bas

	fibaro:call(5, "turnOff"); -- Fer à  repasser

-- modules chacon sur la zibase
	fibaro:call(67, "pressButton", "2"); -- lumière couloir du haut
	fibaro:sleep(5000) -- on attend 5 secondes que la zibase se remette 
	fibaro:call(68, "pressButton", "2"); -- lumière plafond

Le soir avant de me coucher je lance une scène "Dodo" qui éteint la TV, baisse le chauffage, et "appuie sur le bouton 1 de mon module virtuel "tout off".

 

Pour simuler l'appui sur le bouton 1 de mon MV "Tout off" dont l'ID est 66 j'utilise cette ligne dans ma scène "Dodo" :

-- lance module "TOUT OFF"
fibaro:call(66, "pressButton", "1");

Voici la scène Dodo complète :

--check des portes
fibaro:call(85, "pressButton", "1");

--Passer le chauffage à  18.5°C
fibaro:call(100, "setTargetLevel", 18.5)

--Eteindre lumière blanche
fibaro:call(12, "turnOff");

-- lance module "TOUT OFF"
fibaro:call(66, "pressButton", "1");

--éteind la TV
fibaro:call(89, "pressButton", "3");
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

J'ai lu ici la création d'une scene qui regroupe toutes les lumières pour ensuite pouvoir les éteindre toutes d'un seul coup.

Il n'y a donc pas de commande pour éteindre tous les devices du type lumières ?

Comment font ils dans l'interface Fibaro sur Ipad ou Android car cette fonction existe ?

Lien vers le commentaire
Partager sur d’autres sites

En fait lorsque mon alarme s'active j'allume toutes les lumières et il est long d'ajouter àune scene tous les devices de type "lumières" alors que dans l'interface ipad ou android, on peut appuyer sur un seul bouton pour éteindre toutes les lumières par exemple.

Je me demandais donc si il existait ce type de commande en lua.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...