import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import sensor from esphome.const import ( DEVICE_CLASS_VOLTAGE, STATE_CLASS_MEASUREMENT, ICON_CURRENT_AC, UNIT_VOLT, CONF_CHANNEL, ) from .. import CONF_ADS131M08_ID, ads131m08_ns CONF_AC = "ac" AUTO_LOAD = ["sensor",] DEPENDENCIES = ["ads131m08"] RMS_SENSOR = ads131m08_ns.class_( "RMS_Sensor", sensor.Sensor, cg.Component ) RMS_SENSOR_SCHEMA = cv.Schema( { cv.Optional(CONF_AC): sensor.sensor_schema( RMS_SENSOR, accuracy_decimals=6, icon=ICON_CURRENT_AC, unit_of_measurement=UNIT_VOLT, device_class=DEVICE_CLASS_VOLTAGE, state_class=STATE_CLASS_MEASUREMENT, ), } ).extend (cv.COMPONENT_SCHEMA) async def to_code_ac(config): hub = await cg.get_variable(config[CONF_ADS131M08_ID]) channel = config[CONF_CHANNEL] if ac_config := config.get(CONF_AC): sens_ac = await sensor.new_sensor(ac_config) cg.add(sens_ac.set_calc_rms(True)) cg.add(hub.register_sensor_ac(channel, sens_ac)) await cg.register_component(sens_ac, config[CONF_AC]) return sens_ac return None