Hoist mqtt name property and add icon support to MqttEntity (#47165)
* hoist common MqttEntity properties * remove default name for MqttEntity Default naming is sensible enough * disable overriding common MqttEntity schema * merge common MqttEntity schemas into MQTT_ENTITY_COMMON_SCHEMA
This commit is contained in:
parent
724574d336
commit
9e487eb260
17 changed files with 235 additions and 565 deletions
|
@ -14,9 +14,7 @@ from homeassistant.components.alarm_control_panel.const import (
|
|||
)
|
||||
from homeassistant.const import (
|
||||
CONF_CODE,
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
STATE_ALARM_ARMED_AWAY,
|
||||
STATE_ALARM_ARMED_CUSTOM_BYPASS,
|
||||
|
@ -44,13 +42,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -70,34 +62,28 @@ DEFAULT_ARM_HOME = "ARM_HOME"
|
|||
DEFAULT_ARM_CUSTOM_BYPASS = "ARM_CUSTOM_BYPASS"
|
||||
DEFAULT_DISARM = "DISARM"
|
||||
DEFAULT_NAME = "MQTT Alarm"
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_CODE): cv.string,
|
||||
vol.Optional(CONF_CODE_ARM_REQUIRED, default=True): cv.boolean,
|
||||
vol.Optional(CONF_CODE_DISARM_REQUIRED, default=True): cv.boolean,
|
||||
vol.Optional(
|
||||
CONF_COMMAND_TEMPLATE, default=DEFAULT_COMMAND_TEMPLATE
|
||||
): cv.template,
|
||||
vol.Required(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_AWAY, default=DEFAULT_ARM_AWAY): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_HOME, default=DEFAULT_ARM_HOME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_NIGHT, default=DEFAULT_ARM_NIGHT): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_ARM_CUSTOM_BYPASS, default=DEFAULT_ARM_CUSTOM_BYPASS
|
||||
): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_DISARM, default=DEFAULT_DISARM): cv.string,
|
||||
vol.Optional(CONF_RETAIN, default=mqtt.DEFAULT_RETAIN): cv.boolean,
|
||||
vol.Required(CONF_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_CODE): cv.string,
|
||||
vol.Optional(CONF_CODE_ARM_REQUIRED, default=True): cv.boolean,
|
||||
vol.Optional(CONF_CODE_DISARM_REQUIRED, default=True): cv.boolean,
|
||||
vol.Optional(
|
||||
CONF_COMMAND_TEMPLATE, default=DEFAULT_COMMAND_TEMPLATE
|
||||
): cv.template,
|
||||
vol.Required(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_AWAY, default=DEFAULT_ARM_AWAY): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_HOME, default=DEFAULT_ARM_HOME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ARM_NIGHT, default=DEFAULT_ARM_NIGHT): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_ARM_CUSTOM_BYPASS, default=DEFAULT_ARM_CUSTOM_BYPASS
|
||||
): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_DISARM, default=DEFAULT_DISARM): cv.string,
|
||||
vol.Optional(CONF_RETAIN, default=mqtt.DEFAULT_RETAIN): cv.boolean,
|
||||
vol.Required(CONF_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -138,7 +124,6 @@ class MqttAlarm(MqttEntity, alarm.AlarmControlPanelEntity):
|
|||
return PLATFORM_SCHEMA
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
value_template = self._config.get(CONF_VALUE_TEMPLATE)
|
||||
if value_template is not None:
|
||||
value_template.hass = self.hass
|
||||
|
@ -186,11 +171,6 @@ class MqttAlarm(MqttEntity, alarm.AlarmControlPanelEntity):
|
|||
},
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return the state of the device."""
|
||||
|
|
|
@ -11,13 +11,11 @@ from homeassistant.components.binary_sensor import (
|
|||
BinarySensorEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_DEVICE_CLASS,
|
||||
CONF_FORCE_UPDATE,
|
||||
CONF_NAME,
|
||||
CONF_PAYLOAD_OFF,
|
||||
CONF_PAYLOAD_ON,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
|
@ -32,9 +30,7 @@ from . import CONF_QOS, CONF_STATE_TOPIC, DOMAIN, PLATFORMS, subscription
|
|||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MQTT_ENTITY_COMMON_SCHEMA,
|
||||
MqttAvailability,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
|
@ -49,23 +45,17 @@ DEFAULT_PAYLOAD_ON = "ON"
|
|||
DEFAULT_FORCE_UPDATE = False
|
||||
CONF_EXPIRE_AFTER = "expire_after"
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_EXPIRE_AFTER): cv.positive_int,
|
||||
vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OFF_DELAY): cv.positive_int,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_EXPIRE_AFTER): cv.positive_int,
|
||||
vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OFF_DELAY): cv.positive_int,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -113,7 +103,6 @@ class MqttBinarySensor(MqttEntity, BinarySensorEntity):
|
|||
return PLATFORM_SCHEMA
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
value_template = self._config.get(CONF_VALUE_TEMPLATE)
|
||||
if value_template is not None:
|
||||
value_template.hass = self.hass
|
||||
|
@ -218,11 +207,6 @@ class MqttBinarySensor(MqttEntity, BinarySensorEntity):
|
|||
|
||||
self.async_write_ha_state()
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the binary sensor."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return true if the binary sensor is on."""
|
||||
|
|
|
@ -5,7 +5,7 @@ import voluptuous as vol
|
|||
|
||||
from homeassistant.components import camera
|
||||
from homeassistant.components.camera import Camera
|
||||
from homeassistant.const import CONF_DEVICE, CONF_NAME, CONF_UNIQUE_ID
|
||||
from homeassistant.const import CONF_NAME
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.reload import async_setup_reload_service
|
||||
|
@ -14,29 +14,17 @@ from homeassistant.helpers.typing import ConfigType, HomeAssistantType
|
|||
from . import CONF_QOS, DOMAIN, PLATFORMS, subscription
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
CONF_TOPIC = "topic"
|
||||
DEFAULT_NAME = "MQTT Camera"
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Required(CONF_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Required(CONF_TOPIC): mqtt.valid_subscribe_topic,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -77,9 +65,6 @@ class MqttCamera(MqttEntity, Camera):
|
|||
"""Return the config schema."""
|
||||
return PLATFORM_SCHEMA
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
|
||||
async def _subscribe_topics(self):
|
||||
"""(Re)Subscribe to topics."""
|
||||
|
||||
|
@ -105,8 +90,3 @@ class MqttCamera(MqttEntity, Camera):
|
|||
async def async_camera_image(self):
|
||||
"""Return image response."""
|
||||
return self._last_image
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of this camera."""
|
||||
return self._config[CONF_NAME]
|
||||
|
|
|
@ -36,12 +36,10 @@ from homeassistant.components.climate.const import (
|
|||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_TEMPERATURE,
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_PAYLOAD_OFF,
|
||||
CONF_PAYLOAD_ON,
|
||||
CONF_TEMPERATURE_UNIT,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
PRECISION_HALVES,
|
||||
PRECISION_TENTHS,
|
||||
|
@ -63,13 +61,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -178,90 +170,84 @@ TOPIC_KEYS = (
|
|||
)
|
||||
|
||||
SCHEMA_BASE = CLIMATE_PLATFORM_SCHEMA.extend(MQTT_BASE_PLATFORM_SCHEMA.schema)
|
||||
PLATFORM_SCHEMA = (
|
||||
SCHEMA_BASE.extend(
|
||||
{
|
||||
vol.Optional(CONF_AUX_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_AUX_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_AUX_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_AWAY_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_AWAY_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_AWAY_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_CURRENT_TEMP_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_CURRENT_TEMP_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_FAN_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_FAN_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_FAN_MODE_LIST,
|
||||
default=[FAN_AUTO, FAN_LOW, FAN_MEDIUM, FAN_HIGH],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_FAN_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_FAN_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_HOLD_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_HOLD_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_HOLD_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_HOLD_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_HOLD_LIST, default=list): cv.ensure_list,
|
||||
vol.Optional(CONF_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_MODE_LIST,
|
||||
default=[
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default="ON"): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default="OFF"): cv.string,
|
||||
vol.Optional(CONF_POWER_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_POWER_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_POWER_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_PRECISION): vol.In(
|
||||
[PRECISION_TENTHS, PRECISION_HALVES, PRECISION_WHOLE]
|
||||
),
|
||||
vol.Optional(CONF_RETAIN, default=mqtt.DEFAULT_RETAIN): cv.boolean,
|
||||
vol.Optional(CONF_SEND_IF_OFF, default=True): cv.boolean,
|
||||
vol.Optional(CONF_ACTION_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_ACTION_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_SWING_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_SWING_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_SWING_MODE_LIST, default=[STATE_ON, HVAC_MODE_OFF]
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_SWING_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_SWING_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_INITIAL, default=21): cv.positive_int,
|
||||
vol.Optional(CONF_TEMP_MIN, default=DEFAULT_MIN_TEMP): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_MAX, default=DEFAULT_MAX_TEMP): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_STEP, default=1.0): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_HIGH_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_LOW_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMPERATURE_UNIT): cv.temperature_unit,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = SCHEMA_BASE.extend(
|
||||
{
|
||||
vol.Optional(CONF_AUX_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_AUX_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_AUX_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_AWAY_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_AWAY_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_AWAY_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_CURRENT_TEMP_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_CURRENT_TEMP_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_FAN_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_FAN_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_FAN_MODE_LIST,
|
||||
default=[FAN_AUTO, FAN_LOW, FAN_MEDIUM, FAN_HIGH],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_FAN_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_FAN_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_HOLD_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_HOLD_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_HOLD_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_HOLD_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_HOLD_LIST, default=list): cv.ensure_list,
|
||||
vol.Optional(CONF_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_MODE_LIST,
|
||||
default=[
|
||||
HVAC_MODE_AUTO,
|
||||
HVAC_MODE_OFF,
|
||||
HVAC_MODE_COOL,
|
||||
HVAC_MODE_HEAT,
|
||||
HVAC_MODE_DRY,
|
||||
HVAC_MODE_FAN_ONLY,
|
||||
],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default="ON"): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default="OFF"): cv.string,
|
||||
vol.Optional(CONF_POWER_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_POWER_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_POWER_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_PRECISION): vol.In(
|
||||
[PRECISION_TENTHS, PRECISION_HALVES, PRECISION_WHOLE]
|
||||
),
|
||||
vol.Optional(CONF_RETAIN, default=mqtt.DEFAULT_RETAIN): cv.boolean,
|
||||
vol.Optional(CONF_SEND_IF_OFF, default=True): cv.boolean,
|
||||
vol.Optional(CONF_ACTION_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_ACTION_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_SWING_MODE_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_SWING_MODE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_SWING_MODE_LIST, default=[STATE_ON, HVAC_MODE_OFF]
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_SWING_MODE_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_SWING_MODE_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_INITIAL, default=21): cv.positive_int,
|
||||
vol.Optional(CONF_TEMP_MIN, default=DEFAULT_MIN_TEMP): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_MAX, default=DEFAULT_MAX_TEMP): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_STEP, default=1.0): vol.Coerce(float),
|
||||
vol.Optional(CONF_TEMP_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_HIGH_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_HIGH_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_COMMAND_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_TEMP_LOW_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_LOW_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMP_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TEMP_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TEMPERATURE_UNIT): cv.temperature_unit,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -321,7 +307,6 @@ class MqttClimate(MqttEntity, ClimateEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
self._topic = {key: config.get(key) for key in TOPIC_KEYS}
|
||||
|
||||
# set to None in non-optimistic mode
|
||||
|
@ -563,11 +548,6 @@ class MqttClimate(MqttEntity, ClimateEntity):
|
|||
self.hass, self._sub_state, topics
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the climate device."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def temperature_unit(self):
|
||||
"""Return the unit of measurement."""
|
||||
|
|
|
@ -20,11 +20,9 @@ from homeassistant.components.cover import (
|
|||
CoverEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_DEVICE_CLASS,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
STATE_CLOSED,
|
||||
STATE_CLOSING,
|
||||
|
@ -48,13 +46,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -147,7 +139,6 @@ PLATFORM_SCHEMA = vol.All(
|
|||
mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_GET_POSITION_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
|
@ -183,14 +174,11 @@ PLATFORM_SCHEMA = vol.All(
|
|||
): cv.boolean,
|
||||
vol.Optional(CONF_TILT_STATUS_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_TILT_STATUS_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_GET_POSITION_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_TILT_COMMAND_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema),
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema),
|
||||
validate_options,
|
||||
)
|
||||
|
||||
|
@ -238,7 +226,6 @@ class MqttCover(MqttEntity, CoverEntity):
|
|||
return PLATFORM_SCHEMA
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
self._optimistic = config[CONF_OPTIMISTIC] or (
|
||||
config.get(CONF_STATE_TOPIC) is None
|
||||
and config.get(CONF_GET_POSITION_TOPIC) is None
|
||||
|
@ -399,11 +386,6 @@ class MqttCover(MqttEntity, CoverEntity):
|
|||
"""Return true if we do optimistic updates."""
|
||||
return self._optimistic
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the cover."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_closed(self):
|
||||
"""Return true if the cover is closed or None if the status is unknown."""
|
||||
|
|
|
@ -10,10 +10,7 @@ from homeassistant.const import (
|
|||
ATTR_GPS_ACCURACY,
|
||||
ATTR_LATITUDE,
|
||||
ATTR_LONGITUDE,
|
||||
CONF_DEVICE,
|
||||
CONF_ICON,
|
||||
CONF_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
STATE_HOME,
|
||||
STATE_NOT_HOME,
|
||||
|
@ -25,33 +22,20 @@ from .. import subscription
|
|||
from ... import mqtt
|
||||
from ..const import CONF_QOS, CONF_STATE_TOPIC
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
CONF_PAYLOAD_HOME = "payload_home"
|
||||
CONF_PAYLOAD_NOT_HOME = "payload_not_home"
|
||||
CONF_SOURCE_TYPE = "source_type"
|
||||
|
||||
PLATFORM_SCHEMA_DISCOVERY = (
|
||||
mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_HOME, default=STATE_HOME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_NOT_HOME, default=STATE_NOT_HOME): cv.string,
|
||||
vol.Optional(CONF_SOURCE_TYPE): vol.In(SOURCE_TYPES),
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA_DISCOVERY = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_HOME, default=STATE_HOME): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_NOT_HOME, default=STATE_NOT_HOME): cv.string,
|
||||
vol.Optional(CONF_SOURCE_TYPE): vol.In(SOURCE_TYPES),
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_entry_from_discovery(hass, config_entry, async_add_entities):
|
||||
|
@ -87,8 +71,6 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
value_template = self._config.get(CONF_VALUE_TEMPLATE)
|
||||
if value_template is not None:
|
||||
value_template.hass = self.hass
|
||||
|
@ -125,11 +107,6 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
|
|||
},
|
||||
)
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
"""Return the icon of the device."""
|
||||
return self._config.get(CONF_ICON)
|
||||
|
||||
@property
|
||||
def latitude(self):
|
||||
"""Return latitude if provided in device_state_attributes or None."""
|
||||
|
@ -165,11 +142,6 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
|
|||
"""Return a location name for the current location of the device."""
|
||||
return self._location_name
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device tracker."""
|
||||
return self._config.get(CONF_NAME)
|
||||
|
||||
@property
|
||||
def source_type(self):
|
||||
"""Return the source type, eg gps or router, of the device."""
|
||||
|
|
|
@ -15,13 +15,11 @@ from homeassistant.components.fan import (
|
|||
FanEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_PAYLOAD_OFF,
|
||||
CONF_PAYLOAD_ON,
|
||||
CONF_STATE,
|
||||
CONF_UNIQUE_ID,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
@ -39,13 +37,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
CONF_STATE_VALUE_TEMPLATE = "state_value_template"
|
||||
CONF_SPEED_STATE_TOPIC = "speed_state_topic"
|
||||
|
@ -72,41 +64,35 @@ OSCILLATE_OFF_PAYLOAD = "oscillate_off"
|
|||
|
||||
OSCILLATION = "oscillation"
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_OSCILLATION_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_OSCILLATION_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_PAYLOAD_HIGH_SPEED, default=SPEED_HIGH): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_LOW_SPEED, default=SPEED_LOW): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_MEDIUM_SPEED, default=SPEED_MEDIUM): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF_SPEED, default=SPEED_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_OSCILLATION_OFF, default=OSCILLATE_OFF_PAYLOAD
|
||||
): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_OSCILLATION_ON, default=OSCILLATE_ON_PAYLOAD
|
||||
): cv.string,
|
||||
vol.Optional(CONF_SPEED_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_SPEED_LIST,
|
||||
default=[SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_SPEED_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_SPEED_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_STATE_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_OSCILLATION_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_OSCILLATION_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_PAYLOAD_HIGH_SPEED, default=SPEED_HIGH): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_LOW_SPEED, default=SPEED_LOW): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_MEDIUM_SPEED, default=SPEED_MEDIUM): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF_SPEED, default=SPEED_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_OSCILLATION_OFF, default=OSCILLATE_OFF_PAYLOAD
|
||||
): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_OSCILLATION_ON, default=OSCILLATE_ON_PAYLOAD
|
||||
): cv.string,
|
||||
vol.Optional(CONF_SPEED_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_SPEED_LIST,
|
||||
default=[SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH],
|
||||
): cv.ensure_list,
|
||||
vol.Optional(CONF_SPEED_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_SPEED_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_STATE_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -158,7 +144,6 @@ class MqttFan(MqttEntity, FanEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
self._topic = {
|
||||
key: config.get(key)
|
||||
for key in (
|
||||
|
@ -288,11 +273,6 @@ class MqttFan(MqttEntity, FanEntity):
|
|||
"""Return true if device is on."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
"""Get entity name."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def speed_list(self) -> list:
|
||||
"""Get the list of available speeds."""
|
||||
|
|
|
@ -17,12 +17,10 @@ from homeassistant.components.light import (
|
|||
LightEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_PAYLOAD_OFF,
|
||||
CONF_PAYLOAD_ON,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
STATE_ON,
|
||||
)
|
||||
|
@ -34,12 +32,7 @@ import homeassistant.util.color as color_util
|
|||
from .. import CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN, CONF_STATE_TOPIC, subscription
|
||||
from ... import mqtt
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity
|
||||
from .schema import MQTT_LIGHT_SCHEMA_SCHEMA
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
@ -110,7 +103,6 @@ PLATFORM_SCHEMA_BASIC = (
|
|||
vol.Optional(CONF_COLOR_TEMP_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_COLOR_TEMP_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_COLOR_TEMP_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_EFFECT_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_EFFECT_LIST): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_EFFECT_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
|
@ -132,7 +124,6 @@ PLATFORM_SCHEMA_BASIC = (
|
|||
vol.Optional(CONF_RGB_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_RGB_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_STATE_VALUE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_WHITE_VALUE_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(
|
||||
CONF_WHITE_VALUE_SCALE, default=DEFAULT_WHITE_VALUE_SCALE
|
||||
|
@ -144,8 +135,7 @@ PLATFORM_SCHEMA_BASIC = (
|
|||
vol.Optional(CONF_XY_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
.extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
.extend(MQTT_LIGHT_SCHEMA_SCHEMA.schema)
|
||||
)
|
||||
|
||||
|
@ -194,8 +184,6 @@ class MqttLight(MqttEntity, LightEntity, RestoreEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
topic = {
|
||||
key: config.get(key)
|
||||
for key in (
|
||||
|
@ -540,11 +528,6 @@ class MqttLight(MqttEntity, LightEntity, RestoreEntity):
|
|||
return white_value
|
||||
return None
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device if any."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return true if device is on."""
|
||||
|
|
|
@ -26,13 +26,11 @@ from homeassistant.components.light import (
|
|||
from homeassistant.const import (
|
||||
CONF_BRIGHTNESS,
|
||||
CONF_COLOR_TEMP,
|
||||
CONF_DEVICE,
|
||||
CONF_EFFECT,
|
||||
CONF_HS,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_RGB,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_WHITE_VALUE,
|
||||
CONF_XY,
|
||||
STATE_ON,
|
||||
|
@ -46,12 +44,7 @@ import homeassistant.util.color as color_util
|
|||
from .. import CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN, CONF_STATE_TOPIC, subscription
|
||||
from ... import mqtt
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity
|
||||
from .schema import MQTT_LIGHT_SCHEMA_SCHEMA
|
||||
from .schema_basic import CONF_BRIGHTNESS_SCALE
|
||||
|
||||
|
@ -89,7 +82,6 @@ PLATFORM_SCHEMA_JSON = (
|
|||
CONF_BRIGHTNESS_SCALE, default=DEFAULT_BRIGHTNESS_SCALE
|
||||
): vol.All(vol.Coerce(int), vol.Range(min=1)),
|
||||
vol.Optional(CONF_COLOR_TEMP, default=DEFAULT_COLOR_TEMP): cv.boolean,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_EFFECT, default=DEFAULT_EFFECT): cv.boolean,
|
||||
vol.Optional(CONF_EFFECT_LIST): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(
|
||||
|
@ -109,13 +101,11 @@ PLATFORM_SCHEMA_JSON = (
|
|||
vol.Optional(CONF_RETAIN, default=mqtt.DEFAULT_RETAIN): cv.boolean,
|
||||
vol.Optional(CONF_RGB, default=DEFAULT_RGB): cv.boolean,
|
||||
vol.Optional(CONF_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_WHITE_VALUE, default=DEFAULT_WHITE_VALUE): cv.boolean,
|
||||
vol.Optional(CONF_XY, default=DEFAULT_XY): cv.boolean,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
.extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
.extend(MQTT_LIGHT_SCHEMA_SCHEMA.schema)
|
||||
)
|
||||
|
||||
|
@ -153,8 +143,6 @@ class MqttLightJson(MqttEntity, LightEntity, RestoreEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
self._topic = {
|
||||
key: config.get(key) for key in (CONF_STATE_TOPIC, CONF_COMMAND_TOPIC)
|
||||
}
|
||||
|
@ -338,11 +326,6 @@ class MqttLightJson(MqttEntity, LightEntity, RestoreEntity):
|
|||
"""Return the white property."""
|
||||
return self._white_value
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device if any."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return true if device is on."""
|
||||
|
|
|
@ -21,11 +21,9 @@ from homeassistant.components.light import (
|
|||
LightEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_STATE_TEMPLATE,
|
||||
CONF_UNIQUE_ID,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
)
|
||||
|
@ -37,12 +35,7 @@ import homeassistant.util.color as color_util
|
|||
from .. import CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN, CONF_STATE_TOPIC, subscription
|
||||
from ... import mqtt
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity
|
||||
from .schema import MQTT_LIGHT_SCHEMA_SCHEMA
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
@ -73,7 +66,6 @@ PLATFORM_SCHEMA_TEMPLATE = (
|
|||
vol.Optional(CONF_COLOR_TEMP_TEMPLATE): cv.template,
|
||||
vol.Required(CONF_COMMAND_OFF_TEMPLATE): cv.template,
|
||||
vol.Required(CONF_COMMAND_ON_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_EFFECT_LIST): vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_EFFECT_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_GREEN_TEMPLATE): cv.template,
|
||||
|
@ -83,12 +75,10 @@ PLATFORM_SCHEMA_TEMPLATE = (
|
|||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_RED_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_WHITE_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
.extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
.extend(MQTT_LIGHT_SCHEMA_SCHEMA.schema)
|
||||
)
|
||||
|
||||
|
@ -127,8 +117,6 @@ class MqttLightTemplate(MqttEntity, LightEntity, RestoreEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
self._topics = {
|
||||
key: config.get(key) for key in (CONF_STATE_TOPIC, CONF_COMMAND_TOPIC)
|
||||
}
|
||||
|
@ -299,11 +287,6 @@ class MqttLightTemplate(MqttEntity, LightEntity, RestoreEntity):
|
|||
"""Return the white property."""
|
||||
return self._white_value
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the entity."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return True if entity is on."""
|
||||
|
|
|
@ -5,13 +5,7 @@ import voluptuous as vol
|
|||
|
||||
from homeassistant.components import lock
|
||||
from homeassistant.components.lock import LockEntity
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
)
|
||||
from homeassistant.const import CONF_NAME, CONF_OPTIMISTIC, CONF_VALUE_TEMPLATE
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.reload import async_setup_reload_service
|
||||
|
@ -28,13 +22,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
CONF_PAYLOAD_LOCK = "payload_lock"
|
||||
CONF_PAYLOAD_UNLOCK = "payload_unlock"
|
||||
|
@ -49,26 +37,16 @@ DEFAULT_PAYLOAD_UNLOCK = "UNLOCK"
|
|||
DEFAULT_STATE_LOCKED = "LOCKED"
|
||||
DEFAULT_STATE_UNLOCKED = "UNLOCKED"
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_PAYLOAD_LOCK, default=DEFAULT_PAYLOAD_LOCK): cv.string,
|
||||
vol.Optional(
|
||||
CONF_PAYLOAD_UNLOCK, default=DEFAULT_PAYLOAD_UNLOCK
|
||||
): cv.string,
|
||||
vol.Optional(CONF_STATE_LOCKED, default=DEFAULT_STATE_LOCKED): cv.string,
|
||||
vol.Optional(
|
||||
CONF_STATE_UNLOCKED, default=DEFAULT_STATE_UNLOCKED
|
||||
): cv.string,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_PAYLOAD_LOCK, default=DEFAULT_PAYLOAD_LOCK): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_UNLOCK, default=DEFAULT_PAYLOAD_UNLOCK): cv.string,
|
||||
vol.Optional(CONF_STATE_LOCKED, default=DEFAULT_STATE_LOCKED): cv.string,
|
||||
vol.Optional(CONF_STATE_UNLOCKED, default=DEFAULT_STATE_UNLOCKED): cv.string,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -111,8 +89,6 @@ class MqttLock(MqttEntity, LockEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
self._optimistic = config[CONF_OPTIMISTIC]
|
||||
|
||||
value_template = self._config.get(CONF_VALUE_TEMPLATE)
|
||||
|
@ -153,11 +129,6 @@ class MqttLock(MqttEntity, LockEntity):
|
|||
},
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the lock."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_locked(self):
|
||||
"""Return true if lock is locked."""
|
||||
|
|
|
@ -6,7 +6,7 @@ from typing import Optional
|
|||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import CONF_DEVICE, CONF_NAME, CONF_UNIQUE_ID
|
||||
from homeassistant.const import CONF_DEVICE, CONF_ICON, CONF_NAME, CONF_UNIQUE_ID
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.dispatcher import (
|
||||
|
@ -134,10 +134,13 @@ MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All(
|
|||
validate_device_has_at_least_one_identifier,
|
||||
)
|
||||
|
||||
MQTT_JSON_ATTRS_SCHEMA = vol.Schema(
|
||||
MQTT_ENTITY_COMMON_SCHEMA = MQTT_AVAILABILITY_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
vol.Optional(CONF_JSON_ATTRS_TOPIC): valid_subscribe_topic,
|
||||
vol.Optional(CONF_JSON_ATTRS_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -527,11 +530,12 @@ class MqttEntity(
|
|||
def __init__(self, hass, config, config_entry, discovery_data):
|
||||
"""Init the MQTT Entity."""
|
||||
self.hass = hass
|
||||
self._config = config
|
||||
self._unique_id = config.get(CONF_UNIQUE_ID)
|
||||
self._sub_state = None
|
||||
|
||||
# Load config
|
||||
self._setup_from_config(config)
|
||||
self._setup_from_config(self._config)
|
||||
|
||||
# Initialize mixin classes
|
||||
MqttAttributes.__init__(self, config)
|
||||
|
@ -547,7 +551,8 @@ class MqttEntity(
|
|||
async def discovery_update(self, discovery_payload):
|
||||
"""Handle updated discovery message."""
|
||||
config = self.config_schema()(discovery_payload)
|
||||
self._setup_from_config(config)
|
||||
self._config = config
|
||||
self._setup_from_config(self._config)
|
||||
await self.attributes_discovery_update(config)
|
||||
await self.availability_discovery_update(config)
|
||||
await self.device_info_discovery_update(config)
|
||||
|
@ -575,6 +580,16 @@ class MqttEntity(
|
|||
async def _subscribe_topics(self):
|
||||
"""(Re)Subscribe to topics."""
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
"""Return icon of the entity if any."""
|
||||
return self._config.get(CONF_ICON)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device if any."""
|
||||
return self._config.get(CONF_NAME)
|
||||
|
||||
@property
|
||||
def should_poll(self):
|
||||
"""No polling needed."""
|
||||
|
|
|
@ -6,13 +6,7 @@ import voluptuous as vol
|
|||
|
||||
from homeassistant.components import number
|
||||
from homeassistant.components.number import NumberEntity
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_ICON,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_UNIQUE_ID,
|
||||
)
|
||||
from homeassistant.const import CONF_NAME, CONF_OPTIMISTIC
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.reload import async_setup_reload_service
|
||||
|
@ -30,32 +24,19 @@ from . import (
|
|||
from .. import mqtt
|
||||
from .const import CONF_RETAIN
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DEFAULT_NAME = "MQTT Number"
|
||||
DEFAULT_OPTIMISTIC = False
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -90,7 +71,6 @@ class MqttNumber(MqttEntity, NumberEntity, RestoreEntity):
|
|||
|
||||
self._current_number = None
|
||||
self._optimistic = config.get(CONF_OPTIMISTIC)
|
||||
self._unique_id = config.get(CONF_UNIQUE_ID)
|
||||
|
||||
NumberEntity.__init__(self)
|
||||
MqttEntity.__init__(self, None, config, config_entry, discovery_data)
|
||||
|
@ -100,9 +80,6 @@ class MqttNumber(MqttEntity, NumberEntity, RestoreEntity):
|
|||
"""Return the config schema."""
|
||||
return PLATFORM_SCHEMA
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
|
||||
async def _subscribe_topics(self):
|
||||
"""(Re)Subscribe to topics."""
|
||||
|
||||
|
@ -165,17 +142,7 @@ class MqttNumber(MqttEntity, NumberEntity, RestoreEntity):
|
|||
self._config[CONF_RETAIN],
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of this number."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def assumed_state(self):
|
||||
"""Return true if we do optimistic updates."""
|
||||
return self._optimistic
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
"""Return the icon."""
|
||||
return self._config.get(CONF_ICON)
|
||||
|
|
|
@ -8,12 +8,9 @@ import voluptuous as vol
|
|||
from homeassistant.components import sensor
|
||||
from homeassistant.components.sensor import DEVICE_CLASSES_SCHEMA
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_DEVICE_CLASS,
|
||||
CONF_FORCE_UPDATE,
|
||||
CONF_ICON,
|
||||
CONF_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_UNIT_OF_MEASUREMENT,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
)
|
||||
|
@ -29,9 +26,7 @@ from . import CONF_QOS, CONF_STATE_TOPIC, DOMAIN, PLATFORMS, subscription
|
|||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MQTT_ENTITY_COMMON_SCHEMA,
|
||||
MqttAvailability,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
|
@ -41,22 +36,15 @@ CONF_EXPIRE_AFTER = "expire_after"
|
|||
|
||||
DEFAULT_NAME = "MQTT Sensor"
|
||||
DEFAULT_FORCE_UPDATE = False
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_EXPIRE_AFTER): cv.positive_int,
|
||||
vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_EXPIRE_AFTER): cv.positive_int,
|
||||
vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -105,7 +93,6 @@ class MqttSensor(MqttEntity, Entity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
template = self._config.get(CONF_VALUE_TEMPLATE)
|
||||
if template is not None:
|
||||
template.hass = self.hass
|
||||
|
@ -163,11 +150,6 @@ class MqttSensor(MqttEntity, Entity):
|
|||
self._expired = True
|
||||
self.async_write_ha_state()
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the sensor."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def unit_of_measurement(self):
|
||||
"""Return the unit this state is expressed in."""
|
||||
|
@ -183,11 +165,6 @@ class MqttSensor(MqttEntity, Entity):
|
|||
"""Return the state of the entity."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
"""Return the icon."""
|
||||
return self._config.get(CONF_ICON)
|
||||
|
||||
@property
|
||||
def device_class(self) -> Optional[str]:
|
||||
"""Return the device class of the sensor."""
|
||||
|
|
|
@ -6,13 +6,10 @@ import voluptuous as vol
|
|||
from homeassistant.components import switch
|
||||
from homeassistant.components.switch import SwitchEntity
|
||||
from homeassistant.const import (
|
||||
CONF_DEVICE,
|
||||
CONF_ICON,
|
||||
CONF_NAME,
|
||||
CONF_OPTIMISTIC,
|
||||
CONF_PAYLOAD_OFF,
|
||||
CONF_PAYLOAD_ON,
|
||||
CONF_UNIQUE_ID,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
STATE_ON,
|
||||
)
|
||||
|
@ -33,13 +30,7 @@ from . import (
|
|||
)
|
||||
from .. import mqtt
|
||||
from .debug_info import log_messages
|
||||
from .mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
async_setup_entry_helper,
|
||||
)
|
||||
from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper
|
||||
|
||||
DEFAULT_NAME = "MQTT Switch"
|
||||
DEFAULT_PAYLOAD_ON = "ON"
|
||||
|
@ -48,23 +39,16 @@ DEFAULT_OPTIMISTIC = False
|
|||
CONF_STATE_ON = "state_on"
|
||||
CONF_STATE_OFF = "state_off"
|
||||
|
||||
PLATFORM_SCHEMA = (
|
||||
mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
vol.Optional(CONF_STATE_OFF): cv.string,
|
||||
vol.Optional(CONF_STATE_ON): cv.string,
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
)
|
||||
PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean,
|
||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||
vol.Optional(CONF_STATE_OFF): cv.string,
|
||||
vol.Optional(CONF_STATE_ON): cv.string,
|
||||
}
|
||||
).extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
|
@ -110,8 +94,6 @@ class MqttSwitch(MqttEntity, SwitchEntity, RestoreEntity):
|
|||
|
||||
def _setup_from_config(self, config):
|
||||
"""(Re)Setup the entity."""
|
||||
self._config = config
|
||||
|
||||
state_on = config.get(CONF_STATE_ON)
|
||||
self._state_on = state_on if state_on else config[CONF_PAYLOAD_ON]
|
||||
|
||||
|
@ -163,11 +145,6 @@ class MqttSwitch(MqttEntity, SwitchEntity, RestoreEntity):
|
|||
if last_state:
|
||||
self._state = last_state.state == STATE_ON
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the switch."""
|
||||
return self._config[CONF_NAME]
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return true if device is on."""
|
||||
|
@ -178,11 +155,6 @@ class MqttSwitch(MqttEntity, SwitchEntity, RestoreEntity):
|
|||
"""Return true if we do optimistic updates."""
|
||||
return self._optimistic
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
"""Return the icon."""
|
||||
return self._config.get(CONF_ICON)
|
||||
|
||||
async def async_turn_on(self, **kwargs):
|
||||
"""Turn the device on.
|
||||
|
||||
|
|
|
@ -17,12 +17,7 @@ from homeassistant.components.vacuum import (
|
|||
SUPPORT_TURN_ON,
|
||||
VacuumEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_SUPPORTED_FEATURES,
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
)
|
||||
from homeassistant.const import ATTR_SUPPORTED_FEATURES, CONF_NAME
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.icon import icon_for_battery_level
|
||||
|
@ -30,12 +25,7 @@ from homeassistant.helpers.icon import icon_for_battery_level
|
|||
from .. import subscription
|
||||
from ... import mqtt
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity
|
||||
from .schema import MQTT_VACUUM_SCHEMA, services_to_strings, strings_to_services
|
||||
|
||||
SERVICE_TO_STRING = {
|
||||
|
@ -117,7 +107,6 @@ PLATFORM_SCHEMA_LEGACY = (
|
|||
vol.Inclusive(CONF_CHARGING_TOPIC, "charging"): mqtt.valid_publish_topic,
|
||||
vol.Inclusive(CONF_CLEANING_TEMPLATE, "cleaning"): cv.template,
|
||||
vol.Inclusive(CONF_CLEANING_TOPIC, "cleaning"): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Inclusive(CONF_DOCKED_TEMPLATE, "docked"): cv.template,
|
||||
vol.Inclusive(CONF_DOCKED_TOPIC, "docked"): mqtt.valid_publish_topic,
|
||||
vol.Inclusive(CONF_ERROR_TEMPLATE, "error"): cv.template,
|
||||
|
@ -152,13 +141,11 @@ PLATFORM_SCHEMA_LEGACY = (
|
|||
vol.Optional(
|
||||
CONF_SUPPORTED_FEATURES, default=DEFAULT_SERVICE_STRINGS
|
||||
): vol.All(cv.ensure_list, [vol.In(STRING_TO_SERVICE.keys())]),
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(mqtt.CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(mqtt.CONF_RETAIN, default=DEFAULT_RETAIN): cv.boolean,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
.extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
.extend(MQTT_VACUUM_SCHEMA.schema)
|
||||
)
|
||||
|
||||
|
@ -192,7 +179,6 @@ class MqttVacuum(MqttEntity, VacuumEntity):
|
|||
return PLATFORM_SCHEMA_LEGACY
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._name = config[CONF_NAME]
|
||||
supported_feature_strings = config[CONF_SUPPORTED_FEATURES]
|
||||
self._supported_features = strings_to_services(
|
||||
supported_feature_strings, STRING_TO_SERVICE
|
||||
|
@ -338,11 +324,6 @@ class MqttVacuum(MqttEntity, VacuumEntity):
|
|||
},
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the vacuum."""
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
"""Return true if vacuum is on."""
|
||||
|
|
|
@ -22,24 +22,14 @@ from homeassistant.components.vacuum import (
|
|||
SUPPORT_STOP,
|
||||
StateVacuumEntity,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_SUPPORTED_FEATURES,
|
||||
CONF_DEVICE,
|
||||
CONF_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
)
|
||||
from homeassistant.const import ATTR_SUPPORTED_FEATURES, CONF_NAME
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
from .. import CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN, CONF_STATE_TOPIC, subscription
|
||||
from ... import mqtt
|
||||
from ..debug_info import log_messages
|
||||
from ..mixins import (
|
||||
MQTT_AVAILABILITY_SCHEMA,
|
||||
MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
MQTT_JSON_ATTRS_SCHEMA,
|
||||
MqttEntity,
|
||||
)
|
||||
from ..mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity
|
||||
from .schema import MQTT_VACUUM_SCHEMA, services_to_strings, strings_to_services
|
||||
|
||||
SERVICE_TO_STRING = {
|
||||
|
@ -113,7 +103,6 @@ DEFAULT_PAYLOAD_PAUSE = "pause"
|
|||
PLATFORM_SCHEMA_STATE = (
|
||||
mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_DEVICE): MQTT_ENTITY_DEVICE_INFO_SCHEMA,
|
||||
vol.Optional(CONF_FAN_SPEED_LIST, default=[]): vol.All(
|
||||
cv.ensure_list, [cv.string]
|
||||
),
|
||||
|
@ -136,13 +125,11 @@ PLATFORM_SCHEMA_STATE = (
|
|||
vol.Optional(
|
||||
CONF_SUPPORTED_FEATURES, default=DEFAULT_SERVICE_STRINGS
|
||||
): vol.All(cv.ensure_list, [vol.In(STRING_TO_SERVICE.keys())]),
|
||||
vol.Optional(CONF_UNIQUE_ID): cv.string,
|
||||
vol.Optional(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||
vol.Optional(CONF_RETAIN, default=DEFAULT_RETAIN): cv.boolean,
|
||||
}
|
||||
)
|
||||
.extend(MQTT_AVAILABILITY_SCHEMA.schema)
|
||||
.extend(MQTT_JSON_ATTRS_SCHEMA.schema)
|
||||
.extend(MQTT_ENTITY_COMMON_SCHEMA.schema)
|
||||
.extend(MQTT_VACUUM_SCHEMA.schema)
|
||||
)
|
||||
|
||||
|
@ -171,8 +158,6 @@ class MqttStateVacuum(MqttEntity, StateVacuumEntity):
|
|||
return PLATFORM_SCHEMA_STATE
|
||||
|
||||
def _setup_from_config(self, config):
|
||||
self._config = config
|
||||
self._name = config[CONF_NAME]
|
||||
supported_feature_strings = config[CONF_SUPPORTED_FEATURES]
|
||||
self._supported_features = strings_to_services(
|
||||
supported_feature_strings, STRING_TO_SERVICE
|
||||
|
@ -219,11 +204,6 @@ class MqttStateVacuum(MqttEntity, StateVacuumEntity):
|
|||
self.hass, self._sub_state, topics
|
||||
)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the vacuum."""
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return state of vacuum."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue