Aller au contenu

Verifier Et Éteindre Une Lampe Extérieure Si Allumée En Journée.


Romain80

Messages recommandés

Re,

 

Alors voici le code que tu devrais avoir : 

--[[
%% properties
10 value
14 value
28 value
30 value
%% globals
Jour_Nuit
--]]
 
local startSource = fibaro:getSourceTrigger();


fibaro:debug("Valeur variable Jour_Nuit :" .. fibaro:getGlobal("Jour_Nuit"))
if (fibaro:getGlobal("Jour_Nuit") == "Jour") 
  then
 
 
	if 	(fibaro:getValue(10, "value") > "0") or
 	 	(fibaro:getValue(14, "value") > "0") or
                (fibaro:getValue(28, "value") > "0") or
 	 	(fibaro:getValue(30, "value") > "0") then
 
		
  		fibaro:sleep(20*1000)
 		fibaro:call(10, "turnOff")
 		fibaro:call(14, "turnOff")
 		fibaro:call(28, "turnOff")
                fibaro:call(28, "turnOff")
	end
 
end  

Copie colle ça et dis mois deja si ça marche !

Lien vers le commentaire
Partager sur d’autres sites

Ah ben j'ai trouvé : ne supporte pas dans l'entête de la scène LUA de mettre des commentaires. Ainsi chez moi, c'était l'entête qui faisait que la scène ne démarrait pas automatiquement.

 

--[[
%% properties
10 value
14 value
28 value
30 value
%% globals 
Jour_Nuit
--]]
Lien vers le commentaire
Partager sur d’autres sites

@Razowski: en plus ton dernier debug n'est pas bon tu as écrit

fibaro:debug(i);

 Là  tu ne vas avoir qu'un chiffre entre 1 et 4 ;)

 

En tout cas moi j'aime pas trop votre code car si vous allumez une seule lampe, Vous les faites tous travaillé pour rien.

Bon c'est de l'optimisation mais c'est mon avis :D

Lien vers le commentaire
Partager sur d’autres sites

@Shad : pour le debug, c'était pour faire un check de ma boucle donc volontaire. Pour le code, clair, 100% d'accord, reste àaméliorer ce point car si dans chaque scène on tape tous les devices ben ça va pas le faire sur le plus long terme...

Lien vers le commentaire
Partager sur d’autres sites

Mais y'a pas de problème Shad :)

 

Je ne l' ai pas posté pour que tout le monde le venere et l' adopte sans concession :) 

 

Le but était simplement d' alimenter le forum en donnant des idées. 

 

De plus Gregory l' a deja amélioré, il ne reste plus qu' a utiliser son optimisation et tout roule ! 

 

Mais la c'est vrai qu'une seule lampe allumé balance un turnOff a tous les modules. Bon après c'est pas si ils étaient alimentés a pile :P

Lien vers le commentaire
Partager sur d’autres sites

@ Romain80: non ce n'est pas une question de consommation, mais plus matériel, autant éviter de fatiguer les switchs à  l'intérieur pour rien ;).

 

Pour optimiser c'est assez rapide, il y a deux solution une plus facile mais légèrement moins optimiser que l'autre.

-[[
%% properties
10 value
14 value
28 value
30 value
%% globals
Jour_Nuit
--]]
 
local startSource = fibaro:getSourceTrigger();
lights = {10, 14, 28, 30}; -- id des lampes
local lightOn = 0;
 
if (fibaro:getGlobal("Jour_Nuit") == "Jour") then
    for i = 1, #lights do
        if (tonumber(fibaro:getValue(lights[i], "value")) > 0) then
            fibaro:sleep(2*1000)
            fibaro:call(lights[i], "turnOff");
        end
    end
end

 

Tout simplement.

 

Si maintenant vous voulez vraiment apprendre quelque chose qui pourrait vraiment vous resservir dans le futur et réduire le temps pour éteindre les lumière, regardez pour créer un array dans votre première boucle avec les id des modules.

Ensuite dans la deuxième boucle, vous éteignez les lumière par rapport a cet array.

Lien vers le commentaire
Partager sur d’autres sites

perso je te dirais que oui pour deux raisons:

1) le backend du bloc est du lua, je te dirais donc qu'àmon avis tu allèges ton code en le faisant directement en lua

2) Je trouve le lua beaucoup plus simple àlire que du bloc et plus facile àajouter des fonctions dans le futur :D

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Petite question concernant la ligne SendPush.

 

Je vois que vous avez ceci :

fibaro:call(4, "sendPush", "Lumière Ext Allumée. Procedure d extinction.");

Alors que j'ai l'habitude de voir plutôt ceci dans mes scripts (ID de la notif et ID de mon mobile) :

fibaro:call(83, "sendDefinedPushNotification", "18");

A partir de quoi choisissez-vous l'id 4 ?

J'imagine que SendPush envois directement le message "Lumière Ext Allumée. Procedure d extinction."

Et l'Id du mobile c'est 4 ?

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Il semblerait que l'on ait la même chose pour les mails avec : fibaro:call(123, 'sendEmail', subject, message);

local subject = 'Test Subject';
local message = 'Test message';

fibaro:call(123, 'sendEmail', subject, message);

Lien vers le commentaire
Partager sur d’autres sites

@Domodial : On ne peut plus d'accord. Certaine fois sur les forums, tu n'ose meme pas poser de question car ça semble "pas au niveau" ou trop "stupide". Le niveau parfois élitiste de certains membres empêche justement les gens qui en ont besoin de s'exprimer et de questionner librement ... mais pour ma part je suis carrément d' un avis contraire. Les Forums sont en mon sens, une superbe source d'informations. La moindre petite chose peut avoir un intérêt ! Et on en a la preuve :) 

 

@Jossalf : Oui tout a fait, tu peux également gérer tes mails comme cela.

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

C'est quand même beaucoup plus souple que de devoir préparer des messages fixes pour les rappeler par un "SendDefinedPush...".

 

En plus ça permet d'avoir des messages dynamiques :

Grace à  un Fibaro: getSourceTrigger () on récupère le nom du déclencheur de la scène dans une variable. On l'insère dans un message que l'on envoie en push ou mail.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

@ Romain80: non ce n'est pas une question de consommation, mais plus matériel, autant éviter de fatiguer les switchs à  l'intérieur pour rien ;).

 

Pour optimiser c'est assez rapide, il y a deux solution une plus facile mais légèrement moins optimiser que l'autre.

--[[
%% properties
10 value
14 value
28 value
30 value
%% globals
Jour_Nuit
--]]
 
local startSource = fibaro:getSourceTrigger();
lights = {10, 14, 28, 30}; -- id des lampes
local lightOn = 0;
 
if (fibaro:getGlobal("Jour_Nuit") == "Jour") then
    for i = 1, #lights do
        if (tonumber(fibaro:getValue(lights[i], "value")) > 0) then
            fibaro:sleep(2*1000)
            fibaro:call(lights[i], "turnOff");
        end
    end
end

Tout simplement.

 

Si maintenant vous voulez vraiment apprendre quelque chose qui pourrait vraiment vous resservir dans le futur et réduire le temps pour éteindre les lumière, regardez pour créer un array dans votre première boucle avec les id des modules.

Ensuite dans la deuxième boucle, vous éteignez les lumière par rapport a cet array.

Il manqué un tiré en début de première ligne  ;)

Celui là , je prends  :60: , je vais remplacer mes bloc  :P

Merci Shad, je crois bien que je dois avoir au moins 60% de code made in Shad dans ma box  :lol:

Lien vers le commentaire
Partager sur d’autres sites

humm mon message n'est plus là  alors que je l'avais posté...

 

Bonjour,

 

Le script fonctionne bien, cependant j'ai un soucis.

Avec yahoo, quand je décide malgré tout d'allumer une lumière (vers 18h30 - 19h), la lumière s'éteint.

Ok il fait jour dehors, mais lorsqu'on a besoin de lumière dans une partie sombre de la maison, impossible d'en avoir, la lumière s'éteint.

 

Avez-vous le probleme ? Comment compenser en plus ou moins 1h pour palier yahoo ?

 

Merci 

Lien vers le commentaire
Partager sur d’autres sites

c'est vrai que je n'ai pas ce problème avec mes lumières extérieur, elles sont exposés donc, si il fait jour, même un peux, les lumières ne servent àrien, mais justement, je n'ai pas associer l'ID de la lumière de mon entrée car c'est exactement le problème que j'ai.

donc, je pensé utiliser un capteur de luminosité, ça devrait le faire?

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...