The derivative (Wikipedia) integration creates a sensor that estimates the derivative of the values provided by another sensor (the source sensor). Derivative sensors are updated upon changes of the source sensor.
For sensors that reset to zero after a power interruption and need a “non-negative derivative”, such as bandwidth counters in routers, or rain gauges, consider using the Utility Meter integration instead. Otherwise, each reset will register a significant change in the derivative sensor.
To add the Derivative integration to your Home Assistant instance, use this My button:
If the above My button doesn’t work, you can also perform the following steps manually:
The time window in which to calculate the derivative. Derivatives in this window will be averaged with a simple moving average algorithm (SMA) weighted by time. This is for instance useful for a sensor that outputs discrete values, or to filter out short duration noise. By default the derivative is calculated between two consecutive updates without any smoothing.
Metric unit to prefix the derivative result (Wikipedia).
Alternatively, this integration can be configured and set up manually via YAML
instead. To enable the Derivative sensor in your installation, add the
following to your
# Example configuration.yaml entry sensor: - platform: derivative source: sensor.current_speed
Round the calculated derivative value to at most N decimal places.
Metric unit to prefix the derivative result (Wikipedia). Available symbols are “n” (1e-9), “µ” (1e-6), “m” (1e-3), “k” (1e3), “M” (1e6), “G” (1e9), “T” (1e12).
SI unit of time of the derivative. Available units are s, min, h, d. If this parameter is set, the attribute unit_of_measurement will be set like x/y where x is the unit of the sensor given via the source parameter and y is the value given here.
Unit of Measurement to be used for the derivative. This will overwrite the automatically set unit_of_measurement as explained above.
The time window in which to calculate the derivative. Derivatives in this window will be averaged with a Simple Moving Average algorithm weighted by time. This is for instance useful for a sensor that outputs discrete values, or to filter out short duration noise. By default the derivative is calculated between two consecutive updates without any smoothing.
For example, you have a temperature sensor
sensor.temperature that outputs a value every few seconds, but rounds to the nearest half number.
That means that two consecutive output values might be the same (so the derivative is
However, the temperature might actually be changing over time.
In order to capture this, you should use a
time_window, such that immediate jumps don’t result in high derivatives and that after the next sensor update, the derivatives doesn’t vanish to zero.
An example YAML configuration that uses
sensor: - platform: derivative source: sensor.temperature name: Temperature change per hour round: 1 unit_time: h # the resulting "unit_of_measurement" will be °C/h if the sensor.temperate has set °C as its unit time_window: "00:30:00" # we look at the change over the last half hour