Beispiel #1
0
 async def async_set_cover_position(self, **kwargs: Any) -> None:
     """Set the cover position."""
     await self._hub.bond.action(
         self._device.device_id,
         Action.set_position(_hass_to_bond_position(kwargs[ATTR_POSITION])),
     )
Beispiel #2
0
async def test_set_position_cover(hass: core.HomeAssistant):
    """Tests that set position cover command delegates to API."""
    await setup_platform(
        hass,
        COVER_DOMAIN,
        shades_with_position("name-1"),
        bond_device_id="test-device-id",
    )

    with patch_bond_action() as mock_hold, patch_bond_device_state(
            return_value={
                "position": 0,
                "open": 1
            }):
        await hass.services.async_call(
            COVER_DOMAIN,
            SERVICE_SET_COVER_POSITION,
            {
                ATTR_ENTITY_ID: "cover.name_1",
                ATTR_POSITION: 100
            },
            blocking=True,
        )
        async_fire_time_changed(hass, utcnow() + timedelta(seconds=30))
        await hass.async_block_till_done()

    mock_hold.assert_called_once_with("test-device-id", Action.set_position(0))
    entity_state = hass.states.get("cover.name_1")
    assert entity_state.state == STATE_OPEN
    assert entity_state.attributes[ATTR_CURRENT_POSITION] == 100

    with patch_bond_action() as mock_hold, patch_bond_device_state(
            return_value={
                "position": 100,
                "open": 0
            }):
        await hass.services.async_call(
            COVER_DOMAIN,
            SERVICE_SET_COVER_POSITION,
            {
                ATTR_ENTITY_ID: "cover.name_1",
                ATTR_POSITION: 0
            },
            blocking=True,
        )
        async_fire_time_changed(hass, utcnow() + timedelta(seconds=30))
        await hass.async_block_till_done()

    mock_hold.assert_called_once_with("test-device-id",
                                      Action.set_position(100))
    entity_state = hass.states.get("cover.name_1")
    assert entity_state.state == STATE_CLOSED
    assert entity_state.attributes[ATTR_CURRENT_POSITION] == 0

    with patch_bond_action() as mock_hold, patch_bond_device_state(
            return_value={
                "position": 40,
                "open": 1
            }):
        await hass.services.async_call(
            COVER_DOMAIN,
            SERVICE_SET_COVER_POSITION,
            {
                ATTR_ENTITY_ID: "cover.name_1",
                ATTR_POSITION: 60
            },
            blocking=True,
        )
        async_fire_time_changed(hass, utcnow() + timedelta(seconds=30))
        await hass.async_block_till_done()

    mock_hold.assert_called_once_with("test-device-id",
                                      Action.set_position(40))
    entity_state = hass.states.get("cover.name_1")
    assert entity_state.state == STATE_OPEN
    assert entity_state.attributes[ATTR_CURRENT_POSITION] == 60