I want to display a minimum - maximum range of values having UoM (Units of Measurement).
As far as I know, there’s no way to attach a (min, max) tuple to an Item where the Item value could hold 2 placeholders, as in the fictitious example below:
Number:Speed Wx_OWM_Forecast_Wind_Speed_Range_Day0 "Wind Speed [$1%.0f km/h - $2%.0f km/h]" <wind> (gWeatherForecastDaily)
(This would assume that a channel could return tuples)
Right now I resort to rules to generate a String
item state value, as in:
val String itemName = "Wx_OWM_Forecast_Wind_Speed_Range_Day0"
val String valueMin = wind_speed_min_day_0
val String valueMax = wind_speed_max_day_0
val String valueRange = valueMin + " - " + valueMax
val GenericItem forecastRangeItem = ScriptServiceUtil.getItemRegistry.getItem(itemName) as GenericItem
postUpdate( forecastRangeItem, valueRange )
Where these items are defined as:
String Wx_OWM_Forecast_Wind_Speed_Range_Day0 "Wind Speed [%s]" <wind>
Number:Speed Wx_OWM_Forecast_Wind_Speed_Min_Day0 "Min Wind Speed [%.0f km/h]" <wind> (gWeatherForecastDaily)
Number:Speed Wx_OWM_Forecast_Wind_Speed_Max_Day0 "Max Wind Speed [%.0f km/h]" <wind> (gWeatherForecastDaily)
When displaying these items in Paper UI, I get the following UoM output:
-
Wx_OWM_Forecast_Wind_Speed_Min_Day0
: km/h (as expected) -
Wx_OWM_Forecast_Wind_Speed_Max_Day0
: km/h (as expected) -
Wx_OWM_Forecast_Wind_Speed_Range_Day0
: m/s (want to see as km/h)
I’m looking into ways to convert the units from Number
item values that have units, e.g; from m/s to km/h.
Can this be achieved?