Aller au contenu
chrispec

Intégration Multiple Lua

Recommended Posts


--[[

%% properties

%% globals

--]]

local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la scene

fibaro:debug("Nombre de scènes en cours = " ..num)

if (num == 1) then

local J_N = fibaro:getGlobalValue( "Jour_Nuit" );

fibaro:debug("Jour_Nuit = " ..J_N)

-- Fermeture des volets des chambres et allumage lumieres rdc

local Id = {}

local IdValue = {}

if J_N == "Nuit" then

local Id = {16, 18, 20, 28, 34} -- id volets et lumieres

local IdValue = {0, 0, 0, "turnOn", "turnOn"} -- Valeur 0=Fermer - 99 = Ouvert

local VoletPorte = {22, 24, 26} -- Volet si porte fermée

local Detecteur = {107, 115, 111} -- detecteur d'ouverture

fibaro:debug("Nuit")

end

for i = 1,#Id do

local TestName = fibaro:getName(Id)

local TestValue = fibaro:getValue(Id, "value")

fibaro:debug(TestName)

if IdValue == "open" or IdValue == "close" or IdValue == "turnOn" or IdValue == "turnOff" then

fibaro:call(Id, IdValue);

else

fibaro:call(Id, "setValue", IdValue); -- Commande Module

end

-- porte avec detecteur

if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur, "value")) == 0 ) then

fibaro:call(VoletPorte, "close");

fibaro:debug(fibaro:getName(Detecteur).." - Status = "..fibaro:getValue(Detecteur, "value"))

end

end

else

fibaro:debug("Nombre de scènes en cours " ..num)

end

Partager ce message


Lien à poster
Partager sur d’autres sites

dodo 0h00 a 06h00 comme dab lol

tu peux faire des essais tu remplaces la ligne 20

if J_N == "Nuit" then

par

if J_N == "Jour" then

comme cela tu peux tester le jour lol, il faudrait améliorer le code mais en ce moment pas trop le temps

 

J'ai testé chez moi ça fonctionne

 

tiens moi au courant

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon .... ce soir pas de fermeture de volets ??? :blink:

 

Je reprends depuis le début.

 

J'ai une variable prédéfinie:

JN00

 

J'ai deux scènes:

JN04

 

Pour la scène "jour_nuit" comme code:

 
--[[
%% autostart

%% properties

%% globals
Jour_Nuit
--]]

----------------------------------------------------------------------
-- Envoi d'un Push pour avertir que le box à  démarrer ou redémarrer --
----------------------------------------------------------------------
--local IdTel = 181
--local Message = string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))
--fibaro:debug(Message)
--fibaro:call(IdTel, "sendPush", Message)
 
---------------------------------------------------
-- Mise a jour d'une variable global             --
---------------------------------------------------
function UpdateVG(NomVG, Valeur)
        fibaro:debug("VariableGlobale = "..NomVG.." - Valeur = "..Valeur)
        fibaro:setGlobal(NomVG, Valeur);
end
 
-------------------------------------------------
-- Voir si une variable existe ou non          --
--               By STEVEN                     --
-------------------------------------------------
function VericationVG(nom)
	if (fibaro:getGlobalValue(nom) == nil) then
	   fibaro:debug("il faut cree la variable "..nom)
           fibaro:abort()
	else
	   fibaro:debug("La variable existe le programme peut s'exécuter")
	end
end
 
----------------------------------------------------------------------
-- Mise a jour de la variable VG Jour_Nuit au Démarrage de la Box   --
-- Ou lors de la sauvegarde de la scène                             --
----------------------------------------------------------------------
local OsHeure = os.date("%H:%M", os.time())
local NOMVG = "Jour_Nuit"
VericationVG(NOMVG) -- verification de la VG existe
local Lever = fibaro:getValue(1, "sunriseHour")
local Coucher = fibaro:getValue(1, "sunsetHour")
local Valeur = "Nuit"
 
-- test si on est le jour ou la nuit
if (OsHeure) >= Lever and (OsHeure) < Coucher then
  Valeur = "Jour"
end
 
UpdateVG(NOMVG, Valeur) -- mise a jour de la VG Jour_Nuit
 
----------------------------------------------------------------------
-- Controle si 1 Scène et déjà  en cours                             --
----------------------------------------------------------------------
local NbreScene = fibaro:countScenes()
fibaro:debug("Nombre de scéne : "..NbreScene)
if (NbreScene ~= 1) then; fibaro:abort(); end
 
----------------------------------------------------------------------
-- Test toute les minutes pour savoir si c'est jour ou nuit         --                      --
----------------------------------------------------------------------
while true do
  OsHeure = os.date("%H:%M", os.time())
  Lever = fibaro:getValue(1, "sunriseHour")
  Coucher = fibaro:getValue(1, "sunsetHour")
 
  -- Mise a jour de la VG Jour_Nuit --
  if ( OsHeure == Lever ) or ( OsHeure == Coucher ) then
     NomMVG = "Jour_Nuit"
     if ( OsHeure == Lever ) then
         Valeur = "Jour"
     else
         Valeur = "Nuit"
     end
     UpdateVG(NomVG, Valeur)
  end
  fibaro:debug(string.format("Lever Soleil : %s - Coucher Soleil : %s", Lever, Coucher))
  fibaro:sleep(60*1000);
end

Avec son DEBUG:

JN02

 

Pour la scène de fermeture des volets:

--[[
%% autostart
%% properties

%% globals
Jour_Nuit
--]]

local num = fibaro:countScenes () -- nombres d'instances en cours d'excution de la scene
fibaro:debug("Nombre de scènes en cours = " ..num)
 
if (num == 1) then
   local J_N = fibaro:getGlobalValue( "Jour_Nuit" );
   fibaro:debug("Jour_Nuit = " ..J_N)
 
 
   -- Fermeture des volets des chambres et allumage lumieres rdc
   local Id = {}
   local IdValue = {}
 
   if J_N == "Nuit" then
      local Id = {16, 18, 20, 28, 34} -- id volets et lumieres
      local IdValue = {0, 0, 0, "turnOn", "turnOn"} -- Valeur 0=Fermer - 99 = Ouvert
      local VoletPorte = {22, 24, 26} -- Volet si porte fermée
      local Detecteur = {107, 115, 111} -- detecteur d'ouverture
      fibaro:debug("Nuit")
   end
 
    for i = 1,#Id do
       local TestName = fibaro:getName(Id[i])
       local TestValue = fibaro:getValue(Id[i], "value")
       fibaro:debug(TestName)
       if IdValue[i] == "open" or IdValue[i] == "close" or IdValue[i] == "turnOn" or IdValue[i] == "turnOff" then
 	  fibaro:call(Id[i], IdValue[i]);
       else
          fibaro:call(Id[i], "setValue", IdValue[i]); -- Commande Module
       end
    -- porte avec detecteur
       if i <= #VoletPorte and (tonumber(fibaro:getValue(Detecteur[i], "value")) == 0 ) then
          fibaro:call(VoletPorte[i], "close");
          fibaro:debug(fibaro:getName(Detecteur[i]).." - Status = "..fibaro:getValue(Detecteur[i], "value"))
       end
    end
else
	fibaro:debug("Nombre de scènes en cours " ..num)
end
 

Son DEBUG:

 

JN01

 
 
Où est l'erreur ? :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Ta scène jour nuit fonctionne

Mais tu aurrais du plutot prendre celle de la page plus simple

Envoyé avec mon SmartPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans la scene que je t ai donné pour les volets tu as ajouté dans l entête le nom de la vg Jour_Nuit ?

Envoyé avec mon SmartPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

Si il la faut dans la scene des volets

Partager ce message


Lien à poster
Partager sur d’autres sites

×