59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
import esphome.codegen as cg
|
|
from esphome.components import select
|
|
import esphome.config_validation as cv
|
|
from esphome.const import CONF_SENSITIVITY, ENTITY_CATEGORY_CONFIG, ICON_ACCELERATION_Z
|
|
|
|
from .. import CONF_MR60FDA2_ID, MR60FDA2Component, mr60fda2_ns
|
|
|
|
DEPENDENCIES = ["seeed_mr60fda2"]
|
|
|
|
InstallHeightSelect = mr60fda2_ns.class_("InstallHeightSelect", select.Select)
|
|
HeightThresholdSelect = mr60fda2_ns.class_("HeightThresholdSelect", select.Select)
|
|
SensitivitySelect = mr60fda2_ns.class_("SensitivitySelect", select.Select)
|
|
|
|
CONF_INSTALL_HEIGHT = "install_height"
|
|
CONF_HEIGHT_THRESHOLD = "height_threshold"
|
|
|
|
CONFIG_SCHEMA = {
|
|
cv.GenerateID(CONF_MR60FDA2_ID): cv.use_id(MR60FDA2Component),
|
|
cv.Optional(CONF_INSTALL_HEIGHT): select.select_schema(
|
|
InstallHeightSelect,
|
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
|
icon=ICON_ACCELERATION_Z,
|
|
),
|
|
cv.Optional(CONF_HEIGHT_THRESHOLD): select.select_schema(
|
|
HeightThresholdSelect,
|
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
|
icon=ICON_ACCELERATION_Z,
|
|
),
|
|
cv.Optional(CONF_SENSITIVITY): select.select_schema(
|
|
SensitivitySelect,
|
|
entity_category=ENTITY_CATEGORY_CONFIG,
|
|
),
|
|
}
|
|
|
|
|
|
async def to_code(config):
|
|
mr60fda2_component = await cg.get_variable(config[CONF_MR60FDA2_ID])
|
|
if install_height_config := config.get(CONF_INSTALL_HEIGHT):
|
|
s = await select.new_select(
|
|
install_height_config,
|
|
options=["2.4m", "2.5m", "2.6m", "2.7m", "2.8m", "2.9m", "3.0m"],
|
|
)
|
|
await cg.register_parented(s, config[CONF_MR60FDA2_ID])
|
|
cg.add(mr60fda2_component.set_install_height_select(s))
|
|
if height_threshold_config := config.get(CONF_HEIGHT_THRESHOLD):
|
|
s = await select.new_select(
|
|
height_threshold_config,
|
|
options=["0.0m", "0.1m", "0.2m", "0.3m", "0.4m", "0.5m", "0.6m"],
|
|
)
|
|
await cg.register_parented(s, config[CONF_MR60FDA2_ID])
|
|
cg.add(mr60fda2_component.set_height_threshold_select(s))
|
|
if sensitivity_config := config.get(CONF_SENSITIVITY):
|
|
s = await select.new_select(
|
|
sensitivity_config,
|
|
options=["1", "2", "3"],
|
|
)
|
|
await cg.register_parented(s, config[CONF_MR60FDA2_ID])
|
|
cg.add(mr60fda2_component.set_sensitivity_select(s))
|