mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 16:38:16 +01:00
commit
0f1e186189
3 changed files with 25 additions and 6 deletions
|
@ -93,7 +93,7 @@ async def to_code(config):
|
||||||
cg.add(var.set_scroll(config[CONF_SCROLL_ENABLE]))
|
cg.add(var.set_scroll(config[CONF_SCROLL_ENABLE]))
|
||||||
cg.add(var.set_scroll_mode(config[CONF_SCROLL_MODE]))
|
cg.add(var.set_scroll_mode(config[CONF_SCROLL_MODE]))
|
||||||
cg.add(var.set_reverse(config[CONF_REVERSE_ENABLE]))
|
cg.add(var.set_reverse(config[CONF_REVERSE_ENABLE]))
|
||||||
cg.add(var.set_flip_x([CONF_FLIP_X]))
|
cg.add(var.set_flip_x(config[CONF_FLIP_X]))
|
||||||
|
|
||||||
if CONF_LAMBDA in config:
|
if CONF_LAMBDA in config:
|
||||||
lambda_ = await cg.process_lambda(
|
lambda_ = await cg.process_lambda(
|
||||||
|
|
|
@ -25,10 +25,12 @@ from esphome.const import (
|
||||||
CONF_STATE_CLASS,
|
CONF_STATE_CLASS,
|
||||||
CONF_TO,
|
CONF_TO,
|
||||||
CONF_TRIGGER_ID,
|
CONF_TRIGGER_ID,
|
||||||
|
CONF_TYPE,
|
||||||
CONF_UNIT_OF_MEASUREMENT,
|
CONF_UNIT_OF_MEASUREMENT,
|
||||||
CONF_WINDOW_SIZE,
|
CONF_WINDOW_SIZE,
|
||||||
CONF_MQTT_ID,
|
CONF_MQTT_ID,
|
||||||
CONF_FORCE_UPDATE,
|
CONF_FORCE_UPDATE,
|
||||||
|
CONF_VALUE,
|
||||||
DEVICE_CLASS_APPARENT_POWER,
|
DEVICE_CLASS_APPARENT_POWER,
|
||||||
DEVICE_CLASS_AQI,
|
DEVICE_CLASS_AQI,
|
||||||
DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
|
DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
|
||||||
|
@ -476,21 +478,38 @@ async def lambda_filter_to_code(config, filter_id):
|
||||||
return cg.new_Pvariable(filter_id, lambda_)
|
return cg.new_Pvariable(filter_id, lambda_)
|
||||||
|
|
||||||
|
|
||||||
|
DELTA_SCHEMA = cv.Schema(
|
||||||
|
{
|
||||||
|
cv.Required(CONF_VALUE): cv.positive_float,
|
||||||
|
cv.Optional(CONF_TYPE, default="absolute"): cv.one_of(
|
||||||
|
"absolute", "percentage", lower=True
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def validate_delta(config):
|
def validate_delta(config):
|
||||||
try:
|
try:
|
||||||
return (cv.positive_float(config), False)
|
value = cv.positive_float(config)
|
||||||
|
return DELTA_SCHEMA({CONF_VALUE: value, CONF_TYPE: "absolute"})
|
||||||
except cv.Invalid:
|
except cv.Invalid:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
return (cv.percentage(config), True)
|
value = cv.percentage(config)
|
||||||
|
return DELTA_SCHEMA({CONF_VALUE: value, CONF_TYPE: "percentage"})
|
||||||
except cv.Invalid:
|
except cv.Invalid:
|
||||||
pass
|
pass
|
||||||
raise cv.Invalid("Delta filter requires a positive number or percentage value.")
|
raise cv.Invalid("Delta filter requires a positive number or percentage value.")
|
||||||
|
|
||||||
|
|
||||||
@FILTER_REGISTRY.register("delta", DeltaFilter, validate_delta)
|
@FILTER_REGISTRY.register("delta", DeltaFilter, cv.Any(DELTA_SCHEMA, validate_delta))
|
||||||
async def delta_filter_to_code(config, filter_id):
|
async def delta_filter_to_code(config, filter_id):
|
||||||
return cg.new_Pvariable(filter_id, *config)
|
percentage = config[CONF_TYPE] == "percentage"
|
||||||
|
return cg.new_Pvariable(
|
||||||
|
filter_id,
|
||||||
|
config[CONF_VALUE],
|
||||||
|
percentage,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@FILTER_REGISTRY.register("or", OrFilter, validate_filters)
|
@FILTER_REGISTRY.register("or", OrFilter, validate_filters)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Constants used by esphome."""
|
"""Constants used by esphome."""
|
||||||
|
|
||||||
__version__ = "2023.4.0"
|
__version__ = "2023.4.1"
|
||||||
|
|
||||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue