Dear all,
I created a rule which is planned to move some roller shutter depending on wind speed. Unfortunately, my test case doesn’t work as expected, I get:
[INFO ] [enhab.automation.script.ui.Wind_Test] - 0 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - 0 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 10 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 20 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 30 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 40 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed changed to:
[INFO ] [enhab.automation.script.ui.Wind_Test] - 1.8 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - 1.8 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 10 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 20 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 30 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 40 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed changed to:
[INFO ] [enhab.automation.script.ui.Wind_Test] - 3.6 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - 3.6 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed >= 10 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed >= 20 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 30 km/h
[INFO ] [enhab.automation.script.ui.Wind_Test] - Gust_Speed < 40 km/h
But of course 3.6 km/h is not >= 10 km/h…
I already changed from get state item… to get quantity state of item… but without success. Here is my rule:
console.info('Gust_Speed changed to:');
console.info(items.getItem('Wetterstation_Gust_Speed').state);
console.info(items.getItem('Wetterstation_Gust_Speed').quantityState);
if (items.getItem('Wetterstation_Gust_Speed').quantityState >= Quantity('10' + 'km/h')) {
console.info('Gust_Speed >= 10 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState < Quantity('10' + 'km/h')) {
console.info('Gust_Speed < 10 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState >= Quantity('20' + 'km/h')) {
console.info('Gust_Speed >= 20 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState < Quantity('20' + 'km/h')) {
console.info('Gust_Speed < 20 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState >= Quantity('30' + 'km/h')) {
console.info('Gust_Speed >= 30 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState < Quantity('30' + 'km/h')) {
console.info('Gust_Speed < 30 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState >= Quantity('40' + 'km/h')) {
console.info('Gust_Speed >= 40 km/h');
}
if (items.getItem('Wetterstation_Gust_Speed').quantityState < Quantity('40' + 'km/h')) {
console.info('Gust_Speed < 40 km/h');
}
With my item like:
label: Windgeschwindigkeit (Böen)
type: Number:Speed
category: Wind
groupNames:
- Wetterstation
groupType: None
function: null
tags:
- Measurement
- Wind
Why do some comparisons give incorrect results?
Thank you for your help.
Best,
Bernd