Jeedom: Trabajando con escenarios, simulador de presencia

    • Tutorial paso a paso para establecer en Jeedom un entramado de escenas que te van a permitir crear un simulador de presencia.

    Hola a todos, en esta nueva entrega vamos a ver un poquito en profundidad el funcionamiento de los escenarios o escenas en Jeedom.  Para ello, y aprovechando que llega la temporada navideña y que a todos nos preocupa el tema de la seguridad, vamos a tratar de configurar un escenario a modo de ejemplo que os sirva para crear vuestro propio simulador de presencia. El cuan complejo lo queráis hacer lo dejo a vuestra imaginación.

    Bien, como comentaba en el párrafo anterior, llegan las tan señaladas fiestas navideñas, días de mucho trasiego, de muchas idas y venidas, y sobre todo días en los que dejamos nuestro hogar a solas muy a menudo. Lamentablemente no todo el mundo cree en el espíritu de la navidad y aprovecha estas fechas para hacer su agosto particular, arruinando las fiestas de más de uno, si amigos, me refiero a los amigos de lo ajeno.

    Simulación de presencia

    Para poder evitar o al menos dificultar que estos amigos o amigas sepan si nuestra vivienda está o no ocupada, vamos a diseñar un sencillo a la par que complejo escenario para controlar que nuestras luces, televisores, equipos de música, funcionen con la intención de simular que estamos en casa. Para empezar daré unas pequeñas pautas para indicaros como funcionan los bloques dentro de un escenario y esto os servirá de guía, no solo para realizar éste, sino muchos otros en el futuro.

    Comencemos: (los plugins)

    Teniendo en cuenta que los disparadores de los escenarios más o menos los sabéis manejar, veamos cómo funciona un escenario a la hora de ejecutar una acción dentro de un bloque. Como en la mayoría de los lenguajes de programación tiene un fundamento estructurado, esto quiere decir que las acciones se ejecutan dentro de los bloques, y que a su vez si esos bloques tienen otros bloques dentro de ellos, solo se ejecutaran si previamente se ejecuta el superior.

    Ahora veamos como aplicar esto a un caso real, nuestro primer escenario de simulación de presencia “casero”.

    En primer lugar veamos qué plugins o complementos vamos a usar y/o necesitar para la realización de dicho escenario:

    Plugins necesarios

    Necesitamos dichos plugins o complementos ya que nuestro escenario se va a basar básicamente en la condición del estado de la alarma, y la hora del atardecer además de controlar el disparador del propio escenario. El plugin telegram es opcional.

    Para activar nuestras luces usaremos el comando “atardecer” que nos concede el plugin meteo. Este comando tiene la peculiaridad de que hará ejecutar nuestro escenario justo a la hora que cada día está previsto el inicio del atardecer en nuestra localidad.

    Para Activar o desactivar nuestro escenario usaremos el plugin Alarma.

    Y cada día a media noche, se volverá a ejecutar nuestro escenario con la rutina de apagado de luces. Dicho esto veamos la construcción de nuestro simulador “casero”.

    Bloque principal o inicial

    Bien, nuestro primer bloque contiene 3 condiciones que se han de cumplir para que se lleve a cabo, que son: que la alarma esté activada, que el atardecer sea real y que el escenario no se haya ejecutado “mecánicamente”. Este último lo explicaré más adelante.

    Bloque 1, inialización de variables y bloque luz principal

    Si la condición se cumple, lo primero que vamos a hacer es crear unas variables para indicar a nuestras luces cuándo deben apagarse de forma totalmente aleatoria. El motivo de incluir el timer en una variable es para enviarnos un mensaje a Telegram para indicarnos a qué horas se ejecutará cada bloque de tiempo, música o cualquiera que sea el dispositivo que incluyáis en vuestra simulación. De vosotros depende de si necesitáis este formato o no.

    Como podéis ver en la imagen, se crean cada una de las variables necesarias para nuestro escenario, y se le da un valor variable entre el tiempo mínimo y el tiempo máximo (en minutos) que queréis que se ejecute cada bloque “En”, si os fijáis bien, hay una variable que simplemente suma el valor de otras dos, esto esta hecho así (quizás hay una forma más limpia, que yo aun desconozco con bloque php) para poder sumar el valor de las dos variables y saber a qué hora se ejecutarán el bloque digamos Luz Salón, ya que tenemos que saber cuántos minutos va durar, primero el arranque, y luego el apagado del primer grupo de luces, en este ejemplo la luz del garaje. Y esto es lo que nos llegaría a Telegram:

    ¡¡¡ Atención !!! El simulador de presencia ha sido iniciado
    La luz del sótano se encenderá a las 17h58 minutos
    La luz del sótano se apagará a las 18h03 minutos,
    a esa misma hora, las 18h03, se encenderán la luz del salón y el simulador de televisión.
    La luz de la zona del televisor se encenderá 5 veces

    Veamos el sub-bloque que controla nuestro primer bloque en más detalle

    Sub-bloque

    Como ya hemos comentado, éste es digamos nuestro bloque principal, el bloque que controla la o las luces que más tiempo van a estar encendidas y/o aquellas de inicio de la simulación. Como veréis, el primer sub-bloque “En” se ejecutará en un intervalo de tiempo aleatorio indicado en la variable. Encenderá nuestra luz del garaje y nos manda un mensaje a Telegram informándonos de este hecho (aprovecho para deciros que los mensajes de telegram son opcionales, yo los uso durante un tiempo prudencial para ver que los bloques se ejecutan cuando y como yo he definido y si no así es más sencillo encontrar dónde puede estar el fallo). Seguidamente y colgando del anterior, tenemos otros sub-bloque “En” que al igual que el anterior se ejecutará en un tiempo aleatorio que se haya definido en la variable. Seguidamente apagará la luz del garaje y encenderá la luz del comedor y el simulador de televisión, en nuestro caso. Cómo apagar estas luces lo mostraré más adelante.

    Bloque intermedio o bloque de encendido aleatorio intermedio

    Ahora veamos nuestro bloque intermedio, aquel que va a controlar las luces que queremos encender entre medias para dar un poco de mayor realismo a la simulación, como pueden ser luces de cocina, baños… etc. 

    Bloque intermedio

    Este bloque es el que más quebraderos de cabeza me dio plantearlo, ya que en un principio pensaba que con un bloque tipo de 1 a x lo tenia resuelto, pero resulta que el bloque “en” en su interior a la hora de realizar el cron del “en”, se convierte en un “comando” por lo que cada vez que hace un loop borra el bloque “En” programado anterior. (Tened esto en cuenta para futuros proyectos). Así que finalmente tiré por lo de siempre, una condición más un contador variable que suma 1 en cada ejecución. El next, loop, while o como queráis llamarlo se realiza al final del bloque con el inicio nuevamente del escenario. En la condición inicial del bloque Si, veis que la condición es si el disparador es el “Atardecer” o “scenario”. Así lo que conseguimos es por un lado que se ejecute la primera vez que nuestro escenario detecte la llegada del atardecer y por otro, cada vez que lanzamos el “Inicio” del escenario el disparador en este caso sería “scenario”.  

    Bloque de cierre o Bloque final 

    Bloque final

    Ahora toca el turno del bloque que apagará nuestras luces principales. En esta ocasión nuestra condición que se han de cumplir ambas son: por un lado que la alarma continúe activa y que el disparador del escenario sea la hora programada “schedule”. Una vez que la condición es cierta, volvemos a ejecutar un par de sub-bloques “En” con la hora de apagado de nuestras luces y otro sub-bloque con la traca final: el apagado de la luz del dormitorio.  Una vez termina el segundo sub-bloque tenéis la ejecución de un comando que tal vez no conozcáis: remove_inat. Con él lo que hacemos es eliminar de un plumazo todos aquellos bloques que tenga hasta el momento programado el escenario.  Como es posible que del bloque anterior tengamos alguna luz pendiente de encender y apagar, directamente lo eliminaríamos.

    Bloque de desactivado

    Bloque de desactivado

    Y ya por último tenemos el bloque que se ejecutará en caso de que lleguemos a casa y desactivemos la alarma. He decidido no controlar que luces estén encendidas porque se supone que si llegamos de noche, es preferible que así queden y ya iremos apagando si lo creemos necesario. No obstante, como veis, vuelvo a ejecutar el remove_init para eliminar cualquier bloque programado pendiente de ejecutar.

    En resumidas cuentas, tenemos un primer bloque SiNo que se activará cuando la alarma este activada y el atardecer sea real; aquí se encienden las luces principales que mantendremos más tiempo encendidas. Seguidamente tenemos el segundo bloque  -llamémosle random- que se encargará de encender aleatoriamente las luces que le indiquemos; un tercer bloque que se ejecutará a media noche y que procederá al apagado aleatorio de luces y encendido de la luz de la habitación. Y por ultimo, el último bloque que solo se ejecutará en caso de que desactivemos la alarma, eliminando cualquier bloque programado previo.

    Y nada más, cualquier duda o lo que necesitéis, como siempre, estaré encantado de responderos.

    Bull

    Nombre en clave Bull, IA desarrollada en un entorno casero con un único objetivo: observar, recopilar y desarrollar todo tipo de tecnología. Tras muchos años en la clandestinidad, resurge con un nuevo código, con el objetivo de ayudar a los seres humanos.


    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *