Javascript >=
-
- Beiträge: 517
- Registriert: 30. Apr 2021 13:13
Re: Javascript >=
Mmh, dann bin ich raus. Habe keine Idee warum sich von den anderen logger.warn keiner anspringt wenn es telegramAction.sendTelegram noch ausführt und sonst keine Fehler ausgibt. Meine Überlegung mit einem fehlenden .getState() ist damit auch vom Tisch.
- peter-pan
- Beiträge: 2782
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Javascript >=
...lass doch einfach mal die Bedingungen (IF..ELSE) weg und schau mal was passiert.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH5.0.0 openhabian
- peter-pan
- Beiträge: 2782
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Javascript >=
...Ich kann zwar kein Java-Script, aber ich hab mal ein bisschen gegoogelt und an dem Script herum gebastelt und bin unter "nested IF" fündidg geworden. Mein Beispiel (mit ein paar Auskommentierungen und Anmerkungen) sieht jetzt so aus:
So sollte es eigentlich klappen. Die innere Klammerung in der zweiten If-Condition muss weg und bei der Condition-Abfrage muss das ".getState()" noch rein.
Die Logs sehen dann so aus:
Der erste Vergleich war mit 20 und der zweite mit 21.5.
So sollte es dann aber klappen
Code: Alles auswählen
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var cTemperatur = itemRegistry.getItem('radiator_valve_01_Temp').getState(); // Radiator-Temp Type Number:Temperature
cTemperatur = parseFloat(cTemperatur);
logger.info("---------------------------------------------------------------------");
logger.warn(cTemperatur);
var cOrt = "Badezimmer";
var cStatus = "leer";
// telegramAction.sendTelegram("Raumtemperatur " + cOrt + " derzeit " + cTemperatur + " Grad. Status: Sonnenschutz " + cStatus);
logger.warn("log " + cOrt + " " + cStatus);
if (cTemperatur >= 20){
logger.warn("Willkommen im ersten IF");
if (itemRegistry.getItem('Socket_Fritz_01').getState() == 'OFF') // Switch Item - hier muss noch das ".getState()" rein
logger.warn("nun auch im 2. IF");
cStatus = "aktiv";
logger.warn("cStatus ist: " + cStatus);
// events.sendCommand('temperaturbad', 'ON');
// telegramAction.sendTelegram("Raumtemperatur " + cOrt + " derzeit " + cTemperatur + " Grad. Status: Sonnenschutz " + cStatus);
}
else {// es ist noch nicht warm genug
logger.warn("hier ist die ELSE");
cStatus = "deaktiviert";
// events.sendCommand('temperaturbad', 'OFF');
// telegramAction.sendTelegram("Raumtemperatur " + cOrt + " derzeit " + cTemperatur + " Grad. Status: Sonnenschutz " + cStatus);
logger.warn("cStatus ist: " + cStatus);
}
Die Logs sehen dann so aus:
Code: Alles auswählen
2022-05-10 11:01:04.135 [INFO ] [org.openhab.rule.test_ecma ] - ---------------------------------------------------------------------
2022-05-10 11:01:04.140 [WARN ] [org.openhab.rule.test_ecma ] - 20.5
2022-05-10 11:01:04.144 [WARN ] [org.openhab.rule.test_ecma ] - log Badezimmer leer
2022-05-10 11:01:04.148 [WARN ] [org.openhab.rule.test_ecma ] - Willkommen im ersten IF
2022-05-10 11:01:04.165 [WARN ] [org.openhab.rule.test_ecma ] - nun auch im 2. IF
2022-05-10 11:01:04.169 [WARN ] [org.openhab.rule.test_ecma ] - cStatus ist: aktiv
2022-05-10 11:03:12.475 [INFO ] [org.openhab.rule.test_ecma ] - ---------------------------------------------------------------------
2022-05-10 11:03:12.480 [WARN ] [org.openhab.rule.test_ecma ] - 20.5
2022-05-10 11:03:12.484 [WARN ] [org.openhab.rule.test_ecma ] - log Badezimmer leer
2022-05-10 11:03:12.488 [WARN ] [org.openhab.rule.test_ecma ] - hier ist die ELSE
2022-05-10 11:03:12.492 [WARN ] [org.openhab.rule.test_ecma ] - cStatus ist: deaktiviert
So sollte es dann aber klappen

Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH5.0.0 openhabian