Aller au contenu

Début en LUA...


lexus_69

Messages recommandés

Bonjour à tous,

 

Je commence tout doucement a programmer en LUA et je suis perdu...:15:

Je vous explique:

Je veux allumer une lampe uniquement la nuit quand je passe devant mon détecteur de présence. Tout bête mais je galère. Voici ce que je mets dans ma scène:

 

--[[
%% properties
74 value
%% globals
–-]]

local MaVariable
local Jour_Nuit

MaVariable = fibaro:getValue(74, 'value')
if (MaVariable == '1') then
  if (Jour_Nuit == 'Nuit') then
 fibaro:call(65, 'turnOn')
else
  fibaro:sleep(60000)
  fibaro:call(65, 'turnOff')
end
  end

 

Comme vous l'aurez compris ça ne marche pas. Je suis preneur de vos lumières :)

Lien vers le commentaire
Partager sur d’autres sites

Merci, c'est exactement ce que je voulais faire !

Tout fonctionne correctement :60:

On était bien loin du résultat avec mon bout de code bidon :)

Par contre une question: régulièrement le HC2 me dit qu'il y a trop de scènes dans les notifications. Est ce normal, et est ce un problème ?

En tout cas merci !

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est normal. A chaque fois que tu passes devant le détecteur ça lance une nouvelle instance de la scène.

Ces scènes meurent au bout du temps défini dans le settimeout.

Tu dois augmenter le "max running instances" dans la partie "Général" de la scène.

J'ai mis 8 et n'ai jamais ce message.

Lien vers le commentaire
Partager sur d’autres sites

Revoilà le casse bonbon...<_<

 

J'ai récupérer ce script qui fonctionne très bien (Merci Yannick) mais j'aimerais légèrement le modifier mais je ne sais pas comment m'y prendre...

J'aimerais qu'entre 8h et jusqu'au couché du soleil et si la luminosité est <10 lux ma lumière s'allume. Il faut donc que je modifie cette ligne "if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7)" avec cette commande : fibaro:getValue(1, "sunsetHour") mais comment l'intégrer ?

 

Le script en question:

--[[
%% properties
31 value
33 value
%% globals
--]]

local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(31, "value");
local HeureActuelle = os.date("*t");

if (fibaro:countScenes() > 1) then fibaro:abort() end;

fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min'])
fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")
if ((HeureActuelle['hour']>= 18 or HeureActuelle['hour'] <= 7) 
and
 ( tonumber(fibaro:getValue(31, "value")) > 0 )
and
 ( tonumber(fibaro:getValue(33, "value")) <= 10 )
)
then
	fibaro:call(29, "turnOn");
    fibaro:sleep(60*1000);
  end

if (( tonumber(fibaro:getValue(31, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60)
  then
	delayedCheck0 = true;
    end
if 
 ( delayedCheck0 == true )
    then
    fibaro:call(29, "turnOff")
end
Lien vers le commentaire
Partager sur d’autres sites

Je me suis inspiré d'une scène en mode bloc puis convertie en LUA:

 

--[[
%% properties
74 value
76 value
%% globals
--]]

local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(74, "value");
local HeureActuelle = os.date("*t");

if (fibaro:countScenes() > 1) then fibaro:abort() end;

fibaro:debug("Il est "..HeureActuelle['hour']..":"..HeureActuelle['min'])
fibaro:debug("le capteur est safe depuis : "..((os.time() - deviceLastModification0)/60).." min")
if ((HeureActuelle['hour']>= 8 and string.format("%02d", HeureActuelle.hour) .. ":" .. string.format("%02d", HeureActuelle.min) == fibaro:getValue(1, "sunriseHour")) 
and
 ( tonumber(fibaro:getValue(74, "value")) > 0 )
and
 ( tonumber(fibaro:getValue(76, "value")) < 5 ) -- valeur en Lux
)
then
    fibaro:call(65, "turnOn");
    fibaro:sleep(60*1000);
  end

if (( tonumber(fibaro:getValue(74, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 60)
  then
    delayedCheck0 = true;
    end
if 
 ( delayedCheck0 == true )
    then
    fibaro:call(65, "turnOff")
end

 

Mais ça ne fonctionne toujours pas :(

Une idée du pourquoi ?

Lien vers le commentaire
Partager sur d’autres sites

if ( (HeureActuelle['hour']>= 8)  and (string.format("%02d", HeureActuelle.hour) .. ":" .. string.format("%02d", HeureActuelle.min) <= fibaro:getValue(1, "sunriseHour") ) then

 

 

tu avais un == au lieu d'un <=

 

Après je sais pas si la suite fonctionne je n'ai rien testé.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...