mirror of
https://github.com/esphome/esphome.git
synced 2025-10-30 06:33:51 +00:00
Number mode (#2838)
This commit is contained in:
@@ -7,6 +7,7 @@ from esphome.const import (
|
||||
CONF_ABOVE,
|
||||
CONF_BELOW,
|
||||
CONF_ID,
|
||||
CONF_MODE,
|
||||
CONF_ON_VALUE,
|
||||
CONF_ON_VALUE_RANGE,
|
||||
CONF_TRIGGER_ID,
|
||||
@@ -40,6 +41,14 @@ NumberInRangeCondition = number_ns.class_(
|
||||
"NumberInRangeCondition", automation.Condition
|
||||
)
|
||||
|
||||
NumberMode = number_ns.enum("NumberMode")
|
||||
|
||||
NUMBER_MODES = {
|
||||
"AUTO": NumberMode.NUMBER_MODE_AUTO,
|
||||
"BOX": NumberMode.NUMBER_MODE_BOX,
|
||||
"SLIDER": NumberMode.NUMBER_MODE_SLIDER,
|
||||
}
|
||||
|
||||
icon = cv.icon
|
||||
|
||||
NUMBER_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA).extend(
|
||||
@@ -60,6 +69,7 @@ NUMBER_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA).e
|
||||
cv.has_at_least_one_key(CONF_ABOVE, CONF_BELOW),
|
||||
),
|
||||
cv.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string_strict,
|
||||
cv.Optional(CONF_MODE, default="AUTO"): cv.enum(NUMBER_MODES, upper=True),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -74,6 +84,8 @@ async def setup_number_core_(
|
||||
if step is not None:
|
||||
cg.add(var.traits.set_step(step))
|
||||
|
||||
cg.add(var.traits.set_mode(config[CONF_MODE]))
|
||||
|
||||
for conf in config.get(CONF_ON_VALUE, []):
|
||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||
await automation.build_automation(trigger, [(float, "x")], conf)
|
||||
|
||||
Reference in New Issue
Block a user