Rule mit mehreren else if
Verfasst: 18. Apr 2020 12:00
Guten Morgen,
ich habe einen Fehler in einer Rule und finde den fehler nicht.
Folgendes soll passieren. Ich möchte alle 5min gucken wie die Außentemperatur ist und dann
je nach Außentemperatur eine Zahl per MQTT übermitteln. Auf der Gegenseite empfänt ein
ESP32 die Zahl und stellt dann anhand der Zahl an einem LED Streifen eine bestimmte Farbe ein.
Dummerweise landet er immer bei 9, sprich im Else Fall.
Bei der logInfo kommt folgendes raus:
2020-04-18 11:53:00.019 [INFO ] [smarthome.model.script.Temperature: ] - 20.13 °C
Dann müsste als Ergebnios ja eigtl. 5 rauskommt, aber egal was ich mache, er bleibt immer
bei der 9.
Ich habe es von der Logik mal umgehdreht, dann kommt gar kein Command mehr....
Was mache ich falsch ?
ich habe einen Fehler in einer Rule und finde den fehler nicht.
Folgendes soll passieren. Ich möchte alle 5min gucken wie die Außentemperatur ist und dann
je nach Außentemperatur eine Zahl per MQTT übermitteln. Auf der Gegenseite empfänt ein
ESP32 die Zahl und stellt dann anhand der Zahl an einem LED Streifen eine bestimmte Farbe ein.
Dummerweise landet er immer bei 9, sprich im Else Fall.
Bei der logInfo kommt folgendes raus:
2020-04-18 11:53:00.019 [INFO ] [smarthome.model.script.Temperature: ] - 20.13 °C
Dann müsste als Ergebnios ja eigtl. 5 rauskommt, aber egal was ich mache, er bleibt immer
bei der 9.
Code: Alles auswählen
rule "Temperatur an ESP321 anzeigen"
when
Time cron "0 0/5 * * * ?"
then
var State = (TF_Barometer_1_Temperatur.state)
if (State <= -10) {
MQTT_ESP321_Input.sendCommand(1)
}
else if (State <= 0) {
MQTT_ESP321_Input.sendCommand(2)
}
else if (State <= 10) {
MQTT_ESP321_Input.sendCommand(3)
}
else if (State <= 18) {
MQTT_ESP321_Input.sendCommand(4)
}
else if (State <= 25) {
MQTT_ESP321_Input.sendCommand(5)
}
else if (State <= 30) {
MQTT_ESP321_Input.sendCommand(6)
}
else if (State <= 40) {
MQTT_ESP321_Input.sendCommand(7)
}
else if (State <= 51) {
MQTT_ESP321_Input.sendCommand(8)
}
else {
MQTT_ESP321_Input.sendCommand(9)
logInfo("Temperature: ", State.toString())
}
end
Code: Alles auswählen
rule "Temperatur an ESP321 anzeigen"
when
Time cron "0 0/1 * * * ?"
then
var State = (TF_Barometer_1_Temperatur.state)
if (State > 51) {
MQTT_ESP321_Input.sendCommand(9)
}
else if (State <= 51) {
MQTT_ESP321_Input.sendCommand(8)
}
else if (State <= 40) {
MQTT_ESP321_Input.sendCommand(7)
}
else if (State <= 30) {
MQTT_ESP321_Input.sendCommand(6)
}
else if (State <= 25) {
MQTT_ESP321_Input.sendCommand(5)
}
else if (State <= 18) {
MQTT_ESP321_Input.sendCommand(4)
}
else if (State <= 10) {
MQTT_ESP321_Input.sendCommand(3)
}
else if (State <= 0) {
MQTT_ESP321_Input.sendCommand(2)
}
else if (State <=-10) {
MQTT_ESP321_Input.sendCommand(1)
logInfo("Temperature: ", State.toString())
}
end
Was mache ich falsch ?