LUA - Eclairage temporisé avec deux capteurs

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

LUA - Eclairage temporisé avec deux capteurs

Message par deennoo »

Salut a tous.

J'ai mis en place un script qui permet d'allumer un groupe d'ampoules pour x minutes grâce a un détecteur.

J'ai maintenant besoin de faire la même chose mais avec deux détecteurs pour un eclairage exterieur qui s'allume si porte ouverte ou portail ouvert.

Voici le script :

Code : Tout sélectionner

-- chargement des modules
package.path = package.path..";/home/nico/domoticz/scripts/lua/?.lua"
require "modules"

time = os.date("*t")

t1 = os.time()
s = otherdevices_lastupdate['PIR Porte RDC']

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)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
absence = (os.difftime (t1, t2))

Lux = otherdevices_svalues['Luminosite Exterieur']:match("([^;]+)")
Lux = tonumber(Lux)

commandArray = {}




  if absence > 300 and (otherdevices['Lumiere Porche'] == 'On' or otherdevices['Eclairage Exterieur'] == 'On') then
     
   groupOff('Eclairage Exterieur')
   
   elseif (devicechanged['PIR Porte RDC'] == 'On' or devicechanged['Etat Portail'] == 'On') and (otherdevices['Lumiere Porche']=='Off' or otherdevices['Eclairage Exterieur']=='Off') and Lux <= 300 then

   groupOn('Eclairage Exterieur')
   
end 

return commandArray
j'ai maintenant besoin d'inclure le lastseen de "Etat Portail"

Alors biensur, je pourrais faire un script qui active un dummy grace aux deux vrais capteurs, et ainsi check le lastseen du dummy mais c'est degueu.

Une idée svp ?
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: LUA - Eclairage temporisé avec deux capteurs

Message par aleph0 »

Prendre le max (ou le min) du lastseen de chacun ?
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: LUA - Eclairage temporisé avec deux capteurs

Message par deennoo »

en fait j'ai la solution que j'ai adapter du wiki officiel :

https://www.domoticz.com/wiki/Event_scr ... on_sensors

ce qui donne pour moi :

Code : Tout sélectionner

-- chargement des modules
package.path = package.path..";/home/nico/domoticz/scripts/lua/?.lua"
require "modules"

time = os.date("*t")
function timedifference (s)
t1 = os.time()
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)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
absence = (os.difftime (t1, t2))
return absence
end

Lux = otherdevices_svalues['Luminosite Exterieur']:match("([^;]+)")
Lux = tonumber(Lux)

commandArray = {}
  if  ((timedifference(otherdevices_lastupdate['PIR Porte RDC']) > 300) and (timedifference(otherdevices_lastupdate['Etat Portail']) > 300)) and (otherdevices['Lumiere Porche'] == 'On' or otherdevices['Eclairage Exterieur'] == 'On') then
   groupOff('Eclairage Exterieur')
   elseif (devicechanged['PIR Porte RDC'] == 'On' or devicechanged['Etat Portail'] == 'On') and (otherdevices['Lumiere Porche']=='Off' or otherdevices['Eclairage Exterieur']=='Off') and Lux <= 300 then
   groupOn('Eclairage Exterieur')
end
return commandArray

Il faut crée une fonction timedifference et s'en servir pour chaque "capteur", cela fonctionne très bien avec des PIR en 433 mhz premier prix de chez Aliexpress et des détecteurs d'ouverture Chacon/DIO.

Ici dans le script j'ai inclus une condition de luminosité exterieur
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
Répondre