1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-15 09:42:19 +01:00

Convert sensor_schema to use kwargs (#2094)

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Otto Winter
2021-08-01 12:21:32 +02:00
committed by GitHub
parent 81ae6709e4
commit 5c65f9f9ad
115 changed files with 1337 additions and 1371 deletions

View File

@@ -1,5 +1,4 @@
import math
from typing import Optional
import esphome.codegen as cg
import esphome.config_validation as cv
@@ -34,8 +33,6 @@ from esphome.const import (
LAST_RESET_TYPE_AUTO,
LAST_RESET_TYPE_NEVER,
LAST_RESET_TYPE_NONE,
UNIT_EMPTY,
ICON_EMPTY,
DEVICE_CLASS_EMPTY,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CARBON_MONOXIDE,
@@ -52,7 +49,6 @@ from esphome.const import (
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_TIMESTAMP,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_NONE,
)
from esphome.core import CORE, coroutine_with_priority
from esphome.util import Registry
@@ -169,19 +165,19 @@ CalibrateLinearFilter = sensor_ns.class_("CalibrateLinearFilter", Filter)
CalibratePolynomialFilter = sensor_ns.class_("CalibratePolynomialFilter", Filter)
SensorInRangeCondition = sensor_ns.class_("SensorInRangeCondition", Filter)
unit_of_measurement = cv.string_strict
accuracy_decimals = cv.int_
icon = cv.icon
device_class = cv.one_of(*DEVICE_CLASSES, lower=True, space="_")
validate_unit_of_measurement = cv.string_strict
validate_accuracy_decimals = cv.int_
validate_icon = cv.icon
validate_device_class = cv.one_of(*DEVICE_CLASSES, lower=True, space="_")
SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend(
{
cv.OnlyWith(CONF_MQTT_ID, "mqtt"): cv.declare_id(mqtt.MQTTSensorComponent),
cv.GenerateID(): cv.declare_id(Sensor),
cv.Optional(CONF_UNIT_OF_MEASUREMENT): unit_of_measurement,
cv.Optional(CONF_ICON): icon,
cv.Optional(CONF_ACCURACY_DECIMALS): accuracy_decimals,
cv.Optional(CONF_DEVICE_CLASS): device_class,
cv.Optional(CONF_UNIT_OF_MEASUREMENT): validate_unit_of_measurement,
cv.Optional(CONF_ICON): validate_icon,
cv.Optional(CONF_ACCURACY_DECIMALS): validate_accuracy_decimals,
cv.Optional(CONF_DEVICE_CLASS): validate_device_class,
cv.Optional(CONF_STATE_CLASS): validate_state_class,
cv.Optional(CONF_LAST_RESET_TYPE): validate_last_reset_type,
cv.Optional(CONF_FORCE_UPDATE, default=False): cv.boolean,
@@ -211,47 +207,53 @@ SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend(
}
)
_UNDEF = object()
def sensor_schema(
unit_of_measurement_: str,
icon_: str,
accuracy_decimals_: int,
device_class_: Optional[str] = DEVICE_CLASS_EMPTY,
state_class_: Optional[str] = STATE_CLASS_NONE,
last_reset_type_: Optional[str] = LAST_RESET_TYPE_NONE,
unit_of_measurement: str = _UNDEF,
icon: str = _UNDEF,
accuracy_decimals: int = _UNDEF,
device_class: str = _UNDEF,
state_class: str = _UNDEF,
last_reset_type: str = _UNDEF,
) -> cv.Schema:
schema = SENSOR_SCHEMA
if unit_of_measurement_ != UNIT_EMPTY:
if unit_of_measurement is not _UNDEF:
schema = schema.extend(
{
cv.Optional(
CONF_UNIT_OF_MEASUREMENT, default=unit_of_measurement_
): unit_of_measurement
CONF_UNIT_OF_MEASUREMENT, default=unit_of_measurement
): validate_unit_of_measurement
}
)
if icon_ != ICON_EMPTY:
schema = schema.extend({cv.Optional(CONF_ICON, default=icon_): icon})
if accuracy_decimals_ != 0:
if icon is not _UNDEF:
schema = schema.extend({cv.Optional(CONF_ICON, default=icon): validate_icon})
if accuracy_decimals is not _UNDEF:
schema = schema.extend(
{
cv.Optional(
CONF_ACCURACY_DECIMALS, default=accuracy_decimals_
): accuracy_decimals,
CONF_ACCURACY_DECIMALS, default=accuracy_decimals
): validate_accuracy_decimals,
}
)
if device_class_ != DEVICE_CLASS_EMPTY:
schema = schema.extend(
{cv.Optional(CONF_DEVICE_CLASS, default=device_class_): device_class}
)
if state_class_ != STATE_CLASS_NONE:
schema = schema.extend(
{cv.Optional(CONF_STATE_CLASS, default=state_class_): validate_state_class}
)
if last_reset_type_ != LAST_RESET_TYPE_NONE:
if device_class is not _UNDEF:
schema = schema.extend(
{
cv.Optional(
CONF_LAST_RESET_TYPE, default=last_reset_type_
CONF_DEVICE_CLASS, default=device_class
): validate_device_class
}
)
if state_class is not _UNDEF:
schema = schema.extend(
{cv.Optional(CONF_STATE_CLASS, default=state_class): validate_state_class}
)
if last_reset_type is not _UNDEF:
schema = schema.extend(
{
cv.Optional(
CONF_LAST_RESET_TYPE, default=last_reset_type
): validate_last_reset_type
}
)