Script para que una luz se mantenga encendida mientras el sensor de movimiento lo detecte

Miki G. y dafegod del grupo «Domoticz a lo spain» de telegram nos explican cómo han configurado un script para que una luz se mantenga encendida mientras el sensor de movimiento detecte dicho movimiento.

Paso a paso

Creamos la variable

Lo primero que debemos hacer es crear una variable tipo Entero / Integer (según idioma de domoticz) llamada, por ejemplo, LuzCocinaPralManual. Le ponemos un 1 al valor de la variable y guardamos.

Si no recuerdas cómo se crea una variable echa un ojo al siguiente tutorial: «Cómo crear una variable en Domoticz«.

Creamos el dummy ficticio

Lo siguiente que hacemos es crear un dummy ficticio tipo Interruptor ó Switch ON/OFF (según idioma de domoticz). En nuestro ejemplo lo denominaremos VariableCocina.

Recuerda que para ello nos vamos a:

Domoticz > Setup > Hardware > Dummy (Create virtual sensors) > Switch

Configuramos el script de la variable

Creamos el primer script, el de la variable. 

Donde:

  • Luz Cocina Principal es el nombre de las luces que quieres encender.
  • VariableCocina es el nombre del dummy ficticio creado en el paso anterior.
  • LuzCocinaPralManual es el nombre de la variable creada en el primer paso.
return {
on = {
devices = {'Luz Cocina Principal'} --nombre de tu dummy
},
execute = function(dz, device)
local luz = dz.devices('Luz Cocina Principal')
local dummy = dz.devices('VariableCocina') --este es el dummy ficticio
if luz.state == 'On' and dummy.state == 'Off' then
dz.variables('LuzCocinaPralManual').set(1)
--dz.notify("Domoticz", "La luz de la cocina no se va a apagar", dz.PRIORITY_NORMAL,dz.SOUND_DEFAULT, "" , dz.NSS_TELEGRAM)
elseif (luz.state == 'On' and dummy.state == 'On') or (luz.state == 'Off' and dummy.state == 'Off') or (luz.state == 'Off' and dummy.state == 'On') then
dz.variables('LuzCocinaPralManual').set(0)
--dz.notify("Domoticz", "La luz de la cocina se apagara solo", dz.PRIORITY_NORMAL,dz.SOUND_DEFAULT, "" , dz.NSS_TELEGRAM)
end
end
}

Configuramos el script de la luz

Creamos el segundo script, el de la luz o luces. 

Donde:

  • Luz Cocina Principal es el nombre de las luces que quieres encender.
  • Detector Cocina es el nombre del sensor de movimiento.
  • Detector Cocina Lux es el nombre del sensor que nos aporta los Lux de iluminación.
  • VariableCocina es el nombre del dummy ficticio creado en el paso anterior.
  • LuzCocinaPralManual es el nombre de la variable creada en el primer paso.
  • Modificaremos los lux que nos interesen (el 25) para que las luces se enciendan cuando los lux estén por debajo de ese parámetro.
  • Modificaremos los segundos que nos interesen (el 10) por el que nos interese.
  • Si los lux no te interesan o no tienes ese dato, puedes eliminar esa línea y, como consecuencia, deberás eliminar el texto: «and lux.lux < 25«.
return {
on = {
devices = {'Detector Cocina'},
timer = {'every minute'}
},
execute = function(dz, item)
local luz = dz.devices('Luz Cocina Principal')
local sensor = dz.devices('Detector Cocina')
local lux = dz.devices('Detector Cocina LUX') --si el detector no tiene lux, se puede obviar esta linea
local dummy = dz.devices('VariableCocina') -- este es el dummy ficticio
if dz.variables('LuzCocinaPralManual').value == 0 then
if luz.state == 'Off' and sensor.state == 'On' and lux.lux < 25 then
dummy.switchOn().checkFirst()
luz.switchOn().silent()
--dz.log('LOG: La luz de la cocina se ha encendido')
elseif sensor.state == 'Off' and sensor.lastUpdate.secondsAgo >= 10 then
dummy.switchOff().checkFirst()
luz.switchOff().silent()
--dz.log('LOG: La luz de la cocina se ha apagado')
end
end
end
}

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!