mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Add new total_increasing state-class for Home Assistant 2021.9+ (#2166)
This commit is contained in:
		| @@ -448,6 +448,7 @@ message LightCommandRequest { | ||||
| enum SensorStateClass { | ||||
|   STATE_CLASS_NONE = 0; | ||||
|   STATE_CLASS_MEASUREMENT = 1; | ||||
|   STATE_CLASS_TOTAL_INCREASING = 2; | ||||
| } | ||||
|  | ||||
| enum SensorLastResetType { | ||||
|   | ||||
| @@ -94,6 +94,8 @@ template<> const char *proto_enum_to_string<enums::SensorStateClass>(enums::Sens | ||||
|       return "STATE_CLASS_NONE"; | ||||
|     case enums::STATE_CLASS_MEASUREMENT: | ||||
|       return "STATE_CLASS_MEASUREMENT"; | ||||
|     case enums::STATE_CLASS_TOTAL_INCREASING: | ||||
|       return "STATE_CLASS_TOTAL_INCREASING"; | ||||
|     default: | ||||
|       return "UNKNOWN"; | ||||
|   } | ||||
|   | ||||
| @@ -47,6 +47,7 @@ enum ColorMode : uint32_t { | ||||
| enum SensorStateClass : uint32_t { | ||||
|   STATE_CLASS_NONE = 0, | ||||
|   STATE_CLASS_MEASUREMENT = 1, | ||||
|   STATE_CLASS_TOTAL_INCREASING = 2, | ||||
| }; | ||||
| enum SensorLastResetType : uint32_t { | ||||
|   LAST_RESET_NONE = 0, | ||||
|   | ||||
| @@ -81,6 +81,7 @@ StateClasses = sensor_ns.enum("StateClass") | ||||
| STATE_CLASSES = { | ||||
|     "": StateClasses.STATE_CLASS_NONE, | ||||
|     "measurement": StateClasses.STATE_CLASS_MEASUREMENT, | ||||
|     "total_increasing": StateClasses.STATE_CLASS_TOTAL_INCREASING, | ||||
| } | ||||
| validate_state_class = cv.enum(STATE_CLASSES, lower=True, space="_") | ||||
|  | ||||
|   | ||||
| @@ -10,6 +10,8 @@ const char *state_class_to_string(StateClass state_class) { | ||||
|   switch (state_class) { | ||||
|     case STATE_CLASS_MEASUREMENT: | ||||
|       return "measurement"; | ||||
|     case STATE_CLASS_TOTAL_INCREASING: | ||||
|       return "total_increasing"; | ||||
|     case STATE_CLASS_NONE: | ||||
|     default: | ||||
|       return ""; | ||||
| @@ -72,6 +74,8 @@ void Sensor::set_state_class(StateClass state_class) { this->state_class = state | ||||
| void Sensor::set_state_class(const std::string &state_class) { | ||||
|   if (str_equals_case_insensitive(state_class, "measurement")) { | ||||
|     this->state_class = STATE_CLASS_MEASUREMENT; | ||||
|   } else if (str_equals_case_insensitive(state_class, "total_increasing")) { | ||||
|     this->state_class = STATE_CLASS_TOTAL_INCREASING; | ||||
|   } else { | ||||
|     ESP_LOGW(TAG, "'%s' - Unrecognized state class %s", this->get_name().c_str(), state_class.c_str()); | ||||
|   } | ||||
|   | ||||
| @@ -37,6 +37,7 @@ namespace sensor { | ||||
| enum StateClass : uint8_t { | ||||
|   STATE_CLASS_NONE = 0, | ||||
|   STATE_CLASS_MEASUREMENT = 1, | ||||
|   STATE_CLASS_TOTAL_INCREASING = 2, | ||||
| }; | ||||
|  | ||||
| const char *state_class_to_string(StateClass state_class); | ||||
|   | ||||
| @@ -840,6 +840,9 @@ STATE_CLASS_NONE = "" | ||||
| # The state represents a measurement in present time | ||||
| STATE_CLASS_MEASUREMENT = "measurement" | ||||
|  | ||||
| # The state represents a total that only increases, a decrease is considered a reset. | ||||
| STATE_CLASS_TOTAL_INCREASING = "total_increasing" | ||||
|  | ||||
| # This sensor does not support resetting. ie, it is not accumulative | ||||
| LAST_RESET_TYPE_NONE = "" | ||||
| # This sensor is expected to never reset its value | ||||
|   | ||||
		Reference in New Issue
	
	Block a user