old_contents: """Support for exposing Home Assistant via Zeroconf."""
  import logging
  import socket
  
  import voluptuous as vol
  
  from homeassistant import util
  from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__)
  
  _LOGGER = logging.getLogger(__name__)
  
  DOMAIN = 'zeroconf'
  
  
  ZEROCONF_TYPE = '_home-assistant._tcp.local.'
  
  CONFIG_SCHEMA = vol.Schema({
      DOMAIN: vol.Schema({}),
  }, extra=vol.ALLOW_EXTRA)
  
  
  async def async_setup(hass, config):
      """Set up Zeroconf and make Home Assistant discoverable."""
      from aiozeroconf import Zeroconf, ServiceInfo
  
      zeroconf = Zeroconf(hass.loop)
  
      zeroconf_name = '{}.{}'.format(hass.config.location_name, ZEROCONF_TYPE)
  
      params = {
          'version': __version__,
          'base_url': hass.config.api.base_url,
          # always needs authentication
          'requires_api_password': True,
      }
  
      host_ip = util.get_local_ip()
  
      try:
          host_ip_pton = socket.inet_pton(socket.AF_INET, host_ip)
          info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, address=host_ip_pton,
                             port=hass.http.server_port, weight=0, priority=0,
                             properties=params)
      except socket.error:
          host_ip_pton = socket.inet_pton(socket.AF_INET6, host_ip)
          info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, address6=host_ip_pton,
                             port=hass.http.server_port, weight=0, priority=0,
                             properties=params)
  
      await zeroconf.register_service(info)
  
      async def stop_zeroconf(event):
          """Stop Zeroconf."""
          await zeroconf.unregister_service(info)
          await zeroconf.close()
  
      hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_zeroconf)
  
      return True
  
new_contents: """Support for exposing Home Assistant via Zeroconf."""
  import logging
  
  import voluptuous as vol
  
  from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__)
  
  _LOGGER = logging.getLogger(__name__)
  
  DOMAIN = 'zeroconf'
  
  
  ZEROCONF_TYPE = '_home-assistant._tcp.local.'
  
  CONFIG_SCHEMA = vol.Schema({
      DOMAIN: vol.Schema({}),
  }, extra=vol.ALLOW_EXTRA)
  
  
  async def async_setup(hass, config):
      """Set up Zeroconf and make Home Assistant discoverable."""
      from aiozeroconf import Zeroconf, ServiceInfo
  
      zeroconf_name = '{}.{}'.format(hass.config.location_name, ZEROCONF_TYPE)
  
      params = {
          'version': __version__,
          'base_url': hass.config.api.base_url,
          # always needs authentication
          'requires_api_password': True,
      }
  
      info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name,
                         port=hass.http.server_port, properties=params)
  
      zeroconf = Zeroconf(hass.loop)
  
      await zeroconf.register_service(info)
  
      async def stop_zeroconf(event):
          """Stop Zeroconf."""
          await zeroconf.unregister_service(info)
          await zeroconf.close()
  
      hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_zeroconf)
  
      return True
  
subject: Simplify zeroconf (#23890)