OpenHAB #13 (Archivo home.rules)

En el post anterior añadimos un código a un nuevo archivo llamado home.rules. En él estarán las acciones que debería tomar nuestra central domótica en base a los datos que obtiene de los diferentes sensores de la casa.

Podemos tener varios archivos .rules como por ejemplo persianas.rules, luces.rules o vacaciones.rules. De ésta forma es más sencillo encontrar una norma que si las tuviéramos todas incluidas en un mismo archivo. El único requisito es que se encuentren dentro de la carpeta /rules.

Cada norma dentro de este archivo debe tener el siguiente formato:

rule "<Nombre de la norma>"
when
    <Condición1> [or <Condicion2> [or ...]]
then
    <Bloque de código>
end

Empecemos con una regla simple:

//First rule: Hacer que un interruptor funcione como un pulsador
rule "Pulsador por un segundo"
when
    Item GDOOR received update ON
then
    Thread::sleep(1000)
    sendCommand(GDOOR, OFF)
end

Cuando el pulsador recibe el estado ON, mantenemos una espera de 1 segundo y automáticamente enviamos el comando OFF para que vuelva al estado anterior

También podemos hacer que OpenHAB nos envíe una notificación al móvil cuando alguno de nuestros dispositivos reciba un cambio de estado:

//Second rule: Enviar notificación si un dispositivo se conecta a la WiFi
rule "Galaxy at home"
when
    Item phone2 received update ON
then
    sendBroadcastNotification("Galaxy S3 conectado a WiFi")
end

Por último hay una forma para que se envíe una acción a una hora concreta del día:

// Third rule: Encender leds RGB a una hora específica
rule "RGB ON"
when
    Time cron " 0 10 21 * * MON,TUE,WED,THU,FRI *"
then
    var i =0
    while((i=i+1) <100) {
        RGBvalues= i +";"+ i +";"+ i +";"
        sendCommand(RGB1String, RGBvalues)
        Thread::sleep(500)
    }
end

En ésta norma tenemos el «Time cron» que es el disparador para una hora específica. Concretamente a las 21:10 horas de cada día excepto sábados y domingos se activará ésta norma.

Dentro de las comillas hay varios valores que se corresponden con:

  • Segundos –> «0»
  • Minutos –> «10»
  • Horas –> «21»
  • Días del més –> «*» (Todos los días del més)
  • Més –> «*» (Todos los meses)
  • Días de la semana –>  MON,TUE,WED,THU,FRI (De lunes a viernes)
  • Año –> «*» (Todos los años)

Esta última es opcional con lo que nos podría funcionar igualmente si quitamos el último asterisco.

A la hora programada los leds se iluminarán aumentando su intensidad progresivamente cada medio segundo.

 

3 Comentarios Agrega el tuyo

  1. diego godoy aranda dice:

    Yo hice la medición de un sensor de gas con gas el dato hasta al momento se publica sin ningún problema y diseñe la rule para que muestre con una cadena de texto si el nivel de gas si es bajo medio alto o no se detecta nada, sin embargo no se ejecuta nada en la regla al cargar nuevamente la interfaz de usuario que estaré haciendo mal

    Me gusta

    1. recretron dice:

      A la hora de crear una nueva automatización recomiendo crear un archivo nuevo (en tu caso podría ser gas.rules) Una vez creado el archivo Openhab intentará ejecutarlo y si hay algún error semántico o de cualquier otro tipo nos mostrará un error en el log.

      Me gusta

      1. diego godoy aranda dice:

        Pues en base a lo que dices eh revisado el log mientras publico los datos para observar alguno error, sin embargo no sale ninguno solo el cambio numérico de los sensores, aunque lo arregle cambiando la programación del arduino haciendo que publique un cadena de texto, aunque me gustaría igual saber porque las rules que diseñe no están funcionando

        Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s