Aller au contenu

Programmation Lua Basique


p78ch201

Messages recommandés

Bonjour,

 

Je m'essaie à  la programmation LUA pour des choses assez basique pour le moment.

J'ai créé ce petit module pour visualiser la valeur de ma variable "JOUR"

Si JOUR = 1 alors il fait jour

Si JOUR = 0 alors il fait nuit

 

Cette variable est mise à  jour dans deux scènes bloc qui marchent très bien. (au lever du soleil, la première scène passe la variable à  1, et dans la deuxième scène, au coucher du soleil, la scène passe la variable à  0).

 

L'idée était ensuite de supprimer ces deux scènes pour n'avoir que cette unique module qui fait varier la variable.

 

simple non ?

 

Le module :

 

mini_866035modulejour.png

 

le code du module :

--[[
%% properties
%% globals
--]]
local jour_nuit = fibaro:getGlobal('JOUR')
local debug = true; --activater le debug mode
fibaro:debug(jour_nuit);

if ( jour_nuit == 1 ) then
  fibaro:call(81, "setProperty", "ui.label_0_0.value", "JOUR");
  fibaro:debug("sleep_jour");  
else
  fibaro:call(81, "setProperty", "ui.label_0_0.value", "NUIT");

  fibaro:debug("sleep_nuit"); 
end

-- temporisation de 5 minutes
fibaro:sleep(300000);

le fichier DEBUG (uniquement la partie qui nous intéresse) :

[DEBUG] 06:33:33: 0
[DEBUG] 06:33:33: sleep_nuit
[DEBUG] 06:38:36: 0
[DEBUG] 06:38:36: sleep_nuit
[DEBUG] 06:43:39: 1
[DEBUG] 06:43:39: sleep_nuit
[DEBUG] 06:48:42: 1
[DEBUG] 06:48:42: sleep_nuit

donc on voit bien que la variable est bien passé de 0 à  1 au lever du soleil, jusque la tout va bien, mais le module m'affiche toujours "NUIT"

 

Donc la question est ou est-ce que je me suis trompé ?

 

 

merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

--[[
%% properties
%% globals
--]]
local jour_nuit = fibaro:getGlobal('JOUR')
local debug = true; --activater le debug mode
fibaro:debug(jour_nuit);
 
if ( jour_nuit == 1 ) then
fibaro:call(81, "setProperty", "ui.label_0_0.value", "JOUR");
fibaro:debug("sleep_jour");
elseif ( jour_nuit == 0 ) then
fibaro:call(81, "setProperty", "ui.label_0_0.value", "NUIT");
fibaro:debug("sleep_nuit");
end
 
-- temporisation de 5 minutes
fibaro:sleep(300000);
Lien vers le commentaire
Partager sur d’autres sites

local jour_nuit = fibaro:getGlobal('JOUR')
local debug = true; --activater le debug mode
fibaro:debug(jour_nuit);

if ( jour_nuit == 1 ) then
fibaro:call(81, "setProperty", "ui.label_0_0.value", "JOUR");
fibaro:debug("jour");  
elseif ( jour_nuit == 0 ) then
fibaro:call(81, "setProperty", "ui.label_0_0.value", "NUIT");
fibaro:debug("nuit"); 
end

-- temporisation de 5 minutes
--fibaro:sleep(300000);

ça me donne ça :

[DEBUG] 08:45:57: 1
[DEBUG] 08:46:00: 1
[DEBUG] 08:46:03: 1
[DEBUG] 08:46:06: 1

et donc, toujours affiché "NUIT" :(

Lien vers le commentaire
Partager sur d’autres sites

euh... pas un probleme de localisation, puisque ma variable passe bien de 0 à  1....

 

par contre, j'ai essayé de changé le nom du label.

je l'ai appelé label10 (label_0_0 était deja utilisé).

 

du coup j'ai plus rien qui s'affiche....

j'ai vérifié l'ID de mon module virtuel, c'est bien 81...

Lien vers le commentaire
Partager sur d’autres sites

--[[
%% properties
%% globals
--]]
local jour_nuit = fibaro:getGlobal('JOUR')
--local debug = true; --activater le debug mode
fibaro:debug(jour_nuit);

if ( jour_nuit == 1 ) then
fibaro:debug("jour1");
fibaro:call(81, "setProperty", "ui.label10.value", "JOUR");
fibaro:debug("jour2");
elseif ( jour_nuit == 0 ) then
fibaro:debug("nuit1");
fibaro:call(81, "setProperty", "ui.label10.value", "NUIT");
fibaro:debug("nuit2");
end
 
--temporisation de 5 minutes
--fibaro:sleep(300000);

marche pas mieux :

[DEBUG] 09:59:33: 1
[DEBUG] 09:59:36: 1
[DEBUG] 09:59:39: 1
[DEBUG] 09:59:42: 1
[DEBUG] 09:59:45: 1

je vais lui faire un petit reboot, ça va peut-être l'aider un peu ...

Lien vers le commentaire
Partager sur d’autres sites

a priori oui, ça me sert pour l'allumage auto des lumières du balcon la nuit, et ça fonctionne.

ce matin, le jour s'est levé entre 6:38 et 6:43

[DEBUG] 06:38:36: 0
[DEBUG] 06:38:36: sleep_nuit
[DEBUG] 06:43:39: 1
[DEBUG] 06:43:39: sleep_nuit
Lien vers le commentaire
Partager sur d’autres sites

@steven je n'avais pas vu ton MP, mais c'était effectivement bien ça :60:

--[[
%% properties
%% globals
--]]
local jour_nuit = fibaro:getGlobal('JOUR')
--local debug = true; --activater le debug mode
fibaro:debug(jour_nuit);

if ( tonumber(jour_nuit) == 1 ) then
fibaro:debug("jour1");
fibaro:call(81, "setProperty", "ui.label10.value", "JOUR");
fibaro:debug("jour2");
elseif ( tonumber(jour_nuit) == 0 ) then
fibaro:debug("nuit1");
fibaro:call(81, "setProperty", "ui.label10.value", "NUIT");
fibaro:debug("nuit2");
end
 
--temporisation de 5 minutes
--fibaro:sleep(300000);
[DEBUG] 10:10:48: 1
[DEBUG] 10:10:48: jour1
[DEBUG] 10:10:48: jour2
[DEBUG] 10:10:51: 1
[DEBUG] 10:10:51: jour1
[DEBUG] 10:10:51: jour2
Lien vers le commentaire
Partager sur d’autres sites

Sinon son code (vu qu'il est parti refaire du LUA  ;) ) devrait être (sans les fioritures) :

 

--[[
%% properties
%% globals
--]]
local jour_nuit = fibaro:getGlobal('JOUR')
 
if ( tonumber(jour_nuit) == 1 ) then
  fibaro:call(81, "setProperty", "ui.label_0_0.value", "JOUR");
else
  fibaro:call(81, "setProperty", "ui.label_0_0.value", "NUIT");
end
-- temporisation de 5 minutes
fibaro:sleep(300000);
Lien vers le commentaire
Partager sur d’autres sites

lol, exact !

 

il faut juste créer une variable "JOUR"

et 2 petites scenes pour faire changer cette variable de 0 à  1.

effectivmeent avec sunrisehour et sunsethour, je pense que ma variable jour sert pas à  grand chose (redondance avec les varaibles systemes), ça m'aide juste à  clarifier.

 

mini_548446Jourbloc.png

 

idem pour nuit

au couher du solei alors jour = 0 et sunsethour = 1

 

d'ailleurs est-ce bien utile d'avoir sunsethour ? n'est-ce pas une variable systeme ?

 

l'idée étant maintenant de completer le code pour que le passage de la varaible JOUR de 0 à  1 se fasse directement dans le module, sans passer par les deux scenes

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...