diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index 2a96a16bf55..f2ade535426 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -73,7 +73,7 @@ FAN_TURN_ON_SCHEMA = vol.Schema({ }) # type: dict FAN_TURN_OFF_SCHEMA = vol.Schema({ - vol.Required(ATTR_ENTITY_ID): cv.entity_ids + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids }) # type: dict FAN_OSCILLATE_SCHEMA = vol.Schema({ @@ -139,9 +139,7 @@ def turn_on(hass, entity_id: str=None, speed: str=None) -> None: def turn_off(hass, entity_id: str=None) -> None: """Turn all or specified fan off.""" - data = { - ATTR_ENTITY_ID: entity_id, - } + data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} hass.services.call(DOMAIN, SERVICE_TURN_OFF, data) diff --git a/tests/components/fan/test_demo.py b/tests/components/fan/test_demo.py index 517dcd494cc..0d066af8cf6 100644 --- a/tests/components/fan/test_demo.py +++ b/tests/components/fan/test_demo.py @@ -56,6 +56,18 @@ class TestDemoFan(unittest.TestCase): self.hass.block_till_done() self.assertEqual(STATE_OFF, self.get_entity().state) + def test_turn_off_without_entity_id(self): + """Test turning off all fans.""" + self.assertEqual(STATE_OFF, self.get_entity().state) + + fan.turn_on(self.hass, FAN_ENTITY_ID) + self.hass.block_till_done() + self.assertNotEqual(STATE_OFF, self.get_entity().state) + + fan.turn_off(self.hass) + self.hass.block_till_done() + self.assertEqual(STATE_OFF, self.get_entity().state) + def test_set_direction(self): """Test setting the direction of the device.""" self.assertEqual(STATE_OFF, self.get_entity().state)