text: import logging
  
  from homeassistant.helpers.entity import Entity, async_generate_entity_id
  
  from .const import DOMAIN, DATA_DEVICES, DATA_ALIASES, DATA_ADDERS, CONFIG_DEVICES, DATA_CONFIG
  
  _LOGGER = logging.getLogger(__name__)
  
  def get_devices(hass):
      return hass.data[DOMAIN][DATA_DEVICES]
  
  def get_alias(hass, deviceID):
      for k,v in hass.data[DOMAIN][DATA_ALIASES].items():
          if v == deviceID:
              return k
      return None
  
  def get_config(hass, deviceID):
      config = hass.data[DOMAIN][DATA_CONFIG]
      return config.get(deviceID, config.get(deviceID.replace('-','_'), {}))
  
  def create_entity(hass, platform, deviceID, connection):
      adder = hass.data[DOMAIN][DATA_ADDERS][platform]
      entity = adder(hass, deviceID, connection, get_alias(hass, deviceID))
      return entity
  
  def setup_platform(hass, config, async_add_devices, platform, cls):
      def adder(hass, deviceID, connection, alias=None):
          entity = cls(hass, connection, deviceID, alias)
          async_add_devices([entity])
          return entity
      hass.data[DOMAIN][DATA_ADDERS][platform] = adder
      return True
  
  class BrowserModEntity(Entity):
  
      def __init__(self, hass, connection, deviceID, alias=None):
          self.hass = hass
          self.connection = connection
          self.deviceID = deviceID
          self._data = {}
          self.entity_id = async_generate_entity_id(self.domain+".{}", alias or deviceID, hass=hass)
  
      def updated(self):
          pass
  
      @property
      def data(self):
          return self._data
      @data.setter
      def data(self, data):
          self._data = data
          self.updated()
  
      @property
      def device_id(self):
          return self.deviceID
  
      def send(self, command, **kwargs):
          self.connection.send(command, **kwargs)
  