Skip to content

Commit

Permalink
[jsscripting] Upgrade openhab-js to 2.0.4 (openhab#13565)
Browse files Browse the repository at this point in the history
Fixes openhab#13563.

Signed-off-by: Florian Hotze <florianh_dev@icloud.com>
  • Loading branch information
florian-h05 authored and psmedley committed Feb 23, 2023
1 parent dc1d1d7 commit edf00e7
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 9 deletions.
61 changes: 53 additions & 8 deletions bundles/org.openhab.automation.jsscripting/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,9 +428,6 @@ thing.setEnabled(false);
The actions namespace allows interactions with openHAB actions.
The following are a list of standard actions.

Additional actions provided by user installed addons can be accessed using their common name on the actions name space
(example: `actions.Pushsafer.pushsafer(...)`)

See [openhab-js : actions](https://openhab.github.io/openhab-js/actions.html) for full API documentation and additional actions.

#### Audio Actions
Expand Down Expand Up @@ -492,32 +489,80 @@ Replace `<url>` with the request url.
See [openhab-js : actions.ScriptExecution](https://openhab.github.io/openhab-js/actions.html#.ScriptExecution) for complete documentation.

```javascript
let now = time.ZonedDateTime.now();
var now = time.ZonedDateTime.now();

// Function to run when the timer goes off.
function timerOver () {
console.info('The timer is over.');
}

// Create the Timer.
this.myTimer = actions.ScriptExecution.createTimer('My Timer', now.plusSeconds(10), timerOver);
var myTimer = actions.ScriptExecution.createTimer('My Timer', now.plusSeconds(10), timerOver);

// Cancel the timer.
this.myTimer.cancel();
myTimer.cancel();

// Check whether the timer is active. Returns true if the timer is active and will be executed as scheduled.
let active = this.myTimer.isActive();
var active = myTimer.isActive();

// Reschedule the timer.
this.myTimer.reschedule(now.plusSeconds(5));
myTimer.reschedule(now.plusSeconds(5));
```

If you need to pass some variables to the timer, there are two options to do so:

**Use a function generator** <!-- markdownlint-disable-line MD036 -->

This allows you to pass variables to the timer‘s callback function at timer creation.
The variables can not be mutated after the timer function generator was used to create the function.

```javascript
var now = time.ZonedDateTime.now();

// Function to run when the timer goes off.
function timerOver (myVariable) {
return function () {
console.info('The timer is over. myVariable is: ' + myVariable);
}
}

// Create the Timer.
var myTimer = actions.ScriptExecution.createTimer('My Timer', now.plusSeconds(10), timerOver('Hello world!'));
```

**Pass a single variable to the timer** <!--markdownlint-disable-line MD036 -->

This allows you to pass a single variable to the timer's callback function.
Variables can be mutated (changed) after the timer has been created.
Be aware that this can lead to unattended side effects, e.g. when you change the variable after timer creation, which can make debugging quite difficult!

```javascript
var now = time.ZonedDateTime.now();

// Function to run when the timer goes off.
function timerOver () {
console.info('The timer is over. myVariable is: ' + myVariable);
}

var myVariable = 'Hello world!';

// Create the Timer.
var myTimer = actions.ScriptExecution.createTimerWithArgument('My Timer', now.plusSeconds(10), myVariable, timerOver);

myVariable = 'Hello mutation!';
// When the timer runs, it will log "Hello mutation!" instead of "Hello world!"
```

You may also pass `this` to the timer to have access to all variables from the current context.

#### Semantics Actions

See [openhab-js : actions.Semantics](https://openhab.github.io/openhab-js/actions.html#.Semantics) for complete documentation.

#### Things Actions

It is possible to get the actions for a Thing using `actions.Things.getActions(bindingId, thingUid)`, e.g. `actions.Things.getActions('network', 'network:pingdevice:pc')`.

See [openhab-js : actions.Things](https://openhab.github.io/openhab-js/actions.html#.Things) for complete documentation.

#### Voice Actions
Expand Down
2 changes: 1 addition & 1 deletion bundles/org.openhab.automation.jsscripting/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<graal.version>21.3.0</graal.version>
<asm.version>6.2.1</asm.version>
<oh.version>${project.version}</oh.version>
<ohjs.version>openhab@2.0.3</ohjs.version>
<ohjs.version>openhab@2.0.4</ohjs.version>
</properties>

<build>
Expand Down

0 comments on commit edf00e7

Please sign in to comment.