Foros Domótica Doméstica

Programación LUA

linkey

  • *****
  • 606
    • Ver Perfil
predicción meteorológica AEMET
« Respuesta #120 en: Marzo 20, 2018, 19:47:51 pm »
Adjunto un nuevo proyecto de escenas para obtener la información de predicción meteorológica publicada por la Agencia Estatal de meteorología.
Espero que os sirva!

Re:Programación LUA
« Respuesta #121 en: Junio 21, 2018, 22:39:52 pm »
Hola
Estoy intentando realizar una función con lúa pero no lo consigo
Al leer un valor , si es verdadero mándame un mensaje (5555) y si es falso mándame otro mensaje(66666)
Está bien así ?



value = grp.getvalue(0/2/1)
if value==true then
  telegram('555555555555555555555555')
elseif value==false then
    telegram('6666666666666666666666666')
end

linkey

  • *****
  • 606
    • Ver Perfil
Re:Programación LUA
« Respuesta #122 en: Junio 22, 2018, 09:21:55 am »
Hola
Estoy intentando realizar una función con lúa pero no lo consigo
Al leer un valor , si es verdadero mándame un mensaje (5555) y si es falso mándame otro mensaje(66666)
Está bien así ?



value = grp.getvalue(0/2/1)
if value==true then
  telegram('555555555555555555555555')
elseif value==false then
    telegram('6666666666666666666666666')
end

Código: [Seleccionar]
function message(value)
  if value then return '5555' end
  return '6666'
end

telegram(message(grp.getvalue(0/2/1)));

Re:Programación LUA
« Respuesta #123 en: Junio 22, 2018, 19:31:05 pm »
Muchas gracias
Esta noche lo pruebo

Re:Programación LUA
« Respuesta #124 en: Junio 23, 2018, 11:54:00 am »
probado y funcionando
mi funcion tambien funciona el problema que tenia era a quien le pedia el valor no es al grupo sino al evento

value = event.getvalue(0/2/1)
if value==true then
  telegram('open')
elseif value==false then
  telegram('closed')
end


ahora necesito que un interruptor active o desactive esta funcion , voy a ver que es lo que consigo!!!!!
un saludo!!

Re:Programación LUA
« Respuesta #125 en: Agosto 09, 2018, 15:03:09 pm »
Buenos días @linkey, se puede hacer la siguiente escena mediante lua:
Datos:
1 fgs223
1 door windos 2
1 motion sensor

Tengo el fgs223 conectado a 2 teclas tipo pulsadores.
Tengo una escena que al abrir la puerta exterior me prende la luz exterior por 3 minutos, y otra que si me detecta el motion sensor interior se encienda la luz interior por 5 minutos.
Problema: si quiero permanecer adentro del garage por más de 5 minutos y no me detecta se me apaga la luz.
Por lo tanto quisiera que al hacer un click en el pulsador se me desactive la escena, y al hacer 2 click me la active nuevamente.

Se podrá hacer?

linkey

  • *****
  • 606
    • Ver Perfil
Re:Programación LUA
« Respuesta #126 en: Agosto 10, 2018, 10:55:39 am »
Tendría que ver la escena que dices que te enciende el garaje por 5 min, supongo que lo que hace es dispararse al detectarse, esperar 5 min y apagarse, por eso se apaga si o si a los 5min aunque te detecte de nuevo y se dispare otra instancia de la escena, me parece raro que no te detecte en 5min, seguro que cuando se apaga si te mueves se vuelve a encender.
Creo que ya hemos tratado este tema, habría que hacer una escena que lo primero comprobara si existen otras instancias en ejecución de la misma escena para eliminarlas y que quedase la última en ejecución por 5min más.

linkey

  • *****
  • 606
    • Ver Perfil
Re:Programación LUA
« Respuesta #127 en: Agosto 10, 2018, 10:59:44 am »
Buenos días @linkey, se puede hacer la siguiente escena mediante lua:
Datos:
1 fgs223
1 door windos 2
1 motion sensor

Tengo el fgs223 conectado a 2 teclas tipo pulsadores.
Tengo una escena que al abrir la puerta exterior me prende la luz exterior por 3 minutos, y otra que si me detecta el motion sensor interior se encienda la luz interior por 5 minutos.
Problema: si quiero permanecer adentro del garage por más de 5 minutos y no me detecta se me apaga la luz.
Por lo tanto quisiera que al hacer un click en el pulsador se me desactive la escena, y al hacer 2 click me la active nuevamente.

Se podrá hacer?
Échale un vistazo a este hilo

Re:Programación LUA
« Respuesta #128 en: Agosto 10, 2018, 14:17:25 pm »
Buenos días @linkey, se puede hacer la siguiente escena mediante lua:
Datos:
1 fgs223
1 door windos 2
1 motion sensor

Tengo el fgs223 conectado a 2 teclas tipo pulsadores.
Tengo una escena que al abrir la puerta exterior me prende la luz exterior por 3 minutos, y otra que si me detecta el motion sensor interior se encienda la luz interior por 5 minutos.
Problema: si quiero permanecer adentro del garage por más de 5 minutos y no me detecta se me apaga la luz.
Por lo tanto quisiera que al hacer un click en el pulsador se me desactive la escena, y al hacer 2 click me la active nuevamente.

Se podrá hacer?
Échale un vistazo a este hilo

Eso lo he probado, pero no dio resultado, porque el motion está lejos del sector donde me hubico, y así tendría que pasar antes de los 5 minutos para que no se me apague y corra devuelta la escena. Lo que busco es que al abrir la puerta presione la tecla y ya automaticamente me desactive la escena, en algún lado he visto el CentralSceneEvent, lo he probado pero no funciona

Re:Programación LUA
« Respuesta #129 en: Agosto 19, 2018, 23:57:39 pm »
Hola a todos,
Yo tenía un problema similar y lo que he hecho es coger una escena LUA que encontré por internet que controla luces en base al movimento y lo que he hecho es ampliarla un poco para:
1. En la config de cada luz le indico si quiero que se Apague sola pasado el tiempo independientemente de como se encendió, que se apague sola únicamente si fue encendida por la escena y no a mano, que no se apague sola en ningún caso.
2. Tengo una variable global donde guardo desde la escena el id de la luz cada vez que una luz se enciende de forma automática (así luego puedo sólo apagar desde la escena aquellas que fueron encendidas desde la escena)

Así puedo configurar en casa las luces de forma distinta. Por ejemplo, zonas de paso como pasillos y escaleras, le pongo siempre AutoOFF aunque la haya encendido a mano. Estancias como un baño, le pongo AutoOFF sólo si la encendió la escena, así si quiero entrar al baño por largo tiempo enciendo a mano y la escena no me la apaga. (la mampara de ducha evita el detector de movimiento :) y no mola ducharse a oscuras)

Por si os sirve de ayuda...
Si alguien quiere el código lo puedo compartir aunque no esté muy fino, funciona! ;)
Un saludo

Re:Programación LUA
« Respuesta #130 en: Agosto 21, 2018, 13:03:18 pm »
Hola a todos,
Yo tenía un problema similar y lo que he hecho es coger una escena LUA que encontré por internet que controla luces en base al movimento y lo que he hecho es ampliarla un poco para:
1. En la config de cada luz le indico si quiero que se Apague sola pasado el tiempo independientemente de como se encendió, que se apague sola únicamente si fue encendida por la escena y no a mano, que no se apague sola en ningún caso.
2. Tengo una variable global donde guardo desde la escena el id de la luz cada vez que una luz se enciende de forma automática (así luego puedo sólo apagar desde la escena aquellas que fueron encendidas desde la escena)

Así puedo configurar en casa las luces de forma distinta. Por ejemplo, zonas de paso como pasillos y escaleras, le pongo siempre AutoOFF aunque la haya encendido a mano. Estancias como un baño, le pongo AutoOFF sólo si la encendió la escena, así si quiero entrar al baño por largo tiempo enciendo a mano y la escena no me la apaga. (la mampara de ducha evita el detector de movimiento :) y no mola ducharse a oscuras)

Por si os sirve de ayuda...
Si alguien quiere el código lo puedo compartir aunque no esté muy fino, funciona! ;)
Un saludo
Hola @ruizcubo genial, dale bárbaro, te agradecería si podrías compartirlo !!

Re:Programación LUA
« Respuesta #131 en: Agosto 22, 2018, 19:55:24 pm »
Hola,
sin problema, aquí lo comparto y explico un poco.
He de decir que la mayor parte del código es de un tal Remi, como aparece en los comentarios y que por supuesto he dejado como autor del mismo.
Instrucciones:
1. Crear una escena con el código LUA adjunto.
2. Cambiar en el código:
  2.1. Las lineas iniciales 3,4,5, poner los IDs de los sensores de movimiento que deben disparar la escena. Tantos como queramos controlar.
  2.2. Cambiar las lineas 77,78,79 y poner la configuración para cada sensor de movimiento que luz se quiere controlar. Ver los comentarios. Yo he añadido el último parámetro, AutoOFF, que controla si la luz se debe Apagar a mano (0), Si se apaga "sola" si se encendió "sola" (1) o si queremos que se apague sola en cualquier caso (2).
Tipicamente usaremos (1) en las zonas de estancia y (2) en las zonas de paso como pasillos y escaleras.

3. Crear variables globales:
 3.1 AutoLights. Da igual el valor inicial que se ponga, el código lo reseteará y pondrá una tabla con los Ids de las luces que ha encendido, para saber si las debe apagar AutoOFF=1. Sería conveniente que si tenéis otras escenas que controlan luces (por ejemplo, "Apaga Todas las Luces"), que limpiara esta variable también. No es importante pero podría ocurrir que el AutoOFF no funcione bien en el siguiente uso porque quedan configuraciones previas. Sería sólo una vez.
3.2 isNight. Estoy seguro que todos tenéis una escena que se encarga de gestionar una variable como esta que tiene un 1 si es de Noche y un 0 si es de dia. Si alguien necesita una escena para esto que lo diga. Cambiar el código con el nombre que ya tengáis para dicha variable.

3.3 ghostMode. Valor por defecto 0. Esta variable es para activar un modo invisible. La he puesto hoy ya que anoche tenía que hacer de "Ratón Pérez" y es muy inconveniente ser descubierto por tu propia domótica  ;). Esta variable no es necesaria, si no se quiere esta función. Si no existe el código funciona igual. Si su valor es 1 la escena no hace nada. Tengo otro código para poner a 1 que uso desde un botón de un dispositivo virtual que la pone a 1 durante unos minutos para poder moverme "a oscuras" por la casa.

Espero que os sirva!
Si tenéis preguntas no dudéis en lanzarlas!

Y aprovecho para agradecer a Linkey por su código para control de la calefacción con dispositivos virtuales, es brutal. Lo he adaptado en mi sistema por suelo radiante y funciona genial. Gracias! (por cierto, no lo he encontrado ya por el foro, merecería una chincheta)

Un saludo
Juan Carlos

linkey

  • *****
  • 606
    • Ver Perfil
Re:Programación LUA
« Respuesta #132 en: Septiembre 06, 2018, 09:17:51 am »
...
Y aprovecho para agradecer a Linkey por su código para control de la calefacción con dispositivos virtuales, es brutal. Lo he adaptado en mi sistema por suelo radiante y funciona genial. Gracias! (por cierto, no lo he encontrado ya por el foro, merecería una chincheta)

Un saludo
Juan Carlos

De nada.

Re:Programación LUA
« Respuesta #133 en: Noviembre 07, 2018, 13:31:33 pm »
Hola, creé esta escena, donde me gustaría que fuera NOCHE o que no haya movimiento durante 10 minutos, apague el aire. Pero no puedo hacer que funcione, no sé dónde está el error. Los dispositivos que tengo son un fgs223 conectado al aire, un remotec zxt-120 y un capitán de movimiento Fibaro.

El mismo elegido fue producido cuando la variable está en calor y eso y movimiento, luego enciende el aire.
Prender:
--[[
%% autostart
%% properties
71 value
%% weather
%% events
%% globals
--]]

if fibaro:countScenes() > 1  then
  fibaro:abort()
end

local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("DiaNoche") == "Dia"  and  fibaro:getGlobalValue("FrioCalor") == "Calor"  and  tonumber(fibaro:getValue(71, "value")) > 0 ))
then
   fibaro:call(85, "turnOn");
   fibaro:call(56, "setMode", "2");
   fibaro:call(54, "setThermostatSetpoint", "1", "24");
end


Apagar:
--[[
%% autostart
%% properties
85 value
%% weather
%% events
%% globals
DiaNoche
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("DiaNoche") == "Noche"  and  tonumber(fibaro:getValue(85, "value")) > 0 ))

  if (
      ( tonumber(fibaro:getValue(71, "value")) == 0 )) then
setTimeout(function()
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(71, "value");
if (( tonumber(fibaro:getValue(71, "value")) == 0 ) and (os.time() - deviceLastModification0) >= 600) then
    delayedCheck0 = true;
end
  then
    fibaro:call(85, "turnOff");
    fibaro:call(56, "setMode","0");
     
end