With the Jruby scripting addon, you can!
dynamic_rule.tems:
String Cron_Expr "Cron expression for dynamic rule"
dynamic_rule.rb
require 'openhab'
def dynamic_rule(name, cron_expr, &block)
remove_rule(name)
rule name do
cron cron_expr
run block
end
end
def remove_rule(name)
rules = $se.get('ruleRegistry')
rules.get_all.select { |rule| rule.name.match?(name) }.each { |rule| rules.remove(rule.uid) }
end
rule 'Update cron rule' do
changed Cron_Expr
run do
dynamic_rule('Dynamic cron rule', Cron_Expr) do
# Rule body here
end
end
end
Update the Cron_Expr Item with a valid cron expression and the rule will be recreated with the new value.
Just make sure you use unique names for your rules, otherwise you might delete the wrong one.