While this is probably obvious to experienced js programmers, it took me a while to figure out what was needed so I thought I would share it.
actions.Things null in OH 5.1M1 → Fixed with require(‘openhab’).actions.Things
Problem: In OH 5.0.1, my script worked with:
javascript
let actions = require('@runtime').actions;
let thingStatusInfo = actions.Things.getThingStatusInfo(thingUID);
OH 5.1M1: actions.Things was null:
text
actions properties: ["dispose","get"]
actions.Things is null
Solution:
javascript
const Things = require('openhab').actions.Things;
let thingStatusInfo = Things.getThingStatusInfo(thingUID);
Tested: Amazon Echo (amazonechocontrol:…) and Tuya (tuya:tuyaDevice:…) bindings Logs:
text
Successfully loaded Things from openhab.actions.Things: ["getThingStatusInfo","getActions","class"]
Thing status for MasterLightSwitch_PowerState (...): ONLINE
Setup: OH 5.1M1, org.openhab.automation.jsscripting 5.1.0.M1, “Use Built-in variables for file scripts” enabled
Why this works: require(‘openhab’).actions.Things directly accesses the Java Things API, bypassing the actions.Things null issue.
Before:
javascript
let actions = require('@runtime').actions;
thingStatusInfo = actions.Things.getThingStatusInfo(thingUID); // null
After:
javascript
const Things = require('openhab').actions.Things;
thingStatusInfo = Things.getThingStatusInfo(thingUID); // ONLINE
