Merge branch 'timeout_filter_scheduler_churn_fix' into integration

This commit is contained in:
J. Nick Koston
2025-11-28 13:02:47 -06:00

View File

@@ -270,10 +270,9 @@ ThrottleFilter = sensor_ns.class_("ThrottleFilter", Filter)
ThrottleWithPriorityFilter = sensor_ns.class_(
"ThrottleWithPriorityFilter", ValueListFilter
)
TimeoutFilterLast = sensor_ns.class_("TimeoutFilterLast", Filter, cg.Component)
TimeoutFilterConfigured = sensor_ns.class_(
"TimeoutFilterConfigured", Filter, cg.Component
)
TimeoutFilterBase = sensor_ns.class_("TimeoutFilterBase", Filter, cg.Component)
TimeoutFilterLast = sensor_ns.class_("TimeoutFilterLast", TimeoutFilterBase)
TimeoutFilterConfigured = sensor_ns.class_("TimeoutFilterConfigured", TimeoutFilterBase)
DebounceFilter = sensor_ns.class_("DebounceFilter", Filter, cg.Component)
HeartbeatFilter = sensor_ns.class_("HeartbeatFilter", Filter, cg.Component)
DeltaFilter = sensor_ns.class_("DeltaFilter", Filter)
@@ -684,17 +683,18 @@ TIMEOUT_SCHEMA = cv.maybe_simple_value(
)
@FILTER_REGISTRY.register("timeout", Filter, TIMEOUT_SCHEMA)
@FILTER_REGISTRY.register("timeout", TimeoutFilterBase, TIMEOUT_SCHEMA)
async def timeout_filter_to_code(config, filter_id):
filter_id = filter_id.copy()
if config[CONF_VALUE] == "last":
# Use TimeoutFilterLast for "last" mode (smaller, more common - LD2450, LD2412, etc.)
rhs = TimeoutFilterLast.new(config[CONF_TIMEOUT])
var = cg.Pvariable(filter_id, rhs, TimeoutFilterLast)
filter_id.type = TimeoutFilterLast
var = cg.new_Pvariable(filter_id, config[CONF_TIMEOUT])
else:
# Use TimeoutFilterConfigured for configured value mode
filter_id.type = TimeoutFilterConfigured
template_ = await cg.templatable(config[CONF_VALUE], [], float)
rhs = TimeoutFilterConfigured.new(config[CONF_TIMEOUT], template_)
var = cg.Pvariable(filter_id, rhs, TimeoutFilterConfigured)
var = cg.new_Pvariable(filter_id, config[CONF_TIMEOUT], template_)
await cg.register_component(var, {})
return var