Seite 1 von 1
Temperaturwerte vergleichen
Verfasst: 20. Nov 2020 19:08
von dirkspostbox
Hallo,
wie bekomme ich es hin, das ich den aktuellen Temperaturwert eines HmIP-STH mit einem Referenzwert vergleiche?
Folgendes funktioniert nicht:
var int Temp = (TemperaturUndLuftfeuchtigkeitssensorEG1ACTUALTEMPERATURE.state as DecimalType).intValue
if (Temp < 24) {
// starte Heizung
} //
Vermutlich liegt es daran, das TemperaturUndLuftfeuchtigkeitssensorEG1ACTUALTEMPERATURE.state eine Temperaturangabe mit "°C" zurückgibt, also zb "23,60 °C".... aber wie bekomme ich das weg?
Danke vorab und Gruß
Dirk
Re: Temperaturwerte vergleichen
Verfasst: 20. Nov 2020 20:48
von peter-pan
z.B. so:
Code: Alles auswählen
rule "UoM compare"
when
Item Dummy_5 changed
then
if(HMIPAussensensorNord1ACTUALTEMPERATURE.state< 7 | °C) {
logInfo("Temperature","Temperature with Pattern: " + HMIPAussensensorNord1ACTUALTEMPERATURE)
} // works
if( (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).floatValue < 7) {
logInfo("Temperature","Temperature as Float for comparison: " + HMIPAussensensorNord1ACTUALTEMPERATURE)
} // works
var vTemp = (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).floatValue
if( vTemp < 7) {
logInfo("Temperature","Temperature with changed Variable: " + vTemp)
} // works
var vTempInt = (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).intValue
logInfo("Temperature","Temperature changed to Integer: " + vTempInt)
end
Es gibt also verschiedene Möglichkeiten um ein Item mit UoM zu bearbeiten bzw. um Vergleiche vorzunehmen oder auch um eine Umwandlung in eine Ganzzahl vorzunehmen.
Log:
Code: Alles auswählen
2020-11-20 20:47:04.698 [INFO ] [e.smarthome.model.script.Temperature] - Temperature with Pattern: HMIPAussensensorNord1ACTUALTEMPERATURE (Type=NumberItem, State=5.50 °C, Label=Aussensensor Nord aktuelle Temperatur, Category=temperature, Groups=[gHomeMatic])
2020-11-20 20:47:04.709 [INFO ] [e.smarthome.model.script.Temperature] - Temperature as Float for comparison: HMIPAussensensorNord1ACTUALTEMPERATURE (Type=NumberItem, State=5.50 °C, Label=Aussensensor Nord aktuelle Temperatur, Category=temperature, Groups=[gHomeMatic])
2020-11-20 20:47:04.720 [INFO ] [e.smarthome.model.script.Temperature] - Temperature with changed Variable: 5.5
2020-11-20 20:47:04.727 [INFO ] [e.smarthome.model.script.Temperature] - Temperature changed to Integer: 5
Re: Temperaturwerte vergleichen
Verfasst: 23. Nov 2020 14:34
von dirkspostbox
Perfekt, das hat funktioniert
Vielen Dank!
peter-pan hat geschrieben: ↑20. Nov 2020 20:48
z.B. so:
Code: Alles auswählen
rule "UoM compare"
when
Item Dummy_5 changed
then
if(HMIPAussensensorNord1ACTUALTEMPERATURE.state< 7 | °C) {
logInfo("Temperature","Temperature with Pattern: " + HMIPAussensensorNord1ACTUALTEMPERATURE)
} // works
if( (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).floatValue < 7) {
logInfo("Temperature","Temperature as Float for comparison: " + HMIPAussensensorNord1ACTUALTEMPERATURE)
} // works
var vTemp = (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).floatValue
if( vTemp < 7) {
logInfo("Temperature","Temperature with changed Variable: " + vTemp)
} // works
var vTempInt = (HMIPAussensensorNord1ACTUALTEMPERATURE.state as Number).intValue
logInfo("Temperature","Temperature changed to Integer: " + vTempInt)
end
Es gibt also verschiedene Möglichkeiten um ein Item mit UoM zu bearbeiten bzw. um Vergleiche vorzunehmen oder auch um eine Umwandlung in eine Ganzzahl vorzunehmen.
Log:
Code: Alles auswählen
2020-11-20 20:47:04.698 [INFO ] [e.smarthome.model.script.Temperature] - Temperature with Pattern: HMIPAussensensorNord1ACTUALTEMPERATURE (Type=NumberItem, State=5.50 °C, Label=Aussensensor Nord aktuelle Temperatur, Category=temperature, Groups=[gHomeMatic])
2020-11-20 20:47:04.709 [INFO ] [e.smarthome.model.script.Temperature] - Temperature as Float for comparison: HMIPAussensensorNord1ACTUALTEMPERATURE (Type=NumberItem, State=5.50 °C, Label=Aussensensor Nord aktuelle Temperatur, Category=temperature, Groups=[gHomeMatic])
2020-11-20 20:47:04.720 [INFO ] [e.smarthome.model.script.Temperature] - Temperature with changed Variable: 5.5
2020-11-20 20:47:04.727 [INFO ] [e.smarthome.model.script.Temperature] - Temperature changed to Integer: 5
Re: Temperaturwerte vergleichen
Verfasst: 23. Nov 2020 17:38
von peter-pan
Gerne.