diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py
index b4b73d0e462..3f08c7ff229 100644
--- a/homeassistant/components/cover/__init__.py
+++ b/homeassistant/components/cover/__init__.py
@@ -201,7 +201,7 @@ class CoverDevice(Entity):
     @property
     def is_closed(self):
         """Return if the cover is closed or not."""
-        return NotImplementedError()
+        raise NotImplementedError()
 
     def open_cover(self, **kwargs):
         """Open the cover."""
diff --git a/homeassistant/components/cover/demo.py b/homeassistant/components/cover/demo.py
index a863ad83a64..1f1c666f339 100644
--- a/homeassistant/components/cover/demo.py
+++ b/homeassistant/components/cover/demo.py
@@ -55,9 +55,20 @@ class DemoCover(CoverDevice):
         """Return the current tilt position of the cover."""
         return self._tilt_position
 
+    @property
+    def is_closed(self):
+        """Return if the cover is closed."""
+        if self._position is not None:
+            if self.current_cover_position > 0:
+                return False
+            else:
+                return True
+        else:
+            return None
+
     def close_cover(self, **kwargs):
         """Close the cover."""
-        if self._position == 0:
+        if self._position in (0, None):
             return
 
         self._listen_cover()
@@ -65,7 +76,7 @@ class DemoCover(CoverDevice):
 
     def close_cover_tilt(self, **kwargs):
         """Close the cover tilt."""
-        if self._tilt_position == 0:
+        if self._tilt_position in (0, None):
             return
 
         self._listen_cover_tilt()
@@ -73,7 +84,7 @@ class DemoCover(CoverDevice):
 
     def open_cover(self, **kwargs):
         """Open the cover."""
-        if self._position == 100:
+        if self._position in (100, None):
             return
 
         self._listen_cover()
@@ -81,7 +92,7 @@ class DemoCover(CoverDevice):
 
     def open_cover_tilt(self, **kwargs):
         """Open the cover tilt."""
-        if self._tilt_position == 100:
+        if self._tilt_position in (100, None):
             return
 
         self._listen_cover_tilt()
@@ -92,6 +103,7 @@ class DemoCover(CoverDevice):
         self._set_position = round(position, -1)
         if self._position == position:
             return
+
         self._listen_cover()
         self._closing = position < self._position
 
@@ -100,11 +112,14 @@ class DemoCover(CoverDevice):
         self._set_tilt_position = round(tilt_position, -1)
         if self._tilt_position == tilt_position:
             return
+
         self._listen_cover_tilt()
         self._closing_tilt = tilt_position < self._tilt_position
 
     def stop_cover(self, **kwargs):
         """Stop the cover."""
+        if self._position is None:
+            return
         if self._listener_cover is not None:
             self.hass.bus.remove_listener(EVENT_TIME_CHANGED,
                                           self._listener_cover)
@@ -113,6 +128,9 @@ class DemoCover(CoverDevice):
 
     def stop_cover_tilt(self, **kwargs):
         """Stop the cover tilt."""
+        if self._tilt_position is None:
+            return
+
         if self._listener_cover_tilt is not None:
             self.hass.bus.remove_listener(EVENT_TIME_CHANGED,
                                           self._listener_cover_tilt)