Skip to main content

Sensor entity can now do rounding of numerical values

· 2 min read

Note: The changes described here have been reverted and replaced with rounding for presentation, more details can be found in this blog post.

SensorEntity can now do rounding of a numerical native_value when it's converted to the sensor state. This is implemented as a part of core PR #86074. The rounding is opt-in by integrations setting the native_precision property. It is recommended that this property is set by integrations because it ensures the number of decimals is reasonable also after unit conversion.

A summary of the changes, copied from the PR description:

  • By default, no rounding is done
    • Integrations can influence the state precision by setting a new property native_precision
  • The state precision is influenced by unit conversion
    • Converting from a smaller to a larger unit increases the display precision
    • Converting from a larger to a smaller unit decreases the display precision if the integration has set native_precision
    • Minimum precision when converting from a larger to a smaller unit is 0, i.e. there's no rounding to tens, hundreds etc.
  • User can override the display precision from the frontend
    • There's no minimum precision, i.e. rounding to tens, hundreds, etc. is possible by setting a negative precision
  • Integrations are encouraged to drop rounding for display and instead set property native_precision
  • Trailing zeroes are added to the sensor state's string representation to match the precision if:
    • The precision is set by user
    • The native_precision property is not None
    • Unit conversion is done