val Number Solltemperatur = 23 |°C
val Number Hysterese = 1 |°C
var Number Temperatur
rule “Heizung”
when
Item Buero_Bewegungsmelder changed
then
Temperatur = Solltemperatur + Hysterese
logInfo(“Heizung”, “Temperatur ist = {}” , Temperatur)
if (Buero_Klima_Innentemperatur.state <= Solltemperatur + Hysterese){
logInfo(“Heizung”, “Die Klima Innentemperatur ist <= 23°C”)
}
if (Buero_Klima_Innentemperatur.state > Solltemperatur){
logInfo(“Heizung”, “Die Klima Innentemperatur ist > 23°C”)
}
end
The log result for Temperatur ist : 570,30. It seams that there ist a conversion from °C to °K
How could I avid this conversion and get the right result?
val Number Solltemperatur = 23 |°C
val Number Hysterese = 1 |°C
var Number Temperatur
rule "Temperatur"
when
Item Buero_Bewegungsmelder changed
then
Temperatur = Solltemperatur + Hysterese
logInfo("Temperatur", "Temperatur:{}", Temperatur)
end
The log result for Temperatur ist : 570,30
Is there a possibility to calculate mit temperatures getting the expected result 24°C ?
I have found a solution: Defining the variables and constants as numbers makes it possible to calculate with them correctly. Comparing them with an Number:Temperature item in an if clause is possible if the value of the item is transformed to an floatValue or intValue as in the example below.
val Number Solltemperatur = 23
val Number Hysterese = 1
var Number Temperatur
rule "Heizung"
when
Item Buero_Bewegungsmelder changed
then
Temperatur = Solltemperatur + Hysterese
logInfo("Heizung", "Temperatur:{}", Temperatur)
logInfo("Heizung", "Klima Innentemperatur:{}", (Buero_Klima_Innentemperatur.state as Number).intValue)
if ((Buero_Klima_Innentemperatur.state as Number).floatValue <= (Solltemperatur)) {
logInfo("Heizung", "Die Klima Innentemperatur ist <= 23°C")
}
if ((Buero_Klima_Innentemperatur.state as Number).floatValue > Solltemperatur + Hysterese){
logInfo("Heizung", "Die Klima Innentemperatur ist > 24°C")
}
end