2025-03-14 17:57:43 +01:00

68 lines
2.1 KiB
Python

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_DURATION):
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))