136 lines
4.2 KiB
Python
Executable File
136 lines
4.2 KiB
Python
Executable File
import esphome.codegen as cg
|
|
import esphome.config_validation as cv
|
|
from esphome.components import text_sensor
|
|
from esphome.const import (
|
|
DEVICE_CLASS_HEAT,
|
|
)
|
|
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
|
|
|
|
ICON_OPERATING_MODE = "mdi:thermostat"
|
|
ICON_POWERFUL_MODE = "mdi:arm-flex"
|
|
ICON_QUIET_MODE = "mdi:sleep"
|
|
ICON_HOLIDAY_MODE = "mdi:palm-tree"
|
|
ICON_ERROR = "mdi:close-circle"
|
|
ICON_BLOCKED = "mdi:cancel"
|
|
ICON_HEATING_MODE = "mdi:fire"
|
|
ICON_COOLING_MODE = "mdi:snowflake"
|
|
ICON_ZONE = "mdi:texture-box"
|
|
ICON_MODEL = "mdi:heat-pump"
|
|
ICON_SOLAR_MODE = "mdi:solar-power-variant"
|
|
ICON_LIQUID = "mdi:water"
|
|
ICON_VALVE = "mdi:pipe-valve"
|
|
ICON_PUMP = "mdi:pump"
|
|
ICON_EXTERNAL_PAD_HEATER = "mdi:radiator"
|
|
|
|
CONF_TEXT_SENS_TOP4 = "top4"
|
|
CONF_TEXT_SENS_TOP17 = "top17"
|
|
CONF_TEXT_SENS_TOP18 = "top18"
|
|
CONF_TEXT_SENS_TOP19 = "top19"
|
|
CONF_TEXT_SENS_TOP20 = "top20"
|
|
CONF_TEXT_SENS_TOP44 = "top44"
|
|
CONF_TEXT_SENS_TOP58 = "top58"
|
|
CONF_TEXT_SENS_TOP59 = "top59"
|
|
CONF_TEXT_SENS_TOP76 = "top76"
|
|
CONF_TEXT_SENS_TOP81 = "top81"
|
|
CONF_TEXT_SENS_TOP92 = "top92"
|
|
CONF_TEXT_SENS_TOP94 = "top94"
|
|
CONF_TEXT_SENS_TOP101 = "top101"
|
|
CONF_TEXT_SENS_TOP106 = "top106"
|
|
CONF_TEXT_SENS_TOP107 = "top107"
|
|
CONF_TEXT_SENS_TOP111 = "top111"
|
|
CONF_TEXT_SENS_TOP112 = "top112"
|
|
CONF_TEXT_SENS_TOP114 = "top114"
|
|
CONF_TEXT_SENS_TOP124 = "top124"
|
|
|
|
TYPES = [
|
|
CONF_TEXT_SENS_TOP4,
|
|
CONF_TEXT_SENS_TOP17,
|
|
CONF_TEXT_SENS_TOP18,
|
|
CONF_TEXT_SENS_TOP19,
|
|
CONF_TEXT_SENS_TOP20,
|
|
CONF_TEXT_SENS_TOP44,
|
|
CONF_TEXT_SENS_TOP58,
|
|
CONF_TEXT_SENS_TOP59,
|
|
CONF_TEXT_SENS_TOP76,
|
|
CONF_TEXT_SENS_TOP81,
|
|
CONF_TEXT_SENS_TOP92,
|
|
CONF_TEXT_SENS_TOP94,
|
|
CONF_TEXT_SENS_TOP101,
|
|
CONF_TEXT_SENS_TOP106,
|
|
CONF_TEXT_SENS_TOP107,
|
|
CONF_TEXT_SENS_TOP111,
|
|
CONF_TEXT_SENS_TOP112,
|
|
CONF_TEXT_SENS_TOP114,
|
|
CONF_TEXT_SENS_TOP124,
|
|
]
|
|
|
|
CONFIG_SCHEMA = cv.All(
|
|
cv.Schema(
|
|
{
|
|
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
|
|
|
|
cv.Optional(CONF_TEXT_SENS_TOP4): text_sensor.text_sensor_schema(
|
|
icon=ICON_OPERATING_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP17): text_sensor.text_sensor_schema(
|
|
icon=ICON_POWERFUL_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP18): text_sensor.text_sensor_schema(
|
|
icon=ICON_QUIET_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP19): text_sensor.text_sensor_schema(
|
|
icon=ICON_HOLIDAY_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP20): text_sensor.text_sensor_schema(
|
|
icon=ICON_VALVE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP44): text_sensor.text_sensor_schema(
|
|
icon=ICON_ERROR,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP58): text_sensor.text_sensor_schema(
|
|
icon=ICON_BLOCKED,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP59): text_sensor.text_sensor_schema(
|
|
icon=ICON_BLOCKED,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP76): text_sensor.text_sensor_schema(
|
|
icon=ICON_HEATING_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP81): text_sensor.text_sensor_schema(
|
|
icon=ICON_COOLING_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP92): text_sensor.text_sensor_schema(
|
|
icon=ICON_MODEL,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP94): text_sensor.text_sensor_schema(
|
|
icon=ICON_ZONE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP101): text_sensor.text_sensor_schema(
|
|
icon=ICON_SOLAR_MODE,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP106): text_sensor.text_sensor_schema(
|
|
icon=ICON_PUMP,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP107): text_sensor.text_sensor_schema(
|
|
icon=ICON_LIQUID,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP111): text_sensor.text_sensor_schema(),
|
|
cv.Optional(CONF_TEXT_SENS_TOP112): text_sensor.text_sensor_schema(),
|
|
cv.Optional(CONF_TEXT_SENS_TOP114): text_sensor.text_sensor_schema(
|
|
icon=ICON_EXTERNAL_PAD_HEATER,
|
|
),
|
|
cv.Optional(CONF_TEXT_SENS_TOP124): text_sensor.text_sensor_schema(),
|
|
}
|
|
).extend(cv.COMPONENT_SCHEMA)
|
|
)
|
|
|
|
async def setup_conf(config, key, hub):
|
|
if sensor_config := config.get(key):
|
|
sens = await text_sensor.new_text_sensor(sensor_config)
|
|
cg.add(getattr(hub, f"set_{key}_text_sensor")(sens))
|
|
|
|
async def to_code(config):
|
|
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
|
|
for key in TYPES:
|
|
await setup_conf(config, key, hub)
|