Here’s another thing I’ve learned. Persistence doesn’t return QuantityTypes so we sometimes need to convert a Number or primitive numerical value to QuantityType. This is how it’s done.
import org.eclipse.smarthome.core.library.unit.SIUnits
rule "Test"
when
// Also triggered upon saving of file
System started
then
// This can be any item of type Number:Power (W)
val item = WashingMachinePower
// Its state is a QuantityType<Power> (W)
val state = item.state
logError("Test", "State: " + state)
// Persistence produces a value of type DecimalType
val average = item.averageSince(now.minusMinutes(5), "rrd4j")
logError("Test", "Average: " + average)
// Convert to QuanttyType using the constructor
// QuantityType(Number, javax.measure.Unit)
val averageTyped = new QuantityType(average, SIUnits.WATT)
logError("Test", "Average (typed): " + averageTyped)
// A way to convert to QuantityType from double using static
// factory method
val typed = QuantityType::valueOf(42, SIUnits.WATT)
logError("Test", "Value 42 (typed): " + typed)
end
See also: