Javascript >=

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Harka
Beiträge: 517
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Javascript >=

Beitrag von Harka »

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.

Benutzeravatar
peter-pan
Beiträge: 2782
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Javascript >=

Beitrag von peter-pan »

...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

Benutzeravatar
peter-pan
Beiträge: 2782
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Javascript >=

Beitrag von peter-pan »

...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:

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);
}
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:

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
Der erste Vergleich war mit 20 und der zweite mit 21.5.

So sollte es dann aber klappen ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH5.0.0 openhabian

Antworten