49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
import esphome.codegen as cg
|
|
from esphome.components import text_sensor
|
|
import esphome.config_validation as cv
|
|
from esphome.const import CONF_ID, CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C
|
|
|
|
from ..sensor import ATM90E32Component
|
|
|
|
CONF_PHASE_STATUS = "phase_status"
|
|
CONF_FREQUENCY_STATUS = "frequency_status"
|
|
PHASE_KEYS = [CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C]
|
|
|
|
PHASE_STATUS_SCHEMA = cv.Schema(
|
|
{
|
|
cv.Optional(CONF_PHASE_A): text_sensor.text_sensor_schema(
|
|
icon="mdi:flash-alert"
|
|
),
|
|
cv.Optional(CONF_PHASE_B): text_sensor.text_sensor_schema(
|
|
icon="mdi:flash-alert"
|
|
),
|
|
cv.Optional(CONF_PHASE_C): text_sensor.text_sensor_schema(
|
|
icon="mdi:flash-alert"
|
|
),
|
|
}
|
|
)
|
|
|
|
CONFIG_SCHEMA = cv.Schema(
|
|
{
|
|
cv.GenerateID(): cv.use_id(ATM90E32Component),
|
|
cv.Optional(CONF_PHASE_STATUS): PHASE_STATUS_SCHEMA,
|
|
cv.Optional(CONF_FREQUENCY_STATUS): text_sensor.text_sensor_schema(
|
|
icon="mdi:lightbulb-alert"
|
|
),
|
|
}
|
|
)
|
|
|
|
|
|
async def to_code(config):
|
|
parent = await cg.get_variable(config[CONF_ID])
|
|
|
|
if phase_cfg := config.get(CONF_PHASE_STATUS):
|
|
for i, key in enumerate(PHASE_KEYS):
|
|
if sub_phase_cfg := phase_cfg.get(key):
|
|
sens = await text_sensor.new_text_sensor(sub_phase_cfg)
|
|
cg.add(parent.set_phase_status_text_sensor(i, sens))
|
|
|
|
if freq_status_config := config.get(CONF_FREQUENCY_STATUS):
|
|
sens = await text_sensor.new_text_sensor(freq_status_config)
|
|
cg.add(parent.set_freq_status_text_sensor(sens))
|