Aller au contenu

Cumuler En Lua La Condition If Then En 1 Fonction Pour Diffusion Message Vocal Sur Sonos


Messages recommandés

Posté(e)

Bonjour

 

Je débute et ais des problème en LUA avec les signes

 

La fonction ci-dessous fonctionne parfaitement  si je ne prends que la première valeur mais je n'arrive pas a cumuler les conditions if sans message d'erreur avec les signes en trop ou manquants

 

Merci par avance pour votre aide

 --[[
%% properties
54 value
83 value
82 value
%% globals
--]]

    if (
  ( tonumber(fibaro:getValue(54, "value")) > 0 ) then
message2 = ("Bonjour Lumiere cuisine est allume . . .|")

and 
   
 ( tonumber(fibaro:getValue(83, "value")) > 0 ) then
message = ("Bonjour Lumiere du mur est allume . . .|")
    
and 
   
 ( tonumber(fibaro:getValue(82, "value")) > 0 ) then
message3 = (" Lumiere chambre est allume . . .|")
  
    )
    
    message4 = message.."et "..message2.."et "..message3.."
fibaro:setGlobal("SonosTTSBUREAU", "lng=fr|dr=auto|vol=65|txt="..message4..". . .|");
     
fibaro:sleep(60*1000)
end
end
end


Posté(e)

Merci

 

Ca m'a aider a mieux comprendre

 

ci-dessous si cela peux servir a certain mon code final (chaque "value" étant des contact de porte

--[[
%% properties
28 value
31 value
50 value
47 value
21 value
25 value
%% globals
--]]


   if  ( tonumber(fibaro:getValue(25, "value")) > 0 ) then 
fibaro:setGlobal("EtatFenetreChambr",'Fenetre chambre .....!');  -- 25 l'ID fenetre chambre
message1 = fibaro:getGlobalValue("EtatFenetreChambr") 
else  
message1 = ("")   
end  



   if  ( tonumber(fibaro:getValue(21, "value")) > 0 ) then 
fibaro:setGlobal("EtatFenetreBureau",'Fenetre bureau .....!');  -- 21 l'ID fenetre bureau
message2 = fibaro:getGlobalValue("EtatFenetreBureau") 
else  
message2 = ("")   
end  


   if  ( tonumber(fibaro:getValue(28, "value")) > 0 ) 
or 
   ( tonumber(fibaro:getValue(31, "value")) > 0 ) then
fibaro:setGlobal("EtatFenetreCuisin",'Fenetre cuisine .....!');  -- 50 l'ID fenetre salon gauche
message4 = fibaro:getGlobalValue("EtatFenetreCuisin") 
else  
message4 = ("")   
end



   if  ( tonumber(fibaro:getValue(50, "value")) > 0 )  
or 
   ( tonumber(fibaro:getValue(47, "value")) > 0 ) then
fibaro:setGlobal("EtatFenetreSalon",'Fenetre salon .....!');  -- 50 l'ID fenetre salon gauche
message6 = fibaro:getGlobalValue("EtatFenetreSalon") 
else  
message6 = ("")   
end

fibaro:setGlobal("SonosTTSBUREAU", "lng=fr|dr=auto|vol=65|txt="..message4..""..message6..""..message2..""..message1..". . .|");

  fibaro:sleep(5*1000)
  • 2 semaines après...
Posté(e)

En propre et optimisé cela donne

--[[
%% properties
28 value
31 value
50 value
47 value
21 value
25 value
%% globals
--]]

local message = ""

-- 25 l'ID fenetre chambre
if  ( tonumber(fibaro:getValue(25, "value")) > 0 ) then 
   message = message .. "Fenetre chambre .....!"  
end  
 
-- 21 l'ID fenetre bureau
if  ( tonumber(fibaro:getValue(21, "value")) > 0 ) then 
   message = message .. "Fenetre bureau .....!"  
end  
 
-- 28 l'ID .......
if  ( tonumber(fibaro:getValue(28, "value")) > 0 ) or ( tonumber(fibaro:getValue(31, "value")) > 0 ) then
   message = message .. "Fenetre cuisine .....!"  
end
 
-- 50 l'ID fenetre salon gauche
if  ( tonumber(fibaro:getValue(50, "value")) > 0 )  or  ( tonumber(fibaro:getValue(47, "value")) > 0 ) then
   message = message .. "Fenetre salon .....!"  
end

fibaro:setGlobal("SonosTTSBUREAU", "lng=fr|dr=auto|vol=65|txt="..message..". . .|")
×
×
  • Créer...