diff --git a/Core/automation/jsr223/javascript/core/000_startup_delay.js b/Core/automation/jsr223/javascript/core/000_startup_delay.js index a4f3767f..ba2a4c41 100644 --- a/Core/automation/jsr223/javascript/core/000_startup_delay.js +++ b/Core/automation/jsr223/javascript/core/000_startup_delay.js @@ -1,4 +1,5 @@ 'use strict'; + var Thread = Java.type("java.lang.Thread"); var log = Java.type("org.slf4j.LoggerFactory").getLogger("jsr223.javascript.core.startup_delay"); diff --git a/Core/automation/lib/javascript/core/PersistenceExtensions.js b/Core/automation/lib/javascript/core/PersistenceExtensions.js index 40685595..25cde9a1 100644 --- a/Core/automation/lib/javascript/core/PersistenceExtensions.js +++ b/Core/automation/lib/javascript/core/PersistenceExtensions.js @@ -1,9 +1,10 @@ /** + * Functions to aid in using PersistenceExtensions + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; var PersistenceExtensions = Java.type("org.eclipse.smarthome.model.persistence.extensions.PersistenceExtensions"); @@ -171,4 +172,4 @@ var PersistenceExtensions = Java.type("org.eclipse.smarthome.model.persistence.e return null; }; -})(this); \ No newline at end of file +})(this); diff --git a/Core/automation/lib/javascript/core/conditions.js b/Core/automation/lib/javascript/core/conditions.js new file mode 100644 index 00000000..86833521 --- /dev/null +++ b/Core/automation/lib/javascript/core/conditions.js @@ -0,0 +1,39 @@ +/** + * Functions for creating Conditions + * + * Copyright (c) 2019 Contributors to the openHAB Scripters project + * + * @author Helmut Lehmeyer - initial contribution + */ +'use strict'; + +scriptExtension.importPreset("RuleSupport"); + +// Get Triggers and Conditions module output +// http://localhost:8080/rest/module-types + +// Examles: +// see: org.eclipse.smarthome.automation.sample.extension.java.internal.WelcomeHomeRulesProvider.createLightsRule() + +if(ModuleBuilder == undefined)var ModuleBuilder = Java.type("org.eclipse.smarthome.automation.core.util.ModuleBuilder"); + +// ### stateCondition ### +var ItemStateCondition = function(itemName, state, condName){ + return ModuleBuilder.createCondition().withId(getTrName(condName)).withTypeUID("core.ItemStateCondition").withConfiguration( new Configuration({ + "itemName": itemName, + "operator": "=", + "state": state + })).build(); +} +var stateCondition = ItemStateCondition; + +// ### GenericCompareCondition ### +var GenericCompareCondition = function(itemName, state, operator, condName){ + return ModuleBuilder.createCondition().withId(getTrName(condName)).withTypeUID("core.GenericCompareCondition").withConfiguration( new Configuration({ + "itemName": itemName, + "operator": operator,// matches, ==, <, >, =<, => + "state": state + })).build(); +} +//compareCondition("itemName", OFF, "==", "condNameOfCompareCondition") +var compareCondition = GenericCompareCondition; diff --git a/Core/automation/lib/javascript/core/JSRule.js b/Core/automation/lib/javascript/core/rules.js similarity index 89% rename from Core/automation/lib/javascript/core/JSRule.js rename to Core/automation/lib/javascript/core/rules.js index 9125f573..a1252206 100644 --- a/Core/automation/lib/javascript/core/JSRule.js +++ b/Core/automation/lib/javascript/core/rules.js @@ -1,19 +1,21 @@ /** + * Functions for creating rules + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ +'use strict'; -'use strict'; - -se.importPreset("RuleSupport"); //https://www.openhab.org/docs/configuration/jsr223.html#overview -se.importPreset("RuleSimple"); -se.importPreset("RuleFactories"); -se.importPreset("default"); +scriptExtension.importPreset("RuleSupport"); //https://www.openhab.org/docs/configuration/jsr223.html#overview +scriptExtension.importPreset("RuleSimple"); +scriptExtension.importPreset("RuleFactories"); +scriptExtension.importPreset("default"); var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); -load(OPENHAB_CONF+'/automation/lib/javascript/core/helper.js'); -load(OPENHAB_CONF+'/automation/lib/javascript/core/triggersAndConditions.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/utils.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/triggers.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/conditions.js'); //https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html //var StSimpleRule = Java.type("org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleRule"); @@ -150,4 +152,4 @@ return RuleBuilder.create(ruleDto.uid) .build(); } -}) (this); \ No newline at end of file +}) (this); diff --git a/Core/automation/lib/javascript/core/triggersAndConditions.js b/Core/automation/lib/javascript/core/triggersAndConditions.js deleted file mode 100644 index 89a3c08b..00000000 --- a/Core/automation/lib/javascript/core/triggersAndConditions.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Copyright (c) 2019 Contributors to the openHAB Scripters project - * - * @author Helmut Lehmeyer - */ - -'use strict'; -se.importPreset("RuleSupport"); -se.importPreset("RuleFactories"); - -// Get Triggers and Conditions module output -// http://localhost:8080/rest/module-types - -// Examles: -// see: org.eclipse.smarthome.automation.sample.extension.java.internal.WelcomeHomeRulesProvider.createLightsRule() - -if(HashSet == undefined)var HashSet = Java.type("java.util.HashSet"); -if(Visibility == undefined)var Visibility = Java.type("org.eclipse.smarthome.automation.Visibility"); -if(TriggerHandler == undefined)var TriggerHandler = Java.type("org.openhab.core.automation.handler.TriggerHandler"); -if(Trigger == undefined)var Trigger = Java.type("org.eclipse.smarthome.automation.Trigger"); -if(ModuleBuilder == undefined)var ModuleBuilder = Java.type("org.eclipse.smarthome.automation.core.util.ModuleBuilder"); - -//Handlers -> Used Strings for IDs now, so these classes not needed -///if(ChannelEventTriggerHandler == undefined)var ChannelEventTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.ChannelEventTriggerHandler"); -///if(CompareConditionHandler == undefined)var CompareConditionHandler = Java.type("org.openhab.core.automation.internal.module.handler.CompareConditionHandler"); -/////if(GenericEventConditionHandler == undefined)var GenericEventConditionHandler = Java.type("org.openhab.core.automation.internal.module.handler.GenericEventConditionHandler"); -/////if(GenericEventTriggerHandler == undefined)var GenericEventTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.GenericEventTriggerHandler"); -/////if(ItemCommandActionHandler == undefined)var ItemCommandActionHandler = Java.type("org.openhab.core.automation.internal.module.handler.ItemCommandActionHandler"); -///if(ItemCommandTriggerHandler == undefined)var ItemCommandTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.ItemCommandTriggerHandler"); -///if(ItemStateConditionHandler == undefined)var ItemStateConditionHandler = Java.type("org.openhab.core.automation.internal.module.handler.ItemStateConditionHandler"); -///if(ItemStateTriggerHandler == undefined)var ItemStateTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.ItemStateTriggerHandler"); -/////if(RuleEnablementActionHandler == undefined)var RuleEnablementActionHandler = Java.type("org.openhab.core.automation.internal.module.handler.RuleEnablementActionHandler"); -/////if(RunRuleActionHandler == undefined)var RunRuleActionHandler = Java.type("org.openhab.core.automation.internal.module.handler.RunRuleActionHandler"); -/////if(DayOfWeekConditionHandler == undefined)var DayOfWeekConditionHandler = Java.type("org.openhab.core.automation.internal.module.handler.DayOfWeekConditionHandler"); -///if(GenericCronTriggerHandler == undefined)var GenericCronTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.GenericCronTriggerHandler"); -/////if(TimeOfDayTriggerHandler == undefined)var TimeOfDayTriggerHandler = Java.type("org.openhab.core.automation.internal.module.handler.TimeOfDayTriggerHandler"); - - - - - - -// ### StartupTrigger ### DOES NOT WORK!! TODO?! -/* -var _StartupTriggerHandlerFactory = new TriggerHandlerFactory(){ - get: function(trigger){ - logWarn(" -#### #### #### #### #### get trigger "+__LINE__, trigger); - //return _StartupTriggerHandlerFactory.handler(trigger); - return new TriggerHandler(){ - setRuleEngineCallback: function(rule_engine_callback){ - logWarn(" -#### TriggerHandler setRuleEngineCallback "+__LINE__, " setRuleEngineCallback "); - rule_engine_callback.triggered(trigger, {}); - }, - dispose: function(){ - logWarn(" -#### TriggerHandler dispose "+__LINE__, " dispose "); - } - }; - }, - ungetHandler: function( module, ruleUID, handler){ - logWarn(" -#### ungetHandler "+__LINE__, module); - logWarn(" -#### ungetHandler "+__LINE__, ruleUID); - logWarn(" -#### ungetHandler "+__LINE__, handler); - }, - dispose: function(){ - logWarn(" -#### dispose "+__LINE__, " dispose "); - } -}; -var STARTUP_MODULE_ID = "jsr223.StartupTrigger"; - -automationManager.addTriggerType(new TriggerType( - STARTUP_MODULE_ID, - [], - "the rule is activated", - "Triggers when a rule is activated the first time", - new HashSet(), - Visibility.VISIBLE, - [])); - -automationManager.addTriggerHandler(STARTUP_MODULE_ID, _StartupTriggerHandlerFactory); -*/ -var StartupTrigger = function(triggerName){ - //DOES NOT WORK - TODO: return new Trigger( getTrName(triggerName), "jsr223.StartupTrigger", new Configuration()); -} - -// ### ChannelEventTriggerHandler ### -// Works like: ChannelEventTrigger('astro:sun:local:rise#event', 'START') -var ChannelEventTrigger = function(channel, event, triggerName) { - return ModuleBuilder.createTrigger().withId(getTrName(triggerName)).withTypeUID("core.ChannelEventTrigger").withConfiguration( new Configuration({ - "channelUID": channel, - "event": event - })).build(); -} - -// ### ChangedEventTrigger ### -var ItemStateChangeTrigger = function(itemName, oldState, newState, triggerName){ - return ModuleBuilder.createTrigger().withId(getTrName(triggerName)).withTypeUID("core.ItemStateChangeTrigger").withConfiguration( new Configuration({ - "itemName": itemName, - "state": newState, - "oldState": oldState - })).build(); -} -var ChangedEventTrigger = ItemStateChangeTrigger; - - -// ### UpdatedEventTrigger ### -var ItemStateUpdateTrigger = function(itemName, state, triggerName){ - return ModuleBuilder.createTrigger().withId(getTrName(triggerName)).withTypeUID("core.ItemStateUpdateTrigger").withConfiguration( new Configuration({ - "itemName": itemName, - "state": state - })).build(); -} -var UpdatedEventTrigger = ItemStateUpdateTrigger; - - -// ### CommandEventTrigger ### -var ItemCommandTrigger = function(itemName, command, triggerName){ - //logWarn("#### ItemCommandTrigger "+__LINE__, triggerName); - return ModuleBuilder.createTrigger().withId(getTrName(triggerName)).withTypeUID("core.ItemCommandTrigger").withConfiguration( new Configuration({ - "itemName": itemName, - "command": command - })).build(); -} -var CommandEventTrigger = ItemCommandTrigger; - -// ### TimerTrigger ### -//!!!!!!!! timer.GenericCronTrigger !!!!!!!!!!!!! -var GenericCronTrigger = function(expression, triggerName){ - //logWarn("#### GenericCronTrigger "+__LINE__, expression, getTrName(triggerName), Trigger); // see: org.eclipse.smarthome.automation.sample.extension.java.internal.WelcomeHomeRulesProvider.createLightsRule() - return ModuleBuilder.createTrigger().withId(getTrName(triggerName)).withTypeUID("timer.GenericCronTrigger").withConfiguration( new Configuration({ - "cronExpression": expression - })).build(); -} -var TimerTrigger = GenericCronTrigger; - - -// ### stateCondition ### -var ItemStateCondition = function(itemName, state, condName){ - return ModuleBuilder.createCondition().withId(getTrName(condName)).withTypeUID("core.ItemStateCondition").withConfiguration( new Configuration({ - "itemName": itemName, - "operator": "=", - "state": state - })).build(); -} -var stateCondition = ItemStateCondition; - -// ### GenericCompareCondition ### -var GenericCompareCondition = function(itemName, state, operator, condName){ - return ModuleBuilder.createCondition().withId(getTrName(condName)).withTypeUID("core.GenericCompareCondition").withConfiguration( new Configuration({ - "itemName": itemName, - "operator": operator,// matches, ==, <, >, =<, => - "state": state - })).build(); -} -//compareCondition("itemName", OFF, "==", "condNameOfCompareCondition") -var compareCondition = GenericCompareCondition; - - - -var getTrName = function(trn){ - return trn == undefined || trn == null || trn == "" ? uuid.randomUUID() + "-" + me.replace(/[^\w]/g, "-") : trn; - //return trn == undefined || trn == null || trn == "" ? uuid.randomUUID() : trn; -} \ No newline at end of file diff --git a/Core/automation/lib/javascript/core/helper.js b/Core/automation/lib/javascript/core/utils.js similarity index 91% rename from Core/automation/lib/javascript/core/helper.js rename to Core/automation/lib/javascript/core/utils.js index fd6d0476..031919ec 100644 --- a/Core/automation/lib/javascript/core/helper.js +++ b/Core/automation/lib/javascript/core/utils.js @@ -1,10 +1,12 @@ /** + * Utility functions and variables + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ +'use strict'; -'use strict'; var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); var automationPath = OPENHAB_CONF+'/automation/'; var mainPath = automationPath + 'lib/javascript/core/'; @@ -27,14 +29,16 @@ var IOUtils = Java.type("org.apache.commons.io.IOUtils"); - //Types + //Types + /* included in "default" preset var UnDefType = Java.type("org.eclipse.smarthome.core.types.UnDefType"); var StringListType = Java.type("org.eclipse.smarthome.core.library.types.StringListType"); var RawType = Java.type("org.eclipse.smarthome.core.library.types.RawType"); var RewindFastforwardType = Java.type("org.eclipse.smarthome.core.library.types.RewindFastforwardType"); var PlayPauseType = Java.type("org.eclipse.smarthome.core.library.types.PlayPauseType"); var NextPreviousType = Java.type("org.eclipse.smarthome.core.library.types.NextPreviousType"); - + */ + //Time JAVA 7 joda var DateTime = Java.type("org.joda.time.DateTime"); //Time JAVA 8 @@ -59,6 +63,7 @@ context.automationPath = automationPath; context.mainPath = mainPath; + /* included in "default" preset //Todo missing: context.UnDefType = UnDefType; context.OPEN = OpenClosedType.OPEN; @@ -69,7 +74,8 @@ context.PAUSE = PlayPauseType.PAUSE; context.NEXT = NextPreviousType.NEXT; context.PREVIOUS = NextPreviousType.PREVIOUS; - + */ + context.uuid = uuid; context.logInfo = function(type , value) { @@ -103,7 +109,7 @@ return isUndefinedState(item.state); }; context.isUndefinedStr = function(itemStr) { - return ir.getItem(itemStr) ? isUndefinedState(ir.getItem(itemStr).state) : true; + return itemRegistry.getItem(itemStr) ? isUndefinedState(itemRegistry.getItem(itemStr).state) : true; }; context.isUndefinedState = function(itemState) { @@ -113,8 +119,8 @@ context.getItem = function(it) { try { - //print("################## "+ir.getItem(it)); - return (typeof it === 'string' || it instanceof String) ? ir.getItem(it) : it; + //print("################## "+itemRegistry.getItem(it)); + return (typeof it === 'string' || it instanceof String) ? itemRegistry.getItem(it) : it; }catch(err) { context.logError("getItem "+__LINE__, err); } @@ -195,7 +201,7 @@ try { events.postUpdate(item, value); }catch(err) { - context.logError("helper.js postUpdate " + __LINE__ + ". Item: '" + item + "' with value: '" + value + "' ' Error:" + err); + context.logError("utils.js postUpdate " + __LINE__ + ". Item: '" + item + "' with value: '" + value + "' ' Error:" + err); } }; @@ -203,7 +209,7 @@ try { events.sendCommand(item, value); }catch(err) { - context.logError("helper.js sendCommand " + __LINE__ + ". Item: '" + item + "' with value: '" + value + "' ' Error:" + err); + context.logError("utils.js sendCommand " + __LINE__ + ". Item: '" + item + "' with value: '" + value + "' ' Error:" + err); } }; @@ -216,7 +222,7 @@ //NOT TESTED YET: storeStates(Item...); context.storeStates = function(item) { - events.storeStates((typeof item === 'string' || item instanceof String) ? ir.getItem(item) : item); + events.storeStates((typeof item === 'string' || item instanceof String) ? itemRegistry.getItem(item) : item); }; //NOT TESTED YET: restoreStates(Map); context.restoreStates = function(mapArray) { @@ -227,7 +233,7 @@ try{ return ScriptExecution.createTimer(time, runnable); }catch(err) { - context.logError("helper.js createTimer " + __LINE__ + " Error:" + err); + context.logError("utils.js createTimer " + __LINE__ + " Error:" + err); } }; @@ -253,15 +259,15 @@ t.evLoops[tCountLocal].purge(); } }catch(err) { - context.logError("helper.js setTimeout " + __LINE__ + " Error:" + err); + context.logError("utils.js setTimeout " + __LINE__ + " Error:" + err); } }, millis); return t.evLoops[t.timerCount]; }else{ - context.logWarn("helper.js setTimeout " + __LINE__ + "Please use like: setTimeout(function, milliseconds, arguments)"); + context.logWarn("utils.js setTimeout " + __LINE__ + "Please use like: setTimeout(function, milliseconds, arguments)"); } }catch(err) { - context.logError("helper.js setTimeout " + __LINE__ + " Error:" + err); + context.logError("utils.js setTimeout " + __LINE__ + " Error:" + err); } }; @@ -414,7 +420,7 @@ /** - * SIEHE ### getActions ### in helper.js + * SIEHE ### getActions ### in utils.js * sendHttpGetRequest(String url) * sendHttpGetRequest(String url, int timeout) * sendHttpPutRequest(String url) @@ -503,7 +509,7 @@ }); return jsArray; }catch(err) { - context.logError("helper.js javaCollectionToArray " + __LINE__ + " Error:" + err); + context.logError("utils.js javaCollectionToArray " + __LINE__ + " Error:" + err); } return null; @@ -514,7 +520,7 @@ if(val != undefined && val == key+"")return true; }; }catch(err) { - context.logError("helper.js includes " + __LINE__ + " Error:" + err); + context.logError("utils.js includes " + __LINE__ + " Error:" + err); return false; } return false; diff --git a/Script Examples/Javascript/AccessibleFromAutomation.js b/Script Examples/Javascript/AccessibleFromAutomationTest.js similarity index 84% rename from Script Examples/Javascript/AccessibleFromAutomation.js rename to Script Examples/Javascript/AccessibleFromAutomationTest.js index d6597caf..b67e89a2 100644 --- a/Script Examples/Javascript/AccessibleFromAutomation.js +++ b/Script Examples/Javascript/AccessibleFromAutomationTest.js @@ -1,24 +1,26 @@ /** + * Tests for checking the availability of objects provided by the built in scriptExtensions + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; -var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // most this is /etc/openhab2 -load(OPENHAB_CONF+'/automation/lib/javascript/core/helper.js'); -load(OPENHAB_CONF+'/automation/lib/javascript/core/triggersAndConditions.js'); +var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // repository installation: /etc/openhab2, manual installation: /opt/openhab2/conf +load(OPENHAB_CONF+'/automation/lib/javascript/core/utils.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/triggers.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/conditions.js'); -logInfo("################# AccessibleFromAutomation.js ##################"); +logInfo("################# AccessibleFromAutomationTest.js ##################"); -var rSup = se.importPreset("RuleSupport"); -var rSim = se.importPreset("RuleSimple"); -var rFac = se.importPreset("RuleFactories"); -var rDef = se.importPreset("default"); -var rMed = se.importPreset("media"); +var rSup = scriptExtension.importPreset("RuleSupport"); +var rSim = scriptExtension.importPreset("RuleSimple"); +var rFac = scriptExtension.importPreset("RuleFactories"); +var rDef = scriptExtension.importPreset("default"); +var rMed = scriptExtension.importPreset("media"); -logWarn(" -- ScriptExtension.presets "+__LINE__, se.presets); +logWarn(" -- scriptExtension.presets "+__LINE__, scriptExtension.presets); logInfo(" reachable"+__LINE__, "###############################################"); logInfo(" reachable"+__LINE__, "SimpleRule", SimpleRule); @@ -105,4 +107,3 @@ logInfo(" services "+__LINE__, "things", things); logInfo(" services "+__LINE__, "events", events); logInfo(" services "+__LINE__, "rules", rules); logInfo(" services "+__LINE__, "###############################################"); - diff --git a/Script Examples/Javascript/ActionExamples.js b/Script Examples/Javascript/ActionExamples.js index 24da8425..313b50c2 100644 --- a/Script Examples/Javascript/ActionExamples.js +++ b/Script Examples/Javascript/ActionExamples.js @@ -1,18 +1,18 @@ /** + * Example rules that utilize Actions + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // most this is /etc/openhab2 -load(OPENHAB_CONF+'/automation/lib/javascript/core/JSRule.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/rules.js'); var me = "ActionExamples.js"; logInfo("################# "+me+" ##################"); - var myRule = JSRule({ name: me+" Busevents", description: "TEST L:"+__LINE__, @@ -38,7 +38,7 @@ var myRule = JSRule({ logInfo("################ "+me+" Line: "+__LINE__+" #################"); //logWarn(" -- oh ", oh); - logInfo("################ "+me+" Line: "+__LINE__+" #################"); + //logInfo("################ "+me+" Line: "+__LINE__+" #################"); logWarn(" -- Rule ", Rule); logInfo("################ "+me+" Line: "+__LINE__+" #################"); @@ -377,4 +377,4 @@ JSRule({ } -}); \ No newline at end of file +}); diff --git a/Script Examples/Javascript/HTTPRequestExamples.js b/Script Examples/Javascript/HTTPRequestExamples.js index 5bccffe4..05e028c9 100644 --- a/Script Examples/Javascript/HTTPRequestExamples.js +++ b/Script Examples/Javascript/HTTPRequestExamples.js @@ -1,12 +1,13 @@ /** + * Examples of rules that utilize HTTP Actions + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; -load(Java.type("java.lang.System").getenv("OPENHAB_CONF")+'/automation/lib/javascript/core/JSRule.js'); +load(Java.type("java.lang.System").getenv("OPENHAB_CONF")+'/automation/lib/javascript/core/rules.js'); var me = "HTTPRequestExamples.js"; logInfo("################# "+me+" ##################"); @@ -82,4 +83,3 @@ JSRule({ } }); - diff --git a/Script Examples/Javascript/itemTest.js b/Script Examples/Javascript/ItemTest.js similarity index 88% rename from Script Examples/Javascript/itemTest.js rename to Script Examples/Javascript/ItemTest.js index ca9c9eb9..bfc06a33 100644 --- a/Script Examples/Javascript/itemTest.js +++ b/Script Examples/Javascript/ItemTest.js @@ -1,137 +1,154 @@ -/** - * Copyright (c) 2019 Contributors to the openHAB Scripters project - * - * @author Helmut Lehmeyer - */ - -'use strict'; -var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // most this is /etc/openhab2 -load(OPENHAB_CONF+'/automation/lib/javascript/core/JSRule.js'); - -var me = "itemTest.js"; -logInfo("################# "+me+" ##################"); - -//var count=0; - -JSRule({ - name: me+" L"+__LINE__, - description: "Set Items"+__LINE__, - triggers: [ - TimerTrigger("0/5 * * * * ?")//, //alle 15 sec - //TimerTrigger("0/15 * * * * ?"), //alle 15 sec - //TimerTrigger("0 0/5 * * * ?"), //alle 5 Minuten - //TimerTrigger("53 0 8 * * ?") //8:00:53 - ], - execute: function( module, input){ - logInfo("################ "+me+" Line: "+__LINE__+" #################"); - //logInfo("################ postUpdate:",postUpdate); - //logInfo("################ sendCommand:",sendCommand); - //logInfo("################ events.sendCommand:",events.sendCommand); - //logInfo("################ events.storeStates:",events.storeStates); - - //https://community.openhab.org/t/curl-and-executecommandline/27184 - //var image = executeCommandLineAndWaitResponse("bash "+ automationPath + "getImage.sh https://loremflickr.com/320/240&"+count++, 5000); - //var currentPath = executeCommandLineAndWaitResponse("bash " + automationPath + "getFolder.sh", 1000); - //logInfo("################ currentPath:"+currentPath); - //logInfo("################ OFF:",OFF); - //logInfo("################ PREVIOUS,PAUSE,PLAY,NEXT:",PREVIOUS,PAUSE,PLAY,NEXT); - //logInfo("################ UP,DOWN,STOP:",UP,DOWN,STOP); - //logInfo("################ OpenClosedType:",OpenClosedType); - //logInfo("################ OPEN,CLOSE:",OPEN,CLOSED); - //logInfo("################ HSBType:",HSBType); - //logInfo("################ PercentType:",PercentType); - //logInfo("################ StringListType:",StringListType); - //logInfo("################ CallType:",CallType);// old oh1 style does not work anymore - //logInfo("################ Color_Item:",updateIfUninitialized("Color_Item")); - - //https://community.openhab.org/t/type-conversions/32684 - - //## Call //ONLY postUpdate?! - //var sl = new StringListType("017922398##0919162558"); - var sl = new StringListType("017922398,0919162558"); - postUpdate("Call_Item", ["017922399","0919162559"] ); - postUpdate("Call_Item", "017922398,0919162558" ); - postUpdate("Call_Item", sl ); - - //################ - //## Color - var h = new DecimalType(11.0); - var s = new PercentType(77); - var v = new PercentType(99); - var hsv = new HSBType(h,s,v); - sendCommand("Color_Item", hsv); - sendCommand("Color_Item", new PercentType(getRandom100())); - sendCommand("Color_Item", OFF); - sendCommand("Color_Item", new HSBType(getRandom100() + "," + getRandom100() + "," + getRandom100()));//as String - sendCommand("Color_Item", new PercentType(getRandom100()+""));//as String - sendCommand("Color_Item","ON");//as String - //Example for conversion to 8-bit representation - var Color_Item = getItem("Color_Item"); - var hsvs = new HSBType( Color_Item.state ); - logInfo("################ Color_Item.state:", Color_Item.state); - var red = Math.round(hsvs.red * 2.55); - var green = Math.round(hsvs.green * 2.55); - var blue = Math.round(hsvs.blue * 2.55); - logInfo("################ red, green, blue:", red + "," + green + "," + blue); - - //################ - //## Contact - postUpdate("Contact_Item", getRandom2str([OPEN,CLOSED])); - - //################ - //## DateTime - //Format: '2018-09-11T11:21:17.029+0200' - postUpdate("DateTime_Item", isoDateTimeString()); - - //################ - //## Dimmer - postUpdate("Dimmer_Item", getRandom100()); - - //################ - //## Group - //postUpdate("Group_item", ""); - - //################ - //## Image - //postUpdate("Image_item", ""); - - //################ - //## Location - postUpdate("Location_Item", new PointType("52.5200066,13.4049540")); - - //################ - //## Number - postUpdate("Number_Item", getRandom100()); - - //################ - //## Player - sendCommand("Player_Item", getRandom4str([PREVIOUS,PAUSE,PLAY,NEXT])); - - //################ - //## Rollershutter - sendCommand("Rollershutter_Item", getRandom4str([UP,DOWN,STOP,getRandom100()])); - - //################ - //## String - postUpdate("String_Item", getRandom2str(["str1","str2"])); - - //################ - //## Switch - postUpdate("Switch_Item", getRandom2str([ON,OFF])); - } -}); - -var getRandom254 = function(){ - return Math.floor(Math.random() * 255); -} -var getRandom100 = function(){ - return Math.floor(Math.random() * 100); -} - -var getRandom2str = function(str){ - return Math.random() > 0.5 ? str[0] : str[1]; -} -var getRandom4str = function(str){ - return Math.random() > 0.5 ? getRandom2str([str[0], str[1]]) : getRandom2str([str[2], str[3]]); -} - +/** + * Test rules testing Item functionality + * + * Copyright (c) 2019 Contributors to the openHAB Scripters project + * + * @author Helmut Lehmeyer - initial contribution + */ + +/* +REQUIRES: +Call Call_Item +Color Color_Item +Contact Contact_Item +DateTime DateTime_Item +Dimmer Dimmer_Item +Location Location_Item +Number Number_Item +Player Player_Item +Rollershutter Rollershutter_Item +String String_Item +Switch Switch_Item +*/ +'use strict'; + +var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // most this is /etc/openhab2 +load(OPENHAB_CONF+'/automation/lib/javascript/core/rules.js'); + +var me = "ItemTest.js"; +logInfo("################# "+me+" ##################"); + +//var count=0; + +JSRule({ + name: me+" L"+__LINE__, + description: "Set Items"+__LINE__, + triggers: [ + TimerTrigger("0/5 * * * * ?")//, //alle 5 sec + //TimerTrigger("0/15 * * * * ?"), //alle 15 sec + //TimerTrigger("0 0/5 * * * ?"), //alle 5 Minuten + //TimerTrigger("53 0 8 * * ?") //8:00:53 + ], + execute: function( module, input){ + logInfo("################ "+me+" Line: "+__LINE__+" #################"); + //logInfo("################ postUpdate:",postUpdate); + //logInfo("################ sendCommand:",sendCommand); + //logInfo("################ events.sendCommand:",events.sendCommand); + //logInfo("################ events.storeStates:",events.storeStates); + + //https://community.openhab.org/t/curl-and-executecommandline/27184 + //var image = executeCommandLineAndWaitResponse("bash "+ automationPath + "getImage.sh https://loremflickr.com/320/240&"+count++, 5000); + //var currentPath = executeCommandLineAndWaitResponse("bash " + automationPath + "getFolder.sh", 1000); + //logInfo("################ currentPath:"+currentPath); + //logInfo("################ OFF:",OFF); + //logInfo("################ PREVIOUS,PAUSE,PLAY,NEXT:",PREVIOUS,PAUSE,PLAY,NEXT); + //logInfo("################ UP,DOWN,STOP:",UP,DOWN,STOP); + //logInfo("################ OpenClosedType:",OpenClosedType); + //logInfo("################ OPEN,CLOSE:",OPEN,CLOSED); + //logInfo("################ HSBType:",HSBType); + //logInfo("################ PercentType:",PercentType); + //logInfo("################ StringListType:",StringListType); + //logInfo("################ CallType:",CallType);// old oh1 style does not work anymore + //logInfo("################ Color_Item:",updateIfUninitialized("Color_Item")); + + //https://community.openhab.org/t/type-conversions/32684 + + //## Call //ONLY postUpdate?! + //var sl = new StringListType("017922398##0919162558"); + var sl = new StringListType("017922398,0919162558"); + postUpdate("Call_Item", ["017922399","0919162559"] ); + postUpdate("Call_Item", "017922398,0919162558" ); + postUpdate("Call_Item", sl ); + + //################ + //## Color + var h = new DecimalType(11.0); + var s = new PercentType(77); + var v = new PercentType(99); + var hsv = new HSBType(h,s,v); + sendCommand("Color_Item", hsv); + sendCommand("Color_Item", new PercentType(getRandom100())); + sendCommand("Color_Item", OFF); + sendCommand("Color_Item", new HSBType(getRandom360() + "," + getRandom100() + "," + getRandom100()));//as String + sendCommand("Color_Item", new PercentType(getRandom100()+""));//as String + sendCommand("Color_Item","ON");//as String + //Example for conversion to 8-bit representation + var Color_Item = itemRegistry.getItem("Color_Item"); + var hsvs = new HSBType( Color_Item.state ); + logInfo("################ Color_Item.state:", Color_Item.state); + var red = Math.round(hsvs.red * 2.55); + var green = Math.round(hsvs.green * 2.55); + var blue = Math.round(hsvs.blue * 2.55); + logInfo("################ red, green, blue:", red + "," + green + "," + blue); + + //################ + //## Contact + postUpdate("Contact_Item", getRandom2str([OPEN,CLOSED])); + + //################ + //## DateTime + //Format: '2018-09-11T11:21:17.029+0200' + postUpdate("DateTime_Item", isoDateTimeString()); + + //################ + //## Dimmer + postUpdate("Dimmer_Item", getRandom100()); + + //################ + //## Group + //postUpdate("Group_item", ""); + + //################ + //## Image + //postUpdate("Image_item", ""); + + //################ + //## Location + postUpdate("Location_Item", new PointType("52.5200066,13.4049540")); + + //################ + //## Number + postUpdate("Number_Item", getRandom100()); + + //################ + //## Player + sendCommand("Player_Item", getRandom4str([PREVIOUS,PAUSE,PLAY,NEXT])); + + //################ + //## Rollershutter + sendCommand("Rollershutter_Item", getRandom4str([UP,DOWN,STOP,getRandom100()])); + + //################ + //## String + postUpdate("String_Item", getRandom2str(["str1","str2"])); + + //################ + //## Switch + postUpdate("Switch_Item", getRandom2str([ON,OFF])); + } +}); + +var getRandom254 = function(){ + return Math.floor(Math.random() * 255); +} +var getRandom100 = function(){ + return Math.floor(Math.random() * 100); +} + +var getRandom2str = function(str){ + return Math.random() > 0.5 ? str[0] : str[1]; +} +var getRandom4str = function(str){ + return Math.random() > 0.5 ? getRandom2str([str[0], str[1]]) : getRandom2str([str[2], str[3]]); +} + diff --git a/Script Examples/Javascript/SimpleRuleExamples.js b/Script Examples/Javascript/SimpleRuleExamples.js index bc4d7739..19c5a502 100644 --- a/Script Examples/Javascript/SimpleRuleExamples.js +++ b/Script Examples/Javascript/SimpleRuleExamples.js @@ -1,14 +1,16 @@ /** + * Examples of rules + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; var OPENHAB_CONF = Java.type("java.lang.System").getenv("OPENHAB_CONF"); // most this is /etc/openhab2 -load(OPENHAB_CONF+'/automation/lib/javascript/core/JSRule.js'); +load(OPENHAB_CONF+'/automation/lib/javascript/core/rules.js'); +var me = "SimpleRuleExamples.js"; logInfo("################# SimpleRuleExamples.js ##################", TimerTrigger); //### Example 1: Default spelling, not simplified diff --git a/Script Examples/Javascript/TimerExample.js b/Script Examples/Javascript/TimerExample.js index 986ba03f..58528bcc 100644 --- a/Script Examples/Javascript/TimerExample.js +++ b/Script Examples/Javascript/TimerExample.js @@ -1,13 +1,13 @@ /** + * Examples of rules that utilize GenericCron Trigger + * * Copyright (c) 2019 Contributors to the openHAB Scripters project * - * @author Helmut Lehmeyer + * @author Helmut Lehmeyer - initial contribution */ - 'use strict'; -load(Java.type("java.lang.System").getenv("OPENHAB_CONF")+'/automation/lib/javascript/core/JSRule.js'); - +load(Java.type("java.lang.System").getenv("OPENHAB_CONF")+'/automation/lib/javascript/core/rules.js'); var me = "TimerExample.js"; logInfo("################# "+me+" ##################"); @@ -32,4 +32,3 @@ JSRule({ } }); -