diff --git a/homeassistant/components/http.py b/homeassistant/components/http.py
index 03d18170b3b311abac17380e33f1e2e93b1faf4d..bacdf5b15a0029903e84d9d5dee7871401519655 100644
--- a/homeassistant/components/http.py
+++ b/homeassistant/components/http.py
@@ -7,7 +7,6 @@ https://home-assistant.io/developers/api/
 import gzip
 import json
 import logging
-import socket
 import ssl
 import threading
 import time
@@ -28,7 +27,7 @@ from homeassistant.const import (
     HTTP_HEADER_CONTENT_LENGTH, HTTP_HEADER_CONTENT_TYPE, HTTP_HEADER_EXPIRES,
     HTTP_HEADER_HA_AUTH, HTTP_HEADER_VARY, HTTP_METHOD_NOT_ALLOWED,
     HTTP_NOT_FOUND, HTTP_OK, HTTP_UNAUTHORIZED, HTTP_UNPROCESSABLE_ENTITY,
-    SERVER_PORT, __version__)
+    SERVER_PORT)
 
 DOMAIN = "http"
 
@@ -105,8 +104,12 @@ class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer):
         self.paths = []
         self.sessions = SessionStore()
         self.protocol = 'https' if ssl_certificate is not None else 'http'
+        if server_address[0] == '0.0.0.0':
+            self.routable_address = util.get_local_ip()
+        else:
+            self.routable_address = server_address[0]
         self.base_url = "{}://{}:{}".format(self.protocol,
-                                            util.get_local_ip(),
+                                            self.routable_address,
                                             self.server_address[1])
 
         # We will lazy init this one if needed
diff --git a/homeassistant/components/zeroconf.py b/homeassistant/components/zeroconf.py
index a9e773fae6de387c3375fe37961aedd8f660e237..cd472734f86c95e1653e604712cb9670a96228f2 100644
--- a/homeassistant/components/zeroconf.py
+++ b/homeassistant/components/zeroconf.py
@@ -1,6 +1,7 @@
 """
-This module exposes Home Assistant via Zeroconf, also sometimes known as
-Bonjour, Rendezvous, Avahi or Multicast DNS (mDNS).
+This module exposes Home Assistant via Zeroconf.
+
+Zeroconf is also known as Bonjour, Avahi or Multicast DNS (mDNS).
 
 For more details about Zeroconf, please refer to the documentation at
 https://home-assistant.io/components/zeroconf/
@@ -8,10 +9,7 @@ https://home-assistant.io/components/zeroconf/
 import logging
 import socket
 
-from homeassistant.const import (
-    EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, __version__)
-
-import homeassistant.util as util
+from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__)
 
 REQUIREMENTS = ["zeroconf==0.17.5"]
 
@@ -21,30 +19,31 @@ DOMAIN = "zeroconf"
 
 ZEROCONF_TYPE = "_home-assistant._tcp.local."
 
-DEPENDENCIES = ["http", "api"]
+DEPENDENCIES = ["http"]
 
-def setup(hass, config):
 
-  from zeroconf import Zeroconf, ServiceInfo
+def setup(hass, config):
+    """Set up Zeroconf and make Home Assistant discoverable."""
+    from zeroconf import Zeroconf, ServiceInfo
 
-  zeroconf = Zeroconf()
+    zeroconf = Zeroconf()
 
-  zeroconf_name = "{}.{}".format(hass.config.location_name,
-                                 ZEROCONF_TYPE)
+    zeroconf_name = "{}.{}".format(hass.config.location_name,
+                                   ZEROCONF_TYPE)
 
-  params = {"version": __version__, "base_url": hass.http.base_url,
-            "has_password": (hass.http.api_password != "")}
+    params = {"version": __version__, "base_url": hass.http.base_url,
+              "needs_auth": (hass.http.api_password != "")}
 
-  info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name,
-                     socket.inet_aton(util.get_local_ip()),
-                     hass.http.server_address[1], 0, 0, params)
+    info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name,
+                       socket.inet_aton(hass.http.routable_address),
+                       hass.http.server_address[1], 0, 0, params)
 
-  zeroconf.register_service(info)
+    zeroconf.register_service(info)
 
-  def stop_zeroconf(event):
-      """Stop Zeroconf."""
-      zeroconf.unregister_all_services()
+    def stop_zeroconf(event):
+        """Stop Zeroconf."""
+        zeroconf.unregister_service(info)
 
-  hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_zeroconf)
+    hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_zeroconf)
 
-  return True
+    return True