Skip to content
This repository has been archived by the owner on May 7, 2020. It is now read-only.

Scripted Rule Support

Simon Kaufmann edited this page May 5, 2017 · 18 revisions

Scripted Rule Support

While there is no proper documentation yet available, I though it's a good idea to collect some knowledge here as a start.

Further readings with much more advanced examples:

IDE

This is how I got the scripted rule support running within the IDE.

Include the following bundles in the launch config:

org.eclipse.smarthome.automation.module.core
org.eclipse.smarthome.automation.api
org.eclipse.smarthome.automation.provider.file
org.eclipse.smarthome.automation.rest
org.eclipse.smarthome.automation.module.script.rulesupport
org.eclipse.smarthome.automation.module.timer
org.eclipse.smarthome.automation.providers
org.eclipse.smarthome.automation.parser.gson
org.eclipse.smarthome.automation.core
org.eclipse.smarthome.automation.module.script

Add this as a VM argument in the launch config:

-Dorg.osgi.framework.bundle.parent=ext 

Scripts are searched for in conf/automation/jsr223.

JavaScript

The following example.js worked for me:

'use strict';

scriptExtension.importPreset("RuleSupport")
scriptExtension.importPreset("RuleSimple")

var sRule = new SimpleRule(){
    execute: function( module, input){
        print("Hello World from JavaScript");
    }
};

sRule.setTriggers([
        new Trigger(
            "aTimerTrigger", 
            "timer.GenericCronTrigger", 
            new Configuration({
                "cronExpression": "0/15 * * * * ?"
            })
        )
    ]);

automationManager.addRule(sRule);

Jython

Download jython-standalone-x.y.z.jar from http://www.jython.org/downloads.html

Add this library to the "Bootstrap entries" on the main page of the launch config by simply putting it's full path there.

The following example.py worked for me:

scriptExtension.importPreset("RuleSupport")
scriptExtension.importPreset("RuleSimple")


class myRule(SimpleRule):
    def execute(self, module, inputs):
        print "Hello World from Jython"

sRule = myRule()
sRule.setTriggers([Trigger("aTimerTrigger", "timer.GenericCronTrigger", Configuration({"cronExpression": "0/15 * * * * ?"}))])

automationManager.addRule(sRule)
Clone this wiki locally