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.
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 gustaMe gusta
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 gustaMe gusta
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 gustaMe gusta