Page 1 sur 1
Definir le temps d'allumage d'une lampe via LUA
Publié : 10 oct. 2015, 11:28
par jacques68
Bonjour à tous
J'ai continué à deployer mon reseau domotique.
Je me suis attaqué à la detection entrée dans la maison et en fonction de l'heure de la meteo etc... allumer tel ou tel lampe.
La mise en place des capteurs et lampe fonctionne.
Quand je passe devant le capteur celui-ci allume bien la lampe ou les lampes désirées.
Maintenant je veux aller plus loin et allumer une lampe pour un temps définit. Par exemple une minute.
J'ai donc fait un script tout simple:
Code : Tout sélectionner
-- Allumage lampe quand on rentre la nuit
commandArray = {}
time = os.date("*t")
-- Si le capteur passe à on et alarme activé sur on, on allume la lumière pour 1 minute
if (devicechanged['Capteur'] == 'On' and otherdevices['Alarme'] == 'On') then
commandArray['Balcon'] = 'On FOR 1'
print('balcon allume' )
end
return commandArray
La lampe s'allume bien....mais elle ne s'eteind pas après une minute...
Je ne vois pas ou ça coince???
Chez d'autres ce script fonctionne correctement...pas chez moi...grrrrrrrrrrr

Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 10 oct. 2015, 11:45
par jacques68
J'ai aussi éssayé ce genre de script sans plus de succès...
Code : Tout sélectionner
-- Allumage lampe quand on rentre la nuit
commandArray = {}
t1 = os.time()
s = otherdevices_lastupdate['Balcon']
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
-- Si le capteur passe à on et alarme activé sur on, on allume la lumière pour 1 minute
if (devicechanged['Capteur'] == 'On' and otherdevices['Alarme'] == 'On') then
commandArray['Balcon'] = 'On'
print('balcon allume' )
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices['Balcon'] == 'On' and difference > 60 and difference < 70) then
commandArray['Balcon']='Off'
print('balcon eteind')
end
end
return commandArray
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 10 oct. 2015, 12:20
par jacques68
Bon ben je vais répondre à moi meme mais peut etre cela servira à d'autres..
J'y ai passé pourtant quelques heures hier soir à faire fonctionner cela sans résultats. Et ce matin 1/2 heure après avoir posté ce premier message je pense avoir trouvé la solution.
Peut etre existe t'il une autre façon de faire mais celle là semble fonctionner.
En fait il faut deux scripts: un premier qui detecte une présence et effectue tel ou tel opération donc un script_device, chez moi allumer une lampe, puis un deuxième script qui definit le temps d'allumage de la lampe, ici il faut un script_time.
Voici donc mes deux scripts:
Code : Tout sélectionner
-- Allumage lampe quand on rentre la nuit
-- script_device_entréenuit
commandArray = {}
-- Si le capteur passe à on et alarme activé sur on, on allume la lumière pour 1 minute
if (devicechanged['Capteur'] == 'On' and otherdevices['Alarme'] == 'On') then
commandArray['Balcon'] = 'On'
print('balcon allume' )
end
return commandArray
Et le second qui definit le temps d'allumage, ici par exemple une minute
Code : Tout sélectionner
-- script_time_entreenuitallumagelampe.lua
t1 = os.time()
s = otherdevices_lastupdate['Balcon']
-- returns a date time like 2013-07-11 17:23:12
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
commandArray = {}
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices['Balcon'] == 'On' and difference > 60 ) then
commandArray['Balcon']='Off'
print('balcon eteint')
end
return commandArray
Voila. Peut etre peut assembler les 2 codes en un mais je sais pas comment....

Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 10 oct. 2015, 12:28
par vil1driver
salut,
franchement je ne sais pas pourquoi ton premier script ne fonctionne pas

peut-être que ton capteur passe à On trop régulièrement et relance le décompte d'une minute avant la fin
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 10 oct. 2015, 19:26
par jacques68
Ben non je sais pas pourquoi le premier marche pas....
Il ne passe pas regulierement sur on pourtant
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 12 oct. 2015, 22:16
par oula85
Tu as juste à remplir un délai d extinction dans ton interrupteur virtuel pas besoin de scripter quoique ce soit !!!
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 13 oct. 2015, 09:11
par vil1driver
Peut-être qu'en temps normal il ne souhaite pas que la lampe s'éteigne seule...
D'ou l'intéret du script, avoir des actions différentes suivant certaines conditions..
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 13 oct. 2015, 19:10
par jacques68
vil1driver a écrit :Peut-être qu'en temps normal il ne souhaite pas que la lampe s'éteigne seule...
D'ou l'intéret du script, avoir des actions différentes suivant certaines conditions..
Tout a fait!!!

L'interrupteur me sert en temps normal à allumer la lampe, donc si je lui colle un delai d'extinction......
Donc obligé de passer par le script.
J'ai aussi du mettre une condition dans mon script time...car si j'allume la lampe via le bouton de commande elle s’éteint après le temps donner dans le script time.
Re: Definir le temps d'allumage d'une lampe via LUA
Publié : 14 oct. 2015, 16:40
par heartblood
Tu as essayé en mettant 2 minutes ? Tu as regardé dans les logs si la commande est envoyé mais non recu par le module ? Parce qu'effectivement ça devrait fonctionner. Mais sache que ça devrait eteindre la lumiere au bout d'une minute quelque soit l activation ou non de l'interrrupteur entre cette minute. L extinction n'est pas cassable et s'executera quoi qu'il se passe. C'est pour ça que le script time est éventuellement mieux.