import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import sensor from esphome.const import ( UNIT_AMPERE, UNIT_CELSIUS, UNIT_HERTZ, UNIT_HOUR, UNIT_KELVIN, UNIT_MINUTE, UNIT_WATT, UNIT_EMPTY, DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_DURATION, DEVICE_CLASS_FREQUENCY, DEVICE_CLASS_POWER, DEVICE_CLASS_PRESSURE, DEVICE_CLASS_CURRENT, DEVICE_CLASS_VOLUME_FLOW_RATE, STATE_CLASS_MEASUREMENT, STATE_CLASS_TOTAL_INCREASING, ICON_COUNTER, ) from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID UNIT_LITRE_PER_MINUTE = "L/min" UNIT_ROTATIONS_PER_MINUTE = "r/min" UNIT_PRESSURE_KGFCM2 = "kgf/cm²" UNIT_BAR = "bar" ICON_FAN_SPEED = "mdi:fan" CONF_SENS_TOP1 = "top1" CONF_SENS_TOP5 = "top5" CONF_SENS_TOP6 = "top6" CONF_SENS_TOP7 = "top7" CONF_SENS_TOP8 = "top8" CONF_SENS_TOP9 = "top9" CONF_SENS_TOP10 = "top10" CONF_SENS_TOP11 = "top11" CONF_SENS_TOP12 = "top12" CONF_SENS_TOP14 = "top14" CONF_SENS_TOP15 = "top15" CONF_SENS_TOP16 = "top16" CONF_SENS_TOP21 = "top21" CONF_SENS_TOP22 = "top22" CONF_SENS_TOP23 = "top23" CONF_SENS_TOP24 = "top24" CONF_SENS_TOP25 = "top25" CONF_SENS_TOP27 = "top27" CONF_SENS_TOP28 = "top28" CONF_SENS_TOP29 = "top29" CONF_SENS_TOP30 = "top30" CONF_SENS_TOP31 = "top31" CONF_SENS_TOP32 = "top32" CONF_SENS_TOP33 = "top33" CONF_SENS_TOP34 = "top34" CONF_SENS_TOP35 = "top35" CONF_SENS_TOP36 = "top36" CONF_SENS_TOP37 = "top37" CONF_SENS_TOP38 = "top38" CONF_SENS_TOP39 = "top39" CONF_SENS_TOP40 = "top40" CONF_SENS_TOP41 = "top41" CONF_SENS_TOP42 = "top42" CONF_SENS_TOP43 = "top43" CONF_SENS_TOP45 = "top45" CONF_SENS_TOP46 = "top46" CONF_SENS_TOP47 = "top47" CONF_SENS_TOP48 = "top48" CONF_SENS_TOP49 = "top49" CONF_SENS_TOP50 = "top50" CONF_SENS_TOP51 = "top51" CONF_SENS_TOP52 = "top52" CONF_SENS_TOP53 = "top53" CONF_SENS_TOP54 = "top54" CONF_SENS_TOP55 = "top55" CONF_SENS_TOP56 = "top56" CONF_SENS_TOP57 = "top57" CONF_SENS_TOP62 = "top62" CONF_SENS_TOP63 = "top63" CONF_SENS_TOP64 = "top64" CONF_SENS_TOP65 = "top65" CONF_SENS_TOP66 = "top66" CONF_SENS_TOP67 = "top67" CONF_SENS_TOP70 = "top70" CONF_SENS_TOP71 = "top71" CONF_SENS_TOP72 = "top72" CONF_SENS_TOP73 = "top73" CONF_SENS_TOP74 = "top74" CONF_SENS_TOP75 = "top75" CONF_SENS_TOP77 = "top77" CONF_SENS_TOP78 = "top78" CONF_SENS_TOP79 = "top79" CONF_SENS_TOP80 = "top80" CONF_SENS_TOP82 = "top82" CONF_SENS_TOP83 = "top83" CONF_SENS_TOP84 = "top84" CONF_SENS_TOP85 = "top85" CONF_SENS_TOP86 = "top86" CONF_SENS_TOP87 = "top87" CONF_SENS_TOP88 = "top88" CONF_SENS_TOP89 = "top89" CONF_SENS_TOP90 = "top90" CONF_SENS_TOP91 = "top91" CONF_SENS_TOP93 = "top93" CONF_SENS_TOP95 = "top95" CONF_SENS_TOP96 = "top96" CONF_SENS_TOP97 = "top97" CONF_SENS_TOP98 = "top98" CONF_SENS_TOP102 = "top102" CONF_SENS_TOP103 = "top103" CONF_SENS_TOP104 = "top104" CONF_SENS_TOP105 = "top105" CONF_SENS_TOP113 = "top113" CONF_SENS_TOP115 = "top115" CONF_SENS_TOP116 = "top116" CONF_SENS_TOP117 = "top117" CONF_SENS_TOP118 = "top118" CONF_SENS_TOP119 = "top119" CONF_SENS_TOP120 = "top120" CONF_SENS_TOP121 = "top121" CONF_SENS_TOP122 = "top122" CONF_SENS_TOP123 = "top123" CONF_SENS_TOP125 = "top125" CONF_SENS_TOP126 = "top126" TYPES = [ CONF_SENS_TOP1, CONF_SENS_TOP5, CONF_SENS_TOP6, CONF_SENS_TOP7, CONF_SENS_TOP8, CONF_SENS_TOP9, CONF_SENS_TOP10, CONF_SENS_TOP11, CONF_SENS_TOP12, CONF_SENS_TOP14, CONF_SENS_TOP15, CONF_SENS_TOP16, CONF_SENS_TOP21, CONF_SENS_TOP22, CONF_SENS_TOP23, CONF_SENS_TOP24, CONF_SENS_TOP25, CONF_SENS_TOP27, CONF_SENS_TOP28, CONF_SENS_TOP29, CONF_SENS_TOP30, CONF_SENS_TOP31, CONF_SENS_TOP32, CONF_SENS_TOP33, CONF_SENS_TOP34, CONF_SENS_TOP35, CONF_SENS_TOP36, CONF_SENS_TOP37, CONF_SENS_TOP38, CONF_SENS_TOP39, CONF_SENS_TOP40, CONF_SENS_TOP41, CONF_SENS_TOP42, CONF_SENS_TOP43, CONF_SENS_TOP45, CONF_SENS_TOP46, CONF_SENS_TOP47, CONF_SENS_TOP48, CONF_SENS_TOP49, CONF_SENS_TOP50, CONF_SENS_TOP51, CONF_SENS_TOP52, CONF_SENS_TOP53, CONF_SENS_TOP54, CONF_SENS_TOP55, CONF_SENS_TOP56, CONF_SENS_TOP57, CONF_SENS_TOP62, CONF_SENS_TOP63, CONF_SENS_TOP64, CONF_SENS_TOP65, CONF_SENS_TOP66, CONF_SENS_TOP67, CONF_SENS_TOP70, CONF_SENS_TOP71, CONF_SENS_TOP72, CONF_SENS_TOP73, CONF_SENS_TOP74, CONF_SENS_TOP75, CONF_SENS_TOP77, CONF_SENS_TOP78, CONF_SENS_TOP79, CONF_SENS_TOP80, CONF_SENS_TOP82, CONF_SENS_TOP83, CONF_SENS_TOP84, CONF_SENS_TOP85, CONF_SENS_TOP86, CONF_SENS_TOP87, CONF_SENS_TOP88, CONF_SENS_TOP89, CONF_SENS_TOP90, CONF_SENS_TOP91, CONF_SENS_TOP93, CONF_SENS_TOP95, CONF_SENS_TOP96, CONF_SENS_TOP97, CONF_SENS_TOP98, CONF_SENS_TOP102, CONF_SENS_TOP103, CONF_SENS_TOP104, CONF_SENS_TOP105, CONF_SENS_TOP113, CONF_SENS_TOP115, CONF_SENS_TOP116, CONF_SENS_TOP117, CONF_SENS_TOP118, CONF_SENS_TOP119, CONF_SENS_TOP120, CONF_SENS_TOP121, CONF_SENS_TOP122, CONF_SENS_TOP123, CONF_SENS_TOP125, CONF_SENS_TOP126, ] CONFIG_SCHEMA = cv.All( cv.Schema( { cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent), cv.Optional(CONF_SENS_TOP1): sensor.sensor_schema( device_class=DEVICE_CLASS_VOLUME_FLOW_RATE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_LITRE_PER_MINUTE, ), cv.Optional(CONF_SENS_TOP5): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP6): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP7): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP8): sensor.sensor_schema( device_class=DEVICE_CLASS_FREQUENCY, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_HERTZ, ), cv.Optional(CONF_SENS_TOP9): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP10): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP11): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_TOTAL_INCREASING, unit_of_measurement = UNIT_HOUR, ), cv.Optional(CONF_SENS_TOP12): sensor.sensor_schema( unit_of_measurement=UNIT_EMPTY, icon=ICON_COUNTER, ), cv.Optional(CONF_SENS_TOP14): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP15): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP16): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP21): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP22): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP23): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP24): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP25): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP27): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP28): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP29): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP30): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP31): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP32): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP33): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP34): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP35): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP36): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP37): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP38): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP39): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP40): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP41): sensor.sensor_schema( device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_WATT, ), cv.Optional(CONF_SENS_TOP42): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP43): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP45): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP46): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP47): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP48): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP49): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP50): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP51): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP52): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP53): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP54): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP55): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP56): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP57): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP62): sensor.sensor_schema( icon=ICON_FAN_SPEED, unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE, ), cv.Optional(CONF_SENS_TOP63): sensor.sensor_schema( icon=ICON_FAN_SPEED, unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE, ), cv.Optional(CONF_SENS_TOP64): sensor.sensor_schema( device_class=DEVICE_CLASS_PRESSURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_PRESSURE_KGFCM2, ), cv.Optional(CONF_SENS_TOP65): sensor.sensor_schema( unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE, ), cv.Optional(CONF_SENS_TOP66): sensor.sensor_schema( device_class=DEVICE_CLASS_PRESSURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_PRESSURE_KGFCM2, ), cv.Optional(CONF_SENS_TOP67): sensor.sensor_schema( device_class=DEVICE_CLASS_CURRENT, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_AMPERE, ), cv.Optional(CONF_SENS_TOP70): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP71): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_MINUTE, ), cv.Optional(CONF_SENS_TOP72): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP73): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP74): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP75): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP77): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP78): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP79): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP80): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP82): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP83): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP84): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP85): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP86): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP87): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP88): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP89): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP90): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_TOTAL_INCREASING, unit_of_measurement = UNIT_HOUR, ), cv.Optional(CONF_SENS_TOP91): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_TOTAL_INCREASING, unit_of_measurement = UNIT_HOUR, ), cv.Optional(CONF_SENS_TOP93): sensor.sensor_schema(), cv.Optional(CONF_SENS_TOP95): sensor.sensor_schema(), cv.Optional(CONF_SENS_TOP96): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_MINUTE, ), cv.Optional(CONF_SENS_TOP97): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP98): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP102): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP103): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP104): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP105): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP113): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_KELVIN, ), cv.Optional(CONF_SENS_TOP115): sensor.sensor_schema( device_class=DEVICE_CLASS_PRESSURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_BAR, ), cv.Optional(CONF_SENS_TOP116): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP117): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP118): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP119): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP120): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP121): sensor.sensor_schema( device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_CELSIUS, ), cv.Optional(CONF_SENS_TOP122): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_MINUTE, ), cv.Optional(CONF_SENS_TOP123): sensor.sensor_schema( device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_MEASUREMENT, unit_of_measurement = UNIT_MINUTE, ), cv.Optional(CONF_SENS_TOP125): sensor.sensor_schema( unit_of_measurement=UNIT_EMPTY, icon=ICON_COUNTER, ), cv.Optional(CONF_SENS_TOP126): sensor.sensor_schema( unit_of_measurement=UNIT_EMPTY, icon=ICON_COUNTER, ), } ).extend(cv.COMPONENT_SCHEMA) ) async def setup_conf(config, key, hub): if sensor_config := config.get(key): sens = await sensor.new_sensor(sensor_config) cg.add(getattr(hub, f"set_{key}_sensor")(sens)) async def to_code(config): hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID]) for key in TYPES: await setup_conf(config, key, hub)