Search code examples
wso2siddhiwso2-cep

CEP query based on date / time of the day


In WSO2 CEP, I made an execution plan that includes the following query: (it will be fired if the temperature exeeds 20 degrees 3 times in a row within 10 seconds)

from MQTTstream[meta_temperature > 20]#window.time(10 sec) 
select count(meta_temperature) as meta_temperature
having meta_temperature > 3
insert into out_temperatureAlarm

How can I achieve that the query is only applied if it is a special time of the day, e.g. 08:00 until 10:00 o'clock?

Is there something that I could put into the query like:

having meta_temperature > 3 and HOUR_OF_THE_DAY BETWEEN 8 and 10

Solution

  • You can use a cron window #window.cron instead of using a time window #window.time. You can specify Cron expression string for desired time periods in Siddhi [1]. Please refer quartz scheduler documentation to get more information on cron expression strings [2].

    [1] https://docs.wso2.com/display/CEP400/Inbuilt+Windows#InbuiltWindows-croncron

    [2] http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger