Crear escena, si xxx no ha cambiado durante x tiempo, entonces...

Hola, vengo de eedomus, y en el tengo varias reglas, que ejecutan la acción si el sensor de movimiento o de apertura lleva un tiempo en la misma posición. Ejemplo, si el sensor de la puerta de garaje marca que está abierta y lleva igual 5 minutos, entonces cerrar la puerta. O si el sensor de movimiento no detecta movimiento durante 3 minutos y la luz está encendida que apague la luz.

¿Cómo se crean reglas, que tengan el factor de tiempo DURANTE?

La verdad es que me está costando un poco adaptarme a Jeedom, entre el francés, la documentación y que vengo con la mente un poco cerrada por eedomus, que necesito las vacaciones… A ver si ahora en vacaciones libero mi mente y empezó a entender el sistema de reglas de Jeedom.

Desde ya, gracias.

Te pongo un ejemplo que me envía un mail si la puerta de la calle está durante más de 5 minutos abierta.
Utilízalo de guía.

- Nom du scénario : EJEMPLO ACCION TRAS UN TIEMPO
- Mode du scénario : provoke
    - Evènement : #[SALÓN][PUERTA PRINCIPAL][Ouverture]#



    
    SI #[SALÓN][PUERTA PRINCIPAL][Ouverture]# == 1
    ALORS
     (variable) Affectation de la variable : #DateDerniereOuverturePorte# à #timestamp#
         
        DANS 5
        FAIRE
             
            SI #[SALÓN][PUERTA PRINCIPAL][Ouverture]# == 1 ET (#timestamp# - variable(#DateDerniereOuverturePorte#) > 300)
            ALORS
             #[CASA][Email][Jeedom]# - Options : Array
            (
                [enable] => 1
                [title] => #title#
                [message] => PUERTA DE LA CALLE MÁS DE 5 MINUTOS ABIERTA
            )
            
            SINON
    SINON

Un saludo.

Como idea para “mejorar” tu escenario, yo pondría un stop si la condición de la puerta se cierra, así no tienes un escenario en ejecución para comprobar una cosa que ya se ha hecho no se si me explico, al final si tenemos muchos escenarios en “espera” son procesos que están tirando de cpu y memoria, en instalaciones caseres igual no notamos nada pero según vamos haciendo más y más escenarios al final que la cosa nos va lenta :wink:

icanas, te entiendo perfectamente porque me pasó a mí. Después de unos días de desesperación, empiezas a ver la luz en el fondo… De verdad que llegué a pensar que era idiota. Pero luego, después de unas cuantas decenas de horas (ya se ha dicho varias veces que la curva es bien cuesta arriba), te das cuenta que es MUCHO más rápido y cómodo que en Eedomus. Estoy haciendo mis notas para hacer una comparativa entre hacer reglas en Eedomus y Jeedom. Cuando tenga tiempo os escribo un hilo para que los que aún estás nuevos, les ayude a comprender algunas cosas.
Pregunta lo que necesites pues aquí estaremos para preguntar.
Un consejo, verás que hay algunos escenarios que para calcular “cantidad de tiempo” utilizan “time” en vez de “timestamp” como bien te han aconsejado aquí. Mi consejo es que aunque en algunas situaciones el “time” también serviría contando en minutos, hay situaciones que no sirven y te volverás loco. Resumiendo, siempre “timestamp” y en segundos.

Buena apreciación. Me lo apunto!!
Gracias :wink:

Gracias por vuestras respuestas, la verdad es que me siento un inútil total, porque no se aplicarla, no término entender el funcionamiento de los escenarios avanzados de Jeedom, sus variables… Yo no soy informático, y no sé nada de programación, y por ello desconozco la filosofía de su funcionamiento. Interés tengo por aprender, pero me está resultando difícil encontrar información.
¿Me podéis indicar algún lado donde aprender el funcionamiento de las escenas avanzadas y sus variables en Jeedom, su funcionamiento para nivel de dummy?
Saludos.

en los escenarios tienes varios tipos de bloques y todos son tan básicos como sentencias de gwbasic

te hablaré bastante por encima de los más usados:

el primero es el Si/Entonces/SiNo (IF->THEN->ELSE) que viene a ser los mismo que un orden de tipo si una cosa se cumple entones haz esto, si no, haz esto otro (esta última siempre es opcional)

Por ejemplo supongamos que queremos que jeedom nos envie un mensaje cada vez que se enciende la luz de salón:

Tenemos el objeto que en este ejemplo llamaremos [Casa]][Salón][Luz Salón], nos interesa saber el estado de cambio de on/off de dicho dispositivo por lo que el disparador que utilizaremos en el escenario será [Casa]][Salón][Luz Salón][Estado]. Con esto cada vez que el valor del estado de nuestro objeto cambio a 0 o 1 el escenario se ejecutará.

Ahora vamos a añadir un bloque para comprobar en que estado se encuentra la luz cada vez que la variable [Estado] cambio de valor

para ello añadimos a nuestro escenario un bloque de tipo Si/Entonces/Sino ahora veamos el razonamiento:

vamos a comprobar si la luz está encendida con lo cual el estado de nuestra variable [Casa]][Salón][Luz Salón][Estado] será siempre = 1 por lo que la sentencia queda de la siguiente manera
Si [Casa]][Salón][Luz Salón][Estado] == 1 (aquí le preguntamos a jeedom que evalúe el valor de la variable estado si es = 1 Entonces…) Entonces || message || ¡Atención! la luz del salón ha sido encendida
(El Entonces es el bloque de acciones que realizaremos si la condición se cumple es decir [Casa]][Salón][Luz Salón][Estado] es =1 y lo que le hemos dicho a jeedom que haga es enviar un mensaje (comando message) de alerta dentro del centro de mensajes de Jeedom con el texto que le hemos indicado. Si no se cumple la condición tenemos dos opciones o decirle que haga algo o simplemente que termine la condición. Vamos a suponer que queremos saber cuando la luz se ha apagado pues en el Bloque SINO pondremos message ¡Atención! La luz de salón ha sido apagada. Con esto tendríamos nuestra primera condición totalmente lista.

El segundo es el Bloque Acción, aquí hay poco que explicar es ejecutar el comando que le indiques, sin más según el disparador que le has indicado al escenario.

El Tercero es el Bucle Esto no es más que un contador de 1 a x el For de gwBasic de toda la vida, aquí principalmente podemos usarlo por ejemplo para hacer una transición en dimmers (Simulación de amanecer)

El Cuarto es el En también muy sencillo de entender en x minutos haz esto. Por ejemplo tenemos programado que a las 7:00 de la mañana de todos los días se ponga en marcha el riego. Nuestra primera opción es poner la Acción de activar el riego, acto seguido, como queremos que se pare a los 7 minutos crearemos un bloque de tipo En cuyo tiempo sera de 7 y lo que tiene que hacer es apagar (poner en off) el riego.

Creo que muy a groso modo es lo que debes saber para empezar a pelearte un poco con los escenarios, cualquier cosa pues ya sabes, aquí estamos.

Amen!
Creo que lo has explicado muy bien. Sólo comentar que a diferencia de Fibaro y Eedomus, uno puede manejar el texto que refiere a los dispositivos. Obviamente se puede hacer a través de ventanas pero al poder manejar textos, puedes replicar escenarios con simples copy/pastes.
Por ejemplo, tengo una luz que llamo “Encimera” y otra “Armario” que tengo en “Cocina”. Pues la primera luz será:

#[Cocina]][Encimera][Estado]#, siendo “Estado” un campo que puedes también renombrar y que por defecto tiene el valor 1 o 0 en los dispositivos interruptor típicos pero que puede tener otros valores (también definibles) en otros dispositivos.

y la segunda:

#[Cocina]][Armario][Estado]#

Luego hay que darse cuenta de que los pequeños matices cuentan. Es el único problema del texto.

Para decir que la luz está encendida tienes que poner “== 1”, no vale “= 1”. O para decir, con los dimmer, por ejemplo, diferente a 0, “!= 1”. Esto que no se te olvida cuando lo aprendes, la primera vez te cuesta un mundo (al menos a mí) enterarte.
Hay que tener mucho cuidado con los espacios si te animas y empiezas a hacer copy/pastes.
Por ejemplo, si quieres poner una condición si la luz “Encimera” y la luz “Armario” están encendidas:

Podrías pegar el siguiente texto:

#[Cocina]][Armario][Estado]# == 1 AND #[Cocina]][Armario][Estado]# == 1

Pero si pones AND # en vez de “AND #” sin espacio. No funciona.
Esto que es de perogrullo para los que programan, es llamativo para los que como yo no están acostumbrados de programar.
Esto es un ejemplo evidente pero hay otros más finos como cuando trabajas con variables que un espacio de más te inutiliza toda la condición. Ejemplo. No es lo mismo poner variable(encimera,0) que variable(encimera, 0). Este último espacio hace que no funcione. Lo digo para que no os volvais locos como yo.

Te recomiendo que utilices el Log para ver por qué no funciona. Te costará entender cómo funciona el proceso pero una vez que des con él, es super útil para detectar errores.

Bull, yo creo que tendríamos que hacer un manual sencillo de forma colaborativa para ayudar a todos los que quieren entrar en el mundo Jeedom.

Perdonar que no haya contestado antes, pero he estado unos días fuera y he desconectado del todo de muchas cosas. Ahora de vuelta retornaré el tema y espero poder avanzar, con vuestra ayuda y con un poco de tiempo que saque durante mis vacaciones espero poder avanzar.
Gracias @Bull y @Jokin por vuestras explicaciones de las escenas en Jeedom, me han servido de mucho.
Ahora a ver si lo implemento, ya os comentare mis progresos.