docs: def find_controller_or_faucet_name(data, p_type):
      """
      Find on the HTML document the controller name.
  
      # expected result
      <label for="select_controller">
       <span class="more_info" id="#styling-type-light" data-hasqtip="26" \
       title="Select Control Unit to display." >Control Unit:</span></label><br/>
       <select class="simpleselect" id="id_select_controller" \
         name="select_controller" onchange="submit()" >
            <option value="0" selected="selected">HERE_IS_CONTROLLER_NAME
  
      :param data: BeautifulSoup object
      :param p_type: parameter type. (controller or faucet)
      :return: controller or valve name
      :rtype: string.
      :raises TypeError: if data is not a BeautifulSoup object
      :raises IndexError: return None because controller name was not found
      """
      if not isinstance(data, BeautifulSoup):
          raise TypeError("Function requires BeautilSoup HTML element.")
  
      if not (p_type == 'controller' or p_type == 'faucet'):
          raise TypeError("Function p_type must be controller or faucet")
  
      try:
          search_field = 'id_select_{0}'.format(p_type)
          child = data.find('select', {'id': search_field})
          return child.get_text().strip()
      except AttributeError:
          return None