1
0
mirror of https://github.com/esphome/esphome.git synced 2025-04-02 17:08:17 +01:00
Citric Lee 4bbde8357a
Add Seeed Studio mmWave Kit MR24HPC1 (#5761)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Peter Pan <twinkle-pirate@hotmail.com>
2024-03-12 16:33:40 +13:00

75 lines
3.5 KiB
Python

import esphome.codegen as cg
from esphome.components import text_sensor
import esphome.config_validation as cv
from esphome.const import ENTITY_CATEGORY_DIAGNOSTIC
from . import CONF_MR24HPC1_ID, MR24HPC1Component
CONF_HEART_BEAT = "heart_beat"
CONF_PRODUCT_MODEL = "product_model"
CONF_PRODUCT_ID = "product_id"
CONF_HARDWARE_MODEL = "hardware_model"
CONF_HARDWARE_VERSION = "hardware_version"
CONF_KEEP_AWAY = "keep_away"
CONF_MOTION_STATUS = "motion_status"
CONF_CUSTOM_MODE_END = "custom_mode_end"
# The entity category for read only diagnostic values, for example RSSI, uptime or MAC Address
CONFIG_SCHEMA = {
cv.GenerateID(CONF_MR24HPC1_ID): cv.use_id(MR24HPC1Component),
cv.Optional(CONF_HEART_BEAT): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:connection"
),
cv.Optional(CONF_PRODUCT_MODEL): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:information-outline"
),
cv.Optional(CONF_PRODUCT_ID): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:information-outline"
),
cv.Optional(CONF_HARDWARE_MODEL): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:information-outline"
),
cv.Optional(CONF_HARDWARE_VERSION): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:information-outline"
),
cv.Optional(CONF_KEEP_AWAY): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:walk"
),
cv.Optional(CONF_MOTION_STATUS): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:human-greeting"
),
cv.Optional(CONF_CUSTOM_MODE_END): text_sensor.text_sensor_schema(
entity_category=ENTITY_CATEGORY_DIAGNOSTIC, icon="mdi:account-check"
),
}
async def to_code(config):
mr24hpc1_component = await cg.get_variable(config[CONF_MR24HPC1_ID])
if heartbeat_config := config.get(CONF_HEART_BEAT):
sens = await text_sensor.new_text_sensor(heartbeat_config)
cg.add(mr24hpc1_component.set_heartbeat_state_text_sensor(sens))
if productmodel_config := config.get(CONF_PRODUCT_MODEL):
sens = await text_sensor.new_text_sensor(productmodel_config)
cg.add(mr24hpc1_component.set_product_model_text_sensor(sens))
if productid_config := config.get(CONF_PRODUCT_ID):
sens = await text_sensor.new_text_sensor(productid_config)
cg.add(mr24hpc1_component.set_product_id_text_sensor(sens))
if hardwaremodel_config := config.get(CONF_HARDWARE_MODEL):
sens = await text_sensor.new_text_sensor(hardwaremodel_config)
cg.add(mr24hpc1_component.set_hardware_model_text_sensor(sens))
if firwareversion_config := config.get(CONF_HARDWARE_VERSION):
sens = await text_sensor.new_text_sensor(firwareversion_config)
cg.add(mr24hpc1_component.set_firware_version_text_sensor(sens))
if keepaway_config := config.get(CONF_KEEP_AWAY):
sens = await text_sensor.new_text_sensor(keepaway_config)
cg.add(mr24hpc1_component.set_keep_away_text_sensor(sens))
if motionstatus_config := config.get(CONF_MOTION_STATUS):
sens = await text_sensor.new_text_sensor(motionstatus_config)
cg.add(mr24hpc1_component.set_motion_status_text_sensor(sens))
if custommodeend_config := config.get(CONF_CUSTOM_MODE_END):
sens = await text_sensor.new_text_sensor(custommodeend_config)
cg.add(mr24hpc1_component.set_custom_mode_end_text_sensor(sens))