I’d like to have a counter showing how many lights (and similarly windows, too) are currently running (brightness >0). I simply check if a light’s brightness>0 and then increase the counter by 1.
However, this doesn’t work consistently:
Here’s the code, most of it for logging purposes:
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
anzahl = 0; // counter starts with 0
logger.info("---- Test Anzahl, start with 0, (should increase in following lines) : " + anzahl);
if (items["LeuchteHuegross_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1; logger.info("LeuchteHuegross_Farbe" + items["LeuchteHuegross_Farbe"]);}
if (items["LeuchteHueklein_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("LeuchteHueklein_Farbe" + items["LeuchteHueklein_Farbe"]);}
if (items["LeuchteMobil_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("LeuchteMobil_Farbe" + items["LeuchteMobil_Farbe"]);}
if (items["LeuchteWohnzimmer_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("LeuchteWohnzimmer_Farbe" + items["LeuchteWohnzimmer_Farbe"]);}
if (items["EsszimmerTisch_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("EsszimmerTisch_Farbe" + items["EsszimmerTisch_Farbe"]);}
if (items["EsszimmerWein_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("EsszimmerWein_Farbe" + items["EsszimmerWein_Farbe"]);}
if (items["EsszimmerKlavier_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("EsszimmerKlavier_Farbe" + items["EsszimmerKlavier_Farbe"]);}
if (items["Frosch_Farbe"].toString().split(",")[2] >0 ) {anzahl=anzahl+1;logger.info("Frosch_Farbe" + items["Frosch_Farbe"]);}
logger.info("------- now just logging values ------------");
logger.info("Test Anzahl gesamt (should be as many as lines above): " + anzahl);
events.sendCommand("AnzahlLampenAn",anzahl);
logger.info("------- all lightbulbs incl off ------------");
logger.info("LeuchteHuegross_Farbe" + items["LeuchteHuegross_Farbe"]);
logger.info("LeuchteHueklein_Farbe" + items["LeuchteHueklein_Farbe"]);
logger.info("LeuchteMobil_Farbe" + items["LeuchteMobil_Farbe"]);
logger.info("LeuchteWohnzimmer_Farbe" + items["LeuchteWohnzimmer_Farbe"]);
logger.info("EsszimmerTisch_Farbe" + items["EsszimmerTisch_Farbe"]);
logger.info("EsszimmerWein_Farbe" + items["EsszimmerWein_Farbe"]);
logger.info("EsszimmerKlavier_Farbe" + items["EsszimmerKlavier_Farbe"]);
logger.info("Frosch_Farbe" + items["Frosch_Farbe"]);
The rule is executed when a member of the group Leuchten (Lightbulbs) receives a command or changes (one should’ve been enough, but when it wasn’t working I added another but I guess thats not relevant).
triggers:
- id: "1"
configuration:
groupName: Leuchten_Alle
type: core.GroupCommandTrigger
- id: "3"
configuration:
itemName: Leuchten_Alle
type: core.ItemStateChangeTrigger
I’d appreciate hints what to look for