---
author: Erik Montnémery
authorURL: https://github.com/emontnemery
title: "New sensor state class: total_increasing"
---

A new state class, `total_increasing` has been added. In addition, the
`last_reset` attribute is removed from `SensorEntity`. The driver for the changes is to
make it easier to integrate with devices, like utility meters.

### State classes

There are 2 defined state classes:

- `measurement`, the state represents a measurement in present time, for 
   example a temperature, electric power, the value of a stock portfolio, etc. For
   supported sensors, statistics of hourly min, max and average sensor readings or of
   the accumulated growth or decline of the sensor's value since it was first added is
   updated hourly.
- `total_increasing`, a monotonically increasing total, e.g. an amount of
   consumed gas, water or energy. When supported, the accumulated growth of the sensor's
   value since it was first added is updated hourly.

#### `STATE_CLASS_TOTAL_INCREASING`

For sensors with state_class `STATE_CLASS_TOTAL_INCREASING`, a decreasing value is
interpreted as the start of a new meter cycle or the replacement of the meter. It is
important that the integration ensures that the value cannot erroneously decrease in 
the case of calculating a value from a sensor with measurement noise present. This state
class is useful for gas meters, electricity meters, water meters etc.

The sensor's state when it's first added to Home Assistant is used as an initial
zero-point. When a new meter cycle is detected the zero-point will be set to 0.
Please refer to the tables below for how this affects the statistics.

Example of `STATE_CLASS_TOTAL_INCREASING` with a new meter cycle:

| t                      | state  | sum  |
| :--------------------- | -----: | ---: |
|   2021-08-01T13:00:00  |  1000  |   0  |
|   2021-08-01T14:00:00  |  1010  |  10  |
|   2021-08-01T15:00:00  |     0  |  10  |
|   2021-08-01T16:00:00  |     5  |  15  |

Example of `STATE_CLASS_TOTAL_INCREASING` where the there initial state at the beginning
of the new meter cycle is not 0, but 0 is used as zero-point:

| t                      | state  | sum  |
| :--------------------- | -----: | ---: |
|   2021-08-01T13:00:00  |  1000  |   0  |
|   2021-08-01T14:00:00  |  1010  |  10  |
|   2021-08-01T15:00:00  |     5  |  15  |
|   2021-08-01T16:00:00  |    10  |  20  |

This state class used to be represented by state class `measurement` in combination with a `last_reset` value. This approach has been deprecated and will be interpreted as a `total_increasing` state class instead with an automatic last reset.
