diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index ecd5be36dee..7bccfd5c6db 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -24,7 +24,8 @@ from homeassistant.helpers.entity import Entity from homeassistant.const import ( EVENT_COMPONENT_LOADED, CONF_LATITUDE, CONF_LONGITUDE, CONF_TEMPERATURE_UNIT, CONF_NAME, CONF_TIME_ZONE, CONF_VISIBILITY, - TEMP_CELCIUS, TEMP_FAHRENHEIT) + CONF_DECORATE, TEMP_CELCIUS, TEMP_FAHRENHEIT, ATTR_ENTITY_PICTURE, + ATTR_HIDDEN) _LOGGER = logging.getLogger(__name__) @@ -209,7 +210,10 @@ def process_ha_core_config(hass, config): setattr(hass.config, attr, config[key]) for entity_id, hidden in config.get(CONF_VISIBILITY, {}).items(): - Entity.overwrite_hidden(entity_id, hidden == 'hide') + Entity.overwrite_attribute(entity_id, ATTR_HIDDEN, hidden == 'hide') + + for entity_id, image in config.get(CONF_DECORATE, {}).items(): + Entity.overwrite_attribute(entity_id, ATTR_ENTITY_PICTURE, image) if CONF_TEMPERATURE_UNIT in config: unit = config[CONF_TEMPERATURE_UNIT] diff --git a/homeassistant/const.py b/homeassistant/const.py index 0e859eaf943..82727541134 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -12,6 +12,7 @@ CONF_TEMPERATURE_UNIT = "temperature_unit" CONF_NAME = "name" CONF_TIME_ZONE = "time_zone" CONF_VISIBILITY = "visibility" +CONF_DECORATE = "decorate" CONF_PLATFORM = "platform" CONF_HOST = "host" diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index a39d46a29f6..90ad57f7535 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -5,14 +5,17 @@ homeassistant.helpers.entity Provides ABC for entities in HA. """ +from collections import defaultdict + from homeassistant import NoEntitySpecifiedError from homeassistant.const import ( - ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT, ATTR_HIDDEN, STATE_ON, - STATE_OFF, DEVICE_DEFAULT_NAME, TEMP_CELCIUS, TEMP_FAHRENHEIT) + ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT, ATTR_HIDDEN, + ATTR_ENTITY_PICTURE, STATE_ON, STATE_OFF, DEVICE_DEFAULT_NAME, + TEMP_CELCIUS, TEMP_FAHRENHEIT) # Dict mapping entity_id to a boolean that overwrites the hidden property -_OVERWRITE_HIDDEN = {} +_OVERWRITE = defaultdict(dict) class Entity(object): @@ -121,9 +124,13 @@ class Entity(object): if ATTR_UNIT_OF_MEASUREMENT not in attr and self.unit_of_measurement: attr[ATTR_UNIT_OF_MEASUREMENT] = self.unit_of_measurement - if _OVERWRITE_HIDDEN.get(self.entity_id, self.hidden): + if _OVERWRITE[ATTR_HIDDEN].get(self.entity_id, self.hidden): attr[ATTR_HIDDEN] = True + if _OVERWRITE[ATTR_ENTITY_PICTURE].get(self.entity_id, False): + attr[ATTR_ENTITY_PICTURE] = \ + _OVERWRITE[ATTR_ENTITY_PICTURE][self.entity_id] + # Convert temperature if we detect one if attr.get(ATTR_UNIT_OF_MEASUREMENT) in (TEMP_CELCIUS, TEMP_FAHRENHEIT): @@ -143,15 +150,15 @@ class Entity(object): return "".format(self.name, self.state) @staticmethod - def overwrite_hidden(entity_id, hidden): + def overwrite_attribute(entity_id, attr, val): """ Overwrite the hidden property of an entity. Set hidden to None to remove any overwritten value in place. """ - if hidden is None: - _OVERWRITE_HIDDEN.pop(entity_id, None) + if val is None: + _OVERWRITE[attr].pop(entity_id, None) else: - _OVERWRITE_HIDDEN[entity_id.lower()] = hidden + _OVERWRITE[attr][entity_id.lower()] = val class ToggleEntity(Entity):