esphome/esphome/components/seeed_mr24hpc1/number/__init__.py

133 lines
5.0 KiB
Python

import esphome.codegen as cg
from esphome.components import number
import esphome.config_validation as cv
from esphome.const import (
CONF_SENSITIVITY,
ENTITY_CATEGORY_CONFIG,
)
from .. import CONF_MR24HPC1_ID, MR24HPC1Component, mr24hpc1_ns
SensitivityNumber = mr24hpc1_ns.class_("SensitivityNumber", number.Number)
CustomModeNumber = mr24hpc1_ns.class_("CustomModeNumber", number.Number)
ExistenceThresholdNumber = mr24hpc1_ns.class_("ExistenceThresholdNumber", number.Number)
MotionThresholdNumber = mr24hpc1_ns.class_("MotionThresholdNumber", number.Number)
MotionTriggerTimeNumber = mr24hpc1_ns.class_("MotionTriggerTimeNumber", number.Number)
MotionToRestTimeNumber = mr24hpc1_ns.class_("MotionToRestTimeNumber", number.Number)
CustomUnmanTimeNumber = mr24hpc1_ns.class_("CustomUnmanTimeNumber", number.Number)
CONF_CUSTOM_MODE = "custom_mode"
CONF_EXISTENCE_THRESHOLD = "existence_threshold"
CONF_MOTION_THRESHOLD = "motion_threshold"
CONF_MOTION_TRIGGER = "motion_trigger"
CONF_MOTION_TO_REST = "motion_to_rest"
CONF_CUSTOM_UNMAN_TIME = "custom_unman_time"
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_MR24HPC1_ID): cv.use_id(MR24HPC1Component),
cv.Optional(CONF_SENSITIVITY): number.number_schema(
SensitivityNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
icon="mdi:archive-check-outline",
),
cv.Optional(CONF_CUSTOM_MODE): number.number_schema(
CustomModeNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
icon="mdi:cog",
),
cv.Optional(CONF_EXISTENCE_THRESHOLD): number.number_schema(
ExistenceThresholdNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
),
cv.Optional(CONF_MOTION_THRESHOLD): number.number_schema(
MotionThresholdNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
),
cv.Optional(CONF_MOTION_TRIGGER): number.number_schema(
MotionTriggerTimeNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
icon="mdi:camera-timer",
unit_of_measurement="ms",
),
cv.Optional(CONF_MOTION_TO_REST): number.number_schema(
MotionToRestTimeNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
icon="mdi:camera-timer",
unit_of_measurement="ms",
),
cv.Optional(CONF_CUSTOM_UNMAN_TIME): number.number_schema(
CustomUnmanTimeNumber,
entity_category=ENTITY_CATEGORY_CONFIG,
icon="mdi:camera-timer",
unit_of_measurement="s",
),
}
)
async def to_code(config):
mr24hpc1_component = await cg.get_variable(config[CONF_MR24HPC1_ID])
if sensitivity_config := config.get(CONF_SENSITIVITY):
n = await number.new_number(
sensitivity_config,
min_value=0,
max_value=3,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_sensitivity_number(n))
if custom_mode_config := config.get(CONF_CUSTOM_MODE):
n = await number.new_number(
custom_mode_config,
min_value=0,
max_value=4,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_custom_mode_number(n))
if existence_threshold_config := config.get(CONF_EXISTENCE_THRESHOLD):
n = await number.new_number(
existence_threshold_config,
min_value=0,
max_value=250,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_existence_threshold_number(n))
if motion_threshold_config := config.get(CONF_MOTION_THRESHOLD):
n = await number.new_number(
motion_threshold_config,
min_value=0,
max_value=250,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_motion_threshold_number(n))
if motion_trigger_config := config.get(CONF_MOTION_TRIGGER):
n = await number.new_number(
motion_trigger_config,
min_value=0,
max_value=150,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_motion_trigger_number(n))
if motion_to_rest_config := config.get(CONF_MOTION_TO_REST):
n = await number.new_number(
motion_to_rest_config,
min_value=0,
max_value=3000,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_motion_to_rest_number(n))
if custom_unman_time_config := config.get(CONF_CUSTOM_UNMAN_TIME):
n = await number.new_number(
custom_unman_time_config,
min_value=0,
max_value=3600,
step=1,
)
await cg.register_parented(n, mr24hpc1_component)
cg.add(mr24hpc1_component.set_custom_unman_time_number(n))