mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 09:17:10 +00:00
MQTT Vacuum now passes error messages. (#17685)
* MQTT Vacuum now passes error messages. * Fixing pylint error * Use string formatting
This commit is contained in:
parent
714d44c503
commit
3f4798b5c3
@ -80,6 +80,8 @@ CONF_CLEANING_TOPIC = 'cleaning_topic'
|
|||||||
CONF_CLEANING_TEMPLATE = 'cleaning_template'
|
CONF_CLEANING_TEMPLATE = 'cleaning_template'
|
||||||
CONF_DOCKED_TOPIC = 'docked_topic'
|
CONF_DOCKED_TOPIC = 'docked_topic'
|
||||||
CONF_DOCKED_TEMPLATE = 'docked_template'
|
CONF_DOCKED_TEMPLATE = 'docked_template'
|
||||||
|
CONF_ERROR_TOPIC = 'error_topic'
|
||||||
|
CONF_ERROR_TEMPLATE = 'error_template'
|
||||||
CONF_STATE_TOPIC = 'state_topic'
|
CONF_STATE_TOPIC = 'state_topic'
|
||||||
CONF_STATE_TEMPLATE = 'state_template'
|
CONF_STATE_TEMPLATE = 'state_template'
|
||||||
CONF_FAN_SPEED_TOPIC = 'fan_speed_topic'
|
CONF_FAN_SPEED_TOPIC = 'fan_speed_topic'
|
||||||
@ -127,6 +129,8 @@ PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend({
|
|||||||
vol.Optional(CONF_CLEANING_TEMPLATE): cv.template,
|
vol.Optional(CONF_CLEANING_TEMPLATE): cv.template,
|
||||||
vol.Optional(CONF_DOCKED_TOPIC): mqtt.valid_publish_topic,
|
vol.Optional(CONF_DOCKED_TOPIC): mqtt.valid_publish_topic,
|
||||||
vol.Optional(CONF_DOCKED_TEMPLATE): cv.template,
|
vol.Optional(CONF_DOCKED_TEMPLATE): cv.template,
|
||||||
|
vol.Optional(CONF_ERROR_TOPIC): mqtt.valid_publish_topic,
|
||||||
|
vol.Optional(CONF_ERROR_TEMPLATE): cv.template,
|
||||||
vol.Optional(CONF_STATE_TOPIC): mqtt.valid_publish_topic,
|
vol.Optional(CONF_STATE_TOPIC): mqtt.valid_publish_topic,
|
||||||
vol.Optional(CONF_STATE_TEMPLATE): cv.template,
|
vol.Optional(CONF_STATE_TEMPLATE): cv.template,
|
||||||
vol.Optional(CONF_FAN_SPEED_TOPIC): mqtt.valid_publish_topic,
|
vol.Optional(CONF_FAN_SPEED_TOPIC): mqtt.valid_publish_topic,
|
||||||
@ -177,6 +181,11 @@ async def async_setup_platform(hass, config, async_add_entities,
|
|||||||
if docked_template:
|
if docked_template:
|
||||||
docked_template.hass = hass
|
docked_template.hass = hass
|
||||||
|
|
||||||
|
error_topic = config.get(CONF_ERROR_TOPIC)
|
||||||
|
error_template = config.get(CONF_ERROR_TEMPLATE)
|
||||||
|
if error_template:
|
||||||
|
error_template.hass = hass
|
||||||
|
|
||||||
fan_speed_topic = config.get(CONF_FAN_SPEED_TOPIC)
|
fan_speed_topic = config.get(CONF_FAN_SPEED_TOPIC)
|
||||||
fan_speed_template = config.get(CONF_FAN_SPEED_TEMPLATE)
|
fan_speed_template = config.get(CONF_FAN_SPEED_TEMPLATE)
|
||||||
if fan_speed_template:
|
if fan_speed_template:
|
||||||
@ -198,7 +207,8 @@ async def async_setup_platform(hass, config, async_add_entities,
|
|||||||
payload_stop, payload_clean_spot, payload_locate,
|
payload_stop, payload_clean_spot, payload_locate,
|
||||||
payload_start_pause, battery_level_topic, battery_level_template,
|
payload_start_pause, battery_level_topic, battery_level_template,
|
||||||
charging_topic, charging_template, cleaning_topic,
|
charging_topic, charging_template, cleaning_topic,
|
||||||
cleaning_template, docked_topic, docked_template, fan_speed_topic,
|
cleaning_template, docked_topic, docked_template,
|
||||||
|
error_topic, error_template, fan_speed_topic,
|
||||||
fan_speed_template, set_fan_speed_topic, fan_speed_list,
|
fan_speed_template, set_fan_speed_topic, fan_speed_list,
|
||||||
send_command_topic, availability_topic, payload_available,
|
send_command_topic, availability_topic, payload_available,
|
||||||
payload_not_available
|
payload_not_available
|
||||||
@ -215,7 +225,8 @@ class MqttVacuum(MqttAvailability, VacuumDevice):
|
|||||||
payload_stop, payload_clean_spot, payload_locate,
|
payload_stop, payload_clean_spot, payload_locate,
|
||||||
payload_start_pause, battery_level_topic, battery_level_template,
|
payload_start_pause, battery_level_topic, battery_level_template,
|
||||||
charging_topic, charging_template, cleaning_topic,
|
charging_topic, charging_template, cleaning_topic,
|
||||||
cleaning_template, docked_topic, docked_template, fan_speed_topic,
|
cleaning_template, docked_topic, docked_template,
|
||||||
|
error_topic, error_template, fan_speed_topic,
|
||||||
fan_speed_template, set_fan_speed_topic, fan_speed_list,
|
fan_speed_template, set_fan_speed_topic, fan_speed_list,
|
||||||
send_command_topic, availability_topic, payload_available,
|
send_command_topic, availability_topic, payload_available,
|
||||||
payload_not_available):
|
payload_not_available):
|
||||||
@ -249,6 +260,9 @@ class MqttVacuum(MqttAvailability, VacuumDevice):
|
|||||||
self._docked_topic = docked_topic
|
self._docked_topic = docked_topic
|
||||||
self._docked_template = docked_template
|
self._docked_template = docked_template
|
||||||
|
|
||||||
|
self._error_topic = error_topic
|
||||||
|
self._error_template = error_template
|
||||||
|
|
||||||
self._fan_speed_topic = fan_speed_topic
|
self._fan_speed_topic = fan_speed_topic
|
||||||
self._fan_speed_template = fan_speed_template
|
self._fan_speed_template = fan_speed_template
|
||||||
|
|
||||||
@ -259,6 +273,7 @@ class MqttVacuum(MqttAvailability, VacuumDevice):
|
|||||||
self._cleaning = False
|
self._cleaning = False
|
||||||
self._charging = False
|
self._charging = False
|
||||||
self._docked = False
|
self._docked = False
|
||||||
|
self._error = None
|
||||||
self._status = 'Unknown'
|
self._status = 'Unknown'
|
||||||
self._battery_level = 0
|
self._battery_level = 0
|
||||||
self._fan_speed = 'unknown'
|
self._fan_speed = 'unknown'
|
||||||
@ -274,35 +289,38 @@ class MqttVacuum(MqttAvailability, VacuumDevice):
|
|||||||
self._battery_level_template:
|
self._battery_level_template:
|
||||||
battery_level = self._battery_level_template\
|
battery_level = self._battery_level_template\
|
||||||
.async_render_with_possible_json_value(
|
.async_render_with_possible_json_value(
|
||||||
payload,
|
payload, error_value=None)
|
||||||
error_value=None)
|
|
||||||
if battery_level is not None:
|
if battery_level is not None:
|
||||||
self._battery_level = int(battery_level)
|
self._battery_level = int(battery_level)
|
||||||
|
|
||||||
if topic == self._charging_topic and self._charging_template:
|
if topic == self._charging_topic and self._charging_template:
|
||||||
charging = self._charging_template\
|
charging = self._charging_template\
|
||||||
.async_render_with_possible_json_value(
|
.async_render_with_possible_json_value(
|
||||||
payload,
|
payload, error_value=None)
|
||||||
error_value=None)
|
|
||||||
if charging is not None:
|
if charging is not None:
|
||||||
self._charging = cv.boolean(charging)
|
self._charging = cv.boolean(charging)
|
||||||
|
|
||||||
if topic == self._cleaning_topic and self._cleaning_template:
|
if topic == self._cleaning_topic and self._cleaning_template:
|
||||||
cleaning = self._cleaning_template \
|
cleaning = self._cleaning_template \
|
||||||
.async_render_with_possible_json_value(
|
.async_render_with_possible_json_value(
|
||||||
payload,
|
payload, error_value=None)
|
||||||
error_value=None)
|
|
||||||
if cleaning is not None:
|
if cleaning is not None:
|
||||||
self._cleaning = cv.boolean(cleaning)
|
self._cleaning = cv.boolean(cleaning)
|
||||||
|
|
||||||
if topic == self._docked_topic and self._docked_template:
|
if topic == self._docked_topic and self._docked_template:
|
||||||
docked = self._docked_template \
|
docked = self._docked_template \
|
||||||
.async_render_with_possible_json_value(
|
.async_render_with_possible_json_value(
|
||||||
payload,
|
payload, error_value=None)
|
||||||
error_value=None)
|
|
||||||
if docked is not None:
|
if docked is not None:
|
||||||
self._docked = cv.boolean(docked)
|
self._docked = cv.boolean(docked)
|
||||||
|
|
||||||
|
if topic == self._error_topic and self._error_template:
|
||||||
|
error = self._error_template \
|
||||||
|
.async_render_with_possible_json_value(
|
||||||
|
payload, error_value=None)
|
||||||
|
if error is not None:
|
||||||
|
self._error = cv.string(error)
|
||||||
|
|
||||||
if self._docked:
|
if self._docked:
|
||||||
if self._charging:
|
if self._charging:
|
||||||
self._status = "Docked & Charging"
|
self._status = "Docked & Charging"
|
||||||
@ -310,14 +328,15 @@ class MqttVacuum(MqttAvailability, VacuumDevice):
|
|||||||
self._status = "Docked"
|
self._status = "Docked"
|
||||||
elif self._cleaning:
|
elif self._cleaning:
|
||||||
self._status = "Cleaning"
|
self._status = "Cleaning"
|
||||||
|
elif self._error is not None and not self._error:
|
||||||
|
self._status = "Error: {}".format(self._error)
|
||||||
else:
|
else:
|
||||||
self._status = "Stopped"
|
self._status = "Stopped"
|
||||||
|
|
||||||
if topic == self._fan_speed_topic and self._fan_speed_template:
|
if topic == self._fan_speed_topic and self._fan_speed_template:
|
||||||
fan_speed = self._fan_speed_template\
|
fan_speed = self._fan_speed_template\
|
||||||
.async_render_with_possible_json_value(
|
.async_render_with_possible_json_value(
|
||||||
payload,
|
payload, error_value=None)
|
||||||
error_value=None)
|
|
||||||
if fan_speed is not None:
|
if fan_speed is not None:
|
||||||
self._fan_speed = fan_speed
|
self._fan_speed = fan_speed
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user