Hi,
I am currently migrating all my rules from DSL to JS (JSR223).
I have a couple of rules which check the state of dimmer and switch items:
Dimmer FF_Bad_Licht_Decke "Bad Decke [%d %%]" <light> (FF_Bad, gLight, gPersistence) [ "Lighting" ] {channel="knx:device:bridge:generic:FF_Bad_Licht_Decke", autoupdate="false"}
...
Switch SZ_Bad_Nachtbeleuchtung "Szene SZ Bad Nachtbeleuchtung" <light> (Szenen, gPersistence) //{channel="knx:device:bridge:generic:SZ_Bad_Nachtbeleuchtung_Control"}
My rule is the following:
var BadLichtDecke = itemRegistry.getItem("FF_Bad_Licht_Decke");
var BadLichtZentral = itemRegistry.getItem("FF_Bad_Licht");
var AlarmanlageStatus = itemRegistry.getItem("Alarmanlage_Aussenhuelle");
function bad_nachtbeleuchtung(event) {
if (event.itemState === ON && Number(BadLichtDecke.state) === 0) {
if (AlarmanlageStatus.state === ON) {
events.sendCommand(BadLichtDecke, 10);
}
}
if (event.itemState === OFF) {
if (AlarmanlageStatus.state === ON) {
events.sendCommand(BadLichtDecke, OFF);
// Wenn Bad Licht Zentral an war -> ebenfalls ausschalten
if (BadLichtZentral.state === ON) {
events.sendCommand(BadLichtZentral, OFF);
}
}
// Wenn Alarmanlage zwischenzeitlich ausgeschalten wurde und Nachtbeleuchtung an war (=10%) diese ebenfalls ausschalten
if (AlarmanlageStatus.state === OFF) {
if (Nummber(BadLichtDecke.state) === 10) {
events.sendCommand(BadLichtDecke, OFF);
}
}
}
}
when("Item SZ_Bad_Nachtbeleuchtung changed")(bad_nachtbeleuchtung);
rule(
"Bad Nachtbeleuchtung",
"Rule um das Bad nachts gedimmt zu beleuchten"
)(bad_nachtbeleuchtung);
The event.itemState and item.state is an JS typeof=object.
So why is event.itemState === ON working and BadLichtDecke.state === 0 is not working.
In case of the second statement In do have to do a type cast with Number() to get the statement run?