components/ads131m08/sensor_rms/__init__.py

44 lines
1.2 KiB
Python

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