At the moment, Item in JS does not expose the StateDescription and especially the Options.
According to #109 (comment) it should be possible to add these through the items metadata which I have not tested, but it is at least not possible to retrieve them that way.
In my use case, I'm looking into items which are bound to a thing's channel that only allows a couple of strings as values (like an enum).
Examples are the list of available apps in the lgwebos binding, or the allowedStates in a channel of the mqtt binding.
These allowed states are exposed in the item through the getStateDescription().options list.
A workaround at the moment is to get the raw item like below:
const { items, logm, utils} = require("openhab");
const logger = log("Scratchpad");
const itemName = "LivingRoomTvApplication";
const item = items.getItem(itemName);
const rawItem = item.rawItem;
const stateDescription = rawItem.getStateDescription();
const options = stateDescription.options;
options.forEach(option => {
const label = option.getLabel();
const value = option.getValue();
logger.info(`Label: ${label}, Value: ${value}`);
});
At the moment,
Itemin JS does not expose theStateDescriptionand especially theOptions.According to #109 (comment) it should be possible to add these through the items metadata which I have not tested, but it is at least not possible to retrieve them that way.
In my use case, I'm looking into items which are bound to a thing's channel that only allows a couple of strings as values (like an enum).
Examples are the list of available apps in the
lgwebosbinding, or theallowedStatesin a channel of themqttbinding.These allowed states are exposed in the item through the
getStateDescription().optionslist.A workaround at the moment is to get the raw item like below: