text: """Support for Dyson Pure Cool Link Sensors."""
  import logging
  import asyncio
  
  from homeassistant.const import STATE_UNKNOWN
  from homeassistant.components.dyson import DYSON_DEVICES
  
  from homeassistant.helpers.entity import Entity
  
  DEPENDENCIES = ['dyson']
  
  SENSOR_UNITS = {'filter_life': 'hours'}
  
  _LOGGER = logging.getLogger(__name__)
  
  
  def setup_platform(hass, config, add_devices, discovery_info=None):
      """Set up the Dyson Sensors."""
      _LOGGER.info("Creating new Dyson fans")
      devices = []
      # Get Dyson Devices from parent component
      for device in hass.data[DYSON_DEVICES]:
          devices.append(DysonFilterLifeSensor(hass, device))
      add_devices(devices)
  
  
  class DysonFilterLifeSensor(Entity):
      """Representation of Dyson filter life sensor (in hours)."""
  
      def __init__(self, hass, device):
          """Create a new Dyson filter life sensor."""
          self.hass = hass
          self._device = device
          self._name = "{} filter life".format(self._device.name)
          self._old_value = None
  
      @asyncio.coroutine
      def async_added_to_hass(self):
          """Callback when entity is added to hass."""
          self.hass.async_add_job(
              self._device.add_message_listener(self.on_message))
  
      def on_message(self, message):
          """Called when new messages received from the fan."""
          _LOGGER.debug(
              "Message received for %s device: %s", self.name, message)
          # Prevent refreshing if not needed
          if self._old_value is None or self._old_value != self.state:
              self._old_value = self.state
              self.schedule_update_ha_state()
  
      @property
      def should_poll(self):
          """No polling needed."""
          return False
  
      @property
      def state(self):
          """Return filter life in hours.."""
          if self._device.state:
              return self._device.state.filter_life
          else:
              return STATE_UNKNOWN
  
      @property
      def name(self):
          """Return the name of the dyson sensor name."""
          return self._name
  
      @property
      def unit_of_measurement(self):
          """Return the unit the value is expressed in."""
          return SENSOR_UNITS['filter_life']
  