import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import sensor, uart from esphome.const import ( CONF_DURATION, CONF_TEMPERATURE, DEVICE_CLASS_DURATION, DEVICE_CLASS_SPEED, DEVICE_CLASS_TEMPERATURE, STATE_CLASS_MEASUREMENT, STATE_CLASS_TOTAL_INCREASING, UNIT_CELSIUS, UNIT_HOUR, UNIT_REVOLUTIONS_PER_MINUTE, ) from . import CONF_OPTOMA_RS232_ID, optoma_ns, OptomaRS232Component DEPENDENCIES = ["optoma_rs232"] CONF_FAN_SPEED = "fan_speed" CONF_LAMP_TIME = "lamp_hours" CONFIG_SCHEMA = ( cv.Schema({ cv.GenerateID(CONF_OPTOMA_RS232_ID): cv.use_id(OptomaRS232Component), cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), cv.Optional(CONF_LAMP_TIME): sensor.sensor_schema( unit_of_measurement=UNIT_HOUR, accuracy_decimals=0, device_class=DEVICE_CLASS_DURATION, state_class=STATE_CLASS_TOTAL_INCREASING, ), cv.Optional(CONF_FAN_SPEED): sensor.sensor_schema( unit_of_measurement=UNIT_REVOLUTIONS_PER_MINUTE, accuracy_decimals=0, device_class=DEVICE_CLASS_SPEED, state_class=STATE_CLASS_MEASUREMENT, ), }) .extend( cv.polling_component_schema("10s"), uart.UART_DEVICE_SCHEMA ) ) async def to_code(config): hub = await cg.get_variable(config[CONF_OPTOMA_RS232_ID]) if cfg := config.get(CONF_TEMPERATURE): sens = await sensor.new_sensor(cfg) cg.add(hub.set_beamer_temp_sensor(sens)) if cfg := config.get(CONF_LAMP_TIME): sens = await sensor.new_sensor(cfg) cg.add(hub.set_beamer_lamp_time_sensor(sens)) if cfg := config.get(CONF_FAN_SPEED): sens = await sensor.new_sensor(cfg) cg.add(hub.set_beamer_fan1_sensor(sens)) # if cfg := config.get(): # sens = await sensor.new_sensor(cfg) # cg.add(hub.set_beamer_color_mode_sensor(sens))